《小型公司工资管理系统..doc》由会员分享,可在线阅读,更多相关《小型公司工资管理系统..doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除中国石油大学(华东)信息与控制工程学院程序设计实习报告小型公司工资管理系统的设计专业班级:电子信息工程*班学号:*姓名:*指导教师:* 时 间:2013.7.12013.7.62013年7月目录一、 实习内容01二、 设计思路02三、 程序调试过程中典型问题及解决方法03四、 运行结果04五、 程序使用说明10六、 心得体会及课程改进设想10【精品文档】第 12 页备注:页码根据目录的实际页码进行标注一、实习内容1. 题目:小型公司工资管理系统的设计2. 设计说明与基本要求(1) 公司主要有4类人员:经理、技术员、销售员、销售经理。 要求存储这些
2、人的职工号、姓名、性别、年龄、月工资等 信息;(2) 工资的计算方法 经理:固定月薪为8000元; 技术员:工作时间*小时工资(100元/小时);销售员:销售额*4%提成; 销售经理:底薪(5000元)+下属销售员销售额总额*0.5%;(3) 员工基本数据的输入 要求每类人员不能少于2人,其中销售员需要4名,每名销 售经理手下至少有2名销售员。(4) 各类的数据成员访问权限设置为:protected(5)注意一个销售经理管辖多个销售员。(6)其他功能可适当扩充。(7)要求在控制台下完成。3. 实现基本功能 (1) 菜单选择功能 (2) 数据输入:输入各种数据; (3) 数据统计:统计各销售经理
3、下属销售员的销售额及销售额之和;销售经理按工资进行冒泡排序; (4)数据打印:打印各类员工的数据信息; (5)菜单说明 1.数据录入指通过键盘输入各类员工的各项数据; 2.数据统计指统计各销售经理下身书销售员的销售额及销售额之和;销售按工资进行冒泡排序; 3.数据打印指按照表格的格式在屏幕上输出各员工的信息; 4.数据备份指将所有员工的信息保存到文件; 5.退出:结束程序的运行。二、设计思路充分利用了类的继承与派生的知识,先定义了一个雇员类staff,由雇员类公有派生出技术员类tech,销售员类saleman,经理类mannger,由销售员类saleman,经理类mannger公有派生出销售经
4、理类salemannger。 各类的数据成员访问权限设置为:protected,继承方式都运用公有继承,通过基类去写的派生类就可以调基类的公有成员。利用for循环把经理数据,技术员数据,销售员数据,销售经理数据输入,利用冒泡排序法把各销售经理的资按升序排列。利用if语句进行选择系统进行的工作。在主菜单中进行调用各函数,从而实现系统各功能的运行。主函数要尽可能得简明扼要,只是起调用其它函数的作用。每一个函数之间要相互协调,要让程序中的变量和函数能够得到分运用,这样可以加快程序的运行速度,加强程序的实用性。三、程序调试过程中典型问题及解决方法1、这个程序比较长,在编程的时候给我最深刻的体会是一定要
5、整体考虑布局,并且一定要注意程序的简洁性。整体布局,首先体现在对垒中各个变量、函数的定义以及对对象的声明上。因为本程序要求类中变量是保护类型的变量,也就意味着再累外不能直接访问,只能够通过类中公有函数去访问,而类中的数据在后续操作中要参与统计,比较等操作,所以在定义访问数据的函数时要注意函数名的命名,一定要前后照应。例如,本程序中的四个派生类中都含有从雇员积累中继承过来的“工资”这一个数据,但是在不一样的类中有不一样的情况,在经理类中是固定的,但是在销售员类和销售经理类中是进行计算的,这就要求可以访问它们的函数有不一样的返回值。一边在后面进行统计。2、本程序中每一个类中都有多个对象,我刚开始在
6、编程的时候时将它们一个一个独立的进行声明。但最后发现,其实利用对象数组进行声明更加简洁与方便。尤其是在对销售经理利用冒泡法排序的时候,以及在统计数据的时候,直接利用多个FOR循环结构就可以很方便的对它们进行操作,省去了很多麻烦。3、在本程序中我们应该充分的利用类的继承和派生的优越性。我一开始在定义四个派生类时,在每一个派生类中都分别定义了输入输出姓名,年龄,性别的函数。到最后觉得十分繁琐,其实既然四个类都是从雇员类中继承过来的,所以直接在雇员基类中定义一个输入姓名,年龄,性别的函数就可以解决问题。4、本程序中中需要定义的函数,对象较多,所以要尽可能是名称简洁易懂,这样我们在检查程序的时候比较好
7、检查,刚开始的时候我没注意到这个问题这给我后边的编程工作带来很大麻烦,我认为这在编程中是比较重要的。四、运行结果五、程序使用说明点击运行后须按所给提示输入,当提示给出后可供选择的选项有1、2、3、4、5选择1时,可输入公司职员的基本信息当第1步输入完后可以运行第2步,对销售经理和销售员的基本信息进行统计。选择3时,可以将公司职员的信息以表格方式进行统计。选择4时,可以在程序所在的文件夹内生成一个TXT格式的文本文档。选择5时,可以选择是否退出程序。在提示给出后,当输入错误的选择时可给出提示并进行重新选择。六、心得体会及课程改进设想程序清单以上为实验报告,下面附上程序#include#inclu
8、de#include#include using namespace std;class staffprotected:int num;string name;double money;int age;char sex;public:int g_num()return num;string g_name()return name;double g_money()return money;int g_age()return age;char g_sex()return sex;class tech:public staffprotected:int time;public:int g_time(
9、)return time;void input1()coutnum;coutname;coutsex; coutage;couttime;class mannger:public staffpublic:void input2()coutnum;coutname;coutsex;coutage;class salemannger:public manngerpublic:void input3()coutnum;coutname;coutsex;coutage;class saleman:public staffprotected:int num2;public:int g_num2()ret
10、urn num2;void input4()coutnum;coutname;coutsex;coutage;coutmoney;coutnum2; int x,i,j; tech t4; mannger m4; salemannger s4,e; saleman sa8; double sum4;int main() void setout(); void put2();void put3();void put4();void put5(); for(;) setout(); cinx; if(x=1) for(i=0;i4;i+) ti.input1(); coutendl; for(i=
11、0;i4;i+) mi.input2(); coutendl; for(i=0;i8;i+) sai.input4(); coutendl; for(i=0;i4;i+) si.input3(); coutendl; else if(x=2) put2();else if(x=3)put3(); else if(x=4)put4();else if(x=5)int b;cout请问是否要退出系统:选择 1是;2否b;if(b=1)exit(1);if(b=2)continue;elsecout输入错误!请检查后重新输入!endl; /此处为大循环的终止return 0;void setout(
12、)cout小型公司工资管理系统endl; coutendl; cout 请选择您所需的操作 endl; cout 数据输入:1,并按回车键 endl; cout 数据统计:2,并按回车键 endl; cout 数据打印:3,并按回车键 endl; cout 数据备份:4,并按回车键 endl; cout 退出系统:5,并按回车键 endl; coutendl; cout请选择一个操作 ;void put2()double y,sum4=0,0,0,0;for(i=0;i4;i+)cout职工号为si.g_num()销售经理si.g_name()下属销售员的业绩为:endl; coutendl;
13、 cout 职工号 姓名 销售额 endl; for(j=0;j8;j+)if(si.g_num()=saj.g_num2()coutendl; coutsetw(9)saj.g_num() setw(8)saj.g_name()setw(8)saj.g_money()endl; sumi=sumi+saj.g_money(); coutendl; cout销售额总计setw(10)sumi endl; coutendl;cout 销售经理按工资排序:endl;for(j=0;j3;j+)for(i=0;i3-j;i+)if(sumisumi+1)y=sumi;sumi=sumi+1;sumi
14、+1=y;e=si;si=si+1;si+1=e;coutendl;cout职工号 姓名 性别年龄 工资 endl; for(i=0;i4;i+) coutendl; coutsetw(6)si.g_num()setw(7)si.g_name() setw(4)si.g_sex()setw(5)si.g_age() setw(8)5000+sumi*0.005endl; coutendl;coutendl;void put3()cout请等待endl;cout职工基本情况一览表如下endl;cout技术员endl;coutendl;cout职工号 姓名 性别年龄 工资 endl; for(i=
15、0;i4;i+) coutendl;coutsetw(6)ti.g_num()setw(7)ti.g_name() setw(4)ti.g_sex()setw(5)ti.g_age() setw(8)ti.g_time()*100endl; coutendl;coutendl;cout经理endl;coutendl;cout职工号 姓名 性别年龄 工资 endl; for(i=0;i4;i+) coutendl; coutsetw(6)mi.g_num()setw(7)mi.g_name() setw(4)mi.g_sex()setw(5)mi.g_age() setw(8)8000endl;
16、 coutendl;coutendl;cout销售经理endl;coutendl;cout职工号 姓名 性别年龄 工资 endl; for(i=0;i4;i+) coutendl;coutsetw(6)si.g_num()setw(7)si.g_name() setw(4)si.g_sex()setw(5)si.g_age() setw(8)5000+sumi*0.005 endl; coutendl;coutendl;cout销售员endl;coutendl;cout职工号 姓名 性别年龄 工资 所属部门经理编号endl; for(i=0;i8;i+) coutendl;coutsetw(6
17、)sai.g_num()setw(7)sai.g_name() setw(4)sai.g_sex()setw(5)sai.g_age() setw(8)0.04*sai.g_money()setw(16)sai.g_num2()endl; coutendl;coutendl;void put4()ofstream outfile(f1.txt,ios:out); /定义文件流对象,打开磁盘文件“f1.txtif(!outfile)cerropen error!endl; /如果打开失败,outfile返回值为零exit(1);cout数据备份中,请等待endl;cout备份完毕!; outfi
18、le*职工情况一览表*endl; outfile职工基本情况一览表如下:endl; outfile*技术员的资料统计*endl; for(i=0;i4;i+) outfile职工号:setw(10)ti.g_num() 姓名:setw(9)ti.g_name() 性别:setw(4)ti.g_sex() 年龄:setw(4)ti.g_age() 工作时间:setw(10)ti.g_time() 工资:setw(10)ti.g_time()*100endl; outfile-endl; outfile*经理的资料统计*endl; for(i=0;i4;i+) outfile职工号:setw(10
19、)mi.g_num() 姓名:setw(9)mi.g_name() 性别:setw(4)mi.g_sex() 年龄:setw(4)mi.g_age() 工资: setw(10)8000endl; outfile-endl; outfile*销售员的资料统计*endl; for(i=0;i8;i+) outfile职工号:setw(10)sai.g_num() 姓名:setw(9)sai.g_name() 性别:setw(4)sai.g_sex() 年龄:setw(4)sai.g_age() 销售额:setw(10)sai.g_money() 工资:setw(10)0.04*sai.g_money() 所属销售经理编号: setw(10)sai.g_num2()endl; outfile-endl; outfile*销售经理的资料统计*endl; for(i=0;i4;i+) outfile职工号: setw(10)si.g_num() 姓名: setw(9)si.g_name() 性别: setw(4)si.g_sex() 年龄: setw(10)si.g_age() 工资: setw(10)5000+0.005*sumiendl; outfile-endl;/向磁盘文件“f1.txt”输出数据outfile.close(); /关闭磁盘文件“f1.txt”coutendl;