1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C语言链表实现学生成绩管理系统

C语言链表实现学生成绩管理系统

时间:2019-11-10 14:16:35

相关推荐

C语言链表实现学生成绩管理系统

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<iostream>int choice = 0;int mima=123456;int zhanghao=123456;int summ=0;//学生总数int i=0,j=0,k=0;//数学英语树脂不及格的人数using namespace std;typedef struct STUDENT{int num;//学号char name[15];//姓名char major[15];//专业double math;//数学成绩double english;//英语成绩double shuzhi;//IKUN树脂分double average;//平均分double sum;//总分}student;typedef struct Node{student data;struct Node *next;}Node,*LinkList;void CreateList(LinkList &l); //创建链表 void ZenjaiNode(LinkList &l, student e);//增加节点 int ShanchuNode(LinkList &l, int num);//删除节点 int XuigaiNode(LinkList &l, int num, student e); //修改节点 int Chazhao(LinkList l, int num, student &e); //查找节点 void ZenjiaStudent(LinkList &l); //增加学生 void ShanchuStudent(LinkList &l); //删除学生 void XuigaiStudent(LinkList &l); //修改学生 void ChazhaoStudent(LinkList l); //查找学生 void XianshiStudent(LinkList l); //显示学生 void menu(); //主菜单 void math();void english();void shuzhi();void mathmax();void englishmax();void shuzhimax();void CreateList(LinkList &l)//创建链表,头节点{l=(LinkList)malloc(sizeof(Node));l->next=NULL;}void ZenjiaNode(LinkList &l, student e)//尾插节点{Node*q=(LinkList)malloc(sizeof(Node));q->data=e;q->next=NULL;Node*p=l;while(p->next)p=p->next;p->next=q;}int ShanchuNode(LinkList &l, int num)//删除节点{Node *p,*q;p=l;while(p->next){q=p->next;if(num==(q->data).num){if((q->data).math<60)i--;if((q->data).english<60)j--;if((q->data).shuzhi<60)k--;p->next=q->next;free(q);return 0;//删除完成}p=p->next;}return 1;//未找到} int XuigaiNode(LinkList &l, int num, student e)//修改节点 {Node *p,*q;p=l;while(p->next){q=p->next;if(num==(q->data).num){q->data=e;return 0;//修改完成}p=p->next;}return 1;//修改失败}int ChazhaoNode(LinkList l, int num,student &e)//查找节点{Node *p,*q;p=l;while(p->next){q=p->next;if(num==(q->data).num){e=q->data;return 0;//查找完成}p=p->next;}return 1;//查找失败}void ZenjiaStudent(LinkList &l)//增加学生 {summ++;student e;printf("小黑子请输入你想录入IKUN的成绩吧!\n");printf("学号\n");scanf("%d",&e.num);//getchar();printf("姓名\n");scanf("%s",e.name);//getchar();printf("专业\n");scanf("%s",e.major);//getchar();printf("数学成绩\n");scanf("%lf",&e.math);printf("英语成绩\n");scanf("%lf",&e.english);printf("IKUN树脂分\n");scanf("%lf",&e.shuzhi);e.average=(e.math+e.english+e.shuzhi)/3;e.sum=e.math+e.english+e.shuzhi;ZenjiaNode(l, e);system("pause");}void ShanchuStudent(LinkList &l)//删除学生 {summ--;int num;printf("请输入要删除的IKUN的学号\n");scanf("%d",&num);if(ShanchuNode( l, num)==1)printf("查找失败哎呦,你个黑子冒充IKUN,香翅捞饭食不食\n");else {printf("删除成功了,奖励一个蛋\n");}system("pause");}void XuigaiStudent(LinkList &l)//修改学生信息 {student e;int num;char x;printf("请输入要修改IKUN的学号\n");scanf("%d",&num);printf("请重新输入信息吧\n");printf("请输入学号\n");scanf("%d",&e.num);printf("请输入姓名\n");scanf("%s",e.name);printf("请输入专业\n");scanf("%s",e.major);printf("请输入数学成绩\n");scanf("%lf",&e.math);printf("请输入英语成绩\n");scanf("%lf",&e.english);printf("请输入树脂分\n");scanf("%lf",&e.shuzhi);e.average=(e.math+e.english+e.shuzhi)/3;e.sum=e.math+e.english+e.shuzhi;if( XuigaiNode(l,num,e)==1)printf("未找到该IKUN\n");else printf("修改完成\n");system("pause");}void ChazhaoStudent(LinkList l) //查找学生 {student e;int num;printf("请输入要查找的IKUN学号\n");scanf("%d",&num);if(ChazhaoNode( l, num,e)==1)printf("没有找到哦\n");else {printf("学号 姓名 专业 数学成绩 英语成绩 树脂分 平均分 总分\n");printf("%-8d%-8s%-8s%-11.2f%-11.2f%-10.2f%-10.2f%-10.2f\n",e.num,e.name,e.major,e.math,e.english,e.shuzhi,e.average,e.sum);system("pause");}}void XianshiStudent(LinkList l)//显示学生{printf("学号 姓名 专业 数学成绩 英语成绩 树脂分 平均分 总分\n");Node *p=l;student e;while(p->next){e=(p->next)->data;printf("%-8d%-8s%-8s%-11.2f%-11.2f%-10.2f%-10.2f%-10.2f\n",e.num,e.name,e.major,e.math,e.english,e.shuzhi,e.average,e.sum);p=p->next;}system("pause");}void paixu(LinkList l)//总分排序{student e;Node *p,*q;p=l->next;if(p->next==NULL)printf("请输入IKUN之后再来吧\n");else {while(p->next!=NULL){q=p->next;while(q!=NULL){if(p->data.average<q->data.average){e=p->data;p->data=q->data;q->data=e;}q=q->next;}p=p->next;}printf("排序成功\n");}system("pause");}void math(LinkList l)//数学不及格{Node *p;student e;p=l;while(p->next!=NULL){e=(p->next)->data;if(e.math<60){printf("数学不及格学员如下:\n");printf("姓名:%s 成绩:%.2f\n",e.name,e.math);}p=p->next;i++;}if(i==0&&summ!=0){printf("所有人都及格了呢\n");}else if(summ==0)printf("系统人数为0,请添加信息后再试\n");system("pause");}void english(LinkList l)//英语不及格{Node *p;student e;p=l;while(p->next!=NULL){e=(p->next)->data;if(e.english<60){printf("英语不及格学员如下:\n");printf("姓名:%s 成绩:%.2f\n",e.name,e.english);j++;}p=p->next;}if(j==0&&summ!=0){printf("所有人都及格了呢\n");}else if(summ==0)printf("系统人数为0,请添加信息后再试\n");system("pause");}void shuzhi(LinkList l)//树脂不及格{Node *p;student e;p=l;while(p->next!=NULL){e=(p->next)->data;if(e.shuzhi<60){printf("树脂不及格学员如下:\n");printf("姓名:%s 成绩:%.2f\n",e.name,e.shuzhi);k++;}p=p->next;}if(k==0&&summ!=0){printf("所有人都及格了呢\n");}else if(summ==0)printf("系统人数为0,请添加信息后再试\n");system("pause");}void mathmax(LinkList l){Node *p,*q;double max;student e,f;p=l;q=p->next;e=(p->next)->data;max=e.math;while(q->next!=NULL){f=(q->next)->data;if(f.math>max)max=f.math;q=q->next;}p=l;q=l->next;printf("数学最高分为:\n");while(p->next!=NULL){f=(p->next)->data;if(f.math==max)printf("学生:%s 成绩:%lf\n",f.name,f.math);p=p->next;}if(summ==0)printf("系统人数为0,请添加信息后再试\n");system("pause");}void englishmax(LinkList l){Node *p,*q;double max;student e,f;p=l;q=p->next;e=(p->next)->data;max=e.english;while(q->next!=NULL){f=(q->next)->data;if(f.english>max)max=f.english;q=q->next;}p=l;q=l->next;printf("英语最高分为:\n");while(p->next!=NULL){f=(p->next)->data;if(f.english==max)printf("学生:%s 成绩:%lf\n",f.name,f.english);p=p->next;}if(summ==0)printf("系统人数为0,请添加信息后再试\n");system("pause");}void shuzhimax(LinkList l){Node *p,*q;double max;student e,f;p=l;q=p->next;e=(p->next)->data;max=e.shuzhi;while(q->next!=NULL){f=(q->next)->data;if(f.shuzhi>max)max=f.shuzhi;q=q->next;}p=l;q=l->next;printf("树脂最高分为:\n");while(p->next!=NULL){f=(p->next)->data;if(f.shuzhi==max)printf("学生:%s 成绩:%lf\n",f.name,f.shuzhi);p=p->next;}if(summ==0)printf("系统人数为0,请添加信息后再试\n");system("pause");}void menu(){ system("cls");printf("***************IKUN成绩管理系统***************\n");printf(" \t** **\n");printf(" \t** author:南工第一IKUN**\n");printf(" \t** **\n");printf("**1.录入新的IKUN的成绩**\n");printf("**2.按学号删除IKUN的成绩 **\n");printf("**3.按学号修改IKUN的成绩 **\n");printf("**4.查找IKUN的成绩**\n");printf("**5.显示IKUN们的成绩 **\n");printf(" \t**6.根据总分排序 **\n");printf(" \t**7.显示数学不及格的IKUN **\n");printf(" \t**8.显示英语不及格的IKUN **\n");printf(" \t**9.显示树脂不及格的小黑子 **\n");printf(" \t**10.查看数学最高分 **\n");printf(" \t**11.查看英语最高分 **\n");printf(" \t**12.查看树脂最高分 **\n");//printf("**13.退出登录**\n");printf(" \t**13.保存数据到文件 **\n");printf(" \t**14.从文件中读取数据 **\n");printf(" \t**15.插入一个新学生 **\n");printf("**16.退出登录**\n");printf("**0.退出成绩管理系统 **\n");printf("**********************************************\n");printf("请输入你想进行的操作:0-13 \n");}void xuigai2()//找回密码之后登录{int mi=0;int caozuo=0;int zhang=0;int anns=0;while(1){printf("请输入你的账号\n");scanf("%d",&zhang);printf("请输入你的密码\n");scanf("%d",&mi);if(mi==mima&&zhang==zhanghao){choice = 1;printf("登录成功!\n");system("pause");system("cls");break;}else {system("cls");anns++;if(anns<5)printf("账号或密码有误,请重新输入\n");if(anns==5)printf("你干嘛哎呦,都错五次了,好好想想再来吧!\n");}if(anns==5)break;}}void zhaohui()//找回密码{int guodu;int guodu2;int zhang;//输入要找回密码的账号while(1){printf("请输入要找回密码的账号\n");scanf("%d",&zhang);if(zhang==123456){printf("请输入更改后的密码:");scanf("%d",&guodu);printf("请再次输入更改后的密码:");scanf("%d",&guodu2);if(guodu==guodu2){mima=guodu2;printf("修改成功,请登陆吧\n");system("pause");xuigai2();break;}else {system("cls");printf("两次输入不同,修改失败,请重新输入账号\n");}}else {system("cls");printf("该账号不存在,请重新输入账号\n");}}}void charu(LinkList l){Node *p,*y;int num2;printf("请输入要插入的位置(谁之后)\n");scanf("%d",&num2);p=l->next;while(p!=NULL){if(num2==p->data.num){y=p->next;summ++;student e;printf("小黑子请输入你想录入IKUN的成绩吧!\n");printf("学号\n");scanf("%d",&e.num);printf("姓名\n");scanf("%s",e.name);printf("专业\n");scanf("%s",e.major);printf("数学成绩\n");scanf("%lf",&e.math);printf("英语成绩\n");scanf("%lf",&e.english);printf("IKUN树脂分\n");scanf("%lf",&e.shuzhi);e.average=(e.math+e.english+e.shuzhi)/3;e.sum=e.math+e.english+e.shuzhi;Node*q=(LinkList)malloc(sizeof(Node));q->data=e;q->next=y;p->next=q;printf("插入成功\n");break;}elsep=p->next;}if(p==NULL)printf("插入失败\n");system("pause");}void guanli()//登录界面{int mi=0;int caozuo=0;int zhang=0;int anns=0;/*printf(" **********登录界面**********\n");printf(" ** 账号: **\n");printf(" ** 密码: **\n");printf(" ** 输入0找回密码 **\n");printf(" ****************************\n");*/printf(" **********登录界面**********\n");printf(" **1管理员登录1**\n");printf(" **ovo **\n");printf(" ** 0找回密码0 **\n");printf(" ****************************\n");printf("请输入想进行的操作:0-1\n");scanf("%d",&caozuo);if(caozuo==1){while(1){printf("请输入你的账号\n");scanf("%d",&zhang);printf("请输入你的密码\n");scanf("%d",&mi);if(mi==mima&&zhang==zhanghao){choice = 1;printf("登录成功!\n");system("pause");system("cls");break;}else {system("cls");anns++;if(anns<5)printf("账号或密码有误,请重新输入\n");if(anns==5)printf("你干嘛哎呦,都错五次了,好好想想再来吧!\n");}if(anns==5)break;}}else if(caozuo==0){zhaohui();}}void ReadFile(LinkList &l)//从文件中读取数据{FILE *fp;fp=fopen("D:/b.txt","r");if(fp==NULL){printf("Can not open the file\n");exit(1);}else {CreateList(l);student e;while(fscanf(fp,"%d %s %s %lf %lf %lf %lf %lf\n",&e.num,e.name,e.major,&e.math,&e.english,&e.shuzhi,&e.average,&e.sum)!=EOF){ZenjiaNode(l,e);}printf("已成功读取数据\n");}system("pause");fclose(fp);}void WriteFile(LinkList &l)//保存数据到文件{FILE *fp ;fp = fopen("D:/b.txt", "w");if(fp == NULL){printf("Can not open the file\n");exit(1);}Node *p = l->next;student e;while(p!=NULL ){fprintf(fp,"%-8d ",p->data.num);fprintf(fp,"%-8s ",p->data.name);fprintf(fp,"%-8s ",p->data.major);fprintf(fp,"%-16lf ",p->data.math);fprintf(fp,"%-16lf ",p->data.english);fprintf(fp,"%-16lf ",p->data.shuzhi);fprintf(fp,"%-16lf ",p->data.average);fprintf(fp,"%-16lf ",p->data.sum);fprintf(fp,"\n");p = p -> next;} printf("保存成功\n");fclose(fp);system("pause");}int main(){int x;LinkList l;CreateList(l);guanli();while(choice){menu();scanf("%d", &choice);switch(choice){case 1: ZenjiaStudent(l);//增加学生break;case 2: ShanchuStudent(l); //删除学生break;case 3: XuigaiStudent(l);//修改学生break;case 4: ChazhaoStudent(l);//查找学生break;case 5: XianshiStudent(l); //显示所有学生break;case 6:paixu(l);//排序break;case 7:math(l);//数学不及格break;case 8:english(l);//英语不及格break;case 9:shuzhi(l);//树脂不及格break;case 10:mathmax(l);break;case 11:englishmax(l);break;case 12:shuzhimax(l);break;case 13:WriteFile(l);break;case 14:ReadFile(l);break;case 15:charu(l);break;case 16:system("cls");guanli();break;default:printf("谢谢您的使用\n");break;}}return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。