小企业职工工资管理系统.docx

上传人:b****3 文档编号:27476864 上传时间:2023-07-01 格式:DOCX 页数:24 大小:183.81KB
下载 相关 举报
小企业职工工资管理系统.docx_第1页
第1页 / 共24页
小企业职工工资管理系统.docx_第2页
第2页 / 共24页
小企业职工工资管理系统.docx_第3页
第3页 / 共24页
小企业职工工资管理系统.docx_第4页
第4页 / 共24页
小企业职工工资管理系统.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

小企业职工工资管理系统.docx

《小企业职工工资管理系统.docx》由会员分享,可在线阅读,更多相关《小企业职工工资管理系统.docx(24页珍藏版)》请在冰豆网上搜索。

小企业职工工资管理系统.docx

小企业职工工资管理系统

 

《C++程序设计》实训报告

 

课题名称:

小企业职工工资管理系统

专业:

软件开发

班级:

软件101

学号:

10

姓名:

指导教师:

二0一一年一月七日

目录

一.课程设计目的………………………………………………………………1

二.课程设计题目描述和要求…………………………………………………1

三.课程设计报告内容…………………………………………………………1

四.结论…………………………………………………………………………18

五.参考书目……………………………………………………………………18

六.心得体会……………………………………………………………………19

成绩的评定标准

考核、评价项目

考评人

考核内容

得分

实训评价

实训的

平时考核

对实训期间的出勤情况、实训态度、安全意识、职业道德素质评定成绩

教师

学生

职业素质、实训态度、效率观念、协作精神

各个实训

模块考核

根据学生完成各个实训模块完成情况评定成绩

教师

知识掌握情况、基本操作技能、知识应用能力、获取知识能力

网站浏览效果

根据网站浏览效果评定成绩

教师

网站整体效果、结构布局、色彩搭配

实训文档

根据实训设计文档和实训报告评定成绩

教师

表达能力、文档写作能力、文档的规范性

获奖加分

根据学生参加各类技能比武或设计大赛的获奖情况给予相应加分

有关

专家

创新能力、自主学习能力、综合素质

合计

教师评语:

成绩:

教师:

年月日

 

一、课程设计目的

将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。

通过课程设计,学生在下述各方面的能力应该得到锻炼:

(1)进一步巩固、加深学生所学专业课程《C++语言教程》的基本理论知识,理论联系实际,掌握小企业职工工资管理的初步知识,进一步培养学生分析问题,解决问题的能力。

(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。

(3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。

(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。

(5)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。

(6)能创建类,并会使用类对象来完成相应的任务;设计中的每一个功能均由类对象来完成;理解工程的概念和头文件的使用;深入理解封装、继承、和多态这面向对象的编程的特点。

(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。

二、课程设计题目描述和要求

小企业职工工资管理系统是企业管理部门和员工所面临的经常性且十分重要的工作,其主要包括:

员工的基本信息,工资结构的设计及工资汇总等。

为了完成上述任务,提高各项任务的处理速度、效率和质量,用计算机完成上述各项任务更为方便快捷。

三、课程设计报告内容

3.1概要设计:

程序分为三个独立的部分:

manage.cpp(主程序),salary.cpp(实现所有的类)salary.h(定义对所有的类)。

首先,创建一个empoyee虚机类,然后派生出四个类:

Technician,manager,salesman,secretary然后由Technician和manager派生出techmanager,salesman和manager派生出salesmanager;定义几个函数,分别是:

voidinfo()接收用户输入的职工信息boolsearch()根据姓名查找职工信息virtualvoidcountsalary()=0/计算工资函数,纯虚函数用于被重载intrecordinfo()记录职工工资信息intrecordsalary();最后根据不同的职工类型来计算职工工资。

3.2详细的设计:

首先编写employee类,包含:

classemployee{

public:

intnumber;//编号

char*name;//姓名

intstatus;//职务代码,1:

技术经理;2:

销售经理;3:

技术人员;

//4:

销售人员;5:

文秘。

intmonth;//所计算工资的月份

floatsalary;//工资额

voidinfo();//接收用户输入的职工信息

boolsearch();//根据姓名查找职工信息

virtualvoidcountsalary()=0;//计算工资函数,纯虚函数用于被重载

intrecordinfo();//记录职工工资信息

intrecordsalary();

};

然后以头文件的形式建立salary类

完成salary.cpp的编写,成员函数在类外的实现;

最后编写主函数,主函数通过while循环来来进入主界面,在通过if语句判断;

while(true)

{

cout<

1.输入员工信息;2.计算员工工资;3.退出";

cin>>ch1;

while(ch1!

='1'&&ch1!

='2'&&ch1!

='3')

{

cin>>ch1;

}

if(ch1=='1')//输入员工信息

{

em.info();

em.recordinfo();

}

elseif(ch1=='2')

{

cout<

";

cin>>namestr;

em.name=newchar[strlen(namestr)+1];

strcpy(em.name,namestr);

while(!

em.search())

{

cout<

";

cin>>namestr;

em.name=newchar[strlen(namestr)+1];

strcpy(em.name,namestr);

}

来完成选择功能模块和退出

employee*pem[6]={&ma,&tm,&sm,&sa,&se};

定义一个基类指针数组,分别指向各个派行类的对象

通过基类指向派生类对象的指针来调用各派生类的成员函数

i=em.status;

pem[i]->name=em.name;

pem[i]->number=em.number;

pem[i]->status=em.status;

pem[i]->countsalary();

pem[i]->recordsalary();

delete[]em.name;

}

3.3设计的步骤:

(1)建立employee类并派生出它的子类。

(2)以头文件的形式建立salary类。

(3)建立manager类。

(4)创建main函数。

(5)画出N-S流程图。

(6)根据流程图编写程序清单

(7)上机调试程序(使用单步调试,设置断点、观察表达式,分块调试的方法)。

(8)考察运行结果,是否符合题目要求;若有问题,不断调试,直至成功。

(9)及时整理资料,撰写课程设计报告中有关这个题目的内容。

3.4设计的思想:

小企业职工工资管理系统,系统的主要功能是:

计算职工当月工资并存档。

用户运行此系统后,进入系统的主界面:

 

 进入主界面后用户可以根据系统的提示完成相应的操作,主界面包括三个模块:

1.输入员工信息模块;2.计算员工工资模块;3.退出模块。

操作:

按1进入输入员工信息模块完成职工信息的录入操作:

 按2进入计算员工工资模块,完成工资的计算并存档:

 按3退出本系统

3.6系统框图、流程图及类图:

框图:

职工工资管理系统类图如下:

 

 

N-S流程图:

 

3.6课程设计的代码:

//*********************************************

//

//manage.cpp

//主程序

//

//*********************************************

#include

#include

#include"salary.h"

usingnamespacestd;//

voidmain()

{

charch1;

charnamestr[30];

technicianem,te;//

salesmansa;

secretaryse;

managerma;

techmanagertm;

salesmanagersm;

employee*pem[6]={&ma,&tm,&sm,&sa,&se};

inti;

cout<

cout<

cout<

while(true)//死循环,true表示永远为真

{

cout<

1.输入员工信息;2.计算员工工资;3.退出";

cin>>ch1;

while(ch1!

='1'&&ch1!

='2'&&ch1!

='3')

{

cin>>ch1;

}

if(ch1='1')

{

em.info();

em.recordinfo();

}

elseif(ch1=='2')

{

cout<

";

cin>>namestr;

em.name=newchar[strlen(namestr)+1];

strcpy(em.name,namestr);

while(!

em.search())

{

cout<

";

cin>>namestr;

em.name=newchar[strlen(namestr)+1];

strcpy(em.name,namestr);

}

i=em.status;

pem[i]->name=em.name;

pem[i]->number=em.number;

pem[i]->status=em.status;

pem[i]->countsalary();

pem[i]->recordsalary();

delete[]em.name;

}

elsebreak;

}

}

//**********************************************

//*

//salary.cpp*

//实现所有的类*

//*

//**********************************************

#include

#include

#include"salary.h"

usingnamespacestd;

structinforecorder

{

intnumber;

charname[30];

intstatus;

}

ir1;

structsalaryrecordet

{

charname[30];

intmonth;

floatsalary;

}

sr1;

voidemployee:

:

info()

{

charnamestr[30];

cout<

";

cin>>namestr;

name=newchar[strlen(namestr)+1];

strcpy(name,namestr);

cout<<"请输入员工编号(1000-9999):

";

cin>>number;

while(number<1000||number>9999)

{

cout<<"员工编号应为四位,请重新输入:

";

cin>>number;

}

cout<<"请输入员工职务代码(1-5):

";

cin>>status;

while(status<1||status>5)

{

cout<<"员工职务代码输入错误,请重新输入:

";

cin>>status;

}

}

boolemployee:

:

search()

{

inti;

ifstreamifile("info.txt",ios:

:

in|ios:

:

binary);

if(!

ifile)

{

cerr<

"<

returnfalse;

}

while(!

ifile.eof())

{

ifile.read((char*)&ir1,sizeof(ir1));

i=strcmp(ir1.name,name);

if(i==0)

{

number=ir1.number;

status=ir1.status;

ifile.close();

returntrue;

}

}

ifile.close();

returnfalse;

}

intemployee:

:

recordinfo()

{

strcpy(ir1.name,name);

ir1.number=number;

ir1.status=status;

ofstreamofile("info.txt",ios:

:

app|ios:

:

binary);

if(!

ofile)

{

cerr<

"<

return0;

}

ofile.write((char*)&ir1,sizeof(ir1));

ofile.close();

return1;

}

intemployee:

:

recordsalary()

{

charch1;

cout<

";

cin>>ch1;

while(ch1!

='Y'&&ch1!

='y'&&ch1!

='n'&&ch1!

='N')

{

cin>>ch1;

}

if(ch1=='n'||ch1=='N')

return0;

else

{

strcpy(sr1.name,name);

cout<

";

cin>>sr1.month;

while(sr1.month<1||sr1.month>12)

{

cout<

";

cin>>sr1.month;

}

sr1.salary=salary;

ofstreamofile("salary.txt",ios:

:

app|ios:

:

binary);

if(!

ofile)

{

cerr<

"<

return0;

}

ofile.write((char*)&sr1,sizeof(sr1));

ofile.close();

return1;

}

}

technician:

:

technician(floatx)

{

hourlysalary=x;

}

voidtechnician:

:

countsalary()

{

cout<<"请输入技术员"<

";

cin>>workhour;

salary=workhour*hourlysalary;

cout<<"[技术员]"<

"<

}

salesman:

:

salesman(floatx)

{

getrate=x;

}

voidsalesman:

:

countsalary()

{

cout<<"请输入销售员"<

";

cin>>salesum;

salary=salesum*getrate;

cout<<"[销售员]"<

"<

}

manager:

:

manager(floatx)

{

fixedsalary=x;

}

voidmanager:

:

countsalary()

{

};

secretary:

:

secretary(floatx)

{

fixedsalary=x;

}

voidsecretary:

:

countsalary()

{

cout<<"请输入文秘"<

";

cin>>bonus;

salary=fixedsalary+bonus;

cout<<"[文秘]"<

"<

}

techmanager:

:

techmanager(floatx)

{

gradebonus=x;

}

voidtechmanager:

:

countsalary()

{

cout<<"请输入技术经理"<

";

cin>>grade;

while(grade<1||grade>3)

{

cout<

";

cin>>grade;

}

salary=fixedsalary+gradebonus*grade;

cout<<"[技术经理]"<

"<

}

salesmanager:

:

salesmanager(floatx)

{

getrate=x;

}

voidsalesmanager:

:

countsalary()

{

cout<<"请输入销售经理"<

";

cin>>salesum;

salary=fixedsalary+salesum*getrate;

cout<<"[销售经理]"<

"<

}

//*********************************************************

//*

//salary.h*

//定义对所有的类*

//*

//*********************************************************

classemployee

{

public:

intnumber;

char*name;

intstatus;

intmonth;

floatsalary;

voidinfo();

boolsearch();

virtualvoidcountsalary()=0;

intrecordinfo();

intrecordsalary();

};

classtechnician:

virtualpublicemployee

{

protected:

intworkhour;

floathourlysalary;

public:

technician(floatx=35);

voidcountsalary();

};

classsalesman:

virtualpublicemployee

{

protected:

floatsalesum;

doublegetrate;

public:

salesman(floatx=.05);

voidcountsalary();

};

classmanager:

virtualpublicemployee

{

protected:

floatfixedsalary;

public:

manager(floatx=6000);

voidcountsalary();

};

classsecretary:

virtualpublicemployee

{

floatfixedsalary;

floatbonus;

public:

secretary(floatx=4000);

voidcountsalary();

};

classtechmanager:

publictechnician,publicmanager

{

floatgradebonus;

intgrade;

public:

techmanager(floatx=1000);

voidcountsalary();

};

classsalesmanager:

publicsalesman,publicmanager

{

public:

salesmanager(floatx=.02);

voidcountsalary();

};

四、结论

经过两周时间的课程设计,主要是让大家利用所学知识,开发小型应用系统,我们组选择的是编写小企业职工工资管理系统,在编译中,我们跟进一步了解了C++语言,并且让我更加喜欢C++这门语言,即使以后不在学习C++语言啦,我也会认真多学习学习它,做到学有所有,学而不忘。

五、参考书目:

[1]王卫生,刘旭.C++程序设计案例式教材.辽宁信息职业技术学院,2009

[2]郑莉,董渊,张瑞丰.C++语言程序设计(第3版).北京:

清华大学出版社,2003

[3]陈文宇,张松梅编著.C++语言教程.电子科技大学出版社,2004

[4]谭浩强编著.C++程序设计.清华大学出版社,2004

[5]吴乃陵,况迎辉,李海文.C++程序设计.北京:

高等教育出版社,2003

[6]钱能.C++程序设计.北京:

清华大学出版社,1999

[7]罗建军,朱丹君,顾刚等.C++程序设计教程.北京:

高等教育出版社,2004

[8]余苏宁,王明福.C++程序设计.北京:

高等教育出版社,2003

六、

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1