




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件开发方法作业高校工资管理系统学院:信息工程学院 班级:计科0601 学号:061106128 姓名:王银玉 目 录1、背景材料-3 1.1、编写目的-3 1.2、背景-32、问题描述-33、功能定义-4 3.1、功能描述-4 3.2、系统目标-4 3.3、对软件功能的结论-44、测试环境-55、用例图-56、类图-77、合作图-88、时序图-99、具体实现-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以上的系统均可。 开发工具:Delphi 7.0 软件的使用条件和限制:不同的管理级别有不同的操作权限。五、用例图 简要说明:用户管理模块:制定用户的管理级别,管理级别分为管理员和教职员工两类。他们的操作权限不同,管理员是财务部门人员,可以对系统进行一切操作,而教职员工只能进行查询和打印。另外在这个模块中也应该包含添加用户、修改用户信息、修改口令等。员工信息管理模块:实现对教职员工基本信息的输入、修改、删除、查询。在高校管理中按照学院对信息进行管理。工资标准设定模块:实现对职务工资标准、职称工资标准、其他工资标准的设定、修改、删除、保存功能。而工资标准的依据恰好与教职员工的基本信息相一致,形成对应关系。工资信息管理模块:实现工资表的生成、个人工资查询、工资修改、工资结算、工资统计以及工资表打印等功能。其中按月生成工资表,保存在数据库中。6、 类图简要说明:类的抽取:实体类-工资信息管理类;工资标准设定类 边界类:工资管理系统类;工资信息类 控制类:系统用户类系统用户类对教职员工的基本信息和工资信息进行添加和修改,根据个人信息将工资分为职务工资,职称工资和其他工资。工资管理系统类能够调整工资标准和员工信息,也能够调整其他工资项目,根据需要对教职员工基本信息和工资信息的查询,工资信息管理类生成各个月的工资表,能够打印报表方便保存和管理,还包括对系统的一些基本操作功能.7、 合作图简要说明:在工资管理系统类中,通过对管理员信息的设置实现管理员的身份审核,并通过管理员的认可实现员工身份的认证,在系统用户类中通过对工资信息类的调用实现每个员工的工资表的生成、个人工资查询、工资修改、工资结算、工资统计以及工资表打印等功能。在工资标准设定类中可以实现对职务工资标准、职称工资标准、其他工资标准的设定、修改、删除、保存功能。而工资标准的依据恰好与教职员工的基本信息相一致,形成对应关系。通过工资统计信息和工资标准的反馈使得员工系统更加完善.若要对员工信息进行添加,修改,删除等操作可以通过修改员工信息类实现,经正确反馈后便设置成果.最后一切不论是对员工信息的设置或对工资信息的设置都应最终反馈至管理系统类,实现统一管理.8、 时序图Staff memberStaff information classSalary manage classSysterm user classSalary manage systerm classUser memberSalary standard class8管理员管理状况反馈7员工信息反馈6员工信息添加、修改、删除5工资标准反馈4各项工资标准设立3工资统计信息反馈2工资创建、修改1.管理员信息设置简单说明: 工资管理系统类进行管理员信息的设置以后可以进入系统用户类也即员工类,在员工类界面中通过工资的创建和设置实现工资管理类的实现,且工资管理类应把设置完毕的工资信息反馈给员工类,工资标准类是工资设置的标准,以方便员工类把工资标准参数传递到工资管理类中,实现类的调用.在员工类中不仅可以对工资类进行操作也可以对员工的信息进行变更,从而实现员工个人信息和工资信息的匹配. 九、具体实现1、功能分析 工资管理系统软件是为一个单位进行员工的工资构成及管理进行辅助的应用软件,工资管理是一个公司最基本的一项财务管理,需要为用户提供一个简单的人机界面以便操作,本程序利用双链表结构存储数据,完成工资管理,在我的基本功能模块如图所示: 主程序(void main():用于联系各功能函数以及推出应用程序。用户登入(void mima():根据用户输入的用户名和密码判断是否允许该用户使用本初始化(void init()):把链表初始化,使其链表为空,即头指针和尾指针都为空(NULL)。输入数据即创建链表(void create()):用户根据提示输员 编号(no)、 姓名(name)、基本工资(jbgz)。系统将员工工资信息记录存储在系统磁盘的文件中,以便进行管理、查找和备份等。显示所有数据(void list()):用于显示磁盘文件中的所有信息,以便用户对员工工资信息状况有较为直观方便的了解。由于在磁盘存储的员工工资文件可能有多个,所以提示用户要浏览的具体文件名,显示员工工资状况及各项工资构成,以便工资发放管理。现实单条显示(void print(SALARY *p)):为所有显示和查询提供输出函数。2、流程分析运行工资管理程序,首先进入用户登录界面提示用户书录用户名和密码,只有当用户名和密码相匹配时,才允许用户使用该系统。接着进入光带菜单,光标定位在菜单的第一项,并以不同与背景的颜色显示,通过键盘上的光标上下移动键选中菜单,按回车键后进入相应的功能函数运行相应数据处理。如果选着初始化,则计算机自动初始化。如果选着建立链表,则进入了另一个界面,用户根据提示输员 编号(no)、 姓名 ( name )、基本工资( jbgz )。输入每行用i记录一次,直到i=9时,进入下一个界面。以“”为结束符,结束后返回主菜单,接受下一个命令。如果选着显示所有数据,则也进入新的界面,把所有信息都显示出来,也用i记录输出行数,到满屏幕时即i=9,等待接受一个字符,按任意键后,接着输出下面的数据,直到最后,再接受任意键,返回主菜单并提示不要忘记保存。如果选着单条显示,则也进入新的一个界面,输出第一个人的工资信息,并提示以下信息:“ 0。退出1。前驱2。后继 3。第一条4。最后一条提示输入菜单选项04:”计算机等待提示信息,如选0则直接退出进入主菜单;如选1则接着显示前一个人的信息,当是第一个时,不做改动;如选2则接着显示后一个人的信息,当是最后一个时,也不做改动;如选3就显示第一个人的信息;如选4就显示最后一个人的信息。流程图见附录一。原程序见附录三。3、常量定义#infine NULL 01、头文件#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、函数申明void init(); /*初始化*/void create(); /*创建链表*/void calc(); /*计算应发工资*/void delete(); /*删除*/void search(); /*查找*/void save(); /*保存文件*/void load(); /*读取文件*/void computer(); /*计算所需各种票面张数*/void insert(); /*插入*/void append(); /*追加*/void copy(); /*复制文件*/void sort(); /*排序*/void index(); /*索引*/void total(); /*分类合计*/void list(); /*显示所有数据*/void print(SALARY *p); /*输出单条记录*/void display(); /*随意逐条显示*/float fax(float x); /*计算税金*/int menu_select(); /*主菜单*/void mima();4、源代码#include #include class Person /人员类(抽象类)protected: double num; /编号 char Name20; /姓名 int Duty; /人员类别标志(1-教师,2-实验员,3-行政人员,4-教师兼实验员,5-行政兼教师) double Salary; /基本工资 Person *next; /指针域public: Person() /基类构造 next=0; /指针域设置为空 virtual Person() /基类虚析构 virtual void Input()=0; /从键盘输入数据 virtual void Input(ifstream& ifs)=0; /从文件输入数据 virtual void Output()=0; /向屏幕输出数据 virtual void Output(ofstream& ofs)=0; /向文件输出数据 virtual double Incoming()=0; /计算收入 friend class College;class Teacher:virtual public Person /教师类protected: int Hours; /教师课时public: /为对象设置数据分为两种途径,通过1)构造函数,2)一般成员函数 /分开可以使得程序中应用更加灵活 /本程序采用:缺省构造+Input() Teacher() /构造函数,初始化部分数据 Duty=1; Salary=800; void Input() /键盘补充输入其它数据 coutnum; coutName; coutHours;Salary=Incoming(); void Input(ifstream& ifs) ifsnumNameDutyHoursSalary; void Output() coutnumtNametDutytHourstSalarytendl; void Output(ofstream& ofs) ofsnumtNametDutytHourstSalaryt120) return Salary+(Hours-120)*20;elsereturn Salary; ;class Assistant:virtual public Person /实验员protected: int Allowance; int Hours;public: Assistant() Duty=2; Salary=650; Allowance=150; void Input() coutnum; coutName; coutHours;Salary=Incoming(); void Input(ifstream& ifs) ifsnumNameDutyHoursSalary; void Output() coutnumtNametDutytHourstSalarytendl; void Output(ofstream& ofs) ofsnumtNametDutytHourstSalaryt70)return Salary+Allowance+(Hours-70)*20;elsereturn Salary+Allowance; ;class Manager:virtual public Person /行政人员protected: int Allowance;public: Manager() Duty=3; Salary=750; Allowance=250; void Input() coutnum; coutName; Salary=Incoming(); void Input(ifstream& ifs) ifsnumNameDutySalary; void Output() coutnumtNametDutyttSalarytendl; void Output(ofstream& ofs) ofsnumtNametDutytSalarytendl; double Incoming() return Salary+Allowance; ;class Teacher_Assistant:public Teacher,public Assistant /教师兼实验员public: Teacher_Assistant() Duty=4; Teacher:Salary=800;Assistant:Allowance=150; void Input() coutnum; coutName; coutTeacher:Hours; Salary=Incoming(); void Input(ifstream& ifs) ifsnumNameDutyTeacher:HoursSalary; void Output() coutnumtNametDutytTeacher:Hours tSalaryendl; void Output(ofstream& ofs) ofsnumtNametDutytTeacher:Hourst Salaryt120) return Salary+(Teacher:Hours-120)*20 +Allowance; else return Salary+Allowance; ;class Manager_Teacher:public Manager,public Teacher /行政人员兼教师public: Manager_Teacher() Duty=5; Manager:Salary=750; void Input() coutnum; coutName; coutHours;Salary=Incoming(); void Input(ifstream& ifs) ifsnumNameDutyHoursSalary; void Output() coutnumtNametDutytHourstSalarytendl; void Output(ofstream& ofs) ofsnumtNametDutytHourstSalarytendl; double Incoming() return Manager:Salary+Allowance+Hours*20; ;class Collegeprivate: Person *PL; void Clear(); int College:Cfind(int ID,Person *p1,Person *p2);public: College(); /构造 College(); /析构 void Add(); /增加职工 void Delete(); /删除职工 void Modify(); /修改职工 void Print(); /输出职工信息 void Save(); /职工信息存盘 void Load(); /职工信息装入 void Find(); /查找 void Build(); /导引 void Stat(); /统计;College:College() /构造函数(创建1个头结点的链表) Person *p=new Teacher; PL=p; coutnext; delete p; p=PL; PL=0;void College:Add() /增加职工char c;do coutnext)p=p-next; int ch; coutch; /创建新结点,录入数据,连接到链表 Teacher *pt; Assistant *pa; Manager *pm; Teacher_Assistant *pta; Manager_Teacher *pmt; switch(ch) case 1: pt=new Teacher; pt-Input(); p-next=pt; break; case 2: pa=new Assistant; pa-Input(); p-next=pa; break; case 3: pm=new Manager; pm-Input(); p-next=pm; break; case 4: pta=new Teacher_Assistant; pta-Input();p-next=pta; break; case 5: pmt=new Manager_Teacher; pmt-Input(); p-next=pmt; break; default: return; coutc;while(c=y|c=Y); Save();void College:Clear() /清除所有的职工结点(仅保留头结点) Person *p=PL-next; while(p) PL-next=p-next; delete p; p=PL-next; /查找void College:Find() double ID; Person *p1; Person *p2; coutID; p1=PL-next; p2=PL; while(p1) if(p1-num=ID) break; /找到 else p2=p1; /继续查找 p1=p1-next; if(!p1) cout找不到你所查询的人!n请确认你所查询的编号是否出错!n;return; else coutn* 职工信息表 *n; coutOutput();/查找职工结点(返回1-找到,0-未找到.结点指针由p1返回,p2为前看指针)int College:Cfind(int ID,Person *p1,Person *p2)*p1=PL-next; *p2=PL; while(*p1) if(*p1)-num=ID) break; /找到 else *p2=*p1; /继续查找 *p1=(*p1)-next; return *p1?1:0;void College:Delete() /删除职工 coutn* 删除职工 *n; int num; Person *p1,*p2; coutnum; if(!Cfind(num,&p1,&p2) coutnext=p1-next; /连接 delete p1; cout正确删除!n; Save();void College:Modify() /修改职工 coutn* 修改职工 *n; int num; Person *p1,*p2; coutnum; if(!Cfind(num,&p1,&p2) coutOutput(); /输出原来的职工信息(做提示) p1-Input(); /输入新的职工信息(更新) cout修改完成!n; Save();void College:Print() /输出职工信息 coutn* 职工信息表 *n; coutnext; if(!p) coutOutput(); p=p-next; void College:Save() /职工信息存盘? ofstream f(Person.dat,ios:out); /打开文件 /遍历输出至文件 Person *p=PL-next; while(p) p-Output(f); p=p-next; f.close(); /关闭文件 coutbufbufDuty; if(f) /根据人员类型创建新结点 switch(Duty) case 1: p2=new Teacher; break; case 2: p2=new Assistant; break; case 3: p2=new Manager; break; case 4: p2=new Teacher_Assistant; break; case 5: p2=new Manager_Teacher; break; default: f.close(); return; p-next=p2; p=p-next; f.seekg(t); p-Input(f); else break; /关闭文件 f.close();void College:Load() /职工信息录入 char ah;int c; coutn* 职工信息录入 *n; do coutc; for(int i=1;inext)p=p-next; int ch; coutch; /创建新结点,录入数据,连接到链表 Teacher *pt; Assistant *pa; Manager *pm; Teacher_Assistant *pta; Manager_Teacher *pmt; switch(ch) case 1: pt=new Teacher; pt-Input
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025会计师事务所能提供的合同服务
- 地磅销售知识培训总结
- 2025有关股权合伙合同范本
- 2025年法学基础理论试题及答案
- 公司员工保密协议合同要求
- 明星市场整合方案执行计划合同
- 清理土石方作业合同
- 钢结构项目盈亏分配协议
- 产品设计与规格要求检查核对模板
- 2025年高级健康管理师模拟考试题含答案
- 沉浸式戏剧市场推广渠道创新与2025年策略研究报告
- 银行招聘考试试题及答案(类似竞赛题型部分)
- 加盟合同协议书范本模板模板
- 民族文化宫2024年度面向应届毕业生和社会人员公开招聘笔试模拟试题及参考答案详解一套
- 水饺加盟合同协议
- 药物分析实验注意事项课件
- 沙盘游戏治疗课件
- 甘肃省烟花爆竹经营许可实施标准细则
- 企业内部控制基本规范与配套指引
- 建筑施工危险作业管理制度
- 广告效果测评整本书课件完整版电子教案全套课件最全教学教程ppt(最新)
评论
0/150
提交评论