c课程设计学生成绩管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学
二○一二~二○一三学年第二学期
信息科学与工程学院
C++程序设计语言
课程设计报告
课程名称:C++程序设计语言
班级:电气信息类1206班
学
姓名:邬继阳
指导教师:王磊
二0一三年零七月
目录
1.课程设计目的
使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。
使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。
使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。
2.系统描述(需求分析)
需要处理的基础数据
学生基本信息:如班级、学号、姓名、性别、年龄、宿舍号码、电话号码等。
学生选修课程的基本信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、学分、
重修否等。
系统的基本功能
数据的录入:如录入学生的基本信息,以及该学生选修课程的基本信息;
数据的修改:如修改指定学号、或者指定姓名的学生信息,或者修改其选修课程信息;数据的插入:插入某个学生信息
数据的查询:如按学号查询、按姓名查询等;
数据的删除:如删除指定学号、或者指定姓名的学生及其选修课的信息;
平均成绩的计算:计算每个学生各门功课的平均成绩,并按平均成绩从高到低的次序输出
学生信息;
列出不及格学生清单(学号、姓名、不及格的课程和成绩)。
考虑用文件把数据保存起来(可选)。
可行性分析
2.3.1如上所示,该系统要求处理一些学生成绩的基本数据,包括两个方面:学生身
份信息和学生成绩信息。具体可以考虑创建两个类,一个学生基本信息类,一个学科基本信息类。这样既可以保持二者的独立性,也可以使之相关联。
2.3.2该系统不仅要求能录入一些基本数据外,还要能对这些数据进行处理,比如修
改,删除,插入,查询等。对这些操作的实现可以暂时放开面向对象,而采用面向过程的方法。另外,因为对数据库了解不多,可以考虑用文件保存的形式将数据保存起来,最后在查找的时候采用文件读取。
3.功能模块设计
类的分析与设计
由上面的需求分析可以知道,在本程序中,需要处理两大类数据:一个是学生的身份基本信息,另一个是该同学的课程基本信息。而且要求二者既要相互联系,又不能太相互制约。于是可以考虑创建两个类:Stu类(学生信息类)和Course类(课程
信息类)。为了使二者相互关联,可以让Course的一个类对象作为Stu对象的一个基本数据成员。具体如下:
3.1.1Course类
由于学生只需要一些课程信息,故在该类中只有一些基本的成员数据,不涉及成
这些成员数据,故要将访问类型定义为public型。
3.1.2Stu类
正如上面所述,Course类的一个对象作为Stu类的一个数据成员,但是正常情况下,一个同学是不只一门科目的,所以要定义一个Course类的数组来存放同一学生的不同科目信息Coursecourse[20]。为了其信息的隐蔽性,我们把所有的数据成员都声明为private。
接下来,要处理的就是函数了。有两种处理方式,但到底是采用成员函数还是采用友元函数呢?在本例中,我采用的是友元函数。原因如下:
(1)采用友元函数,可以使类的结构变得更加简单,有助于整个设计过程的思考。
(2)使用友元函数,将函数独立于类的结构之外而采用类对象传参的方式,可以使该函数的独立性大大提高,有助于在其他地方的使用。
友元函数:
整体流程
上面已经主要分开介绍了两个独立的类及其内部成员,现在来介绍整个学生系统功
4.份信息和基本课程信息全部存到自定义的一个文件中,当需要使用这些数据时,例如查询,修改,显示等,再将需要的读取出来进行相关的操作。
对信息的处理
4.2.1数据的录入和插入
数据的录入和插入基本一样,这里只介绍录入。
当在主菜单里选择信息录入时,会跳出录入页面,只需依次输入提示的信息即可。在整个大体框架上,采用一个while语句判断是否继续录入。注意在录入学生成绩信息时。需要输入要登记的课程数目。其中成绩信息的各科综合成绩和是否重修不需要手动录入,它会在登记完平时成绩和末考成绩后自动生成。当所有信息录入完成后,该生所有科目的平均成绩average也会自动计算。
4.2.2数据的查询
所谓数据的查询,就是把存放在文档中的学生数据读取出来并加以输出。
当只针对某个人的查询时,需要输入学号或姓名,再调用read()函数将相关的数据读取出来,至于需要输出哪些,可以自己控制。
当要输出所有学生的数据是时,首先调用read()函数返回数据的个数count,即学生的个数。最后采用for循环控制依次输出每一个学生的信息。
4.2.3数据的修改
当修改数据时,只需输入需要修改学生的学号即可。首先会将该生的相关信息输出出来。然后再提示重新输入信息。执行到这里时基本就和前面的数据录入,插入一样了。
4.2.4数据的删除
本例中,对数据的删除比较简单。只需输入学号或姓名,当查找到该生的相关信息后。将后面一个学生的信息赋值给他,相当于该生的信息被覆盖,也就是删除。
4.2.5数据的排序
在需求分析中,有一项功能,按学生成绩平均分降序排列。此功能还是比较好实现的。
在输入学生数据时,当所有课程分数输入完毕,会自动生成一个平均分,该数值就是学生类Stu中的average数据成员。然后采用冒泡法比较大小,把这些学生的数据重新排列,最后再依次输出。