1、高职学院C+程序设计语言上学期课 程 设 计 报 告( -第1学期)课程设计类型:C语言程序设计题目:人员信息管理系统学号:姓名:专业:计算机应用基础 指导老师:课程设计日期:.12.23-.12.27.目 录1. 问题分析12. 总体设计12.1 功效分析13. 具体设计23.1 程序结构图23.2 程序类结构图23.3 程序类结构图34. 功效测试44.1 本系统主界面44.2 录入功效主界面44.3 显示功效主界面54.4 查找功效主界面54.5 修改功效主界面64.6 删除功效主界面64.7 清理功效主界面74.8 退出功效主界面75. 课设小结7参 考 文 献8附录:源代码清单81.
2、 问题分析1.1 问题描述1.题目人员信息管理系统设计2.设计说明和要求(1) 企业关键有4类人员:经理、技术人员、销售员、销售经理,要求存放这些人姓名、年纪、工资信息。(2) 工资计算方法A、 经理:固定为8000元;B、 技术员:工作时间*每小时酬金(100RMB);C、 销售员:4%分成;D、 销售经理:1%分成+固定工资(5000RMB);(3) 实现功效 录入:输入多种数据,并录入TXT文件保留; 显示:显示职员数据信息; 查找:查找职员数据信息; 修改:修改职员数据信息; 删除:删除职员数据信息; 退出:退出本系统; 清理存放文件:清理系统产生TXT文件;2. 总体设计2.1 功效
3、分析使用面向对象程序设计思想进行分析,整个系统包含两大类信息和操作,企业,人员。所以系统关键包含两个大类:企业类business、人员类person。系统总体框架就是企业类,人员类定义;主函数中定义一个企业对象,循环显示主菜单并依据用户选择调用企业类对应方法(组员函数)。3. 具体设计3.1 程序结构图雇员类技术员类经理类销售员类类销售经理类3.2 程序类结构图Person类char name20;char post20;char hour20;int age;int number;void in;void pay;void out;Sell类int phpay;int monthpay;;v
4、oid in;void pay;void out;Technician类int hourlyRate;int workHours;void in;void pay;void out;Business类int time;void in;void pay;void out;Sell类int phpay;int monthpay;void in;void pay;void out;Bagman类int phpay;void in;void pay;void out;3.3 程序类结构图开始输入选择Switch(c)Case 6结束删除职员信息Case 1Case 4Case 2Case 5Case
5、3Case 0修改职员信息查找职员信息显示职员信息录入职员信息删除存放文件4. 功效测试4.1 本系统主界面4.2 录入功效主界面4.3 显示功效主界面4.4 查找功效主界面4.5 修改功效主界面4.6 删除功效主界面4.7 清理功效主界面4.8 退出功效主界面5. 课设小结依据课程设计要求,我思索出了自己课题,我用本学期所学C+面向对象知识来编写程序。我利用面向对象方法和C+编程思想来完成系统设计,在设计过程中,建立清楚层次,当然在调试过程中我也碰到了很多问题。本程序由雇员这个基类派生出多个派生类,而且调用多个函数。主函数关键利用选择结构。派生类中保护类数据要经过定义公有类型函数来从类外调用
6、。和部分相当复杂算法,自己看了全部乱,头全部晕。不过,我相信,不经历风雨怎么能见彩虹。在处理了这一切后,我有一个:天将降大任于斯人也,必先劳其筋骨,饿其体肤感觉!参 考 文 献1. 钱能主编,C+程序设计教程,清华大学出版社,.112. 戴锋编著,Visual C+程序设计基础,清华大学出版社,.43. 施平安主编,C+程序设计教程(第四版),清华大学出版社,.34. 林丽闽主编,标准C+程序设计教程,电子工业出版社,.6.15. 谭浩强主编,C+程序设计,清华大学出版社,.6附录:源代码清单#include#include#include#include#includeclass perso
7、n public:char name20,post20,hour20; int age,number; ;class business :public person public : int time; ; /经理class mgr : public person public: int monthpay; mgr : mgr() monthpay=8000 ; void out() coutnumber ; coutname ; coutage ; cout该职员月薪为:monthpayendl; void in() cout编号:number 姓名:name 年纪:age 职称:经理 月薪
8、:monthpayendl; ;/技术人员class technician :public person public:int hourlyRate ; /每小时酬金int workHours ; /当月工作时数 int pay;technician : technician() hourlyRate=100 ; ; void in() cout编号:number 姓名:name 年纪:age 职称:技术人员 月薪:payendl ; void out() coutnumber ; coutname ; coutworkHours ; coutage ; pay=hourlyRate*work
9、Hours; cout该职员月薪为:payendl; ; /销售经理class sell :public business public: int phpay,monthpay; sell : sell() phpay=1,monthpay=5000; void in() cout编号:number 姓名:name 销售额:time 年纪:age 职称:销售经理 月薪:pay()endl ; int pay() return(phpay*time+monthpay); void out() coutnumber ; coutname ; couttime ; coutage ; cout职员月
10、薪为:pay()endl; ;/推销员 class bagman :public business public: int phpay ; bagman : bagman() phpay=4; void in() cout编号:number 姓名:name 销售额:time 年纪:age 职称:推销员 年薪:pay()endl ; int pay() return(phpay*time); void out() coutnumber ; coutname ; couttime ; coutage ; cout该职员月薪为:pay()endl; ;/输入函数void write1()mgr p;
11、p.out();ofstream myfile(f1.txt,ios : binary|ios : ate);myfile.write(char*)&p,sizeof p); myfile.close(); void write2() technician p; p.out(); ofstream myfile(f2.txt,ios : binary|ios : ate); myfile.write(char*)&p,sizeof p); myfile.close();void write3() sell p; p.out(); ofstream myfile(f3.txt,ios : bin
12、ary|ios : ate); myfile.write(char*)&p,sizeof p); myfile.close();void write4() bagman p; ofstream myfile(f4.txt,ios : binary|ios : ate); p.out(); myfile.write(char*)&p,sizeof p); myfile.close();void build() coutendl; cout *请选择职员信息* endl; cout * 1.经理 * endl; cout * 2.技术人员 * endl; cout * 3.销售经理 * endl;
13、 cout * 4.推销员 * endl; cout * endl;cout请输入选择:ch; 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 ; coutch;if(ch=Y|ch=y) cout请输入选择:ch; /显示函数void show1() ifstream myfile(f1.txt,ios :
14、 binary|ios : out|ios : in);mgr p;myfile.read(char*)&p,sizeof p); while(!myfile.eof() p.in();myfile.read(char*)&p,sizeof p); myfile.close();void show2()ifstream myfile(f2.txt,ios : binary|ios : out|ios : in);technician p;myfile.read(char*)&p,sizeof p);while(!myfile.eof()p.in();myfile.read(char*)&p,s
15、izeof p);myfile.close();void show3()ifstream myfile(f3.txt,ios : binary|ios : out|ios : in);sell p ;myfile.read(char*)&p,sizeof p); while(!myfile.eof() p.in();myfile.read(char*)&p,sizeof p); myfile.close();void show4()ifstream myfile(f4.txt,ios : binary|ios : out|ios : in);bagman p ;myfile.read(char
16、*)&p,sizeof p); while(!myfile.eof() p.in();myfile.read(char*)&p,sizeof p); myfile.close();void show0()show1(); show2();show3();show4();void show()cout *你正在显示*endl;cout * 0.全部显示 *endl;cout * 1.经理 *endl;cout * 2.技术人员 *endl;cout * 3.销售经理 *endl;cout * 4.推销员 *endl;cout *endl;cout请选择你要显示职员类:c ;while(c!=N&
17、c!=n)switch(c)case 0 :show0();break;case 1 :show1();break;case 2 :show2();break;case 3 :show3();break;case 4 :show4();break;default :coutERROR!endl;break;cout是否继续使用显示功效(Y/N)?c;if(c=Y|c=y)cout请选择你要显示职员类:c; /查找函数void search1()int m=1;cout请输入你要查找编号:number;ifstream myfile(f1.txt,ios : binary|ios : out|i
18、os : in);mgr p;myfile.read(char*)&p,sizeof p);while(!myfile.eof()if(number=p.number)p.in();myfile.close();m=0;myfile.read(char*)&p,sizeof p);if(m)cout查无此人!endl;void search2()int m=1;cout请输入你要查找编号:number;ifstream myfile(f2.txt,ios : binary|ios : out|ios : in);technician p;myfile.read(char*)&p,sizeof
19、p);while(!myfile.eof()if(number=p.number)p.in();myfile.close();m=0;myfile.read(char*)&p,sizeof p);if(m)cout查无此人!endl;void search3()int m=1;cout请输入你要查找编号:number;ifstream myfile(f3.txt,ios : binary|ios : out|ios : in);sell p ;myfile.read(char*)&p,sizeof p);while(!myfile.eof()if(number=p.number) p.in()
20、; myfile.close();m=0;myfile.read(char*)&p,sizeof p); if(m)cout查无此人!endl; void search4()int m=1;cout请输入你要查找编号:number;ifstream myfile(f4.txt,ios : binary|ios : out|ios : in);bagman p ;myfile.read(char*)&p,sizeof p);while(!myfile.eof()if(number=p.number)p.in();myfile.close();m=0;myfile.read(char*)&p,si
21、zeof p);if(m)cout查无此人!endl;void search()cout *你正在查找*endl;cout * 1.经理 *endl;cout * 2.技术人员 *endl;cout * 3.销售经理 *endl;cout * 4.推销员 *endl;cout *endl;cout请选择你职称类型:c;while(c!=N&c!=n)switch(c)case 1 :search1();break;case 2 :search2();break;case 3 :search3();break;case 4 :search4();break;default :coutERROR!
22、endl;break;coutc;if(c=Y|c=y)cout请选择你职称类型:c; /修改函数void repair1(void)int num,i=0,k=0;mgr*p1=new mgr50;coutnum ;ifstream h1(f1.txt,ios : binary|ios : in);h1.read(char*)&p1i,sizeof p1i);while(!h1.eof()i+;h1.read(char*)&p1i,sizeof p1i);h1.close();k=i ;for(i=0;ik;i+)if(num=p1i.number)p1i.out(); cout修改完成!e
23、ndl ; ofstream h2(f1.txt,ios : binary|ios : out);for(i=0;ik;i+)h2.write(char*)&p1i,sizeof p1i);h2.close();deletep1 ;void repair2(void)int num,i=0,k=0;technician*p2=new technician50;coutnum;ifstream h2(f2.txt,ios : binary|ios : in);h2.read(char*)&p2i,sizeof p2i);while(!h2.eof()i+;h2.read(char*)&p2i,s
24、izeof p2i);h2.close();k=i ;for(i=0;ik;i+)if(num=p2i.number) p2i.out();cout修改完成!endl; ofstream h1(f2.txt,ios : binary|ios : out);for(i=0;ik;i+) h1.write(char*)&p2i,sizeof p2i);h1.close();deletep2;void repair3(void)int num,i=0,k=0;sell*p6=new sell50;coutnum ;fstream h6(f3.txt,ios : binary|ios : out|io
25、s : in);h6.read(char*)&p6i,sizeof p6i);while(!h6.eof()i+;h6.read(char*)&p6i,sizeof p6i);k=i ;h6.close();for(i=0;ik;i+)if(num=p6i.number)p6i.in();cout修改完成!endl;ofstream h1(f6.txt,ios : binary|ios : out);for(i=0;ik;i+)h1.write(char*)&p6i,sizeof p6i);h1.close();deletep6; void repair4(void)int num,i=0,k
26、=0 ;bagman*p7=new bagman50;coutnum;fstream h7(f4.txt,ios : binary|ios : out|ios : in);h7.read(char*)&p7i,sizeof p7i);while(!h7.eof()i+;h7.read(char*)&p7i,sizeof p7i);k=i;h7.close();for(i=0;ik;i+)if(num=p7i.number)p7i.out();cout修改完成!endl;ofstream h1(f7.txt,ios : binary|ios : out);for(i=0;ik;i+)h1.wri
27、te(char*)&p7i,sizeof p7i);h1.close();deletep7; void repair()cout *你正在修改*endl;cout * 1.经理 *endl;cout * 2.技术人员 *endl;cout * 3.销售经理 *endl;cout * 4.推销员 *endl;cout *endl;cout请输入你要修改职称类型:c;while(c!=N&c!=n)switch(c) case 1 :repair1();break;case 2 :repair2();break;case 3 :repair3();break;case 4 :repair4();b
28、reak;default :coutERROR!endl;break;cout是否继续修改(Y/N)?c;if(c=Y|c=y) cout请输入你要修改职称类型:c; void delete1()int i=0,number;ifstream myfile(f1.txt,ios : binary|ios : in);mgr p30;myfile.read(char*)(p+i),sizeof*p);cout请输入你要删除对象编号:number;while(!myfile.eof()if(number=pi.number)i-;i+;myfile.read(char*)(p+i),sizeof*
29、p);int k=i;myfile.close();ofstream file2(f1.txt,ios : binary|ios : out);for(i=0;ik;i+) file2.write(char*)(p+i),sizeof*p);void delete2()int i=0,number ;ifstream myfile(f2.txt,ios : binary|ios : in);technician p30;myfile.read(char*)(p+i),sizeof*p);cout请输入你要删除对象编号:number ;while(!myfile.eof()if(number=pi.number)i-;i+;myfile.read(char*)(p+i),sizeof*p);int k=i;myfile.close();ofstream file2(f2.txt,ios : binary|ios : out);for(i=0;ik;i+)file2.write(char*)(p+i),sizeof*p); void delete3()int i=0,number;ifstream myfile(f3.txt,ios : binary|ios : in);sell p30;myfile.read(char*)(p+i),sizeof*p);