C++课程设计企业员工工资管理系统.docx

上传人:b****2 文档编号:1224367 上传时间:2022-10-19 格式:DOCX 页数:26 大小:299.82KB
下载 相关 举报
C++课程设计企业员工工资管理系统.docx_第1页
第1页 / 共26页
C++课程设计企业员工工资管理系统.docx_第2页
第2页 / 共26页
C++课程设计企业员工工资管理系统.docx_第3页
第3页 / 共26页
C++课程设计企业员工工资管理系统.docx_第4页
第4页 / 共26页
C++课程设计企业员工工资管理系统.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C++课程设计企业员工工资管理系统.docx

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

C++课程设计企业员工工资管理系统.docx

C++课程设计企业员工工资管理系统

 

课程设计报告

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

课程面向对象课程设计

姓名

院(系)

专业年级

学号

指导教师

日期

 

目录

1需求与功能分析1

2系统框架图2

3类的设计与分析2

4非成员函数的设计与分析4

5特色算法分析4

6存在的问题及对策8

7用户手册及测试结果8

7.1用户手册8

7.2测试结果8

8心得体会11

9附:

程序源代码11

 

1需求与功能分析

在信息技术高速发展的今天,传统的数据统计方式在处理庞大繁杂的信息量时显得力不从心,于是,人们对于运用计算机来辅助和管理工作的需求正在逐步提高。

随着各个企业业务的逐步扩展,企业的员工人数也在迅速增加,由于管理人员水平有限,导致某些员工纪录管理并不完善,特别是繁杂的员工工资管理纪录,不易查询、修改,极易导致错误,而落后的员工管理方法随着社会的日益竞争,必将被淘汰。

由计算机来管理庞大而繁杂的企业员工纪录是非常合适的,不仅查询和修改方便,并且效率高,速度快,完全能够满足现代化企业管理的需要,同时也更利于实现全面办公自动化。

因此开发一套企业员工工资管理系统软件势在必行。

企业员工工资管理系统是企业管理系统中的一个重要组成部分,它为企业合理的员工调配与编制,以及有关问题的决策能够提供各种必要的基础数据,是公司管理现代化的一个重要方面。

利用微机对庞杂而繁锁的员工工资系统实现自动化管理,是计算机公司信息管理系统的重要内容。

我在陈勇老师指导下开发了《企业员工工资管理系统》。

《企业员工工资管理系统》旨在为商业人士及在社会团体、机构中负责管理关系的人士提供一个功能全面、使用方便的工资管理系统,以替代传统的手工管理工资纪录,同时利用先进信息技术为用户提供一些更为方便实用的功能。

本系统实现五种基本功能:

输入员工工资信息、删除员工工资信息、修改员工工资信息、查找员工工资信息、列出所有员工工资信息。

所以该工资管理系统可以分为5个模块,分别为输入模块、删除模块、修改模块、查找模块、列表模块,每个模块都有其对应的功能以及其设计。

(1)输入模块

输入模块的功能是创建存储职工工资信息的存储系统以及添加某职工的工资信息。

为实现输入的功能,有两个方面的任务:

定义结构体以及建立链表。

(2)删除模块

删除模块的功能是删除某职工的工资信息。

(3)修改模块

修改模块的功能是修改某职工的部分工资信息。

(4)查找模块

查找模块的功能就是输出指定编号职工的工资信息。

(5)列表模块

列表模块的功能是输出当月全体职工的工资信息。

2系统框架图

 

图1系统框架图

3类的设计与分析

classWorker

{

protected:

Worker_pay*head;//链表的头结点指针

public:

Worker(){head=NULL;}//构造函数

voidDisplay(Worker_pay*);//输出函数

Worker_pay*Find(int);//查找函数

intListCount();//统计员工人数函数

voidAddItem(int,string,int,string,string,string,float,float);//创建链表并链表的插入

voidRemoveItem(int);//删除函数

voidReplaceItem(int);//修改函数

voidListL();//遍历函数

voidSearch(int);//查找并输出某个员工信息函数

voidReal_wage(float,float);//计算函数

voidRecordinfo(int,string,int,string,string,string,float,float,float,float);//存储函数

};

表1Worker类说明表

名称

属性

说明

head

数据成员

链表头结点指针

Worker()

成员函数

缺省的构造函数,缺省值为head=NULL

voidDisplay(Worker_pay*)

成员函数

输出函数

Worker_pay*Find(int)

成员函数

查找函数

intListCount()

成员函数

统计员工人数函数

voidAddItem(int,···float,float)

成员函数

创建链表并链表的插入

voidRemoveItem(int)

成员函数

删除函数

voidReplaceItem(int)

成员函数

修改函数

voidListL()

成员函数

遍历函数

voidSearch(int)

成员函数

查找并输出某个员工信息函数

voidReal_wage()

成员函数

计算函数

voidRecoreinfo(int,···,float,float)

成员函数

存储函数

4非成员函数的设计与分析

表2非成员函数说明表

名称

说明

intMenu()

用于显示主菜单

charExit()

用于退出程序

voidInput(int*num,···,float*allowance)

用于输入员工工资信息

voidAddNew()

用于调用成员函数AddItem(int,···float,float)Real_wage()和Recoreinfo(int,···,float,float)

voidDoFind()

用于调用成员函数Search(int)

voidDoDelete()

用于调用成员函数RemoveItem(int)

voidDoMotify()

用于调用成员函数ReplaceItem(int)

voidList()

用于调用成员函数ListL()

intmain()

主函数

5特色算法分析

Worker类中的成员函数voidAddItem(int,···float,float)

(1)功能:

创建存储职工工资信息的存储系统以及添加某职工的工资信息。

算法思路:

先定义一个结构体Worker_pay,通过从表尾插入的方法来建立链表。

首先要先设立一个头指针(head)来存放链表的首地址,然后,不断用new运算符生成一个新的结点,将这个结点链入已有的链表尾部;如果链表中还没有结点,则这个新结点将是首结点,否则,将新结点的地址赋给原有链表的尾结点的next指针。

(2)流程图:

图2流程图

(3)代码:

voidWorker:

:

AddItem(intnum1,stringname1,intage1,stringsex1,stringdepartment1,stringtitle1,floatwage1,floatallowance1)

{

if(!

head)

{

head=newWorker_pay;

head->num=num1;

head->name=name1;

head->age=age1;

head->sex=sex1;

head->department=department1;

head->title=title1;

head->wage=wage1;

head->allowance=allowance1;

head->next=NULL;

return;

}

Worker_pay*t=head;

while(t&&t->num!

=num1)

t=t->next;

if(t)

{

cout<<"操作失败;员工编号为"<

!

!

"<

return;

}

Worker_pay*p=head;

while(p->next)

p=p->next;

Worker_pay*p1=newWorker_pay;

p1->num=num1;

p1->name=name1;

p1->age=age1;

p1->sex=sex1;

p1->department=department1;

p1->title=title1;

p1->wage=wage1;

p1->allowance=allowance1;

p1->next=NULL;

p->next=p1;

return;

}

6存在的问题及对策

(1)设计初期,先完成初步构思,写出主函数。

然后对主函数所涉及的各个模块进行编程,将各个模块利用指针和链表联系起来。

在环境中进行调试,应一边编译,一边调试,并且要一个模块一个模块的调试。

直至此模块完全没有错误时,在进入下一模块的调试。

不能直接输入全部的代码一次性调,这样错误会很多,并且不易找出和修改。

在完成程序的编译链接后,要用多组数据进行审查,确保做到系统无误。

设计过程中,不应忽视环境提示的警告,有时程序运行不正确与警告也有很大的关系。

这次设计中遇到很多问题都是提示类型不匹配,这时就要认真检查前面的代码,及时改正并且认真仔细,杜绝此类错再次发生。

编写代码时应该少用全局变量,全局变量在编写试看似定义次数少,很方便。

但全局变量出错几率较大,且不易修改,每次修改时都要全面考虑,所以应避免用到。

程序调试中碰到的错误可以使自己学到知识。

养成良好的编程习惯,可以节省很多时间,避免很多不必要的错误。

(2)在编辑完整个程序后,进行调试阶段总是会数显head无定义。

解决办法:

再类的定义是忘记声明指针Worker_pay*head;。

7用户手册及测试结果

7.1用户手册

运行程序时,界面刚开始出现一个主菜单及提示信息,用户通过在键盘上输入来选择某个功能。

当用户选择了某个功能,系统将跳转到所选择的功能界面,用户将可以根据提示信息来使用该功能,当用户通过键盘输入编号为-1时,系统将返回主界面。

7.2测试结果

图3系统主界面

图4输入员工信息测试图

图5删除员工信息测试图

图6修改员工信息测试图

图7查找员工信息测试图

图8输出全体员工信息测试图

图9退出系统测试图

8心得体会

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

下面是我的几点体会:

①刚拿到课题时,我一脸的茫然,看到如此庞大的工程,不知如何下手。

这个工资管理系统中职工子信息竟然包含15条,以前从来没有遇到过如此多的变量。

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

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

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

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

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

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

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

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

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

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

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

9附:

程序源代码

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

当前位置:首页 > 自然科学 > 天文地理

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

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