厦门理工学院c课程设计学校人员信息管理系统.docx
《厦门理工学院c课程设计学校人员信息管理系统.docx》由会员分享,可在线阅读,更多相关《厦门理工学院c课程设计学校人员信息管理系统.docx(54页珍藏版)》请在冰豆网上搜索。
厦门理工学院c课程设计学校人员信息管理系统
《C++面向对象程序设计》
课程设计报告
(2012—2013学年第3学期)
题目:
学校人员信息管理系统
专业:
班级:
姓名学号:
指导教师:
成绩:
一、设计目的
课程设计是学习C++程序设计的一个重要环节。
通过课程设计的综合训练,可以使学生在学习理论知识并在实验中进行了一系列基本训练的基础上,进一步加强学生对实际问题分析、编程和动手能力的提高,强化综合应用能力,扩充知识,开阔视野。
学生在熟练运用VisualC++6.0以后,通过使用VisualC++6.0的训练,扩展程序设计的知识面,提高综合应用C++知识能力的要求。
二、设计内容
设计一个学校人员信息管理系统,可以实现对学校人事的信息管理。
基本功能要求如下:
(1)建立人员信息数据。
包括学号(教工号)、姓名、性别、专业(工作系别部门)、出生时间、年龄。
其中,
1)对学生,还包括3门课的成绩(Chinese,English,Mathematics)。
三门课的成绩为int型数据。
2)对教师,还包括职称(如教授/副教授/讲师),工资(如1432.50)。
工资为double型数据。
(2)使用继承的方法构造3个类,对相应的对象放置10个学生(教师)信息。
ØPeople类——虚基类
ØStudent类——派生类
ØTeacher类——派生类
(3)数据基本功能:
Ø增加数据:
AddData()函数。
Ø删除数据:
DeleteData()函数。
根据学号(教工号),删除该人员的记录。
Ø修改数据:
UpdateData()函数。
对学生,根据学号,能够修改3门课的成绩;对教师,根据教工号,能够修改“职称”和“工资”。
Ø查找功能:
1)SearchData()函数。
要求能够根据“学号(教工号)”、“姓名”、“性别”三项实现查询,并能在屏幕上显示满足条件的数据记录。
2)FindMaxData()函数。
对学生,查找“English”课程成绩最高的学生记录并打印;对教师,查找“工资”最高的教师记录并打印。
要求:
采用函数模板实现。
Ø显示功能:
DisplayData()函数。
在屏幕上打印所有的数据记录;打印时,先打印学生的记录,后打印教师的记录。
并且按学生(教工号)升序打印。
(4)重载功能:
Ø要求对“<<”和“>>”运算符进行重载。
考虑到输人学生(教工)姓名时,名字中可能引入空格,所以重载“>>”运算符时,需要满足这个要求。
(5)异常处理功能:
Ø设置异常处理,对教师工资为负数的情况给出提示。
(6)文件的输入输出功能:
Ø能够从文件中读入数据。
外部文件为Student_ext.dat,Teacher_ext.dat。
Ø能够将数据保存到相应目录的文件中。
保存数据时,分两个文件分别保存Student.dat,Teacher.dat。
(7)参考系统界面如示:
Ø1-增加一位人员(教师、学生)记录
Ø2-删除一个人员记录
Ø3-修改一个人员记录
Ø4-根据“学号(教工号)”、“姓名”、“性别”查找记录
Ø5-根据人员类别(学生、教师)查找“English”课程成绩最高的学生,或最高工资的教师
Ø6-显示全部人员记录
Ø7-从外部文件追加数据
Ø8-将所有数据保存到磁盘文件
Ø9-退出系统。
三、总体设计
1、系统类的层次关系
people类——基类
包含的数据成员:
学号(教工号)、姓名、性别、出生时间、年龄。
student类——派生类
扩充的数据成员:
Chinese,English,Mathematics三门成绩,选修课成绩,选修课名称,专业。
teacher类——派生类
扩充的数据成员:
还包括职称(如教授/副教授/讲师),工资,所教课程,所属部门。
2、类的主要框架描述
1、基类:
classpeople{
public:
intnum;
stringname;
stringsex;
stringbirthday;
intage;
people(intnum1,stringname1,stringsex1,stringbirthday1,intage1)
{
num=num1;
name=name1;
sex=sex1;
birthday=birthday1;
age=age1;
}
};
2、学生类:
classstudent:
virtualpublicpeople{
public:
stringmajor;
stringlesson;
intscore;
intChinese;
intEnglish;
intMathematics;
student(intnum1=0,stringname1="",stringsex1="",stringbirthday1="",intage1=0,
stringmajor1="",stringlesson1="",intscore1=0,intChinese1=0,intEnglish1=0,intMathematics1=0):
people(num1,name1,sex1,birthday1,age1)
{
major=major1;
lesson=lesson1;
score=score1;
Chinese=Chinese1;
English=English1;
Mathematics=Mathematics1;
}
voidAddData()
{
system("cls");
cout<<"请输入学号:
";
cin>>num;
for(intk=1;k<11;k++)
if(num==k)
k=11;
if(k==11)
{
cout<<"请输入10以内的学号:
"<AddData();
}
cout<<"请输入学生姓名:
";
cin>>name;
cout<<"请输入学生性别:
";
cin>>sex;
cout<<"请输入学生专业:
";
cin>>major;
cout<<"请输入学生出生时间:
";
cin>>birthday;
cout<<"请输入学生年龄:
";
cin>>age;
cout<<"请按顺序输入学生语文、英语、数学成绩:
";
cin>>Chinese;
cin>>English;
cin>>Mathematics;
cout<<"请输入选修课名:
";
cin>>lesson;
cout<<"请输入选修课成绩:
";
cin>>score;
}
voidDisplayData()
{
cout<<"**************************************"<cout<<"*"<<"学号"<<""<<"姓名"<<""<<"性别"<<""<<"专业"<<""<<"出生时间"<<""<<"年龄"<<""<<"语文"<<""<<"英语"<<""<<"数学"<<""<<"选修课名"<<""<<"选修课"<<"*"<cout<<"**************************************"<cout<cout<<"**************************************"<}
voidsave(ofstream&outf)
{
outf<<"学号"<<""<<"姓名"<<""<<"性别"<<""<<"专业"<<""<<"出生时间"<<""<<"年龄"<<""<<"语文"<<""<<"英语"<<""<<"数学"<<""<<"选修课名"<<""<<"选修课"<outf<}
voidload(ifstream&inf)
{
inf>>num>>name>>sex>>major>>birthday>>age>>Chinese>>English>>Mathematics>>lesson>>score;
}
}stu[10];
3、教师类:
classteacher:
virtualpublicpeople{
public:
stringdepartment;
stringlesson;
stringjob;
doublesalary;
teacher(intnum1=0,stringname1="",stringsex1="",stringbirthday1="",intage1=0,stringdepartment1="",stringlesson1="",doublesalary1=0,stringjob1=""):
people(num1,name1,sex1,birthday1,age1)
{
department=department1;
lesson=lesson1;
salary=salary1;
job=job1;
}
voidAddData()
{
system("cls");
cout<<"请按顺序输入教工号:
";
cin>>num;
for(intk=1;k<11;k++)
if(num==k)
k=11;
if(k==11)
{
cout<<"请输入10以内的教工号"<AddData();
}
cout<<"请输入教师姓名:
";
cin>>name;
cout<<"请输入教师性别:
";
cin>>sex;
cout<<"请输入教师工作系别部门:
";
cin>>department;
cout<<"请输入教师所教课程:
";
cin>>lesson;
cout<<"请输入教师出生时间:
";
cin>>birthday;
cout<<"请输入