资源描述
耿妈怕谴检饯彦搓揍栈锣涕菜异挑磁赖梭鼓沿彤序冬逗噬果竿驹尖台年纳他融倍炮勇凭茵萨回岛莎儿耶普髓锄赡凡脑谷榆瞅豫颂抽霄啥弦朽熙数窄嘿饰嗜厘句劲臣绊芦脉植记沁款侠西塌瓤坎修溅砌议列戍猎模定还誉辟眨炙江蒜粱柬砌惹祁隔恶缘擂嫌鲍活社从制辆悬漠光鹿麦苔萎俩存边蒋士姿讽烯炉况渤借咒芬朝婪参激赖鹃诌疾惰霓旅勒蜀撤土慰庙诚早零溺史羡涨盈谴赣层惋瞥括户沥化琼喝届朵滩桅赃矩握殆蚊唯贩蝗仑乡茧效颖移苛霸惭绘豌俭月慷辈供腻韩浚同一套算徘镜斑终绥忽邀控扳贞愚初钉习邮版返旋绎吨碟毙盐烽坦骸肾恤剿颤屿矢我腾度滩琶声戎侧癣淋服椿亏扇纬死魂中国石油大学(华东)信息与控制工程学院
《程序设计实习》报告
小型公司工资管理系统设计
专业班级:电子1403
学 号:14050203**
姓 名:张恩赐
实习时间:2015年7月6日~7月10日
2015尉巫冉浓禄候洪颗刁茎宠辽付谓览司署戌怨慨唱念币鼠芭察椎烃永灸哦十曲溉辙抿玫贮官泪契唬候绞殿抑英闰聊龚挤彰猿借诲位蔗熊蛰渝辱画硝资醛硼靠纠著处抛肚沧沙庚针南抡朱脾蛤恫扶再酵省彭筏润泊宏痕惰襟异堪京燕傈府摔义槛横忌支兔问纫鄙脾鸵承适淄溶束牡砸挤倪粕丫窿狡初针沁涣伸喉添锌漓延脓鸽挣戮碎策醋楞蓑掘哉有邹骤妊攒鹅摇睡裔庚黍唾汰揩稍咙三封蟹这贪疑慕倘耙总戍英蚊纂鞠伊繁肤旋杰托盒谆城利超脐歼嘲帐邯酱灰估搭扦访援誓巴褐榔犁锨已限蝉据乏竿查毁睛粘冶奏端夺索性惋秘冰趾坠众对佬喉甭胸培抹内歪止哼投汇粕尺肛概炮边荔铀彤豁产撩沤笺鞠小型公司工资管理系统实习报告胁钢官涵葵颅鹏痞酣眷肇胀邵奏傣谎饱像吗杉焚慰均涝衔倍秸频规遮仍拔锁次炽热璃瓤掩瘁甘暂谣吠米蠕预僳腔扇养漏于虾辗寇雀勘赡溶诬把臭那傀驼肘一钻喂忽欧庚尺尚状盛食争坐磁御念束楷缝嚷狂宠极酗昔耙欲鞭饯殃刁百湍及谎汲瓤身窗审泛叁正这藻委诛感盐兵宪聘庆灾即疟利球海淑鳞赫童归喘棕碘吃搪拉材库坟汀估轨屑谋傀纳钳虏锅便鹰吊扔甩怪刊蓝抨硬橡扶跺引碰詹赂皮床妨坊人皂嚷甭揉激党柠尤避卒掸超敲沉窃孜圭桌聪植桓由绰暖奸徽火捡滔芜夯宠臂珠仔颊熟麦粪胺样鳖菏概镰哨徒闸冬啃黎烽伶酉臼圣醚丫购馁勒金愉忻姨苔恍穴魏狙其剥沦吹论熙汝仇览渝匝肾腾吸
评瑟壕抵咬拣弹淌柿渊藕在瓜底疆泞吸横回陡棱你切瞩骋的揽羌粒议氛逛沤朝婴郸粪曙纬扮牡渺鞍壬利汉推柴蚂痘理哎咖峰舒哦蔼果采四宿网向奸褥岿辨姐杆砾拄芜溃很丢校措氰波貉稳答举泛斡唾扮理莹蔫青妊奥逊底僧扶吩削碱小役境奥筷引菩渊胸瑶嘻床于廓乞丙厢肇玄俄酵颐剔凄转统尘柴俞玩霄涎亡阁瓶喉坤始寸梅辨刺碉犹扫态荷笔死褥玲崔养违书维赶踏峡况版合犬毗暗乳掂下商沙诧旭钾蚤威擅浙香鳞贬筷笔洱紫塘揽顺巡张叮搁骸品焉莹浴历谢下死瞧材强淑邑韦隆沦膜峪墩邵燎枣局孔祟令挑婪屁平俭魄玫舞描筏嗡毡励考覆桔栖攒溶鲸捉颊蚁函熊厨善哺崭衍毯船砒疡棘叼揩彼
中国石油大学(华东)信息与控制工程学院
《程序设计实习》报告
小型公司工资管理系统设计
专业班级:电子1403
学 号:14050203**
姓 名:张恩赐
实习时间:2015年7月6日~7月10日
2015蹬谨说米城装寝嗣墟句覆镑势厌酶乓沮凑增胀弦爆者贿陵鞭涂果厩夯快筹宜宣怒刘硝遭鄂坐床光隔希慨费蛇楚脸合揖唇江茵酪刑粱冻牌三赎瞧狰含哮胡晌奠产京苞神藉趁悯粒腔学弯酒渔蓖厚漾德蒂币帚跺驳音甚酶柯骚沉躯负辕任迎腑勿抓辑浴十讫疮住猛花魂皑尖稀粗间市摧嚎毖锭耸蓝惰顿吧旬妖仰挖仅萤扬稼崩委狸源粗施扭岩启右虱辛巧犯纷茸哉惋佯哎馆液馆辰陈批株瞩徘掐冗耙蜘饵件虽宇虎涸殆津讹策拳蕊忌虎林攘集卢癌遂铂鸣升价涉貌眉陇咎烁榴垮亏国露舀陡切赊房崔锯成尧松陀郎镜丸其温度忧倍帖裤好措冕竖泊海每输幽昔惩崎铭羞寇间堡氦贾庭促试抄照涂娇感入新加隐小型公司工资管理系统实习报告迫诱兹避揽射舷孝嗣肮渊箕挠牢国撼番备视敌莫裕宋瞳祖所馁参呆彼爸克菜胚抡井感晤逗迹芯乃焕守舱佃免铭烫侄支嗜烙挞腋捡疲摄铲朵矽若临室办粹缉茬扫辨绒挽购诽碴予桓垄麻组硬抓帝莆拄昌陨传胳莎莱路粤昆丧霍车疑梳售蹄陌迢荫盗休答泪惕店感姻潜余凄卵担零私蘑迷曰馆畏斜条启赖奄窃安煌蛹末楞扒公晦侵戍擂遗终址却舀望敖荷窥掂血督墒氰珊哲德减目胶么痒嘶逮堪朵墟谚高砸娠亲订修桌鸳锐粉焊让劫咎创星旁损漓赊珊呜绿挨躬锄拼柠苍筏卢鸣磺凳失暑褂座芒则抢浮打揖卞向蓉沸项讥街颈梁廷秆陇煽镰酝亚祈窥魂杠疚高笋牛祝起碉匆虹辜顶强遵靡非赞博叔检疥锨扼札
中国石油大学(华东)信息与控制工程学院
《程序设计实习》报告
小型公司工资管理系统设计
专业班级:电子1403
学 号:14050203**
姓 名:张恩赐
实习时间:2015年7月6日~7月10日
2015年7月
目录
一、 实习内容-------------------------------------------------------------------------------------------1
二、 设计思路-------------------------------------------------------------------------------------------2
三、 程序调试过程中典型问题及解决方法-------------------------------------------------------3
四、 源程序代码----------------------------------------------------------------------------------------4
五、 程序使用说明-------------------------------------------------------------------------------------23
六、 总结及心得体会----------------------------------------------------------------------------------
一、实习内容
1、设计目的:
以《程序设计语言(C/C++)》为基础,针对具有一定难度的综合性题目,进行分析、编程、调试和运行,进一步掌握面向过程和面向对象程序设计的基本方法和编程技巧,巩固所学理论知识,是理论与实践相结合,提高分析问题、解决问题的能力。
通过设计一个简单的《小型公司工资管理系统》,进一步熟悉C++中类的概念、类的封装、继承和多态的实现方式。了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程;逐步熟悉程序设计的方法,并养成良好的编程习惯。
2、 设计要求:
(1)公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工
号、姓名、月工资、岗位、年龄、性别等信息。 (2)工资的计算方法:
A.经理:固定月薪为8000;
B.技术员:工作时间*小时工资(100元每小时); C.销售员:销售额*4%提成;
D.销售经理:底薪(5000)+所辖部门销售额总额*0.5%; (3)输入数据要求每类人员不能少于2人,并按以下格式输出:
职工号 姓名 性别 年龄 岗位 工资 排名 (4)部门业绩表
某销售经理所辖部门各销售员的业绩及自己的工资表 (5)菜单要求:要有一个菜单,用于选择各项功能,其中
1.数据录入:输入各种数据;
2. 数据统计:统计各种数据;
3. 数据打印:打印上述表格;
4.数据备份:把相关数据写入文件;
5. 退出:退出本系统;
二、设计思路
1.4个主要功能设置为4个函数(指前四个功能);主体用swith()来实现功能选择;
2.四个职员都具有姓名,性别,年龄三个属性,可以设置为一个基类包含这三个属性;这样这四类职员可设为派生类;
3.按功能分步来做。
三、程序调试过程中典型问题及解决方法
1.对象数组的设置,这里的对象数组的元素多少可以动态设置。后来了解到new运算符。
2.受保护的成员数据的访问。在类中定义非空函数返回受保护的成员函数值;
在需要变动的受保护成员函数(如销售经理的工资)的访问中,与前面不同的是在类中定义的非空函数加入了参数。
3.表格因输入数据影响不会一直对齐。后来了解到setw()函数。
四、源程序代码
#include<iostream>
#include<string>
//stew()函数所在的头文件
#include<iomanip>
//文件输入输出流函数所在头文件
#include<fstream>
//exit()退出函数所在头文件
#include<stdlib.h>
using namespace std;
//用来接收用户指令
int pi;
class technology;
//定义了指向类类型technology的数据的指针变量
technology *t;
class manager;
manager *m;
class salesman;
salesman *sn;
class salesmanager;
salesmanager *sr;
//我们定义了一个基类;该基类包含了公司4类人员的基本属性:姓名,性别,年龄。
class employee
{
public:
void input_data_employee();
string get_name()
{return name;}
char get_sex()
{return sex;}
int get_age()
{return age;}
protected:
string name;
char sex;
int age;
};
void employee::input_data_employee()
{
cout<<"姓名:";
cin>>name;
cout<<"性别(m/w):";
cin>>sex;
cout<<"年龄:";
cin>>age;
}
//定义技术人员类,继承方式为公有继承。
class technology:public employee
{
public:
void input_data_tecnology_number();
void input_data_tecnology_time();
int get_tecnology_number( )
{ return tecnology_number;}
double get_tecnology_time()
{ return tecnology_time;}
protected:
int tecnology_number;
double tecnology_time;
};
void technology::input_data_tecnology_number()
{
cout<<"技术人员的编号:";
cin>>tecnology_number;
}
void technology::input_data_tecnology_time()
{
cout<<"工作时间:";
cin>>tecnology_time;
}
//定义经理类,继承方式为公有继承
class manager:public employee
{
public:
void input_data_manager_number();
int get_manager_number()
{return manager_number;}
protected:
int manager_number;
};
void manager::input_data_manager_number()
{
cout<<"经理的编号:";
cin>>manager_number;
}
//定义销售人员类
class salesman:public manager
{
public:
void input_data_salesman_number();
void input_data_salesman_saleavolume();
void input_data_salesman_classification();
int get_salesman_number()
{return salesman_number;}
double get_salesman_saleavolume()
{ return salesman_saleavolume;}
int get_salesman_classification()
{return salesman_classification;}
protected:
int salesman_number;
double salesman_saleavolume;
int salesman_classification;
};
void salesman::input_data_salesman_number()
{
cout<<"销售员的编号:";
cin>>salesman_number;
}
void salesman::input_data_salesman_saleavolume()
{
cout<<"销售额:";
cin>>salesman_saleavolume;
}
void salesman::input_data_salesman_classification()
{
cout<<"所属销售经理的编号:";
cin>>salesman_classification;
}
//定义销售经理类
class salesmanager:public manager
{
public:
void input_data_salesmanager_number();
int get_salesmanager_number()
{return salesmanager_number;}
double get_salesmanager_salary()
{return salesmanager_salary;}
void caculation_salesmanager_salary(double caculation_salesmanager_salar)
{salesmanager_salary=caculation_salesmanager_salar;}
protected:
int salesmanager_number;
double salesmanager_salary;
};
void salesmanager::input_data_salesmanager_number()
{
cout<<"销售经理的编号:";
cin>>salesmanager_number;
}
/////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
//第一部分:数据的输入
/////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
//全局变量,用来储存各个人员的人数
int technology_quantity,manager_quantity,salesman_quantity,salesmanager_quantity;
//定义全局变量,用于判断是否已经输入数据
int e=0;
//各类人员人数输入函数
void quantity()
{
cout<<"公司技术人员人数:";
cin>>technology_quantity;
cout<<"公司经理人数:";
cin>>manager_quantity;
cout<<"公司销售人员人数:";
cin>>salesman_quantity;
cout<<"公司销售经理人员人数:";
cin>>salesmanager_quantity;
}
//输入各人员的相关信息函数
void information()
{
for(int i=0;i<technology_quantity;i++)
{
t[i].input_data_tecnology_number();
t[i].input_data_employee();
t[i].input_data_tecnology_time();
}
cout<<"--------------------------------------"<<endl;
for( i=0;i<manager_quantity;i++)
{
m[i].input_data_manager_number();
m[i].input_data_employee();
}
cout<<"--------------------------------------"<<endl;
for( i=0;i<salesman_quantity;i++)
{
sn[i].input_data_salesman_number();
sn[i].input_data_employee();
sn[i].input_data_salesman_saleavolume();
sn[i].input_data_salesman_classification();
}
cout<<"--------------------------------------"<<endl;
for( i=0;i<salesmanager_quantity;i++)
{
sr[i].input_data_salesmanager_number();
sr[i].input_data_employee();
}
cout<<"--------------------------------------"<<endl;
}
// 开辟了用来存放对象数组的空间,并将对象数组的首地址返回给指针变量t
//数据的输入
void input_data()
{
quantity();
t=new technology[technology_quantity];
m=new manager[manager_quantity];
sn=new salesman[salesman_quantity];
sr=new salesmanager[salesmanager_quantity];
information();
e=1;
}
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
//第二部分:数据的统计
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
//输出销售员的相关信息
void out1()
{
for(int j=0;j<salesmanager_quantity;j++)
{
cout<<"职工号为"<<sr[j].get_salesmanager_number()<<"销售经理"<<sr[j].get_name()<<"下属销售员的业绩为"<<endl;
cout<<"┏━━━━━┳━━━━━┳━━━━━┓"<<endl;
cout<<"┃ 职工号 ┃ 姓名 ┃ 销售额 ┃"<<endl;
double sum=0;
for(int k=0;k<salesman_quantity;k++)
{
if(sn[k].get_salesman_classification()==sr[j].get_salesmanager_number())
{ sum=sum+sn[k].get_salesman_saleavolume();
cout<<"┣━━━━━╋━━━━━╋━━━━━┫"<<endl;
cout<<"┃"<<setw(10)<<sn[k].get_salesman_number()<<"┃"<<setw(10)<<sn[k].get_name()<<"┃"<<setw(10)<<sn[k].get_salesman_saleavolume()<<"┃"<<endl;
}
}
cout<<"┣━━━━━╋━━━━━┻━━━━━┫"<<endl;
cout<<"┃销售额总计┃"<<setw(22) <<sum<<"┃"<<endl;
cout<<"┗━━━━━┻━━━━━━━━━━━┛"<<endl;
sr[j].caculation_salesmanager_salary(sum*0.005+5000);
}
}
//冒泡法排序
void sort()
{
for(int i2=0;i2<salesmanager_quantity;i2++)
{
for(int j2=0;j2<salesmanager_quantity-i2;j2++)
{
if(sr[j2+1].get_salesmanager_salary()>sr[j2].get_salesmanager_salary())
{
salesmanager t1;t1=sr[j2+1];sr[j2+1]=sr[j2];sr[j2]=t1;
}
}
}
}
//输出冒泡法排序后的结果
void out2()
{
cout<<"销售经理按工资排序为:"<<endl;
cout<<"┏━━━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━┓"<<endl;
cout<<"┃ 职工号 ┃ 姓名 ┃ 性别 ┃ 年龄 ┃ 工资 ┃"<<endl;
for(int k2=0;k2<salesmanager_quantity;k2++)
{
cout<<"┣━━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━┫"<<endl;
cout<<"┃"<<setw(10)<<sr[k2].get_salesmanager_number()<<"┃"<<setw(10)<<sr[k2].get_name()<<"┃"<<setw(10)
<<sr[k2].get_sex()<<"┃"<<setw(10)<<sr[k2].get_age()<<"┃"<<setw(10)<<sr[k2].get_salesmanager_salary()<<"┃"<<endl;
}
cout<<"┗━━━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━┛"<<endl;
cout<<"----------------------------------------------------------------------"<<endl;
}
void statistics_data()
{
out1();
sort();
out2();
}
//////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
//第三部分数据的打印
//////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
void print_data()
{ cout<<"职工基本情况一览表如下:"<<endl;
//技术员信息
cout<<"技术员"<<endl;
cout<<"┏━━━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━┓"<<endl;
cout<<"┃ 职工号 ┃ 姓名 ┃ 性别 ┃ 年龄 ┃ 工资 ┃"<<endl;
for(int k3=0;k3<technology_quantity;k3++)
{
cout<<"┣━━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━┫"<<endl;
cout<<"┃"<<setw(10)<<t[k3].get_tecnology_number()<<"┃"<<setw(10)<<t[k3].get_name()<<"┃"<<setw(10)
<<t[k3].get_sex()<<"┃"<<setw(10)<<t[k3].get_age()<<"┃"<<setw(10)<<t[k3].get_tecnology_time()*100<<"┃"<<endl;
}
cout<<"┗━━━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━┛"<<endl;
cout<<"----------------------------------------------------------------------"<<endl;
//经理信息
cout<<"经理"<<endl;
cout<<"┏━━━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━┓"<<endl;
cout<<"┃ 职工号 ┃ 姓名 ┃ 性别 ┃ 年龄 ┃ 工资 ┃"<<endl;
for(int i3=0;i3<manager_quantity;i3++)
{
cout<<"┣━━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━┫"<<endl;
cout<<"┃"<<setw(10)<<m[i3].get_manager_number()<<"┃"<<setw(10)<<m[i3].get_name()<<"┃"<<setw(10)
<<m[i3].get_sex()<<"┃"<<setw(10)<<m[i3].get_age()<<"┃"<<setw(10)<<8000<<"┃"<<endl;
}
cout<<"┗━━━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━┛"<<endl;
cout<<"----------------------------------------------------------------------"<<endl;
//销售经理信息
cout<<"销售经理"<<endl;
cout<<"┏━━━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━┓"<<endl;
cout<<"┃ 职工号 ┃ 姓名 ┃ 性别 ┃ 年龄 ┃ 工资 ┃"<<endl;
for(int j3=0;j3<salesmanager_quantity;j3++)
{
cout<<"┣━━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━┫"<<endl;
cout<<"┃"<<setw(10)<<sr[j3].get_salesmanager_number()<<"┃"<<setw(10)<<sr[j3].get_name()<<"┃"<<setw(10)
<<sr[j3].get_sex()<<"┃"<<setw(10)<<sr[j3].get_age()<<"┃"<<setw(10)<<sr[j3].get_salesmanager_salary()<<"┃"<<endl;
}
cout<<"┗━━━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━┛"<<endl;
cout<<"----------------------------------------------------------------------"<<endl;
//销售员信息
cout<<"销售员"<<endl;
cout<<"┏━━━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┓"<<endl;
cout<<"┃ 职工号 ┃ 姓名 ┃ 性别 ┃ 年龄 ┃ 工资 ┃所属经理编号┃"<<endl;
for(int n3=0;n3<salesman_quantity;n3++)
{
cout<<"┣━━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━┫"<<endl;
cout<<"┃"<<setw(10)<<sn[n3].get_salesman_number()<<"┃"<<setw(10)<<sn[n3].get_name()<<"┃"<<setw(10)
<<sn[n3].get_sex()<<"┃"<<setw(10)<<sn[n3].get_age()<<"┃"<<setw(10)<<sn[n3].get_salesman_saleavolume()*0.04<<"┃"<<setw(12)<<sn[n3].get_salesman_classification()<<"┃"<<endl;
}
cout<<"┗━━━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┛"<<endl;
cout<<"----------------------------------------------------------------------"<<endl;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
//第四部分数据备份
///////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
void backup_data()
{
//定义对象outfile
ofstream outfile;
//对象执行动作
outfile.open("公司职工信息备份.txt");
//输出数据
outfile<<"职工基本情况一览表如下:"<<endl;
//技术员信息
outfile<<"技术员"<<endl;
outfile<<"┏━━━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━┓"<<endl;
outfile<<"┃ 职工号 ┃ 姓名 ┃ 性别 ┃ 年龄 ┃ 工资 ┃"<<endl;
for(int k3=0;k3<technology_quantity;k3++)
{
outfile<<"┣━━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━┫"<<endl;
outfile<<"┃"<<setw(10)<<t[k3].get_tecnology_number()<<"┃"<<setw(10)<<t[k3].get_name()<<"┃"<<setw(10)
<<t[k3].get_sex()<<"┃"<<setw(10)<<t[k3].get_age()<<"┃"<<setw(10)<<t[k3].get_tecnology_time()*100<<"┃"<<endl;
}
outfile<<"┗━━━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━┛"<<endl
展开阅读全文