1、 3.1输入模块(6) 3.2输出模块(7) 4.总结(8) 参考文献(12) 附录(13) 1 设计任务书 1.1题目与要求本组计划(成员为:周慧,向静,雷娜,聂佩合作)编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。具体要求如下:(1)建立学生信息数据,包括学号、姓名、性别、三科成绩、出生时间、年龄(必须计算得到)。(2)使用继承的方法构造至少3个类,(即学生类虚基类,一年级学生和二年级学生类派生类)使用相应的对象放置10个学生信息。(3)编写同名display()成员函数,用来输出数组的内容。(4)按不同类别输出学生信息,比如按性别。(可选功能)(5)要求对“”和“”运算符
2、进行重载。考虑到输人学号时,也会因不小心引人空格,而且名字中也需要有空格,所以重载“运算符时,需要满足这个要求。(6)抽取并计算学生的平均成绩。(7)按照至少一科成绩进行排序。(8)检索(查找)指定信息。(如按姓名检索)(9)参考界面如下:* 学生信息管理*增加学生*显示全部学生*计算平均成绩*删除一个学生*按年级输出学生信息*按性别输出学生信息*按姓名检索学生*结束程序运行(10)输出:相应的学生信息。根据分工,周慧的主要工作是运算符重载。根据分工,向静的主要工作是按成绩排序和按性别输出。根据分工,雷娜的主要工作是计算年龄和平均成绩。 根据分工,聂佩的主要工作是按姓名检索和按学号删除。 l.
3、2本系统涉及的知识点类、数组、循环、函数、分支、指针。利用虚函数由学生类派生出大一学生,大二学生这两个类。同名的display()函数,用来作为数组的输出。“”和“”运算符的重载,目的是为了避免输人学号时,因不小心引人空格,还有就是名字中也需要有空格。利用for语句进行按某一要求的排名,修改学生的相关信息,及求取学生的平均成绩。2 功能设计2.1 算法设计1、本系统需要实现的功能要求:(1)利用switch语句设计如图1所示的主菜单:请输入选项编号(011) 1增加一位一年级学生 2增加一位二年级学生 3显示所有学生 4计算一年级学生平均成绩 5- 计算二年级学生平均成绩 6按成绩排序一年级学
4、生的信息 7按成绩排序二年级学生的信息 8删除一年级学生的学号 9删除二年级学生的学号 10-按性别输出 11-按姓名检索 0-结束程序运行图 1 学生通讯录系统主菜单(2)选择6或者7后,调用排序函数,进入函数后利用switch语句实现一个如图2所示的菜单,该菜单中每个选项调用一个函数图2 成绩排序3、根据所选菜单设计相应的功能函数:(1) 输入函数cin:利用循环输入的方式,将有关信息存入数组,数组根据实际的人数,采用动态方式建立学生信息。(2) 输出函数display():循环输出数组中的内容。(3) 求平均分函数average:利用循环方式求得每个学生三科的平均成绩。2.2主要模块流程
5、图图3 学生信息管理系统流程图3.1输入模块1.函数原形: void getdata(),int getage(),int getnumber(),string getname(),double getaverage(),void meum(int &choice)2.功能:用来选择菜单和输入相应的学生信息(包括:学号,姓名,性别,年龄,出生时间,三科成绩,如今年份,平均成绩)3.变量及类型:s1i,s2i:对象数组变量。4、说明:执行完输入函数后,会在键盘缓冲区中保存回车键,后面再对字符型变量赋值时,会将缓冲区中的回车键当成数据存入变量中。5、模块代码及其相关注释void getdata()
6、 coutnumbernamesexyear1year2ChineseMathEnglish;age=int(year2-year1);int getage()age=year2-year1;return age; int getnumber() return number; string getname()return name;文件代码分析:当选择完选项后,系统就会调用相应函数,再输入相应的信息。 3.2输出模块virtual void display(),void display()用来作为数组的输出,输出学生的信息(包括:inti,j:循环控制变量。4.说明:在进入输出函数后,就会清屏
7、,再在缓冲区域找到相应学生信息管理系统,并输出相应的学生信息。5、模块代码及其相关注释virtual void display() cout学号 姓名 年龄 性别 出生时间 如今年份 语文 数学 英语number nameagesexyear1year2ChineseMathEnglish void display()学号 姓名 年龄 性别 出生时间 如今年份 语文 数学 英语year1 代码分析:virtual void display()是一个虚函数,每个派生类中都有void display()函数,当选择完所需的选项后,就会调用相应的void display()函数,输出一年级或者二年级
8、学生的信息。4.总结1、程序调试情况图4 主菜单图5 增加学生图6 显示所有学生图7 平均成绩图8 成绩排序图9 删除学生图10 按姓名检索图11 按性别输出2. 本组成员在程序设计中感想雷娜:这是我们第二次做课程设计,虽然比第一次多了很多的经验,但是不知道是因为题目比上次要难,还是因为我们对C+的掌握没那么透彻,我们需要不停的翻阅课本,或者从网上查找一些我们在书本上找不到的资料,所以感觉花费的时间比一次还要多。这次课程设计虽然完成的有点艰辛,但是我觉得自己收获的不少知识,通过这次做课程设计,我发现了自己在C+上的一些问题,对类的继承掌握的不够,对运算符的重载也不是怎么理解,还有就是缺乏刻苦专
9、研的精神,总是遇到一点难题就选择退缩,还有点喜欢拖拖拉拉,总是喜欢把今天的事,拖到明天。通过这次实验让我知道了,编程需要细心,尤其是那么比较复杂的程序,要想理清自己的思路再做,不能想到哪就做到哪,这样反而会弄巧成拙,只有一步一个脚印,踏踏实实,才能更好地完成任务。聂佩:通过这次做课程设计,我发现自己很多的不足,对于书本知识掌握的不够好,特别是继承与派生、虚函数以及运算符重载这部分的内容自己理解得还不够透彻,不能熟练应用,总是要通过不断地翻书,问同学,上网搜等方法去编写程序。而且在这次课程设计中,我发现自己存在严重的畏难情绪,遇到难题就不去做想放弃,没有去试着解决难题就开始打退堂鼓,而且编程不够
10、耐心与细心。在编程时只是想到什么就写什么,没有全局思维,总是改了就改。在这一次编程过程中遇到许多问题,同时也让我们学到了很多,认识到自己的不足之处,从而在以后改正并警醒。周慧:相比第一次的课程设计,在此次课程设计中,更加体会到程序的严密性,在查漏补缺的过程中,发现很多细节稍微不注意就可能导致程序出现很大的错误。而且在设计程序当中方法多种,通过我们小组的每个成员的努力结合大家对自己编程部分的认识,共同解决了程序运行的错误问题。在小组成员的积极配合中,也让我认识到了程序设计语言往往需要团队精神,而且在诸多问题中,我们还可以通过查阅书籍和上网了解,这样才能更快得学到我们所需要的知识点。向静:相比第一
11、次做课程设计有了一点经验,但是还是手忙脚乱的,其中也遇到很多的问题。这次课程设计相比上次来说好多了,上次的课程设计很多方面的只是都是在XX或者问别人才了解,但是这次所涉及的只是都是书上的知识点,如:继承、虚函数、虚基类等。不过由于自己对知识点掌握的不牢固,总是需要翻教科书才能继续下去,最后在我们组成员的共同努力下才完成这次设计。通过做课程设计,让我知道:我们做事情首先要打好基础,只有打好基础才能进一步巩固,而书上的知识是我们学习的最基本的东西。 参考文献【1】 陈维兴 林小茶 ,C+面向对象程序设计( 第二版),中国铁道出版社【2】 陈维兴 林小茶 ,C+面向对象程序设计习题解答与上机指导( 第二版),中国铁道出版社 附录#include stringusing namespace std;class studentpublic: virtual void display() int number,year1,year2,age; double Chinese, Math, English,sum,average; string name; string sex; friend ostream& operator(o
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1