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;}
C语言链表实现学生成绩管理系统相关推荐
- 用C语言链表编写学生成绩管理系统
本代码供读者学习使用,请不要随意转载. 一.设计题目:学生成绩管理系统 二.目的与要求 每位学生记录包含有学号.姓名.性别.出生日期.三门功课的成绩(高等数学.大学英语.C语言).总分和平均分 系统菜 ...
- 用链表c语言程序设计,C语言程序设计-基于链表的学生成绩管理系统
<C语言程序设计-基于链表的学生成绩管理系统>由会员分享,可在线阅读,更多相关<C语言程序设计-基于链表的学生成绩管理系统(18页珍藏版)>请在人人文库网上搜索. 1.华北科技 ...
- c语言用链表实现成绩管理系统,C语言基于单链表得学生成绩管理系统
前言 传说中讲课通俗而不庸俗,说话风流而不下流的小编又来了哦,今天的主要内容是:C语言基于单链表得学生成绩管理系统.首先给年夜家总结下为什么你们学习C语言会觉得难,尤其是对单链表这块,主要原因得是因为 ...
- c语言用链表实现成绩管理系统,C语言写的学生成绩管理系统(链表)
<C语言写的学生成绩管理系统(链表)>由会员分享,可在线阅读,更多相关<C语言写的学生成绩管理系统(链表)(6页珍藏版)>请在人人文库网上搜索. 1.include#inclu ...
- C语言基础篇02:单链表实现学生成绩管理系统
单链表实现学生成绩管理系统 前言 需求分析 详细设计 增加成绩信息 删除成绩信息 修改成绩信息 查询学生信息和浏览学生信息 总结 前言 上篇已经讲过单链表的基本实现,这篇将以一个简单的管理系统入手. ...
- C语言链表学生成绩制作成链表,C语言程序设计课程设计基于链表的学生成绩管理系统.doc...
C语言程序设计课程设计基于链表的学生成绩管理系统 华北科技学院计算机系综合性实验报告 PAGE 第 PAGE 10 页 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C语言程序设计 实验学 ...
- c语言程序设计 链表,c语言程序设计基于链表的学生成绩管理系统.doc
c语言程序设计基于链表的学生成绩管理系统 华北科技学院计算机系综合性实验报告 PAGE 第 PAGE 10 页 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C语言程序设计 实验学期 20 ...
- c语言链表按成绩区间查询,C语言写的学生成绩管理系统(链表)
<C语言写的学生成绩管理系统(链表)>由会员分享,可在线阅读,更多相关<C语言写的学生成绩管理系统(链表)(8页珍藏版)>请在人人文库网上搜索. 1.include#inclu ...
- 《c语言项目》学生成绩管理系统(devc++)
链接一: 链表模版链接地址 链接二: 学生成绩管理详细说明 <c语言项目>学生成绩管理系统(devc++) 1.分模块编程分别命名 main.cpp #include<stdio.h ...
最新文章
- python一切皆对象的理解_python中为什么万物皆对象
- Beyond Compare 4比较文件夹要设置基键吗?
- linux 终端 tty 简介
- 用命令行编译java并生成可执行的jar包
- java 输入框输入1到9_java程序设计 习题答案1到9
- 键盘映射软件_KOMPLETE KONTROL M32 键盘 MIDI 控制器的评测
- ASP.NET MVC视图和控制器之间的传值总结(一)
- android 带图片的弹幕,一个可以支持文本,图片,文本+表情的简单弹幕插件
- t系列服务器更换pip升级版本,Python更新pip出现错误解决方法
- C++ Primer 第六章 语句
- 数据结构之堆(Heap),堆的相关操作,用堆模拟优先级队列
- uni - 使用npm
- Python3异常-AttributeError: module 'sys' has no attribute 'setdefaultencoding'
- 手撕代码合集[短期更新]
- 腾讯2017暑期实习编程题3
- UTF-8是如何编码的?
- word章节模板构建:新建样式和多级列表。(附插入目录)
- linux u盘 随身,教你安装CentOS到U盘,制作随身Linux系统
- 淘宝API 搜索相似的商品
- appium之微信公众号自动化测试实战