您好,欢迎访问三七文档
《C++课程设计》题目:人员信息管理系统学生姓名:学号:专业班级:同组人员:指导老师:设计时间:指导老师意见:评定成绩:签名:日期:C++课程设计实验报告——人员信息管理系统一:系统要求分析1:功能需求(1)人员信息基本管理,包括人员信息的录入、修改和删除;(2)能够自动设置员工的编号,即每增加一位新员工,编号增一;(3)能够分别对不同级别的员工(如经理、技术人员、推销人员等)按照不同的公式计算其工资收入;(4)能够将人员信息保存到磁盘上,以便程序下次运行时使用;(5)具有一定的排错功能,如当用户输入错误数据时提示用户;(6)能够实现一定程度的查询和统计功能。(7)其他你能想到并对系统有用的功能。在实现程序功能的基础上,尽量运用所学知识,改进程序实现方法,提高程序的可读性、模块性、可扩展性、可重用性和健壮性。工资计算公式:经理:固定为8000技术人员:工作时间*每小时酬金(100RMB)销售经理:1%提成+固定工资(5000RMB)推销员:4%提成二:系统总体设计1:系统功能框架设计登陆界面输入登陆密码liu三:系统详细设计1:设计思路使用面向对象的程序设计思想进行分析,整个系统涉及两大类信息和操作,公司,人员。所以系统主要涉及两个大类:公司类business、人员类person。系统的总体框架就是公司类,人员类的定义;主函数中定义一个公司对象,循环显示主菜单并根据用户选择调用公司类的相应方法(成员函数)。(1)公司类business:考虑系统操作的人员信息的数量具有不确定性,所以考虑使用链表保存、处理人员信息。公司类包含:所有人员信息的一个不带头结点的链表(作为数据成员)及可以对人员信息进行增,删,改,查询经营信息,基础数据设置,数据存盘,数据装入等操作的相关模块(write,build,search,repair,delete,list)作为成员函数。(2)人员类person:所有人员都具有的公共信息及操作可以使用人员类进行描述。由于系统具有4类人员且4类人员数据,操作有所不同,如销售员包含销售额,而兼职技术人员包含工作小时数且计算工资的方法不同,所以应当为4类人员创进入功能选择菜单1:录入2:显示3:查找4:修改5:删除7:退出进行操作处理操作结果自动存入txt文件中,再循环进入主菜单建相应的person类的派生类。(3)为了使公司类可以方便处理人员信息,可以考虑将公司类确定为人员类的友元类或者人员类提供公共的方法以便公司类进行操作。为了公司类可以用共同方法操作人员类,可以将人员类的方法确定为虚函数。2:功能模块设计1)voidwrite()——新增将向要新增的人员通过文件指令ofstreammyfile(f1.txt,ios::binary|ios::ate);myfile.write((char*)&p,sizeofp);myfile.close();将信息自动存入txt文档中。2)voidsearch()——查找通过读取源文件内容,再利用判断语句if(number==p.number)判断是否输入的序号与存档内容序号相同,相同则输出。3)voiddelete()——删除先查找出要删除的人员信息,再通过ofstreamfile2(f1.txt,ios::binary|ios::out);创建空白文件覆盖要删除的人员信息。4)voidshow()——显示用while判断语句打印出所有人员信息。5)voidrepair()——修改利用ofstreamh1(f2.txt,ios::binary|ios::out);覆盖要修改的人员信息。6)错误判断四:系统源代码#includeiostream.h#includefstream.h#includestring.h#includestdlib.hclassperson{public:charname[20],post[20],hour[20];intage,number;};classbusiness:publicperson{public:inttime;};//经理(一次派生类)classmgr:publicperson{public:intmonthpay;mgr::mgr(){monthpay=8000;}voidout(){cout请输入职工的编号:;cinnumber;cout请输入职工的姓名:;cinname;cout请输入职工的年龄:;cinage;cout该职工的月薪为:monthpayendl;}voidin(){cout编号:number''姓名:name''年龄:age''职称:经理''月薪:monthpayendl;}};//技术人员classtechnician:publicperson{public:inthourlyRate;//每小时酬金intworkHours;//当月工作时数intpay;technician::technician(){hourlyRate=100;};virtualvoidin(){cout编号:number''姓名:name''年龄:age''职称:技术人员''月薪:payendl;}voidout(){cout请输入职工的编号:;cinnumber;cout请输入职工的名字:;cinname;cout请输入工作的小时:;cinworkHours;cout请输入职工的年龄:;cinage;pay=hourlyRate*workHours;cout该职工的月薪为:payendl;}};//销售经理classsell:publicbusiness{public:intphpay,monthpay;sell::sell(){phpay=1,monthpay=5000;}voidin(){cout编号:number姓名:name销售额:time年龄:age职称:销售经理月薪:pay()endl;}intpay(){return(phpay*time+monthpay);}voidout(){cout请输入职工的编号:;cinnumber;cout请输入职工的名字:;cinname;cout请输入销售额:;cintime;cout请输入职工的年龄:;cinage;cout职工的月薪为:pay()endl;}};//推销员classbagman:publicbusiness{public:intphpay;bagman::bagman(){phpay=4;}voidin(){cout编号:number姓名:name销售额:time年龄:age职称:推销员年薪:pay()endl;}intpay(){return(phpay*time);}voidout(){cout请输入职工的编号:;cinnumber;cout请输入职工的名字:;cinname;cout请输入销售额:;cintime;cout请输入职工的年龄:;cinage;cout该职工的月薪为:pay()endl;}};/////*******************************输入函数voidwrite1(){mgrp;p.out();ofstreammyfile(f1.txt,ios::binary|ios::ate);//与ios::app|ios::out)均可myfile.write((char*)&p,sizeofp);myfile.close();}voidwrite2(){technicianp;p.out();ofstreammyfile(f2.txt,ios::binary|ios::ate);//与ios::app|ios::out)均可myfile.write((char*)&p,sizeofp);myfile.close();}voidwrite3(){sellp;p.out();ofstreammyfile(f6.txt,ios::binary|ios::ate);//与ios::app|ios::out)均可myfile.write((char*)&p,sizeofp);myfile.close();}voidwrite4(){bagmanp;ofstreammyfile(f7.txt,ios::binary|ios::ate);//与ios::app|ios::out)均可p.out();myfile.write((char*)&p,sizeofp);myfile.close();}voidbuild(){coutendl;cout******************请选择职工的信息******************endl;cout**1.经理**endl;cout**2.技术人员**endl;cout**3.销售经理**endl;cout**4.推销员**endl;cout****************************************************endl;charch;cinch;while(ch!='N'&&ch!='n'){switch(ch){case'1':write1();break;case'2':write2();break;case'3':write3();break;case'4':write4();break;default:coutERROR!!endl;break;}cout是否继续输入:(Y/N)?;cinch;if(ch=='Y'||ch=='y'){cout请输入1~4:endl;cinch;}}}//*************************************显示函数voidshow1(){ifstreammyfile(f1.txt,ios::binary|ios::out|ios::in);mgrp;myfile.read((char*)&p,sizeofp);while(!myfile.eof()){p.in();myfile.read((char*)&p,sizeofp);}myfile.close();}voidshow2(){ifstreammyfile(f2.txt,ios::binary|ios::out|ios::in);technicianp;myfile.read((char*)&p,sizeofp);while(!myfile.eof()){p.in();myfile.read((char*)&p,sizeofp);}myfile.close();}voidshow3(){ifstreammyfile(f6.txt,ios::binary|ios::out|ios::in);sellp;myfile.read((char*)&p,sizeofp);while(!myfile.eof()){p.in();myfile.read((char*)&p,sizeofp);}myfile.close();}voidshow4(){ifstreammyfile(f7.txt,ios::binary|ios::out|ios::in);bagmanp;myfile.read((char*)&p,sizeofp);while(!myfile.eof()){p.in();myfile.read((char*)&p,sizeofp);}myfile.close();}voidshow0(){show1();
本文标题:人员信息管理系统
链接地址:https://www.777doc.com/doc-1019602 .html