学生学籍信息管理系统.doc_第1页
学生学籍信息管理系统.doc_第2页
学生学籍信息管理系统.doc_第3页
学生学籍信息管理系统.doc_第4页
学生学籍信息管理系统.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录1 需求分析22 整体设计22.1 数据录入模块32.2 数据修改模块32.3 查询模块32.4 删除模块32.5 排序模块33 详细设计43.1 数据录入模块43.1.1 设计学生基本信息和学生成绩基本信息结构体数组。43.1.2 录入学生信息 学生信息录入 将学生信息写入文件53.2数据修改模块63.2.1采用读文件方式读入学生成绩基本信息63.3 查询模块83.4删除模块113.5 排序模块124 调试与测试164.1 数据录入模块164.2数据修改模块164.3查询模块174.4删除模块184.5 排序模块195 总结20附 录211 需求分析在学生学籍信息管理系统中,学生基本信息、学生成绩基本信息要存入文件当中,因而要利用文件的输入输出操作;修改功能要完成对学生成绩信息的修改;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。2 整体设计 学生学籍信息管理系统 菜单数据录入功能模块数据修改功能模块查询功能模块删除功能模块排序功能模块退出学生卷面成绩排序学生成绩信息修改学生基本信息录入学生成绩信息录入学生基本信息查询学生成绩信息查询学生基本信息删除学生成绩信息删除学生总成绩排序学生平时成绩排序学生学籍信息管理系统组织结构图整个学生学籍信息管理系统设计分为数据录入模块、数据修改模块、数据查询模块、数据删除模块和数据排序模块。2.1 数据录入模块学生基本信息文件在磁盘建立,采用写文件方式录入学生基本信息、各门课程的成绩单。综合成绩通过平时成绩和卷面成绩获得计算得到(平时30%,卷面70%)。2.2 数据修改模块采用读文件方式读入学生成绩基本信息,进行修改后,以写文件方式写回原文件中。修改时,首先询问要修改信息学生的姓名或学号,然后选择要修改的内容,并输入新的数据进行修改。2.3 查询模块通过菜单选择查询功能,再选择学生基本情况查询和成绩查询,若选择前者,再通过菜单选择学号、姓名或宿舍号码,然后把查找结果输出。若选择后者,则先查找学号对应的姓名,再查找该学生的课程情况,输出结果。2.4 删除模块通过菜单选择删除学生的功能,输入要删除学生的学号,分别在两个文件中查找该生信息,并删除。2.5 排序模块通过菜单选择排序依据,采用选择排序算法对数据进行排序并输出结果,排序标准包括总分、某课成绩、某课卷面成绩等。3 详细设计3.1 数据录入模块3.1.1 设计学生基本信息和学生成绩基本信息结构体数组。struct stuinfo int stunum; /学号 char name20; /姓名 char sex20; /性别 int domnum; /宿舍号 char tel12; /电话号码; /学生基本信息结构体struct stugragnfo char coursenu3; /课程编号 char coursename10; /课程名称 int credituour; /学分 struct int stunum; /学号 int trigrade; /平时成绩 int examgrade; /卷面成绩 int totalgrade; /综合总评成绩 score_talbeN; /成绩单基本信息结构体成绩包括数学、英语、程序设计基础三门课成绩。将学生基本信息存放在一个文件,成绩信息存放在另一个文件。3.1.2 录入学生信息 学生信息录入录入学生的基本信息(学号、姓名、性别、宿舍号、电话号码);再录入学生的成绩信息(学号、平时成绩、卷面成绩),综合成绩通过平时成绩和卷面成绩获得计算得到(平时30%,卷面70%)。/求每个学生每门课的综合总评成绩for(int k=0;k3;k+)for(int m=0;m5;m+)stedk.score_talbem.totalgrade =stedk.score_talbem.trigrade*0.3+stedk.score_talbem.examgrade*0.7; 将学生信息写入文件学生基本信息文件是在磁盘建立的,应该采用写文件方式录入学生基本信息、各门课程的成绩单。/将学生信息存入文件E:data.txt中outfile.open(E:data.txt,ios:out|ios:binary);/建立进行写入的文件if(!outfile) /没有创建成功则显示相应信息coutdata.txt文件不能打开endl;abort();for(int i=0;iN;i+) /将内存中从studi地址开始的sizeof(studi)的内容写入文件中outfile.write(char*)&studi,sizeof(stuinfo);outfile.close ();/关闭文件/将学生成绩存入E:student.txt中outfile.open(E:student.txt,ios:out|ios:binary);/建立进行写入的文件if(!outfile) /没有创建成功则显示相应信息coutstudent.txt文件不能打开endl;abort();for(int m=0;m3;m+) /将内存中从stedm地址开始的sizeof(stedm)的内容写入文件中outfile.write(char*)&stedm,sizeof(stugragnfo);outfile.close ();/关闭文件3.2数据修改模块3.2.1采用读文件方式读入学生成绩基本信息/将E:student.txt文件中的数据读出放在sted1内infile.open (E:student.txt,ios:in|ios:binary);if(!infile)coutstudent.txt文件不能打开endl;abort();for(int i=0;infile.peek()!= EOF;i+) /将文件中的数据读出放在sted1内infile.read (char*)&sted1i,sizeof(stugragnfo);/从文件中读字节到指定的存储器区域。infile.close ();3.2.2对学生成绩信息进行修改修改时,首先询问要修改信息学生的学号,然后按照菜单选择要修改的内容,并输入新的数据进行成绩的修改。/修改学生成绩信息cout学生成绩信息的修改endlendlendl;coutn; cout请输入要修改成绩的科目:1:修改数学 2:修改英语 3:修改程序 0:退出修改endl; coutm; while(m!=0) docout请输入要修改成绩类型:;cout1:修改平时成绩 2:修改卷面成绩 0:退出修改成绩endl; couta;while(!(a=0) /*输入不在到之间无效*/couta; switch(a) case 1: coutscor1;for(y=0;yN;y+) if(sted1m-1.score_talbey.stunum=n) sted1m-1.score_talbey.trigrade=scor1; sted1m-1.score_talbey.totalgrade =sted1m-1.score_talbey.trigrade*0.3+sted1m-1.score_talbey.examgrade*0.7; break; case 2: coutscor2; for(y=0;yN;y+) if(sted1m-1.score_talbey.stunum=n) sted1m-1.score_talbey.examgrade=scor2; sted1m-1.score_talbey.totalgrade =sted1m-1.score_talbey.trigrade*0.3+sted1m-1.score_talbey.examgrade*0.7; break; while(a!=0);cout请输入要修改成绩的科目:1:修改数学 2:修改英语 3:修改程序 0:退出修改endl; coutm;3.2.3 再以写文件方式写回原文件中3.3 查询模块3.3.1 采用读文件方式读入学生基本信息与成绩基本信息3.3.2 查询学生信息与成绩信息通过菜单选择查询功能,再选择学生基本情况查询和成绩查询,若选择前者,再通过菜单选择学号、姓名或宿舍号码,然后把查找结果输出。若选择后者,则先查找学号对应的姓名,再查找该学生的课程情况,输出结果。/对学生信息进行查找coutendl;cout学生信息的查找endlendlendl;coutnum;docout请选择要查信息的类别: 1:学生基本情况查询 2:成绩查询 0:退出查找a;while(a2)couta;/查找学生基本信息if(a=1)do cout1:查找姓名 2:查找宿舍号3:查找电话0:退出查找endl; coutb; while(b3|b0) /*输入不在到之间无效 coutb; if(b!=0) switch(b) case 1: for(w=0;wN;w+) if(stud2w.stunum=num) cout该学生的姓名为:; endl; v+; if(v=0) cout该学生信息不存在!endl; break; case 2: for(w=0;wN;w+) if(stud2w.stunum=num) cout该学生的宿舍号为:; coutstud2w.domnumendl; v+; if(v=0) cout该学生信息不存在!endl; break; case 3: for(w=0;wN;w+) if(stud2w.stunum=num) cout该学生的电话为:; coutstud2w.telendl; v+; if(v=0) cout该学生信息不存在!endl; break; while(b!=0);/查找学生成绩信息if(a=2)docout1:查找姓名 2:该学生的各科成绩0:退出查找 endl; coutc;while(c2|c0) /*输入不在到之间无效*/coutc;switch(c)case 1: for(w=0;wN;w+)if(stud2w.stunum=num)cout该学生的姓名为:; ;coutendl;v+;if(v=0) cout该学生信息不存在!endl;break; case 2: for(w=0;wN;w+)if(stud2w.stunum=num)cout该学生的各科总评成绩为:;for(int j=0;j3;j+)coutsted2j.coursename; cout ; coutsted2j.score_talbew.totalgrade; cout ;v+;if(v=0) cout该学生信息不存在!endl;coutendl;break;while(c!=0);while(a!=0);3.4删除模块3.4.1采用读文件方式读入学生基本信息与成绩基本信息3.4.2删除信息通过菜单选择删除功能,输入要删除学生的学号,则分别在两个文件中查找该生信息,删除之。/删除学生信息cout学生信息的删除endlendlendl;coutn;coutendl;for(int w=0;wN;w+)if(stud3w.stunum=n)stud3w.stunum=0; stud3w.domnum=0;for(r=0;r20;r+)r=0;for(r=0;r20;r+)stud3w.sexr=0;for(r=0;r12;r+)stud3w.telr=0;for(int t=0;t3;t+)sted3t.score_talben-1.stunum=0; sted3t.score_talben-1.trigrade=0; sted3t.score_talben-1.examgrade=0; sted3t.score_talben-1.totalgrade=0;3.4.3 将信息写回原文件中3.5 排序模块3.5.1 采用读文件方式读入学生基本信息与成绩基本信息3.5.2 进行排序通过菜单选择排序依据,采用选择排序算法对数据进行排序并输出结果,排序标准包括总分、某课成绩、某课卷面成绩等。/对数据进行排序cout学生信息的排序endlendlendl;docout1:按总成绩排序 2:按卷面成绩排序3按平时成绩排序0:退出排序 endl;coutn;while(n3|n0) /*输入不在到之间无效*/coutn;if(n!=0)switch(n)case 1: for(int k=0;kN;k+)funk=sted40.score_talbek.totalgrade+sted41.score_talbek.totalgrade+sted42.score_talbek.totalgrade;for(r=0;rN;r+)min=r;for(int m=r+1;mfunm)min=m;if(min!=r)temp=funr; funr=funmin; funmin=temp;for(u=0;uN;u+)if(funu!=0)coutfunu;cout ;coutendl;break;case 2: for(r=0;r3;r+)for(int i=0;iN;i+)min=i;for(int m=i+1;msted4r.score_talbem.trigrade)min=m;if(min!=i)temp=sted4r.score_talbei.trigrade; sted4r.score_talbei.trigrade=sted4r.score_talbemin.trigrade; sted4r.score_talbemin.trigrade=temp;cout输出排序后的成绩:endl;coutsted4r.coursename ;for(u=0;uN;u+)if(sted4r.score_talbeu.trigrade!=0)coutsted4r.score_talbeu.trigrade;cout ;coutendl;break;case 3:for(int r=0;r3;r+)for(int t=0;tN;t+)min=t;for(int m=t+1;msted4r.score_talbem.examgrade)min=m;if(min!=t)temp=sted4r.score_talbet.examgrade; sted4r.score_talbet.examgrade=sted4r.score_talbemin.examgrade; sted4r.score_talbemin.examgrade=temp;cout输出排序后的成绩:endl;coutsted4r.coursename ;for(u=0;uN;u+)if(sted4r.score_talbeu.examgrade!=0)coutsted4r.score_talbeu.examgrade;cout ;coutendl;break;while(n!=0);4 调试与测试4.1 数据录入模块选择学生信息录入菜单进行录入;然后输入要录入的信息。 - 欢迎进入学生学籍信息管理系统!- 1:学生信息录入 2:学生信息修改 3:学生信息查找 4:学生信息删除 5:学生信息排序 0:退出学籍系统 - 请选择(05): 1学生信息的录入请输入学生的基本信息:请输入第1个学生的学号: 1请输入第1个学生的姓名: 赵请输入第1个学生的性别: 男请输入第1个学生的宿舍号: 11请输入第1个学生的电话: 133*请输入第2个学生的学号:4.2数据修改模块输入学生学号选择要修改的信息进行修改 - 欢迎进入学生学籍信息管理系统!- 1:学生信息录入 2:学生信息修改 3:学生信息查找 4:学生信息删除 5:学生信息排序 0:退出学籍系统 - 请选择(05): 2学生成绩信息的修改请输入要修改学生的学号:1请输入要修改成绩的科目: 1:修改数学 2:修改英语 3:修改程序 0:退出修改请选择(03):2请输入要修改成绩类型:1:修改平时成绩 2:修改卷面成绩 0:退出修改成绩 请选择(02): 2请输入修改后的卷面成绩: 56请输入要修改成绩类型:1:修改平时成绩 2:修改卷面成绩 0:退出修改成绩 请选择(02): 0请输入要修改成绩的科目: 1:修改数学 2:修改英语 3:修改程序 0:退出修改请选择(03):0 4.3查询模块通过输入的学号,选择对学生信息的查找或是对成绩信息的查找。 - 欢迎进入学生学籍信息管理系统!-学生信息的查找请输入要查找的学生的学号:1请选择要查信息的类别: 1:学生基本情况查询 2:成绩查询 0:退出查找 11:查找姓名 2:查找宿舍号 3:查找电话0:退出查找 请选择(03): 1该学生的姓名为: 赵1:查找姓名 2:查找宿舍号 3:查找电话0:退出查找 请选择(03): 2该学生的宿舍号为: 111:查找姓名 2:查找宿舍号 3:查找电话0:退出查找 请选择(03): 3该学生的电话为:133*1:查找姓名 2:查找宿舍号 3:查找电话0:退出查找 请选择(03): 0请选择要查信息的类别: 1:学生基本情况查询 2:成绩查询 0:退出查找 21:查找姓名 2:该学生的各科成绩 0:退出查找 请选择(02): 2该学生的各科总评成绩为: 数学 83 英语 65 程序 881:查找姓名 2:该学生的各科成绩 0:退出查找 请选择(02): 1该学生的姓名为: 赵1:查找姓名 2:该学生的各科成绩 0:退出查找 请选择(02): 04.4删除模块 - 欢迎进入学生学籍信息管理系统!- 1:学生信息录入 2:学生信息修改 3:学生信息查找 4:学生信息删除 5:学生信息排序 0:退出学籍系统 - 请选择(05): 4学生信息的删除请输入要删除学生的学号:1 - 4.5 排序模块首先选择排序菜单,再选择排序标准进行排序,最后输出排序后的信息。 - 欢迎进入学生学籍信息管理系统!- 1:学生信息录入 2:学生信息修改 3:学生信息查找 4:学生信息删除 5:学生信息排序 0:退出学籍系统 - 请选择(05): 5学生信息的排序1:按总成绩排序 2:按卷面成绩排序 3按平时成绩排序 0:退出排序 请选择(03): 1179 219 259 2631:按总成绩排序 2:按卷面成绩排序 3按平时成绩排序 0:退出排序 请选择(03): 2输出排序后的成绩:数学 70 79 86 90输出排序后的成绩:英语 75 89 89 95输出排序后的成绩:程序 76 76 87 901:按总成绩排序 2:按卷面成绩排序 3按平时成绩排序 0:退出排序 请选择(03): 3输出排序后的成绩:数学 68 75 80 85输出排序后的成绩:英语 69 79 92 93输出排序后的成绩:程序 2 80 84 871:按总成绩排序 2:按卷面成绩排序 3按平时成绩排序 0:退出排序 请选择(03): 0 5 总结在学生学籍信息管理系统中,可以实现学生信息的录入、修改、查找、删除、排序等功能,实现了对学生信息的基本管理,但是,因为所学知识有限以及能力的问题,还有很多问题不能解决,还有很多地方有待改善。其中,在删除功能中尽管对信息进行了删除,但是已经删除的信息还是占有内存空间,还需要技术去改善,而且,在排序过程中,虽然对学生成绩进行了排序,但是,学生的信息却没能输出。我用了一周的时间来编写这个程序,虽然过程很艰辛,但是在这期间还是有很多收获的,学到了许多新知识,同时,也找到了以前学习中的缺陷,获益匪浅!在今后的学习中,我会努力学习,在编程中认真细心,因为代码中一个微小的错误,都会导致程序出错,所以,认真的学习态度是必须的!附 录/ 程序设计.cpp : 定义控制台应用程序的入口点。#include #include #include#include #include #include #define N 5int input(); int incorect(); int reserch(); int del(); int output(); struct stuinfo int stunum; /学号 char name20; /姓名 char sex20; /性别 int domnum; /宿舍号 char tel12; /电话号码; /学生基本信息结构体struct stugragnfo char coursenu3; /课程编号 char coursename10; /课程名称 int credituour; /学分 struct int stunum; /学号 int trigrade; /平时成绩 int examgrade; /卷面成绩 int totalgrade; /综合总评成绩 score_talbeN; /成绩单基本信息结构体/学生学籍信息管理系统主函数int main()char ch;docoutsetw(60)- 欢迎进入学生学籍信息管理系统!-endl;coutsetw(40)1:学生信息录入endlsetw(40)2:学生信息修改endlsetw(40)3:学生信息查找endlsetw(40)4:学生信息删除endlsetw(40)5:学生信息排序endlsetw(40)0:退出学籍系统endl; coutsetw(60)-endl;coutch;while(!(ch=0) /*输入不在到之间无效*/coutch; switch(ch) case 1: input(); break; case 2: incorect(); break; case 3: reserch(); break; case 4: del(); break; case 5: output(); break; while(ch!=0);return 0;/对学生的信息进行录入int input()/对学生的信息进行录入cout学生信息的录入endlendlendl;fstream infile,outfile;int m,a;stuinfo studN;stugragnfo sted3;cout请输入学生的基本信息:endl;for( a=0;aN;a+)cout请输入第a+1studa.stunum;cout请输入第a+1;cout请输入第a+1studa.sex;cout请输入第a+1studa.domnum;cout请输入第a+1studa.tel; for(m=0;m3;m+)coutstedm.coursenu;coutstedm.coursename;coutstedm.credituour;for(a=0;aN;a+)coutstedm.score_talbea.stunum; cout请输入该学生的stedm.coursenamestedm.score_talbea.trigrade;cout请输入该学生的stedm.coursenamestedm.score_talbea.examgrade; /求每个学生每门课的综合总评成绩for(int k=0;k3;k+)for(int m=0;m5;m+)stedk.score_talbem.totalgrade =stedk.score_talbem.trigrade*0.3+stedk.score_talbem.examgrade*0.7;/将学生信息存入文件E:data.txt中outfile.open(E:data.txt,ios:out|ios:binary);/建立进行写入的文件if(!outfile) /没有创建成功则显示相应信息coutdata.txt文件不能打开endl;abort();for(int i=0;iN;i+) /将内存中从studi地址开始的sizeof(studi)的内容写入文件中outfile.write(char*)&studi,sizeof(stuinfo);outfile.close ();/关闭文件/将学生成绩存入E:student.txt中outfile.open(E:student.txt,ios:out|ios:binary);/建立进行写入的文件if(!outfile) /没有创建成功则显示相应信息coutstudent.txt文件不能打开endl;abort();for(int m=0;m3;m+) /将内存中从stedm地址开始的sizeof(stedm)的内容写入文件中outfile.write(char*)&stedm,sizeof(stugragnfo);outfile.close ();/关闭文件return 0;/对学生的信息进行修改int incorect()fstream infile,outfile;int n,y;char a;int scor1,scor2,m;stugragnfo sted13,sted23;/将E:student.txt文件中的数据读出放在sted1内infile.open (E:student.txt,ios:in|ios:binary);if(!infile)coutstudent.txt文件不能打开endl;abort();for(int i=0;infile.peek()!= EOF;i+) /将文件中的数据读出放在sted1内infile.read (char*)&sted1i,sizeof(stugragnfo);/从文件中读字节到指定的存储器区域。infile.close ();/修改学生成绩信息cout学生成绩信息的修改endlendlendl;coutn; cout请输入要修改成绩的科目:1:修改数学 2:修改英语 3:修改程序 0:退出修改endl; coutm; while(m!=0) docout请输入要修改成绩类型:;cout1:修改平时成绩 2:修改卷面成绩 0:退出修改成绩endl; couta;while(!(a=0) /*输入不在到之间无效*/couta; switch(a) case 1: coutscor1;for(y=0;yN;y+) if(sted1m-1.score_talbey.stunum=n) sted1m-1.score_talbey.trigrade=scor1; sted1m-1.s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论