年终奖励发放系统方案.docx

上传人:b****7 文档编号:9501436 上传时间:2023-02-05 格式:DOCX 页数:42 大小:372.51KB
下载 相关 举报
年终奖励发放系统方案.docx_第1页
第1页 / 共42页
年终奖励发放系统方案.docx_第2页
第2页 / 共42页
年终奖励发放系统方案.docx_第3页
第3页 / 共42页
年终奖励发放系统方案.docx_第4页
第4页 / 共42页
年终奖励发放系统方案.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

年终奖励发放系统方案.docx

《年终奖励发放系统方案.docx》由会员分享,可在线阅读,更多相关《年终奖励发放系统方案.docx(42页珍藏版)》请在冰豆网上搜索。

年终奖励发放系统方案.docx

年终奖励发放系统方案

 

《面向对象程序设计(C++)》

课程大作业

 

项目名称:

年终奖励发放系统

班级:

学号:

完成时间:

指导教师:

 

日期:

2012年2月26日

 

一、需求分析

1.1开发背景

年终奖就是老板给予员工不封顶的奖金,有的还包括了旅游奖励、物质奖励等,是一年来的工作业绩奖励,也是可给可不给的一个项目。

年终奖的发放额度和形式一般由企业自己根据情况调整。

好的年终奖办法要有较好的考评指标、评价方法、发放规则等等相应的各项制度,可以有效激励员工,增加企业凝聚力。

因此,几乎每个公司每年年末都会根据各个员工一年的表现发放相应的奖金。

针对以上背景,我们提出了一个年终奖励发放系统的方案,并通过对该系统的操作性、可行性与实用性等各个方面的分析,最终确定了该方案即为我们的设计方向。

方案提出者:

江燊、董诗雅、熊昌磊

开发者:

江燊、董诗雅、熊昌磊

用户:

所有需要发放年终奖励的公司

1.2项目目标

通过该系统,能够实现对员工的基本信息与一年工作业务量的管理,可以让员工注册自己的信息、查询自己本年度的奖金,也可以让管理人员录入、修改、删除员工的业务量,由财务处算出奖金,最后总经理确认奖金的发放。

1.3运行环境

软件:

运行在Windows软件(VisualC++6.0)环境下;

硬件:

能够运行Windows软件的PC机或笔记本电脑;最低配置:

要求存大于128M,硬盘大于1G。

二、程序分析

2.1技术要点

系统结构图:

图2-1系统结构图

 

程序流程图:

 

 

 

 

2.2项目任务书

江燊负责编写Employee类、员工注册系统与程序设计报告。

董诗雅负责编写员工查询系统。

熊昌磊负责编写Database类与管理人员管理系统。

三人一起进行调试修改。

三、技术路线

3.1总体方案

3.1.1软件与开发平台

在WindowsXP环境下,采用M采用Microsoft公司的VisualC++作为开发平台。

利用面向对象的思想实现一个报纸杂志的订阅管理使用类的封装性,抽象性,继承性和多态性。

3.1.2总体方案

系统中应用的头文件:

#include,#include,#include,#include,#include,#include

创建的类:

Employee//职工类Database//职工数据类

我们通过主函数实现对类的利用,实现管理人员对员工信息的增添、删除、查询、修改等一系列的功能。

构造函数用于读入文件中的信息,析构函数用于把信息写入文件,即系统运行时会通过构造函数自动读入信息,存于存,而新输入的信息也会先保存在存在,当系统运行结束时,自动调用析构函数把信息写入文件。

创建2个文件,basic.txt用于存放员工基本信息,employee.txt用于保存职工的奖金信息。

我们在此基础上设立了可执行的操作界面。

3.2详细设计

系统中涉与的类:

Employee//职工类

Database//职工数据类

详细信息:

1、类名:

Employee

私有成员:

inttag;//删除标记

intno;//职工编号

charname[20];//职工

charzw[20];//职工职位

intsalary;//职工工资

charcode[20];

公有成员:

Employee()

char*getname()//获取名字

char*getzw()//获取职位

intgettag()//获取标记

intgetno()//获取编号

intgetsalary()

char*getcode()

voidsetzw(charq[])//设置名字

voidsetname(charna[])//设置名字

voidsetcode(charna[])

voidgetsalary(intsa)

voiddelna()//删除

voidaddemp(intn,intsa,char*na,char*q)//增加

voidaddemp2(intn,char*na,char*q)//增加员工基本信息

voiddisp()//显示职工信息

2、类名:

Database

私有成员:

inttop;

Employeeread[Maxr],basic[Maxr];

公有成员:

Database()//将职工工资信息从employee.txt读取到read[]中,将职工基本信息从basic.txt读取到basic[]中

voidclear()//删除所有

intaddemp(intn,intsa,char*na,char*q)//增加职工

intaddemp2(intn,char*na,char*q)//增加职工基本信息

Employee*query(intempid)//从职工工资信息中定位编号

Employee*query2(intempid)//从员工基本信息中定位编号

Employee*query1(charempna[20])//从职工工资信息中定位

Employee*query3(charempna[20])//从员工基本信息中定位

voiddisp()//职工信息显示

voidscreen();

voidscreen1();

voidscreen2();

voidempdata();//人力资源部管理

voidSearch();

voidmanager();

voidbasic2();//普通员工注册系统

~Database()//将read[]中的信息读如到employee.txt中

四、工程进度

表4-1工程进度一览表

任务阶段

时间

计划完成工作

实际完成情况

分析选题阶段

2012年1月7日上午

对大作业所给题目进行分析,查阅资料,最终选择感兴趣的题目并确定方案

经过组员讨论,决定选择“年终奖励系统”,随之确定开发方案

规划系统功能,设计数据结构与类层次阶段

2012年1月7日下午

至2012年1月9日上午

确定整体框架,编写大作业中所用到的各个类与其对应函数

成功确定整体框架,并编写出大作业中所用到的各个类与其对应函数

函数编写阶段

2012年1月10日至2012年2月15日

编写所要用到的函数,功能函数

成功编写出大作业中所要用到的通用函数,功能函数

界面编写阶段

2012年2月16日至2012年2月20日

确定软件界面,并优化各操作界面

成功确定软件界面,并了优化各操作界面,使软件更加完整,可用性提高

程序调试阶段

2012年2月21日至2012年2月23日

调试整个程序,用大量数据对每个功能进行测试,并邀请其他同学充当用户进行测试

测试成功,各项功能均正常实现,用户反应良好

报告填写阶段

2012年2月24日至2012年2月26日

填写实验报告,为整个程序填加必要注释

完成实验报告,出色地完成了流程图设计与表格设计,使整个实验报告可读性大大提高

五、测试报告

5.1阶段性测试

在程序基本设计好的时候,我们对整个程序进行了一次比较系统的测试,对各个子系统的主要功能也都用数据进行了检测,以确保程序的正确性,同时希望程序能够完成对不同员工信息的输入与显示,从而实现对报纸、杂志订阅系统进行管理。

此次测试是在2012年2月21日进行的。

以下是这次测试的具体结果:

系统主界面:

 

5.1.1输入1,则进入普通员工注册系统

 

根据职位输入相应数字,系统则会提示输入员工的基本信息,输入成功后会自动跳回主界面。

5.1.2输入2,则进入普通员工查询系统

 

根据提示输入数字查询,例如:

输入1

 

又例如输入2:

 

查询成功后按回车键即可返回

输入3则返回主界面

5.1.3输入3,则进入管理人员管理系统

 

根据提示输入数字

1)例如:

输入1,系统会提示用户输入编号,普通员工是没有权利进入的

 

输入1,系统会提示输入员工编号

 

输入2,则是对员工的奖金进行更改

输入3,则是删除某位员工的信息

输入4,则是对员工的奖金信息进行查询

输入5,则会显示全部员工奖金信息

 

输入6,则是删除全部奖金信息

输入0,则返回主界面

2)例如:

输入2

 

3)例如:

输入3

 

4)输入4,则返回主界面

此阶段测试基本达到目的。

5.2总体测试

2012年2月23日晚上,我们对程序进行了最后一次测试,主要容与阶段测试一样,只是改变了一些界面,使其看起来更美观更好使用。

以下是修改后的界面:

 

 

六、个人小结

1、**的个人小结

这次的大作业,是对编程能力的一种检验,尤其是对C++的运用能力,C++和C最大的不同就在于它对类的应用,也正是因为有了类,让我们在编程过程中省了不少麻烦。

但是也因为C++是刚学的,而且之前并没有接触到C++中文件的应用,这就让我们在编写初期有了比较大的困难,但是功夫不负有心人,经过我们的努力,我们成功的把信息写入文件也实现了文件的读入,这让我们激动有成就感,也鼓励着我们继续努力。

虽然这次写的只是一个小系统,几乎没什么用处,但是对我们而言,它依旧是那么珍贵,因为它是我们努力的成果,是我们对所学知识的理解和运用,具有极大的意义。

当然了,每一个成就的背后,都离不开团队的合作,我们的系统也一样。

作为我们小组的组长,我对大家的任务进行了划分,而大家也很配合,正是这种团队合作的努力,我们的系统才能成功完成。

往往一个人遇到了问题大家通过讨论和学习一个大的困难变成了一个小的问题,很自然就解决了。

我想这种团队合作的精神,不仅仅是现在需要,以后的生活学习更需要,通过大家一起交流学习,那才能取得最大的进步。

2、**的个人小结

就我个人而言,我认为C++相对于数据结构来说还是比较简单的,有些东西不许要特别的去说明,比如说构造函数和析构函数就是可以把读文件和写文件功能实现,还有非常重要的一点是,我认为C++用的语言很简单但是很实用,去掉了某些非常繁琐的步骤,并且它将一个类别的事件作为一个整体来向我们呈现出来,拿到我们写得这个程序来说,实际意义上的核心部分还是就是职工类和职工数据类这两个类,简单明了的用其来把实际问题解决掉,实际上,对于我们来说,我们在大学的学习就是为了简化我们的思路,让我们能够运用有限的知识来解决实际问题,从这个大作业来看,虽然它是一个很小的系统,但是它还是能体现我们的思路,我们解决这个问题的具体步骤,我想我们以后走上工作岗位的时候,我们也会从这个方面考虑,还有就是很重要的一点就是团队的力量,用我高中老师的话来说就是:

"在一个失败的班集体中,没有一个真正意义上的成功者",所以在这个寒假中,我充分体验到了团队的力量,我们将我们的任务划分成好几个部分,我们三没人完成一个部分,虽然我们做的工作都很单一,但是绑在一起就会产生微妙的变化,所以我还是能够感受得到"一根筷子是很脆弱的,但是一把筷子是很坚韧的"的道理,还有一点就是,我通过这次的编写,我自己感觉我的编程能力正在渐渐增长......

3、**的个人小结

通过这次大作业,我们对面向对象编程的思想以与模块化编程有了更为深刻的理解,同时掌握了一些编程中应注意的问题以与技巧。

最重要的是我们通过团队的力量来完成了它,深度投入的采用了分工合作的精神完成了这个任务。

完成一个系统的设计,要明确要求,构建整体思想,需要构造哪些类,每个类要设置哪些属性,如何设置这些类的接口,设计好后要对相应的项进行的处理,都需要在编程之前考虑好,并画出方案的流程图,将整体思想图纸化。

每件事总是说起来容易做起来难,我们先根据要求设计了一个系统实现流程图,在实际操作中发现它很难实现,最后经过小组的多次讨论和借鉴网上资源完善了思想。

在实施的过程中发现了自己的不足之处和对知识理解不深的地方,任何一个环节出现小小的疏忽都会导致整个设计的失败,对不确定的地方一定要查阅资料,不能想当然的做。

我们在平时需要注重收集,将一些常用的、自己编写的类、函数,都保存下来,这样将来用到的时候,就可以方便的搜索以与使用。

同时,小组成员在分工协作的时候要多交流、勤思考,在编写程序的时候要善于试用注释,为了让别人看懂自己的程序或着避免自己因为时间长了看不懂当初自己写的程序。

在整个大作业过程中,大家一起发现修改错误,完善设计。

小组成员互相协作,为本次实验画了一个圆满的句号。

小组的分工协助合作精神也起着互助的一个关键,以后若大的项目不是一力之力其成。

高效的开发效率,众多新颖功能都是来自各人独特的新意,良好的分工合作,达到每人都有事做,全心投入这块的设计中,小组成员都必须遵从组长的安排,做到服从,认同和化。

对块合作一定要充足自信心,没有个人的成功,只有小组目标共同的达成。

运用多维评价也是大家分工互助中不可缺少的一环,与时找出现有的缺陷,自我评价和互相评价,从而集合成组单一的评价,来达到组各同学的共识,形成良好的互助条件,也是小组合作成效的关键。

还想说的是,程序有不足之处,还请老师帮忙改进一下。

 

附录程序源代码

#include

#include

#include

#include

#include

#include

intk=0;//定义总经理是否签字的全局变量

constintMaxr=100;

classEmployee{//职工类

inttag;//删除标记

intno;//职工编号

charname[20];

charzw[20];//职工

intsalary;//职工工资

charcode[20];

public:

Employee(){}

char*getname(){returnname;}//获取名字

char*getzw(){returnzw;}

intgettag(){returntag;}//获取标记

intgetno(){returnno;}//获取编号

intgetsalary(){returnsalary;}

char*getcode(){returncode;}

voidsetzw(charq[])//设置名字

{

strcpy(zw,q);

}

voidsetname(charna[])//设置名字

{

strcpy(name,na);

}

voidsetcode(charna[])

{

strcpy(code,na);

}

voidgetsalary(intsa){salary=sa;}

voiddelna(){tag=1;}//删除

voidaddemp(intn,intsa,char*na,char*q)//增加

{

tag=0;

no=n;

salary=sa;

strcpy(name,na);

strcpy(zw,q);

}

voidaddemp2(intn,char*na,char*q)//增加员工基本信息

{

tag=0;

no=n;

strcpy(name,na);

strcpy(zw,q);

}

voiddisp()//显示职工信息

{

cout<<"├—————┼—————┼—————┼—————┤"<

cout<<"│"<

cout<<"├—————┼—————┼—————┼—————┤"<

}

};

 

classDatabase{//职工数据类

inttop;

Employeeread[Maxr],basic[Maxr];

public:

Database()//将职工工资信息从employee.txt读取到read[]中,将职工基本信息从basic.txt读取到basic[]中

{Employees;

top=-1;

fstreamfile("employee.txt",ios:

:

in);

while

(1)

{

file.read((char*)&s,sizeof(s));

if(!

file)break;

top++;

read[top]=s;

}

file.close();

top=-1;

fstreamfile2("basic.txt",ios:

:

in);

while

(1)

{

file2.read((char*)&s,sizeof(s));

if(!

file2)break;

top++;

basic[top]=s;

}

file2.close();

}

 

voidclear()//删除所有

{

top=-1;

}

intaddemp(intn,intsa,char*na,char*q)//增加职工

{

Employee*p=query(n);

if(p==NULL)

{

top++;

read[top].addemp(n,sa,na,q);

return1;

}

return0;

}

intaddemp2(intn,char*na,char*q)//增加职工基本信息

{

Employee*p=query2(n);

if(p==NULL)

{

top++;

basic[top].addemp2(n,na,q);

return1;

}

return0;

}

Employee*query(intempid)//从职工工资信息中定位编号

{

for(inti=0;i<=top;i++)

if(read[i].getno()==empid&&read[i].gettag()==0)

return&read[i];

returnNULL;

}

Employee*query2(intempid)//从员工基本信息中定位编号

{

for(inti=0;i<=top;i++)

if(basic[i].getno()==empid&&basic[i].gettag()==0)

return&basic[i];

returnNULL;

}

Employee*query1(charempna[20])//从职工工资信息中定位

{

for(inti=0;i<=top;i++)

if((strcmp(read[i].getname(),empna)==0)&&read[i].gettag()==0)

return&read[i];

returnNULL;

}

Employee*query3(charempna[20])//从员工基本信息中定位

{

for(inti=0;i<=top;i++)

if((strcmp(basic[i].getname(),empna)==0)&&read[i].gettag()==0)

return&basic[i];

returnNULL;

}

voiddisp()//职工信息显示

{

for(inti=0;i<=top;i++)

read[i].disp();

}

voidscreen();

voidscreen1();

voidscreen2();

voidempdata();

voidSearch();

voidmanager();

voidbasic2();

~Database()//将read[]中的信息读如到employee.txt中

{

fstreamfile("employee.txt",ios:

:

out);

for(inti=0;i<=top;i++)

if(read[i].gettag()==0)

file.write((char*)&read[i],sizeof(read[i]));

file.close();

fstreamfile2("basic.txt",ios:

:

out);

for(i=0;i<=top;i++)

if(basic[i].gettag()==0)

file2.write((char*)&basic[i],sizeof(basic[i]));

file2.close();

}

};

voidDatabase:

:

basic2()//普通员工注册系统

{

charrname[20];

intchoice=1;

intm=1;

intb=1;

intempid;

Employee*r;

cout<

cout<

cout<

1,并按回车键│\n";

cout<

2,并按回车键│\n";

cout<

3,并按回车键│\n";

cout<

cin>>m;

switch(m)

{

case1:

cout<<"输入经理编号:

";

A:

cin>>empid;

r=query2(empid);

if(r!

=NULL){

cout<<"您输入的这个编号资料库已存在!

\n请重新输入编号";

gotoA;}

cout<<"输入经理:

";

cin>>rname;

addemp2(empid,rname,"经理");

break;

case2:

cout<<"输入业务经理编号:

";

B:

cin>>empid;

r=query2(empid);

if(r!

=NULL){

cout<<"您输入的这个编号资料库已存在!

\n请重新输入编号";

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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