1、人员信息管理系统论文北 华 航 天 工 业 学 院基于C+的面向对象程序设计实例课程设计报告报告题目: 公司人员信息管理系统 作者所在系部: 计算机系 作者所在专业: 计算机科学与技术 作者所在班级: 作 者 姓 名 : 指导教师姓名: 完 成 时 间 : 2009-6-25 北华航天工业学院教务处制摘 要在当前的市场经济体制下,企业要想提高市场的竞争力,不但要有好的产品,同时内部也要有科学的管理和劳动报酬的合理分配,就必须拥有一套完善的并且适合自身特点的信息化管理系统,以统计公司员工的信息、完善内部管理、明确各员工的分工、使劳动报酬的分配更合理、更便于操作。本文利用VC+6.0编写程序,实现
2、了公司对员工个人信息的统计和工资的计算。本程序将员工的信息存储在文本文档中(txt格式),便于对员工信息的浏览。本系统主要有五个功能模块:添加员工信息、查询员工信息、修改员工信息、删除员工信息、显示员工信息。已经过全面的系统测试,能够很好的运行,达到了预期的效果。关键词:程序设计 公司信息管理 文本文档 工资计算摘要 第1章 绪 论1.1 课程设计的目的 11.2课程设计的背景和意义 11.2.1课程设计的背景 1 1.2.2课程设计的意义 1 1.3课程设计环境 1 第2章 需求分析 2 21 问题描述 2 22 功能要求 2 23 问题的解决方案 2第3章 系统设计 3 31 数据设计 3
3、 311 类设计 3 312 类之间的关系 3 313 函数设计 3 32 结构设计 4 321 系统流程图 4 322 界面设计 8 第4章 系统实现 8 41 类实现 8 42 函数实现 9 43 主函数实现 18 第5章 系统测试 195.1模块测试 195.2课程设计过程中遇到的问题 26总结 26致谢 26参考文献 26附录 27第一章 绪论11 课程设计的目的(1)要求学生达到熟练掌握C+语言的基本知识和技能(2)基本掌握面向对象程序设计的基本思路和方法(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。12 课程设计的背景和意义121 课程设计的背景 1. 理论研
4、究基础本次课程设计,主要研究类的继承、友员函数、函数的调用以及对文件进行各项操作(如添加、修改、删除、查询、显示等)。这次课程设计应用面向对象的程序设计思路,着重使用在C+中对文本文件进行添加、查找、删除、修改等操作。根据公司中不同员工工资的不同计算方法计算并储存员工的工资及其他信息。2. 技术层面的支持 (1)C+面向对象程序设计中类的多重继承和多级继承 (3)C+ I/O流库的处理,文本文件的创建与保存。 (4)VC6.0软件122 课程设计的意义通过设计能熟练掌握了C+语言的基本知识和技能、解决简单的面向对象程序设计问题、掌握面向对象程序设计的基本思路和方法、能熟练运用面向对象的方法以及
5、C+的编程思想来完成系统的设计。13 课程设计环境Windows xp 操作系统。CPU P4 1.6GHz,内存256兆以上。VC6.0第二章 需求分析21 问题描述某公司需要存储雇员的编号、姓名、级别和月薪,并显示全部信息。雇员分为经理、技术人员、销售人员和销售经理。四类人员的月薪计算方法如下:经理拿固定月薪8000元;技术人员按每小时100元领取月薪;销售人员按其当月销售额的4领取工资;销售经理既拿固定月薪也领取销售提成,固定月薪为5000元,销售提成为销售总额的5。设计一程序能够对公司人员进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。22 功能要求1.本程
6、序完成的功能主要有:(1)显示雇员信息。(2)添加雇员信息,并保存。(3)删除雇员信息,并保存。(4)修改雇员信息,并保存。(5)查询雇员信息。(6)系统退出。2.学生在完成本次课程设计的基本要求后,从便于用户使用和功能完整性的角度考虑进一步完善程序,请参照题目1和2的要求。23 问题的解决方案1.应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;2.分析系统中的各个实体及它们之间的关系; 3.根据问题描述,设计系统的类层次; 4.完成类层次中各个类的描述; 5.完成类中各个成员函数的定义; 6.完成系统的应用模块; 7.功能调试; 8.完成系统总结报告。第三章 系统设计31 数据设
7、计311 类设计 本程序中共定义了五个类:stuff(员工基类),manager(经理类),technician(技术人员类),seller(销售人员类),sellmanager(销售经理类)。stuff(员工基类)数据成员有:name(姓名),sex(性别),num(编号),monpay(月薪);成员函数有:void display1();(输出函数)void getin_0();(读入姓名,编号,性别)void getin_();(从文件中读取数据的函数)friendvoidgetin1(manager*p_manager1,int &i1);(从文件中读取经理数据)friend void
8、 getin1(technician*p_technician1,int &j1); (从文件中读取技术人员数据)friend void getin1(seller*p_seller1,int &m1); (从文件中读取销售人员数据)friend void getin1(sellmanager*p_sellmanager1,int &n1); (从文件中读取销售经理数据)friend void putout1(manager*p_manager1,int &i1); (向文件中输出经理数据)friend void putout1(technician*p_technician1,int &j1
9、); (向文件中输出技术人员数据)friend void putout1(seller*p_seller1,int &m1); (向文件中输出销售人员数据)friend void putout1(sellmanager*p_sellmanager1,int&n1); (向文件中输出销售经理数据)。manager(经理类)数据成员:pay(固定工资);成员函数:void getin_1();(计算经理的月薪)。technician(技术人员类)数据成员:hour(工作时间);成员函数:void getin_2();(计算技术人员的月薪)。seller(销售人员类)数据成员:market(月销售额
10、)rate(提成率),dedu(提成);成员函数:void getin_2();(计算销售人员的月薪),sellmanager(销售经理类)成员函数:void wages();(计算销售经理的月薪)。上述类中的数据成员均是私有的,有利于数据的保护,成员函数为共有的。312 类之间的关系 manager(经理类),technician(技术人员类),seller(销售人员类)共有继承stuff(员工基类);sellmanager(销售经理类)共有继承manager(经理类),seller(销售人员类)员工基类中有公有的数据:姓名,性别,编号,月薪。公有的基本输入输出函数。销售经理的工资计算方法好
11、是销售人员和经理的工资之和。313 函数设计add(manager1,technician1,seller1,sellmanager1,i,j,m,n);(添加功能的实现)check(manager1,technician1,seller1,sellmanager1);(查询功能的实现)delet(manager1,technician1,seller1,sellmanager1);(删除功能的实现)change(manager1,technician1,seller1,sellmanager1);(修改功能的实现)p=esc();(退出功能的实现)realize();(调用各个功能函数)32
12、 结构设计321 系统流程图图31图32图33 图34 图35 图36图37322 界面设计 主菜单是一个功能选择菜单,里面包含了选择时各个功能的代号,由该语句输出cout 添加,查询,删除,修改,退出 endl;cout请输入需要进行的操作的代号:endl;子菜单的作用是选择不同的员工由该语句输出cout经理1,技术人员2,销售人员3,销售经理4endl;第四章 系统实现41 类实现class stuffprotected: string name,sex;/定义姓名,性别,学号,月薪的变量 int num,monpay;public: void display1(); void getin
13、_0(); void getin_(); friend void getin1(manager*p_manager1,int &i1); friend void getin1(technician*p_technician1,int &j1); friend void getin1(seller*p_seller1,int &m1); friend void getin1(sellmanager*p_sellmanager1,int &n1); friend void putout1(manager*p_manager1,int &i1); friend void putout1(techni
14、cian*p_technician1,int &j1); friend void putout1(seller*p_seller1,int &m1); friend void putout1(sellmanager*p_sellmanager1,int &n1);/*定义经理类*/class manager:virtual public stuffprotected: int pay;/固定工资public: void getin_1();/计算经理月薪;/*定义技术人员类*/class technician:public stuffprivate: int hour;/工作时间public:
15、 void getin_2();/计算技术人员月薪;/*定义销售人员类*/class seller :virtual public stuffprotected: int market;/月销售额 float rate,dedu;/提成百分比,提成public: void getin_3();/计算销售人员月薪;/*定义销售经理类*/class sellmanager :public seller,public manager public: void wages();/计算销售经理月薪;42 函数实现/*类函数的定义*/void stuff:display1() cout姓名 编号 性别 月
16、薪endl; coutname num sex monpayendl;void stuff:getin_0() cout依次输入姓名,编号,性别namenumsex;void stuff:getin_()cinnamenumsexmonpay;void manager: getin_1()cout输入固定月薪pay;monpay=pay;void technician: getin_2()cout输入技术人员工作时间(单位:小时)hour;monpay=100*hour;void seller:getin_3()cout输入销售人员的月销售额和提成百分比或销售经理的销售总额和提成百分比mark
17、etrate;dedu=rate*market;monpay=dedu;void sellmanager:wages()monpay=pay+dedu;/*从文件中读取数据*/void getin1(manager*p_manager1,int &i1) ifstream infile1(经理.txt,ios:in ); if(!infile1) cerr经理文件打开失败(p_manager1+i1)-name(p_manager1+i1)-num(p_manager1+i1)-sex(p_manager1+i1)-monpay; infile1.close();void getin1(tec
18、hnician*p_technician1,int &j1) ifstream infile2(技术人员.txt,ios:in ); if(!infile2) cerr技术人员文件打开失败(p_technician1+j1)-name(p_technician1+j1)-num(p_technician1+j1)-sex(p_technician1+j1)-monpay; infile2.close();void getin1(seller*p_seller1,int &m1) ifstream infile3(销售人员.txt,ios:in ); if(!infile3) cerr销售人员文
19、件打开失败(p_seller1+m1)-name(p_seller1+m1)-num(p_seller1+m1)-sex(p_seller1+m1)-monpay; infile3.close();void getin1(sellmanager*p_sellmanager1,int &n1) ifstream infile4(销售经理.txt,ios:in ); if(!infile4) cerr销售经理文件打开失败(p_sellmanager1+n1)-name(p_sellmanager1+n1)-num(p_sellmanager1+n1)-sex(p_sellmanager1+n1)-
20、monpay; infile4.close();/*向文件中输出数据*/void putout1(manager*p_manager1,int &i1) int t; ofstream outfile1(经理.txt,ios:out); if(!outfile1) cerr输出文件打开失败endl; exit(1); for(t=0;ti1;t+) outfile1name num sex monpayendl; outfile1.close();void putout1(technician*p_technician1,int &j1) int t; ofstream outfile2(技术
21、人员.txt,ios:out); if(!outfile2) cerr输出文件打开失败endl; exit(1); for(t=0;tj1;t+) outfile2name num sex monpayendl; outfile2.close();void putout1(seller*p_seller1,int &m1) int t; ofstream outfile3(销售人员.txt,ios:out); if(!outfile3) cerr输出文件打开失败endl; exit(1); for(t=0;tm1;t+) outfile3name num sex monpayendl; out
22、file3.close();void putout1(sellmanager*p_sellmanager1,int &n1) int t; ofstream outfile4(销售经理.txt,ios:out); if(!outfile4) cerr输出文件打开失败endl; exit(1); for(t=0;tn1;t+) outfile4name num sex monpayendl; outfile4.close();/*定义添加功能函数*/void add(manager *p_manager1,technician *p_technician1,seller *p_seller1,s
23、ellmanager *p_sellmanager1,int &i1,int &j1,int &m1,int &n1)int str;cout经理1,技术人员2,销售人员3,销售经理4endl;cout输入要添加的员工的职称代号:str;if(str=1)cout即将添加的经理的编号:i1-1getin_0();(p_manager1+i1-1)-getin_1();(p_manager1+i1-1)-display1();else if(str=2)cout即将添加的技术人员的编号:j1-1getin_0();(p_technician1+j1-1)-getin_2();(p_technic
24、ian1+j1-1)-display1();else if(str=3)cout即将添加的销售人员的编号:m1-1getin_0();(p_seller1+m1-1)-getin_3();(p_seller1+m1-1)-display1();else if(str=4)cout即将添加的销售经理的编号:n1-1getin_0();(p_sellmanager1+n1-1)-getin_1();(p_sellmanager1+n1-1)-getin_3();(p_sellmanager1+n1-1)-wages();(p_sellmanager1+n1-1)-display1();else c
25、out请输入正确的职称!endl;/*定义查询功能函数*/void check(manager *p_manager1,technician *p_technician1,seller *p_seller1,sellmanager *p_sellmanager1)int t,str;cout经理1,技术人员2,销售人员3,销售经理4endl;cout请依次输入需要查询的员工的职称代号及其编号:strt;if(str=1)(p_manager1+t)-display1();else if(str=2)(p_technician1+t)-display1();else if(str=3)(p_seller1+t)-display1();else if(str=4)(p_sellmanager1+t)-display1();elsecout请输入正确的职称及编号!endl;/*定义删除函数*/void delet(manager *p_manager1,technician *p_technician1,sel
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1