学生成绩管理系统
来源:互联网 发布:大话手游神兵升级数据 编辑:程序博客网 时间:2024/05/01 21:36
这是进入大学以来,第一次做的C语言课程设计,觉得挺有意义,把代码贴上来,晒一下!
代码:
//学生成绩管理系统//教师,管理员密码//输入学生的基本信息//输出学生的基本信息//查找学生的基本信息//学生成绩分析//排序//统计//退出#include <stdio.h>#include <iostream>#include <stdlib.h>#include <string>#include <string.h>#include <algorithm>using namespace std;int MIMA=123456,yyy;struct student//结构体函数{ char banji[20]; char name[20]; char xh[20]; double math; double english; double Cyuyan; double score;//总成绩! int num;}stu[3000];void AdministratorMenu();void Teacher();void Sort();void display();void dis1();void InsertScore();void Xiugai();void Fenxi();void FenxiMenu();void XiTongshuoming();void Guanyu();void Mainface()//进入界面{ system("color 0c"); cout<<" ------------------------------------- "<<endl; cout<<" | 欢迎使用学生成绩管理系统 |"<<endl; cout<<" ------------------------------------- "<<endl; cout<<" | 1、管理员登陆 | 2、教师登陆 |"<<endl; cout<<" ------------------------------------- "<<endl; cout<<" "<<endl; cout<<" 请选择登陆方式:";}void mima()//登录密码!{ int x; cin>>x; if(x==MIMA) { system("cls"); } else { cout<<"您输入的密码错误!"<<endl; system("pause");//暂停! system("cls");//清屏! if(yyy==1) { AdministratorMenu(); mima(); } else if(yyy==2) { Teacher(); mima(); } }}void AdministratorMenu(){ system("cls"); cout<<"管理员登陆》》》》》》》》》》》》》》》》》》》》》》》》》》》》》"<<endl; cout<<" 账号:Administrator"<<endl; cout<<" 密码:"; mima();}void Teacher(){ system("cls"); cout<<"教师登陆》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》"<<endl; cout<<" 账号:Teacher"<<endl; cout<<" 密码:"; mima();}void First(){ Mainface(); cin>>yyy; if(yyy<1||yyy>2) { cout<<"输入错误!请重新输入!"<<endl; system("pause"); system("cls"); First(); } else if(yyy==1) { AdministratorMenu(); } else if(yyy==2) { Teacher(); }}char menu()//菜单选项{ char x; system("cls"); cout<<"****************************************************************************"<<endl; cout<<" 1、学生成绩录入"<<endl; cout<<" 2、学生成绩信息显示"<<endl; cout<<" 3、学生成绩排名"<<endl; cout<<" 4、学生成绩查找"<<endl; cout<<" 5、追加学生成绩"<<endl; cout<<" 6、学生成绩分析"<<endl; cout<<" 7、系统说明"<<endl; cout<<" 8、关于"<<endl; cout<<" 0、退出系统"<<endl; cout<<"请选择您要进行的选项:"<<endl;; while(1) { cin>>x; if(x>='0'&&x<='8') break; else { cout<<"输入错误!!!请重新输入!!!"<<endl; } } return x;}double cmp1(student a1,student a2)//比较数学成绩{ if(a1.math!=a2.math) return a1.math>a2.math;}double cmp2(student a1,student a2)//比较英语成绩{ if(a1.english!=a2.english) return a1.english>a2.english;}double cmp3(student a1,student a2)//比较C语言成绩{ if(a1.Cyuyan!=a2.Cyuyan) return a1.Cyuyan>a2.Cyuyan;}double cmp4(student a1,student a2)//比较总成绩,得出名次{ if(a1.score!=a2.score) return a1.score>a2.score;}void FenxiChengji(){ system("cls"); cout<<" 1、查看学生数学成绩分析"<<endl; cout<<" 2、查看学生英语成绩分析"<<endl; cout<<" 3、查看学生C语言成绩分析"<<endl; cout<<"请您选择您要进行的选项:"<<endl;}void FenxiMenu(){ system("cls"); cout<<" 1、查看学生数学成绩"<<endl; cout<<" 2、查看学生英语成绩"<<endl; cout<<" 3、查看学生C语言成绩"<<endl; cout<<"请您选择您要进行的选项:"<<endl;}void SortMenu(){ system("cls"); cout<<" 1、查看学生数学成绩"<<endl; cout<<" 2、查看学生英语成绩"<<endl; cout<<" 3、查看学生C语言成绩"<<endl; cout<<" 4、查看学生总成绩"<<endl; cout<<"请您选择您要进行的选项:"<<endl;}void Sort()//成绩比较函数{ student a; FILE *fp=fopen("d:\\Student\\成绩.txt","ab+"); int flag,Num=0,n; char ch; do { while(1) { SortMenu(); cin>>flag; if(flag>=1&&flag<=4) { break; } else { cout<<"\n输入错误!!!请重新输入!!!"<<endl; system("pause"); system("cls"); } } while((n=fread(&a,sizeof(a),1,fp)>0)) { stu[Num++]=a; } fclose(fp); if(flag==1)//数学成绩查询 { system("cls"); sort(stu,stu+Num,cmp1); cout<<" 班级 姓名 学号 数学 名次"<<endl; for(int i=0;i<Num;i++) { cout<<" "<<stu[i].banji<<" "<<stu[i].name<<" "<<stu[i].xh<<" "; printf("%.2lf",stu[i].math); cout<<" "<<i+1<<endl; } } else if(flag==2)//英语成绩查询 { system("cls"); sort(stu,stu+Num,cmp2); cout<<" 班级 姓名 学号 英语 名次"<<endl; for(int i=0;i<Num;i++) { cout<<" "<<stu[i].banji<<" "<<stu[i].name<<" "<<stu[i].xh<<" "; printf("%.2lf",stu[i].english); cout<<" "<<i+1<<endl; } } else if(flag==3)//C语言成绩查询 { system("cls"); sort(stu,stu+Num,cmp3); cout<<" 班级 姓名 学号 C语言 名次"<<endl; for(int i=0;i<Num;i++) { cout<<" "<<stu[i].banji<<" "<<stu[i].name<<" "<<stu[i].xh<<" "; printf("%.2lf",stu[i].Cyuyan); cout<<" "<<i+1<<endl; } } else if(flag==4)//总成绩查询 { system("cls"); sort(stu,stu+Num,cmp4); dis1(); for(int i=0;i<Num;i++) { cout<<" "<<stu[i].banji<<" "<<stu[i].name<<" "<<stu[i].xh<<" "; printf("%.2lf %.2lf %.2lf %.2lf ",stu[i].math,stu[i].english,stu[i].Cyuyan,stu[i].score); cout<<" "<<i+1<<endl; } } getchar(); cout<<"这里一共有"<<Num<<"份记录!"<<endl; cout<<"是否返回上一级?(Y/N):";ch=getchar(); }while(ch=='Y'||ch=='y'); fclose(fp);}void input()//输入学生信息!{ system("cls"); getchar(); struct student a; FILE *fp; char ch; int Num,n; if((fp=fopen("d:\\Student\\成绩.txt","wb"))==NULL) { cout<<"\nCannot open the inform file"<<endl; getchar(); exit(1); } do { system("cls"); cout<<"请输入班级代号:";gets(a.banji); cout<<"请输入学生姓名:";gets(a.name); cout<<"请输入学生学号:";gets(a.xh); cout<<"请分别输入学生的数学、英语、C语言成绩:"<<endl; cin>>a.math>>a.english>>a.Cyuyan; a.score=a.math+a.english+a.Cyuyan; fwrite(&a,sizeof(a),1,fp); cout<<"是否继续添加?(Y/N):"; cin>>ch; getchar(); }while(ch=='Y'||ch=='y'); fclose(fp);}void dis1(){ system("cls"); cout<<" 班级 姓名 学号 数学 英语 C语言 总成绩 名次"<<endl;}void display()//学生信息显示{ system("color 0e"); struct student a; FILE *fp; int Num=0,n; if((fp=fopen("d:\\Student\\成绩.txt","rb"))==NULL) { cout<<"\nCannot open the inform file\n"; getchar(); exit(1); } while((n=fread(&a,sizeof(a),1,fp)>0)) { stu[Num++]=a; } fclose(fp); sort(stu,stu+Num,cmp4); dis1(); for(int i=0;i<Num;i++) { cout<<" "<<stu[i].banji<<" "<<stu[i].name<<" "<<stu[i].xh<<" "; printf("%.2lf %.2lf %.2lf %.2lf ",stu[i].math,stu[i].english,stu[i].Cyuyan,stu[i].score); cout<<" "<<i+1<<endl; } cout<<endl<<endl<<"这里一共有"<<Num<<"份信息!"<<endl; system("pause"); //menu();此处有些画蛇添足!注释掉!表示不理解!}int FindMenu()//查找菜单{ int flag; system("color D"); cout<<" 1、按班级查找"<<endl; cout<<" 2、按学号查找"<<endl; cout<<" 3、按姓名查找"<<endl; cout<<" 4、按名次查找"<<endl; cout<<"请选择您要进行的选项:"; cin>>flag; return flag;}void Find()//对学生信息的查找{ struct student a; FILE *fp; int Num=0,x,flag; char ch[20],str; if((fp=fopen("d:\\Student\\成绩.txt","rb"))==NULL) { cout<<"\nCannot open the inform file"<<endl; getchar(); exit(1); } do { system("cls"); flag=FindMenu(); if(flag<1||flag>4) { cout<<"\n输入错误!!!请重新输入!!!"<<endl; system("pause"); system("cls"); flag=FindMenu(); }//对菜单的选择! if(flag==1) { system("cls"); cout<<"请输入您要查询的班级:";getchar(); gets(ch); Num=0; while(fread(&a,sizeof(a),1,fp)==1) { stu[Num++]=a; } fclose(fp); sort(stu,stu+Num,cmp4); dis1(); for(int i=0;i<Num;i++) { if(strcmp(ch,stu[i].banji)==0) { cout<<" "<<stu[i].banji<<" "<<stu[i].name<<" "<<stu[i].xh<<" "; printf("%.2lf %.2lf %.2lf %.2lf ",stu[i].math,stu[i].english,stu[i].Cyuyan,stu[i].score); cout<<" "<<i+1<<endl; } } } else if(flag==2) { system("cls"); cout<<"请您输入您要查询的学号:";getchar(); gets(ch); Num=0; while(fread(&a,sizeof(a),1,fp)==1) { stu[Num++]=a; } fclose(fp); sort(stu,stu+Num,cmp4); dis1(); for(int i=0;i<Num;i++) { if(strcmp(ch,stu[i].xh)==0) { cout<<" "<<stu[i].banji<<" "<<stu[i].name<<" "<<stu[i].xh<<" "; printf("%.2lf %.2lf %.2lf %.2lf ",stu[i].math,stu[i].english,stu[i].Cyuyan,stu[i].score); cout<<" "<<i+1<<endl; } } } else if(flag==3) { system("cls"); cout<<"请您输入您要查询的姓名:";getchar(); gets(ch); Num=0; while(fread(&a,sizeof(a),1,fp)==1) { stu[Num++]=a; } fclose(fp); sort(stu,stu+Num,cmp4); dis1(); for(int i=0;i<Num;i++) { if(strcmp(ch,stu[i].name)==0) { cout<<" "<<stu[i].banji<<" "<<stu[i].name<<" "<<stu[i].xh<<" "; printf("%.2lf %.2lf %.2lf %.2lf ",stu[i].math,stu[i].english,stu[i].Cyuyan,stu[i].score); cout<<" "<<i+1<<endl; } } } else if(flag==4) { system("cls"); cout<<"请您输入您要查询的名次:"; cin>>x; Num=0; while(fread(&a,sizeof(a),1,fp)==1) { stu[Num++]=a; } fclose(fp); sort(stu,stu+Num,cmp4); dis1(); for(int i=0;i<Num;i++) { if(i+1==x) { cout<<" "<<stu[i].banji<<" "<<stu[i].name<<" "<<stu[i].xh<<" "; printf("%.2lf %.2lf %.2lf %.2lf ",stu[i].math,stu[i].english,stu[i].Cyuyan,stu[i].score); cout<<" "<<i+1<<endl; break; } } } //cout<<"这里一共有"<<Num<<"份信息!"<<endl; cout<<"是否返回上一级再次查找?(Y/N):"; str=getchar();getchar(); }while(str=='Y'||str=='y'); fclose(fp);}void Fenxi()//学生成绩分析{ system("cls"); system("color F"); student a; FILE *fp=fopen("d:\\Student\\成绩.txt","ab+"); int flag,Num=0,n; char ch; do { while(1) { FenxiMenu(); cin>>flag; if(flag>=1&&flag<=3) { break; } else { cout<<"\n输入错误!!!请重新输入!!!"<<endl; system("pause"); system("cls"); } } while((n=fread(&a,sizeof(a),1,fp)>0)) { stu[Num++]=a; } fclose(fp); if(flag==1)//数学成绩查询 { system("cls"); sort(stu,stu+Num,cmp1); int g=0,bug=0,l=0,you=0; for(int i=0;i<Num;i++) { if(stu[i].math>=60) { g++; } if(stu[i].math>=80) { l++; } if(stu[i].math>=90) { you++; } if(stu[i].math<60) { bug++; } } cout<<"数学成绩优秀者"<<you<<"人\n"; cout<<"数学成绩良好者"<<l<<"人\n"; cout<<"数学成绩及格者"<<g<<"人\n"; cout<<"数学成绩不及格者"<<bug<<"人\n"; } else if(flag==2)//英语成绩查询 { system("cls"); sort(stu,stu+Num,cmp2); int g=0,bug=0,l=0,you=0; for(int i=0;i<Num;i++) { if(stu[i].english>=60) { g++; } if(stu[i].english>=80) { l++; } if(stu[i].english>=90) { you++; } if(stu[i].english<60) { bug++; } } cout<<"英语成绩优秀者"<<you<<"人\n"; cout<<"英语成绩良好者"<<l<<"人\n"; cout<<"英语成绩及格者"<<g<<"人\n"; cout<<"英语成绩不及格者"<<bug<<"人\n"; } else if(flag==3)//C语言成绩查询 { system("cls"); sort(stu,stu+Num,cmp3); int g=0,bug=0,l=0,you=0; for(int i=0;i<Num;i++) { if(stu[i].Cyuyan>=60) { g++; } if(stu[i].Cyuyan>=80) { l++; } if(stu[i].Cyuyan>=90) { you++; } if(stu[i].Cyuyan<60) { bug++; } } cout<<"C语言成绩优秀者"<<you<<"人\n"; cout<<"C语言成绩良好者"<<l<<"人\n"; cout<<"C语言成绩及格者"<<g<<"人\n"; cout<<"C语言成绩不及格者"<<bug<<"人\n"; } getchar(); cout<<"这里一共有"<<Num<<"份记录!"<<endl; cout<<"是否返回上一级?(Y/N):";ch=getchar(); }while(ch=='Y'||ch=='y'); fclose(fp);}void InsertScore()//追加学生成绩{ system("cls"); getchar(); struct student a; FILE *fp; char ch; int Num,n; if((fp=fopen("d:\\Student\\成绩.txt","ab+"))==NULL) { cout<<"\nCannot open the inform file"<<endl; getchar(); exit(1); } do { system("cls"); cout<<"追加学生成绩:"<<endl; cout<<"请输入班级代号:";gets(a.banji); cout<<"请输入学生姓名:";gets(a.name); cout<<"请输入学生学号:";gets(a.xh); cout<<"请分别输入学生的数学、英语、C语言成绩:"<<endl; cin>>a.math>>a.english>>a.Cyuyan; a.score=a.math+a.english+a.Cyuyan; fwrite(&a,sizeof(a),1,fp); cout<<"是否继续添加?(Y/N):"; cin>>ch; getchar(); }while(ch=='Y'||ch=='y'); fclose(fp);}/*void Xiugai(){ system("cls"); student a; FILE *fp,*p; int flag,n,Num; char ch[15],x; do { Num=0; if((fp=fopen("d:\\Student\\成绩.txt","rb"))=NULL) { cout<<"\nCannot open the inform file!"; getchar(); exit(1); } if((p=fopen("d:\\Student\\替代文件.txt","wb"))==NULL) { cout<<"\nCannot creat the inform file!"; getchar(); exit(1); } printf("请输入您想要修改信息的学号:"); gets(ch);getchar(); flag=0; while(fread(&a,sizeof(a),1,fp)==1) { stu[Num++]=a; } for(int i=0;i<Num;i++) { if(strcmp(stu[i].xh,ch)==0) { cout<<" "<<stu[i].banji<<" "<<stu[i].name<<" "<<stu[i].xh<<" "; printf("%.2lf %.2lf %.2lf %.2lf ",stu[i].math,stu[i].english,stu[i].Cyuyan,stu[i].score); cout<<"请输入班级代号:";gets(stu[i].banji); cout<<"请输入学生姓名:";gets(stu[i].name); cout<<"请输入学生学号:";gets(stu[i].xh); cout<<"请分别输入学生的数学、英语、C语言成绩:"<<endl; cin>>stu[i].math>>stu[i].english>>stu[i].Cyuyan; stu[i].score=stu[i].math+stu[i].english+stu[i].Cyuyan; } fwrite(&stu,sizeof(stu),1,p); } if(flag==1) { cout<<"修改成功!"<<endl; remove("d:\\Student\\成绩.txt"); rename("d:\\Student\\替代文件.txt","d:\\Student\\成绩.txt");//虽然这一块函数比较坑爹,好歹学会了!!! } else if(flag==0) { cout<<"您要修改的信息不存在!"<<endl; } cout<<"您是否要继续修改信息?(Y/N):"; cin>>x;getchar(); }while(x=='Y'||x=='y'); fclose(fp); fclose(p);}*///注释部分是在是有点儿小心疼,编译代码的时候实在是搞不懂懂那些莫名奇妙//的错误,花一个下午仍然没能把头绪理出来,不得不割舍掉这个系统很重要的//两个功能:学生信息修改,学生信息删除void Xitongshuoming(){ system("cls"); system("color 0e"); cout<<" (1) 功能1的学生成绩录入为一次性录入,再次使用便会覆盖原有数据。"<<endl; cout<<" 如教师希望添加学生成绩可使用功能5(追加学生成绩)。\n"<<endl; cout<<" (2) 本系统的成绩排序范围为整个系的学生。"<<endl; cout<<" 即:学生的名次为年级名次!\n"<<endl; cout<<" (3) 学生的排名可由功能3(学生成绩排名)来实现。\n"<<endl; cout<<" (4) 学生的成绩具体情况可使用功能6(学生成绩分析)。\n"<<endl; cout<<" (5) 若教师对该系统还有不明之处,请联系管理员或“关于”的本产品制作者!\n"<<endl; system("pause");}void Guanyu(){ system("cls"); system("color 0a"); cout<<" 本产品由Topcoder工作室成员申军超制作!"<<endl; cout<<" 若教师或管理员对本产品功能有不满之处,请管理员联系本人!"<<endl; cout<<" QQ号码:1736696594"<<endl; cout<<" 邮箱: 1736696594@qq.com"<<endl; system("pause");}int main(){ First(); while(1) { system("color 0a"); switch(menu()) { case '1':input();break; case '2':display();break; case '3':Sort();break; case '4':Find();break; case '5':InsertScore();break; case '6':Fenxi();break; case '7':Xitongshuoming();break; case '8':Guanyu();break; case '0':exit(0);break; } } return 0;}
代码比较多,高手不喜勿喷!!!
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 黄金分割最优解
- 调试 函数TRACE("debug information");
- IxD 良好的线框化工具
- hdu4052——线段树,矩形并
- IOS obj-c、c、c++混编
- 学生成绩管理系统
- 【各种装系统方法的差别以及性能】
- 采用XMPP协议实现Android推送
- hdu1067 bfs
- Linux学习笔记五
- [程序猿感悟] 程序员如何成功的假装在很努力的工作?
- 欧几里德算法求最大公约数
- java web 前端页面中的各个验证
- 百度地图-非常实用的搜索自定义