学生成绩管理系统简易版(链表)

学生成绩管理系统_链表实现 实验:学生成绩管理,C语言实现,采用链表完成。编写程序完成对学生成绩的管理,要求实现的功能包括(以下功能分函数完成): 1、学生信息录入:从键盘按学号顺序输入 N名学生信息(学号、姓名和成绩) 2、学生信息输出:输出学生的信息 3、学生信息排序:按照成绩从低到高的顺序对录入的学生信息排序 4、学生信息查询:按照输入的学号查找并输出对应学生的信息 5、学生信息插入:按给定信息将学生信息插入到指定位置 6、学生信息删除:删除给定学生的信息 7、学生成绩统计:按分数段统计学生信息采用结构体数组完成。目录对存... 阅读详情

欢迎指出不足!

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

struct student
{
    int num;
    char name[100];
    int age;
    int score;

};
struct node
{
    struct student stu;
    struct node *next;
};

struct node *head=NULL;
//菜单
void menu()
{
    printf("==============欢迎使用高校学生成绩管理系统==============\n");
    printf("\t=======请选择功能列表=======\n");
    printf("\t\t1.录入学生信息\n");
    printf("\t\t2.打印学生信息\n");
    printf("\t\t3.保存学生信息\n");
    printf("\t\t4.读取学生信息\n");
    printf("\t\t5.查找学生信息\n");
    printf("\t\t6.修改学生信息\n");
    printf("\t\t7.删除学生信息\n");
    printf("\t\t0.退出系统\n");
}
//录入学生信息

void add()
{
    printf("\n请输入学生信息:学号 姓名 年龄 成绩\n");
    struct node *p;
    p=head;
    struct node *p1=(struct node*)malloc(sizeof(struct node));//为新同学分配内存空间

    if(head==NULL)
    {
        head=p1;
        p1->next=NULL;
    }
    else
    {
        while(p->next!=NULL)
        {
            p=p->next;//p指向最后一个节点
        }
        p->next=p1;//p的下一个节点为p1
        p1->next=NULL;
    }
    //输入数据
    scanf("%d %s %d %d",&p1->stu.num,p1->stu.name,&p1->stu.age,&p1->stu.score);
    printf("数据添加成功!\n");

}
//打印学生信息
void print()
{
    printf("打印所有学生信息:\n");
    struct node *p;
    p=head;
    printf("学号:\t\t姓名:\t\t年龄:\t\t成绩\n");
    while(p!=NULL)
    {
        printf("%-16d%-16s%-16d%-16d\n",
               p->stu.num,p->stu.name,p->stu.age,p->stu.score);
        p=p->next;

    }
}
//保存学生信息
void Save()
{
    FILE *p1=fopen("1.txt","w");
    if(p1==NULL)
    {
        printf("打开文件失败!\n");
        return ;

    }
    //写入数据
    struct node *p;
    p=head;
    while(p!=NULL)
    {
        fprintf(p1,"%d %s %d %d\n",p->stu.num,p->stu.name,p->stu.age,p->stu.score);
        p=p->next;

    }
    printf("数据保存成功!\n");
    fclose(p1);
}
//读取学员信息
void read()
{
    struct node *p,*p1;
    p=p1=head;
    //删除链表中的数据
    while(p1!=NULL)
    {
        p=p->next;
        free(p1);
        p1=p;

    }
    head=NULL;
    //打开文件
    FILE *pFile=fopen("1.txt","r");
    if(pFile==NULL)
    {
        printf("打开失败!\n");
        return;

    }
    else
    {
        while(!feof(pFile))
        {
            struct node *t=(struct node*)malloc(sizeof(struct node));
            fscanf(pFile,"%d %s %d %d\n",&t->stu.num,t->stu.name,&t->stu.age,&t->stu.score);
            //创建链表
            if(head==NULL)
            {
                head=t;
                p=head;
            }
            else
            {
                p->next=t;//p的下一个节点是t;
                p=p->next;
                p->next=NULL;
            }
        }
    }
    //关闭文件
    fclose(pFile);
    printf("读取成功!\n");



}
//查找学生信息
void search()
{
    int flag=0;
    printf("请输入要查找的学生的学号:\n");
    int num;
    scanf("%d",&num);
    struct node *p;
    p=head;
    while(p!=NULL)
    {
        if(p->stu.num==num)
        {
            printf("学号:%d\t姓名:%s\t年龄:%d\t成绩:%d\n",
                   p->stu.num,p->stu.name,p->stu.age,p->stu.score);
            flag++;
        }
        p=p->next;
    }
    if(flag==0)
        printf("未找到!\n");
}
//修改信息
void change()
{
    int flag=0;
    printf("请输入要修改的学生的学号:\n");
    int num;
    scanf("%d",&num);
    struct node *p;
    p=head;
    while(p!=NULL)
    {
        if(p->stu.num==num)
        {
            flag++;
            printf("%d\t%s\t%d\t%d\n",p->stu.num,p->stu.name,p->stu.age,p->stu.score);
            printf("是否确认修改?(Y/N)\n");
            char ch=getch();
            if(ch=='Y')
            {
                printf("请输入修改后的信息:\n");
                scanf("%d %s %d %d",&p->stu.num,p->stu.name,&p->stu.age,&p->stu.score);
                printf("修改成功!\n");
                break;
            }
            else
                break;
        }
        p=p->next;

    }
    if(flag==0)
        printf("未找到!\n");

}
//删除信息
void Delete()
{
    int flag=0;
    printf("请输入要删除的学生的学号:\n");
    int num;
    scanf("%d",&num);
    struct node *p1,*p2;
    p1=head->next;//p1指向头节点的下一个
    //判断是否是头节点
    if(head->stu.num==num)
    {
        p2=head;
        head=head->next;
        free(p2);
        printf("删除成功!\n");
        return;
    }
    //不是头节点;
    while(p1!=NULL)
    {
        if(p1->stu.num==num)
        {
            flag++;
            p2=p1;
            p1=p1->next;
            free(p2);
            printf("删除成功!\n");
            return;

        }
        p1=p1->next;

    }
    if(flag==0)
        printf("未找到!\n");

}
void add();
void print();
void Save();
void read();
void search();
void change();
void Delete();
//主函数
int main()
{
    while(1)
    {
        menu();
        printf("请输入选项:\n");
        char ch=getch();
        switch(ch)
        {
        case '1':
            add();
            break;
        case '2':
            print();
            break;
        case '3':
            Save();
            break;
        case '4':
            read();
            break;
        case '5':
            search();
            break;
        case '6':
            change();
            break;
        case '7':
            Delete();
            break;
        case '0':
            printf("\n欢迎再次使用!\n");
            return 0;
            break;
        default:
            printf("您的输入有误!\n");
            break;

        }
        system("pause");
        system("cls");
    }
    return 0;
}

学生成绩管理系统(链表版) 某班同学(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入)。使用链表编程成实现如下菜单驱动的学生成绩管理系统。1.从文件读入每个学生个人信息和成绩信息,可以由键盘输入文件名。读入成功提示读入学生记录的个数,不成功提示相应出错信息。2.增量式手动录入每个学生的学号(8位数字)、姓名和各科考试成绩。不考虑中文姓名,不考虑重名情况下的处理,学生的学号是唯一的。3.计算每门课程的总分和平均分;4.计算每个学生的总分和平均分;5.按每个学生的总分由高到低排出名次表; 阅读详情

相关推荐

c++链表实现学生成绩管理系统(简易版)

  #include&lt;iostream&gt; using namespace std; typedef struct student{ int id;//学号 string sex; string name; int cpp;//c++成绩 struct student *next; }stu; stu *head=NULL; void ...

深空的博客 1万+

学生成绩管理系统(C语言)(链表)

学生成绩管理系统

m0_62057925的博客 3686

C语言学生成绩管理系统

学习完C语言基础知识点,现在来用单链表实现一个简单版学生成绩管理系统 学生结构体: //学生结构体 struct Student { char Name[10]; int Num; float Computer; float Math; float English; float Total; float Ave; }; 结点结构: //结点 typedef struct Node { struct Student st;//数据域 struct node *pnext;//指针域

qq_63294590的博客 4万+

【C语言链表实现】学生成绩管理系统(功能全面,通俗易懂)

【C语言链表实现】学生成绩管理系统(功能全面,通俗易懂) 题目:学生成绩管理程序 要求:本程序用于教学单位(院/系)的学生成绩管理。要求程序能够实现学生信息录入(可以实现增加、删除、修改学生的基本信息)、单科学习成绩的录入;班级内单科成绩排名;成绩查询:查询某个学生的各科成绩、统计所有不及格科目超过2科的学生名单。

ProminentWu的博客 1万+

【C语言链表实现】学生成绩管理系统(课设报告+代码,功能全面,通俗易懂)

内容概要:学生成绩管理系统的课设报告,报告包括程序由C语言链表实现,包含界面菜单,密码登录,录入、增加、删除、修改、显示、保存、读取学生信息,查询单科成绩排名,查询学生成绩,查询不及格超过2科学生的名单等功能。 适用人群:计算机相关专业可能有此课程设计项目作业的学生。 程序特点:功能全面,健壮性强,用户体验,交互好,多文件结构,模块函数划分清晰,实现读取文件功能。 本作业成绩95+,包您满意。 报告目录如下: 1.问题描述 1 1.1项目链接 1 1.2题目内容与要求 1 1.3需求分析 1 2. 概要设计 4 2.1模块划分 4 2.2文件结构 5 2.3系统主要执行逻辑设计 5 2.4函数原型及关系 7 2.4.1函数调用关系 7 2.4.2函数原型设计 7 3.详细设计 10 3.1用户交互界面设计 10 3.2核心数据结构设计 13 3.3核心算法设计 13 4.测试 18 5.总结 20 5.1遇到的问题及解决方法 20

链表学生成绩管理系统

使用链表写学生成绩管理系统 lianbiao.cpp

c语言实现学生二科成绩的单链表,c++链表实现学生成绩管理系统(简易版)

#includeusing namespace std;typedef struct student{int id;//学号string sex;string name;int cpp;//c++成绩struct student *next;}stu;stu *head=NULL;void test(); // 测试头指针是否为空void record();//记录成绩void modify();...

weixin_30158471的博客 1502

学生成绩管理系统(链表、C++)

使用单链表实现学生成绩管理系统,并以文件的形式打开和保存, 1.建立成绩表,实现增删改查功能, 2.按任一科排序 3.计算每名学生的平均成绩 4.统计不及格同学的人数,输出不及格的名单 5.统计平均成绩并排序,统计学生的名次, 6.成绩表保存到文件中,可以从文件中打开

简易版学生成绩管理系统(数组版和链表版都有)

系统主要界面: 1.Display all students' info 2.Sort  by average 3.Insert a new info 4.Delete a record 5.Quit 退出时,将学生的信息写入到student的文件当中 操作系统:linux(ubuntu) 包含Makefile

jiashi1120的专栏 1329

从圆形到椭圆:CenterNet中高斯热图半径的自适应优化策略

本文深入探讨了CenterNet目标检测模型中高斯热图生成策略的优化,针对传统圆形高斯核在处理长宽比差异大目标时的局限性,提出了自适应椭圆高斯核的解决方案。通过数学推导和代码实战,详细阐述了如何根据目标边界框尺寸动态计算椭圆长短轴半径,生成更贴合目标几何形状的热图监督信号,从而有效提升模型,尤其是对无人机、车辆等不规则目标的定位精度。

alice7model的博客 985

【G4基础08】GPS-2-Macro Commands宏命令

GPS-2

adelall的博客 3738

学生成绩管理系统设计报告python_python实现简易版学生成绩管理系统

300来行python代码实现简易版学生成绩管理系统,供大家参考,具体内容如下使用链表来实现class Node(object):def __init__(self, data, pointer):self.data = dataself.next = pointer# 创建单链表class SingleLinkedList(object):def __init__(self):self.head...

weixin_39927378的博客 479

ISP模块之色彩增强算法--HSV空间Saturation通道调整

色彩增强不同于彩色图像增强,图像增强的一般处理方式为直方图均衡化等,目的是为了增强图像局部以及整体对比度。而色彩增强的目的是为了使的原有的不饱和的色彩信息变得饱和、丰富起来。对应于Photoshop里面的“色相/饱和度”调节选项里面对饱和度的操作。色彩增强的过程,并不改变原有彩色图像的颜色以及亮度信息。     在我的色彩增强算法模块里面,始终只针对色彩饱和度(Saturation)信息做研究,

松间明月 1万+

python实现简易版成绩管理系统_python实现简易版学生成绩管理系统

300来行python代码实现简易版学生成绩管理系统,供大家参考,具体内容如下使用链表来实现class Node(object):def __init__(self, data, pointer):self.data = dataself.next = pointer# 创建单链表class SingleLinkedList(object):def __init__(self):self.head...

weixin_39985842的博客 434

lammps教程:MS转data文件出错原因分析及解决办法

使用ms建模是lammps建模的一种重要方法,但是ms建模转换为data过程中经常会出现各种各样的错误。 ms模型转data文件流程分两部分,一是ms建模、forcite设置力场并导出car文件,二是msi2lmp将car转为data文件。 任何一个环节出错都会导致无法得到data文件,最容易出错的是forcite力场设置环节。 forcite力场设置出错原因有很多,一个原因是缺乏某类原子的力场参数。 msi2lmp软件只能转换cvff或pcff力场的car文件,因此,如果力场中不包含某类原子的参数,在设置

lammps_jiayou的博客 5062

干掉百度Apollo的安装!(Apollo10.0的源码安装)

1、在Apollo10.0的安装手册中,没有再详细给出源码安装的步骤,官方更推荐的是包管理安装,但实际上Apollo10.0仍然是可以进行源码安装的。2、使用源码安装Apollo10.0,比Apollo9.0的源码安装问题要少,整个安装过程更顺畅。3、从Apollo 10.0开始,源码安装和包管理安装采用同一套编译工具,也就是aem。之前只有在进行包管理安装的时候我们才需要安装aem,现在进行源码安装也需要安装aem。

qq_40033030的博客 892

python学生成绩管理系统实验报告心得_python实现简易版学生成绩管理系统

300来行python代码实现简易版学生成绩管理系统,供大家参考,具体内容如下使用链表来实现class Node(object):def __init__(self, data, pointer):self.data = dataself.next = pointer# 创建单链表class SingleLinkedList(object):def __init__(self):self.head...

weixin_39613744的博客 1390

AUTOSAR EcuM模块介绍

AUTOSAR EcuM概述 AUTOSAR EcuM全称是Autosar ECU State Manager,位于Autosar BSW中System Service模块中,是一个独立于硬件的模块。 其主要作用是管理ECU上下电启动的状态,具体为: 初始化启动操作系统所需要的BSW(Basic Software)模块 为睡眠阶段和随后的唤醒完成微控制器的配置准备 管理ECU上的所有唤醒事件(EcuM通过唤醒验证协议验证已发生的唤醒,区分真实的唤醒事件,防止误唤醒) EcuM支持的特性列表 EcuM具有

酒无忧的博客 2995

python简易版成绩管理系统_Python 实现简易版成绩管理系统

上一次,公众号介绍了如何使用 Python 实现单链表,下面让我们一探单链表的简单应用:在命令行,实现简易版成绩管理系统。这次的简易版成绩管理系统,主要有六大功能:增加学生信息、删除学生信息、修改学生信息、查找学生信息、显示学生信息、按 ID 排序。实现效果如下:保存与读取信息首先判断当前路径下,是否存在database.txt这个文件。如果不存在的话,就新建一个。如果存在的话,就按行读取数据。其...

weixin_39638603的博客 472

AI应用架构师实战:半导体器件仿真AI智能体系统搭建

半导体器件仿真(如MOSFET、FinFET等)是芯片设计的核心环节,传统流程依赖专家手动调参、多物理场仿真引擎(如TCAD)耗时(小时级至天级)、经验难以沉淀,导致研发周期长、成本高。如何构建一个AI智能体系统,实现仿真任务的自动化调度、参数智能优化、结果分析与知识沉淀,成为提升半导体研发效率的关键挑战。

移动开发前沿的博客 1222

YOLO由浅入深,最简单地说明白YOLO基本实现原理

YOLO(You Only Look Once)是一种高效的实时目标检测技术,广泛应用于自动驾驶、监控和无人机等领域。其核心优势在于速度快,能够在视频流中实时识别目标并标出其位置、大小、类别及置信度。YOLO基于卷积神经网络(CNN),通过卷积层提取图像特征,池化层和扁平化层优化特征处理,全连接层进行分类。与传统方法不同,YOLO将图像分割成多个网格,每个网格预测多个边界框及其置信度,仅对高置信度的框进行详细计算,从而快速确定目标的位置和类别。这种机制使得YOLO在保持高准确率的同时,实现了高效的实时处理能

qq_30279827的博客 563

用C语言链表编写学生成绩管理系统

本代码供读者学习使用,请不要随意转载。 一、设计题目:学生成绩管理系统 二、目的与要求 每位学生记录包含有学号、姓名、性别、出生日期、三门功课的成绩(高等数学、大学英语、C语言)、总分和平均分 系统菜单: (1)录入学生记录 (2)添加学生记录 (3)删除学生记录 (4)修改学生记录(要求输入密码) (5)查找学生记录(按学号、按姓名) (6)按总分对记录进行降序排列 ...

蔚蓝海域的博客 3万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

简单的学生成绩管理系统

简单的学生成绩管理系统源代码

Liujitong的博客 1125

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

数据结构(Java实现)-单链表(单链表实现学生成绩管理系统)

1、链表 1.1链表的基本介绍 链表是以节点的方式来存储,是链式存储,从图中发现,链表的各个节点不一定是连续存储 每个节点包含data域:存储数据,next域:指向下一个节点 链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定 没有头节点单链表:也就是phead只是一个引用(指针),指向链表的第一个节点 有头节点单链表:phead是头节点只不过头节点的data不保存信息 基本概念:链表的每个元素称为一个节点,每个节点都可以存储在内存中的不同的位置,为了表示每个元素与后继元素

jQueryZK的博客 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

[图文详解]C语言实现学生成绩管理系统,采用链表结构

一、前言 相信很多大一的同学在做c语言程序设计期末大作业的时候,都会被这些题目所困扰:学生成绩管理系统、学生信息管理系统、图书借阅管理系统、通讯录、选课系统......上网百度到别人的代码,有的人用C++写,有的人用类C写,有的人用C写,有的人用链表写,有的人用顺序表(结构体数组)写,搬运完别人的代码,还得自己看懂并且修改,以防和别的同学雷同。但不同的学校采用不同的c语言教材,不同的老师又有不同的理念:有的老师要求学生使用vb(Visual Basic)来进行编码,有的老师要求学生使用vs(Visual

一只博客 1万+
上一篇: 关于c盘清理以及win10自动更新
下一篇: 读取二维字符数组
Asssshzy
博客等级 码龄7年 28粉丝 51原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值