人员信息管理系统课程设计.docx
《人员信息管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《人员信息管理系统课程设计.docx(34页珍藏版)》请在冰豆网上搜索。
人员信息管理系统课程设计
课程设计报告
课程:
人员信息管理系统
学号:
姓名:
班级:
教师:
徐州师范大学
计算机科学与技术学院
《课程设计指导书》
一、课程设计的目的
(1)熟练掌握C++语言的基本知识和技能;
(2)掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
(4)制作“人员信息管理系统”。
二、设计名称:
人员信息管理系统
三、设计要求
(1)建立人员信息数据,包括编号、姓名、性别、出生时间、岗位(部门)、参加工作时间和年龄(必须通过计算得到)等等其他信息;
(2)根据人员信息表,建立只含有姓名和年龄的信息简表(可选功能);
(3)使用继承的方法构造3个类,(即人员类——虚基类,教师类和学生类——派生类)使用相应的对象放置10个人员信息;
(4)编写同名display()成员函数,用来输出数组的内容;
(5)按不同类别输出人员信息,比如按系输出教师信息(可选功能);
(6)要求对“<<”和“>>”运算符进行重载。
考虑到输入人员编号时,也会因不小心引入空格,而且名字中也需要有空格,所以重载“>>’’运算符时,需要满足这个要求;
(7)抽取并计算人员的平均年龄;
(8)检索(查找)指定信息(如按姓名检索、按年龄检索);
(9)显示年龄分布的图形;
参考系统界面如下:
1-增加一位人员(教师、学生)记录
2-显示全部人员记录
3-计算人员平均年龄
4-删除一个人员记录
5-按岗位(部门)输出人员信息(可选)
6-按姓名检索所有信息
7-结束程序运行
四、设计过程
(1)分析题目
(2)建立Time,people类,以及People类的两个继承类Teacher,Student类
(3)定义People类的成员函数:
People();//构造函数,默认现今是2011年
virtualvoidAdd1()=0;//从文件录入
virtualvoidAdd2()=0;//从键盘录入
virtualvoidAdd()=0;//添加人员
virtualvoidDisplay();//显示人员信息
virtualvoidDisplaypart(charp[]);//按部门输出
virtualvoidcheckname(charn[]);//按姓名检索
virtualvoidcheckyear(int);//按年龄检索
virtualintaverage();//计算平均年龄
virtualvoidDel(charn[])=0;//按姓名删除
virtualvoidDel(int);//按位置删除
(4)建立main函数
(5)优化界面
五、设计细则
(1)将具体日期year,month,day成员数据定义为Time类的公有成员。
(2)类外分别实现各个类的具体实现,将People类定义为Teacher,Student类的虚基类。
(3)设计main()函数。
定义类的对象Teacherteacher1,Studentstudent1,用case语句选择对类对象的相关操作。
(4)定义People类的两个指针进行各自的操作。
六、说明
在选择类对象操作编号时,如果输入的字符不合法,跳出并再次输入,直至输入合法。
课程设计任务书
姓名
学号
班级
10计71
课题组
成员
姓名
分数
性别
班级
在本项目中的分工
赵轲
90
男
10计71
People类,两个继承类、main()函数,优化程序
王文闻
85
男
10计71
成员函数的具体实现的实现,实现多文件操作
管昌举
85
男
10计71
Time类的实现,界面优化
课程名称
人员信息管理系统
课程性质
综合性
设计时间
2011年09月01日——2011年09月14日
设计名称
人员信息管理系统
设计要求
(1)建立人员信息数据,包括编号、姓名、性别、出生时间、岗位(部门)、参加工作时间和年龄(必须通过计算得到)等等其他信息;
(2)根据人员信息表,建立只含有姓名和年龄的信息简表(可选功能);
(3)使用继承的方法构造3个类,(即人员类——虚基类,教师类和学生类——派生类)使用相应的对象放置10个人员信息;
(4)编写同名display()成员函数,用来输出数组的内容;
(5)按不同类别输出人员信息,比如按系输出教师信息(可选功能);
(6)要求对“<<”和“>>”运算符进行重载。
考虑到输入人员编号时,也会因不小心引入空格,而且名字中也需要有空格,所以重载“>>’’运算符时,需要满足这个要求;
(7)抽取并计算人员的平均年龄;
(8)检索(查找)指定信息(如按姓名检索、按年龄检索);
(9)显示年龄分布的图形;
参考系统界面如下:
1-增加一位人员(教师、学生)记录
2-显示全部人员记录
3-计算人员平均年龄
4-删除一个人员记录
5-按岗位(部门)输出人员信息(可选)
6-按姓名检索所有信息
7-结束程序运行
设计思路
与
设计过程
(1)分析题目
(2)建立Time,people类,以及People类的两个继承类Teacher,Student类
(3)定义People类的成员函数:
People();//构造函数,默认现今是2011年
virtualvoidAdd1()=0;//从文件录入
virtualvoidAdd2()=0;//从键盘录入
virtualvoidAdd()=0;//添加人员
virtualvoidDisplay();//显示人员信息
virtualvoidDisplaypart(charp[]);//按部门输出
virtualvoidcheckname(charn[]);//按姓名检索
virtualvoidcheckyear(int);//按年龄检索
virtualintaverage();//计算平均年龄
virtualvoidDel(charn[])=0;//按姓名删除
virtualvoidDel(int);//按位置删除
(4)建立main函数
(5)优化界面
计划与进度
计划:
9月1日—9月2日,分析人员信息管理系统的需求并抽象出people,time,及两个继承类;
9月3日,小组成员构想大体思路并明确分工;
9月4日—9月9日,小组各成员完成自己的任务,包括定义类,数据处理方式(9月6日小组成员查看进度);
9月10日,所有程序代码汇总,进行调试与运行,记录存在的问题;
9月11日—9月14日,分析运行结果,查找错误;
9月15日,书写课程设计指导书;
9月16日,上交课程设计相关材料。
进度:
9月1日—9月2日,分析人员信息管理系统的需求并理解其需求;
9月3日—9月4日,小组成员构想大体思路并明确分工;
9月5日—9月11日,小组各成员完成自己的任务,包括定义类,数据处理方式(9月8日小组成员查看进度);
9月12日,所有程序代码汇总,进行调试与运行,记录存在的问题;
9月13日,分析运行结果,查找错误,完善程序,优化界面;
9月14日,书写课程设计指导书;
9月16日,上交课程设计相关材料。
任课教师
意见
说明
设计名称:
人员信息管理系统日期:
2010年9月1日
设计内容:
函数声明与定义
设计目的与要求:
目的:
对C++实例化应用。
要求:
(1)建立人员信息数据,包括编号、姓名、性别、出生时间、岗位(部门)、参加工作时间和年龄(必须通过计算得到)等等其他信息;
(2)根据人员信息表,建立只含有姓名和年龄的信息简表(可选功能);
(3)使用继承的方法构造3个类,(即人员类——虚基类,教师类和学生类——派生类)使用相应的对象放置10个人员信息;
(4)编写同名display()成员函数,用来输出数组的内容;
(5)按不同类别输出人员信息,比如按系输出教师信息(可选功能);
(6)要求对“<<”和“>>”运算符进行重载。
考虑到输入人员编号时,也会因不小心引入空格,而且名字中也需要有空格,所以重载“>>’’运算符时,需要满足这个要求;
(7)抽取并计算人员的平均年龄;
(8)检索(查找)指定信息(如按姓名检索、按年龄检索);
(9)显示年龄分布的图形;
参考系统界面如下:
1-增加一位人员(教师、学生)记录
2-显示全部人员记录
3-计算人员平均年龄
4-删除一个人员记录
5-按岗位(部门)输出人员信息(可选)
6-按姓名检索所有信息
7-结束程序运行
设计环境或器材、原理与说明:
设计环境:
VC6.0操作环境
原理:
类的构造与使用
设计过程(步骤)或程序代码:
#include
#include
#include
#include
#definemaxnum2000//可以预设定最大管理人数为2000
fstreamiofile;
//Time类建立,用以记录日期,包括年月日
classTime
{
public:
intyear,month,day;
private:
};
//infor类建立,用以记录人员信息,包括姓名,性别,出生日期,编号,工作岗位,工作时间,年龄等
classinfor
{
public:
intyear;
charname[30];
charsex[10];
charnum[30];
charworkpart[30];
Timebirthtime;
Timeworktime;
friendistream&operator>>(istream&input,infor&T);//运算符重载,>>,只能为友元
friendostream&operator<<(ostream&output,infor&T);//运算符重载,<<
friendintoperator-(Time&t1,Time&t2);//运算符重载,-
private:
};
//People类建立,用以提供各种功能操作,是虚基类
classPeople//虚基类
{
public:
People();//构造函数,默认现今是2011年
virtualvoidAdd1()=0;//读取文件信息
virtualvoidAdd2()=0;//从键盘录入
virtualvoidAdd()=0;//添加人员
virtualvoidDisplay();//显示人员信息
virtualvoidDisplaypart(charp[]);//按部门输出
virtualvoidcheckname(charn[]);//按姓名检索
virtualvoidcheckyear(int);//按年龄检索
virtualintaverage();//计算平均年龄
virtualvoidDel(charn[])=0;//按姓名删除
virtualvoidDel(int);//按位置删除
protected:
infordata[maxnum];
Timenow;
intlength;//记录人员总数
};
//Teacher类建立,公有继承People类
classTeacher:
virtualpublicPeople
{
public:
voidAdd1();
voidAdd2();
voidAdd();
voidDisplay();
voidDel(inti);
voidDel(charn[]);
};
//Student类建立,公有继承People类
classStudent:
virtualpublicPeople
{
public:
voidAdd1();
voidAdd2();
voidAdd();
voidDisplay();
voidDel(inti);
voidDel(charn[]);
};
//People类的具体实现
People:
:
People()//构造函数
{
length=0;
now.year=2011;//默认现今是2011年
now.month=1;
now.day=1;
}
voidPeople:
:
Display()//Display函数
{
inti;
for(i=0;icout<}
voidPeople:
:
Displaypart(charp[])//Displaypart函数
{
inti,c;
for(i=0;iif(strcmp(data[i].workpart,p)==0)
{
cout<<"请选择输出:
1-姓名2-性别3-编号4-工作岗位5-出生日期6-工作时间7-年龄8-返回"<while(cin>>c)
{
switch(c)
{
case1:
cout<<"姓名:
"<case2:
cout<<"性别:
"<case3:
cout<<"编号:
"<case4:
cout<<"工作地点:
"<case5:
cout<<"出生日期:
"<case6:
cout<<"工作时间:
"<case7:
cout<<"年龄:
"<case8:
gotoloop;
default:
cout<<"操作错误!
"<}
}
loop:
;//返回
}
}
voidPeople:
:
checkname(charn[])//checkname函数
{
inti;
for(i=0;iif(strcmp(data[i].name,n)==0)
cout<}
voidPeople:
:
checkyear(intm)//checkyear函数
{
inti;
for(i=0;iif(data[i].year==m)
cout<}
//计算平均年龄
intPeople:
:
average()
{
inti,sum=0;
for(i=0;isum+=data[i].year;
returnsum/length;
}
//按编号删除人员信息
voidPeople:
:
Del(inti)
{
intj;
if(i<1||i>length)
cout<<"不存在第"<
for(j=i;jdata[j-1]=data[j];
length--;
}
//从文件中读取数据
voidStudent:
:
Add1()
{
iofile.open("Student_information.txt",ios:
:
in|ios:
:
binary);
while(iofile.seekg(ios:
:
cur))
{
iofile.seekg(length*sizeof(data[length]),ios:
:
beg);
iofile.read((char*)&data[length],sizeof(data[length]));
length++;
}
People:
:
Del(length);
cout<<"添加人员信息成功"<iofile.close();
}
//从键盘录入信息
voidStudent:
:
Add2()
{
charc;
iofile.open("Student_information.txt",ios:
:
out|ios:
:
binary);
do
{
cin>>data[length];
data[length].year=now-data[length].birthtime;
iofile.write((char*)&data[length],sizeof(data[length]));
cout<<"添加人员信息成功"<length++;
cout<<"contine(Y|N)?
";
cin>>c;
}while('y'==c||'Y'==c);
iofile.close();
}
//添加人员信息
voidStudent:
:
Add()
{
iofile.open("Student_information.txt",ios:
:
app|ios:
:
out|ios:
:
binary);
cin>>data[length];
data[length].year=now-data[length].birthtime;
iofile.write((char*)&data[length],sizeof(data[length]));
cout<<"添加人员信息成功"<length++;
iofile.close();
}
//显示信息
voidStudent:
:
Display()
{
cout<<"*********************学生信息************************"<if(length==0)
cout<<"无信息"<inti;
for(i=0;icout<}
//按姓名删除函数
voidStudent:
:
Del(charn[])
{
inti,j,k;
for(i=0;iif(strcmp(data[i].name,n)==0)
{
k=i+1;break;
}
if(k<1)
cout<<"不存在姓名"<for(j=k;jdata[j-1]=data[j];
length--;
cout<<"删除成功"<}
//按编号删除
voidStudent:
:
Del(inti)
{
intj;
if(i<1||i>length)
cout<<"不存在第"<
for(j=i;jdata[j-1]=data[j];
length--;
cout<<"删除成功"<}
//读取文件
voidTeacher:
:
Add1()
{
iofile.open("Teacher_information.txt",ios:
:
in|ios:
:
binary);
while(iofile.seekg(sizeof(data[length]),ios:
:
cur))
{
if(iofile.seekg(length*sizeof(data[length]),ios:
:
beg))
iofile.read((char*)&data[length],sizeof(data[length]));
else
break;
length++;
}
People:
:
Del(length);
cout<<"添加人员信息成功"<iofile.close();
}
//从键盘录入信息
voidTeacher:
:
Add2()
{
charcc;
iofile.open("Teacher_information.txt",ios:
:
in|ios:
:
out|ios:
:
binary);
do
{
cin>>data[length];
data[length].year=now-data[length].birthtime;
iofile.write((char*)&data[length],sizeof(data[length]));
cout<<"添加人员信息成功"<length++;
cout<<"contine(Y|N)?
";
cin>>cc;
}while('y'==cc||'Y'==cc);
iofile.close();
}
//添加人员信息
voidTeacher:
:
Add()
{
iofile.open("Teacher_information.txt",ios:
:
app|ios:
:
out|ios:
:
binary);
cin>>data[length];
data[length].year=now-data[length].birthtime;
iofile.write((char*)&data[length],sizeof(data[length]));
cout<<"添加人员信息成功"<length++;
iofile.close();
}
//显示函数
voidTeacher:
:
Display()
{
cout<<"*********************教师信息**************