小企业职工工资管理系统

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

课题名称: 小企业职工工资管理系统

专 业: 软件开发 班 级: 软件101 学 号: 姓 名: 指导教师:

二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 ;定义几个函数,分别是:void info()接收用户输入的职工信息bool search()根据姓名查找职工信息virtual void countsalary()=0/计算工资函数,纯虚函数用于被重载int recordinfo()记录职工工资信息int recordsalary();最后根据不同的职工类型来计算职工工资。

3.2详细的设计:

首先编写employee类,包含: class employee{ public:

int number; //编号 char *name; //姓名

int status; //职务代码,1:技术经理;2:销售经理;3:技术人员; //4:销售人员;5:文秘。 int month; //所计算工资的月份 float salary; //工资额

void info(); //接收用户输入的职工信息 bool search(); //根据姓名查找职工信息

virtual void countsalary()=0; //计算工资函数,纯虚函数用于被重载 int recordinfo(); //记录职工工资信息 int recordsalary(); };

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

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

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

cout>ch1;

while(ch1 !='1' &&ch1 !='2' && ch1 !='3') {

cin>>ch1; }

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

em.info(); em.recordinfo(); }

else if(ch1=='2') {

cout>namestr;

em.name=new char[strlen(namestr)+1]; strcpy(em.name,namestr); while(! em.search()) {

cout>namestr;

em.name=new char[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"

using namespace std;//

void main()

{

char ch1; char namestr[30]; technician em,te;// salesman sa; secretary se; manager ma; techmanager tm; salesmanager sm; employee *pem[6]={&ma,&tm,&sm,&sa,&se}; int i; cout>ch1; while(ch1!='1'&&ch1!='2'&&ch1!='3') { } if(ch1='1') {

8 cin>>ch1;

} em.info(); em.recordinfo(); else if(ch1=='2') { cout>namestr; em.name=new char[strlen(namestr)+1]; strcpy(em.name,namestr); while(!em.search()) { } i=em.status; pem[i]->name=em.name; pem[i]->number=em.number; cout>namestr; em.name=new char[strlen(namestr)+1]; strcpy(em.name,namestr);

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

pem[i]->countsalary();

pem[i]->recordsalary();

}

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

// *

// salary.cpp *

9 } } delete[] em.name; else break;

// 实现所有的类 *

// *

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

#include

#include

#include"salary.h"

using namespace std;

struct inforecorder

{

}

ir1;

struct salaryrecordet

{

}

sr1;

void employee::info()

{

char namestr[30]; cout>namestr; name=new char[strlen(namestr)+1]; strcpy(name,namestr); cout>number;

10 int number; char name[30]; int status; char name[30]; int month; float salary;

} { } cout>status; while(status5) { } cout>status; cout>number;

bool employee::search()

{

int i; ifstream ifile("info.txt",ios::in|ios::binary); if(!ifile) { } while(!ifile.eof()) { ifile.read((char*)&ir1,sizeof(ir1)); i=strcmp(ir1.name,name); if(i==0) { number=ir1.number; status=ir1.status;

11 cerr

} } } return true; ifile.close(); return false;

int employee::recordinfo()

{

}

int employee::recordsalary()

{

char ch1; cout>ch1; while(ch1!='Y'&&ch1!='y'&&ch1!='n'&&ch1!='N') { cin>>ch1;

12 strcpy(ir1.name,name); ir1.number=number; ir1.status=status; ofstream ofile("info.txt",ios::app|ios::binary); if(!ofile) { } ofile.write((char*)&ir1,sizeof(ir1)); ofile.close(); return 1; cerr

} if(ch1=='n'||ch1=='N') return 0; else { } strcpy(sr1.name,name); cout>sr1.month; while(sr1.month12) { } sr1.salary=salary; ofstream ofile("salary.txt",ios::app|ios::binary); if(!ofile) { } ofile.write((char*)&sr1,sizeof(sr1)); ofile.close(); return 1; cerr>sr1.month;

technician::technician(float x)

{

}

void technician::countsalary()

13 hourlysalary=x;

cout>workhour; salary=workhour*hourlysalary; cout

}

salesman::salesman(float x)

{

getrate=x;

}

void salesman::countsalary()

{

cout

cin>>salesum;

salary=salesum*getrate;

cout

"

}

manager::manager(float x)

{

fixedsalary=x;

}

void manager::countsalary()

{

};

secretary::secretary(float x)

{

fixedsalary=x;

} 本月的销售额:"; 编号]"

14 本月工资为:

void secretary::countsalary()

{

cout>bonus; salary=fixedsalary+bonus; cout

}

techmanager::techmanager(float x)

{

}

void techmanager::countsalary()

{

cout>grade; while(grade3) { } salary=fixedsalary+gradebonus*grade; cout>grade; gradebonus=x; 为:"

}

salesmanager::salesmanager(float x)

{

}

void salesmanager::countsalary()

15 getrate=x;

cout>salesum; salary=fixedsalary+salesum*getrate; cout

}

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

// *

// salary.h *

// 定义对所有的类 *

// *

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

class employee

{

public:

};

class technician: virtual public employee

{

protected:

16 int number; char *name; int status; int month; float salary; void info(); bool search(); virtual void countsalary()=0; int recordinfo(); int recordsalary();

float hourlysalary;

public:

};

class salesman:virtual public employee {

protected:

float salesum; double getrate; technician(float x=35); void countsalary();

public:

};

class manager:virtual public employee {

protected:

float fixedsalary; salesman(float x=.05); void countsalary();

public:

};

class secretary:virtual public employee {

float fixedsalary; float bonus; manager(float x=6000); void countsalary();

public:

secretary(float x=4000); void countsalary();

17

};

class techmanager:public technician,public manager

{

float gradebonus; int grade;

public:

};

class salesmanager:public salesman,public manager

{

public:

}; salesmanager(float x=.02); void countsalary(); techmanager(float x=1000); void countsalary();

四、结论

经过两周时间的课程设计,主要是让大家利用所学知识,开发小型应用系统,我们组选择的是编写小企业职工工资管理系统,在编译中,我们跟进一步了解了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

六、心得体会

经过了我们团队的共同努力,终于在大家的共同努力下,我们总算将此程序设计出来。尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个大型程序,查找资料室至关重要的,在他人的基础上,在根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。

在这短暂而又漫长的俩个礼拜中,我们对所学的知识有了一个更深的了解,大约概括为以下几点:

1. 能够加深老师上课内容的理解

2. 熟悉开发环境,学习计算机系统的操作方法

3. 学习上机调试程序。

另外平时扎实的基础也很关键,因为如果你平时学得就不怎么样,那么你面对这么一个比较有难度的程序,你可能会望而却步,看他人的程序都是个难点,更别说让你自己去设计。为了解决此类问题,最好就是多向同学,老师请教,不要怕难为情。

在设计这个程序时,我们刚开始是根据老师给我们的资料,用画图以及循环将框架设计出来,但是接下去便无从下手了,计算是个关键和难点,我们也差了相应的资料,但是它上面用的是坐标来做的,所以为了方便设计程序,我们也该为坐标来做的,这样计算问题解决了。

从这一个多星期的设计过程中,我看到了大家的拼搏与努力,也让我知道团队精神的难能可贵,尽管一年下来大家不怎么有多大接触,但是彼此之间的友谊已经在我们心里扎根生底,在遇到问题时,我们会共同进退,每个人都会很慷慨不会因为是通过自己艰辛劳动设计出来的东西而不准他人剽窃了。

总之,这次设计程序让我受益良多,我会好好珍惜这种难得的机会


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn