学生成绩管理系统设计与实现35.docx
河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现chrisl=O;do if (c!=,y' &&c!='n,) cout<"指令错误!请重新输入! "<<endl;cin>>c;elsechrisl=l;while(chrisl=0);while(c='y'); 重复输入break;o o o o o o(3)模块框图:z 、学生成绩管理J系统,图37模块框图功能分析如下:输入学生资料模块;输出学生资料模块;按学生姓名进行排列模块; 添加学生资料模块;按姓名查找,删除该学生资料模块;。查找并显示学生 学生资料模块;按姓名杳找,修改学生资料模块;®从文件中读入数据模块; 储存学生并退出系统模块。3. 2界面设计界面设计是人与机器之间传递和交换信息的媒介,FaceUI称包括硬件界面 和软件界面,是计算机科学与心理学、设计艺术学、认知科学和人机工程学的交 叉研究领域。程序运行后会出现一个简捷的窗口,便于用户查询数据。4. 3功能设计与实现通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。应用系统 主控界面包括记录编辑和记录查询等功能模块。记录编辑功能完成学生成绩记录 编辑和记录查询功能。记录查询功能可以对数据各分类的记录进行查询。通过 do.while-.语句进行判断,将将要实现的功能使用switch, case实现。 caseCcasell,分别可实现11种要求,可通过数字及字母来调用所需要的功能, 非常的便捷和方便。第4章系统调试运行4.1 系统测试及调试分析按“自下而上”的原那么按模块测试、子系统测试、系统总测试3个阶段进行 模块测试寻找程序或详细设计中的错误;子系统测试又称分调,把经测试的模块放在一起形成一个子系统来测试; 系统总测试即把一个模块装成假设干子系统并充分测试。根据检验程序的可靠性,用多组测试用例调试分析系统的正确性,完备性等 各项性能指标,主要是对程序的所有功能的检验,用多组数据并与自己的掌握和 可测的事实结果进行比拟,来判断程序是否正确。要求一次检验程序的每个功能, 都要有多种数据。5. 2测试结果(1)操作界面:图4-1成绩系统运行界面图(2)成绩录入界面:图4-2成绩录入图10(3)删除数据界面:c "E:gyDebuggy.exe'卜*乂 * )( )(*)( )()()( *M*M)(欢,迎来干 |学生曲靖查询系统MXXXXXXXXXXXXXXXl髓择您需要的操作! " '帆但薮据苕入靖加学生删除毕生4港改蛹查询:5按总成缜查询6按姓名查词。翻所有举生的数据件肄事生的平均成绩惬科不及格人数10旅总分查询排名II)退田选择相关操作请输入相对的括号里的阿拉伯数字及字母I3据输入您要删除的学生的姓名:yaoyao即据删除成功,想继续删除吗y/n图4-3删除操作图11(4)数据修改界面:图4-4数据修改图12(5)成绩查询界面:C+分数:66英语分数:66平雌绩心入 生安总施查询 安姓名杳询共欢迎来到学生成绩查询系统*»*内*»*«*式 <E:gyDebuggy.exe*图4-5成绩查询图学是询 的息查i询信续 we查的继 ng要生想13(6)输出数据界面:图4-6输出成绩界面图14(7)平均分输出界面:| 京 *E:gyDebuggy. exe*biarnnengneng 学号:123 数学成绩:60 C + +成绩:60 外语成绩:60 wangwei学号:122数学成绩:66 C1成绩:66外语成绩:66您想继续进行其他操作吗? (y/n: y*M*M*>C XXXXXXXXKX )(又记卬 到与生成之音 14 询 系 令充*酒遒择您需要的操作!操作:<工数据不入2增加学生3)删除学生<4修祓数据*询:、<5按总成绩查询6)茂姓名查询输出所有举生的数据成绩绕计:笛金生的平均成绩9各科不及格人数排名:30按总分查询排名11退出选择相关操作请输入相对的括号里的阿拉伯数字及字母!198 均分:66?<y/n>:82 owangwei 亍 您想继续进行图4-7平均分输出界面15根据选择不同的数字及字母课执行不同的case,输出不同的功能。例如:选择了 case4,可执行修改数据的功能,如下:case 4:string sname, line, str, name;int nu;float eng, ma, com;int flag;char c;if (i=0)cout<<”系统中没有输入数据,请先输入数据! “<<endl ;break;doflag=0;cout< 请输入您要修改的学生的姓名:;cin>>name;fstream fin(f1. txt,ios:in);ofstream outfile(f. txt,ios:trunc|ios:out);cout<<endl;while(!fin. eof () 在文件中查找(getline(fin, line);istringstream stream(line);sname = line. substr(0, line. fincK , 0);if(name!=sname)(outfile<<line<<endl;else flag=l;fin. close ();16题目学生成绩管理系统设计与实现考核工程考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、 基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答下列问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总评成绩指导教师评语:日期:if(flag=l) cout请输入修改学生姓名及其新学号,数学,C+和英语成绩:;cin>>name>>nu>>ma>>com>>eng;cout<<endl;outfile<<name<<,«“学号:"<<”数学成绩:“”C+成绩:<<"外语成绩:,<<eng<<endl;outfile. close();f stream outf (/zf 1. txt,ios: : trunc | ios: :out);fstream inf(f.txt, ios:in);outf<<inf. rdbuf()<<endl;outf. close ();inf. closeO ;if(flag=0)cout«对不起,您要修改的学生不存在!请查证后输入! /z<<endl;cout<”想继续修改吗(y/n):"cin>>c;cout<<endl;if (c!='y' &&c!二'n )cout«,,指令错误!请重新输入! <<endk;cin>>c; while (c=,y');break;当然,实际上,每一个case都能执行,但是有很多的地方都不够完善,例 如:在总成绩排序中,只能输出总成绩,不能单独的输出学生的相应的信息;每17次进行别的操作之前都要在进行一次数据的录入,不能直接对原有的文件进行读 取。希望可以更加改进。4. 3系统维护系统维护主要包括了硬件设备的维护,应用软件系统维护和数据维护3局部 内容。根据目的可分为:(1)改正性维护;(2)适应性维护;(3)完善性维护;(4)预防性维护。18课程设计体会关于C+这门课,开始并不熟悉,但现在学会如何使用C+编写简单的应用 程序,知道C+面向对象程序设计这门课具有封装,抽象,继承,多态性等基本 特征,对于C+课程的概念、理论及应用方法有了初步的了解。现在根据要求,在指导教师的指导下,设计出一个适当规模的程序,进一步 加深了对C+语言的理解和掌握。发现自己对C+的某些知识认识还是不够,必 须要更加勤奋的学习编程,更深入的掌握C+语言,虽然编程比拟辛苦,但也很 有探索的动力,不断的努力充实自己。19参考文献1谭浩强C+程序设计解题与上机指导清华大学出版社2谭浩强C+面向对象的程序设计清华大学出版社3龚志翔Visual C+编程实例与技巧集粹北京期望电子出版社4孔鹏Visual C+ 6.0完全自学手册机械工业出版社5邓华Visual C+案例教程北京中科多媒体电子出版社20第1章系统设计目的11.1设计目的11. 2设计要求11.3设计内容1第2章 系统实现思路32. 1需求分析32. 2系统性能要求32. 3系统功能分析3第3章系统详细设计43.1系统功能模块设计及分析43. 2界面设计83. 3功能设计与实现8第4章系统调试运行94.1系统测试及调试分析94. 2测试结果94. 3系统维护18课程设计体会19参考文献20第1章系统设计目的1.1 设计目的根据新系统的逻辑模型建立模型,详细地确定新系统的结构和具体实施方案 的过程。掌握综合实验操作中记录的创立、查找、添加、删除等常用的算法设计。 根据开发要求,学生成绩管理系统主要应用于教育系统,完成对日常的教学、教 务、教师以及学生的计算机化管理。开发学生成绩管理系统可使学院的教职工减 轻工作压力,比拟系统的教务、教学上的各项服务和信息进行管理,同时,可以 减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步 伐,使各项管理更加规范化.掌握运用数据库远离进行系统分析和设计方法。1 .掌握关系库的设计方法。4 .加强C+的编程能力。1. 2设计要求根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设 计出一个适当规模的程序来实现设计课程内容中的全部功能;设计主控模块程 序.对给出的程序源代码要给出各局部的详细注释.自己根据能力及需要添加相 应功能模块,增强模拟系统功能。包括系统的功能分析、系统的功能模块设计、 程序流程图或结构框图、逻辑结构设计,数据库中的表、视图(如果使用)、索 引的结构和定义、触发器、存储过程、课程设计体会。1.3设计内容.设计题目:学生成绩管理系统设计与实现1 .设计内容:(1)设计四个类;学生类(描述学生基本信息);成绩类:班级类;课程 类(描述课程信息:课程编号,科目名称(如高等数学,大学英语等);学生成 绩及课程信息用文件保存,每个类一个文件,程序执行时从文件读入;(2)能按学期,按班级完成对学生成绩的录入,修改,能按班级统计学生的成 绩;求学生的总分及平均分;并能根据学生的平均成绩进行排序,能查询学生成绩, 不及格科目及学生名单;能按班级输出学生的成绩单;(3)设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、 期末成绩、平时成绩所占百分比;(4)计算学生总评成绩:总评成绩=平时成绩*平时成绩所占百分比+期末成 绩*(1-平时成绩所占百分比);(5)显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩 信息。分单人显示和以班输出(班成绩单格式输出到文件);注意:至少一个班,30人三门课。第2章系统实现思路2 .1需求分析学生成绩管理系统应该完成以下几个方面的的内容:学生档案资料的管理、 学生成绩的管理(包括必修课和选修课),每个内容均需要提供添加、修改和查 询的功能。学生成绩管理系统在开发过程中收集到的客户需求提供文档记录的关 键局部可概括为以下几个局部:(1)能对学生各科成绩进行录入;(2)能对学生的成绩进行增加;(3)能对学生的成绩进行删除;(4)能对学生的成绩进行修改;(5)能对学生的成绩按总成绩,姓名,进行查询;(6)能输出学生的所有数据;(7)能进行成绩统计;(8)能进行总分查询排名。2. 2系统性能要求(1)磁盘容量要求:存储容量娇小,数据库系统也不是很大,系统文件占一些磁盘空间,需要足 够大磁盘空间以容纳系统,倘假设空间缺乏,应该即使清理系统中过期文件。(2)平安性要求:系统有着权限设置,不同的用户有着不同的权限,非相关人员不可随意修改 数据,系统无平安漏洞,平安,可靠。2. 3系统功能分析本系统根据学生成绩管理的需要,而建立一个“学生成绩管理系统“,以方 便对成绩的的各项管理操作。(1)资料维护:系统维护包括对学生信息的录入操作及数据表中的信息进 行浏览。(2)系统功能:可以对数据表中的信息进行浏览。(3)系统查询:可以对学生的信息进行查询。第3章系统详细设计3.1 系统功能模块设计及分析学生成绩查询系统有:成绩录入、增加、删除、修改,数据查询,排序显示 构成:(1)通过定义一个类来定义数据录入的函数,使用不带参数和带参数的构 造函数初始化数据,且将主函数作为Tstu类的友元函数,以便主函数可以随意 调用Tstu类的数据成员。class Tstu(char name20;int number;float math, cpp, english, average, sum;public:Tstu();Tstu ( char n20, int num, float ma, float cj,float eng );float getsumO ;float getaver ();friend void main();Tstu:Tstu ( char n20, int num, float ma, float cj, float eng )strcpy(name,n);number=num;math=ma;cpp=cj;english=eng;(2)通过主函数,do while语句进行选择,判断,使用switch (p), case p, p(lTl)对各种功能进行分别输入。使用fstream输入输出文件类,进行 对文件翻开。void main() do 判断输入是否正确 cin>>p;if(p>=l&&p<=ll) chrisl=l; elsecout<<"指令错误!请重新输入:"<<endl; while (chrisl-0);do switch(p)case 1: 数据的录入char c; 用于在小项中选择是否继续操作char name20;int number;float math, cpp, english;do cout<请输入姓名:z/<<endl;cin>>name;cout请输入学号:/z<<endl;cin>>number;cout<请输入数学成绩:“<<endl;cin>>math;cout<请输入 C+成绩:<<endl;cin>>cpp;cout<请输入英语成绩:<<endl;cin>>english;fstream outfile, infile; 作一个文本文档在文件夹中用于显示所录入的 数据outfile. open(/zfl. txt", ios: :out | ios: :app); 定义文件流对象,翻开文 件if (! file) 如果翻开失败 cout<<,zf 1. txt can not open. n/z;return;outf ile<<name<<,/ "”学号:,<<number<<,/数学成绩:<C+成绩:<<cpp 外语成绩:english<<endl;outfile. close();infile. open(fl. txt", ios: in);定义输入文件流对象,以输入方式翻开 文件if(!file) 判断文件是否翻开 cout<<zzf 1. txt can not open. nz/;return;char ch;while(infile, get (ch)/cout<<ch;cout<<endl;infile, close();关闭磁盘文件j+;si=new Tstu(name, number, math, cpp, english);i+;coutV”数据录入成功,想继续录入吗(y/n),<<endl;cin>>c;