学生成绩管理系统实验报告材料C.doc
word某某学院计算机与信息工程学院面向对象课程设计报告班 级:计 算 机 学 院专 业:计 算 机 科 学 与 技 术 题 目:学 生 成 绩 管 理 系 统 指导教师:导师职称:学 号:姓 名:组 长:年月日21 / 21目 录一设计目的41 定义类42 实现程序功能4二总体设计5三详细设计5四调试与测试5五心得体会5一 设计目的主要实现对学生成绩进展系统化的管理,可以对学生根本信息进展输入、存储、修改、删除等,还可按照学号来查询、排序学生信息等。由此可以看出,此系统对于管理学生成绩是很有效的。1 定义定义学生student类,其中至少包括某某、性别、学号、班级和四门功课的成绩。2 实现下面功能1、设计菜单实现功能选择;2、输入功能:输入学生信息,并保存到文件中;3、计算每个学生的总分与平均分并排序4、能根据学号修改学生信息5、能根据学号删除学生信息6、查询功能: 1能够根据学号查询学生信息; 2能够根据某某、班级查询学生信息3统计学生成绩,按照班级和科目计算平均分。二 总体设计学生成绩管理定义学生类student输入学生信息某某性别学号班级英语数学语文应用计算总分计算平均分修改信息删除信息查询信息根据学号进展编辑根据某某班级查询统计成绩排序按照班级、科目计算分数设计菜单栏功能三 详细设计#include<iostream>#include<stdio.h>#include<ctype.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<iomanip>using namespace std;typedef classpublic: char num10; char cla10; char name10; char byyl10; char jsjzc10; char sjk10; char jsjyy10; int pjf;Student;Student stu80;int menu() char c; for(;c<'0'|c>'8') system("cls"); cout<<" 欢迎使用本学生成绩管理系统!"<<endl; cout<<"编程人员:李臻 学号:101102022" cout<<endl; cout<<"* 学生成绩管理系统 * "<<endl; cout<<setw(32)<<" "<<"1.输入学生资料"<<endl; cout<<setw(32)<<" "<<"2.输出学生资料"<<endl; cout<<setw(32)<<" "<<"3.按平均分排序"<<endl; cout<<setw(32)<<" "<<"4.添加学生资料"<<endl; cout<<setw(32)<<" "<<"5.按学号查找删除该学生资料"<<endl; cout<<setw(32)<<" "<<"6.查找显示学生资料"<<endl; cout<<setw(32)<<" "<<"7.按学号修改该学生资料"<<endl; cout<<setw(32)<<" "<<"8.从文件中读入数据"<<endl; cout<<setw(32)<<" "<<"0.储存学生资料并退出系统"<<endl; cout<<"* "<<endl; cout<<"请选择(0-8):" c=getchar(); return(c-'0');int zh(char str10) /将字符串转换为数值型 int i; int sum=0; for(i=0; i <strlen(str);i+) sum=10*sum+stri-'0' return sum; int Input(Student stud,int n) /输入数据。 int i=0; char sign,x10; for(;sign != 'n' && sign != 'N') int sum=0; cout<<setw(15)<<" "<<"班级:" cin>>studn+i.cla; cout<<setw(15)<<" "<<"学号:" cin>>studn+i.num; cout<<setw(15)<<" "<<"某某:" cin>>studn+i.name; cout<<setw(15)<<" "<<"编译原理:" cin>>studn+i.byyl; sum+=zh(studn+i.byyl); cout<<setw(15)<<" "<<"计算机组成原理:" cin>>studn+i.jsjzc; sum+=zh(studn+i.jsjzc); cout<<setw(15)<<" "<<"数据库:" cin>>studn+i.sjk; sum+=zh(studn+i.sjk); cout<<setw(15)<<" "<<"计算机英语:" cin>>studn+i.jsjyy; sum+=zh(studn+i.jsjyy); studn+i.pjf=sum/4;/算出平均分 gets(x); cout<<setw(10)<<" " cout<<"还有要输入的信息吗?(y/n)" cin>>&sign; i+; return(n+i); void Display(Student stud, int n) /输出数据。 int i; cout<<setw(2)<<" "<<" "<<setw(65)<<" "<<endl; cout<<setw(2)<<" "<<"班级 学号 某某 编译原理 计算机组成原理 数据库 计算机英语 平均分"<<endl; cout<<setw(2)<<" " cout<<" "<<setw(2)<<""<<endl; for(i=1;i<n+1;i+) printf(" %-8s%-8s%-9s%-9s%-12s%-9s%-9s%-9dn",studi-1.cla,studi-1.num,studi-1.name,studi-1.byyl,studi-1.jsjzc,studi-1.sjk,studi-1.jsjyy,studi-1.pjf); if(i>1 && i%10=0) cout<<setw(2)<<" "<<" "<<setw(2)<<"-"<<endl; cout<<setw(2)<<" " system("pause"); cout<<setw(2)<<" "<<" "<<setw(2)<<"-"<<endl; cout<<setw(2)<<" " system("pause");void Sort(Student stud,int n) /按平均分排序。 int i,j,a; char t20; for(i=0;i<n-1;i+) for(j=0;j<n-1-i;j+) if(studj.pjf>studj+1.pjf) a=studj.pjf;studj.pjf=studj+1.pjf;studj+1.pjf=a; strcpy(t,studj+1.cla); strcpy(studj+1.cla,studj.cla); strcpy(studj.cla,t); strcpy(t,studj+1.num); strcpy(studj+1.num,studj.num); strcpy(studj.num,t); strcpy(t,studj+1.name); strcpy(studj+1.name,studj.name); strcpy(studj.name,t); strcpy(t,studj+1.byyl); strcpy(studj+1.byyl,studj.byyl); strcpy(studj.byyl,t); strcpy(t,studj+1.jsjzc); strcpy(studj+1.jsjzc,studj.jsjzc); strcpy(studj.jsjzc,t); strcpy(t,studj+1.sjk); strcpy(studj+1.sjk,studj.sjk); strcpy(studj.sjk,t); strcpy(t,studj+1.jsjyy); strcpy(studj+1.jsjyy,studj.jsjyy); strcpy(studj.jsjyy,t); cout<<setw(15)<<" "<<"排序成功!"<<endl;int Insert(Student stud,int n) /插入一条学生信息。 char x10; cout<<setw(2)<<" "<<"班级:" cin>>studn.cla; cout<<setw(2)<<" "<<"学号:" cin>>studn.num; cout<<setw(2)<<" "<<"某某:" cin>>studn.name; cout<<setw(2)<<" "<<"编译原理:" cin>>studn.byyl; cout<<setw(2)<<""<<"计算机组成原理:" cin>>studn.jsjzc; cout<<setw(2)<<" "<<"数据库:" cin>>studn.sjk; cout<<setw(2)<<" "<<"计算机英语:" cin>>studn.jsjyy; gets(x); n+; cout<<setw(2)<<" "<<"插入成功!"<<endl; return(n);int Delete(Student stud,int n) /按学号查找信息,删除信息。 char s20; int i=0,j; cin>>s; while(strcmp(studi.num,s)!=0&&i<n) i+; /*查找判断*/ if(i=n) printf("ttt没有发现该学生资料!n"); /*返回失败信息*/ return(n); for(j=i;j<n-1;j+) /*删除操作*/ strcpy(studj.num,studj+1.num); strcpy(studj.name,studj+1.name); strcpy(studj.cla,studj+1.cla); strcpy(studj.byyl,studj+1.byyl); strcpy(studj.jsjzc,studj+1.jsjzc); strcpy(studj.sjk,studj+1.sjk); strcpy(studj.jsjyy,studj+1.jsjyy); cout<<setw(15)<<" "<<"当前信息已删除成功!"<<endl; /*返回成功信息*/ return(n-1); void Query(Student stud,int n) /按名字查找信息 char s20; int i=0; cout<<setw(15)<<" "<<"输入他她的某某:" cin>>s; while(strcmp(studi.name,s)!=0&&i<n) i+; /*查找判断*/ if(i=n) printf("ttt没有发现该学生资料!n"); /*输入失败信息*/ return; cout<<setw(15)<<" "<<"学号:"<<studi.num<<endl; cout<<setw(15)<<" "<<"编译原理:"<<studi.byyl<<endl; cout<<setw(15)<<" "<<"计算机组成原理:"<<studi.jsjzc<<endl; cout<<setw(15)<<" "<<"数据库:"<<studi.sjk<<endl; cout<<setw(15)<<" "<<"计算机英语:"<<studi.jsjyy<<endl;int Xiugai(Student stud,int n) /修改信息。 n=Delete(stud,n); cout<<setw(15)<<" "<<"输入你要修改的学生资料"<<endl; n=Insert(stud,n); cout<<setw(15)<<" "<<"修改完成"<<endl; return(n);int AddfromText(Student stud, int n) /从文件中读入数据。 int i=0,num; FILE *fp; char filename20; cout<<setw(2)<<" "<<"输入文件名:" cin>>filename; if(fp=fopen(filename,"rb")=NULL) cout<<setw(2)<<" "<<"无法打开文件"<<endl; cout<<setw(2)<<" " system("pause"); return(n); fscanf(fp,"%d",&num); for(;i<num;) fscanf(fp,"%s%s%s%s%s%s%s&d",studn+i.cla,studn+i.num,studn+i.name,studn+i.byyl,studn+i.jsjzc,studn+i.sjk,studn+i.jsjyy,studi-1.pjf); i+; n+=num; fclose(fp); cout<<setw(2)<<" "<<"读入成功!"<<endl; cout<<setw(2)<<" " system("pause"); return(n);void WritetoText(Student stud,int n) /将所有记录写入文件。 int i=0; FILE *fp; char filename20; cout<<setw(2)<<" "<<"将资料输入文件"<<endl; cout<<setw(2)<<" "<<"输入文件名:" cin>>filename; if(fp=fopen(filename,"w")=NULL) cout<<setw(2)<<" "<<"无法打开文件"<<endl; system("pause"); return; fprintf(fp,"%dn",n); for(;i<n;) fprintf(fp,"%-6s%-5s%-5s%-5s%-5s%-5s%-5s%-5dn",studi.cla,studi.num,studi.name,studi.byyl,studi.jsjzc,studi.sjk,studi.jsjyy,studi.pjf); i+; fclose(fp); cout<<setw(2)<<" "<<"输入成功!"<<endl; int b; cout<<setw(2)<<" "<<"请确定是否退出系统:"<<endl; cout<<setw(2)<<" "<<"0.退出系统"<<endl; cout<<setw(2)<<" "<<"1.返回"<<endl; cin>>b; if(b=0) cout<<setw(2)<<" "<<"谢谢使用!"<<endl; cout<<setw(2)<<" " system("pause"); exit(0); void main() /主函数调用。 int n=0; for(;) switch(menu() case 1: cout<<setw(2)<<" "<<"输入学生资料"<<endl; n=Input(stu,n); break; case 2: cout<<setw(2)<<" "<<"输出所有学生资料"<<endl; Display(stu,n); break; case 3: cout<<setw(15)<<" "<<"按某某排序"<<endl; Sort(stu,n); cout<<setw(2)<<" " system("pause"); break; case 4: cout<<setw(2)<<" "<<"插入学生资料"<<endl; n=Insert(stu,n); cout<<setw(2)<<" " system("pause"); break; case 5: cout<<setw(2)<<" "<<"删除学生资料"<<endl; cout<<setw(2)<<" "<<"输入他她的某某:" n=Delete(stu,n); cout<<setw(2)<<" " system("pause"); break; case 6: cout<<setw(2)<<" "<<"查找学生"<<endl; Query(stu,n); cout<<setw(2)<<" " system("pause"); break; case 7: cout<<setw(2)<<" "<<"修改学生资料"<<endl; cout<<setw(2)<<" "<<"输入你要修改的学生的某某:" n=Xiugai(stu,n); system("pause"); break; case 8: cout<<setw(2)<<" "<<"从文件中读入数据"<<endl; n=AddfromText(stu,n); break; case 0: cout<<setw(2)<<" "<<"将所有资料写入文件"<<endl; WritetoText(stu,n); cout<<setw(2)<<" " system("pause"); break; 四 调试与测试上图为选择1时的界面上图为选择2时的界面上图为选择3时的界面上图为选择4时的界面上图为选择5时的界面上图为选择6时的界面上图为选择7时的界面上图为选择8时的界面上图为选择0时的界面五 心得体会本次实验经过同学、组长的帮助才能做到这个份上,对于我来说真的很难得了,我并不把总结看的高,所以我认为我做的还将就吧,还有很多细小的地方感觉有问题,但是时间不那么够了,只能这样了。总的来说,这次的实验,我的收获很大吧,以前很多没学到的东西,在这次能够学到,了解了更多的关于C+的知识。最后,谢谢各位教师的帮助!