绩效工资的管理与设计报告_第1页
绩效工资的管理与设计报告_第2页
绩效工资的管理与设计报告_第3页
绩效工资的管理与设计报告_第4页
绩效工资的管理与设计报告_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学 号: 36计算机基础强化训练题 目绩效工资的管理与设计学 院计算机科学与技术学院专 业计算机科学与技术专业班 级计科0904姓 名赵苗指导教师郭羽成2011年07月06日目录任务书.31系统需求分析.41.1问题说明.41.2数据需求.41.3功能需求.52系统设计.62.1员工数据信息结构设计.62.2内存数据结构设计.62.3数据文件设计.62.4实现的基本功能.82.5输入输出设计.82.6用户界面设计.93系统测试.103.1添加记录.103.2修改记录.103.3删除记录.113.4查询记录.123.5保存到文件.123.6输出记录.123.7退出系统.134心得体会.14计算机基础强化训练任务书学生姓名: 赵苗 专业班级:计算机科学与技术学院0904指导教师: 郭羽成 工作单位: 计算机科学与技术学院 题 目: 绩效工资的管理与设计 初始条件:理论:学完计算机基础知识,掌握C+语言编程基础和VC开发平台的使用。实践:计算机科学系实验中心提供计算机及软件开发环境。要求完成的主要任务: (1)系统需求分析,得到系统的数据需求和功能需求,分析结果用表格记录。 (2)系统设计,包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。要求内存数据用链表组织,数据文件用文本文件,用户界面用字符界面。至少实现数据记录的增加、修改、删除、查询(查询应能按不同数据项进行)。(2)编制好程序后,设计若干测试用例,上机测试所设计的程序。(4)设计报告按格式要求书写。设计报告正文的内容应包括:1)系统描述 包括问题说明、数据需求和功能需求。2)系统设计 包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。3)系统测试 包括测试用例的描述、测试方法和测试结果。4)设计的特点、不足、收获和体会。时间安排:1、第20周(7月4日至7月8日)完成。2、7月8日8:00到计算机学院实验中心(三楼)检查程序、交课程设计报告、源程序(CD盘)。指导教师签名: 2011年7月 3 日系主任(或责任教师)签名: 2011年7月 3 日绩效工资的管理与设计实现1.系统需求分析1.1问题说明 绩效工资又称绩效加薪、奖励工资(Merit pay)或与评估挂钩的工资(Appraisal related pay),是以职工被聘上岗的工作岗位为主,根据岗位技术含量、责任大小、劳动强度和环境优劣确定岗级,以企业经济效益和劳动力价位确定工资总量,以职工的劳动成果为依据支付劳动报酬,是劳动制度、人事制度与工资制度密切结合的工资制度。绩效工资由四部分组成:基本工资,年龄工资,岗位工资,奖励工资。1.2 系统描述1.2.1数据需求一个员工的具体信息应该包含以下几个方面:绩效工资管理数据分析表:编号数据项数据类型数据长度描述1namechar 20职工姓名,此标志并不唯一2numberint1职工标号,职工的唯一标志3ageint1职工性别,此标志并不唯一4positionchar20职工职位,此标志并不唯一5basicsalarydouble1职工基本工资,此标志并不唯一6positionsalarydouble1职工岗位工资,此标志并不唯一7agesalarydouble1职工的年龄工资,此标志不唯一8rewardsalarydouble1职工的奖励工资,此标志不唯一9genderGender(枚举类型)1职工的性别,此标志不唯一10truesalarydouble1职工的绩效工资,此标志不唯一11mobilephonechar12职工的联系方式,此标志唯一1.2.2功能需求 每个公司都有具体的人事信息管理系统,要对这个系统进行维护,这个系统要有一定的功能,根据管理规则,其功能应该包含以下几个方面:绩效工资管理功能分析表:标号功能描述1增加员工信息 新建一个员工记录到缓存中2删除职工信息若标号为num的职工在缓存中,则删除该记录,否则,删除操作失败3修改职工信息若标号为num的职工在缓存中,则修改该记录信息,否则,修改操作失败4保存职工信息将缓存中的职工信息保存到文件中5查询职工信息按照职工的数据项查询职工信息,若查询信息匹配,则输出改职工信息;否则,查询失败6显示职工信息显示所有缓存中的职工信息2.系统设计2.1员工信息数据结构设计 首先根据数据需求:应该定义一个员工的数据结构体,结构体应包含员工的姓名,年龄,编号,岗位,基本工资,岗位工资,年龄工资,奖励工资,绩效工资等,结构体如下:struct workerloyeechar name20;/员工的姓名int number;/员工的编号 int age;/员工的年龄char position20;/员工的职位double basesalary;/员工的基本工资double positionsalary;/员工的岗位工资double agesalary;/员工的年龄工资double rewardsalary;/员工的奖励工资Gender gender;/员工的性别 double truesalary ;/员工的绩效工资 char mobilephone12;2.2内存数据结构设计struct node /职工结点workerloyee worker;/数据成员node*next;/链域;2.3数据文件设计2.3.1文件中存有两条员工信息,并且文件的存放路径为当前路径张文 1001 22 总监 1000 2000 500 500 男 4000 田甜 1002 35 总裁 3000 5000 1000 2000 女 11000 2.3.2文件的创建打开与关闭ifstream workerdata(filename); /用名字为filename的文件实例化对象workerdata,打开文件if(!workerdata) return NULL;while(!workerdata.eof()/将文件中的信息依次读出,放在链表中if(p=new node) /完成一个记录的各数据项 ; workerdatap-worker.number;workerdatagender;p-worker.age;workerdatap-worker.position;workerdatap-worker.basesalary;workerdatap-worker.positionsalary;workerdatap-worker.agesalary; workerdatap-worker.rewardsalary; workerdatap-worker.truesalary; workerdatap-worker.mobilephone;p-next=phead;/将新结点加入链表p=phead; workerdata.close();/关闭文件2.3.3文件的保存,写入ofstream workerdata(filename);/ 将记录写入文件if(!workerdata) return ;for(p=phead;p;p=p-next)workerdata ; workerdata.close();/关闭文件2.4实现的基本功能FuncType ShowMenu(MenuType which);/显示菜单node *CreateWorkerList(char filename);/根据文件内容创建职工信息链表void Save(char filename);/将链表中的信息存入文件filename中void Show(node *pnode);/依次显示链表中的各个记录node *Add(WorkerInfo& workerinfo);/添加一条职工记录WorkerInfo& GetWorkerInfo(WorkerInfo& workerinfo);/获得职工记录信息void Modify();/修改职工信息bool Delete(node*&node);/删除职工信息2.5输入输出设计2.5.1 输入1,选择添加职工信息功能,则系统会输出提示“请输入职工的姓名”等信息,依次输入各条信息项,即可完成职工信息的添加。2.5.2 输入2,选择更新职工信息功能,如果缓存中的职工记录为空,则系统会输出“职工记录为空”,否则系统会输出提示“请输入职工的编号”的提示,输入要修改的员工的编号num,如果该职工记录存在,系统则会依次提示输入该职工的所有信息,以供修改。如果该职工记录不存在,则系统会输出“编号为num的职工不存在,修改信息失败”。2.5.3 输入3,选择删除一条职工信息的功能。如果缓存中的职工记录为空,则系统会输出“员工记录为空”,否则系统会输出提示“请输入员工的编号”的提示,输入要修改的员工的编号num,如果该职工记录存在,系统则会删除该职工的所有信息,并输出“即将执行删除操作,删除记录成功”,表示删除操作成功。如果该职工记录不存在,则系统会输出“没有执行删除操作,删除记录失败”,表示删除操作失败。2.5.4 输入4,选择查询职工信息功能。则系统输出查询的子菜单。选择将要进行的查询方式,如果存在该菜单选项,则进行查询。如果没有该菜单选项,则输出提示“输入信息不正确,显示没有该项”例如选择按gender查询的方式,则系统输出“请输入员工的姓名”,输出职工姓名之后,若存在匹配的职工,则输出所有符合条件的职工信息,否则输出查询失败,不存在符合条件的记录。2.5.5 输入5,选择将缓存中的职工记录保存到文件中,系统提示输出“已经保存到文件中”。2.5.6 输入6,选择显示所有职工信息功能。系统输出“显示所有的记录”,输出所有职工记录。2.5.7 输入7,选择退出绩效工资查询系统。系统输“你已经退出程序,欢迎下次使用”。2.5.8 输入其他数组选项,输出“输入信息不正确,显示没有该项”2.6用户界面设计:2.6.1 主菜单2.6.2 子菜单3 系统测试3.1 添加一个职工记录,该职工的信息为 黄静 1003 25 文秘 1000 1000 500 500 女 3.2 修改num为 1001的记录,将姓名改为周禾,并显示结果3.3 删除编号为1002的记录,并显示删除后的结果,显示删除成功3.4 按基本工资查询,查询基本工资为11000的记录,显示所有基本工资为11000的职工的所有信息。查询phone number为的记录,显示查找成功。3.5把修改保存到文件3. 6输出记录中所有信息3.7 退出系统4心得体会4.1 设计的特点 在网上经过查找,发现绩效工资是一种新的工资制度,它主要包括4个部分,基本工资,岗位工资,年龄工资,奖励工资四部分,因此要确定一个职工的绩效工资为多少,则首先必须知道他的职位,年龄,以及他的奖励工资和基本工资,另外根据公司的日常管理,在公司登记的一个员工的信息通常包括他的姓名,性别,编号,年龄,联系方式等等,根据这些可以建立一个员工结构体,另外由于在在公司管理过程中,经常会发生员工需要更新信息,或者有新员工加入,或者需要查找某一员工的信息等事件,因此该管理系统就需要具备一些功能,如添加一条员工信息,对某一员工信息进行更新,查找某一员工(可以根据姓名,性别,编号,联系方式,职位,基本工资等等进行查找),或者删除一名已经离开的员工,为了不占用多余的空间,员工信息的存储可以用链表来存储,不浪费空间。将已经输入的信息保存到文件中,进行管理。 这样就行成了一个绩效工资的管理系统,可以方便公司的人事部对员工进行管理。4.2设计的不足 首先就是界面的设计不够好,虽然也能与使用者进行对话,但是有些细节处理不好,你如要更新一条员工信息时,要将这个员工的整个信息全部进行重新输入,年龄,性别,岗位等等,其实一些信息可以不必进行录入,另外就是虽然用的是链表的存储结构,但是在进行删除时,只是在链表中删除了,其实它仍然占据着空间,而且没有指针指向它,造成了空间的浪费。4.3设计过程中的收获 绩效工资的管理与设计,看似是一个挺简单的系统,只要设计了员工的结构体,再加上一些函数进行处理就行了,但是这个设计过程中,最容易忽略的就是考虑全面,比如一开始设计员工的信息结构体时,没有想全面,只有一些简单的信息,姓名编号职位等等,没有想到还有员工的联系方式也要记录,因为根据联系方式可以唯一确定一名员工,还有就是设计其功能时,也有一些地方忘记了,比如只想到了删除信息,可忘记了,删除信息要更改其头指针,还有就是更新员工信息时,一开始只想到要更新员工的职位,以及岗位工资,绩效工资等,没有想到也可能全部的信息都要进行更换。还有就是一些函数的设计,比如用姓名或者是电话号码进行查询时,定义的名字还有电话号码是字符数组,我写了一个这样的函数,for(int i=0;i=20) 则找到了具有相同姓名的员工,可是不知道什么原因发现程序走到这一步总是出错,进行调试更新程序,发现也找不到原因。后来,就想到了在字符串中有一函数是专门进行比较两个字符数组是否相等的,strcmp(char a,charb)只要在文件的开头加上就可以直接用这个函数。 有些东西并不是表面上想的那么简单,或许你认为可以实现的却发现在电脑上实现不了,这时只有靠不断的修改才能使程序正确运行。最后,谢谢老师,给了我们一个锻炼的机会,把所学的一些东西综合起来,加强了我们的动手能力!源程序清单:#include/输入流#include#include/输入输出流#includeusing namespace std;enum Gender MALE,FEMALE; /枚举类型,标志性别(0代表男,1代表女)enum MenuType MAINMENU,SUBMENU;/枚举类型,标志菜单enumFuncType NONE,ADD,UPDATE,DELETE,QUERY,SHOW,QB_NAME,QB_NUMBER,QB_GENDER,QB_PERFORMAMCE,QB_BASESALARY,QB_TRUESALARY,QB_MOBILEPHONE,SAVE,EXIT;/枚举类型,标志功能类型struct employeechar name20;/员工的姓名int number;/员工的编号 int age;/员工的年龄char position20;/员工的职位double basesalary;/员工的基本工资double positionsalary;/员工的岗位工资double agesalary;/员工的年龄工资double rewardsalary;/员工的奖励工资Gender gender;/员工的性别 double truesalary ;/员工的绩效工资 char mobilephone12;struct node /职工结点employee worker;/数据成员node*next;/链域;struct QueryRes/查询结果结点node*pnode;/数据成员QueryRes *pnext;/链域;node*phead=NULL; /职工记录链表头结点QueryRes *pqueryres=NULL;/查询结果链表头结点FuncType ShowMenu(MenuType which);/显示菜单node*CreateWorkerList(char filename);/根据文件内容创建职工信息链表void RemoveWorkerList();/删除链表void RemoveQueryRes();/删除查询结果链表void Save(char filename);/将链表中的信息存入文件filename中void Show(node*pnode);/依次显示链表中的各个记录void Show(QueryRes *pnode);/依次显示链表中的各个记录QueryRes *Query(FuncType func);/确定查询方式,返回符合查询的结点的链表node*Add(employee& employee);/添加一条职工记录employee& Getemployee(employee& employee);/获得职工记录信息void Modify();/修改职工信息bool Delete(node*&phead);/删除职工信息int main()employee employee;int cont=1;/显示出菜单的条件int cont1=1;/显示子菜单的条件phead=CreateWorkerList(employee.txt);/读入存在文件里的记录while(cont)switch(ShowMenu(MAINMENU)case ADD:/添加一条记录Getemployee(employee);/获取职工信息phead=Add(employee);/将获得的职工信息插入到链表中break;case UPDATE: /更新记录,即修改记录信息Modify();break;case DELETE:if(Delete(phead) cout即将执行删除操作,删除记录成功endl;/即将执行删除操作,删除记录成功else cout没有执行删除操作,删除记录失败endl;/没有执行删除操作,删除记录失败break;case QUERY:/查询一条记录cont1=1;while(cont1)FuncType func;func=ShowMenu(SUBMENU);/确定查询方式switch(func)case QB_NAME:/按姓名查询case QB_NUMBER:/按编号查询case QB_BASESALARY:/按基本工资查询 case QB_GENDER:/按性别查询case QB_TRUESALARY:/按绩效工资查询case QB_MOBILEPHONE:/按电话号码查询Show(Query(func);/输出查询结果RemoveQueryRes();/查询完毕后删除查询链表break;case EXIT:cont1=0; /返回上一级菜单break;default: /输入信息不正确,显示没有该选项cout输入信息不正确,显示没有该项endl;break;break;case SAVE: /将修改或添加的信息保存到文件中cout将修改或添加的信息保存到文件中endl;Save(employee.txt);break;case SHOW:cout显示文件中的所有记录endl;Show(phead);break;case EXIT: /退出绩效工资管理系统cout你已经退出程序,欢迎您下次使用endl;RemoveWorkerList();cont=0;break;default: /输入信息不正确,显示没有该选项cout输入信息不正确,显示没有该项endl;break;system(PAUSE);return 0;FuncType ShowMenu(MenuType which)/显示菜单FuncType func=NONE;int choice=0;switch(which)case MAINMENU:/显示主菜单cout*endl;cout*Workers Performance Pay Management *endl;cout* *endl;cout* Choose a function from the followling list: *endl;cout* (1) Add a worker record *endl;cout* (2) Update a worker record *endl;cout* (3) Delete a worker record *endl;cout* (4) Query a worker record *endl;cout* (5) Save to file *endl;cout* (6) Show all the worker record *endl;cout* (7) Exit *endl;cout*endl;coutchoice;cout*endl;switch(choice)/根据主菜单选项,确定用户所选择的服务case 1: func=ADD; break;case 2: func=UPDATE;break;case 3: func=DELETE; break;case 4: func=QUERY; break;case 5: func=SAVE; break;case 6: func=SHOW; break;case 7: func=EXIT; break;default: func=NONE; break;break;case SUBMENU:/显示子菜单cout*endl;cout* Workers Performance Pay Management *endl;cout* *endl;cout* Choose a query from the followling list: *endl;cout* (1) Query by name *endl;cout* (2) Query by number *endl;cout* (3) Query by gender *endl;cout* (4) Query by basesalary *endl;cout* (5) Query by truesalary *endl;cout* (6) Query by phone number *endl;cout* (7) Exit *endl;cout*endl;coutchoice;cout*endl;switch(choice)/根据用户的选择确定所要进行的查询方式case 1: func=QB_NAME; break; /按姓名查询case 2: func=QB_NUMBER; break; /按编号查询case 3: func=QB_GENDER; break; /按性别查询case 4: func=QB_BASESALARY;break;/按基本工资查询case 5: func=QB_TRUESALARY;break;/按绩效工资查询case 6: func=QB_MOBILEPHONE;break;/按电话号码查询case 7: func=EXIT;break;/返回上一级菜单default: func=NONE;break;/输入不正确break;default:/coutNO SUCH A MENU !;workerdatap-worker.number;workerdatagender;p-worker.gender=(Gender)gender;workerdatap-worker.age;workerdatap-worker.position;workerdatap-worker.basesalary;workerdatap-worker.positionsalary;workerdatap-worker.agesalary;workerdatap-worker.rewardsalary;workerdatap-worker.truesalary;workerdatap-worker.mobilephone;p-next=phead;/将新结点加入链表phead=p;workerdata.close();/关闭文件return phead;/返回链表的头指针void RemoveWorkerList()/删除链表for(node *p2,*p1=phead;p1;p1=p2)/依次删除第一个结点p2=p1-next;delete p1;phead=NULL;void RemoveQueryRes()/删除查询结果链表for(QueryRes *p2,*p1=pqueryres;p1;p1=p2)p2=p1-pnext ;delete p1;pqueryres=NULL;void Save(char filename)/将链表中的信息存入文件filename中node *p;int gender;ofstream workerdata(filename);/ 将记录写入文件if(!workerdata) return ;for(p=phead;p;p=p-next)workerdata ;workerdata worker.number;workerdata worker.age;gender=p-worker.gender;workerdata gender;workerdata worker.position;workerdata worker.basesalary;workerdata worker.positionsalary;workerdata worker.agesalary;workerdata worker.rewardsalary;workerdata worker.truesalary;workerdata worker.mobilephone;workerdata.close();/关闭文件void Show(node*pnode)for(node *p=pnode;p;p=p-next)/依次显示链表中的各个记录; ;coutworker.number; ;coutworker.gender; ;coutworker.age; ;coutworker.basesalary; ;coutworker.positionsalary; ;coutworker.agesalary; ;coutworker.rewardsalary; ;coutworker.truesalary; ;coutworker.mobilephonepnext); ;coutpnode-worker.number; ; coutpnode-worker.age; ;coutpnode-worker.gender; ;coutpnode-worker.basesalary; ; coutpnode-worker.positionsalary; ; coutpnode-worker.agesalary; ; coutpnode-worker.rewardsalary; ;coutpnode-worker.truesalary; ;coutpnode-worker.mobilephonenext)switch(func)/如果某个记录中的数据项符合查询信息,则hasRes=1记录下来case QB_NAME:if (tag);tag=0;if(!strcmp(,)hasRes=1;break;case QB_NUMBER:if(tag)coutemployee.number;tag=0;if(p-worker.number=employee.number) hasRes=1;break;case QB_GENDER:if(tag) coutgender; employee.gender=(Gender)gender;tag=0;if(p-worker.gender=employee.gender) hasRes=1;break; case QB_BASESALARY:if(tag) coutemployee.basesalary;tag=0;if(p-worker.basesalary=employee.basesalary) hasRes=1;break;case QB_TRUESALARY:if(tag) coutemployee.truesalary;tag=0;if(p-worker.truesalary=employee.truesalary) hasRes=1;break;case QB_MOBILEPHONE:if(tag) coutemployee.mobilephone;tag=0;if(!strcmp(p-worker.mobilephone,employee.mobilephone) hasRes=1;break;default:break;if(hasRes)/把查询结果的结点存在pqueryres中if(pquery=new QueryRes()pquery-pnode=p;pquery-pnext=pque

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论