C++课程设计工资发放系统.docx
- 文档编号:30756885
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:23
- 大小:22.69KB
C++课程设计工资发放系统.docx
《C++课程设计工资发放系统.docx》由会员分享,可在线阅读,更多相关《C++课程设计工资发放系统.docx(23页珍藏版)》请在冰豆网上搜索。
C++课程设计工资发放系统
目
的
与
要
求1、目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;要分析和定义各个类,每个类中要有各自的属性和方法;要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。
(3)在系统的设计中,要有清晰的界面设计,同时采用文件进行读写操作。
3、创新要求:
在基本要求达到后,可进行创新设计。
问
题
描
述
及
功
能
要
求某公司按月给其雇员发放工资,该公司有4种雇员:
1固定薪金的雇员2小时工3销售员4带薪销售员
1固定薪金的雇员:
不管工作多长时间,总拿固定周薪;(但如果请假,要扣除相应的薪金,请假次数×每次扣除金额30)
2小时工:
以小时计算,加上加班费;(每月基本工作时间为160小时,其余为加班时间)
3销售员:
按销售收入提成计算;(每月基本销售额度为30000元,低于此额度,在月薪里扣除少于30000部分的千分之二)
4带薪销售员:
底薪加上销售收入提成(要求同上,若有请假,也要扣除相应的薪金)
如果Employee生日所在的月份在本月,那么公司会无条件奖励200元
具体要求附后
问
题
的
解
决
方
案根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系包括属性和行为;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述(包括属性和方法);
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统课程设计报告,并提交课程设计报告及软件到****************
设
计
报
告
要
求1.封面:
(格式附后)
2.课程设计任务书
3.课程设计报告:
⑴系统总体方案
⑵设计思路和主要步骤
⑶各功能模块和流程图
⑷设计代码
⑸心得体会和参考资料
0
∙回复
∙1楼
∙2011-09-0114:
03
∙举报|个人企业举报垃圾信息举报
∙大侠0807
亮出18CM
3
要求实现:
1.初始化系统
创建存储该公司职工信息的存储系统(Employee.dat),并进行职工信息的输入,注意:
公司的职工编号由系统按顺序自动生成,并且员工号一旦分配好就不可以再修改!
;
第一次运行系统,根据系统提示从键盘输入员工的相应信息进行初始化操作,通过退出保存至Employee.dat文件中,若原来存在Employee.dat,则原数据被全部删除。
注意测试该文件是否存在!
ifstreamin(Employee.dat)if(!
in)判断
以后每次运行程序,初始化时都从文件Employee.dat中读取员工数据即可
2.职工信息输出
要求可以输出:
某类职工当月的薪水发放信息
分类输出全体职工当月的薪水发放信息n
某一名职工当月的薪水发放信息n
格式如下:
********************************固定薪金职员*********************************
编号姓名出生年月工种奖励薪金固定月薪请假天数应扣实发工资是否领取
**********************************计时职员***********************************
编号姓名出生年月工种奖励薪金工作时长时薪加班时长实发工资是否领取
**********************************普通销售员***********************************
编号姓名出生年月工种奖励薪金销售额提成比例应扣实发工资是否领取
*********************************带薪销售员************************************
编号姓名出生年月工种奖励薪金固定月薪销售额提成比例请假天数应扣实发工资是否领取
3.添加职工
通过键盘输入相应的职工信息,添加职工,并通过退出保存至Employee.dat文件中。
4.删除职工
通过输入职工的工号,首先输出要删除的职工相应的信息,经确认后删除,考虑职工不存在的情况。
并通过退出保存至Employee.dat文件中。
5.修改信息
要求可以修改:
除编号外的所有职工信息,包括工种以及由修改工种带来的各项操作n
修改某一类工种的信息,如销售人员的提成比例,统一提高0.05;
输出修改前的职工信息,经确认后修改后,输出修改后的职工信息,考虑职工不存在的情况,并通过退出保存至Employee.dat文件中。
6.工资发放
通过输入职工号方式,输出查询到的职工相应的信息,经确认发放工资,将员工是否领取工资信息设置为是(即真),考虑所要查询的职工编号不存在和已经发放过工资的情况。
7.保存退出
通过确认,保存修改的信息至文件Employee.dat中,退出系统,结束运行。
#include
#include
usingnamespacestd;
intN=0;
intMONTH=1;
intLING=0;
intGX_gd_salary=2000;
intXSG_sx=10;
doubleXSY_tch=0.05;
intDXSY_gd_salary=800;
classpeople
{
private:
intnum;
char*name;
intyear,month;
intgz;//工种
intjiangli;//奖励
public:
voidin_peole(intn,char*na,inty,intm,intg)//修改个人信息
{
num=n;
name=newchar[strlen(na)+1];
strcpy(name,na);
year=y;
month=m;
gz=g;
if(m==MONTH)jiangli=200;
elsejiangli=0;
}
//~people(){delete*name;}
intget_num(){returnnum;}
charget_name(){return*name;}
intget_year(){returnyear;}
intget_month(){returnmonth;}
intget_gz(){returngz;}
voidprint(){cout< intget_jiangli(){returnjiangli;} }; ////////////////////////////////////// classGX: virtualpublicpeople//固定薪金的雇员1 { private: intgd_salary;//固定工资 intqj;//请假次数 intyk_salary;//应扣工资 intsalary;//实发工资 //intlq;//是否领取 public: voidchushihua()//初始化 { gd_salary=GX_gd_salary; qj=LING; yk_salary=LING; salary=gd_salary+get_jiangli()-yk_salary; //cout<<"初始化固定薪金的雇员1"< } voidqingjia()//请假函数 { qj++; yk_salary=yk_salary+30; salary=salary-30; } intget_gd_salary(){returngd_salary;} intget_qj(){returnqj;} intget_yk_salary(){returnyk_salary;} intget_salary(){returnsalary;} //intget_lq(){returnlq;} voidprint(){cout< } }; //////////////////////////////////////////// classXSG: virtualpublicpeople//小时工2 { private: intgz_time;//工作时长 intsx;//时薪 intjb_time;//加班时长 intsalary;//实发工资 //intlq;//是否领取 public: voidchushihua()//初始化 { gz_time=LING; sx=XSG_sx;//时薪 jb_time=LING; salary=LING+get_jiangli(); //cout<<"初始化小时工2"< } voidzh_time(inttime)//总时间 { if(time>160) { gz_time=160; jb_time=time-160; } elsegz_time=time; salary=time*sx; } intget_gz_time(){returngz_time;} intget_sx(){returnsx;} intget_salary(){returnsalary;} //intget_lq(){returnlq;} voidprint(){cout< } }; /////////////////////////////////////// classXSY: virtualpublicpeople//销售员3 { private: intxse;//销售额 doubletch;//提成比例 intyk_salary;//应扣工资 intsalary;//实发工资 //intlq;//是否领取 public: voidchushihua()//初始化 { xse=0; tch=XSY_tch; yk_salary=0; salary=(int)((double)xse*tch)-yk_salary+get_jiangli(); //cout<<"初始化销售员3"< } voidxiaoshou(inte)//销售函数 { xse=e; if(e<30000)yk_salary=e*2/1000; salary=(int)((double)xse*tch)-yk_salary; cout< } intget_yk_salary(){returnyk_salary;} intget_xse(){returnxse;} doubleget_tch(){returntch;} intget_salary(){returnsalary;} //intget_lq(){returnlq;} voidprint(){cout< } }; ///////////////////////////salary;////////////// classDXSY: virtualpublicpeople//带薪销售员4 { private: intgd_salary;//固定工资 intxse;//销售额 doubletch;//提成比例 intqj;//请假次数 intyk_salary;//应扣工资 intsalary;//实发工资 //intlq;//是否领取 public: voidchushihua()//初始化 { gd_salary=DXSY_gd_salary; xse=0; tch=XSY_tch; qj=0; yk_salary=0; salary=gd_salary+(int)((double)xse*tch)-yk_salary+get_jiangli(); //cout<<"初始化带薪销售员4"< } voidqingjia()//请假函数 { qj++; yk_salary=yk_salary+30; salary=salary-30; } voidxiaoshou(inte)//销售函数 { xse=e; if(e<30000)yk_salary=e*2/1000; salary=salary+(int)((double)xse*tch)-yk_salary; cout< } intget_gd_salary(){returngd_salary;} intget_xse(){returnxse;} doubleget_tch(){returntch;} intget_qj(){returnqj;} intget_yk_salary(){returnyk_salary;} intget_salary(){returnsalary;} //intget_lq(){returnlq;} voidprint(){cout< } }; ///////////////////////////////// classAAA: publicGX,publicXSG,publicXSY,publicDXSY { private: //intjiangli;//奖励 intlq;//是否领取 public: //intget_jiangli(){returnjiangli;} voidqingjia()//请假函数 { if(get_gz()==1)GX: : qingjia(); if(get_gz()==4)DXSY: : qingjia(); } voidxiaoshou(inte)//销售函数 { if(get_gz()==3)XSY: : xiaoshou(e); if(get_gz()==4)DXSY: : xiaoshou(e); } voidprint()//输出函数 { people: : print(); if(get_gz()==1)GX: : print(); if(get_gz()==2)XSG: : print(); if(get_gz()==3)XSY: : print(); if(get_gz()==4)DXSY: : print(); cout<<""< } voidlingqian(){lq=1;}//工资发放 voidchushihua() { GX: : chushihua(); XSG: : chushihua(); XSY: : chushihua(); DXSY: : chushihua(); lq=0; } }; voidmenu()//主菜单 {cout<<"欢迎使用工资发放系统"< cout<<"一、员工信息管理"< cout<<"1.初始化系统2.职工信息输出"< cout<<"3.添加职工4.删除职工"< cout<<"5.修改信息6.工资发放"< cout<<"7.请假8.保存退出"< cout<<"请输入相应编号: "< } voidmain() { AAA*DX; DX=newAAA[10000]; for(;1;) { menu(); inti; cin>>i; switch(i) { case1: { for(;1;) { N++; charna[20]; inty,m,g,time,e; charc; cout<<"请输入员工信息"< cout<<"编号: "< cout<<"姓名: "< cin>>na; cout<<"出生年月,年: "< cin>>y; cout<<"出生年月,月: "< cin>>m; cout<<"工种: "< cout<<"1.固定薪金的雇员2.小时工3.销售员4.带薪销售员"< cout<<"请选择编号"< cin>>g; DX[N-1].in_peole(N,na,y,m,g); DX[N-1].chushihua(); if(g==1){} if(g==2) { cout<<"请输入这个月总的工作间: "< cin>>time; DX[N-1].zh_time(time); } if(g==3) { cout<<"请输入这个月总的销售额: "< cin>>e; DX[N-1].xiaoshou(e); } if(g==4) { cout<<"请输入这个月总的销售额: "< cin>>e; DX[N-1].xiaoshou(e); } cout<<"是否继续输入Y确认N取消"< cin>>c; if(c=='Y') {} else {break;} }};break; case2: { cout<<"********************************固定薪金职员*********************************"< cout<<"编号姓名出生年月工种奖励薪金固定月薪请假天数应扣实发工资是否领取"< for(inta=0;a<=N;a++) {if(DX[a].get_gz()==1)DX[a].print();} cout<<"**********************************计时职员***********************************"< cout<<"编号姓名出生年月工种奖励薪金工作时长时薪加班时长实发工资是否领取"< for(intb=0;b<=N;b++) {if(DX[b].get_gz()==2)DX[b].print();} cout<<"**********************************普通销售员***********************************"< cout<<"编号姓名出生年月工种奖励薪金销售额提成比例应扣实发工资是否领取"< for(intc=0;c<=N;c++) {if(DX[c].get_gz()==3)DX[c].print();} cout<<"*********************************带薪销售员************************************"< cout<<"编号姓名出生年月工种奖励薪金固定月薪销售额提成比例请假天数应扣实发工资是否领取"< for(intd=0;d<=N;d++) {if(DX[d].get_gz()==4)DX[d].print(); } };break; case3: { for(;1;) { N++; charna[20]; inty,m,g,time,e; charc; cout<<"请输入员工信息"< cout<<"编号: "< cout<<"姓名: "< cin>>na; cout<<"出生年月,年: "< cin>>y; cout<<"出生年月,月: "< cin>>m; cout<<"工种: "< cout<<"1.固定薪金的雇员2.小时工3.销售员4.带薪销售员"< cout<<"请选择编号"< cin>>g; DX[N-1].in_peole(N,na,y,m,g); DX[N-1].chushihua(); if(g==1){} if(g==2) { cout<<"请输入这个月总的工作间: "< cin>>time; DX[N-1].zh_time(time); } if(g==3) { cout<<"请输入这个月总的销售额: "< cin>>e; DX[N-1].xiaoshou(e); } if(g==4) { cout<<"请输入这个月总的销售额: "< cin>>e; DX[N-1].xiaoshou(e); } cout<<"是否继续输入Y确认N取消"< cin>>c; if(c=='Y') {} else {break;} }};break;; case4: {inti,MM; charc; cout<<"请输入职工编号"< cin>>i; for(inta=0;a<=N;a++) { if(DX[a].get_num()==i) {MM=a;break;} } DX[MM].print();//输出这个职工的信息 cout<<"Y确认N取消"< cin>>c; if(c=='Y') { for(;MM<=N;MM++) {DX[MM]=DX[MM+1];} cout<<"删除成功"< } else { } } ;break; case5: ;break; case6:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 工资 发放 系统