版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-. z. - - . .可修编. .课程设计(论文)任务书软件学院学院专业班一、课程设计(论文)学生成绩管理系统的设计与实现二、课程设计(论文)工作自2014年12月22日起至2012年12月27日止三、课程设计(论文) 地点:创新大楼机房四、课程设计(论文)内容要求:1本课程设计的目的训练学生灵活应用所学数据构造知识,独立完成问题分析,结合数据构造理论知识,编写程序求解指定问题;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等根本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力,稳固、深化学生的理论知识,提升编程水平。2课程设计的任务及要求1根本要求:要求从分
2、析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编写上机程序和上机调试等假设干步骤完成题目,最终写出完整的报告;在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率;程序设计语言推荐使用C/C+,程序书写规*,源程序需必要的注释;每位同学需提交可独立运行的程序和规*的课程设计报告。2课程设计论文编写要求理论设计局部以课程设计论文的形式提交,格式必须按照课程设计论文标准格式进展书写和装订;课程设计报告论文包括中文目录、设计任务、需求分析、概要设计、详细设计、编码实现、调试分析、总结、谢辞、参考文献、附录等;设计局部应包含系统功能模块图,调试分析应包括运行截图等。3课
3、程设计评分标准:学习态度:10分;系统设计:20分;编程调试:20分;答复下列问题:20分;论文撰写:30分。4参考文献:严蔚敏,吴伟民. 数据构造(C语言版)M. 清华大学. 2010.3 严蔚敏,吴伟民. 数据构造题集(C语言版)M. 清华大学. 1999.2何钦铭,冯燕等. 数据构造课程设计M. *大学. 2007.85课程设计进度安排准备阶段4学时:选择设计题目、了解目的要求、查阅相关资料;程序模块设计分析阶段4学时:程序概要设计、详细设计;代码编写调试阶段8学时:程序模块代码编写、调试、测试;撰写论文阶段4学时:总结设计任务和设计内容,撰写设计论文。学生签名:年月日6课程设计题目具体
4、要求:能够实现对学生成绩的常用管理功能。采用一定的存储构造对学生成绩进展管理;可以进展成绩的录入、查询、修改、删除等操作;可以查询*门课程的平均分,学生的排名,不同分数段的学生人数及学生信息等;可以查询*学生的各课程分数,总分及学生的班级排名等;可以按*排序输出全部学生的成绩信息、总分及班级排名等。课程设计(论文)评审意见1学习态度10分:优、良、中、一般、差;2系统设计20分:优、良、中、一般、差;3编程调试20分:优、良、中、一般、差;4答复下列问题20分:优、良、中、一般、差;5论文撰写30分:优、良、中、一般、差;6格式规*性及考勤是否降等级:是、否评阅人:周娟职称:讲师2014年12
5、 月 28日目录 TOC o 1-3 h z u HYPERLINK l _Toc407033822第1章设计任务分析 PAGEREF _Toc407033822 h 3HYPERLINK l _Toc407033823第2章功能实现详细设计 PAGEREF _Toc407033823 h 3HYPERLINK l _Toc407033824第3章功能测试 PAGEREF _Toc407033824 h 3HYPERLINK l _Toc407033825第4章调试与改良 PAGEREF _Toc407033825 h 3HYPERLINK l _Toc407033826第5章小结 PAGER
6、EF _Toc407033826 h 3HYPERLINK l _Toc407033827第6章源代码 PAGEREF _Toc407033827 h 3-. z.第1章设计任务分析需求与功能分析需求分析学生成绩管理系统是一个教育单位不可缺少的局部它的内容对于学校的决策者和管理者来说都至关重要所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。以前各个学校的学生成绩管理根本上都是靠手工进展,但随着各个学校的规模增大,有关学生成绩管理工作所涉及的数据量也越来越大,有的学校不得不靠增加人力、物力来进展学生成绩管理。这种管理方式存在着许多缺点,如:效率低、*性差等,另外其所用时间长,产
7、生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。如今学校的学生越来越多,成绩管理的工作量越来越大,手工管理成绩的弊端也越来越明显。作为计算机应用的一局部,使用计算机对学生档案信息进展管理具有手工管理所无法比较的优点,如检索迅速、查找方便、可靠性高、存储量大、*性好、寿命长、本钱低等,能够极大地提高学生档案管理的效率。所以我想借本次课程设计之际,设计一个简易的学生成绩管理系统。功能分析输入输出的形式和输入值的*围首先输入学生个数按回车键,然后按照提示选择输入学生信息并将学生信息保存在文本文档中,具体对学生信息进展插入删除查询操作时,将保存在文本文档中的学生信息提取出来保存在自己定义
8、的数据构造中,然后再对该数据构造进展操作,所有操作完成后或者在相应的命令后再将学生信息保存到文本文档中。输入数据类型主要是char、int、float等数据类型,输入内容包括*、根底会计成绩、大学英语成绩、数据构造成绩、总分、平均分等数据。输出的形式为*、根底会计成绩、大学英语成绩、数据构造成绩、总分、平均分等数据。程序所到达的功能数据输入功能,输入的数据能最终保存在文件中;数据删除功能,能最终从文件中删除;多种排序功能,根据自己设计的数据构造,设计排序算法;多种查询功能如按*查询、按*查询等及输出功能;学生信息的修改比方修改学生*,修改学生*门课程的成绩等;其他功能如各种统计,统计每个学生所
9、有课程的平均分,统计*门课程的所有学生的平均分等等第2章功能实现详细设计库函数先编入系统所需的库函数,使程序可运行。#include#include#include#include /主要是对cin,cout之类的一些操纵运算,是I/O流控制头文件#include /文件和标准控制台的输入输出菜单界面的设计主菜单的设计在主界面中包括输入学生信息并保存到文件 读取文件并输出学生信息 按*查询 按*查询 按*修改信息 插入学生信息 按*删除信息 各科成绩排序 按总分降序排序 各科成绩统计 分数段查找 按*排序 退出等功能。每个函数体如下:void input(Stu *r); /输入void ou
10、tput(Stu *r); /输出void searchnum(Stu *r); /按*查找void searchname(Stu *r); /按*查找void modify(Stu *r); /修改学生信息Stu *insert(Stu *r); /插入信息void erase(Stu *r); /按*删除信息void sortmenu(); /排序菜单void sortsum(Stu *r); /按总分降序排序void stat(Stu *r); /统计各科总分和平均分信息void intmenu(); /分数段查找菜单图2.2.1 主菜单界面 在此界面中用户可以选择要操作的选项,回车之后
11、即进展相关操作或进入相关二级菜单void sortnum(Stu *r); /按*排序排序菜单的设计在排序菜单中包括按根底会计成绩排序 按大学英语成绩排序 按数据构造成绩排序 返回上级菜单等功能。每个函数体如下:void sort_BA(Stu *r); /根底会计成绩排序void sort_UE(Stu *r); /大学英语成绩排序图2.2.2 排序菜单界面void sort_DS(Stu *r); /数据构造成绩排序分数段查找菜单的设计在分数段查找菜单中包括根底会计分数段查找 大学英语分数段查找数据构造分数段查找返回上级菜单等功能。每个函数体如下:void int_BA(Stu *r);
12、/根底会计分数段查找void int_UE(Stu *r); /大学英语分数段查找图2.2.3 分数段查找菜单界面void int_DS(Stu *r); /数据构造分数段查找详细设计系统流程图输入学生人数主菜单界面输入学生成绩输出学生成绩按*查询成绩按*查询成绩修改学生信息各科成绩排序按*删除信息插入学生信息按总分降序排序各科成绩统计分数段查找按*排序退出退出各功能模块的设计主函数模块用函数int main()来实现,主要功能是显示菜单,让用户根据提示选择操作,首先定义一个指针数组全局使用Stu *p=(Stu *)new Stunum; 此处num指学生个数,并不是*,这里应用了do-wh
13、ile和switch-case语句来进展循环选择,最后假设用户选择13则保存记录并退出循环。学生记录输入模块用函数void input(Stu *r)来实现,在主菜单项选择择1进入输入模块之后用户需要输入所需学生个数的学生信息,包括*、各科成绩等,输入完成之后会返回主菜单。本函数根据设计的条件判断循环来判断是否有重复*输入。本函数还将算出学生的总分与平均分并按*的默认顺序将其与输入的原始学生记录保存的文件中去。学生记录输入模块用函数void output(Stu *r)来实现,在系统已经录入了学生资料的前提下,调用本函数可以输出学生资料。其中setw()控制域宽,括号里整型数据的数值代表域宽的
14、字符数。按*查找学生记录模块用函数void searchnum(Stu *r)来实现,首先提示用户输入要查找的学生*,再用for循环语句和if判断语句进展循环判断来进展查找,if(rm.num=n)表示找到学生记录,然后显示学生记录并跳出循环,if(rm.num!=n)表示未找到学生记录并输出提示该*不存在!。按*查找学生记录模块用函数void searchname(Stu *r)来实现,首先提示用户输入要查找的学生*,再用for循环语句和if判断语句进展循环判断来进展查找,if(0=n0) 表示找到学生记录,然后显示学生记录并跳出循环,if(0!=n0)表示未找到
15、学生记录并输出提示该*不存在!。按*修改学生信息模块用函数void modify(Stu *r)来实现,首先提示用户输入要修改信息的学生序号,再通过if条件语句进展判断输入的*是否存在,if(rm.num!=n)表示输入的学生*不存在,输出提示该*不存在,再利用begin标记和goto语句重新开场循环并提示用户重新输入要修改的学生*。if(rm.num=n)假设输入的学生*存在,则先输出修改前的学生信息,此处有一个while循环语句和switch-case选择语句,用来选择修改学生的*一科成绩,并让用户选择是否继续进展修改。最后将修改正后的记录写入文件中,并输出提示文件已修改并写入。插入学生信
16、息模块用函数Stu *insert(Stu *r)来实现,主要功能是添加学生资料。在此模块中定义了另一个指针数组:Stu *y=(Stu *)new Stu(num+1);用来存放新添加的学生记录。再利用for循环语句进展输入新学生记录,最后输出一个提示语句让用户判断是否继续输入,假设用户输入Y或y则继续输入,否则将返回主菜单。删除学生记录模块用函数void erase(Stu *r)来实现,首先对文件进展读取,之后的if判断语句根据用户输入的*来显示删除前的信息记录,然后用for循环语句循环把后一位的信息提前一位,整体数量建议,来进展全局变量的修改,之后再把修改正后的信息记录保存到文件中去。
17、各科成绩降序与*冒泡排序模块用函数void sort_BA(Stu *r),void sort_UE(Stu *r),void sort_DS(Stu *r)三个函数来实现,主要功能是利用用户保存在文件的学生记录按单科成绩进展降序排序。首先对文件进展读取,然后进展冒泡排序。冒泡排序有两个优点,一是代码比较容易,二是具有稳定性。这里的稳定性是指原序列中一样两元素的相对顺序仍然保持到排序后的序列。冒泡排序时进过n-1趟子排序完成的,第i趟子排序从第1个数至第n+1个数,假设第i个数比后一个数大则交换两数。排序之后,将排序之后的结果写入文件,再读取文件的时候,输出的就是按单科成绩排序后的结果。总分降
18、序排序模块用函数void sortsum(Stu *r)来实现,主要功能是利用保存在文件的学生总分进展排序。首先对文件进展读取,然后进展选择排序。其根本思想是:n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:初始状态:无序区为R1.n,有序区为空。第1趟排序:在无序区R1.n中选出关键字最小的记录Rk,将它与无序区的第1个记录R1交换,使R1.1和R2.n分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。第i趟排序第i趟排序开场时,当前有序区和无序区分别为R1.i-1和R(i.n。该趟排序从当前无序区中选出关键字最小的记录 Rk,将它与无序区的第1个记录R交换
19、,使R1.i和R分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。各科成绩统计模块用函数void stat(Stu *r)来实现,主要功能是计算各科总分和各科平均分。各科分数段查找模块用函数void int_BA(Stu *r),void int_UE(Stu *r),void int_DS(Stu *r),void intsum(Stu *r);四个函数实现,首先提示用户输入要查找的单科成绩或总分的上限与下限,然后通过for循环语句遍历学生记录找到符合条件的学生并输入相应学生记录。第3章功能测试图3-1 在主菜单项选择择1开场输入学生信息输入学生人数之后进入主菜单界面,在主菜单
20、项选择择1开场输入学生信息。图3-2 输入学生信息完成后的界面输入完成后的界面:Student.t*t:1 J 91.0 92.0 93.0 276.0 92.02 RS 87.0 88.0 89.0 264.0 88.03 TT 93.0 94.0 95.0 282.0 94.04 DB 84.0 85.0 86.0 255.0 85.05 AJS 92.0 93.0 94.0 279.0 93.0图3-3 输出文件内的学生信息返回主菜单后选择2读入文件信息并输出。图3-4 按*查找学生信息返回主菜单后选择3按*查找学生信息。图3-5 按学生*查找返回主菜单后选择4按*查找学生信息。图3-6
21、 按*修改学生信息返回主菜单后选择5按*修改学生信息。图3-7 修改完成后的界面修改完成后的界面:Student.t*t:1 J 91.0 92.0 93.0 276.0 92.02 RS 87.0 88.0 89.0 264.0 88.03 TT 93.0 94.0 95.0 282.0 94.04 DB 84.0 85.0 86.0 255.0 85.05 AJS 92.0 93.0 94.0 279.0 93.0图3-8 插入学生信息返回主菜单后选择6插入学生信息。Student.t*t:1 J 91.0 92.0 93.0 276.0 92.02 RS 87.0 88.0 89.0 2
22、64.0 88.03 TT 93.0 94.0 95.0 282.0 94.04 DB 84.0 85.0 86.0 255.0 85.05 AJS 92.0 93.0 94.0 279.0 93.06 HM 99.0 98.0 97.0 294.0 98.0图3-9 按*删除学生记录返回主菜单后选择7,按*删除学生记录。student.t*t:1 J 91.0 92.0 93.0 276.0 92.02 RS 87.0 88.0 89.0 264.0 88.03 TT 93.0 94.0 95.0 282.0 94.04 DB 84.0 85.0 86.0 255.0 85.05 AJS 9
23、2.0 93.0 94.0 279.0 93.0图3-10 排序菜单返回主菜单后选择8进入排序菜单,通过选择1-3选择单科成绩进展排序。图3-11 排序完成的提示以选择1根底会计成绩排序为例:图3-12 按根底会计学成绩降序对学生记录进展排序的排序结果排序结果:Student.t*t:3 TT 93.0 94.0 95.0 282.0 94.05 AJS 92.0 93.0 94.0 279.0 93.01 J 91.0 92.0 93.0 276.0 92.02 RS 87.0 88.0 89.0 264.0 88.04 DB 84.0 85.0 86.0 255.0 85.0图3-13 按
24、总分降序排序返回菜单后选择9按总分降序对学生记录进展排序。图3-14 按总分降序排序对学生记录排序的结果排序结果:Student.t*t3 TT 93.0 94.0 95.0 282.0 94.05 AJS 92.0 93.0 94.0 279.0 93.01 J 91.0 92.0 93.0 276.0 92.02 RS 87.0 88.0 89.0 264.0 88.04 DB 84.0 85.0 86.0 255.0 85.0图3-15 各科总分和平均分的统计返回主菜单后选择10对各科总分以及平均分进展统计。图3-16 分数段查找菜单返回主菜单后选择11进入分数段查找菜单对学生记录的单科
25、成绩或总成绩进展分数段查找。图3-17 数据构造分数段查找结果以数据构造为例:图3-18 提示用户对学生记录已完成按*排序返回主菜单之后选择12对学生记录进展按*排序。图3-19 按学生*对学生记录进展排序的排序结果排序结果:student.t*t:1 J 91.0 92.0 93.0 276.0 92.02 RS 87.0 88.0 89.0 264.0 88.03 TT 93.0 94.0 95.0 282.0 94.04 DB 84.0 85.0 86.0 255.0 85.05 AJS 92.0 93.0 94.0 279.0 93.0第4章调试与改良程序编译连接通过后在调试过程中以及
26、本报告的编写过程中遇到了不少的问题,经过几天的调试与修改大局部问题已经成功解决。遇到并以解决的局部问题如下:在多处需要用户输入数字时没有设置数字*围或者没有限定用户只能输入数字,导致用户在输入错误时出现越界问题或者程序崩溃。以用户在主菜单输入数字选择操作时为例,解决方法为利用while循环语句进展循环判断,在用户输入越界的数字或者输入非数字时输出错误语句并利用cin.clear();与cin.sync();语句去除错误状态与输入流再提示用户重新输入。插入学生记录时没有进展新插入的学生*是否重复的检查,利用for循环语句与if判断语句进展循环判断,在用户输入重复的学生*时输出提示该*已存在并利用
27、cin.clear();与cin.sync();语句去除错误状态与输入流再提示用户重新输入。修改学生记录函数void modify(Stu *r)没有判断用户输入的*是否存在,初次采用修改方式是增加一个if判断语句if(rm.serial!=n)并将此这个判断过程放在了for(m=0;mnum;m+)的大循环内,思考后发现在m遍历了一次num之后再进展此判断必定输出错误提示,并跳到定义的begin标记处,陷入了死循环。思考过后定义一个新变量l,在每次满足if(rm.serial!=n)时自增1,在循环完毕以后假设l的值等于num则输出错误提示并提示用户重新输入。修改正后发现在执行完了修改成绩之
28、后仍会输出错误提示。最后定义了end标记,在用户输入了一个存在的*之后执行修改成绩完毕后直接利用goto语句跳到end标记处。第5章小结通过本次课程设计,我稳固了局部本学期以及上学期所学的理论知识,有了一些新的理解与体会。对于一些平时似懂非懂的知识,在这次课程设计中也解决了一些困惑,虽然还是不能够全面的理解,但是已经有了进步。在课程设计中遇到不少困难,包括上一章提及的几个问题与已经解决的一些小问题,通过查阅资料、与同学讨论,在应用课本的前提下。拓展课外知识,根本完成了本次课程设计,虽然其中还有许多缺乏之处,但是从中我学到了许多东西,懂得了不能拘泥于课本上的知识形式,应该对其灵活运用。本次课程设
29、计使我认识到自己对知识的掌握不够全面,而且感觉到我们在学习专业知识的同时还需要加强对自己逻辑性思维的培养以及对其他方面知识的学习,逻辑性思维对于能不能写出一个好的算法以及排除代码错误方面至关重要。在编程的过程中我又重新复习了本学期的数据构造以及上学期的C+程序设计的课本,对一些以前学过的知识有了更深的理解,对一些以前没学过的知识有了初步的认识,当自己把程序一点点完善时让我对学好数据构造这门课程更有信心了,以前一直感觉枯燥难学的数据构造,在编程的过程中好似显得不则高深了。在以后的学习过程中,我一定会认真负责地对待课本中的知识点,进一步充实、提高自己。争取在不断的练习中提高自己的层次。第6章源代码
30、#include#include#include#include#includeusing namespace std;struct Stuint serial;char name50;float BA_score; /根底会计成绩float UE_score; /大学英语成绩float DS_score; /数据构造成绩float sum; /总分float average; ;/平均分int num=0;int ch,choice;void input(Stu *r); /输入void output(Stu *r); /输出void menu(); /菜单界面void sortmenu()
31、; /排序菜单void intmenu(); /分数段查找菜单void searchnum(Stu *r); /按*查找void searchname(Stu *r); /按*查找void modify(Stu *r); /修改学生信息void erase(Stu *r); /按*删除信息void sort_BA(Stu *r); /根底会计成绩排序void sort_UE(Stu *r); /大学英语成绩排序void sort_DS(Stu *r); /数据构造成绩排序void sortnum(Stu *r); /按*排序void sortsum(Stu *r); /按总分降序排序void
32、stat(Stu *r); /统计各科总分和平均分信息Stu *insert(Stu *r); /插入信息void int_BA(Stu *r); /根底会计分数段查找void int_UE(Stu *r); /大学英语分数段查找void int_DS(Stu *r); /数据构造分数段查找void intsum(Stu *r); /总分分数段查找int main()coutnum; while(!cin) cout输入错误!; cin.clear(); cin.sync(); coutnum;Stu *p=(Stu *)new Stunum;int m;menu();do cinm; whi
33、le(!cin|m13) cout输入错误!; cin.clear(); cin.sync(); coutm; begin:switch(m)case 1:input(p);menu();break;case 2: output(p); menu();break;case 3: searchnum(p); menu();break;case 4:searchname(p);menu();break;case 5:modify(p);menu();break;case 6:p=insert(p);menu();break; case 7:erase(p);menu();break;case 8:
34、sortmenu();docinch; while(!cin|ch4) cout输入错误!; cin.clear(); cin.sync(); coutch;switch(ch)case 1:system(cls);sortmenu();sort_BA(p);output(p);sortmenu();break;case 2:system(cls);sortmenu();sort_UE(p);output(p);sortmenu();break;case 3:system(cls);sortmenu();sort_DS(p);output(p);sortmenu();break;while(c
35、h!=4);system(cls);menu();break;case 9:sortsum(p);output(p);menu();break;case 10:stat(p);menu();break;case 11:intmenu();docinchoice;while(!cin|choice6) cout输入错误!; cin.clear(); cin.sync(); coutchoice;switch(choice)case 1:system(cls);intmenu();int_BA(p);intmenu();break;case 2:system(cls);intmenu();int_
36、UE(p);intmenu();break;case 3:system(cls);intmenu();int_DS(p);intmenu();break;case 4:system(cls);intmenu();intsum(p);intmenu();break;while(choice!=5);system(cls);menu();break;case 12:system(cls);sortnum(p);output(p);menu();break;case 13:e*it(0); default:while(m12|!cin) cout输入有误!请重新输入m; goto begin;whi
37、le(1);void menu()coutendl; coutendl; cout菜单栏*nendl; cout * 输入学生信息并保存到文件 读取文件并输出学生信息 *endl; cout * 按*查询 按*查询 *endl; cout * 修改学生信息 插入学生信息 *endl; cout * 按*删除信息 各科成绩排序 *endl; cout * 按总分降序排序 各科成绩统计 *endl; cout * 分数段查找 按*排序 *endl; cout * 退出 *endl; cout *nendl; cout请选择:endl;void sortmenu()coutendl; coutend
38、l; cout 排序菜单 *nendl; cout * 各科成绩排序 *endl; cout * 根底会计 大学英语 *endl; cout * 数据构造 返回上级 *endl; cout *nendl; cout请选择:endl;void intmenu()coutendl; coutendl; cout 分数段查找菜单 *nendl; cout * 各科及总分分数段查找 *endl; cout * 根底会计 大学英语 *endl; cout * 数据构造 总分查找 *endl;cout * 返回上级 *endl; cout *nendl; cout请选择:endl;void input(S
39、tu *r)FILE *fp;int n=0;int i;int t=0;coutendl 请输入学生信息 endl;for(i=0;inum;i+)cout请输入第i+1ri.serial;while(!cin|ri.serial0) cout输入错误或序号不合理!; cin.clear(); cin.sync(); cout请重新输入第i+1ri.serial; if(i=1) for(n=0;ni;n+)if(rn.serial=ri.serial)cout该*已存在!endl;t=1; if(t=1)i-;t=0;continue;;coutri.BA_score
40、;while(!cin|ri.BA_score100|ri.BA_score0) cout输入错误或成绩不合理!; cin.clear(); cin.sync(); coutri.BA_score; coutri.UE_score;while(!cin|ri.UE_score100|ri.UE_score0) cout输入错误或成绩不合理!; cin.clear(); cin.sync(); coutri.UE_score; coutri.DS_score;while(!cin|ri.DS_score100|ri.DS_score0) cout输入错误或成绩不合理!; cin.clear();
41、 cin.sync(); coutri.DS_score; ri.sum=ri.BA_score+ri.UE_score+ri.DS_score;ri.average=(ri.BA_score+ri.UE_score+ri.DS_score)/3;fp=fopen(student.t*t,w+); if(!fp) cout文件不能翻开endl; e*it(0); for(n=0;ni;n+) fprintf(fp,%d %s %.1f %.1f %.1f %.1f %.1f,rn.serial,,rn.BA_score,rn.UE_score,rn.DS_score,rn.sum
42、,rn.average); fprintf(fp,n); fclose(fp); cout文件已经写入!endl; cout按任意键以返回主菜单0)FILE *fp;if(fp=fopen(student.t*t,r)=NULL) cout文件不能翻开endl;e*it(0); for(int n=0;nnum;n+)fscanf(fp,%d%s%f%f%f%f%f,&rn.serial,&,&rn.BA_score,&rn.UE_score,&rn.DS_score,&rn.sum,&rn.average);fclose(fp);cout文件已经读入endl;cout 学生信息
43、如下endl; cout*setw(6)setw(10)根底会计setw(10)大学英语setw(10)数据构造setw(6)总分setw(10)平均分endl; coutendl; for(m=0;mnum;m+) coutrm.serialsetw(8)setw(10)rm.BA_scoresetw(10)rm.UE_scoresetw(10)rm.DS_scoresetw(7)rm.sumsetw(9)rm.averageendl; cout00endl; else cout未输入任何信息!endl;cout按任意键以返回0)FILE *fp;if(fp=fopen(stu
44、dent.t*t,r)=NULL) cout文件不能翻开endl;e*it(0); coutn;int m; for(m=0;mnum;m+)if(rm.serial=n)coutendl;cout 要查找的信息如下 endl; cout*setw(6)setw(10)根底会计setw(10)大学英语setw(10)数据构造setw(6)总分setw(10)平均分endl; coutrm.serialsetw(8)setw(10)rm.BA_scoresetw(10)rm.UE_scoresetw(10)rm.DS_scoresetw(7)rm.sumsetw(9)rm.aver
45、ageendl; break;if(rm.serial!=n)cout该*不存在!endl;else cout未输入任何信息!endl; cout按任意键以返回主菜单0)int m; FILE *fp;if(fp=fopen(student.t*t,r)=NULL)cout文件不能翻开endl;e*it(0);coutn;for(m=0;mnum;m+)if(0=n0) coutendl;cout 要查找的信息如下 endl; cout*setw(6)setw(10)根底会计setw(10)大学英语setw(10)数据构造setw(6)总分setw(10)平均分endl; cou
46、trm.serialsetw(8)setw(10)rm.BA_scoresetw(10)rm.UE_scoresetw(10)rm.DS_scoresetw(7)rm.sumsetw(9)rm.averageendl; break; if(0!=n0)cout该*不存在!endl;else cout未输入任何信息!endl;cout按任意键以返回主菜单0)int n;system(cls);coutn;for(m=0;mnum;m+)if(n=rm.serial)int j;coutendl;cout 修改前的信息如下 endl; cout*setw(6)setw(
47、10)根底会计setw(10)大学英语setw(10)数据构造setw(6)总分setw(10)平均分endl; coutrm.serialsetw(8)setw(10)rm.BA_scoresetw(10)rm.UE_scoresetw(10)rm.DS_scoresetw(7)rm.sumsetw(9)rm.averageendl; coutendl; while(choice=Y|choice=y) cout 可以修改的工程如下 nendl;coutttt 1.修改学生的根底会计成绩记录nendl;coutttt 2.修改学生的大学英语成绩记录nendl;coutttt 3
48、.修改学生的数据构造成绩记录nendl;coutj;while(!cin|j3) cout输入错误!; cin.clear(); cin.sync(); coutj;switch(j)case 1:coutrm.BA_score;break;case 2:coutrm.UE_score;break;case 3:coutrm.DS_score;break; coutchoice; rm.sum=rm.BA_score+rm.UE_score+rm.DS_score; rm.average=(rm.BA_score+rm.UE_score+rm.DS_score)/3; goto end;if(
49、rm.serial!=n) cout该*不存在!endl; cin.clear(); cin.sync(); cout按任意键开场重新输入; getch(); goto begin;else cout未输入任何信息!endl;if(fp=fopen(student.t*t,w)=NULL)cout文件不能翻开endl;e*it(0);end:for(n=0;nnum;n+)fprintf(fp,%d %s %.1f %.1f %.1f %.1f %.1f,rn.serial,,rn.BA_score,rn.UE_score,rn.DS_score,rn.sum,rn.averag
50、e); fprintf(fp,n); fclose(fp); cout文件已修改并写入!endl;cout按任意键以返回主菜单endl;getch();system(cls);Stu *insert(Stu *r)FILE *fp;int m;char n;doif(fp=fopen(student.t*t,r)=NULL)cout文件不能翻开endl;e*it(0);for(int o=0;onum;o+)fscanf(fp,%d%s%f%f%f%f%f,&ro.serial,&,&ro.BA_score,&ro.UE_score,&ro.DS_score,&ro.sum,&r
51、o.average);Stu *y=(Stu *)new Stunum+1;for(m=0;mnum;m+)ym=rm;r=y;coutrnum.serial;for(int k=0;knum;k+) if(rk.serial=rm.serial) cout该*已存在!endl; cin.clear(); cin.sync(); cout请重新输入:rnum.serial;;coutrnum.BA_score;coutrnum.UE_score;coutrnum.DS_score;rnum.sum=rnum.BA_score+rnum.UE_score+rnum.DS
52、_score; rnum.average=(rnum.BA_score+rnum.UE_score+rnum.DS_score)/3;num+; cout是否继续输入?Y/Nn; while(n=Y|n=y);if(fp=fopen(student.t*t,w+)=NULL)cout文件不能翻开endl;e*it(0);for(n=0;nnum;n+)fprintf(fp,%d %s %.1f %.1f %.1f %.1f %.1f,rn.serial,,rn.BA_score,rn.UE_score,rn.DS_score,rn.sum,rn.average); fprintf
53、(fp,n);fclose(fp);cout文件已经写入endl;cout按任意键以返回主菜单0)if(fp=fopen(student.t*t,r)=NULL) cout文件不能翻开endl;e*it(0);for(int o=0;onum;o+)fscanf(fp,%d%s%f%f%f%f%f,&ro.serial,&,&ro.BA_score,&ro.UE_score,&ro.DS_score,&ro.sum,&ro.average);int n,t=0;coutn;for(int m=0;mnum;m+) if(rm.serial=n)char j;coutendl;co
54、ut 要删除学生的信息如下 endl; cout*setw(6)setw(10)根底会计setw(10)大学英语setw(10)数据构造setw(6)总分setw(8)平均分endl; coutrm.serialsetw(6)setw(7)rm.BA_scoresetw(10)rm.UE_scoresetw(10)rm.DS_scoresetw(8)rm.sumsetw(6)rm.averageendl; coutendl; cout确定删除?Y/N)j;if(j=Y|j=y)for(int l=m;lnum;l+)rl=rl+1;num-;t=1; else cout学生记录未
55、删除!endl; goto end;if(fp=fopen(student.t*t,w+)=NULL)cout文件不能翻开!endl;e*it(0); for(n=0;nnum;n+)fprintf(fp,%d %s %.1f %.1f %.1f %.1f %.1f,rn.serial,,rn.BA_score,rn.UE_score,rn.DS_score,rn.sum,rn.average); fprintf(fp,n);fclose(fp);cout文件已经写入endl;if(t=0) cout该*不存在!endl;else cout未输入任何信息!endl; end:co
56、ut按任意键以返回主菜单0) if(fp=fopen(student.t*t,r)=NULL)cout文件不能翻开!endl;e*it(0);for(int n=0;nnum;n+)fscanf(fp,%d%s%f%f%f%f%f,&rn.serial,&,&rn.BA_score,&rn.UE_score,&rn.DS_score,&rn.sum,&rn.average);for(int k=0;knum-1;k+)for(int m=0;mnum-k;m+) Stu ma*;if(rm.BA_scorerm+1.BA_score)ma*=rm+1;rm+1=rm;rm=ma*
57、;cout排序完毕endl;if(fp=fopen(student.t*t,w)=NULL) cout文件不能翻开!endl;e*it(0); for(int l=0;lnum;l+)fprintf(fp,%d %s %.1f %.1f %.1f %.1f %.1f,rl.serial,,rl.BA_score,rl.UE_score,rl.DS_score,rl.sum,rl.average); fprintf(fp,n);fclose(fp);cout文件已经写入endl;else cout未输入任何信息!endl;cout按任意键以显示排序结果0)if(fp=fopen(s
58、tudent.t*t,r)=NULL)cout文件不能翻开!endl;e*it(0); for(int n=0;nnum;n+)fscanf(fp,%d%s%f%f%f%f%f,&rn.serial,&,&rn.BA_score,&rn.UE_score,&rn.DS_score,&rn.sum,&rn.average);for(int k=0;knum-1;k+)for(int m=0;mnum-k;m+)Stu ma*;if(rm.UE_scorerm+1.UE_score)ma*=rm+1;rm+1=rm;rm=ma*;cout排序完毕endl;if(fp=fopen(st
59、udent.t*t,w)=NULL)cout文件不能翻开!endl;e*it(0); for(int l=0;lnum;l+)fprintf(fp,%d %s %.1f %.1f %.1f %.1f %.1f,rl.serial,,rl.BA_score,rl.UE_score,rl.DS_score,rl.sum,rl.average); fprintf(fp,n);fclose(fp);cout文件已经写入endl;else cout未输入任何信息!endl;cout按任意键以显示排序结果0)if(fp=fopen(student.t*t,r)=NULL)cout文件不能翻开
60、!endl;e*it(0);for(int n=0;nnum;n+)fscanf(fp,%d%s%f%f%f%f%f,&rn.serial,&,&rn.BA_score,&rn.UE_score,&rn.DS_score,&rn.sum,&rn.average);for(int k=0;knum-1;k+)for(int m=0;mnum-k;m+)Stu ma*;if(rm.DS_scorerm+1.DS_score)ma*=rm+1;rm+1=rm;rm=ma*;cout排序完毕endl;if(fp=fopen(student.t*t,w)=NULL)cout文件不能翻开!e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专题24 生物与环境(原卷版)
- 专题33 流程题分析(原卷版)
- 房地产行业深度:2025年房地产展望-国海证券-241222
- 9 古诗三首-雪梅教学实录2024-2025学年统编版语文四年级上册
- 从学生综合素质拓展到未来人才培养模式探索
- 常见病种及治疗技术
- 儿童戏剧教育与情感表达的能力提升
- 创新思维的培训课程设计
- 2025年贵阳货运从业资格考试题目和答案
- 2025年临沧货运上岗证模拟考试试题
- 未来当兵职业生涯规划书
- 镁合金回收与再利用
- 带状疱疹中医护理
- BOSS GT-6效果处理器中文说明书
- 浙江省杭州市拱墅区2023-2024学年六年级(上)期末数学试卷
- 网络安全培训
- 学校食品安全与膳食经费管理制度(3篇)
- 期末试题-2024-2025学年人教PEP版英语六年级上册 (含答案)
- 2020年甘肃公务员考试申论试题(省级卷)
- 【事业单位考试真题】《综合基础知识》必看考点《刑法》(2021年版)(附答案解析)
- 2025蛇年元旦蛇年新年晚会模板
评论
0/150
提交评论