小型公司工资管理系统设计课设报告样本_第1页
小型公司工资管理系统设计课设报告样本_第2页
小型公司工资管理系统设计课设报告样本_第3页
小型公司工资管理系统设计课设报告样本_第4页
小型公司工资管理系统设计课设报告样本_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。《基于C++的面向对象程序设计实例》课程设计报告报告题目:小型公司工资管理系统设计作者所在系部:计算机科学与工程系作者所在专业:计算机应用技术作者所在班级:********作者姓名:******指导教师姓名:*********完成时间:-6-21北华航天工业学院教务处制摘要在当前的市场经济体制下,一个公司要好的发展,不但要有好的管理制度,优秀的管理人员,同时也要有一个健全的而且适合自身特点的公司人员管理和员工工资管理系统,以实现公司人员管理、工资管理的目。本文在MicrosoftVisualC++6.0环境下,利用c++语言编写程序,实现了公司对雇员工资信息的管理操作。本系统一简单易懂为原则,便于操作。本系统主要有九个功能模块:1、修改职工信息、2、查询职工信息、3、删除职工信息、4、添加职工信息、5、显示所有职工信息、6、计算员工工资、7、读入员工信息8、保存员工信息、9、统计员工信息。已经经过全面的系统测试,能够很好的运行,达到了预期的效果。关键词:c++功能模块工资信息目录摘要 I目录 II课程设计任务书 IV第一章绪论 11.1课程设计的目的 11.2课程设计的背景和意义 11.2.1课程设计的背景 11.2.2课程设计的意义 21.3课程设计环境 2第二章需求分析 32.1问题描述 32.2功能要求 32.2问题的解决方案 3第三章系统设计 43.1数据设计 43.1.1类设计 43.1.2类之间的关系 63.1.3函数设计 63.2结构设计 63.2.1系统流程图 63.2.2界面设计 7第四章系统实现 84.1类实现 84.3主函数实现 35第五章系统测试 365.1模块测试 365.2课程设计过程中遇到的问题 37总结 39致谢 40参考文献 40附录 40课题名称小型公司工资管理系统设计完成时间-6-21指导教师贾振华职称讲师学生姓名孟伟闪班级11513总体设计要求和技术要点1、问题描述某公司需要存储雇员的编号、姓名、性别、所在部门,级别,并进行工资的计算。其中,雇员分为经理、技术人员、销售人员和销售经理。四类人员的月薪计算方法如下:经理拿固定月薪;技术人员按小时领取月薪;销售人员按其当月销售额的提成领取工资;销售经理既拿固定月薪也领取销售提成。设计一程序能够对公司人员进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。2、功能要求(1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。(2)查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;(3)显示功能:可显示当前系统中所有记录,每条记录占据一行。(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。(5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示”记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。(6)统计功能:能根据多种参数进行人员的统计。例如,统计四类人员数量以及总数,或者统计男、女员工的数量,或者统计平均工资、最高工资、最低工资等信息。(7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。(8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。工作内容及时间进度安排1.6月4日~10日:布置任务,软件设计;2.6月11日~18日:编写代码,上机调试;3.6月19、20、21日:软件验收,撰写课程设计报告;4.各班在6月22日下午五点前将课程设计报告收齐并上交。课程设计任务书第一章绪论1.1课程设计的目的此次课程设计的目的是以《c++程序设计基础》为基础,针对具有一定难度的综合性题目,进行分析、编程、调试和运行,进一步掌握面向对象和面向过程程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实践相结合,提高分析问题、解决问题的能力。要求学生达到熟练掌握C++语言的基本知识和技能。基本掌握面向对象程序设计的基本思路和方法能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。经过设计一个简单的《小型公司工资管理系统》,进一步熟悉C++中类的概念、类的封装、继承和多态的实现方式;掌握文件的录入、查找;对象指针的使用。了解系统开发的需要分析,类层次设计,模块分析,编码测试,模块组装与整体调试的全过程,逐步熟悉程序设计的方法,并养成良好的编程习惯。1.2课程设计的背景和意义1.2.1课程设计的背景1.理论研究基础《C++面向对象程序设计》是计算机专业的基础课程,本课程按照软件程序设计所需能力进行教学设计,提出以项目模块方式带动相关知识点、实践项目和理论并行的思路,将案例贯穿于课程始终,对原有的教学体系、教学内容进行重新编排,按照从易到难的原则,将其巧妙地融入到项目开发过程中,降低学习难度,提高学生学习的信心,有效培养学生的应用能力和学习能力。2.技术层面的支持本系统运用到:类与对象在C++中的实现、静态数据成员、运算符重载、友元函数继承与派生的基本知识、单继承和多继承、虚基类的作用与使用、虚函数的定义和使用、纯虚函数和抽象类的定义和使用、输入输出流的概念、输入、输出流操作、文件的创立、打开、读写、关闭等操作。1.2.2课程设计的意义本课程按照软件程序设计所需能力进行教学设计,提出以项目模块方式带动相关知识点、实践项目和理论并行的思路,将案例贯穿于课程始终,对原有的教学体系、教学内容进行重新编排,按照从易到难的原则,将其巧妙地融入到项目开发过程中,降低学习难度,提高学生学习的信心,有效培养学生的应用能力和学习能力。小型公司工资管理对公司管理有着很重要的作用。在当今社会应用广泛。1.3课程设计环境硬件平台:

CPU:i5。2.67GHz。

RAM:512MB以上。软件平台:

操作系统:Windowsxp/Windows7

编辑环境:Visualc++6.0分辨率:最佳效果1024×768像第二章需求分析2.1问题描述某公司需要存储雇员的编号、姓名、性别、所在部门,级别,并进行工资的计算。其中,雇员分为经理、技术人员、销售人员和销售经理。四类人员的月薪计算方法如下:经理拿固定月薪;技术人员按小时领取月薪;销售人员按其当月销售额的提成领取工资;销售经理既拿固定月薪也领取销售提成。设计一程序能够对公司人员进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。2.2功能要求(1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。(2)查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;(3)显示功能:可显示当前系统中所有记录,每条记录占据一行。(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。(5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示”记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。(6)统计功能:能根据多种参数进行人员的统计。例如,统计四类人员数量以及总数,或者统计男、女员工的数量,或者统计平均工资、最高工资、最低工资等信息。(7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。(8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。2.2问题的解决方案根据系统功能要求,能够将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述;(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告。第三章系统设计3.1数据设计3.1.1类设计根据课程设计要求,需要定义六个类:雇员类(基类)(worker)(如表3-1-1)、经理类(manager)(如表3-1-2)、技术人员类(technologyman)(表3-1-3)、销售人员类(saleman)(如表3-1-4)、销售经理类(salemanager)(如表3-1-5)和管理类(control)(如表3-1-6)。雇员类数据成员:编号intnum;姓名charname[20];性别charsex[5];部门charbranch[20];intmark;staticintcount,staticintcount1,staticintcount2,staticintcount3,staticintcount4,staticintcount5,staticintcount6;intbasic;doubleworktime;doublexiaoshoue;intjob;成员函数:worker()worker(intmark)virtual~worker()staticintdisplay1()friendistream&operator>>(istream&in,worker&w);friendostream&operator<<(ostream&out,worker&w);voidinput();virtualvoidinputmoney();virtualvoiddisplay();virtualvoiddisplay2()=0;virtualvoidmoney()=0;char*getjibie()doublegetworktime()doublegetxiaoshoue()表3-1-1雇员类经理类数据成员:编号intnum;姓名charname[20];性别charsex[5];部门charbranch[20];intmark;staticintcount,staticintcount1,staticintcount2,staticintcount3,staticintcount4,staticintcount5,staticintcount6;intbasic;doubleworktime;doublexiaoshoue;intjob;成员函数:manager()manager(intmark)~manager()voidinputmoney()voiddisplay2()voidmoney()friendistream&operator>>(istream&in,manager&w);friendostream&operator<<(ostream&out,manager&w); 表3-1-2经理类技术人员类数据成员:intjine;成员函数:technologyman()technologyman(intmark)~technologyman()voidinputmoney()voiddisplay2()friendistream&operator>>(istream&in,technologyman&w);friendostream&operator<<(ostream&out,technologyman&w);表3-1-3技术人员类销售人员类数据成员:doubletichengbili;成员函数:saleman()saleman(intmark)~saleman()voidinputmoney()voiddisplay2()voidmoney()doubletichengbili;friendistream&operator>>(istream&in,saleman&w);friendostream&operator<<(ostream&out,saleman&w); 表3-1-4销售人员类销售经理成员函数:salemanager()salemanager(intmark)~salemanager()voidinputmoney()voiddisplay2()voidmoney()friendistream&operator>>(istream&in,salemanager&s);friendostream&operator<<(ostream&out,salemanager&s);表3-1-5销售经理类管理类数据成员:worker*head;成员函数:control()~control()voidshowface();voidchangeinformation();//修改voidcancelinformation();//删除voidaddinformation();//添加voidshowinformation();//显示voidsearchinformation();//查询voidcountinformation();//计算voidreadinformation();//读入 voidkeepinformation();//保存voidtongjiformation();//统计表3-1-6管理类3.1.2类之间的关系各个类之间的关系如表3-1-7雇员类雇员类销售人员类技术人员类经理类销售经理类表3-1-7各类继承关系图管理类(control)调用其它类。3.1.3函数设计(1)定义各类的构造函数(2)运算符重载函数operator>>、operator<<,实现对对象的输入输出的重载。(3)输入输出函数:display、input,实现对数据成员的输入输出。(4)计算工资函数:money,实现对工资的计算。根据不同员工职务不同的计算方法。(5)修改雇员信息函数:changeinformation,实现对雇员信息的修改管理。(6)添加雇员信息函数:addinformation,实现对雇员信息的添加管理。(7)计算雇员工资信息函数:countinformation,实现对雇员工资信息的计算管理。(8)删除雇员信息函数:cancelinformation,实现对雇员信息的删除管理。(9)查询雇员信息函数:searchinformation,实现对雇员信息的查询管理。(10)显示雇员信息函数:showinformation,实现对雇员信息的显示管理。(11)读入雇员信息函数:readinformation,实现对雇员信息的读入管理。(12)保存雇员信息函数:keepinformation,实现对雇员信息的保存管理。(13)统计雇员信息函数:tongjiinformation,实现对雇员信息的统计管理。3.2结构设计3.2.1系统流程图系统中用到的所有类和函数的关系图如图3-2-1开始开始主函数主函数继承调用继承调用定义类定义类雇员类技术人员类销售人员类销售经理类管理类经理类3-2-1类关系流程图3.2.2界面设计主菜单包括:1、添加职工信息;2、查询职工信息;3、删除职工信息;4、修改职工信息;5、显示所有职工信息;6、计算员工工资;7、读入员工信息;8、保存员工信息;9、统计员工信息;0、退出系统十个模块。子菜单有:添加员工菜单。包括:1、增加经理;2、增加销售人员;3、增加技术人员4、增加销售经理;5、返回上级菜单五个模块。删除员工菜单。包括:1、按照编号;2、按照姓名;3、按照部门;4、返回上级菜单四个模块。查询员工信息菜单。包括:1、按照编号;2、按照姓名;3、按照部门;4、按照职务;5、返回上级菜单五个模块。修改员工信息菜单。包括:1、修改姓名;2、修改部门;3、修改职务;4、返回上级菜单四个模块。计算员工工资菜单。包括:1、按照编号;2、按照姓名;0、返回上级菜单三个模块。统计员工菜单。包括:1、按照性别;2、按照职务;3、总人数;4、返回上级菜单四个模块。按性别中又分为男员工和女员工两个;按职务中分为经理、销售人员、技术人员、销售经理四个。各个菜单运用do···while和switchcase语句实现数字与功能之间的转换和循环。第四章系统实现4.1类实现雇员类=classworker//基类,员工{public:worker(){count++;} worker(intmark) { this->mark=mark; count++; } virtual~worker() {cout<<"员工类被析构;"<<endl;} friendistream&operator>>(istream&in,worker&w); friendostream&operator<<(ostream&out,worker&w); staticintdisplay1() { returncount; } voidinput(); virtualvoidinputmoney(); virtualvoiddisplay();virtualvoiddisplay2()=0; virtualvoidmoney()=0; char*getjibie() {returnjibie;} doublegetworktime() {returnworktime;} doublegetxiaoshoue() {returnxiaoshoue;}worker*next; intnum; charname[20];charsex[5]; charbranch[20];//部门 charjibie[20]; intmark; staticintcount,count1,count2,count3,count4,count5,count6; intbasic; doubleworktime; doublexiaoshoue; intjob;//职务};经理类:classmanager:virtualpublicworker//经理 { public:manager(){} manager(intmark):worker(mark){}~manager() {cout<<"经理类被析构;"<<endl;}friendistream&operator>>(istream&in,manager&w);friendostream&operator<<(ostream&out,manager&w); voidinputmoney() { job=1; cout<<"请输入职员基本工资:"<<endl;cin>>basic; count3++; } voiddisplay2() {cout<<"职务:经理职员基本工资:"<<endl;cout<<basic;} voidmoney() {cout<<"该员工的实际工资是:"<<basic<<endl; } };技术人员类:classtechnologyman:virtualpublicworker//技术人员{public:technologyman(){}technologyman(intmark):worker(mark){}~technologyman() {cout<<"技术人员类被析构;"<<endl;}voidinputmoney() { job=3; cout<<"请输入职员工作时间:"<<endl;cin>>worktime; count5++; }voiddisplay2() {cout<<"职务:技术人员职员工作时间:"<<endl;cout<<worktime;}voidmoney(){jine=35;cout<<"该员工的实际工资是:"<<(jine*worktime)<<endl;}friendistream&operator>>(istream&in,technologyman&w);friendostream&operator<<(ostream&out,technologyman&w);intjine;};销售人员类:classsaleman:virtualpublicworker//销售人员{public:saleman(){}saleman(intmark):worker(mark){}~saleman(){cout<<"销售人员类被析构;"<<endl;}voidinputmoney(){job=2;cout<<"请输入职员销售额:"<<endl;cin>>xiaoshoue;ount4++;}oiddisplay2(){cout<<"职务:销售人员职员销售额:"<<endl;cout<<xiaoshoue;}voidmoney(){tichengbili=0.05;cout<<"该员工的实际工资是:"<<xiaoshoue*tichengbili<<endl;}friendistream&operator>>(istream&in,saleman&w);friendostream&operator<<(ostream&out,saleman&w);doubletichengbili;};销售经理:classsalemanager:publicmanager,publicsaleman//销售经理{public:salemanager(){}salemanager(intmark):worker(mark){} ~salemanager(){cout<<"销售经理类被析构;"<<endl;}voidinputmoney() {job=4; cout<<"请输入职员基本工资,销售额:"<<endl;cin>>basic>>xiaoshoue; count6++;} voiddisplay2(){cout<<"职务:销售经理职员基本工资,销售额:"<<endl;cout<<basic<<""<<xiaoshoue;}voidmoney() {tichengbili=0.03;cout<<"该员工的实际工资是:"<<basic+xiaoshoue*tichengbili<<endl; }friendistream&operator>>(istream&in,salemanager&s);friendostream&operator<<(ostream&out,salemanager&s);};管理类:classcontrol{private:worker*head;public:control(){head=NULL;}~control(){worker*p=NULL;p=head;while(p!=NULL){p=p->next;//指向下一个节点deletehead;//释放空间head=p;}head=NULL; }voidshowface();voidchangeinformation();//修改voidcancelinformation();//删除voidaddinformation();//添加voidshowinformation();//显示voidsearchinformation();//查询voidcountinformation();//计算 voidreadinformation();//读入 voidkeepinformation();//保存 voidtongjiformation();//统计};4.2函数实现(雇员类)intworker::count=0; intworker::count1=0; intworker::count2=0; intworker::count3=0; intworker::count4=0; intworker::count5=0; intworker::count6=0; voidworker::input() {cout<<"请输入职员信息:"<<endl; cout<<"编号:"; cin>>num; cout<<"姓名:"; cin>>name; inti; cout<<"性别:"; while(i=1) { cin>>sex; if(strcmp(sex,"nan")==0||strcmp(sex,"nv")==0) { if(strcmp(sex,"nan")==0) count1++; else count2++; break; } elsecout<<"输入错误请重新输入"<<endl; } cout<<"部门:"; cin>>branch; }voidworker::inputmoney() {cout<<"基本工资:"<<endl;cin>>basic; } voidworker::display() {cout<<"编号:"<<num<<""<<"姓名:"<<name<<""<<"性别:"<<sex<<""<<"部门:"<<branch; } istream&operator>>(istream&in,worker&w) { w.input();w.inputmoney(); returnin; }ostream&operator<<(ostream&out,worker&w) {w.display(); w.display2(); w.money(); returnout; }(经理类)istream&operator>>(istream&in,manager&w) { w.input();w.inputmoney(); returnin; }ostream&operator<<(ostream&out,manager&w) { w.display(); w.display2(); w.money(); returnout;}(技术人员类)istream&operator>>(istream&in,technologyman&w) { w.input(); w.inputmoney(); returnin; }ostream&operator<<(ostream&out,technologyman&w) {w.display(); w.display2(); w.money();returnout; }(销售人员类)istream&operator>>(istream&in,saleman&w) { w.input();w.inputmoney(); returnin; }ostream&operator<<(ostream&out,saleman&w) {w.display(); w.display2(); w.money();returnout; }(销售经理类)istream&operator>>(istream&in,salemanager&s) { s.input(); s.inputmoney(); returnin; }ostream&operator<<(ostream&out,salemanager&s) {s.display(); s.display2();returnout; }(管理类)voidcontrol::showface(){controlcontrol1;inti; do { cout<<"*******************************************************************"<<endl; cout<<"**"<<endl; cout<<"*欢迎使用本职工信息管理系统*"<<endl; cout<<"*1、添加职工信息2、查询职工信息*"<<endl; cout<<"*3、删除职工信息4、修改职工信息*"<<endl; cout<<"*5、显示所有职工信息6、计算员工工资*"<<endl; cout<<"*7、读入员工信息8、保存员工信息*"<<endl; cout<<"*9、统计员工信息0、退出系统*"<<endl; cout<<"*请选择相应编号:*"<<endl; cout<<"*******************************************************************"<<endl;while(intj=1) {cin>>i; if(i>9||i<0) cout<<"输入错误请重新输入"<<endl; elsebreak; }//选择相应标号所对应的功能switch(i) { case1:control1.addinformation();break;case2:control1.searchinformation();break; case3:control1.cancelinformation();break;case4:control1.changeinformation();break;case5:control1.showinformation();break;case6:control1.countinformation();break; case7:control1.readinformation();break; case8:control1.keepinformation();break; case9:control1.tongjiformation();break; case0:break;default:cout<<"选择错误,请重新选择!"<<endl;}} while(i!=0);}voidcontrol::addinformation()//添加职工信息{controlcontrol1;worker*p=NULL;//新增结点指针inti;//选择变量do{//添加职工信息菜单 cout<<"*******************************************************************"<<endl;cout<<"**"<<endl;cout<<"*请选择增加的员工种类*"<<endl;cout<<"*1、增加经理2、增加销售人员*"<<endl;cout<<"*3、增加技术人员4、增加销售经理*"<<endl;cout<<"*5、返回上级菜单*"<<endl;cout<<"**"<<endl;cout<<"*请选择相应编号:*"<<endl; cout<<"*******************************************************************"<<endl;//创立新员工结点while(intj=1) {cin>>i; if(i>5||i==0) cout<<"输入错误请重新输入"<<endl; elsebreak; }switch(i){case1:p=newmanager(1);cin>>(*p);break;case2:p=newsaleman(2);cin>>(*p);break;case3:p=newtechnologyman(3);cin>>(*p);break;case4:p=newsalemanager(4);cin>>(*p);break;case5:break;} p->next=NULL;//员工结点加入链表 if(i!=5) { if(head!=NULL)//链表已经存在 { worker*p1=NULL,*p2=NULL;//指针初始化p1=head; if(p1->num==p->num){ cout<<"添加重复!"<<endl;break;} else{ p2=p1; p1=p1->next; }p2->next=p;//连接结点 cout<<"信息添加成功!"<<endl; }else{//链表不存在head=p;//连接结点 cout<<"信息添加成功!"<<endl; } }}while(i!=5);}voidcontrol::cancelinformation()//删除职工信息{worker*p1=NULL,*p2=NULL;p1=head;if(p1==NULL) { cout<<"系统暂无信息,无法删除,请录入信息!"<<endl; return; }inti;//选择变量do{//删除职工信息菜单cout<<"*******************************************************************"<<endl;cout<<"**"<<endl;cout<<"*请选择删除方式*"<<endl;cout<<"*1、按照编号2、按照姓名*"<<endl;cout<<"*3、按照部门4、返回上级菜单*"<<endl;cout<<"**"<<endl;cout<<"*请选择相应编号:*"<<endl; cout<<"*******************************************************************"<<endl;while(intj=1){cin>>i; if(i>4||i==0)cout<<"输入错误请重新输入"<<endl; elsebreak;}switch(i){case1:{intnum;cout<<"编号:";cin>>num;p1=head;while(p1!=NULL){if(p1->num==num)break;else{p2=p1;p1=p1->next;}} }break;case2: {charname[20];cout<<"姓名:";cin>>name;p1=head;while(p1!=NULL){if(strcmp(p1->name,name)==0)break;else{p2=p1;p1=p1->next;}} }break;case3: {charbranch[20];cout<<"部门:";cin>>branch;p1=head;while(p1!=NULL){if(strcmp(p1->branch,branch)==0)break;else{p2=p1;p1=p1->next;}} }break;case4:return;}//删除结点if(i!=4){ if(p1!=NULL)//找到结点,删除 { f(p1==head)//要删除的结点是第一个结点 {head=p1->next;deletep1; } else//要删除的结点不是第一个结点{p2->next=p1->next;deletep1; }cout<<"信息删除成功!"<<endl; worker::count--; }else//未找到结点cout<<"信息删除失败!"<<endl;}}while(i!=4);}voidcontrol::searchinformation()//查询职工信息{worker*p1=NULL,*p2=NULL;p1=head;if(p1==NULL) { cout<<"系统暂无信息,无法查询,请录入信息!"<<endl; return; }inti;//选择变量do{ cout<<"*******************************************************************"<<endl;cout<<"**"<<endl;cout<<"*请选择查询方式*"<<endl;cout<<"*1、按照编号2、按照姓名*"<<endl;cout<<"*3、按照部门4、按照职务*"<<endl;cout<<"*5、返回上级菜单*"<<endl;cout<<"**"<<endl;cout<<"*请选择相应编号:*"<<endl; cout<<"*******************************************************************"<<endl;while(intj=1){cin>>i; if(i>5||i==0)cout<<"输入错误请重新输入"<<endl; elsebreak;}switch(i){case1: { intnum;cout<<"编号:";cin>>num; p1=head; while(p1!=NULL) { if(p1->num==num) break; else { p2=p1; p1=p1->next; } } if(p1!=NULL)//若找到结点 cout<<"职工信息为:"<<endl<<endl<<(*p1)<<endl; elsecout<<"该职工信息不存在!"<<endl; }break;case2: { charname[20];cout<<"姓名:";cin>>name;p1=head;while(p1!=NULL){if(strcmp(p1->name,name)==0)break;else{p2=p1;p1=p1->next;}}if(p1!=NULL)//若找到结点cout<<(*p1)<<endl;elsecout<<"信息查询失败!"<<endl; }break;case3: { charbranch[20]; intm=0;cout<<"部门:";cin>>branch;p1=head;while(p1!=NULL){if(strcmp(p1->branch,branch)==0) {cout<<(*p1)<<endl; p2=p1;p1=p1->next; m++; }else{p2=p1;p1=p1->next;}}if(m==0) cout<<"信息查询失败!"<<endl; }break;case4: { intjob;intn=0;cout<<"职务:";cin>>job;p1=head;while(p1!=NULL){if(p1->job==job){cout<<(*p1)<<endl; p2=p1;p1=p1->next; n++; }else{p2=p1;p1=p1->next;}}if(n==0)cout<<"查询失败!"<<endl;}break;case5:return;}}while(i!=5);}voidcontrol::changeinformation()//修改职工信息{worker*p1=NULL,*p2=NULL;if(head==NULL) { cout<<"系统暂无信息,无法修改,请录入信息!"<<endl; return; }inti;//选择变量do{ cout<<"*******************************************************************"<<endl; cout<<"**"<<endl; cout<<"*1、修改姓名2、修改部门*"<<endl; cout<<"*3、修改职务4、返回上级菜单*"<<endl; cout<<"**"<<endl; cout<<"*请选择相应编号:*"<<endl; cout<<"*******************************************************************"<<endl;while(intj=1) {cin>>i; if(i>4||i==0) cout<<"输入错误请重新输入"<<endl; elsebreak; }if(i!=4){intnum;cout<<"\t\t请输入修改职工编号:";cin>>num;p1=head;while(p1!=NULL) { if(p1->num==num) break; else { p2=p1; p1=p1->next; } } if(p1!=NULL)//若找到结点 cout<<"编号为"<<num<<"的职工原信息为:"<<endl<<endl<<(*p1)<<endl; else {cout<<"该职工信息不存在!"<<endl; return; }}//执行修改结点switch(i){case1:{cout<<"姓名修改为:"; charnewname[20]; cin>>newname;strcpy(p1->name,newname); } break;case2: {cout<<"部门修改为:";charnewbranch[20];cin>>newbranch;strcpy(p1->branch,newbranch);} break;case3:{cout<<"职务修改为(1:经理;2:技术人员;3:销售人员;4:销售经理):";intnewjob;cin>>newjob;p1->job=newjob;} break;case4:return;} if(p1!=NULL)//若找到结点cout<<"修改成功!"<<endl; cout<<"该职工现在的信息为:"<<endl<<endl<<(*p1)<<endl;}while(i!=4);}voidcontrol::showinformation()//显示所有职工信息{ cout<<"*************************显示所有职工信息**************************"<<endl; worker*p1=head;//初始化a if(p1==NULL) cout<<"系统暂无信息,请录入!"<<endl; while(p1!=NULL) { cout<<(*p1)<<endl; p1=p1->next; }}voidcontrol::countinformation(){worker*p1=NULL,*p2=NULL;if(head==NULL) { cout<<"系统暂无信息,无法计算,请录入信息!"<<endl; return; }inti;//选择变量do{ cout<<"*******************************************************************"<<endl; cout<<"**"<<endl; cout<<"*1、按照编号2、按照姓名*"<<endl; cout<<"*0、返回上级菜单*"<<endl; cout<<"*请选择相应编号:*"<<endl; cout<<"*******************************************************************"<<endl;while(intj=1) {cin>>i; if(i>2||i<0) cout<<"输入错误请重新输入"<<endl; elsebreak; }switch(i){case1: { intnum;cout<<"编号:";cin>>num; p1=head; while(p1!=NULL) { if(p1->num==num) break; else { p2=p1; p1=p1->next; } } if(p1!=NULL)//若找到结点 {cout<<"职工的实际工资为:"<<endl; p1->money(); } else cout<<"该职工信息不存在!"<<endl; }break;case2: { charname[20];cout<<"姓名:";cin>>name;p1=head;while(p1!=NULL){if(strcmp(p1->name,name)==0)break;else{p2=p1;p1=p1->next;}}if(p1!=NULL)//若找到结点 {cout<<"职工的实际工资为:"<<endl; p1->money(); }elsecout<<"信息查询失败!"<<endl; }break; case0:return; } }while(i!=0);}voidcontrol::readinformation()//读入员工信息{intmark;//类标记worker*p=NULL;ifstreaminfile("worker1.txt",ios::in);//读取一条记录 if(!infile) { cerr<<"Openerror!"<<endl; //abort(); } while(mark!=0){ infile>>mark;switch(mark) { case1: { p=newmanager(1); p->mark=1; infile>>p->num>>p->name>>p->sex>>p->branch>>p->job>>p->basic; infile>>p->jibie; }break; case2: { p=newsaleman(2); p->mark=2; infile>>p->num>>p->name>>p->sex>>p->branch>>p->job>>p->xiaoshoue; }break; case3: { p=newtechnologyman(3); p->mark=3; infile>>p->num>>p->name>>p->sex>>p->

温馨提示

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

评论

0/150

提交评论