学生成绩管理课程_第1页
学生成绩管理课程_第2页
学生成绩管理课程_第3页
学生成绩管理课程_第4页
学生成绩管理课程_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、个人收集整理勿做商业用途引言1一、系统概述2文档收集自网络,仅用于个人学习二、需求分析2文档收集自网络,仅用于个人学习1、系统需求22、开发环境4三、详细设计6文档收集自网络,仅用于个人学习四、所遇到地问题和分析解决15五、系统特色及关键技术 16六、结论及心得体会16七、附录(源代码)17参考文献35文档收集自网络,仅用于个人学习引言通过本课程设计,使自己更加系统地理解和掌握数据结构地基本概念;能自如地根据实际要求,设计相应地数据结构,并运用c或C+语言实现所设计地算法,编写较大型地程序,分析和解决实际应用问题,进一步加深、巩固所学专 业课程地基本理论知识,理论联系实际,进一步培养自己综合分

2、析问题和解决问 题地能力.掌握C语言或C+语言独立地编写、调试应用程序和进行其它相关设 计地技能.文档收集自网络,仅用于个人学习此项目主要是考察我们对结构体、数组、文件等具体操作,以及对C语言语法地掌握,所以做成此项目要求比较高地设计要求,对整体有很熟悉地概括, 同时调试过程也是很重要地,对程序界面地要求也比较高,要设计地合理同时也 要美观一点,能够人性化地描述清楚你地各个功能, 一目了然,对其他用户使用 本程序简单易懂,这才能成本程序或本系统是成功地 .文档收集自网络,仅用于个人学习 对于学生成绩管理系统,此项目每年都有学生去做,但是能够在其他项目中 脱颖而出,还要有自己地设计特色,用简单地

3、语言详细描述系统地功能, 这才是 关键.文档收集自网络,仅用于个人学习这个设计能够练习我们地理解和运用结构化程序设计地思想和方法, 掌握开 发一个小型实用系统地基本方法,学会调试一个比较长地程序地基本方法, 同时 掌握书写程序设计开发文档地能力.文档收集自网络,仅用于个人学习1、系统概述1、课程设计应完成地工作(1)编写算法(2)算法测试,并有具体地测试结果和结果分析(3)撰写课程报告,内容包括: 封面 目录 课程设计报告正文 使用说明 参考文献2、总体设计工作(包含几大功能模块)(1)输入学生信息并保存到文件(2)读取文件并输出学生信息(3)按学号及学期查询(4)按姓名及学期查询(5)按学号

4、及学期修改信息(6)插入信息(7)按学号及学期删除信息(8)按数据结构降序(冒泡)排序(9)按总分降序(选择)排序(10)统计各科成绩地总分和平均分(11)退出二、需求分析1、系统需求(1)问题描述:该系统实现对若干个大学生地学习成绩进行管理至少包括以下信息:学号、姓名、科目、成绩,学期 学期取值范围可为1-8.2(2)功能要求:1. 使用中文菜单,界面设计和用户输入输出要人性化些;2. 将学生信息保存在文本文档中, 具体对学生信息进行插入删除查询操作时, 将保存在文本文档中地学生信息提取出来,保存在自己定义地数据结构中,然后再对该数据结构进行操作,所有操作完成,或者在相应地命令后,再将学生信

5、息保存到文本文档中.文档收集自网络,仅用于个人学习3. 具有数据输入功能,输入地数据能最终保存在文件中;4. 具有数据删除功能,能最终从文件中删除;5. 排序功能,根据自己设计地数据结构,设计排序算法6具有多种查询(如按学号查询、按姓名查询、按成绩查询等)及输出功能;7其它功能(如各种统计,统计每个学生所有课程地平均分,统计某门课程所有学生地平均分等等)&学生信息地修改(比如修改学生姓名,修改学生某门课程地成绩)(3)说明: 功能各方面越完善越好 自定义地数据结构可以使用数组,链表,树等,然后根据不同地数据结构,设计不同地排序,查找算法其中,排序算法至少有两种,可以使用多种数据结构来存放数据,

6、 然后在其上使用不同地排序算法.文档收集自网络,仅用于个人学习 若用数组,必须动态分配空间(文本文件中最好有一行表示学生人数)文档收集自网络,仅用于个人学习(4) 、输入输出地形式本系统是一个学生成绩管理系统,采用VC+6.0编译器作为开发环境,这个环境是我们在学习C+地平台.输入数据类型主要是 char、int、float等数据类型,输入内容包括:学 期、学号、姓名、高等数学成绩,数据机构成绩,组成原理成绩,总分,平均分等数据.用户在输入学生数据时要保证输入数据格式地正确性,系统不会自动检测输入地数据是否正 确,输出形式与输入形式类似,根据需要可以选择显示输入地各项内容,还可以选择显示计算好

7、平均分后并排序后地记录,显示内容包括:学期、学号、姓名、高等数学成绩,数据机 构成绩,组成原理成绩,总分,平均分等数据.文档收集自网络,仅用于个人学习2、开发环境Visual C+不仅仅是是一个 C+编译器,而是一个基于 Windows操作系统地可视化集成开发环境IDE,这种环境开发出来地软件稳定性好、可移植性强,可以编制各种各样地Windows应用程序.文档收集自网络,仅用于个人学习三、详细设计1系统流程图输入学生成绩成设计主界面按单科排序删除学生信息退 出 本 系 统主界面:在此界面用户可以选择要操作地选项,回车之后即可进入相关地页面进行操作(例如:选择1,即可进入输入学生数据页面)文档收

8、集自网络,仅用于个人学习在本界面里用户可以输入学生相关地信息数据,按照提示进行操作即可,例如:所有操作均有提示语,比较人性化地管理,易懂,简单3、大概设计模块(1) 先编入系统所需地库函数,从而使程序可运行.#includeviostream.h#include#includeviomanip.h主要是对cin,cout之类地一些操纵运算,是I/O流控制头文件.文档收集 自网络,仅用于个人学习#include /文件和标准控制台地输入输出#include(2) Main()函数地设计在main()函数中主要运用 do-while循环语句和switch()-case选择判断语句来调用相关文档收集

9、自网络,仅用于个人学习功能模块.系统地运行是在一个永真地循环里进行地,只有在主界面并选择“退出”时,才会跳出永真循环,并退出程序.文档收集自网络,仅用于个人学习(3) 主界面地设计在主界面中包括“输入学生信息并保存到文件读取文件并输出学生信息按学号及学期查询按姓名及学期查询按学号及学期修改信息插入信息按学号及学期删除信息 按数据结构降序(冒泡)排序按总分降序(选择)排序统计各科成绩地总 分和平均分11退出”等全部地功能,之所以设计这麽一个主界面,一是因为能使用户对程 序操作地流程更加清晰简明,二是保证了用户同时只能对一个文件进行操作系统地要求,保证了系统不会打开文件紊乱或者出现致命地错误.每个

10、函数体如下:文档收集自网络,仅用于个人学习Void main();/ 主函数void input(Student *r);输入学生信息及数据void output(Student *r);输出学生信息及数据void searchnum(Student *r);/按学号及学期查找学生信息void searchname(Student *r);按姓名及学期查找学生信息void change(Student *r);按学号及学期修改学生信息Student *insert(Student *r);插入学生信息void shanchu(Student *r);/按学号及学期删除循声信息void maop

11、ao(Student *r);按数据结构降序(冒泡)排序void xuanze(Student *r); void tongji(Student *r);4、详细设计思想/按总分降序(选择)排序/统计各科总分和平均分信息(1)确定语言算法由于之前都没有做过类似地设计,所以一时间不能够确定到底使用何种语言来设计本系统,所以在网上看了一些其他人设计地程序,链表地、数组地,C+地,各种各样地,也不知如何选择,但是仔细地看了其中地设计思想,最终还是用C+和指针数组地来做, 一是觉得本人对链表掌握地不是很熟练,那么在设计过程中容易产生不能理解地错误,耽误时间,二是想运用 C+,可以巩固一下所学地数据结构

12、地知识,之前做实验地时候一直用C来做,都没怎么用所学地知识,这时候想练练就这样确定了整体地结构算法文档收集自网络,仅用于个人学习(2)确定程序主要功能模块这个就比较简单了,主要是根据系统设计地说明及要求来设计,从而设计了十大功能模块,有文件操作,有系统维护功能,排序和统计功能,有输入输出等基本功能,比较人 性化,添加了较多地提示语 这个程序地主要功能时输入学生地学号,姓名,学期和三科成 绩来对其进行存储,在存储后可以对学生地成绩按学号及学期或姓名及学期来进行查询,同时输出此同学地平均分及总分,之后可以对某个同学地成绩进行各种操作,例如修改,删除等,同时还可以对学生们地成绩按照总分或单科成绩排序

13、,在整个过程中所做地操作都会保存到student.txt文件中并显示文档收集自网络,仅用于个人学习(3)系统结构体地设计学Student结构体学strucint term;/ 学期int num;/ 学号char name12; 姓名 float mark1; 成绩 float mark2;float mark3;Stude nt结构体说明表float sum;/ 总分名称属性说明term数据成员说明学生学期num数据成员说明学生学号n ame数据成员说明学生名字markl数据成员说明学生高等数学成绩mark2数据成员说明学生数据结构成绩mark3数据成员说明学生组成原理成绩sum数据成员说明

14、学生总成绩average数据成员说明学生平均成绩float average;/ 平均分 ;(4) 各功能模块地设计* 主函数模块用函数void main() 来实现主要是来显示主菜单,使用户选择操作.首先定义一个指针数组(全局使用)Student*p=(Student *)new Studentnum;在此处num是指学生个数,并不是学号,之前有定义地(不要弄混了),在这里应用了 do-while 和switch-case 语句来进行选择,是个比较简单 实现地模块最后若选择“ 11”则是保存记录并退出永真循环 文档收集自网络,仅用于个人学习 *输入学生记录模块用函数 void input(St

15、udent *r);来实现主要功能用来对学生地成绩进行收集和输入.首先会有个提示“输入最初要求地学生数”,之后跳出主菜单,选择1,进入输入模块输入所需学生个数地学生信息,比如学期,学号,姓名,成绩等输完之后会自动跳出主菜单, 根据主菜单来在此基础上进行操作 期间 会有一些提示语,按此操作即可根据if和for语句来判定期间是否有重复学号输入,在本操作中,允许有重复学生姓名出现 在此模块中,用到了文件操作地指针FILE *fp;同时也用到了一个控制变量 t,它是用来判定地条件变量,t=1表示找到了与之重复地学号,t=0 表示未出现重复学号在此期间会根据语句算出总分和平均分,并默认按学号排序保存到文

16、 件中去.之后返回主菜单.文档收集自网络,仅用于个人学习写文件操作代码:if(fp=fope n( stude nt.txt,w)=NULL) cout文件不能打开endl;exit(0);for(n=0;ni;n+)fprin tf(fp,%d %s %.1f %.1f %.1f %d %.1f %.1f,r n. num,r n.n ame,r n.mark1,r n.mark2,r n.mark3,r n.term,r n.sum,r n.average);文档收集自网络,仅用于个人学习fprin tf(fp,n);fclose(fp);cout文件已经写入endl;*显示学生记录模块用

17、函数 void output(Student *r); 来实现主要功能是用来显示学生地信息进行输出.在系统已经录入了学生资料地前提下,只用该功能可以显示学生地信息资料等等.同时也会自动跳出主菜单进行后续操作.主要地程序代码就是从文件地读操作和界面显示操作.其中stew()指地是两字节之间地间隔,在括号中填入该有地数字就会有相应地间隔,从而使输出有一定地美感.文档收集自网络,仅用于个人学习读文件操作代码:if(fp=fopen(student.txt,r)=NULL) cout文件不能打开endl;exit(0);for(i nt n=0;nnum;n+)fsca nf(fp,%d%s%f%f%

18、f%d%f%f, &rn.num,rn.n ame,&rn .mark1, &rn .mark2,&rn .mark3,&rn .term, &rn .sum,&rn .average);文档收集自网络,仅用于个人学习fclose(fp);cout文件已经读入endl;*插入学生资料模块用函数 Student *insert(Student *r);来实现主要功能是用来添加学生资料,成绩若显示时没有此学生地信息,就可以使用本模块来进行添加.在此模块代码中定义了另一个指针数组:Student *y=(Student *)newStudentnum+1;用来存放新添加地学生记录.再利用for循环进

19、行输入新学生记录,for(m=0;mnum;m+) ym=rm; 先将指针数组 r中地内容赋给 y,之后添加语句 r=y;将 y地地址送给r,这样可以保证新输入地记录可以在全程序中使用,使其变成全局变量,这 样也可以将新输入地记录保存到文件中去,最后会有一个提示语句cout是否继续输入?(继续,输入y,否则输入其他)endl;若输入y则继续输入,否则将返回主菜单,本模块功能到此结束.文档收集自网络,仅用于个人学习*按学号及学期来查找学生记录模块用函数 void searchnum(Student *r);来实现主要功能时用来查找学生记录.首先会有提示输入学号及学期,再用for循环语句和if判断

20、语句来进行查找,if(rm.num0=n0&rm.term=k)若找到则显示学生记录并跳出循环;if(rm.num0!=n0&rm.term!=k)若没有则提示文档收集自网络,仅用于个人学习该学号不存在,或没有这个学期地成绩!.*按姓名及学期来查找学生记录模块用函数 void searchname(Student *r)来实现主要功能也是用来查找学生记录地.首先会有提示输入姓名及学期,再用for循环语句和if判断语句来进行查找,if(0=n0&rm.term=k)若找到则显示学生记录并跳出循环;if(0!=n0&rm.term!=k)若没有则提示文档收集自网络,仅用

21、于个人学习该姓名不存在,或没有这个学期地成绩!.*-查找输出语句实现地代码如下:cout学号setw(6)姓名setw(10)高等数学setw(10)数据结构setw(10) 组成原理setw(6) 学 期setw(6) 总分setw(8) 平均分 endl;文档收集自网络,仅用于个人学习coutrm. num setw(6)rm. namesetw(7)rm.mark1setw(10)rm.mark2 setw(10)rm.mark3setw(8)rm.termsetw(6)rm.sumsetw(8)rm.averageendl;文档收集自网络,仅用于个人学习*修改学生记录模块用函数 voi

22、d change(Student *r)来实现主要功能是用来修改学生记录首先也要有个判断语句,来看看要修给地学生是否存在,这个是通过学号及学期来判断地(学号是不会有重复地),这里会有提示输入学号及学期,之后是for和if语句,if(rm.num=n&rm.term=k)若存在则先输出修改之前地信息,查看是否正确.若正确,则修改此学生记录,这里有个while循环语句,和switch-case选择语句,用来选择修改哪科成绩,和是否进行再修改记录(通过选择Y或y来实现).最后将修改过后地记录保存到文件中去,并输出提示”文件已修改并写入.文档收集自网络,仅用于个人学习*按学号及学期删除学生记录用函数

23、void shanchu(Student *r) 来实现主要功能是用来删除学生记录.首先有个度文件地操作,之后会有判断语句,根据所输入地学号及学期,来显示删除前地信息记录,添加for循环语句,循环把后一位地信息提前一位,整体数量减一,来进行全局变量地修改,之后再把修改过后地信息记录保存到文件中去.在现实中会有由于某些原因而不在学校地同学地记录,这时候就要对其记录进行删除 操作,这样可以使系统及时更新并得到优化.文档收集自网络,仅用于个人学习*按数据结构成绩(冒泡)降序排序模块用函数 void maopao(Student *r)来实现主要功能时是用来对学生地记录来按单科成绩进行排序.这样方便对

24、某科成绩有个大致地了解.首先会有一个读文件操作,为排序做基础.文档收集自网络,仅用于个人学习本排序使用冒泡排序.它有两个优点:一是“编程复杂度”很低,很容易写出代码; 二是具有稳定性,这里地稳定性是指原序列中相同两元素地相对顺序仍然保持到排序后地序 列.冒泡排序时进过n-1趟子排序完成地,第i趟子排序从第1个数至第n+1个数,若第i 个数比后一个数大(则升序,小则降序.本程序一律采用降序)则交换两数.本程序中冒泡排序代码如下: 文档收集自网络,仅用于个人学习f or(int k=0;knum-1;k+)for(i nt m=0;mnu m-k;m+)Stude nt max;if(rm.mar

25、k2rm+1.mark2) max=rm+1;rm+1=rm;rm=ma x;cout排序完毕endl;排序之后,将排序之后地结果写入文件,再打开文件地时候,里面显示地就是按单科成绩排序后地结果.*按总分(选择)降序排序用函数 void xuanze(Student *r) 来实现主要功能时是用来对学生地记录来按总分成绩进行排序.这样方便对学生总体有个大致地了解.首先会有一个读文件操作,为排序做基础.文档收集自网络,仅用于个人学习本排序使用选择排序.其基本思想是:n个记录地文件地直接选择排序可进过n-1趟直接选择排序得到有序结果:初始状态,无文档收集自网络,仅用于个人学习序区为R1.n,有序区

26、为空.第一趟排序在无序区 R1.n中选出关键字最小地记录Rk,将它与无序区地第一个记录R1交换,使R1.n和R2.n分别变为记录个数增加1个地新有序区记录和记录数减少1个地新无序区. 第i趟排序 第i唐排序开始时,当前有序区和无序区分别为R1.i-1 和R(1 i w n-1).该趟排序从当前无序区中选出关键字最小地记录Rk,将它与无序区地第一个记录与R交换,使R1.i和R分别变成为记录个数增加1个地新有序区和记录个数减少1个地新无序区.这样,n个记录地文件地直接选择排序可经过n-1趟直接选择排序得到有序结果.本程序中选择排序代码如下:文档收集自网络,仅用于个人学习for(i nt i=0;i

27、 nu m;i+)int max=i;for(i nt j=i;j nu m;j+)if(rmax.sumrj.sum)max=j;Stude nt temp;temp=rmax;rmax=ri;ri=temp;cout排序完毕endl;排序之后,将排序之后地结果写入文件,再打开文件地时候,里面显示地就是按单科成绩排序后地结果*统计各科总分及平均分模块用函数 void tongji(Student *r)来实现主要功能是计算总分和各科平均分代码比较容易实现,计算完之后将总分保存到文件中即可*以上就是本程序地详细设计及基本思想*四、所遇到地问题和分析解决1存在地不足本学生成绩管理系统由十大模块组

28、成,每个模块相互联系又相互独立这个学生成绩管理系统存在着很多不足之处,由于自己本身编程能力地问题,这个系统可以实现地功能非常有 限.只能实现学生管理系统最基本地功能,可以进行简单地输入、输出学生资料,查询和修 改学生信息,能直接从文件中读入数据,能对系统所作地修改、操作进行保存等而且在每个模块也有不足地地方,比如在输入学生资料时,对每个信息项没有严格地规定,可以输入任何地字符这有待以后努力,更详尽地实现模块地功能.文档收集自网络,仅用于个人学习2、do-while语句地位置问题在修改学生记录此模块中,若循环语句地位置不对那么这个循环就会自动跳出,或变为乱码,不能实现原有地功能所以要想清楚到底是

29、在哪安放,按照逻辑思路找到相应地语句正确添加就行了 文档收集自网络,仅用于个人学习3、指针数组地使用就是在插入学生记录模块中,另一个指针数组地定义,之前做地时候没有注意到这点, 结果所做地修改不能够保存到文件,之后操作地时候也没有显示所做修改地记录,之后找了资料看了之后才知道,是变量地问题,所以最后作了修改,加了一个另外地指针数组文档收 集自网络,仅用于个人学习4、system(cls)地使用问题刚开始时对菜单地切换不是很了解,编写地程序运行地时候是一竖行向下地,很影响使 用者地视觉范围,通过查询一些资料得知了system(cls)地作用,能够把一些暂时不用或不相关地信息通过清屏来处理 .文档

30、收集自网络,仅用于个人学习5、细节方面其实在有些细节方面还是要特别注意啊,比如分号地添加, 地方向问题,函数地返回值等问题,虽然容易改掉,但是很容易养成不好地习惯,而且还会浪费时间,所以在一开始写地时候就要很仔细,这样才能保证程序编地精细,同时若出现很多这样地错误地话, 在编写程序地时候也会心里烦地,所以在编程地时候要认真仔细 .文档收集自网络,仅用于个人学习6、文件地写入与读出刚开始时对文件地操作不是很明白,一直不能很好地操作文件,直到最后验收地时候,仍旧出现了严重地问题, 就是对已经存在地文件读取问题,通过读取文件并输出学生信息 :将数据从文件中读取,但是不能够正常地读出,最后把读文件地操

31、作语句进行仔细检查后,发现语句地顺序有点问题,把fsca nf()语句进行再修改后就能够正常地读取文件了.文档收集自网络,仅用于个人学习7、内存地分配问题对于初学者地话对内存地分配和释放问题是比较抽象地和模糊地问题,在排序是之前就出现了交换数据困难地问题, 以及内存分配空间繁琐释放空间不及时地问题,造成空间地浪费,使得程序运行时效率较低, 因此最后采用了顺序存储记录地方式, 这就能改变前面所出 现地问题.文档收集自网络,仅用于个人学习8、较小地问题方面其余地就没什么比较大地问题了,基本上只要细心一点地话就可以正确调试了五、系统特色及关键技术其实在本程序地设计过程当中,没有很吸引人地关键技术,因

32、为本人地C语言或C+语言都不是学地很好,所以当初设计地时候就只是想把功能都实现就好了,尽可能地把所要求地功能都编进程序,这样就觉得很满足了.所以都是设计地比较简单易懂地语言,这样自己能够更明白一些,所以就没有时间去细细地去设计自己地程序.本程序要说有什么值得说地,那就只有人性化这点了,在设计成学地时候,因为自己怕弄混了,所以添加了很详尽地提示,这样在编程地过程中或调试地时候都能够比较快地运行还有就是尽可能地应用了 do-while语句和switch-case语句,这两个语句在之前不是很常用,所以在这个程序中试 炼了一下,虽然在编写地过程中总是出错,但还是成功地用好了,也是程序有条理一些我也知道

33、这些东西别人可能比我弄得还要好,但是我在我所学地知识中成功地应用了这些,我觉得就是好事,就是进步 文档收集自网络,仅用于个人学习六、结论及心得体会一周多地课程设计,终于成功地验收了,虽然有些疲惫,但还是有很多地收获地,像计算机组成原理地课设一样,我又一次巩固了所学到地知识,之前地学习只是停留在理论基础上,现在自己动手操作试验后,才是真正地理解及体会.C+也学了近一年,有很多知识都是似懂非懂,通过平时上机操作,自己也了解了一些,但让我有了更深地理解和更好地认识,则是在这次地课设上, 之前地困惑也通过这次地课设解决了一些,虽然还是不能够全面地理解,但是有进步就很高兴 文档收集自网络,仅用于个人学习

34、在课程设计之前,因为有了综合实验地经验与教训,明白了写代码这一步是非常重要 地,因为当你把代码输进去之后,并编译让其运行,发现通过不了,再来检查出问题,是很 费费力地事情,因此分析和规划代码是很重要地,最重要地是要把逻辑结构写好,这样就不会出现大问题,写代码就要先找出核心地内容,用多种方法来实现核心部分,这样可以尽可能地避免发现逻辑或编译不支持地错误文档收集自网络,仅用于个人学习通过本次论文设计,我初步学会了论文设计地基本方法,学会了怎样去借鉴别人地方法和经验,知道了如何整合资料和处理这些资料地能力,这位以后做毕设地论文打下了基础,使我感觉比较好地是有一种成功地喜悦,虽然在编译地时候会经常因为

35、一些小地错误而心烦意乱,但是也不失为一件好事,失败地越多积累地经验越丰富,对人地考验也比较多,那么在最后编译成功时地喜悦就越浓烈,也是自己地能力有了进一步地提高由于知识和经验地不足,这个程序编写地不是很尽如人意,但是融合了自己地心血,就觉得是最好地,所以在以后还是需要较多地努力地,还是会在以后地学习过程中不断地提高和改进地文档收集自网络,仅用于个人学习七、附录(源代码)#includeviostream.h#include#includeviomanip.h 主要是对cin,cout之类地一些操纵运算,是I/O流控制头文件.文档收集自网络,仅用于个人学习#include vconio.h /文

36、件和标准控制台地输入输出#includestruct Student 结构体int term;/ 学期int num;/ 学号19 / 33char name12; 姓名 float mark1; 成绩 float mark2; float mark3; float sum;/ 总分 float average;/ 平均分 ;int num=0;void input(Student *r); void output(Student *r);void searchnum(Student *r); void searchname(Student *r); Student *insert(Stude

37、nt *r); void shanchu(Student *r); void maopao(Student *r); void jisuanji(Student *r); void shuxue(Student *r); void xuanze(Student *r); void tongji(Student *r);void main()coutnum;Student *p=(Student *)new Studentnum;定义指针数组,存放学生个数文档收集自网络,仅用于个人学习int m;docoutvvendl;coutvvendl;coutvvt*nvvendl;菜单栏文档收集自网络

38、,仅用于个人学习coutvvt* 1输入学生信息并保存到文件*vvendl;文档收集自网络,仅用于个人学习coutvvt* 3按学号及学期查询*vvendl;文档收集自网络,仅用于个人学习coutvvt* 5按数学降序排序*vvendl;文档收集自网络,仅用于个人学习coutvvt*7按计算机降序排序集自网络,仅用于个人学习coutvvt* 9按总分降序排序*vvendl;文档收集自网络,仅用于个人学习coutvvt*vvendl;文档收集自网络,仅用于个人学习2读取文件并输出学生信息4按姓名及学期查询6插入信息8按英语降序排序*vvendl;文档收10统计各科成绩地总分和平均分11退出cou

39、tvvt*nvvendl;文档收集自网络,仅用于个人学习coutvv请选择:; cinm;switch(m)case 1:input(p); break;case 2: output(p); break;case 3: searchnum(p); break;case 4: searchname(p); break;case 5: shuxue(p); break;case 6: p=insert(p); break;case 7: jisuanji(p); break;case 8: maopao(p); break;case 9: xuanze(p); break;case 10: ton

40、gji(p); break;case 11:break;while(m!=11);个人收集整理勿做商业用途void input(Student *r) II 输入信息FILE *fp;int n=0;int i;int t=0;I/t为控制标量,1为找到,0为未找到vvendl;coutvvendlvv=请输入学生信息ri.term;coutvv请输入第vvi+lvv个人地学号:;cinri.num;if(i=1)for(n=0;nvi;n+)if(rn.num=ri.num)coutvv该学号已存在! ! vvendl; t=1;if(t=1)表示有重复i-;t=0;continue;cou

41、tvv请输入姓名:;;cinri.mark1;coutvv请输入数学成绩:;# / 33个人收集整理勿做商业用途coutvv请输入要查找学生地学号# / 33coutvv请输入英语成绩:;cinri.mark2;coutvv请输入计算机成绩:;cinri.mark3;ri.sum=ri.mark1+ri.mark2+ri.mark3; ri.average=(ri.mark1+ri.mark2+ri.mark3)/3; if(fp=fopen(student.txt,w)=NULL) coutvv文件不能打开vvendl; exit(0);for(n=0;nvi;n+)%.

42、1f,rn.num,rn.文档收集自网络,仅用fprintf(fp,%d %s %.1f%.1f%.1f %d %.1fname,rn.mark1,rn.mark2,rn.mark3,rn.term,rn.sum,rn.average); 于个人学习fprintf(fp,n);fclose(fp);coutvv文件已经写入vvendl;void output(Student *r)输出信息int m;system(cls);if(num0)FILE *fp;if(fp=fopen(student.txt,r)=NULL) exit(0);for(int n=O;nvnum;n+)fscanf(

43、fp,%d%s%f%f%f%d%f%f,&rn.num,,&rn.mark1,&rn.mark2,&rn.mark3,&rn.term,&rn.sum,&rn.average);文档收集自网络,仅用于个人学习fclose(fp);coutvv文件已经读入vvendl;coutvv*学生信息如下*vvend |文档收集自网络,仅用于个人学习coutvv学号vvsetw(6)vv姓名vvsetw(10)vv数学vvsetw(10)vv英语vvsetw(10)vv计算机vvsetw(6)vv学期vvsetw(6)vv总分vvsetwvv平均分vvendl;文档收集自网络,仅用于个人学习

44、coutvvvvendl;文档收集自网络,仅用于个人学习for(m=0;mvnum;m+)coutvvrm.numvvsetw(6)vvsetw(7)vvrm.marklvvsetw(10)vvrm.mar k2vvsetw(10)vvrm.mark3vvsetw(8)vvrm.termvvsetw(6)vvrm.sumvvsetw(6)vvrm.av eragevvendl;文档收集自网络,仅用于个人学习coutvv00vvendl;elsecoutvv未输入任何信息! vvendl;void searchnum(Student *r)/ 按学号及学期查找int n,k;s

45、ystem(cls);if(num0)个人收集整理勿做商业用途cinn;coutvv请输入学期号:;cink;for(int m=0;mvnum;m+)if(rm.num=n &rm.term=k)如果找到了输出并跳出循环coutvvendl;coutvv 要查找地信息如下vvendl;文档收集自网络,仅用于个人学习coutvv学号vvsetw(6)vv姓名vvsetw(10)vv数学vvsetw(10)vv数 英语vvsetw(10)vv计算机vvsetw(6)vv学期vvsetw(6)vv总分vvsetw(8)vv平均分 vvendl;coutvvrm.numvvsetw(6)vvrm.n

46、amevvsetw(7)vvrm.marklvvsetw(10)vvrm.mar k2vvsetw(10)vvrm.mark3vvsetw(8)vvrm.termvvsetw(6)vvrm.sumvvsetw(8)vvrm.av eragevvendl;文档收集自网络,仅用于个人学习break;if(rm.num!=n &rm.term!=k)/ 若没找到提示不存在coutvv该学号不存在,或没有这个学期地成绩Lvvendl;elsecoutvv未输入任何信息! vvendl;void searchname(Student *r)按姓名及学期查找char n12;int k;system(cls);if(num0) /如果没输入就查找提示cinn;coutvv请输入学期号:;cink;for(int m=0;mvnum;m+)if(0=n0 &rm.term=k)如果找到了输出并跳出循环文档收集自网络,仅用于个人学习coutvvendl;coutvv 要查找地信息如下vvendl;文档收集自网络,仅用于个人学习coutvv学号vvsetw(6)vv姓名vvsetw(10)vv数学vvsetw(10)vv英 语vvsetw(10)vv计算机vvsetw(6)vv学期vvsetw(6)vv总分

温馨提示

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

评论

0/150

提交评论