c语言链表成绩管理系统排序,【C项目】 文件,结构体,链表,排序, 学生信息管理系统...

这是一个使用C语言编写的链表成绩管理系统,具备学生信息录入、文件存储、信息读取、显示所有信息、按总分排序、删除信息、查找信息以及统计最高分和学生人数等功能。系统采用命令行交互式操作,用户可以选择管理员或学生模式,进行不同权限的操作。
摘要由CSDN通过智能技术生成

1、密码登录;

2、通过键盘输入学生信息,包括学生学号、姓名、成绩;

3、将输入的信息保存到指定文件中;

4、从文件中读取学生信息;

5、显示全部学生信息;

6、按学生总分进行降序排序;

7、删除学生信息;

8、查找学生信息,可以通过学号查找,也可以通过姓名查找;

9、统计学生信息,统计出最高分和学生人数;

10、退出系统;

源代码:chunli@Linux:~$ cat main.c

#include

#include

#include

struct student

{

char num[9];

char name[9];

int scorem;

int scoree;

int scorec;

int sum;

struct student *next;

};

struct student *creat(struct student *p)//创建链表

{

struct student *p1 = NULL;

p1 = (struct student*)malloc(sizeof (struct student));

p -> next = p1;

p1 -> next = NULL;

printf("请输入要添加的学生的信息\n");

printf("学号:");scanf("%s",p1 -> num);

printf("姓名: ");scanf("%s",p1 -> name);

printf("数学成绩:");scanf("%d",&p1 -> scorem);

printf("英语成绩:"); scanf("%d",&p1 -> scoree);

printf("C语言成绩:");scanf("%d",&p1 -> scorec);

p1 -> sum = 0;

p1 -> sum = p1 -> scorem + p1 -> scorec + p1 -> scoree;

printf("总分:%d",p1 -> sum);

return p1;

}

void save1(struct student *p)//将链表从内存保存到文件中

{

FILE *fp;

if ((fp = fopen("student_system.txt","ab+")) == NULL)

printf("创建失败!\n");

while(p != NULL)

{

fwrite(p,sizeof(struct student),1,fp);

p = p -> next;

}

fclose(fp);

printf("保存成功!\n");

}

void save2(struct student *p)//将以变动的链表信息存入到文件中

{

FILE *fp;

if ((fp = fopen("student_system.txt","wb")) == NULL)

printf("创建失败!\n");

while(p != NULL)

{

fwrite(p,sizeof(struct student),1,fp);

p = p -> next;

}

fclose(fp);

}

struct student *read()//把文件中的数据读到链表中

{

FILE *fp;

struct student *head=NULL,*p1=NULL,*p2=NULL;

if ((fp=fopen ("student_system.txt","rb+"))==NULL)

{

printf ("读取时,文件打开失败!\n");

return NULL;

}

head=p1=(struct student *)malloc (sizeof (struct student ));

while (fp != NULL)

{

if (fread(p1,sizeof (struct student ),1,fp) != 1)break;

p1 -> next = (struct student *)malloc (sizeof (struct student ));

p2= p1;

p1= p1 -> next;

}

p2->next = NULL;

fclose (fp);

return head;

}

struct student *input()//添加函数

{

char ch;

struct student *p = NULL,*head=NULL;

head=p = (struct student*)malloc(sizeof(struct student));

p-> next = NULL;

printf("请输入要添加的学生的信息\n");

printf("学号:"); scanf("%s",p -> num);

printf("姓名: "); scanf("%s",p -> name);

printf("数学成绩:");scanf("%d",&p -> scorem);

printf("英语成绩:");scanf("%d",&p -> scoree);

printf("C语言成绩:");scanf("%d",&p -> scorec);

p -> sum = 0;

p -> su

C语言课程设计——学生信息管理系统_带数据文件版 系统的功能要求 学校现状分析 1、某学校有本科生和研究生两类学生。 A. 本科生信息:学号、姓名、性别、专业、班级、高数成绩、英语成绩、C语言、总成绩、班级排名、校级排名。其中:学号、姓名、性别、专业、班级、高数成绩、英语成绩、C语言成绩为输入项,总成绩是计算项,班级排名是总成绩在班内的名次,校级排名是总成绩在校内的名次。 B. 研究生信息:学号、姓名、性别、专业、班级、课程综合成绩、论文成绩、总成绩、班级排名、校级排名。其中:学号、姓名、性别、专业、班级、课程综合成绩、论文成绩为输入项,总成绩是计算项,班级排名是总成绩在班内的名次,校级排名是总成绩在校内的名次。 2、学生总成绩计算方法。 A.本科生:总成绩=高数成绩+英语成绩+C语言成绩; B.研究生:总成绩=课程综合成绩+论文成绩; 请使用结构化的程序设计方法,开发一个学生成绩管理系统对学生成绩进行有效管理。 1.2 主要任务 系统的功能要求 1. 添加功能:分本科生和研究生两类人员,实现下列添加功能。 A.本科生:能够添加学生信息,如果高数成绩、英语成绩、C语言成绩都输入,则系统自动计算总成绩。 B.研究生:能够添加学生信息,如果课程综合成绩、论文成绩都输入,则系统自动计算总成绩。 2. 修改功能:分本科生和研究生两类人员,实现下列修改功能。 A.本科生:根据学号来修改任意学生的除学号外的信息。如果高数成绩、英语成绩、c语言成绩都存在,则系统自动计算总成绩。 B.研究生:根据学号来修改任意学生的除学号外的信息。如果课程综合成绩、论文成绩都存在,则系统自动计算总成绩 3. 删除功能:分本科生和研究生两类人员,能够根据学号删除一个学生。 4. 查询功能:分本科生和研究生两类人员,实现下列查询功能。 1) 分页显示全部学生的信息。分页功能:每页显示10条学生的信息,有上一页、下一页、首页和最后一页的功能。 2) 能够按班级显示本班全部学生信息。 3) 能够根据学号或者姓名查询学生信息。 4) 能够在某个班级中查询某门课成绩不及格学生信息。 5. 排序功能:分本科生和研究生两类人员,实现下列排序功能。 1) 所有学生信息按总成绩从高到低排序并显示。 2) 某个班学生信息按总成绩从高到低排序并显示。 6. 统计功能:分本科生和研究生两类人员,实现下列统计与显示功能。 1) 统计某班级某课程的平均成绩、最高成绩、最低成绩。如果学生该门课没有成绩,统计平均成绩时忽略该生。 2) 统计某班级某课程超过课程平均成绩的学生名单及人数。 3) 统计某班级某课程不及格学生名单及人数。 4) 统计某班级某课程不同等级的学生人数。等级标准:优—大于等于90;良—大于等于80且小于90;中:大于等于70且小于80;及格:大于等于60且小于70;不及格:小于60。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值