高校工资管理系统1.docx
《高校工资管理系统1.docx》由会员分享,可在线阅读,更多相关《高校工资管理系统1.docx(24页珍藏版)》请在冰豆网上搜索。
高校工资管理系统1
《软件开发方法》作业
高校工资管理系统
学 院:
信息工程学院
班 级:
计科0601
学 号:
061106128
姓 名:
王银玉
1、背景材料-----------------------------------------------------3
1.1、编写目的----------------------------------------------3
1.2、背景--------------------------------------------------3
2、问题描述-----------------------------------------------------3
3、功能定义-----------------------------------------------------4
3.1、功能描述----------------------------------------------4
3.2、系统目标----------------------------------------------4
3.3、对软件功能的结论--------------------------------------4
4、测试环境-----------------------------------------------------5
5、用例图-------------------------------------------------------5
6、类图---------------------------------------------------------7
7、合作图-------------------------------------------------------8
8、时序图-------------------------------------------------------9
9、具体实现-----------------------------------------------------10
9.1、功能分析------------------------------------------------10
9.2、流程分析-------------------------------------------------10
9.3、常量定义-------------------------------------------------11
9.4、源代码--------------------------------------------------11
一、背景材料
1、编写目的
编写该文档是为了分析人工管理高校工资的流程,把人工模式抽象为可在计算机上处理的自动模式,对高校工资的科学管理进行分析与总结,便于大家对系统整体功能的认识,通过该文档,确定了系统的目的和功能,以及管理的流程和方法,同时也为大家提供参考。
2、背景
随着高等学校的快速发展,高校规模越来越大,教职工的数量也越来越多,高校工资管理更加的复杂,而工资管理是一项琐碎、复杂而又十分细致的工作,工资计算、发放、核算的工作量很大,一般不允许出错,如果实行手工操作,每月发放工资须手工填制大量的表格,这就会耗费工作人员大量的时间和精力,计算机进行工资发放工作,不仅能够保证工资核算准确无误、快速输出,而且还可以利用计算机对有关工资的各种信息进行统计,服务于财务部门其他方面的核算和财务处理,同时计算机具有着手工管理所无法比拟的优点.例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高人事工资资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
这就对高校工资管理提出了新的要求,用计算机管理系统来管理高校工资已经成为目前的趋势,使用计算机可以高速,快捷地完成以上工作。
在计算机联网后,数据在网上传递,可以实现数据共享,避免重复劳动,规范数据管理行为,从而提高了管理效率和水平。
高校工资管理系统便是以计算机为工具,通过对工资管理所需的信息管理,不仅把管理人员从繁琐的数据计算处理中解脱出来,而且优化了管理体系,使其高效化,简易化,智能化,也提高了透明度和互动性。
二、问题描述
现一高校有五类职工:
教师、实验员、行政人员、教师兼职实验员、行政人员兼职教师。
为了实现工资发放的自然功能。
现要求编写程序来自动完成此功能。
同时注意生成的相关数据结果以文件方式存放在硬盘中。
程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),如若有职工由于工作调动,则可进行对应的删除动作。
相关信息:
每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:
其中工资的基本构成如下:
教师:
基本工资+课时费;
实验员:
基本工资+实验室补助;
行政人员:
基本工资+行政补贴;
教师兼职实验员:
基本工资+课时费+实验室补助;
行政人员兼职教师:
基本工资+行政补贴+课时费;
其中:
课时费:
教师每一学期的基本工作量为120,实验员每学期的基本工作量为70,行政人员没有基本工作量,每节课时费为20元;课时费=(上学期工作量—基本工作量)*20;
注意:
1、如果上学期基本工作量没完成,则其(上学期工作量—基本工作量)*20为负值。
;
2、基本工资:
教师800元,实验员650元,行政人员750元;
3、行政补贴:
250元;
4、实验室补助:
150元。
三、功能定义
1、功能描述:
(1)员工基本信息的录入,修改,删除。
(2)工资标准设定功能。
具体包括职务工资,职称工资以及其它工资标准的设定。
(3)工资信息浏览。
(4)员工工资表创建。
(5)工资调整管理。
(6)工资统计。
(7)用户级别设定以及口令修改。
为完善系统管理功能,增加工资系统用户管理功能,包括系统用户数据的天价,修改和删除。
教职员工为系统普通用户,只能运行系统个人工资查询功能;系统管理员则能运行系统所有功能,从而有效保证系统数据的安全性。
2、系统目标
本系统的设计目标是能够对教职员工的基本信息和工资信息进行添加和修改,根据个人信息将工资分为职务工资,职称工资和其他工资。
能够调整工资标准和员工信息,也能够调整其他工资项目,根据需要对教职员工基本信息和工资信息的查询,本系统能够生成各个月的工资表,能够打印报表方便保存和管理,还包括对系统的一些基本操作功能,比如为完善系统管理功能,增加工资系统用户管理功能,系统应该包括系统用户数据的添加,修改和删除。
教职员工为系统普通用户,只能运行系统个人工资查询功能;系统管理员则能运行系统所有功能,从而有效保证系统数据的安全性,系统应该具有简单,易用,小巧,经典的特色,应该能够对高校工资管理进行优化,使其系统化,高效化,智能化。
并保证工资管理的准确性,简易性,为学校财务人员提供便利。
3、对软件功能的结论
高校工资管理的特点,经过模块化的分析得到高校工资管理系统功能模块的划分,本系统包括用户管理模块、员工信息管理模块、工资标准设定模块、工资信息管理模块。
各个模块的功能描述:
用户管理模块:
制定用户的管理级别,管理级别分为管理员和教职员工两类。
他们的操作权限不同,管理员是财务部门人员,可以对系统进行一切操作,而教职员工只能进行查询和打印。
另外在这个模块中也应该包含添加用户、修改用户信息、修改口令等。
员工信息管理模块:
实现对教职员工基本信息的输入、修改、删除、查询。
在高校管理中按照学院对信息进行管理。
工资标准设定模块:
实现对职务工资标准、职称工资标准、其他工资标准的设定、修改、删除、保存功能。
而工资标准的依据恰好与教职员工的基本信息相一致,形成对应关系。
工资信息管理模块:
实现工资表的生成、个人工资查询、工资修改、工资结算、工资统计以及工资表打印等功能。
其中按月生成工资表,保存在数据库中。
另外,在本高校工资管理系统中,还包括帮助文件的制作,要求有较为完善的帮助文件,使用说明供用户参考。
四、测试环境
硬件环境:
CPU型号为PentiumⅢ以上,内存128M以上。
系统环境:
Windows98以上的系统均可。
开发工具:
Delphi7.0
软件的使用条件和限制:
不同的管理级别有不同的操作权限。
五、用例图
简要说明:
用户管理模块:
制定用户的管理级别,管理级别分为管理员和教职员工两类。
他们的操作权限不同,管理员是财务部门人员,可以对系统进行一切操作,而教职员工只能进行查询和打印。
另外在这个模块中也应该包含添加用户、修改用户信息、修改口令等。
员工信息管理模块:
实现对教职员工基本信息的输入、修改、删除、查询。
在高校管理中按照学院对信息进行管理。
工资标准设定模块:
实现对职务工资标准、职称工资标准、其他工资标准的设定、修改、删除、保存功能。
而工资标准的依据恰好与教职员工的基本信息相一致,形成对应关系。
工资信息管理模块:
实现工资表的生成、个人工资查询、工资修改、工资结算、工资统计以及工资表打印等功能。
其中按月生成工资表,保存在数据库中。
6、类图
Salarymanage
systermclass
Salarymanageclass
Salarystandardclass
Systermuserclass
Staffinformationclass
Staffand
usermember
简要说明:
类的抽取:
实体类----工资信息管理类;工资标准设定类
边界类:
工资管理系统类;工资信息类
控制类:
系统用户类
系统用户类对教职员工的基本信息和工资信息进行添加和修改,根据个人信息将工资分为职务工资,职称工资和其他工资。
工资管理系统类能够调整工资标准和员工信息,也能够调整其他工资项目,根据需要对教职员工基本信息和工资信息的查询,工资信息管理类生成各个月的工资表,能够打印报表方便保存和管理,还包括对系统的一些基本操作功能.
7、合作图
Salarymanage
systermclass
Salarymanageclass
Salarystandardclass
Systermuserclass
Staffinformationclass
Staffand
usermember
1、管理员信息设置
6、员工信息添加、修改、删除
4、各项工资标准设立
2、工资创建、修改、结算、统计
3、工资统计信息反馈
5、工资标准反馈
7、员工信息反馈
8、管理员管理状况反馈
简要说明:
在工资管理系统类中,通过对管理员信息的设置实现管理员的身份审核,并通过管理员的认可实现员工身份的认证,在系统用户类中通过对工资信息类的调用实现每个员工的工资表的生成、个人工资查询、工资修改、工资结算、工资统计以及工资表打印等功能。
在工资标准设定类中可以实现对职务工资标准、职称工资标准、其他工资标准的设定、修改、删除、保存功能。
而工资标准的依据恰好与教职员工的基本信息相一致,形成对应关系。
通过工资统计信息和工资标准的反馈使得员工系统更加完善.若要对员工信息进行添加,修改,删除等操作可以通过修改员工信息类实现,经正确反馈后便设置成果.最后一切不论是对员工信息的设置或对工资信息的设置都应最终反馈至管理系统类,实现统一管理.
8、
Staffmember
Staffinformationclass
Salarymanageclass
Systermuserclass
Salarymanagesystermclass
Usermember
Salarystandardclass
8.管理员管理状况反馈
7.员工信息反馈
6.员工信息添加、修改、删除
5.工资标准反馈
4.各项工资标准设立
3.工资统计信息反馈
2.工资创建、修改
1.管理员信息设置
时序图
简单说明:
工资管理系统类进行管理员信息的设置以后可以进入系统用户类也即员工类,在员工类界面中通过工资的创建和设置实现工资管理类的实现,且工资管理类应把设置完毕的工资信息反馈给员工类,工资标准类是工资设置的标准,以方便员工类把工资标准参数传递到工资管理类中,实现类的调用.在员工类中不仅可以对工资类进行操作也可以对员工的信息进行变更,从而实现员工个人信息和工资信息的匹配.
九、具体实现
1、功能分析
工资管理系统软件是为一个单位进行员工的工资构成及管理进行辅助的应用软件,工资管理是一个公司最基本的一项财务管理,需要为用户提供一个简单的人机界面以便操作,本程序利用双链表结构存储数据,完成工资管理,在我的基本功能模块如图所示:
主程序(voidmain()):
用于联系各功能函数以及推出应用程序。
用户登入(voidmima()):
根据用户输入的用户名和密码判断是否允许该用户使用本
初始化(voidinit()):
把链表初始化,使其链表为空,即头指针和尾指针都为空(NULL)。
输入数据即创建链表(voidcreate()):
用户根据提示输员编号(no)、姓名(name)、基本工资(jbgz)。
系统将员工工资信息记录存储在系统磁盘的文件中,以便进行管理、查找和备份等。
显示所有数据(voidlist()):
用于显示磁盘文件中的所有信息,以便用户对员工工资信息状况有较为直观方便的了解。
由于在磁盘存储的员工工资文件可能有多个,所以提示用户要浏览的具体文件名,显示员工工资状况及各项工资构成,以便工资发放管理。
现实单条显示(voidprint(SALARY*p)):
为所有显示和查询提供输出函数。
2、流程分析
运行工资管理程序,首先进入用户登录界面提示用户书录用户名和密码,只有当用户名和密码相匹配时,才允许用户使用该系统。
接着进入光带菜单,光标定位在菜单的第一项,并以不同与背景的颜色显示,通过键盘上的光标上下移动键选中菜单,按回车键后进入相应的功能函数运行相应数据处理。
如果选着初始化,则计算机自动初始化。
如果选着建立链表,则进入了另一个界面,用户根据提示输员编号(no)、姓名 ( name)、基本工资(jbgz)。
输入每行用i记录一次,直到i=9时,进入下一个界面。
以“@”为结束符,结束后返回主菜单,接受下一个命令。
如果选着显示所有数据,则也进入新的界面,把所有信息都显示出来,也用i记录输出行数,到满屏幕时即i=9,等待接受一个字符,按任意键后,接着输出下面的数据,直到最后,再接受任意键,返回主菜单并提示不要忘记保存。
如果选着单条显示,则也进入新的一个界面,输出第一个人的工资信息,并提示以下信息:
“0。
退出1。
前驱2。
后继 3。
第一条4。
最后一条 提示输入菜单选项0~4:
”计算机等待提示信息,如选0则直接退出进入主菜单;如选1则接着显示前一个人的信息,当是第一个时,不做改动;如选2则接着显示后一个人的信息,当是最后一个时,也不做改动;如选3就显示第一个人的信息;如选4就显示最后一个人的信息。
流程图见附录一。
原程序见附录三。
3、常量定义
#infineNULL0
1、头文件#include"stdio.h" /*I/O函数*/#include"bios.h" /*ROM基本输入输出函数*/#include"dos.h" /*dos接口函数*/#include"conio.h" /*屏幕操作函数*/#include"stdlib.h" /*其它说明*/#include"string.h" /*字符串函数*/#include"mem.h" /*内存操作函数*/#include"ctype.h"/*字符操作函数*/#include"alloc.h" /*动态地址分配函数*/
2、函数申明
voidinit(); /*初始化*/voidcreate(); /*创建链表*/voidcalc(); /*计算应发工资*/voiddelete();/*删除*/voidsearch();/*查找*/voidsave(); /*保存文件*/voidload(); /*读取文件*/voidcomputer();/*计算所需各种票面张数*/voidinsert(); /*插入*/voidappend();/*追加*/voidcopy();/*复制文件*/voidsort(); /*排序*/voidindex(); /*索引*/voidtotal(); /*分类合计*/voidlist();/*显示所有数据*/voidprint(SALARY*p); /*输出单条记录*/voiddisplay(); /*随意逐条显示*/floatfax(floatx); /*计算税金*/intmenu_select(); /*主菜单*/voidmima();
4、源代码
#include
#include
classPerson //人员类(抽象类)
{
protected:
doublenum; //编号
charName[20]; //姓名
intDuty; //人员类别标志(1-教师,2-实验员,3-行政人员,4-教师兼实验员,5-行政兼教师)
doubleSalary; //基本工资
Person*next; //指针域
public:
Person() //基类构造
{
next=0; //指针域设置为空
}
virtual~Person() //基类虚析构
{
}
virtualvoidInput()=0; //从键盘输入数据
virtualvoidInput(ifstream&ifs)=0; //从文件输入数据
virtualvoidOutput()=0; //向屏幕输出数据
virtualvoidOutput(ofstream&ofs)=0; //向文件输出数据
virtualdoubleIncoming()=0; //计算收入
friendclassCollege;
};
classTeacher:
virtualpublicPerson //教师类
{
protected:
intHours; //教师课时
public:
//为对象设置数据分为两种途径,通过1)构造函数,2)一般成员函数
//分开可以使得程序中应用更加灵活
//本程序采用:
缺省构造+Input()
Teacher() //构造函数,初始化部分数据
{
Duty=1;
Salary=800;
}
voidInput() //键盘补充输入其它数据
{
cout<<"\n编号:
"; cin>>num;
cout<<"\n姓名:
"; cin>>Name;
cout<<"\n教师上学期课时:
"; cin>>Hours;
Salary=Incoming();
}
voidInput(ifstream&ifs)
{
ifs>>num>>Name>>Duty>>Hours>>Salary;
}
voidOutput()
{
cout< }
voidOutput(ofstream&ofs)
{
ofs< }
doubleIncoming()
{
if(Hours>120)
returnSalary+(Hours-120)*20;
else
returnSalary;
}
};
classAssistant:
virtualpublicPerson //实验员
{
protected:
intAllowance;
intHours;
public:
Assistant()
{
Duty=2;
Salary=650;
Allowance=150;
}
voidInput()
{
cout<<"\n编号:
"; cin>>num;
cout<<"\n姓名:
"; cin>>Name;
cout<<"\n实验员上学期实验课时:
"; cin>>Hours;
Salary=Incoming();
}
voidInput(ifstream&ifs)
{
ifs>>num>>Name>>Duty>>Hours>>Salary;
}
voidOutput()
{
cout< }
voidOutput(ofstream&ofs)
{
ofs< }
doubleIncoming()
{
if(Salary>70)
returnSalary+Allowance+(Hours-70)*20;
else
returnSalary+Allowance;
}
};
classManager:
virtualpublicPerson //行政人员
{
protected:
intAllowance;
public:
Manager()
{
Duty=3;
Salary=750;
Allowance=250;
}
voidInput()
{
cout<<"编号:
"; cin>>num;
cout<<"姓名:
"; cin>>Name;
Salary=Incoming();
}
voidInput(ifstream&ifs)
{
ifs>>num