人员信息管理系统论文_第1页
人员信息管理系统论文_第2页
人员信息管理系统论文_第3页
人员信息管理系统论文_第4页
人员信息管理系统论文_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

北华航天工业学院课程设计报告PAGE北华航天工业学院《基于C++的面向对象程序设计实例》课程设计报告报告题目:公司人员信息管理系统作者所在系部:计算机系作者所在专业:计算机科学与技术作者所在班级:作者姓名:指导教师姓名:完成时间:2009-6-25北华航天工业学院教务处制摘要在当前的市场经济体制下,企业要想提高市场的竞争力,不但要有好的产品,同时内部也要有科学的管理和劳动报酬的合理分配,就必须拥有一套完善的并且适合自身特点的信息化管理系统,以统计公司员工的信息、完善内部管理、明确各员工的分工、使劳动报酬的分配更合理、更便于操作。本文利用VC++6.0编写程序,实现了公司对员工个人信息的统计和工资的计算。本程序将员工的信息存储在文本文档中(txt格式),便于对员工信息的浏览。本系统主要有五个功能模块:添加员工信息、查询员工信息、修改员工信息、删除员工信息、显示员工信息。已经过全面的系统测试,能够很好的运行,达到了预期的效果。关键词:程序设计公司信息管理文本文档工资计算目录摘要Ⅰ第1章绪论1.1课程设计的目的11.2课程设计的背景和意义 11.2.1课程设计的背景11.2.2课程设计的意义11.3课程设计环境1第2章需求分析22.1问题描述22.2功能要求22.3问题的解决方案2第3章系统设计33.1数据设计33.1.1类设计33.1.2类之间的关系33.1.3函数设计33.2结构设计43.2.1系统流程图43.2.2界面设计8第4章系统实现84.1类实现84.2函数实现94.3主函数实现18第5章系统测试195.1模块测试195.2课程设计过程中遇到的问题26总结26致谢26参考文献26附录27PAGE1北华航天工业学院毕业论文第一章绪论1.1课程设计的目的(1)要求学生达到熟练掌握C++语言的基本知识和技能(2)基本掌握面向对象程序设计的基本思路和方法(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。1.2课程设计的背景和意义1.2.1课程设计的背景1.理论研究基础本次课程设计,主要研究类的继承、友员函数、函数的调用以及对文件进行各项操作(如添加、修改、删除、查询、显示等)。这次课程设计应用面向对象的程序设计思路,着重使用在C++中对文本文件进行添加、查找、删除、修改等操作。根据公司中不同员工工资的不同计算方法计算并储存员工的工资及其他信息。2.技术层面的支持(1)C++面向对象程序设计中类的多重继承和多级继承(3)C++I/O流库的处理,文本文件的创建与保存。(4)VC6.0软件1.2.2课程设计的意义通过设计能熟练掌握了C++语言的基本知识和技能、解决简单的面向对象程序设计问题、掌握面向对象程序设计的基本思路和方法、能熟练运用面向对象的方法以及C++的编程思想来完成系统的设计。1.3课程设计环境Windowsxp操作系统。CPUP41.6GHz,内存256兆以上。VC6.0第二章需求分析2.1问题描述某公司需要存储雇员的编号、姓名、级别和月薪,并显示全部信息。雇员分为经理、技术人员、销售人员和销售经理。四类人员的月薪计算方法如下:经理拿固定月薪8000元;技术人员按每小时100元领取月薪;销售人员按其当月销售额的4%领取工资;销售经理既拿固定月薪也领取销售提成,固定月薪为5000元,销售提成为销售总额的5‰。设计一程序能够对公司人员进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。2.2功能要求1.本程序完成的功能主要有:(1)显示雇员信息。(2)添加雇员信息,并保存。(3)删除雇员信息,并保存。(4)修改雇员信息,并保存。(5)查询雇员信息。(6)系统退出。2.学生在完成本次课程设计的基本要求后,从便于用户使用和功能完整性的角度考虑进一步完善程序,请参照题目1和2的要求。2.3问题的解决方案1.应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;2.分析系统中的各个实体及它们之间的关系;3.根据问题描述,设计系统的类层次;4.完成类层次中各个类的描述;5.完成类中各个成员函数的定义;6.完成系统的应用模块;7.功能调试;8.完成系统总结报告。第三章系统设计3.1数据设计3.1.1类设计本程序中共定义了五个类:stuff(员工基类),manager(经理类),technician(技术人员类),seller(销售人员类),sellmanager(销售经理类)。stuff(员工基类)数据成员有:name(姓名),sex(性别),num(编号),monpay(月薪);成员函数有:voiddisplay1();(输出函数)voidgetin_0();(读入姓名,编号,性别)voidgetin_();(从文件中读取数据的函数)friendvoidgetin1(manager*p_manager1,int&i1);(从文件中读取经理数据)friendvoidgetin1(technician*p_technician1,int&j1);(从文件中读取技术人员数据)friendvoidgetin1(seller*p_seller1,int&m1);(从文件中读取销售人员数据)friendvoidgetin1(sellmanager*p_sellmanager1,int&n1);(从文件中读取销售经理数据)friendvoidputout1(manager*p_manager1,int&i1);(向文件中输出经理数据)friendvoidputout1(technician*p_technician1,int&j1);(向文件中输出技术人员数据)friendvoidputout1(seller*p_seller1,int&m1);(向文件中输出销售人员数据)friendvoidputout1(sellmanager*p_sellmanager1,int&n1);(向文件中输出销售经理数据)。manager(经理类)数据成员:pay(固定工资);成员函数:voidgetin_1();(计算经理的月薪)。technician(技术人员类)数据成员:hour(工作时间);成员函数:voidgetin_2();(计算技术人员的月薪)。seller(销售人员类)数据成员:market(月销售额)rate(提成率),dedu(提成);成员函数:voidgetin_2();(计算销售人员的月薪),sellmanager(销售经理类)成员函数:voidwages();(计算销售经理的月薪)。上述类中的数据成员均是私有的,有利于数据的保护,成员函数为共有的。3.1.2类之间的关系manager(经理类),technician(技术人员类),seller(销售人员类)共有继承stuff(员工基类);sellmanager(销售经理类)共有继承manager(经理类),seller(销售人员类)员工基类中有公有的数据:姓名,性别,编号,月薪。公有的基本输入输出函数。销售经理的工资计算方法好是销售人员和经理的工资之和。3.1.3函数设计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();(调用各个功能函数)3.2结构设计3.2.1系统流程图stuffstuff员工基类manager经理类technician技术人员类seller销售人员类图3—1sellmanagersellmanager销售经理类seller销售人员类manager经理类图3—2stuffstuff员工基类voiddisplay1();输出函数 voidgetin_0();输入函数voidgetin1(manager*,int);voidgetin1(technician*,int);voidgetin1(seller*,int);voidgetin1(sellmanager*,int1);从文件中读取数据voidputout1(manager*,int);voidputout1(technician*,int);voidputout1(seller*1,int);voidputout1(sellmanager*,int)向文件中输出数据图3—3managermanager经理类voidgetin_1();计算经理月薪继承员工基类中的公有成员函数图3—4techniciantechnician技术人员类voidgetin_2();计算技术人员月薪继承员工基类中的公有成员函数图3—5sellerseller销售人员voidgetin_3();计算销售人员月薪继承员工基类中的公有成员函数图3—6sellmanagersellmanager销售经理公有继承经理类(manager)的公有函数公有继承销售人员类(seller)的公有函数计算销售经理的工资(wages函数)图3—73.2.2界面设计主菜单是一个功能选择菜单,里面包含了选择时各个功能的代号,由该语句输出cout<<"~~~~~~~~~~~~~~~~~~~"<<"添加<1>,查询<2>,删除<3>,修改<4>,退出<5>~~~~~~~~~~~~~~~~~~~"<<endl;cout<<"请输入需要进行的操作的代号:"<<endl;子菜单的作用是选择不同的员工由该语句输出cout<<"经理《1》,技术人员《2》,销售人员《3》,销售经理《4》"<<endl;第四章系统实现4.1类实现classstuff{protected: stringname,sex;//定义姓名,性别,学号,月薪的变量 intnum,monpay;public: voiddisplay1(); voidgetin_0(); voidgetin_(); friendvoidgetin1(manager*p_manager1,int&i1); friendvoidgetin1(technician*p_technician1,int&j1); friendvoidgetin1(seller*p_seller1,int&m1); friendvoidgetin1(sellmanager*p_sellmanager1,int&n1); friendvoidputout1(manager*p_manager1,int&i1); friendvoidputout1(technician*p_technician1,int&j1); friendvoidputout1(seller*p_seller1,int&m1); friendvoidputout1(sellmanager*p_sellmanager1,int&n1);};/*定义经理类*/classmanager:virtualpublicstuff{protected:intpay;//固定工资public:voidgetin_1();//计算经理月薪};/*定义技术人员类*/classtechnician:publicstuff{private: inthour;//工作时间public: voidgetin_2();//计算技术人员月薪};/*定义销售人员类*/classseller:virtualpublicstuff{protected: intmarket;//月销售额 floatrate,dedu;//提成百分比,提成public: voidgetin_3();//计算销售人员月薪};/*定义销售经理类*/classsellmanager:publicseller,publicmanager{public: voidwages();//计算销售经理月薪};4.2函数实现/*类函数的定义*/voidstuff::display1(){ cout<<"姓名"<<""<<"编号"<<""<<"性别"<<""<<"月薪"<<endl; cout<<name<<""<<num<<""<<sex<<""<<monpay<<endl;}voidstuff::getin_0(){cout<<"依次输入姓名,编号,性别"<<endl;cin>>name>>num>>sex;}voidstuff::getin_(){cin>>name>>num>>sex>>monpay;}voidmanager::getin_1(){cout<<"输入固定月薪"<<endl;cin>>pay;monpay=pay;}voidtechnician::getin_2(){cout<<"输入技术人员工作时间(单位:小时)"<<endl;cin>>hour;monpay=100*hour;}voidseller::getin_3(){cout<<"输入销售人员的月销售额和提成百分比或销售经理的销售总额和提成百分比"<<endl;cin>>market>>rate;dedu=rate*market;monpay=dedu;}voidsellmanager::wages(){monpay=pay+dedu;}/*从文件中读取数据*/voidgetin1(manager*p_manager1,int&i1){ ifstreaminfile1("经理.txt",ios::in); if(!infile1) { cerr<<"经理文件打开失败"<<endl; exit(1); } for(i1;!infile1.eof();i1++) { infile1>>(p_manager1+i1)->name>>(p_manager1+i1)->num>>(p_manager1+i1)->sex>>(p_manager1+i1)->monpay; } infile1.close();}voidgetin1(technician*p_technician1,int&j1){ifstreaminfile2("技术人员.txt",ios::in); if(!infile2) { cerr<<"技术人员文件打开失败"<<endl; exit(1); } for(j1;!infile2.eof();j1++) { infile2>>(p_technician1+j1)->name>>(p_technician1+j1)->num>>(p_technician1+j1)->sex>>(p_technician1+j1)->monpay; } infile2.close();}voidgetin1(seller*p_seller1,int&m1){ ifstreaminfile3("销售人员.txt",ios::in); if(!infile3) { cerr<<"销售人员文件打开失败"<<endl; exit(1); } for(m1;!infile3.eof();m1++) { infile3>>(p_seller1+m1)->name>>(p_seller1+m1)->num>>(p_seller1+m1)->sex>>(p_seller1+m1)->monpay; } infile3.close();}voidgetin1(sellmanager*p_sellmanager1,int&n1){ ifstreaminfile4("销售经理.txt",ios::in); if(!infile4) { cerr<<"销售经理文件打开失败"<<endl; exit(1); } for(n1;!infile4.eof();n1++) { infile4>>(p_sellmanager1+n1)->name>>(p_sellmanager1+n1)->num>>(p_sellmanager1+n1)->sex>>(p_sellmanager1+n1)->monpay; } infile4.close();}/*向文件中输出数据*/voidputout1(manager*p_manager1,int&i1){ intt;ofstreamoutfile1("经理.txt",ios::out); if(!outfile1) { cerr<<"输出文件打开失败"<<endl; exit(1); } for(t=0;t<i1;t++) { outfile1<<(p_manager1+t)->name<<""<<(p_manager1+t)->num<<""<<(p_manager1+t)->sex<<""<<(p_manager1+t)->monpay<<endl; } outfile1.close();}voidputout1(technician*p_technician1,int&j1){ intt;ofstreamoutfile2("技术人员.txt",ios::out); if(!outfile2) { cerr<<"输出文件打开失败"<<endl; exit(1); } for(t=0;t<j1;t++) { outfile2<<(p_technician1+t)->name<<""<<(p_technician1+t)->num<<""<<(p_technician1+t)->sex<<""<<(p_technician1+t)->monpay<<endl; } outfile2.close();}voidputout1(seller*p_seller1,int&m1){ intt;ofstreamoutfile3("销售人员.txt",ios::out); if(!outfile3) { cerr<<"输出文件打开失败"<<endl; exit(1); } for(t=0;t<m1;t++) { outfile3<<(p_seller1+t)->name<<""<<(p_seller1+t)->num<<""<<(p_seller1+t)->sex<<""<<(p_seller1+t)->monpay<<endl; } outfile3.close();}voidputout1(sellmanager*p_sellmanager1,int&n1){ intt;ofstreamoutfile4("销售经理.txt",ios::out); if(!outfile4) { cerr<<"输出文件打开失败"<<endl; exit(1); } for(t=0;t<n1;t++) { outfile4<<(p_sellmanager1+t)->name<<""<<(p_sellmanager1+t)->num<<""<<(p_sellmanager1+t)->sex<<""<<(p_sellmanager1+t)->monpay<<endl; } outfile4.close();}/*定义添加功能函数*/voidadd(manager*p_manager1,technician*p_technician1,seller*p_seller1,sellmanager*p_sellmanager1,int&i1,int&j1,int&m1,int&n1){intstr;cout<<"经理《1》,技术人员《2》,销售人员《3》,销售经理《4》"<<endl;cout<<"输入要添加的员工的职称代号:"<<endl;cin>>str;if(str==1){cout<<"即将添加的经理的编号:"<<i1-1<<endl;(p_manager1+i1-1)->getin_0();(p_manager1+i1-1)->getin_1();(p_manager1+i1-1)->display1();}elseif(str==2){cout<<"即将添加的技术人员的编号:"<<j1-1<<endl;(p_technician1+j1-1)->getin_0();(p_technician1+j1-1)->getin_2();(p_technician1+j1-1)->display1();}elseif(str==3){cout<<"即将添加的销售人员的编号:"<<m1-1<<endl;(p_seller1+m1-1)->getin_0();(p_seller1+m1-1)->getin_3();(p_seller1+m1-1)->display1();}elseif(str==4){cout<<"即将添加的销售经理的编号:"<<n1-1<<endl;(p_sellmanager1+n1-1)->getin_0();(p_sellmanager1+n1-1)->getin_1();(p_sellmanager1+n1-1)->getin_3();(p_sellmanager1+n1-1)->wages();(p_sellmanager1+n1-1)->display1();}elsecout<<"请输入正确的职称!"<<endl;}/*定义查询功能函数*/voidcheck(manager*p_manager1,technician*p_technician1,seller*p_seller1,sellmanager*p_sellmanager1){intt,str;cout<<"经理《1》,技术人员《2》,销售人员《3》,销售经理《4》"<<endl;cout<<"请依次输入需要查询的员工的职称代号及其编号:"<<endl;cin>>str>>t;if(str==1)(p_manager1+t)->display1();elseif(str==2)(p_technician1+t)->display1();elseif(str==3)(p_seller1+t)->display1();elseif(str==4)(p_sellmanager1+t)->display1();elsecout<<"请输入正确的职称及编号!"<<endl;}/*定义删除函数*/voiddelet(manager*p_manager1,technician*p_technician1,seller*p_seller1,sellmanager*p_sellmanager1){intt,str;cout<<"经理《1》,技术人员《2》,销售人员《3》,销售经理《4》"<<endl;cout<<"请依次输入需要删除信息的员工的职称代号及其编号:"<<endl;cin>>str>>t;cout<<"将该员工的姓名,性别改为“无”;其与工资相关的数据改为:“0”;员工的编号保持不变!"if(str==1){cout<<"先输出以前信息:"<<endl;(p_manager1+t)->display1();(p_manager1+t)->getin_0();(p_manager1+t)->getin_1();cout<<"再输出删除后的信息:"<<endl;(p_manager1+t)->display1();}elseif(str==2){cout<<"先输出以前信息:"<<endl;(p_technician1+t)->display1();(p_technician1+t)->getin_0();(p_technician1+t)->getin_2();cout<<"再输出删除后的信息:"<<endl;(p_manager1+t)->display1();}elseif(str==3){ cout<<"先输出以前信息:"<<endl; (p_seller1+t)->display1(); (p_seller1+t)->getin_0(); (p_seller1+t)->getin_3(); cout<<"再输出删除后的信息:"<<endl;(p_manager1+t)->display1();}elseif(str==4){ cout<<"先输出以前信息:"<<endl; (p_sellmanager1+t)->display1(); (p_sellmanager1+t)->getin_0(); (p_sellmanager1+t)->getin_1(); (p_sellmanager1+t)->getin_3(); (p_sellmanager1+t)->wages(); cout<<"再输出删除后的信息:"<<endl;(p_manager1+t)->display1();} else cout<<"请输入正确职称及编号!"<<endl;}/*定义修改信息函数*/voidchange(manager*p_manager1,technician*p_technician1,seller*p_seller1,sellmanager*p_sellmanager1){intt,str;cout<<"经理《1》,技术人员《2》,销售人员《3》,销售经理《4》"<<endl;cout<<"请依次输入需要更改信息的员工的职称代号及其编号:"<<endl;cin>>str>>t;if(str==1){cout<<"先输出以前信息:"<<endl;(p_manager1+t)->display1();cout<<"~~~~~~~~~~~编号不变!~~~~~~~~~~~~"<<endl;(p_manager1+t)->getin_0();(p_manager1+t)->getin_1();}elseif(str==2){cout<<"先输出以前信息:"<<endl;(p_technician1+t)->display1();cout<<"~~~~~~~~~~~编号不变!~~~~~~~~~~~"<<endl;(p_technician1+t)->getin_0();(p_technician1+t)->getin_2();}elseif(str==3){ cout<<"先输出以前信息:"<<endl; (p_seller1+t)->display1(); cout<<"~~~~~~~~~~~编号不变!~~~~~~~~~~~"<<endl; (p_seller1+t)->getin_0(); (p_seller1+t)->getin_3();}elseif(str==4){ cout<<"先输出以前信息:"<<endl; (p_sellmanager1+t)->display1(); cout<<"~~~~~~~~~~~编号不变!~~~~~~~~~~~"<<endl; (p_sellmanager1+t)->getin_0(); (p_sellmanager1+t)->getin_1(); (p_sellmanager1+t)->getin_3(); (p_sellmanager1+t)->wages();} else cout<<"请输入正确职称!"<<endl;}/*定义退出函数*/intesc(){intm;cout<<"您确实要退出该软件?是(1),返回(2)"<<endl;cout<<"请输入您选择的代码:"<<endl;cin>>m;if(m==1)return0;if(m==2)return1;}/*定义操作函数*/voidrealize(){inti=0,j=0,m=0,n=0;managermanager1[10];//定义四个类的对象数组techniciantechnician1[10];sellerseller1[10];sellmanagersellmanager1[10];intp=1,a,b;getin1(manager1,i);getin1(technician1,j); getin1(seller1,m);getin1(sellmanager1,n);for(;p==1;){ cout<<"~~~~~~~~~~~~~~~~~~~"<<"添加<1>,查询<2>,删除<3>,修改<4>,退出<5>~~~~~~~~~~~~~~~~~~~"<<endl; cout<<"请输入需要进行的操作的代号:"<<endl; cin>>a; cout<<"您确认进行该操作?确认(1),返回(2)."<<endl; cout<<"请输入您选择的代码:"<<endl; cin>>b; if(b==1) { if(a==1) { add(manager1,technician1,seller1,sellmanager1,i,j,m,n); p=1; }elseif(a==2) { check(manager1,technician1,seller1,sellmanager1); p=1; } elseif(a==3) { delet(manager1,technician1,seller1,sellmanager1); p=1; }elseif(a==4) { change(manager1,technician1,seller1,sellmanager1); p=1; }elseif(a==5) { p=esc(); } else { cout<<"请输入正确操作!"<<endl; p=1; } }}putout1(manager1,i);//输出经理数据putout1(technician1,j);//输出技术人员数据putout1(seller1,m);//输出销售人员数据putout1(sellmanager1,n);//输出销售经理数据}4.3主函数实现/*定义主函数*/intmain(){cout<<"********************************欢迎使用本软件********************************"<<endl<<endl;cout<<"~~~~~~~~~~~~~~~~~~~"<<"添加<1>,查询<2>,删除<3>,修改<4>,退出<5>~~~~~~~~~~~~~~~~~~~"<<endl<<endl;cout<<"******************************************************************************"<<endl<<endl;cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~职工的编号范围是:~~9~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl<<endl;cout<<"******************************************************************************"<<endl<<endl;realize();cout<<"**********************************谢谢使用************************************"<<endl<<endl;return0;}在主函数主要负责基本界面的控制和调用一个操作函数realize();第五章系统测试5.1模块测试查询编号为2的经理的信息查询功能的实现图5-1添加一个经理输入其个人信息并储存添加经理图5-2添加一个技术人员输入其个人信息并储存添加技术人员图5-3添加一个销售人员输入其个人信息并储存添加销售人员图5-4添加一个销售经理输入其个人信息并储存添加销售经理图5-5删除一个编号为3的销售经理删除功能的实现图5-6修改一个技术人员和一个经理的信息修改功能的实现图5-75.2课程设计过程中遇到的问题在本次课设过程中遇到了很多问题。不能向文件中输出数据,不能从文件中读取数据,有时向文件中输出的数据是随机的错误的。经过仔细阅读相关书籍和与同学讨论学会了文本文件的用法。面对程序编译时出现的错误,由于代码太多无从下手修改错误,调试比较慢,后来将程序分块调试逐步找出错误,问题得以解决。在调试过程中经常搞混变量的使用范围,导致经常出现错误数据。通过仔细分析变量的使用范围,重新定义变量的属性解决了这一问题。总结通过本次课程设计发现理论知识明白了,但这并不代表就会应用,要学会应用还要多上机实践。在编程之前应对程序的有一个整体的设计框架,明确本程序应具备的功能,分别调试每个功能的代码,最后再将其组合在一起。设计时应尽量考虑到程序功能的可扩展性,对输入的错误数据加以辨别,并给出提示语句,让使用者更容易使用,使软件更人性化。本程序每一步都有提示语句,便于操作者的使用,如果输入错误信息系统会给出提示,体现了人性化。致谢在本次试验中遇到了很多困难,曾一度不知如何下手,找不到思路。在老师和同学的帮助下找到了一些思路,通过和同学的讨论,自己的思路逐渐清晰起来。在此特别要感谢那些曾经帮助过我的同学和老师,他们让我知道了从那入手,从他们那里获得了新的思路。同时也要感谢学校机房为我们提供良好的环境,使我在规定时间内完成此程序的编写调试。参考文献[1]谭浩强.C++面向对象程序设计.清华大学出版社,2006[2]谭浩强.C程序设计.清华大学出版社,2005[3]陈清华,朱红.VisualC++课程设计.东南大学出版社,2005附录源程序代码如下:#include<iostream>#include<fstream>#include<string>usingnamespacestd;/*声明个类*/classmanager;classtechnician;classseller;classsellmanager;/*定义员工基类*/classstuff{protected: stringname,sex;//定义姓名,性别,学号,月薪的变量 intnum,monpay;public: voiddisplay1(); voidgetin_0(); voidgetin_(); friendvoidgetin1(manager*p_manager1,int&i1); friendvoidgetin1(technician*p_technician1,int&j1); friendvoidgetin1(seller*p_seller1,int&m1); friendvoidgetin1(sellmanager*p_sellmanager1,int&n1); friendvoidputout1(manager*p_manager1,int&i1); friendvoidputout1(technician*p_technician1,int&j1); friendvoidputout1(seller*p_seller1,int&m1); friendvoidputout1(sellmanager*p_sellmanager1,int&n1);};/*定义经理类*/classmanager:virtualpublicstuff{protected:intpay;//固定工资public:voidgetin_1();//计算经理月薪};/*定义技术人员类*/classtechnician:publicstuff{private: inthour;//工作时间public: voidgetin_2();//计算技术人员月薪};/*定义销售人员类*/classseller:virtualpublicstuff{protected: intmarket;//月销售额 floatrate,dedu;//提成百分比,提成public: voidgetin_3();//计算销售人员月薪};/*定义销售经理类*/classsellmanager:publicseller,publicmanager{public: voidwages();//计算销售经理月薪};/*类函数的定义*/voidstuff::display1(){ cout<<"姓名"<<""<<"编号"<<""<<"性别"<<""<<"月薪"<<endl; cout<<name<<""<<num<<""<<sex<<""<<monpay<<endl;}voidstuff::getin_0(){cout<<"依次输入姓名,编号,性别"<<endl;cin>>name>>num>>sex;}voidstuff::getin_(){cin>>name>>num>>sex>>monpay;}voidmanager::getin_1(){cout<<"输入固定月薪"<<endl;cin>>pay;monpay=pay;}voidtechnician::getin_2(){cout<<"输入技术人员工作时间(单位:小时)"<<endl;cin>>hour;monpay=100*hour;}voidseller::getin_3(){cout<<"输入销售人员的月销售额和提成百分比或销售经理的销售总额和提成百分比"<<endl;cin>>market>>rate;dedu=rate*market;monpay=dedu;}voidsellmanager::wages(){monpay=pay+dedu;}/*从文件中读取数据*/voidgetin1(manager*p_manager1,int&i1){ ifstreaminfile1("经理.txt",ios::in); if(!infile1) { cerr<<"经理文件打开失败"<<endl; exit(1); } for(i1;!infile1.eof();i1++) { infile1>>(p_manager1+i1)->name>>(p_manager1+i1)->num>>(p_manager1+i1)->sex>>(p_manager1+i1)->monpay; } infile1.close();}voidgetin1(technician*p_technician1,int&j1){ifstreaminfile2("技术人员.txt",ios::in); if(!infile2) { cerr<<"技术人员文件打开失败"<<endl; exit(1); } for(j1;!infile2.eof();j1++) { infile2>>(p_technician1+j1)->name>>(p_technician1+j1)->num>>(p_technician1+j1)->sex>>(p_technician1+j1)->monpay; } infile2.close();}voidgetin1(seller*p_seller1,int&m1){ ifstreaminfile3("销售人员.txt",ios::in); if(!infile3) { cerr<<"销售人员文件打开失败"<<endl; exit(1); } for(m1;!infile3.eof();m1++) { infile3>>(p_seller1+m1)->name>>(p_seller1+m1)->num>>(p_seller1+m1)->sex>>(p_seller1+m1)->monpay; } infile3.close();}voidgetin1(sellmanager*p_sellmanager1,int&n1){ ifstreaminfile4("销售经理.txt",ios::in); if(!infile4) { cerr<<"销售经理文件打开失败"<<endl; exit(1); } for(n1;!infile4.eof();n1++) { infile4>>(p_sellmanager1+n1)->name>>(p_sellmanager1+n1)->num>>(p_sellmanager1+n1)->sex>>(p_sellmanager1+n1)->monpay; } infile4.close();}/*向文件中输出数据*/voidputout1(manager*p_manager1,int&i1){ intt;ofstreamoutfile1("经理.txt",ios::out); if(!outfile1) { cerr<<"输出文件打开失败"<<endl; exit(1); } for(t=0;t<i1;t++) { outfile1<<(p_manager1+t)->name<<""<<(p_manager1+t)->num<<""<<(p_manager1+t)->sex<<""<<(p_manager1+t)->monpay<<endl; } outfile1.close();}voidputout1(technician*p_technician1,int&j1){ intt;ofstreamoutfile2("技术人员.txt",ios::out); if(!outfile2) { cerr<<"输出文件打开失败"<<endl; exit(1); } for(t=0;t<j1;t++) { outfile2<<(p_technician1+t)->name<<""<<(p_technician1+t)->num<<""<<(p_technician1+t)->sex<<""<<(p_technician1+t)->monpay<<endl; } outfile2.close();}voidputout1(seller*p_seller1,int&m1){ intt;ofstreamoutfile3("销售人员.txt",ios::out); if(!outfile3) { cerr<<"输出文件打开失败"<<endl; exit(1); } for(t=0;t<m1;t++) { outfile3<<(p_seller1+t)->name<<""<<(p_seller1+t)->num<<""<<(p_seller1+t)->sex<<""<<(p_seller1+t)->monpay<<endl; } outfile3.close();}voidputout1(sellmanager*p_sellmanager1,int&n1){ intt;ofstreamoutfile4("销售经理.txt",ios::out); if(!outfile4) { cerr<<"输出文件打开失败"<<endl; exit(1); } for(t=0;t<n1;t++) { outfile4<<(p_sellmanager1+t)->name<<""<<(p_sellmanager1+t)->num<<""<<(p_sellmanager1+t)->sex<<""<<(p_sellmanager1+t)->monpay<<endl; } outfile4.close();}/*定义添加功能函数*/voidadd(manager*p_manager1,technician*p_technician1,seller*p_seller1,sellmanager*p_sellmanager1,int&i1,int&j1,int&m1,int&n1){intstr;cout<<"经理《》,技术人员《》,销售人员《》,销售经理《》"<<endl;cout<<"输入要添加的员工的职称代号:"<<endl;cin>>str;if(str==1){cout<<"即将添加的经理的编号:"<<i1-1<<endl;(p_manager1+i1-1)->getin_0();(p_manager1+i1-1)->getin_1();(p_manager1+i1-1)->display1();}elseif(str==2){cout<<"即将添加的技术人员的编号:"<<j1-1<<endl;(p_technician1+j1-1)->getin_0();(p_technician1+j1-1)->getin_2();(p_technician1+j1-1)->display1();}elseif(str==3){cout<<"即将添加的销售人员的编号:"<<m1-1<<endl;(p_seller1+m1-1)->getin_0();(p_seller1+m1-1)->getin_3();(p_seller1+m1-1)->display1();}elseif(str==4){cout<<"即将添加的销售经理的编号:"<<n1-1<<endl;(p_sellmanager1+n1-1)->getin_0();(p_sellmanager1+n1-1)->getin_1();(p_sellmanager1+n1-1)->getin_3();(p_sellmanager1+n1-1)->wages();(p_sellmanager1+n1-1)->display1();}elsecout<<"请输入正确的职称!"<<endl;}/*定义查询功能函数*/voidcheck(manager*p_manager1,technician*p_technician1,seller*p_seller1,sellmanager*p_sellmanager1){intt,str;cout<<"经理《》,技术人员《》,销售人员《》,销售经理《》"<<endl;cout<<"请依次输入需要查询的员工的职称代号及其编号:"<<endl;cin>>str>>t;if(str==1)(p_manager1+t)->display1();elseif(str==2)(p_technician1+t)->display1();elseif(str==3)(p_seller1+t)->display1();elseif(str==4)(p_sellmanager1+t)->display1();elsecout<<"请输入正确的职称及编号!"<<endl;}/*定义删除函数*/voiddelet(manager*p_manager1,technician*p_technician1,seller*p_seller1,sellmanager*p_sellmanager1){intt,str;cout<<"经理《》,技术人员《》,销售人员《》,销售经理《》"<<endl;cout<<"请依次输入需要删除信息的员工的职称代号及其编号:"<<endl;cin>>str>>t;cout<<"将该员工的姓名,性别改为“无”;其与工资相关的数据改为:“0”;员工的编号保持不变!"if(str==1){cout<<"先输出以前信息:"<<endl;(p_manager1+t)->display1();(p_manager1+t)->getin_0();(p_manager1+t)->getin_1();cout<<"再输出删除后的信息:"<<endl;(p_manager1+t)->display1();}elseif(str==2){cout<<"先输出以前信息:"<<endl;(p_technician1+t)->display1();(p_technician1+t)->getin_0();(p_technician1+t)->getin_2();cout<<"再输出删除后的信息:"<<endl;(p_manager1+t)->display1();}elseif(str==3){ cout<<"先输出以前信息:"<<endl; (p_seller1+t)->display1(); (p_seller1+t)->getin_0(); (p_seller1+t)->getin_3(); cout<<"再输出删除后的信息:"<<endl;(p_manager1+t)->display1();}elseif(str==4){ cout<<"先输出以前信息:"<<endl; (p_sellmanager1+t)->display1(); (p_sellmanager1+t)->getin_0(); (p_sellmanager1+t)->getin_1(); (p_sellmanager1+t)->getin_3(); (p_sellmanager1+t)->wages(); cout<<"再输出删除后的信息:"<<endl;(p_manager1+t)->display1();} else cout<<"请输入正确职称及编号!"<<endl;}/*定义修改信息函数*/voidchange(manager*p_manager1,technician*p_technician1,seller*p_seller1,sellmanager*p_sellmanager1){intt,str;cout<<"经理《》,技术人员《》,销售人员《》,销售经理《》"<<endl;cout<<"请依次输入需要更改信息的员工的职称代号及其编号:"<<endl;cin>>str>>t;if(str==1){cout<<"先输出以前信息:"<<endl;

温馨提示

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

评论

0/150

提交评论