工资管理系统课程设计.docx

上传人:b****5 文档编号:8354710 上传时间:2023-01-30 格式:DOCX 页数:31 大小:466.70KB
下载 相关 举报
工资管理系统课程设计.docx_第1页
第1页 / 共31页
工资管理系统课程设计.docx_第2页
第2页 / 共31页
工资管理系统课程设计.docx_第3页
第3页 / 共31页
工资管理系统课程设计.docx_第4页
第4页 / 共31页
工资管理系统课程设计.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

工资管理系统课程设计.docx

《工资管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《工资管理系统课程设计.docx(31页珍藏版)》请在冰豆网上搜索。

工资管理系统课程设计.docx

工资管理系统课程设计

计算机科学与技术学院

《C高级语言程序设计》

课程设计报告

(2012/2013学年第一学期)

 

*******

专业班级:

计算机112002班

学生学号:

************

*******

2012年 12 月  29日

《工资管理系统》的设计与实现

(一)课题的来源和研究意义4

(二)课题的开发环境4

(三)本课题要达到的设计目标5

附录2程序清单———--———-----——-——-—-———--—----—-—————---————-—---

一目的和要求

(一)课题的来源和研究意义

随着计算机的日益普及和网络的发展,数据库的应用范围越来越广,数据库应用的功能也越来越强,因此编写管理信息系统应用程序也显得尤为重要,在强调管理,强调信息的现代社会中它变得越来越普及。

工资管理是任何企事业单位都需要进行的一项工作,因此,开发制作工资管理系统具有较大的社会现实意义,同时工资管理系统是一切应用系统的典范,它具有一切应用系统的特征,系统结构与现实生活紧密结合,具体直观,具有典范的数据库系统的特性.工资管理系统主要用于企业内部员工的档案、工资、考勤、评价的管理,便于公司领导掌握人员的动向,及时调整人才的分配,同时也减少了手工操作带来的一些繁琐与不便,使员工情况的记录和统计变得十分简单.这些优点可以极大的提高企业对人事管理的效率。

因此,工资管理系统是企事业信息化、智能化、科学化和正规化不可缺少的管理软件。

(二)课题的开发环境

本系统的设计是在Windowsxp中文版操作系统环境下,使用VisualC++6。

0中文版开发成功的.数据库SQL是其中的重要支持技术,在数据库开发过程中,如何选择数据库管理是一个重要的问题,目前,数据库产品较多,每种产品都具有各自的特点和适用范围,因此,在选择数据库时,应考虑数据库应用的特点及适用范围,本系统选用的数据库语言介绍如下:

C++语言.

C++是一种使用非常广泛的计算机编程语言.C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言.它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。

C++引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷.很多优秀的程序框架包括MFC、QT、wxWidgets就是使用的C++。

 

(三)本课题要达到的设计目标

工资管理信息系统的开发目标是:

克服现在工资管理中存在的人工管理,统计与查询单一、管理效率低下等问题;能科学有效的管理工资,方便地查询和统计人员、工资等情况,对所需要的数据以表格形式显示,以报表形式打印,并为将来进一步扩充和发展工资管理系统奠定基础。

二课程设计任务内容

(一)系统功能分析

系统开发的总体任务是要实现企业人事信息关系的系统化,规范化和自动化.

系统功能分析是在系统开发的总体任务的基础之上完成的。

工资管理系统主要有以下几项功能:

1.员工档案的管理:

包括员工基本信息,姓名和工号.

2。

员工工资的管理:

包括工资的添加,工资报表的查询,修改和删除.

3。

月份工资的管理:

包括添加某月某员工的工资和查询某月所有员工的工资信息。

4。

员工补贴的管理:

包括津贴,房贴和交通费的输入,计算和修改。

5。

员工扣除的管理:

包括房租,会费和税务的输入,修改和计算。

6.计算:

对工资各项数据进行汇总计算.

7。

保存信息和退出系统。

8。

管理员以及其它功能模块。

(二)功能模块图

根据系统功能的要求,可以将系统分解成几个功能模块来分别设计,功能模块如图2—1所示

 

 

图2—1功能模块图

 

三、详细设计任务内容

(一)系统功能和流程

数据库的设计是指对于一个给定的应用环境,构造最有效的数据库模式,建立数据及应用系统,实质能够有效地存储数据,满足用户的需求,数据库设计是在数据库管理系统支持下进行的.

根据功能模块图,可以列出以下数据项和数据结构:

员工信息:

工号,姓名.

工资管理:

工号,月份,姓名,底薪,津贴,房贴,交通费,应发工资,实发工资。

员工扣除管理:

工号,月份,姓名,房租,会费,税务,应扣数。

管理员:

编号,用户名,密码。

(二)程序流程图

得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础.这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。

根据上面的设计规划出的实体有:

员工基本信息实体,员工考勤信息实体,员工工作评价信息实体,员工工资信息实体,人事变动实体,部门管理实体。

根据实体之间的联系得出程序流程图如图3—1所示。

 

 

图3—1程序流程图

(三)数据库逻辑结构设计及函数功能表

根据实体间联系模型的需求分析,本系统需要设计工资管理,考勤管理,员工信息3个表来管理员工数据。

具体数据表的设计如下面的表格所示.

表3▪1工资管理表

字段名

数据类型

长度

是否为空

说明

gzid

Varchar

10

Notnull

工号

gzname

Varchar

8

Notnull

姓名

dixin

Money

8

Notnull

底薪

fangtie

Money

8

null

房贴

jiaotongfei

Money

8

null

交通费

fangzu

Money

8

null

房租

huifei

Money

8

null

会费

suodeshui

Money

8

null

所得税

表3▪2员工档案信息表

字段名

数据类型

长度

是否为空

说明

ygid

Varchar

10

Notnull

工号

ygname

Varchar

20

Notnull

姓名

name

char

20

Notnull

管理员用户名

password

char

8

Notnull

密码

表3▪3函数功能表

Add()

添加信息

Delete()

删除信息

Search(charnu[])

根据职工号查找

ReadFile()

从文件中读取信息

WriteFile()

向文件中写入信息

Display()

在屏幕中输出全部信息

Print()

输出表头

Print2()

按月份输出所有职工的工资信息

Print1(charnu[])

按职工编号输出所有职工的工资信息,带有返回值

Change()

修改信息

 

四、系统详细设计与模块的具体实现

(一)系统的主界面

在登陆主界面之前,首先登记用户管理窗体:

 

是是

图4-1登陆流程图

 

图4—2管理员登陆界面

(二)员工信息管理模块

登入后界面如图:

图4-3主菜单图

可以选择0—-9并Enter来进行操作;选择1可以进行添加职工信息,输入职工编号和姓名来编入职工.如果输入的职工编号重复,则不能输入该信息,如图:

图4-4员工重复效果图

选择2可以查看所有职工的信息和编号.

选择3可以删除职工信息。

(三)员工工资管理模块

选择4可以添加工资信息。

如图:

图4—5工资信息输入图

依次输入编号,月份,基本工资,津贴,房贴,交通费,房租和会费,Enter后可以添加信息了.选择7就可以查看刚刚输入的工资信息了,如图;实际发放工资也计算显示了:

图4—6职工工资图

选择5可以修改信息,比如基础工资,津贴,房贴等数据的改动都可以修改.

选择6则可以删除工资信息,可以选择某个月份,删除该月的工资信息。

选择8则是输出显示某个月的全部职工工资信息,如图:

图4—7工资信息输出图

(四)保存退出和软件测试

选择9可以保存信息,刚添加的信息需要保存,如果不保存,则退出系统后该信息就会消失。

选择0则是退出系统。

图4-8退出系统图

4。

4.1确认测试

确认测试是根据软件需求说明书中定义的全部功能、性能要求以及确认测试计划来测试整个软件系统是否达到了要求,确认测试是软件产品实际应用之前一道完整又系统的检验,是软件质量保证的最后一个环节。

4。

4.2测试结果分析

测试结果表明,由测试用例基本上能产生预期的结果,本系统具有很好的抗错能力。

由于在设计过程中对数据的输入都进行了合法性检查,从而保证的数据的正确性。

对于在测试过程中发现的错误,通过利用归纳、演绎和回朔等技术有效地排除了错误,从根本上保证了系统的质量。

 

五、心得与体会

经过四周的C++课程实践,我对C++语言设计有了一个更深,更全面的了解,尤其体会到了C++面向对象操作对简化程序的重要作用。

下面是我的几点体会:

①刚拿到课题时,我一脸的茫然,看到如此庞大的工程,不知如何下手.这个工资管理系统中职工子信息竟然包含15条,以前从来没有遇到过如此多的变量。

和同学讨论很久好,我发现其实可以化繁为简的,信息中15条不一定全都要,因为其中本身就有重复的,例如津贴和补贴。

并且可以有一个pay的数组来处理数据。

所以做任何事情都必须要开动脑筋,积极思考,有时还要学会化繁为简.

②在编程时条理清晰是至关重要的。

主函数,函数,成员函数之间的层次关系,调用关系一定要有一个全面的把握,尤其要体会类的封装性。

另外很重要的一点就是一定要对链表的五种操作熟练的掌握.

③在编译,链接,调试的过程中一定要有耐心。

因为一个程序中会有很多小的错误,甚至有的问题要几个小时才能解决。

遇到问题,一定要全面分析,有时候还要向同学请教。

总得来说,编程时极需要耐心的。

还有程序里虽然可以运行了,但是应该有的功能也没有,比如说输入职工信息时,输入的职工工号和原来储存的信息里有的工号不能重复,避免输入错误,照成不必要的损失。

总之,C++课程设计实践为我们提供了一个综合运用所学知识,解决实际问题的平台,增强了我们实践动手的能力和工程实践能力,并且锻炼和培养了我们的自学能力,让我们对C++有了一个更全面的了解。

 

附录1参考文献

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

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

附录2程序清单

源代码如下:

#include〈iostream〉

#include

h>

#include

#include

#include

intj;

#include

usingnamespacestd;

classGZ;

structzhigong

{charnumber[10];

charname[15];

};

structZhigong

{zhigongzg;

Zhigong*next;

};

classZG//定义一个职工类

Zhigong*head;//头指针

Zhigong*p;//当前指针

public:

ZG(){head=p=NULL;};

voidAdd();

voidDelete();//删除职工

intSearch(charnu[]);//根据职工号查找

voidReadFile();//从文件中读取职工信息

voidWriteFile();//向文件写入职工信息

voidDisplay();//在屏幕中输出全部职工信息

voidPrint(charnu[]);

voidPrint();

friendclassGZ;

};

voidZG:

:

Add()

{

p=newZhigong;

cout<〈"\t请输入职工编号:

";cin〉〉p->zg。

number;

if(Search(p->zg。

number)==0)

{cout〈〈"\t请输入职工姓名:

”;cin>>p-〉zg。

name;

p—〉next=head;//头插入建链表

head=p;

cout<

else

cout<<”\n\t已经存在该职工,不能重复添加!

”<〈endl;

////////////////////////

voidZG:

Delete()

{

if(head!

=NULL)

{intn=0;

Zhigong*q=head;

Zhigong*q1=head,*q2=head—〉next;

chargh[10];

cout〈〈”\t请输入您要删除的职工编号:

";

cin〉〉gh;

while(q!

=NULL)

{n++;

if(strcmp(q-〉zg.number,gh)==0)break;

q=q-〉next;

if(q==NULL)cout<<”不存在该职工!

”<〈endl;

else

{if(n==1)head=head—〉next;

else

{for(inti=1;i

{q1=q2;

q2=q2—〉next;

if(q2==NULL)

q1=NULL;

else

q1—〉next=q2—〉next;

cout〈〈”删除成功!

”<〈endl;

}}

///////////////

intZG:

:

Search(charnu[])

{Zhigong*q=head;

while(q!

=NULL)

{if(strcmp(q—〉zg.number,nu)==0)break;

q=q-〉next;

if(q==NULL)return0;

elsereturn1;

///////////////////

voidZG:

:

ReadFile()

{p=newZhigong;

ifstreamfip("职工信息。

dat”,ios:

:

in|ios:

binary);

if(!

fip)cout〈〈”未创建该文件!

"<

else

while(fip。

read((char*)&p—〉zg,sizeof(p->zg)))

{p->next=head;

head=p;

p=newZhigong;

}

fip.close();

deletep;

////////////////////

voidZG:

:

WriteFile()

{Zhigong*s=head;

ofstreamfop;

fop。

open(”职工信息。

dat”,ios:

:

binary|ios:

:

trunc);

if(!

fop)

{cout〈〈”职工信息。

dat无法打开!

”〈

abort();

while(s)

{while(fop。

write((char*)&s—>zg,sizeof(s—〉zg)))

{s=s—>next;

}

fop。

close();

}

///////////////////

voidZG:

Print()

{cout〈〈”\t\t”〈〈setiosflags(ios:

left)〈〈setw(10)<<”职工编号"<〈setiosflags(ios:

left)〈〈setw(15)〈〈"职工姓名”<〈endl;

voidZG:

:

Print(charnu[])

{Zhigong*q=head;

while(q!

=NULL)

{if(strcmp(q—〉zg。

number,nu)==0)break;

q=q—>next;

if(q!

=NULL)

{Print();

cout〈〈”\t\t"<〈setiosflags(ios:

left)<

number<〈setiosflags(ios:

left)〈

name〈〈endl;

else

cout<<"职工不存在”〈〈endl;

/////////////////////////////

voidZG:

Display()

{if(head==NULL)

cout〈〈"没有职工信息!

\n\n”;

else

{Zhigong*k=head;

Print();

while(k)

{cout〈〈"\t\t"〈〈setiosflags(ios:

left)〈〈setw(10)<〈k—>zg。

number〈

left)〈〈setw(15)〈〈k—〉zg。

name<

k=k—〉next;

}

/////////////////////////////////////////////////////////

structgongzi

{charmonth[7];

charnum[10];

floatdixin;

floatjintie;

floatfangtie;

floatjiaotongfei;

floatfangzhu;

floathuifei;

floatyingfa;

floatsuodesui;

floatyingkou;

floatshifa;

};

structGongzi

{gongzigz;

Gongzi*next;

};

classGZ//定义一个职工类

{

Gongzi*head;//头指针

Gongzi*p;//当前指针

public:

GZ(){head=p=NULL;};

voidAdd();

voidDelete();//删除

voidChange();

voidReadFile();//从文件中读取职工信息

voidWriteFile();//向文件写入职工信息

voidPrint1();//按职工编号输出所有职工的工资信息

intPrint1(charnu[]);//按职工编号输出所有职工的工资信息,带有返回值

voidPrint2();//按月份输出所有职工的工资信息

voidPrint();//输出表头

};

voidGZ:

Add()

{ZGA;

A。

ReadFile();

p=newGongzi;

cout<〈”职工编号:

";cin>〉p—〉gz。

num;

if(A。

Search(p—>gz。

num)==1)

{cout<<”月份:

”;cin>>p->gz。

month;

cout<〈"基本工资:

";cin>〉p->gz.dixin;

cout〈<"津贴:

";cin>〉p—〉gz.jintie;

cout<〈”房贴:

”;cin>〉p—〉gz。

fangtie;

cout〈〈”交通费:

”;cin〉〉p—>gz。

jiaotongfei;

cout<〈”房租:

";cin>〉p-〉gz.fangzhu;

cout<<”会费:

";cin>〉p—>gz。

huifei;

p—>gz。

yingfa=p-〉gz。

dixin+p—〉gz.jintie+p—〉gz.fangtie+p-〉gz.jiaotongfei;

if(p—〉gz.yingfa〈=2000)p-〉gz.suodesui=0;

else

p-〉gz.suodesui=(p—〉gz.yingfa—2000)*0.2;

p—>gz。

yingkou=p-〉gz.fangzhu+p—>gz.huifei+p—〉gz。

suodesui;

p-〉gz.shifa=p->gz.yingfa-p->gz。

yingkou;

p->next=head;//头插入建链表

head=p;

elsecout<<”没有该职工,不能添加工资信息!

"〈〈endl;

voidGZ:

Print()

{cout〈〈setiosflags(ios:

left)〈〈setw(7)〈〈”月份"〈

:

left)〈〈setw(9)〈<”职工编号"

<〈setiosflags(ios:

:

left)<

left)<〈setw(5)〈〈”津贴”〈〈setiosflags(ios:

:

left)<〈setw(5)〈〈”房贴”

〈〈setiosflags(ios:

:

left)<〈setw(7)〈<"交通费"〈〈setiosflags(ios:

:

left)〈

:

left)<

〈〈”房租”〈〈setiosflags(ios:

left)<

left)〈

left)〈

〈〈"应扣数”〈

:

left)〈〈setw(7)〈〈"实发数”〈〈endl;

}

////////////////////////////////////////////////////

voidGZ:

:

Print1()

{intn=0;

charnu[10];

cout<<”\n\n\t\t请输入职工编号:

";

cin〉〉nu;

if(head==NULL)

cout〈<"\n\n\t\t没有工资信息!

\n\n”;

else{p=head;

while(p)

{if(strcmp(p—>gz。

num,nu)==0)n++;

p=p-〉next;

}

if(n!

=0)

{p=head;

Print();

while(p)

{if(strcmp(p—〉gz。

num,nu)==0)

cout〈〈setiosflags(ios:

:

left)<

month〈

:

left)〈〈setw(9)〈

num〈

left)〈gz.dixin

:

left)<〈setw(5)〈gz。

jintie〈〈setiosflags(ios:

:

left)<〈setw(5)〈〈p-〉gz.fangtie

<〈setiosflags(ios:

left)〈

:

left)〈〈setw(7)〈〈p-〉gz。

yingfa〈〈setiosflags(ios:

:

left)〈〈setw(5)

<〈p—>gz.fan

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

当前位置:首页 > 初中教育

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

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