1、厦门理工学院c 课程设计学校人员信息管理系统C+面向对象程序设计课程设计报告(2012 2013学年 第 3学期)题 目: 学校人员信息管理系统 专 业: 班 级: 姓名学号: 指导教师: 成 绩: 一、 设计目的课程设计是学习C+程序设计的一个重要环节。通过课程设计的综合训练,可以使学生在学习理论知识并在实验中进行了一系列基本训练的基础上,进一步加强学生对实际问题分析、编程和动手能力的提高,强化综合应用能力,扩充知识,开阔视野。学生在熟练运用Visual C+ 6.0以后,通过使用Visual C+ 6.0的训练,扩展程序设计的知识面,提高综合应用C+知识能力的要求。二、设计内容设计一个学校
2、人员信息管理系统,可以实现对学校人事的信息管理。基本功能要求如下: (1)建立人员信息数据。包括学号(教工号)、姓名、性别、专业(工作系别部门)、出生时间、年龄。其中, 1)对学生,还包括3门课的成绩(Chinese, English, Mathematics)。三门课的成绩为int型数据。 2)对教师,还包括职称(如教授/副教授/讲师),工资(如1432.50)。工资为double型数据。(2)使用继承的方法构造3个类,对相应的对象放置10个学生(教师)信息。 People类虚基类 Student类派生类 Teacher类派生类(3)数据基本功能: 增加数据:AddData()函数。 删除数
3、据:DeleteData()函数。根据学号(教工号),删除该人员的记录。 修改数据: UpdateData()函数。对学生,根据学号,能够修改3门课的成绩;对教师,根据教工号,能够修改“职称”和“工资”。 查找功能:1)SearchData()函数。要求能够根据“学号(教工号)”、“姓名”、“性别”三项实现查询,并能在屏幕上显示满足条件的数据记录。2)FindMaxData()函数。对学生,查找“English”课程成绩最高的学生记录并打印;对教师,查找“工资”最高的教师记录并打印。要求:采用函数模板实现。 显示功能:DisplayData()函数。在屏幕上打印所有的数据记录;打印时,先打印学
4、生的记录,后打印教师的记录。并且按学生(教工号)升序打印。(4)重载功能: 要求对“”和“”运算符进行重载。考虑到输人学生(教工)姓名时,名字中可能引入空格,所以重载“”运算符时,需要满足这个要求。(5)异常处理功能: 设置异常处理,对教师工资为负数的情况给出提示。(6)文件的输入输出功能: 能够从文件中读入数据。外部文件为Student_ext.dat, Teacher_ext.dat。 能够将数据保存到相应目录的文件中。保存数据时,分两个文件分别保存Student.dat, Teacher.dat。(7)参考系统界面如示: 1-增加一位人员(教师、学生)记录 2-删除一个人员记录 3-修改
5、一个人员记录 4-根据“学号(教工号)”、“姓名”、“性别”查找记录 5-根据人员类别(学生、教师)查找“English”课程成绩最高的学生,或最高工资的教师 6-显示全部人员记录 7-从外部文件追加数据 8-将所有数据保存到磁盘文件 9-退出系统。三、总体设计1、系统类的层次关系 people类基类 包含的数据成员:学号(教工号)、姓名、性别、出生时间、年龄。student类派生类扩充的数据成员:Chinese, English, Mathematics三门成绩,选修课成绩,选修课名称,专业。 teacher类派生类 扩充的数据成员:还包括职称(如教授/副教授/讲师),工资,所教课程,所 属
6、部门。2、类的主要框架描述1、基类:class peoplepublic: int num; string name; string sex; string birthday; int age; people(int num1,string name1,string sex1,string birthday1,int age1) num=num1; name=name1; sex=sex1; birthday=birthday1; age=age1; ;2、学生类:class student:virtual public peoplepublic: string major; string l
7、esson; int score; int Chinese; int English; int Mathematics; student(int num1=0,string name1=,string sex1=,string birthday1=,int age1=0, string major1=,string lesson1=,int score1=0,int Chinese1=0,int English1=0,int Mathematics1=0): people(num1,name1,sex1,birthday1,age1) major=major1; lesson=lesson1;
8、 score=score1; Chinese=Chinese1; English=English1; Mathematics=Mathematics1; void AddData() system(cls); coutnum; for(int k=1;k11;k+) if(num=k) k=11; if(k=11) cout请输入10以内的学号:endl; AddData(); coutname; coutsex; coutmajor; coutbirthday; coutage; coutChinese; cinEnglish; cinMathematics; coutlesson; cou
9、tscore; void DisplayData() cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *endl; cout*学号 姓名 性别 专业 出生时间 年龄 语文 英语 数学 选修课名 选修课*endl; cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *endl; coutnum nametsex major tbirthday age ChinesetEnglishtM
10、athematicstlessontscoretendl; cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *endl; void save(ofstream &outf) outf学号 姓名 性别 专业 出生时间 年龄 语文 英语 数学 选修课名 选修课endl; outfnum nametsex major tbirthday age ChinesetEnglishtMathematicstlessontscoretnumnamesexmajorbirthdayageChineseE
11、nglishMathematicslessonscore; stu10;3、教师类:class teacher:virtual public peoplepublic: string department; string lesson; string job; double salary; teacher(int num1=0,string name1=,string sex1=,string birthday1=,int age1=0,string department1=,string lesson1=,double salary1=0,string job1=): people(num1,name1,sex1,birthday1,age1) department=department1; lesson=lesson1; salary=salary1; job=job1; void AddData() system(cls); coutnum; for(int k=1;k11;k+) if(num=k) k=11; if(k=11) cout请输入10以内的教工号endl; AddData(); coutname; coutsex; coutdepartment; coutlesson; coutbirthday; cout请输入
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1