职工工资管理系统实习报告.docx
《职工工资管理系统实习报告.docx》由会员分享,可在线阅读,更多相关《职工工资管理系统实习报告.docx(47页珍藏版)》请在冰豆网上搜索。
职工工资管理系统实习报告
C++实习报告
项目名称:
职工工资管理系统
项目组名:
职工工资管理系统项目组
项目成员:
完成日期:
2011年10月23日
班级名称:
信息系统与信息管理
概要设计
1引言
1.1编写目的
设计一个职工工资管理系统,能够方便的对职工及工资情况进行管理,统计每个部门的员工,整个公司的员工工资,员工信息等,包括工资,奖金,纳税等等。
并能够修改员工的各种信息,在需要的时候可以方便的排序。
采用菜单交互方式,设计一个界面友好,操作简单方便的软件系统。
1.2背景说明
待开发软件系统的名称:
职工工资信息管理系统
项目任务提出者:
C++培训老师
开发者:
用户:
西北大学校教务处
运行环境:
WINDOWS98,WINDOWS2000/xp,
1.3定义
1.4参考资料
软件工程
C++
数据结构
{列出有关的参考资料,如:
a.本项目的经核准的计划任务书或合同、上级机关的批文;
b.属于本项目的其它已发表的文件;
c.本文件中各处引用的文件、资料、包括所要用到的软件开发标准。
列出这些文件资料的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。
}
2总体设计
2.1需求规定
主要输入项目:
员工基本信息、工资的基本信息、工资的扣除费
登录的用户名和密码
主要输出项目:
员工基本信息、工资的基本信息、工资的扣除费用信息
2.2运行环境
硬件要求:
CPU主频1.5G以上,内存256Mb以上,硬盘10G以上
软件要求:
Windows2000/XP
2.3基本设计概念和处理流程
v基本设计概念:
系统以菜单方式工作(文本菜单)
输入数据,输出数据用文件保存
v处理流程:
v所用到的关键类及它们之间的关系如下表:
2.4结构
{用一览表及框图的形式说明本系统的系统元素(各层模块、子程序、公用程序等)的划分,扼要说明每个系统元素的标识符和功能,分层次地给出元素之间的控制与被控制关系。
}
2.5功能需求与程序的关系
{本条用一张如下的矩阵图说明各项功能需求的实现同各块程序的分配关系。
}
程序1
程序2
......
程序m
功能需求1
✓
功能需求2
✓
......
功能需求n
✓
✓
3接口设计
3.1用户接口
DOS下用户界面操作。
{说明将向用户提供的命令和它们的语法结构,以及软件的回答信息。
}
3.2外部接口
磁盘的文件读写。
{说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、本系统与各支持软件之间的接口关系。
}
3.3内部接口
各层次类与函数直接的调用。
{说明本系统之内的各个系统元素之间的接口的安排。
}
4运行设计
4.1运行模块组合
{说明对本系统施加不同的外界运行控制时所引起的各种不同的运行模块组合,说明每种运行所历经的内部模块和支持软件。
}
4.2运行控制
{说明每一种外界的运行控制的方式方法和操作步骤。
}
4.3运行时间
{说明每种运行模块组合将占用各种资源的时间。
}
5系统数据结构设计
类名:
User
属性:
userName用户名
passWord登陆密码
userType用户类型
方法:
changePwd(String)更改密码
lookup()查询信息
类名:
SalaryManager基类:
User
方法:
Stat()统计
Sort()排序
editEmployInfo(SalaryTable)编辑员工信息
save()保存
类名:
Employee基类:
User
属性:
salaryId,工资卡号
IDCarad,身份证号
name,姓名
sex,性别
age年龄
wAge工龄
department部门,
pos职位,
posId职位号,
homeTel家庭电话,
mobilePhone手机
方法:
getInfo();返回信息
getSalaryTable();返回薪水表
changeHomeTel();更改家庭电话号码
changeMobilePhone()更改手机号码
类名:
SystemManager
方法:
createUser(string,string,string)创建员工
editSalaryTable(SalaryTable)编辑员工表
creatEmpyInfo()创建员工信息
类名:
SalaryInfo
属性:
positionId,
position,
baseSalary,
bSalary,
subsidy
类名SalaryTable
属性:
salaryId,
name,
allSalary,
Deducted,
tax,
prize
方法:
save()
caluteSalary()
类名:
Deducted
属性:
salaryId,
waterFee,
electricFee,
cleanFee,
TVFee
详细设计
1.1编写目的
设计一个职工工资管理系统,能够方便的对职工及工资情况进行管理,统计每个部门的员工,整个公司的员工工资,员工信息等,包括工资,奖金,纳税等等。
并能够修改员工的各种信息,在需要的时候可以方便的排序。
采用菜单交互方式,设计一个界面友好,操作简单方便的软件系统。
1.2背景
待开发软件系统的名称:
职工工资信息管理系统
项目任务提出者:
C++培训老师
开发者:
孙承碧刘士福张辉
用户:
西北大学校教务处
运行环境:
WINDOWS98,WINDOWS2000/xp,
1.3定义
主要类:
Employee,User,SalaryManager,SystemManager
1.4参考资料
1《C++程序设计教程》《c++STL程序员编程指南》等。
2程序系统结构
3程序设计说明
3.1程序描述
按照实习老师要求,进行程序设计。
应用C++语言编写,完成员工工资管理。
用类的继承,封装和多态思想构造整个框架
3.2功能
1基本功能和要求
(1)系统必须是菜单操作方法,进入功能必须打开菜单,并且每个菜单都有相应的帮助,菜单之间能够灵活的切换。
用户分三种权限:
一般的员工用户,员工工资管理员,系统管理员。
(2)根据登陆方式,选择相应的操作方式;
如果是一般的员工用户(默认权限为r即只读),就只能按照各种方式查看数据,并且只能查看自己的信息和工资情况,并且可以网上修改自己的信息等等功能;
如果是员工工资管理员,除了可以查看数据外还能编辑员工基本信息数据。
如果是系统管理员,他可以拥有员工工资管理员的所有功能,并且可以创建用户,并且可以修改员工的工资体系和大小。
(3)能够对员工基本信息、工资的基本信息、工资的扣除费用信息进行统计,统计的结果能够以表格的形式来表示。
(4)员工基本信息、工资的基本信息、工资的扣除费用信息存储在相应的文件中。
数据的组织形式要求必须使用链表或者二叉树来实现。
(5)登录的用户名和密码应该存储在单独的文件中,最好做一定的加密算法。
(6)系统要求界面友好,易操作。
2统计功能
(1)统计每个部门的员工工资、整个公司的员工工资、员工的信息等。
(2)统计全公司总金额、每个部门的员工工资、扣税信息、工资的扣除信息、奖金、
特别奖金等等。
(3)统计全公司工资最高的人员前10名,并对它们进行排序。
(4)按部门统计工资最高的人员前10名,并对它们进行排序。
(5)统计扣除工资最多的10个人。
(6)工资信息其它方面的统计。
(7)按照技术职称统计工资信息。
(8)按照工龄职称统计工资信息。
3查找功能
(1)可以根据员工的姓名查找。
(2)可以根据工资卡号查找。
(3)可以根据身份证号查找。
(4)可以根据部门查找。
(5)可以根据技术职称查找。
(6)可以根据员工的姓名来查找员工的信息,以及员工的工资组成和细节。
(7)可以根据员工的身份证来查找员工的信息,以及员工的工资组成和细节。
(8)可以根据员工的部门来查找员工的信息,以及员工的工资组成和细节。
4排序功能
(1)可以根据员工的基本工资排序。
(2)可以根据员工的职务工资排序。
(3)可以根据员工的扣除工资排序。
(4)可以根据员工的交税信息排序。
(5)可以根据员工的扣除工资信息排序。
(6)可以根据员工的姓名排序。
(7)可以根据员工的职务排序。
5系统的操作
(1)有文件的保存和另存为
(2)有文件的打开和载入
(3)系统在退出时,要有相应的提示
3.3性能
要求性能基本稳定,可完成相应的功能要求,有部分的容错处理,良好的用户交互设计。
3.4输人项
用户信息:
用户名,用户类型,用户密码
职工基本信息:
如工资卡号、身份证号、姓名、性别、年龄、工龄、部门、技术职称、技术职称编号、家庭电话号码、手机号码等。
工资基础信息:
技术职称编号、技术职称、基本工资、职务工资、各种补助等。
费用扣除信息:
工资卡号、水费、电费、清洁费(5元/月)、闭路电视费(10元/月)等。
工资单数据:
工资卡号、姓名、应发工资、水费、电费、清洁费、闭路电视费、税金、实发工资、特别奖励。
其中包括string类型,int类型,double型,char[]型。
3.5输出项
输出各种运行结果,以及磁盘中文件的保存。
3.6算法
登录进度条算法,包括密码*号回显算法,选择排序算法,循环查找算法,循环遍历链表及向量算法,文件读写算法等。
3.7流程逻辑
程序定义类及方法如下:
类名:
User
属性:
userName用户名
passWord登陆密码
userType用户类型
方法:
changePwd(String)更改密码
lookup()查询信息
类名:
SalaryManager基类:
User
方法:
Stat()统计
Sort()排序
editEmployInfo(SalaryTable)编辑员工信息
save()保存
类名:
Employee基类:
User
属性:
salaryId,工资卡号
IDCarad,身份证号
name,姓名
sex,性别
age年龄
wAge工龄
department部门,
pos职位,
posId职位号,
homeTel家庭电话,
mobilePhone手机
方法:
getInfo();返回信息
getSalaryTable();返回薪水表
changeHomeTel();更改家庭电话号码
changeMobilePhone()更改手机号码
类名:
SystemManager
方法:
createUser(string,string,string)创建员工
editSalaryTable(SalaryTable)编辑员工表
creatEmpyInfo()创建员工信息
类名:
SalaryInfo
属性:
positionId,
position,
baseSalary,
bSalary,
subsidy
类名SalaryTable
属性:
salaryId,
name,
allSalary,
Deducted,
tax,
prize
方法:
save()
caluteSalary()
类名:
Deducted
属性:
salaryId,
waterFee,
electricFee,
cleanFee,
TVFee
classInforNode
{
public:
Employeeemployee;//员工基本信息
Deducteddeducted;//各种扣除费用信息
SalaryInfosalaryinfo;//工资信息
Salarysalary;//工资体系
InforNode();
~InforNode();
};
voidinitEmployee(InforNode*);
voidinitDeducted(InforNode*);
voidinitSalaryInfo(InforNode*);
voidinitSalary(InforNode*);
voidreadInfo()//文件读
voidsaveInfo()//文件写
3.8接口
各个层次界面进入以及返回,设计应该详细直观,按照3.7流程逻辑严格设计。
3.9存储分配
考虑链表,向量,数组,字符串,双精度浮点的内存存储,以及外部磁盘文件的存储!
3.10注释设计
需要注意一下几点:
a.加在模块首部的注释;
b.加在各分枝点处的注释;
c.对各变量的功能、范围、缺省条件等所加的注释;
d.对使用的逻辑所加的注释等等。
3.11限制条件
本程序运行中很少有所受到的限制条件。
3.12测试计划
包括对测试的技术要求、输入数据、预期结果、进度安排、人员职责、设备条件驱动程序及桩模块等的规定。
总结报告
1、项目分析
1.1项目实现的功能点
(1)系统必须是菜单操作方法,进入功能必须打开菜单,并且每个菜单都有相应的帮助,菜单之间能够灵活的切换。
用户分三种权限:
一般的员工用户,员工工资管理员,系统管理员。
(2)根据登陆方式,选择相应的操作方式;
a)如果是一般的员工用户(默认权限为r即只读),就只能按照各种方式查看数据,并且只能查看自己的信息和工资情况,并且可以网上修改自己的信息等等功能;
b)如果是员工工资管理员,除了可以查看数据外还能编辑员工基本信息数据。
C)如果是系统管理员,他可以拥有员工工资管理员的所有功能,并且可以创建用户,并且可以修改员工的工资体系和大小
系统初始化系统管理员(用户名:
root,密码:
)。
(3)能够对员工基本信息、工资的基本信息、工资的扣除费用信息进行统计。
(4)员工基本信息、工资的基本信息、工资的扣除费用信息存储在相应的文件中。
一切操作依赖与链表与向量。
(5)登录的用户名和密码应该存储在单独的文件中,暂时无加密算法。
(6)统计功能:
A)统计所有公司员工信息。
B)统计各部门员工信息。
C)统计所有员工工资TOP10
D)统计所有员工扣除费用TOP10。
E)统计各职务工资信息。
(7)查找功能
A).按员工姓名查找
B)按工资卡号查找
C)按身份证号查找
D)按公司部门查找
E)按技术职称查找
(8)排序功能
A)可以根据员工的实得工资排序。
B)可以根据员工的职务工资排序。
C)可以根据员工的扣除工资排序。
D)可以根据员工的交税信息排序。
E)可以根据员工的姓名排序。
F)可以根据员工的职务排序。
(8)系统的操作
A)系统在退出时自动保存、登录时自动读取磁盘文件。
B)有文件的打开和载入
C)系统在退出时,询问是否退出并保存
(9)系统界面友好,易操作。
1.2项目采用的技术路线,支持软件
采用Dos操作界面、菜单方式
MicrosoftVisualC++6.0软件开发
WindowsXP操作系统
1.3系统整体框架图
2概要设计
2.1项目包含模块
菜单模块:
主要有登录主界面,登录界面,普通员工界面,工资管理员登录界面、系统管理员登录界面.通过用户的不同选择进行交互.
功能:
实现不同级菜单之间的显示和相互之间的界面切换功能.
用户模块:
功能:
集合了用户创建,查询用户信息,修改用户信息等功能。
密码模块:
功能:
集合了密码输入保护,密码检验等功能.
查找模块
功能:
集合了按照可以根据员工的姓名查找、根据工资卡号查找、根据身份证号查找、根据部门查找、根据技术职称查找等一系列的查找贡功能。
排序模块:
功能:
集合了根据员工的基本工资排序、根据员工的职务工资排序、根据员工的扣除工资排序、根据员工的交税信息排序、根据员工的姓名排序、根据员工的职务排序等一系列的排序功能。
统计模块
功能:
集合了统计所有公司员工信息、统计各部门员工信息、统计所有员工工资TOP10、统计所有员工扣除费用TOP10、统计各职务工资信息等一系列的排序功能
编辑模块
功能:
实现员工信息的编辑、账单编辑、工资编辑、各种费用的编辑。
添加删除用户模块
功能:
实现普通用户和工资管理的添加。
2.2项目包含类
User用户类:
SystemManager系统管理员类:
SalaryManager工资管理员类:
Deducted费用扣除类:
SalaryInfo 薪水信息类
2.3项目包含结构体
用户信息:
User
普通员工信息:
Employee
工资管理员信息:
SalaryManager
账单信息:
Debuted
薪水信息:
SalaryInfo
薪水表信息:
Salary
文件的组织结构:
说明:
将数据转化为二进制存入文件中,读出时再自动将二进制转化为正常数据.
3.详细设计
3.1实现算法
选择排序算法时间,空间复杂度:
最坏情况是待排序记录关键字的逆序排列,此时每一趟选择排序需进行i次比较,3i次移动。
经过n-1趟选择排序后,总的比较次数为:
n(n-1)/2,总的移动次数为次2n(n-1)/2,因此该算法的时间复杂度为
,空间复杂度为O
(1)。
另外,选择排序法是一种效率较高的排序方法。
3.2主要函数及作用
关于文件读取:
voidreadInfo()//进入系统时从各文件中读入数据到全局链表中
voidsaveInfo()//退出系统前保存当前链表到文件
关于用户:
voidinitInfo(InforNode*aNewEmployee)//初始新用户信息
voidcreatNewUser()//创建新用户及其信息
关于登录:
stringemplogin()//用于普通员工登录
stringsalalogin()//用于工资管理员登录
intsyslogin()//用于系统管理员登录
关于功能:
intstatInfo()//统计员工信息
IntmanagerSearch()//管理员查找
IntmanagerSort()//管理员排序
IntsmCheck()//管理员查看
IntsmEdit()//管理员编辑
4.测试分析
4.1黑盒测试
4.1.1目的
本方案主要实施产品程序代码的黑盒测试。
保证软件的功能能正常进行,保证用户可以安全、快捷进行操作。
4.1.2测试项
软件的各部分的功能
4.1.5测试依据
工资体系表:
扣除费用表:
用户登录表
工资信息表:
员工基本信息表:
4.1.6测试环境配置
1.测试工具:
Microsoftvisualstudio6.0
2.软件环境:
操作系统window-xp
3.资源文件:
职工工资管理系统V1.0测试版
4.2测试步骤
登陆功能:
良好
文件操作功能:
良好
普通员工查询个人信息功能:
良好
普通员工修改个人密码功能:
有待改善
工资管理员统计员工信息:
良好
工资管理员查找员工信息:
良好
工资管理员对员工信息进行排序:
良好
工资管理员对员工信息进行编辑:
密码修改功能需要升级
系统管理员统计员工信息:
良好
系统管理员查找员工信息:
良好
系统管理员对员工信息进行排序:
良好
系统管理员对员工信息进行编辑:
密码修改功能需要升级
系统管理员创建用户功能:
良好
系统管理员更新工资体系功能:
良好
各级之间返回调用功能:
良好
退出并保存功能:
良好
4.3问题及解决方案
问题1:
密码没有进行加密存储,导致安全性能下降!
解决方法:
采用一定的加密算法,用加密过的信息来存储文件,读取时解密即可!
问题2:
各项信息的输入没有长度和类型限制,以至于在不知情的情况下无法输入正确的信息长度和类型。
解决方法:
对信息输入部分做一定的限制并加以异常和容错处理,提示用户用什么样的输入增加程序的健壮性。
问题3:
比较字符串属性值时,大多数采用的是“==”,这会导致一些不必要的逻辑错误。
解决方法:
使用字符型比较函数strcmp(str1,str2)若相等,则值为0。
问题4:
修改密码功能不够完善,用户只需输入一次即可更改,安全性差。
解决方法:
对该方法进行升级,作出更有效的密码更改体系。
4.4白盒测试
4.4.1目的
本方案主要实施产品程序代码的白盒测试。
使界面符合设计规范,适用于用户;保证程序创建的类与接口的完整与正确,以及程序模块单独正常运行。
保证局部模块功能完备性,运行正确性与稳定性。
4.4.2测试项
所要测试的类。
如:
Classuser,classEmployee,classSalaryManager,classSystemManager.
所要测试的结构
ClassInfoNode//节点信息
{
Employeeemployee;//员工基本信息
Deducteddeducted;//各种扣除费用信息
SalaryInfosalaryinfo;//工资信息
Salarysalary;//工资体系
}
所要测试的函数
VoidreadInfo(),voidsaveInfo(),voidinitInfo(),voidcreatNewUser(),intstatInfo(),intmanagerSearch(),intmanagerSort(),intsmEdit()等等
4.4.3通过的准则
1.界面测试通过的标准:
界面的样式、大小、整体布局的设置;
各种标签控件的使用及主题描述以及事件源控件的使用。
2.程序代码通过的标准:
创建的类、接口、方法、属性应与详细设计保持一致;
程序的各种命名、注释、代码行的格式等应符合命名标准和编码规范;
程序模块能独立稳定运行。
4.6静态测试,走查代码
没有太大问题。
4.7动态测试
●界面初始化状态良好;
●界面控件功能测试良好;
●业务功能测试良好;
●数据传递和接收一致,数据计算或处理后状态正确;
●组合模块整体运行稳定,未出现死机;
4.8确定问题属性
分为四类:
错误、缺陷、失效、故障
5.系统仿真
程序启动界面………
主界面,不同用户通过1-5号键选择进入界面。
1,3,4号键对应相应的操作,简单提示。
5号键推出系统。
输入错误会有自动提示。
选择2号键,进入选择用户登录主界面。
选择1号键,提示输入某员工用户名及密码。
登录后界面,可通过选择1-4来进行操作。
选择1,可查看自己的所有信息
选择2,可修改自己的密码。
返回后进入工资管理员界面,可进行所以员工信息查询及信