




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生学籍信息管理论文第一章 需求分析1.1 问题描述设计学生基本信息和学生成绩基本信息结构体数组。struct student /学生基本信息结构体 char no20; /学号 char name20; /姓名 char sex10; /性别 long domnum; /宿舍号 char tel15; /电话号码 ;student stuN; struct grade char courseno10; /课程编号 char coursename20;/课程名称 int creditHour; /学分 int triGrade; /平时成绩 int examGrade; /卷面成绩 double totalGrade; /综合总评成绩score3;struct studentgrade /成绩单基本信息结构体 char no20; /学号 grade score3; double zongfen;stusN;学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。1.2 软硬件平台本课题采用的环境是 Visual C+ 6.0。Visual C+ 6.0 简称VC 或者VC 6.0是微软推出的一款 C+编译器,将“高级语言”翻译为“机器语言”的程序。Visual C+是一款功能强大的可视化软件开发工具。第二章 整体设计21 程序设计功能模块的划分整个学生学籍信息管理系统可以设计为:数据录入模块void write1(student stu,int);/输入学生基本信息void write2(studentgrade stus,int );/输入学生成绩数据修改模块void rewrite1(student stu,studentgrade stus,int a);/按学生学号改写void rewrite2(student stu,int b);/按学生姓名改写数据查询模块void find1(student stu); /在学生信息文件里查找void find2(studentgrade stus); /在学生成绩文件里查找数据删除模块void del(student stu,studentgrade stus,int len); /删除数据排序模块void arrange1(studentgrade stus); /按总分排序排序void arrange2(studentgrade stus);/按课程成绩排序void arrange3(studentgrade stus);/按卷面成绩排序总体设计流程学生信息管理系统主菜单选择功能按学生信息输入信息输入排序删除信息查询修改显示信息退出按学生成绩输入学生信息学生成绩总分平时成绩卷面成绩删除信息修改信息修改学生成绩22 数据存储方式的处理数据整体存储在文件中,在fstream类中,有一个成员函数open(),用来打开文件,打开的文件使用完成后一定要关闭,fstream提供了成员函数close()来完成此操作,读写文件分为文本文件和二进制文件的读取。要读写二进制数据块,使用成员函数read()和write()成员函数第三章 详细设计3.1 主函数开始主函数只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。流程图: 输入学生人数N输出主菜单输入一个数mm否是是否为0-6输入的数是否为0输入错误请重新输 入0-6是否输出二级菜单输入一个数是否符合要求否是执行菜单要求输出执行结果结束分析:主函数主要实现的功能是选择功能,采用switch语句,实现选择模块,再由一个do-while循环,实现多次选择操作,从而实现查询信息,修改等功能。选择1,信息输入模块,又会出现一个二重选择,相当于二级菜单,选择按学生基本信息输入或者是按学生成绩信息输入。选择2,信息查询功能,二级菜单是按照学生信息或者学生成绩查询。选择3,对应排序功能,再选择排序依据,有总分,课程成绩,卷面成绩。再依次选择。选择4,数据删除功能,同时删除一个学生的信息和成绩。选择5,选择修改功能,有按学生学号和学生姓名修改两个二级菜单。选择6,则是显示功能。退出程序是按0,随即结束此程序。其中有容错处理,要求用户输入的数字是0到6之间的数字。主要代码:int main() /主函数 fstream outfile,infile; student stuN; studentgrade stusN; int m,n,p,q,s; int person; cout输入学生人数(不多于10个):person; do cout-endl; cout 1 输入学生信息 endl; cout 2 查询学生信息 endl; cout 3 排序 endl; cout 4 删除 endl; cout 5 修改学生信息 endl; cout 6 显示信息 endl; cout 0 退出 endl; cout-endl; cout选择要求(06)m; while(m6)/输入不再15之间的数字无效,容错处理 cout输入错误,请重新输入(06)m; switch(m) case 1: cout选择要输入的方法:1按学生信息输入,2按学生成绩输入n; switch(n) case 1: write1 (stu,person); break; case 2: write2 (stus,person); break; break; case 2: cout选择查询的信息:1学生信息,2学生成绩信息q; switch(q) case 1: find1(stu); break; case 2: find2(stus); break; break; case 3: cout选择排序标准:1总分,2课程成绩,3卷面成绩s; switch (s) case 1: arrange1 (stus); break; case 2: arrange2 (stus); break; case 3: arrange3 (stus); break; break; case 4: del (stu,stus,person); break; case 5: cout选择修改的方式:1学生学号,2学生姓名p; switch(p) case 1: rewrite1(stu,stus,person); break; case 2: rewrite2(stu,person); break; break; case 6: read (); while(m!=0); cout退出程序endl; return 0; return 0;32 各个模块(1) 数据录入模块分析:学生基本信息文件可以在磁盘建立,采用写文件方式录入学生成绩基本信息。综合成绩和实得学分通过计算得到。学生信息和学生成绩反别写入两个文件里,选择1,输入学生信息,选择2,输入学生成绩的信息。主要代码:void write1(student stu,int person1)/输入学生基本信息fstream infile,outfile;int i;cout输入学生学号,姓名,性别,宿舍号,电话号码endl;for(i=0;istui.no;;cinstui.sex; cinstui.domnum;cinstui.tel; outfile.open(E:stu.txt,ios:out|ios:binary);if(!outfile)/没有创建成功则显示相应信息coutstu.txt文件不能打开endl;abort();for(int k=0;kperson1;k+)/将内存中从stuk地址开始的seizeof(stuk)的内容写入文件outfile.write(char*)&stuk,sizeof(stuk);outfile.close();/关闭文件(2)查询模块通过菜单选择查询功能,再选择学生基本情况查询和成绩查询,选择1,查询学生信息,再通过选择按照学号,姓名,宿舍号查询,选择2,则是按照学号查询学生成绩信息。主要代码:char num20;cout请输入要查询学生的学号:num;for(int i=0;iN;i+) if(strcmp(num,stui.no)=0) cout学号t姓名t性别t宿舍号t电话号码endl; tstui.sextstui.domnumtstui.telendl;(3)排序模块通过菜单选择排序依据包括总分,课程成绩,卷面成绩,其中课程成绩和卷面成绩又可以分为数学,英语和程序设计三门学科。因此采用多次选择来实现此排序功能。采用排序算法(冒泡、插入、选择等)对数据进行排序并输出结果。主要代码:void arrange2 (studentgrade stus)/按平时成绩排序fstream infile1,outfile1;int i,a,m,n;cout选择要排序的课程名称:1数学,2英语,3程序设计基础a;infile1.open(E:stus.txt,ios:in|ios:binary);if(!infile1) coutstus.txt文件不能打开endl;abort();for(i=0;iN;i+)infile1.read (char*)&stusi,sizeof(studentgrade);for(m=0;mN-1;m+)for(n=m+1;nstusn.scorea-1.triGrade)/升序排序studentgrade temp;/中间变量temp=stusm;stusm=stusn;stusn=temp;cout-排序后为-endl;for(int t=0;tN;t+)cout学号是:stust.no ;cout平时成绩为: ;coutstust.scorea-1.triGradeendl;infile1.close ();/关闭文件(4)删除模块通过菜单选择删除学生的功能,输入要删除学生的学号,则分别在两个文件中查找该学生,然后删除他。流程图:输入学号在基本信息文件中是否找到信息是否删除该学生信息退出查找该学生信息是否找到信息否是退出删除该学生信息提示删除成功输出删除后信息主要代码:char number20;cout输入要删除学生的学号number;for(int t=0;tlen;t+)if(strcmp(number,stut.no)=0)int p;for(p=t;plen;p+)strcpy(stup.no,stup+1.no); strcpy(,stup+1.name);strc.domnum=stup+1.domnum;strcpy(py(stup.sex,stup+1.sex);stupstup.tel,stup+1.tel);len=len-1;cout删除学生信息成功endl;cout删除后:endl;for(int r=0;rN-1;r+)coutstur.no stur.sex stur.domnum stur.telendl;(5)数据修改模块采用读文件方式读入学生成绩基本信息,进行修改后,以写文件方式写回原文件中。修改同样有二级菜单来选择,选择1,是根据学生学号修改的,接着再选择按照1学生信息,2学生成绩来修改。选择2,是按照学生姓名修改的学生基本信息。主要代码:for(k=0;kb;k+) if(strcmp(name,)=0)cout该生本来信息是:endl;cout学号 姓名 性别 宿舍号 电话号码是:endl; cout stuk.no stuk.sex stuk.domnum stuk.telendl; cout输入新的信息包括学生学号,姓名,性别,宿舍号,电话号码: stuk.sexstuk.domnum stuk.tel;cout修改后这个学生的信息是 endl;coutstuk.no stuk.sex stuk.domnum stuk.telendl;(6)显示数据该部分采用文件流的方式输出学生基本信息和学生成绩信息,便于用户查找和浏览。主要代码:infile4.read (char*)&stusi,sizeof(studentgrade);/从文件中读字节到指定的存储器区域。 cout学号 总成绩 endl; coutstusi.no tstusi.zongfen endl; cout课序号 课程名 学分 平时成绩 卷面成绩 综合总评 endl; for(int j=0;j3;j+) coutstusi.scorej.courseno stusi.scorej.coursename stusi.scorej.creditHour stusi.scorej.triGrade stusi.scorej.examGrade stusi.scorej.totalGrade endl;第四章 调试与测试4.1 主函数的调试与测试调试的结果:- 1 输入学生信息 2 查询学生信息 3 排序 4 删除 5 修改学生信息 6 显示信息 0 退出-选择要求(06)2选择查询的信息:1学生信息,2学生成绩信息1选择要查询的方式:1学号,2姓名,3宿舍号码3请输入要查询学生的宿舍号:240学号 姓名 性别 宿舍号 电话号码09 刘荣 女 240主函数中有容错处理的部分:选择要求(06)7输入错误,请重新输入(06)04.2 查询功能的调试与测试测试结果:- 1 输入学生信息 2 查询学生信息 3 排序 4 删除 5 修改学生信息 6 显示信息 0 退出-选择要求(06)2选择查询的信息:1学生信息,2学生成绩信息2选择要查询学生学号05学号,课程编号,课程名称,学分,平时成绩,卷面成绩05 1 数学 3 87 9105 2 英语 3 90 8205 3 程序 3 95 68-4.3排序功能的调试与测试测试结果:- 1 输入学生信息 2 查询学生信息 3 排序 4 删除 5 修改学生信息 6 显示信息 0 退出-选择要求(06)3选择排序标准:1总分,2课程成绩,3卷面成绩2选择要排序的课程名称:1数学,2英语,3程序设计基础1-排序后为-学号是:08 平时成绩为: 85学号是:09 平时成绩为: 85学号是:05 平时成绩为: 87学号是:06 平时成绩为: 87学号是:02 平时成绩为: 87学号是:03 平时成绩为: 87学号是:04 平时成绩为: 88学号是:07 平时成绩为: 91学号是:10 平时成绩为: 92学号是:01 平时成绩为: 984.4删除功能的调试与测试测试结果:- 1 输入学生信息 2 查询学生信息 3 排序 4 删除 5 修改学生信息 6 显示信息 0 退出-选择要求(06)4输入要删除学生的学号01删除学生信息成功删除后:02 杨敏 女 218 1510029684503 贾伟 男 210 1510096545604 金霞 女 510 1634859627605 杨华 男 354 1564589652106 俞小凡 女 356 1536984632107 吴晓娜 女 236 5698463215808 翠屏 女 241 1510029684209 刘荣 女 240 1510029648510 刘阳 男 203除后:学号02课程号1 数学 3 87 98课程号2 英语 3 98 88课程号3 程序 3 95 58学号03课程号1 数学 3 87 69课程号2 英语 3 98 70课程号3 程序 3 87 98学号04课程号1 数学 3 88 68课程号2 英语 3 78 90课程号3 程序 3 79 86学号05课程号1 数学 3 87 91课程号2 英语 3 90 82课程号3 程序 3 95 68学号06课程号1 数学 3 87 70课程号2 英语 3 98 74课程号3 程序 3 83 92学号07课程号1 数学 3 91 79课程号2 英语 3 73 88课程号3 程序 3 78 89学号08课程号1 数学 3 85 90课程号2 英语 3 91 83课程号3 程序 3 92 67学号09课程号1 数学 3 85 75课程号2 英语 3 85 78课程号3 程序 3 84 98学号10课程号1 数学 3 92 78课程号2 英语 3 69 88课程号3 程序 3 78 824.5修改功能的调试与测试测试结果:- 1 输入学生信息 2 查询学生信息 3 排序 4 删除 5 修改学生信息 6 显示信息 0 退出-选择要求(06)5选择修改的方式:1学生学号,2学生姓名1输入要修改的学生的学号04输入要修改的部分:1学生信息,2学生成绩1该生本来信息是:学号 姓名 性别 宿舍号 电话号码是:04 金霞 女 510 16348596276输入新的信息;包括学生的学号,姓名,性别,宿舍号,电话号码:04 金小爽 女 278 12363250056-修改后的信息-学号 姓名 性别 宿舍号 电话号码是:04 金小爽 女 278 123632500564.6显示信息功能的调试与测试测试结果:输入学生人数(不多于10个):10- 1 输入学生信息 2 查询学生信息 3 排序 4 删除 5 修改学生信息 6 显示信息 0 退出-选择要求(06)6输入要显示的学生的人数(即总人数):10学号 姓名 性别 宿舍号 电话01 王丽英 女 365号 姓名 性别 宿舍号 电话02 杨敏 女 218号 姓名 性别 宿舍号 电话03 贾伟 男 210号 姓名 性别 宿舍号 电话04 金霞 女 510 16348596276学号 姓名 性别 宿舍号 电话05 杨华 男 354号 姓名 性别 宿舍号 电话06 俞小凡 女 356号 姓名 性别 宿舍号 电话07 吴晓娜 女 236 56984632158学号 姓名 性别 宿舍号 电话08 翠屏 女 241号 姓名 性别 宿舍号 电话09 刘荣 女 240号 姓名 性别 宿舍号 电话10 刘阳 男 203号 总成绩01 223.1课序号 课程名 学分 平时成绩 卷面成绩 综合总评1 数学 3 98 78 842 英语 3 66 48 53.43 程序 3 78 89 85.7学号 总成绩02 254.8课序号 课程名 学分 平时成绩 卷面成绩 综合总评1 数学 3 87 98 94.72 英语 3 98 88 913 程序 3 95 58 69.1学号 总成绩03 247.5课序号 课程名 学分 平时成绩 卷面成绩 综合总评1 数学 3 87 69 74.42 英语 3 98 70 78.43 程序 3 87 98 94.7学号 总成绩04 244.3课序号 课程名 学分 平时成绩 卷面成绩 综合总评1 数学 3 88 68 742 英语 3 78 90 86.43 程序 3 79 86 83.9学号 总成绩05 250.3课序号 课程名 学分 平时成绩 卷面成绩 综合总评1 数学 3 87 91 89.82 英语 3 90 82 84.43 程序 3 95 68 76.1学号 总成绩06 245.6课序号 课程名 学分 平时成绩 卷面成绩 综合总评1 数学 3 87 70 75.12 英语 3 98 74 81.23 程序 3 83 92 89.3学号 总成绩07 251.8课序号 课程名 学分 平时成绩 卷面成绩 综合总评1 数学 3 91 79 82.62 英语 3 73 88 83.53 程序 3 78 89 85.7学号 总成绩08 248.4课序号 课程名 学分 平时成绩 卷面成绩 综合总评1 数学 3 85 90 88.52 英语 3 91 83 85.43 程序 3 92 67 74.5学号 总成绩09 251.9课序号 课程名 学分 平时成绩 卷面成绩 综合总评1 数学 3 85 75 782 英语 3 85 78 80.13 程序 3 84 98 93.8学号 总成绩10 245.3课序号 课程名 学分 平时成绩 卷面成绩 综合总评1 数学 3 92 78 82.22 英语 3 69 88 82.33 程序 3 78 82 80.8- 1 输入学生信息 2 查询学生信息 3 排序 4 删除 5 修改学生信息 6 显示信息 0 退出-选择要求(06)第五章 总结这个程序实现的效果有:学生基本信息、学生成绩基本信息存入文件当中,查询功能,查询学生基本信息和学生成绩信息,删除功能则是删除一个学生的基本信息和成绩信息,排序功能实现排序操作按学生总分,卷面成绩,平时成绩排序;另外还应该提供键盘式选择菜单以实现功能选择,有多级菜单来现则实现的功能。优点有多级的选择菜单让一些功能更加灵活,使用时也很方便,最主要的缺点则是没有判断的功能,若是没有查询到学生信息,应该回到主菜单。通过这次编程,我发现自己有很多不足之处,有很多基本的编程语言和语法结构功能没有掌握扎实,以致在编程中出现很多的低级错误,也让我发先了基础的重要性,在以后的学习中要掌握好基础知识,才能在这之上完成更多的难的任务和程序。还有就是在编程中要仔细认真,有些错误是可以避免的,比如一些函数的返回值和函数的头文件等,字符串的比较和整形数字的比较时不同的,这些基本信息是我们必须扎实掌握的。参考文献1 王挺, 周会平, 贾丽丽, 徐锡山. C+程序设计(第2版), 清华大学出版社,20102 钱能. C+程序设计教程(修订版). 清华大学出版社,2009附录#include#include#include#include#include#include#include#define N 10struct student /学生基本信息结构体char no20; /学号char name20; /姓名char sex10; /性别long domnum; /宿舍号 char tel15; /电话号码 ;student stuN; struct gradechar courseno10; /课程编号char coursename20;/课程名称int creditHour; /学分int triGrade; /平时成绩int examGrade; /卷面成绩double totalGrade; /综合总评成绩score3;struct studentgrade /成绩单基本信息结构体char no20; /学号grade score3;double zongfen;stusN,temp;void write1(student stu,int);/输入学生基本信息void write2(studentgrade stus,int );/输入学生成绩void rewrite1(student stu,studentgrade stus,int a);/按学生学号改写void rewrite2(student stu,int b);/按学生姓名改写void find1(student stu); /在学生信息文件里查找void find2(studentgrade stus); /在学生成绩文件里查找void del(student stu,studentgrade stus,int len); /删除void arrange1(studentgrade stus); /按总分排序排序void arrange2(studentgrade stus);/按课程成绩排序void arrange3(studentgrade stus);/按卷面成绩排序void read();/读出信息int main() /主函数fstream outfile,infile;student stuN;studentgrade stusN;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全技术监督考试题库及答案解析
- 护理社会学题库及答案解析
- 智能合约安全性测试题及答案解析
- 2025年电力专用高级露点仪行业研究报告及未来行业发展趋势预测
- 2025年二乙基羟胺行业研究报告及未来行业发展趋势预测
- 2025年波形发生器行业研究报告及未来行业发展趋势预测
- 2025年杜鹃花行业研究报告及未来行业发展趋势预测
- 2025年YAG激光脱毛仪行业研究报告及未来行业发展趋势预测
- 家具配件厂计量器具报废审批管理规定
- 家具配件厂销售渠道评估管理规定
- 涉密文件日常管理办法
- 微信社交礼仪见面扫一扫时代25课件
- 药品批发企业《药品经营质量管理规范》
- 协议过户转让协议书模板
- 2025贵州黔西南州兴义市招聘事业单位教师40人备考试题及答案解析
- 2025甘肃省省直文博单位招聘事业编制工作人员26人笔试备考试题及答案解析
- 2025四川省公安厅警务辅助人员招聘(448人)笔试备考试题及答案解析
- 认识社会生活(教案)2025-2026学年统编版《道德与法治》八年级上册
- 一例跌倒护理不良事件分析
- 2025年社区网格员笔试考试题库及答案
- (2025年标准)返聘协议退休返聘协议书
评论
0/150
提交评论