人员信息管理系统课程设计_第1页
人员信息管理系统课程设计_第2页
人员信息管理系统课程设计_第3页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、人员信息管理系统课程设计报告课程:姓名:班级:教师:徐州师范大学计算机科学与技术学院课程设计指导书一、课程设计的目的(1)熟练掌握C+语言的基本知识和技能;(2)掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。(4)制作“人员信息管理系统”。二、设计名称:人员信息管理系统三、设计要求(1) 建立人员信息数据,包括编号、姓名、性别、出生时间、岗位(部门)、参加工作 时间和年龄(必须通过计算得到)等等其他信息;(2)根据人员信息表,建立只含有姓名和年龄的信息简表(可选功能);(3) 使用继承的方法构造 3个类,(即人员类一一虚基类,教师类和

2、学生类一一派生类)使用相应的对象放置10个人员信息;(4)编写同名display()成员函数,用来输出数组的内容;(5) 按不同类别输出人员信息,比如按系输出教师信息(可选功能);(6) 要求对“ <<”和“ >>”运算符进行重载。考虑到输入人员编号时,也会因不小心弓I入空格,而且名字中也需要有空格,所以重载“>> ”运算符时,需要满足这个要求;(7)抽取并计算人员的平均年龄;(8)检索(查找)指定信息(如按姓名检索、按年龄检索);(9 )显示年龄分布的图形;参考系统界面如下:1- 增加一位人员(教师、学生)记录2- 显示全部人员记录3- 计算人员平均年龄4

3、- 删除一个人员记录5- 按岗位(部门)输出人员信息(可选)6- 按姓名检索所有信息7- 结束程序运行四、设计过程(1 )分析题目(2)建立Time,people类,以及 People类的两个继承类 Teacher,Student类(3)定义People类的成员函数:virtual void Display。;People (); 构造函数,默认现今是2011年virtualvoid Add1()=0;/从文件录入virtualvoid Add2()=0;/从键盘录入virtualvoid Add()=0;/添加人员/显示人员信息virtual void Displaypart(char p)

4、; / 按部门输出 virtual void checkname(char n); 按姓名检索/按年龄检索/计算平均年龄/按姓名删除按位置删除virtual void checkyear(i nt );virtual int average。;virtual void Del(char n )=0;virtual void Del(i nt ); 建立main函数(5)优化界面五、设计细则(1) 将具体日期year,month,day成员数据定义为 Time类的公有成员。(2) 类外分别实现各个类的具体实现,将People类定义为Teacher,Student类的虚基类。(3) 设计 main

5、()函数。定义类的对象 Teacher teacher1 , Student student1 ,用 case 语句 选择对类对象的相关操作。(4) 定义People类的两个指针进行各自的操作。六、说明在选择类对象操作编号时,如果输入的字符不合法,跳出并再次输入,直至输入合法。课程设计任务书姓名学号班级10 计 71课题组成员姓名分数性别班级在本项目中的分工赵轲90男10 计 71People类,两个继承 类、main()函数,优 化程序王文闻85男10 计 71成员函数的具体实现 的实现,实现多文件 操作管昌举85男10 计 71Time类的实现,界 面优化课程名称人员信息管理系统课程性质综

6、合性设计时间2011年09月01日 2011年09月14日设计名称人员信息管理系统设计要求(1)建立人员信息数据,包括编号、姓名、性别、出生时间、岗位(部门)、参加工作时间和年龄(必须通过计算得到)等等其他信息;(2)根据人员信息表,建立只含有姓名和年龄的信息简表(可选功能);(3)使用继承的方法构造 3个类,(即人员类虚基类,教师类和学生类派生类)使用相应的对象放置10个人员信息;(4)编写同名display。成员函数,用来输出数组的内容;(5)按不同类别输出人员信息,比如按系输出教师信息(可选功能);(6) 要求对“和“ ? ”运算符进行重载。考虑到输入人员编号时,也会因不小心引入空格,而

7、且名字中也需要有空格,所以重载“ >>'运算符时,需要满足这个要求;(7)抽取并计算人员的平均年龄;(8)检索(查找)指定信息(如按姓名检索、按年龄检索);(9)显示年龄分布的图形;参考系统界面如下:1- 增加一位人员(教师、学生)记录2- 显示全部人员记录3- 计算人员平均年龄4- 删除一个人员记录5- 按岗位(部门)输出人员信息(可选)6- 按姓名检索所有信息/士 TfrT口 宀、二“一设计思路与设计过程八三结束程序运行(1)分析题目(2)建立Time,people类,以及People类的两个继承类 Teacher,Student 类(3) 定义People类的成员函数

8、:People();构造函数,默认现今是2011年virtualvoid Add1()=0;/ 从文件录入virtualvoid Add2()-0;/ 从键盘录入virtualvoid Add()=0;/ 添加人员virtual void Display。;II 显示人员信息virtual void Displaypart(char p);II 按部门输出virtual void check n ame(char n );按姓名检索virtual void checkyear(i nt );II 按年龄检索virtual int average。;计算平均年龄virtual void Del(

9、char n)=0;按姓名删除virtual void Del(i nt );II 按位置删除(4) 建立ma in函数(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日,分

10、析人员信息管理系统的需求并理解其需求;9月3日一 9月4日,小组成员构想大体思路并明确分工;9月5日一 9月11日,小组各成员完成自己的任务,包括定义类,数据处理方式(9月8日小组成员查看进度);9月12日,所有程序代码汇总,进行调试与运行,记录存在的问题;9月13日,分析运行结果,查找错误,完善程序,优化界面;9月14日,书写课程设计指导书;任课教师意见说明设计名称:人员信息管理系统日期:2010年9月1日设计内容:函数声明与定义设计目的与要求:目的:对C+实例化应用。要求:(1) 建立人员信息数据,包括编号、姓名、性别、出生时间、岗位(部门)、参加工作 时 间和年龄(必须通过计算得到)等等

11、其他信息;(2)根据人员信息表,建立只含有姓名和年龄的信息简表(可选功能);(3)使用继承的方法构造 3个类,(即人员类一一虚基类,教师类和学生类一一派生类)使用相应的对象放置 10个人员信息;(4)编写同名display。成员函数,用来输出数组的内容;(5) 按不同类别输出人员信息,比如按系输出教师信息(可选功能);6) 要求对“ <<”和“ >> ”运算符进行重载。考虑到输入人员编号时,也会因不小心运算符时,需要满足这个要求;编号,工作岗位,工作时/ 运算符重载, >>,只能为友引入空格, 而且名字中也需要有空格,所以重载“ >> '

12、'(7)抽取并计算人员的平均年龄;(8)检索(查找)指定信息(如按姓名检索、按年龄检索)(9)显示年龄分布的图形; 参考系统界面如下:1- 增加一位人员(教师、学生)记录2- 显示全部人员记录3- 计算人员平均年龄4- 删除一个人员记录5- 按岗位(部门)输出人员信息(可选)6- 按姓名检索所有信息7- 结束程序运行设计环境或器材、原理与说明: 设计环境: VC6.0 操作环境原 理:类的构造与使用设计过程(步骤)或程序代码: #include<iostream> #include<string> #include<fstream.h> #inclu

13、de<stdlib.h>#define maxnum 2000 / 可以预设定最大管理人数为 2000 fstream iofile;/Time 类建立,用以记录日期,包括年月日 class Time public:int year,month,day; private: ;/infor 类建立,用以记录人员信息,包括姓名,性别,出生日期, 间,年龄等class infor public:int year;char name30;char sex10;char num30;char workpart30;Time birthtime;Time worktime; friend is

14、tream& operator>> (istream& input,infor& T );friend ostream& operator<<(ostream& output,infor& T);friend int operator-(Time & t1,Time & t2);/运算符重载, - private: ;/People 类建立,用以提供各种功能操作,是虚基类class People/ 虚基类 public:People();/构造函数,默认现今是 2011 年virtual void Add1

15、()=0; virtual void Add2()=0;/读取文件信息/ 从键盘录入/运算符重载,<<virtual void Add()=0; / 添加人员virtual void Display(); / 显示人员信息virtual void Displaypart(char p);/按部门输出virtual void checkname(char n);/ 按姓名检索virtual void checkyear(int ); virtual int average();virtual void Del(char n)=0; virtual void Del(int );pro

16、tected:infor datamaxnum;Time now;int length; / 记录人员总数/ 按年龄检索/ 计算平均年龄 /按姓名删除/ 按位置删除;/Teacher 类建立,公有继承 People 类 class Teacher:virtual public People public:void Add1();void Add2();void Add();void Display();void Del(int i);void Del(char n);/Student 类建立,公有继承 People 类 class Student:virtual public People p

17、ublic:void Add1();void Add2();void Add();void Display();void Del(int i);void Del(char n);/People 类的具体实现People:People() / 构造函数 length=0;now.year=2011; / 默认现今是 2011 年 now.month=1; now.day=1;void People:Display() /Display 函数int i; for(i=0;i<length;i+) cout<<datai;void People:Displaypart(char p

18、) /Displaypart 函数 int i,c;for(i=0;i<length;i+) if(strcmp(datai.workpart,p)=0) cout<<" 请选择输出:1-姓名 2- 性别 3-编号 4-工作岗位 5-出生日期 6-工作 时间 7-年龄8- 返回 "<<endl; while(cin>>c) switch(c)case 1: cout<<" case 2: cout<<" case 3: cout<<" case 4: cout<

19、<" case 5: cout<<"姓名 :"<<<<endl;break;性别 :"<<datai.sex<<endl;break;编号 :"<<datai.num<<endl;break; 工作地点 :"<<datai.workpart<<endl;break; 出 生 日 期 :"<<datai.birthtime.year<<""<&l

20、t;datai.birthtime.month<<" "<<datai.birthtime.day<<" "<<endl;break;case 6: cout<<" 工 作 时 间 :"<<datai.worktime.year<<""<<datai.worktime.month<<" "<<datai.worktime.day<<" "<

21、<endl;break;case 7: cout<<" 年龄 :"<<datai.year<<endl;break; case 8: goto loop;default:cout<<" 操作错误 !"<<endl;loop:;/返回int i; for(i=0;i<length;i+) if(strcmp(,n)=0) cout<<datai;void People:checkyear(int m) /checkyear 函数int i; for(i=

22、0;i<length;i+) if(datai.year=m) cout<<datai;/计算平均年龄int People:average()int i,sum=0; for(i=0;i<length;i+) sum+=datai.year; return sum/length; /按编号删除人员信息 void People:Del(int i)int j;if(i<1|i>length)cout<<" 不存在第 "<<i<<" 个元素 "<<endl; for(j=i;

23、j<length;j+) dataj-1=dataj;length-; /从文件中读取数据 void Student:Add1() iofile.open("Student_information.txt",ios:in|ios:binary); while(iofile.seekg(ios:cur) iofile.seekg(length*sizeof(datalength),ios:beg); iofile.read(char*)&datalength,sizeof(datalength); length+;People:Del(length); cout

24、<<" 添加人员信息成功 "<<endl; iofile.close();/从键盘录入信息void Student:Add2()char c; iofile.open("Student_information.txt",ios:out|ios:binary); do cin>>datalength; datalength.year=now-datalength.birthtime; iofile.write(char*)&datalength,sizeof(datalength); cout<<&q

25、uot; 添加人员信息成功 "<<endl; length+; cout<<"contine(Y|N)?" cin>>c;while('y'=c|'Y'=c); iofile.close(); /添加人员信息 void Student:Add() iofile.open("Student_information.txt",ios:app|ios:out|ios:binary); cin>>datalength;datalength.year=now-dataleng

26、th.birthtime; iofile.write(char*)&datalength,sizeof(datalength); cout<<" 添加人员信息成功 "<<endl;length+;iofile.close();学生信息* "<<endl;/显示信息 void Student:Display() cout<<"if(length=0)cout<<" 无信息 "<<endl; int i;for(i=0;i<length;i+) cout

27、<<datai; /按姓名删除函数 void Student:Del(char n) int i,j,k;for(i=0;i<length;i+) if(strcmp(,n)=0) k=i+1;break;if(k<1)cout<<" 不存在姓名 "<<n<<" 的人员信息 " for(j=k;j<length;j+) dataj-1=dataj; length-;cout<<" 删除成功 "<<endl;/按编号删除void

28、 Student:Del(int i)int j;if(i<1|i>length)cout<<" 不存在第 "<<i<<" 个元素 "for(j=i;j<length;j+)dataj-1=dataj;length-;cout<<" 删除成功 "<<endl;/读取文件void Teacher:Add1() iofile.open("Teacher_information.txt",ios:in|ios:binary);while(iof

29、ile.seekg(sizeof(datalength),ios:cur) if(iofile.seekg(length*sizeof(datalength),ios:beg) iofile.read(char*)&datalength,sizeof(datalength); else break;length+;People:Del(length);cout<<" 添加人员信息成功 "<<endl; iofile.close();/从键盘录入信息void Teacher:Add2()char cc;iofile.open("Tea

30、cher_information.txt",ios:in|ios:out|ios:binary); docin>>datalength;datalength.year=now-datalength.birthtime;iofile.write(char*)&datalength,sizeof(datalength); cout<<"添加人员信息成功 "<<endl;length+;cout<<"contine(Y|N)?"cin>>cc;while('y'=cc

31、|'Y'=cc);iofile.close();/添加人员信息void Teacher:Add() iofile.open("Teacher_information.txt",ios:app|ios:out|ios:binary); cin>>datalength;datalength.year=now-datalength.birthtime;iofile.write(char*)&datalength,sizeof(datalength);cout<<" 添加人员信息成功 "<<endl;l

32、ength+;iofile.close();/显示函数void Teacher:Display()cout<<"*"<<e ndl;if(O=le ngth)coutvv"无信息"<<endl;int i; for(i=0;i<le ngth;i+) cout<<datai;删除人员信息函数,按姓名void Teacher:Del(char n )int i,j,k;for(i=0;i<length;i+) if(strcmp(,n)=0)k=i+1;break;if(k&l

33、t;1)coutvv"不存在姓名"<<n<<"的人员信息"for(j=k;j<le ngth;j+)dataj-1=dataj;length-;cout<<" 删除人员信息成功 "<<endl; /删除人员信息函数,按编号 void Teacher:Del(int i)int j; if(i<1|i>length)cout<<" 不存在第 "<<i<<" 个元素 " for(j=i;j<l

34、ength;j+)dataj-1=dataj;length-; cout<<" 删除成功 "<<endl;/ 运算符重载函数, >>istream& operator>>(istream & input,infor& T)int y,m,d;cout<<" 请输入姓名 ( 以空格作为结束的标志 ) :"<<endl; input.getline(T.name,20,' ');cout<<" 请输入性别 ( 以空格作为结束的

35、标志 ) :"<<endl; input.getline(T.sex,10,' ');cout<<" 编号(以空格作为结束的标志 ) :"<<endl; input.getline(T.num,20,' ');cout<<" 工作岗位 ( 以空格作为结束的标志 ) :"<<endl; input.getline(T.workpart,20,' ');cout<<" 请输入出生日期 :"<<end

36、l; input>>y>>m>>d;if(m>=1&&m<=12) else 参加工作时间 :"<<endl; input>>y>>m>>d;return input;/ 运算符重载函数 ,<<ostream& operator<<(ostream& output,infor& T)cout<<" 姓名: " output<<T.name<<endl;cout<&l

37、t;" 性别: " output<<T.sex<<endl;cout<<" 编号: " output<<T.num<<endl;cout<<" 工作部门: " output<<T.workpart<<endl;cout<<" 出生日期: "参加年工作时间 :"龄: "output<<T.year<<endl;return output;/运算符-重载in t ope

38、rator- (T ime &t1,Time &t2)retur n (t1.year-t2.year);/菜单函数 void showcaidan()coutvv"欢迎使用人员信息管理系统*"vve ndl;coutvv"*0-读取文件信息*"vve ndl;coutvv"*1-录入全部人员(教师、学生)信息*"vve ndl;coutvv"*2-增加一位人员(教师、学生)信息*"vve ndl;coutvv"*3-显示全部人员信息*"vve ndl;coutvv"*

39、4-计算人员平均年龄*"vve ndl;coutvv"*5-删除一个人员信息*"vve ndl;coutvv"*6-按部门输出人员信息(可选)*"vve ndl;coutvv"*7-按姓名或年龄检索所有信息*"vve ndl;coutvv"*8-显示菜单目录*"vve ndl;coutvv"*9-结束运行*"vve ndl;coutvv""vve ndl;/主函数 int main()Teacher teacher1;/建立对象Student student1;Pe

40、ople *p1=&teacher1;People *p2=&student1; int c,k,l,i; char nam20,part20; showcaidan();for( ; ; ) cout<<" 请选择操作 : " cin>>c;switch(c)case 0:cout<<"*正在读取教师信息 *"<<endl;p1->Add1();cout<<"*正在读取学生信息 *"<<endl;p2->Add1();1break;c

41、ase 1:cout<<"*输入教师信息 *"<<endl;p1->Add2();cout<<"*输入学生信息 *"<<endl;p2->Add2();break;case 2:cout<<"*1- 教师操作 2- 学生操作 *"<<endl; cin>>k;if(k=1) p1->Add();else if(2=k)p2->Add();elsecout<<" 操作错误 "<<endl

42、;break;case 3:p1->Display();p2->Display(); break;case 4:cout<<"*1- 教师操作2- 学生操作 *"<<endl;cin>>k;if(k=1)cout<<" 教师平均年龄 :"<<p1->average()<<endl;else if(k=2)cout<<" 学生平均年龄 :"<<p2->average()<<endl;elsecout<

43、<" 操作错误 "<<endl;break;case 5:cout<<"*1- 教师操作2- 学生操作 *"<<endl;cin>>k;if(k=1)cout<<"1- 按姓名删除2- 按位置删除 "<<endl;cin>>l;if (l=1)"<<endl;cout<<" 请输入要删除人员的姓名 ( 以空格作为结束的标志 )cin.getline(nam,20,' ');p1->

44、Del(nam);else if(l=2)cout<<" 请输入要删除人的位置: "<<endl; cin>>i; p1->Del(i);elsecout<<" 操作错误 "<<endl;else if(k=2)cout<<"1- 按姓名删除2-按位置删除 "<<endl;cin>>l;"<<endl;"<<endl;"<<endl;if (l=1)cout<&l

45、t;" 请输入要删除人员的姓名 ( 以空格作为结束的标志 )cin.getline(nam,20,' ');p2->Del(nam);else if(l=2)cout<<" 请输入要删除人的位置: "<<endl;cin>>i;p2->Del(i);elsecout<<" 操作错误 "<<endl;elsecout<<" 操作错误 "<<endl;break;case 6:cout<<"*1- 教师操作2- 学生操作 *"<<endl;cin>>k;if(k=1)cout<<" 请

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论