资源描述
C+程序设计课程设计报告设计题目: 小型企业工资管理系统专 业 计算机科学与技术 班 级 学 生 学 号 指导教师 起止时间 2009-2010 学年 第一 学期目 录1 引 言11.1 问题的提出 (四号黑体)11.2国内外研究的现状 (四号黑体)11.5任务与分析 (四号黑体)12 程序的主要功能22.1输入数据22.2数据统计22.3 数据打印22.4数据备份22.5退出23 运行平台24 总体设计35 程序类说明46 模块分析66.1 经理类成员函数66.2销售经理类成员函数66.3销售员类成员函数86.4技术员类成员函数96.5主函数107 系统测试218 结论24参考文献2524 引 言 1.1 问题的提出 在现代化的企业管理中,工资管理系统有着十分重要的作用,然而,用大型软件系统来于小型的企事业单位,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种单位自然有十分重要作用。某小型企业出与这种目的制作了这个工资管理系统。1.2国内外研究的现状 在现今国内外大中小型企业蓬勃发展,对企业的管理显得越发重要,其中对工资进行管理更是公司发展的命脉。1.5任务与分析 1、 公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。 2、 工资的计算办法: 经理:固定月薪为8000; 技术员:工作时间小时工资(100元每小时); 销售员:销售额4%提成; 销售经理:底薪(5000)所辖部门销售额总额0.5%; 3、 类的层次结构大体如图1所示: 4、 输入数据要求每类人员不能少于4人,并按以下格式同时输出到文件和屏幕: 职工号 姓名 性别 年龄 岗位 工资 排名 5、 总体设计,要有一个菜单,用于选择各项功能,其中 1) 数据录入:输入各种数据; 2) 数据统计:各类人员的工资计算及最终按工资进行的冒泡排序; 3) 数据打印:打印上述表格; 4) 数据备份:把相关数据写入文件; 5) 退出:退出本系统; 注:各项菜单都调用一个函数来实现。 6、输入并存放某销售经理所辖部门各销售员的业绩及自己的工资表: (选作)2 程序的主要功能2.1输入数据 输入各种数据2.2数据统计 各类人员的工资计算及最终按工资进行的冒泡排序;2.3 数据打印打印表格2.4数据备份把相关数据写入文件2.5退出退出本系统3 程序运行平台VC+6.0。具体操作如下:新建工程,添加相应的源文件,再编译,链接,执行等,此部分可参照实验指导书前面的内容写。4 总体设计 图4.1 系统总体框架图主函数输入数据数据统计数据打印数据备份退出系统管理系统输入数据数据统计数据打印数据备份E盘gzglst下退出系统图4.2系统总流程图5 程序类的说明 Employ类的声明class Employ/雇员类protected: int num; char name10; char sex; int age; int wage;public:virtual void set()=0;virtual void print()=0;virtual void reserved()=0; Manager类的声明class Manager:public Employ/经理类public: void set(); void print();void reserved(); Salesman类声明class Salesman:public Employ/销售员类protected:int salesvolume;int snum;public: void set(); void print();void reserved();void printinfor();int getsales()return salesvolume;int getsnum()return snum; MarketMan类声明class MarketMan:public Manager/销售经理类protected:int salesvolume;public: void set(); void print();void reserved(); int resetwage();int getnum()return num;char*getname()return name;int getamount(Salesman s,int n)salesvolume=0;for(int i=0;in;i+)if(si.getsnum()=num)salesvolume+=si.getsales();return salesvolume; 6 模块分析/此部分应详细介绍设计思想、流程及关键代码等,下面没详细介绍6.1 经理类成员函数void Manager:print()/经理类成员函数cout setw(8)num setw(9)name setw(9)sex;cout setw(10)age setw(10)wage endl;void Manager:reserved()ofstream employf(d:managerbf.txt);employf经理的编号:numendl 其姓名:nameendl 性别(m/w):sexendl 年龄:ageendl; 6.2 销售经理类成员函数void MarketMan:set()/销售经理类成员函数wage=resetwage();coutnum;coutname;coutsex;coutage; void MarketMan:print() resetwage();cout setw(10)num setw(10)name setw(10)sex;cout setw(10)age setw(12)wage endl;void MarketMan:reserved() ofstream employf(d:markermanbf.txt);employf销售经理的编号:numendl 其姓名:nameendl 性别(m/w):sexendl 年龄:ageendl;int MarketMan:resetwage()wage=5000+int(salesvolume*0.005);return wage; 6.3 销售员类成员函数void Salesman:set()/销售员类成员函数coutnum;coutname;coutsex;coutage;coutsalesvolume;coutsnum; wage=int(salesvolume*0.04);void Salesman:printinfor()coutnum name salesvolume endl;void Salesman:print()coutnum name sex;coutage wage getsnum() endl; void Salesman:reserved()ofstream employf(d:salesmanbf.txt);employf销售员的编号:numendl 其姓名:nameendl 性别(m/w):sexendl 年龄:ageendl 销售额:salesvolumeendl 所属销售经理的编号snumendl;6.4 技术员类成员函数void Technician:set()/技术员类成员函数coutnum;coutname;coutsex;coutage;coutworktime;wage=worktime*100;void Technician:print()cout setw(10)num setw(10)name setw(10)sex;cout setw(10)age setw(12)wage endl; void Technician:reserved() ofstream employf(d:technicianbf.txt);employf技术员的编号:numendl 其姓名:nameendl 性别(m/w):sexendl 年龄:ageendl 工作时间:worktimeendl;6.5 主函数int t,m,s,mm;Technician*pt;Manager*pm;Salesman*ps;MarketMan*pmm;void setin();void count();void printdata();void reservedall();void single();void main()cout请分别输入技术员,经理,销售员,销售经理人数:tmsmm;pt=new Techniciant;pm=new Managerm;ps=new Salesmans;pmm=new MarketManmm;if(!pt)|(!pm)|(!ps)|(!pmm)cout堆内存分配失败!endl;exit(1);single();void single() cout 小型公司工资管理系统 endl;cout 请选择所需的操作 : endl;cout数据输入: 1,并按回车键 endl;cout数据统计: 2,并按回车键 endl;cout数据打印: 3,并按回车键 endl;cout数据备份: 4,并按回车键 endl;cout退出系统: 5,并按回车键 endl;cout请选择一个操作:choice;switch(choice)case 1:setin();case 2:count(); case 3:printdata();case 4:reservedall();case 5:exit(0);void setin()Menu1:cout 小型公司工资管理系统endl;cout 请选择所需的操作 endl;cout技术员数据输入 : 1,并按回车键 endl;cout经理数据输入 : 2,并按回车键 endl;cout销售员数据输入 : 3,并按回车键 endl;cout销售经理数据输入 : 4,并按回车键 endl;cout返回上一级菜单 : 5,并按回车键 endl;coutch1;switch(ch1)case 1:for(i=0;it;i+) pti.set(); cout-endl; goto Menu1;case 2:for(i=0;im;i+) pmi.set(); cout-endl; goto Menu1;case 3:for(i=0;is;i+) psi.set(); cout-endl; goto Menu1; case 4:for(i=0;imm;i+) pmmi.set(); cout-endl; goto Menu1; case 5:single();void count()Menu2:cout 小型公司工资管理系统endl;cout 请选择所需的操作 endl;cout各销售经理下属销售员业绩统计 : 1,并按回车键 endl;cout销售经理按工资排序 : 2,并按回车键 endl;cout返回上一级菜单 : 3,并按回车键 endl;coutch2;switch(ch2)case 1:for(i=0;imm;i+) cout职工号为:pmmi.getnum()销售经理:pmmi.getname()下属销售员的业绩为:endl; cout 职工号 姓名 销售额 endl; for(j=0;js;j+) if(pmmi.getnum()=psj.getsnum() psj.printinfor(); cout销售额总计: setw(22)pmmi.getamount(ps,s) endl; goto Menu2; case 2:cout销售经理按工资排序为:endl; MarketMan pmmm; for(i=1;imm;i+) for(j=0;jmm-i;j+) if(pmmj.getamount(ps,s)pmmj+1.getamount(ps,s) pmmm=pmmj; pmmj=pmmj+1; pmmj+1=pmmm; cout 职工号 姓名 性别 年龄 工资 endl; for(i=0;imm;i+) pmmi.print(); cout -endl; goto Menu2;case 3:single();void printdata()Menu3:cout 小型公司工资管理系统endl;cout 请选择所需的操作 endl;cout技术员数据输出 : 1,并按回车键 endl;cout经理数据输出 : 2,并按回车键 endl;cout销售员数据输出 : 3,并按回车键 endl;cout销售经理数据输出 : 4,并按回车键 endl;cout返回上一级 : 5,并按回车键 endl;coutch3;switch(ch3)case 1: cout技术员endlendl; cout 职工号 姓名 性别 年龄 工资 endl; for(i=0;it;i+) pti.print(); cout-endl; goto Menu3;case 2: cout经理endlendl; cout 职工号 姓名 性别 年龄 工资 endl; for(i=0;im;i+) pmi.print(); cout-endl; goto Menu3;case 4:cout销售经理endlendl; cout 职工号 姓名 性别 年龄 工资 endl; for(i=0;imm;i+) pmmi.print(); cout-endl; goto Menu3;case 3:cout销售员endlendl; cout 职工号 姓名 性别 年龄 工资 所属部门经理编号endl; for(i=0;is;i+) psi.print(); cout-endl; goto Menu3;case 5:single();void reservedall()Menu4:cout 小型公司工资管理系统endl;cout 请选择所需的操作 endl;cout技术员数据备份 : 1,并按回车键 endl;cout经理数据备份 : 2,并按回车键 endl;cout销售员数据备份 : 3,并按回车键 endl;cout销售经理数据备份 : 4,并按回车键 endl;cout返回上一级 : 5,并按回车键 endl;coutch4;switch(ch4)case 1:for(i=0;it;i+) pti.reserved(); goto Menu4; case 2:for(i=0;im;i+) pmi.reserved(); goto Menu4; case 3:for(i=0;is;i+) psi.reserved(); goto Menu4; case 4:for(i=0;imm;i+) pmmi.reserved(); goto Menu4; case 5:single();7 系统测试首先进入VC+6.0,打开工程person.dsw,然后进入源程序,接着选择Build下的Execute person.exe即可,也可以不打开工程,直接双击person文件夹下的debug或release子文件夹下的person.exe文件即可运行程序。首先进入工资管理系统:图7.1数据输入: 图7.2 图7.3数据打印: 图7.4 图7.5数据备份: 图7.6备份数据保存在E盘gzglxt.txt文件下: 图7.7退出系统:图7.88 结论通过本次试验,对一个小型企业的工资管理系统的功能全部实现,虽然没有一一演练,但是其他功能也能通过代码人工实现。不过美中不足的是在编写程序过程中没有考虑输出时的格式问题,所以导致数据输出很多都没对齐,但是经过反复努力只能做到大致对齐地步。同时也通过本次课程设计让我对C+更深一步的理解,对我们的学习帮助真的很大。最后要感谢指导老师在课程开始直到结束的细心指导。参考文献1. 钱能编著. C+程序设计教程(第二版). 北京:清华大学出版社,2005.092郑莉等 编著. C+程序设计语言(第三版). 北京:清华大学出版社,2005.06 3.陈清华 朱红主编. Visual C+课程设计案例精选与编程指导. 南京:东南大学出版社,2003.06 4.刘振安等编著. C+程序设计课程设计.机械工业出版社,2004.08,北京
展开阅读全文