学生信息管理系统(代码已改).doc
《学生信息管理系统(代码已改).doc》由会员分享,可在线阅读,更多相关《学生信息管理系统(代码已改).doc(25页珍藏版)》请在冰豆网上搜索。
![学生信息管理系统(代码已改).doc](https://file1.bdocx.com/fileroot1/2022-10/19/9acd72b1-5637-4dba-8ec3-3e1c129ce5ac/9acd72b1-5637-4dba-8ec3-3e1c129ce5ac1.gif)
计算机科学系
C++课程设计
2013 — 2014学年 第一学期
课程名称C++面向对象程序设计
设计题目学生信息管理系统
学生姓名周慧向静雷娜聂佩
学号44413436
专业班级12级计科二班
指导教师刘灵丽
目录
1.设计任务
1.1题目与要求………………………………………………
(1)
1.2本系统涉及的知识点……………………………………
(2)
2.功能设计
2.1算法设计…………………………………………………(3)
2.2主要模块流程图…………………………………………(5)
3.程序代码设计
3.1输入模块…………………………………………………(6)
3.2输出模块…………………………………………………(7)
4.总结……………………………………………………………(8)
参考文献………………………………………………………(12)
附录……………………………………………………………(13)
1设计任务书
1.1 题目与要求
本组计划(成员为:
周慧,向静,雷娜,聂佩合作)编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。
具体要求如下:
(1)建立学生信息数据,包括学号、姓名、性别、三科成绩、出生时间、年龄(必须计算得到)。
(2)使用继承的方法构造至少3个类,(即学生类——虚基类,一年级学生和二年级学生类——派生类)使用相应的对象放置10个学生信息。
(3)编写同名display()成员函数,用来输出数组的内容。
(4)按不同类别输出学生信息,比如按性别。
(可选功能)
(5)要求对“<<”和“>>”运算符进行重载。
考虑到输人学号时,也会因不小心引人空格,而且名字中也需要有空格,所以重载“>>’’运算符时,需要满足这个要求。
(6)抽取并计算学生的平均成绩。
(7)按照至少一科成绩进行排序。
(8)检索(查找)指定信息。
(如按姓名检索)
(9)参考界面如下:
*****************************
学生信息管理
*****************************
*增加学生
*显示全部学生
*计算平均成绩
*删除一个学生
*按年级输出学生信息
*按性别输出学生信息
*按姓名检索学生
*结束程序运行
(10)输出:
相应的学生信息。
根据分工,周慧的主要工作是运算符重载。
根据分工,向静的主要工作是按成绩排序和按性别输出。
根据分工,雷娜的主要工作是计算年龄和平均成绩。
根据分工,聂佩的主要工作是按姓名检索和按学号删除。
22
l.2 本系统涉及的知识点
类、数组、循环、函数、分支、指针。
利用虚函数由学生类派生出大一学生,大二学生这两个类。
同名的display()函数,用来作为数组的输出。
“>>”和“<<”运算符的重载,目的是为了避免输人学号时,因不小心引人空格,还有就是名字中也需要有空格。
利用for语句进行按某一要求的排名,修改学生的相关信息,及求取学生的平均成绩。
2功能设计
2.1算法设计
1、本系统需要实现的功能要求:
(1)利用switch语句设计如图1所示的主菜单:
请输入选项编号(0~11)
1—增加一位一年级学生
2—增加一位二年级学生
3—显示所有学生
4—计算一年级学生平均成绩
5-计算二年级学生平均成绩
6—按成绩排序一年级学生的信息
7—按成绩排序二年级学生的信息
8—删除一年级学生的学号
9—删除二年级学生的学号
10-按性别输出
11-按姓名检索
0-结束程序运行
图1学生通讯录系统主菜单
(2)选择6或者7后,调用排序函数,进入函数后利用switch语句实现一个如图2所示的菜单,该菜单中每个选项调用一个函数
请选择科目
请输入选项编号(1~3)
1——数学
2——语文
3——英语
图2成绩排序
3、根据所选菜单设计相应的功能函数:
(1)输入函数cin:
利用循环输入的方式,将有关信息存入数组,数组根据实际的人数,采用动态方式建立学生信息。
(2)输出函数display():
循环输出数组中的内容。
(3)求平均分函数average:
利用循环方式求得每个学生三科的平均成绩。
按成绩排序
显示所有学生
按学号删除2年级学生
按学号删除1年级学生
按姓名检索
按性别输出
2年级平均成绩
按英语成绩排序
按语文成绩排序
按数学成绩排序
1年级平均成绩
增加2年级学生
增加1年级学生
学生信息管理系统
2.2主要模块流程图
图3学生信息管理系统流程图
3.程序代码设计
3.1输入模块
1.函数原形:
voidgetdata(),intgetage(),
intgetnumber(),stringgetname(),doublegetaverage(),
voidmeum(int&choice)
2.功能:
用来选择菜单和输入相应的学生信息(包括:
学号,姓名,性别,年龄,出生时间,三科成绩,如今年份,平均成绩)
3.变量及类型:
s1[i],s2[i]:
对象数组变量。
4、说明:
执行完输入函数后,会在键盘缓冲区中保存回车键,后面再对字符型变量赋值时,会将缓冲区中的回车键当成数据存入变量中。
5、模块代码及其相关注释
voidgetdata()
{
cout<<"学号姓名性别出生时间如今年份语文数学英语"<cin>>number>>name>>sex>>year1>>year2>>Chinese>>Math>>English;
age=int(year2-year1);
}
intgetage()
{age=year2-year1;returnage;}
intgetnumber()
{returnnumber;}
stringgetname()
{returnname;}
文件代码分析:
当选择完选项后,系统就会调用相应函数,再输入相应的信息。
3.2输出模块
1.函数原形:
virtualvoiddisplay(),voiddisplay()
2.功能:
用来作为数组的输出,输出学生的信息(包括:
学号,姓名,性别,年龄,出生时间,三科成绩,如今年份,平均成绩)
3.变量及类型:
int i , j :
循环控制变量。
4.说明:
在进入输出函数后,就会清屏,再在缓冲区域找到相应学生信息管理系统,并输出相应的学生信息。
5、模块代码及其相关注释
virtualvoiddisplay()
{
cout<<"学号姓名年龄性别出生时间如今年份语文
数学英语"< cout<<<""< }
voiddisplay()
{
cout<<"学号姓名年龄性别出生时间如今年份语文数学英语"< cout< < }
代码分析:
virtualvoiddisplay()是一个虚函数,每个派生类中都有voiddisplay()函数,当选择完所需的选项后,就会调用相应的voiddisplay()函数
,输出一年级或者二年级学生的信息。
4.总结
1、程序调试情况
图4主菜单
图5增加学生
图6显示所有学生
图7平均成绩
图8成绩排序
图9删除学生
图10按姓名检索
图11按性别输出
2.本组成员在程序设计中感想
雷娜:
这是我们第二次做课程设计,虽然比第一次多了很多的经验,但是不知道是因为题目比上次要难,还是因为我们对C++的掌握没那么透彻,我们需要不停的翻阅课本,或者从网上查找一些我们在书本上找不到的资料,所以感觉花费的时间比一次还要多。
这次课程设计虽然完成的有点艰辛,但是我觉得自己收获的不少知识,通过这次做课程设计,我发现了自己在C++上的一些问题,对类的继承掌握的不够,对运算符的重载也不是怎么理解,还有就是缺乏刻苦专研的精神,总是遇到一点难题就选择退缩,还有点喜欢拖拖拉拉,总是喜欢把今天的事,拖到明天。
通过这次实验让我知道了,编程需要细心,尤其是那么比较复杂的程序,要想理清自己的思路再做,不能想到哪就做到哪,这样反而会弄巧成拙,只有一步一个脚印,踏踏实实,才能更好地完成任务。
聂佩:
通过这次做课程设计,我发现自己很多的不足,对于书本知识掌握的不够好,特别是继承与派生、虚函数以及运算符重载这部分的内容自己理解得还不够透彻,不能熟练应用,总是要通过不断地翻书,问同学,上网搜等方法去编写程序。
而且在这次课程设计中,我发现自己存在严重的畏难情绪,遇到难题就不去做想放弃,没有去试着解决难题就开始打退堂鼓,而且编程不够耐心与细心。
在编程时只是想到什么就写什么,没有全局思维,总是改了就改。
在这一次编程过程中遇到许多问题,同时也让我们学到了很多,认识到自己的不足之处,从而在以后改正并警醒。
周慧:
相比第一次的课程设计,在此次课程设计中,更加体会到程序的严密性,在查漏补缺的过程中,发现很多细节稍微不注意就可能导致程序出现很大的错误。
而且在设计程序当中方法多种,通过我们小组的每个成员的努力结合大家对自己编程部分的认识,共同解决了程序运行的错误问题。
在小组成员的积极配合中,也让我认识到了程序设计语言往往需要团队精神,而且在诸多问题中,我们还可以通过查阅书籍和上网了解,这样才能更快得学到我们所需要的知识点。
向静:
相比第一次做课程设计有了一