《《C++程序设计》课程设计公司人员管理系统.doc》由会员分享,可在线阅读,更多相关《《C++程序设计》课程设计公司人员管理系统.doc(25页珍藏版)》请在三一办公上搜索。
1、 课程设计说明书 课 程 名 称: C+程序设计 年级/专业/班: 2008级网工一班 学 生 姓 名: 学 号: 指 导 教 师: 目 录摘 要- 1 -一、引 言- 2 -二、设计目的与任务- 2 -三、设计方案- 2 -1、总体设计- 2 -2、详细设计- 2 -3、程序清单- 2 -4、程序调试与体会- 2 -5、运行结果- 2 -四、结 论- 2 -五、致 谢- 2 -六、参考文献- 3 -摘 要本课程设计的目的是设计一个公司人员管理的程序,用来实现对人员的管理,其中包括人员的添加、删除、查询等问题。根据面向对象编程的思想,设计了一个经理类来封装telem的姓名、性别、生日、编号、工
2、作地点、工作时间、年龄等相关信息以及获取人员相关信息的方法等,然后通过指针来实现信息的插入、删除和查询等相关操作从而达到统计信息的。通过C+课程设计,使学生能够将学到的面向对象的设计思想运用在具体的工作和学习中,加深对类和对象的理解,要求学生对生活中许多具体的事物抽象出类,并掌握继承和派生类、基类、虚函数和多态的概念.通过这次课程设计掌握C+语言程序设计的编程思想,为后续课程打下基础,同时培养我实际操作能力和实践能力,为以后的工作打下坚实的基础。C+程序设计课程设计-公司人员管理系统一、引 言本课程设计要实现的是一个管理公司人员信息的程序,为公司的管理工作设计了一个方便的解决方案。公司人员的管
3、理是公司的一项重要工作,依据公司人员地身份可以将人员分类,主要有四类人员:经理、兼职技术人员、销售经理和兼职推销员。现在,需要存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信息。所以,管理工作对于公司至关重要。,我们通过所学的相关知识来设计一个管理人员信息的程序,实现人员信息的插入、删除、查询以及相应的文件操作。其中经理信息和员工信息可以用C+中的类进行封装,然后把各个对象插入到链表中来实现人员信息的保存以便以后的查询、删除等操作。二、 设计目的与任务1、通过课程设计更进一步理解C+的基础知识和面向对象的思想;2、培养用系统的观点和软件开发一般规范认识软件开发,为以后的软件开
4、发奠定基础。并在此过程中培养严谨的科学态度和良好的工作作风。初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3、熟练掌握C+中类及类所具备的功能在程序中的应用,并熟练了解类中函数的调用。三、设计方案1、总体设计根据问题描述和要求,系统要求能够按姓名或者编号显示、查找、增加、删除和保存各类人员的信息。确定程序至少应该具备如下功能:“查询人员”、“增加人员”、“删除人员”、“数据存盘”基本模块。该程序包括以下功能模块: 1) 从键盘录入全部人员记录模块:可一次增加多位人员地记录,并能够将人员基本信息保存到文件中。2) 人员信息添加模块:增加一位人员的记录,选择录入人员地身
5、份,并能够将人员基本信息保存到文件中。3) 显示全部人员记录模块:直接显示经理和普通人员的姓名、性别、编号、工作部门、出生日期以及参加工作时间。4) 计算人员平均年龄模块:计算经理平均年龄和计算员工平均年龄5) 删除人员信息模块:包含删除经理信息操作和删除员工信息操作两个子模块,分别实现能够删除经理和员工的信息6) 按部门输出人员信息模块:能够按要求输出员工的姓名等相关信息,它包括输出经理信息操作和输出员工信息操作两个子模块。7) 按姓名或编号输出人员信息模块:能够按姓名或编号输出员工的姓名等相关信息,它包括检索经理信息和检索员工信息两个子模块。8) 帮助及退出模块:能够显示程序的帮助信息并能
6、有效的退出程序。9)退出模块:能有效的退出程序。2、详细设计1) 执行操作,如添加、删我们设计一个程序对学生C语言、数学、英语、体育、分析成绩进行统计,对学生的成绩进行可除、查询等等。2) 实现菜单实现选择、输入学生信息并保存到文件中、计算每个学生的总分与平均分并排序、根据学号修改学生信息、根据学号删除学生信息、根据学号查询学生信息、够根据姓名、班级查询学生信息和按照班级和科目计算平均分。3、程序清单#include #include #include #include #include #include #define maxsize 100 /定义最大的容量fstream iofile;
7、class Time public: int year; int month; int day; ; class Telem public: char name20; char sex10; Time birthtime; char num20; char workpart20; Time worktime; int year; friend istream& operator(istream& input,Telem& T); friend ostream& operator(ostream& output,Telem& T); friend int operator-(Time & t1,
8、Time & t2); ; class People public: People(); virtual void AddF()=0; virtual void Addall()=0; virtual void Add()=0; virtual void Display(); virtual void Displaypart(char p); virtual void Findname(char n); virtual void Findnum(char m ); virtual int Aveyear(); virtual void Del(char n)=0; virtual void D
9、el(int ); protected: Telem datamaxsize; Time now; int length; ; class Manager:virtual public People public: virtual void AddF(); virtual void Addall(); virtual void Add(); virtual void Display(); virtual void Del(int i); virtual void Del(char n); ; class Employee:virtual public People public: virtua
10、l void AddF(); virtual void Addall(); virtual void Add(); virtual void Display(); virtual void Del(int i); virtual void Del(char n); ; People:People() length=0; now.year=2011; now.month=5; now.day=24; void People:Display() int i; for(i=0;ilength;i+) coutdatai; void People:Displaypart(char p) /按要求输出人
11、员信息 int i,c; for(i=0;ilength;i+) if(strcmp(datai.workpart,p)=0) cout选择输出的内容: endlsetw(30)1 姓名 endlsetw(30)2 性别 endlsetw(30)3 编号 endlsetw(30)4工作地点 endlsetw(30)5 出生日期endlsetw(30)6 工作时间endlsetw(30)7 年龄 endlsetw(30)8 退出选择endl; cout_endl;coutc) cout输出:;switch(c) case 1: cout姓名:datai.nameendl;break; case
12、2: cout性别:datai.sexendl;break; case 3: cout编号:datai.numendl;break; case 4: cout工作地点:datai.workpartendl;break; case 5: cout出生日期:datai.birthtime.year datai.birthtime.month datai.birthtime.day endl;break; case 6: cout工作时间:datai.worktime.year datai.worktime.month datai.worktime.day endl;break; case 7: c
13、out年龄:datai.yearendl;break; case 8: goto loop; default:cout操作错误.endl; loop:; void People:Findname(char n) /按姓名查找 int i; for(i=0;ilength;i+) if(strcmp(datai.name,n)=0) coutdatai; void People:Findnum(char m) /按编号查找 int i; for(i=0;ilength;i+) if(strcmp(datai.num,m)=0) coutdatai; int People:Aveyear() /求
14、平均年龄 int i,s=0; for(i=0;ilength;i+) s+=datai.year; return s/length; void People:Del(int i) int j; if(ilength) cout不存在第i个元素; for(j=i;jlength;j+) dataj-1=dataj; length-; void Employee:AddF() int flag=0; iofile.open(Employee_information.txt,ios:in|ios:binary); while(iofile.seekg(ios:cur) iofile.seekg(l
15、ength*sizeof(datalength),ios:beg); iofile.read(char*)&datalength,sizeof(datalength); length+; if(length=maxsize) flag=1; goto loop; People:Del(length); cout添加人员信息成功.endl; loop: if(1=flag) cout人员信息储存空间已满.datalength; datalength.year=now-datalength.birthtime; iofile.write(char*)&datalength,sizeof(datal
16、ength); cout添加人员信息成功.endl; length+; if(length=maxsize) flag=1; goto loop; coutans; while(y=ans|Y=ans); loop: if(1=flag) cout人员信息储存空间已满.datalength; datalength.year=now-datalength.birthtime; iofile.write(char*)&datalength,sizeof(datalength); cout添加人员信息成功.endl; length+; loop: if(1=flag) cout人员信息储存空间已满.
17、endl; iofile.close(); void Employee:Display() /显示员工信息 cout*员工信息*endl; if(0=length) cout无.endl; int i; for(i=0;ilength;i+) coutdatai;cout-endl; void Employee:Del(char n) /按姓名删除员工信息 int i,j,k; for(i=0;ilength;i+) if(strcmp(datai.name,n)=0) k=i+1;break; if(k1) cout不存在姓名n的人员信息; for(j=k;jlength;j+) dataj
18、-1=dataj; length-; cout删除人员信息成功.endl; void Employee:Del(int i) /按位置删除员工信息 int j; if(ilength) cout不存在第i个元素; else for(j=i;jlength;j+) dataj-1=dataj; length-; cout删除成功.endl; void Manager:AddF() int flag=0; iofile.open(Manager_information.txt,ios:in|ios:binary); while(iofile.seekg(sizeof(datalength),ios
19、:cur) if(iofile.seekg(length*sizeof(datalength),ios:beg) iofile.read(char*)&datalength,sizeof(datalength); else break; length+; if(length=maxsize) flag=1; goto loop; People:Del(length); cout添加人员信息成功.endl; loop: if(1=flag) cout人员信息储存空间已满.datalength; datalength.year=now-datalength.birthtime; iofile.wr
20、ite(char*)&datalength,sizeof(datalength); cout添加人员信息成功.endl; length+; if(length=maxsize) flag=1; goto loop; coutans; while(y=ans|Y=ans); loop: if(1=flag) cout人员信息储存空间已满.datalength; datalength.year=now-datalength.birthtime; iofile.write(char*)&datalength,sizeof(datalength); cout添加人员信息成功.endl; length+
21、; loop: if(1=flag) cout人员信息储存空间已满.endl; iofile.close(); void Manager:Display() /显示经理的信息 cout*经理信息*endl; if(0=length) cout无.endl; int i; for(i=0;ilength;i+) coutdatai; cout-endl; void Manager:Del(char n) /按姓名删除经理的信息 int i,j,k; for(i=0;ilength;i+) if(strcmp(datai.name,n)=0) k=i+1;break; if(k1) cout不存在
22、姓名n的人员信息; for(j=k;jlength;j+) dataj-1=dataj; length-; cout删除人员信息成功.endl; void Manager:Del(int i) /按位置删除经理信息 int j; if(ilength) cout不存在第i个元素endl; elsefor(j=i;jlength;j+) dataj-1=dataj; length-; cout删除成功.(istream& input,Telem& T) int y,m,d; cout请输入姓名(以#结尾):endl; input.getline(T.name,20,#); cout请输入性别(以
23、#结尾 男或女):endl; input.getline(T.sex,10,#); cout编号(以#结尾):endl; input.getline(T.num,20,#); cout工作部门(以#结尾):endl; input.getline(T.workpart,20,#); cout请输入出生日期:ymd; T.birthtime.year=(y=1900&y=1&m=1&d=31)?d:1; cout参加工作时间:ymd; T.worktime.year=(y=1900&y=1&m=1&d=31)?d:1; return input; ostream& operator(ostream
24、& output,Telem& T) cout姓名:; outputT.nameendl; cout性别:; outputT.sexendl; cout编号:; outputT.numendl; cout工作部门:; outputT.workpartendl; cout出生日期:; outputT.birthtime.year T.birthtime.month T.birthtime.dayendl; cout参加工作时间:; outputT.worktime.year T.worktime.month T.worktime.dayendl; cout年龄:; outputT.yearend
25、l; return output; int operator-(Time & t1,Time & t2) return t1.year-t2.year; void mima() /定义管理员的密码system(color 88);system(cls);int administor;int password;coutendlendlendl 公司人员管理系统 endlendl;cout *endlendlendl;coutadministor;coutendl;coutpassword;coutendl;cout *endlendlendl;if(administor=1)if(passwor
26、d=1)cout-登陆成功!-endl;system(pause);elsecout-密码错误,请重新输入!-endlendl;mima();elsecout-用户名错误,请重新输入!-endlendl;mima();void Showmenu() /主菜单 system(color f9);system(cls);cout*endl; cout 公 司 人 员 管 理 系 统 endl; cout endl;cout * 0-从文件录入全部人员记录* endl; cout * 1-从键盘录入全部人员记录* endl; cout * 2-增加一位人员记录 * endl; cout * 3-显示
27、全部人员记录 * endl; cout * 4-计算人员平均年龄 * endl;cout * 5-删除一个人员记录 * endl; cout * 6-按部门输出人员信息 * endl; cout * 7-按要去检索人员信息 * endl; cout * 8-显示菜单目录 * endl; cout * 9-结束程序运行 * endl;cout endl;cout*endl; void about() /关于公司人员管理系统system(color 87); system(cls);coutendlendlendl 公司人员管理系统 endlendl;cout *endlendlendl;cout
28、 版权所有 2010-2011 endlendlendl;cout 制作人:魏丹 endlendlendl;cout *endlendlendl;void addmenu() /增加人员菜单menu2:Manager man; Employee emp; People *pt=&man; People *ps=&emp; int c=0,k=0,l=0,i=0; /char nam20,part20; system(cls);coutendlendl *从键盘增加一位人员(经理、普通员工)记录*endl; cout 1 增加经理信息 endl; cout 2 增加员工信息endl; cout
29、0 返回主菜单endl; cout *endl; coutk; if(1=k) system(cls);pt-Add();else if(2=k) system(cls);ps-Add();else if(0=k)/system(cls); Showmenu();return;else /system(cls);cout操作错误.endl; addmenu();return;goto menu2;int main() Manager man; Employee emp; People *pt=&man; People *ps=&emp; int c=0,k=0,l=0,i=0; char nam20,part20,num20; mima();Showmenu(); for(;)