#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;}

C语言链表实现学生成绩管理系统相关推荐

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

    本代码供读者学习使用,请不要随意转载. 一.设计题目:学生成绩管理系统 二.目的与要求 每位学生记录包含有学号.姓名.性别.出生日期.三门功课的成绩(高等数学.大学英语.C语言).总分和平均分 系统菜 ...

  2. 用链表c语言程序设计,C语言程序设计-基于链表的学生成绩管理系统

    <C语言程序设计-基于链表的学生成绩管理系统>由会员分享,可在线阅读,更多相关<C语言程序设计-基于链表的学生成绩管理系统(18页珍藏版)>请在人人文库网上搜索. 1.华北科技 ...

  3. c语言用链表实现成绩管理系统,C语言基于单链表得学生成绩管理系统

    前言 传说中讲课通俗而不庸俗,说话风流而不下流的小编又来了哦,今天的主要内容是:C语言基于单链表得学生成绩管理系统.首先给年夜家总结下为什么你们学习C语言会觉得难,尤其是对单链表这块,主要原因得是因为 ...

  4. c语言用链表实现成绩管理系统,C语言写的学生成绩管理系统(链表)

    <C语言写的学生成绩管理系统(链表)>由会员分享,可在线阅读,更多相关<C语言写的学生成绩管理系统(链表)(6页珍藏版)>请在人人文库网上搜索. 1.include#inclu ...

  5. C语言基础篇02:单链表实现学生成绩管理系统

    单链表实现学生成绩管理系统 前言 需求分析 详细设计 增加成绩信息 删除成绩信息 修改成绩信息 查询学生信息和浏览学生信息 总结 前言 上篇已经讲过单链表的基本实现,这篇将以一个简单的管理系统入手. ...

  6. C语言链表学生成绩制作成链表,C语言程序设计课程设计基于链表的学生成绩管理系统.doc...

    C语言程序设计课程设计基于链表的学生成绩管理系统 华北科技学院计算机系综合性实验报告 PAGE 第 PAGE 10 页 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C语言程序设计 实验学 ...

  7. c语言程序设计 链表,c语言程序设计基于链表的学生成绩管理系统.doc

    c语言程序设计基于链表的学生成绩管理系统 华北科技学院计算机系综合性实验报告 PAGE 第 PAGE 10 页 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C语言程序设计 实验学期 20 ...

  8. c语言链表按成绩区间查询,C语言写的学生成绩管理系统(链表)

    <C语言写的学生成绩管理系统(链表)>由会员分享,可在线阅读,更多相关<C语言写的学生成绩管理系统(链表)(8页珍藏版)>请在人人文库网上搜索. 1.include#inclu ...

  9. 《c语言项目》学生成绩管理系统(devc++)

    链接一: 链表模版链接地址 链接二: 学生成绩管理详细说明 <c语言项目>学生成绩管理系统(devc++) 1.分模块编程分别命名 main.cpp #include<stdio.h ...

最新文章

  1. python一切皆对象的理解_python中为什么万物皆对象
  2. Beyond Compare 4比较文件夹要设置基键吗?
  3. linux 终端 tty 简介
  4. 用命令行编译java并生成可执行的jar包
  5. java 输入框输入1到9_java程序设计  习题答案1到9
  6. 键盘映射软件_KOMPLETE KONTROL M32 键盘 MIDI 控制器的评测
  7. ASP.NET MVC视图和控制器之间的传值总结(一)
  8. android 带图片的弹幕,一个可以支持文本,图片,文本+表情的简单弹幕插件
  9. t系列服务器更换pip升级版本,Python更新pip出现错误解决方法
  10. C++ Primer 第六章 语句
  11. 数据结构之堆(Heap),堆的相关操作,用堆模拟优先级队列
  12. uni - 使用npm
  13. Python3异常-AttributeError: module 'sys' has no attribute 'setdefaultencoding'
  14. 手撕代码合集[短期更新]
  15. 腾讯2017暑期实习编程题3
  16. UTF-8是如何编码的?
  17. word章节模板构建:新建样式和多级列表。(附插入目录)
  18. linux u盘 随身,教你安装CentOS到U盘,制作随身Linux系统
  19. 淘宝API 搜索相似的商品
  20. appium之微信公众号自动化测试实战

热门文章

  1. 请务必收下这10+个加载特效
  2. 报告解读下载 | 9月《中国数据库行业分析报告》发布,精彩抢先看
  3. 为什么有些人这么冷漠
  4. Linux文件上传不成功的问题解决
  5. 女程序员:我负责赚钱养家,老公负责貌美如花
  6. 实验二十五 IEEE 802.11p和VANET仿真
  7. Java上传文件内容
  8. Selenium自动填写问卷星
  9. 使用EasyExcel导出模板并设置级联下拉及其原理分析
  10. 视频监控存储系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告