南邮通达--简单的工资管理系统
- 格式:docx
- 大小:501.85 KB
- 文档页数:46
工资管理信息系统课程设计工资治理信息体系课程设计班级工商治理0801姓名×××学号08020501××设计日期:2011年5月25日目次1体系概述 (3)1.1体系查询拜望分析 (3)1.2体系设计的目标 (3)1.3体系需求 (3)1.4可行性研究 (4)1.4.1技巧上的可行性 (4)1.4.2经济上的可行性 (4)1.4.3治理上的可行性 (4)1.4.4社会可行性 (5)2体系分析部分 (5)2.1营业流程图 (5)2.2数据流程图 (6)2.3功能分析图 (7)2.4数据字典 (7)2.5数据加工处理的描述 (7)2.6治理信息体系流程假想图 (8)3体系设计部分 (8)3.1功能构造图设计 (9)3.2新体系信息处理流程设计(ER图) (9)3.3输出设计 (10)3.3.1工资表 (10)3.3.2扣款表 (10)3.3.3工资汇总表 (11)3.4储备文件格局设计 (11)3.5输入设计 (11)3.5.1数据库中的对象设计 (11)3.5.2表构造设计 (12)3.6代码设计(见源法度榜样) (13)3.7法度榜样设计说明书(体系赞助) (14)4体系实施部分 (14)4.1-4.5 ................................................................................................................. 错误!未定义书签。
1 封面 (14)2 工资表 (15)3 扣款表 (15)4 工资汇总表 (16)5 工资表源法度榜样 (16)6 扣款表源法度榜样 (17)7 工资汇总表源法度榜样 (17)8 关于 (18)5附录或参考材料: (18)6 心得领会 (18)治理信息体系课程设计心得 (18)1体系概述1.1体系查询拜望分析治理信息体系是为了适应现代化治理的须要,在治理科学、体系科学、信息科学和运算机科学等学科的差不多上形成的一门科学,它研究治理体系中信息处理和决定打算的全部过程,并商量运算机的实现方法。
第1章系统简介1.1 系统概述《工资管理系统》是吉林省明日科技有限公司最新推出的一套通用性、实用性极强的工资管理系统。
系统提供了基本的人员信息管理,同时对员工的基本工资、浮动工资和工资发放进行系统管理,同时配以查询功能,避免数据丢失系统还提供了数据备份及还原功能。
以便能真正适用于各类中小企业及事业型单位。
1.2 系统目标最大限度实现企业员工工资的自动化、系统化管理。
1.3 系统范围●电子、电器、医药、服装、建筑、物资、化工、商贸、超市、旅游、机械、建材、科技、通讯等各类企业公司●机关、事业单位、学校、研究所等事业型单位。
1.4 系统特点●界面设计美观友好●规范、完善的基础信息设置●信息查询灵活、方便、快捷●系统运行稳定,安全可靠第2章运行环境系统开发平台:Visual C++ 6.0运行平台:Windows xp/Windows 2000/Windows 2003分辨率:最佳效果800*600第3章系统登录双击工资管理系统图标,弹出如图1.1所示的登录界面。
图1.1 系统登录界面在“用户名”的文本框,输入用户名:mrkj,单击“密码”的文本框,输入密码:111,单击【确定】按钮进入系统主界面,如图1.2所示。
图1.2 工资管理系统主界面第4章基本工资管理基本工资管理菜单包括:员工录入和员工删除。
通过基本工资管理可以基本实现员工信息的添加及删除操作。
4.1 员工录入单击“基本工资管理”/“员工录入”选项,弹出如图1.3所示的界面。
员工录入模块主要录入员工信息。
图1.3 员工录入在“编号”、“姓名”的文本框中,输入员工的编号及姓名,单击“性别”及“学历”的下拉按钮选择性别及学历,最后单击【添加】按钮,即可添加员工信息。
4.2 员工删除单击“基本工资管理”/“员工删除”选项,弹出如图1.4所示的界面,该界面主要实现企业性质的信息设置。
图1.4 员工删除通过“选择编号”的下拉按钮选择要删除的员工编号,然后单击【删除】按钮即可删除相应的员工信息。
工资管理系统jsp课程设计一、课程目标知识目标:1. 掌握Java Server Pages(JSP)的基本语法和结构,理解JSP的运行原理。
2. 学会使用JSP与JavaBean相结合的方式实现工资管理系统的前端和后端功能。
3. 了解数据库连接和SQL语句在工资管理系统中的应用,能够实现数据的增删改查操作。
技能目标:1. 培养学生运用JSP技术进行网页设计的能力,提高解决问题的实践操作技能。
2. 培养学生独立设计和实现一个小型工资管理系统的能力,包括需求分析、功能设计、编码实现等。
3. 培养学生团队协作能力,提高项目管理和沟通协调技巧。
情感态度价值观目标:1. 培养学生对待编程的兴趣和热情,增强学习信息技术的自信心。
2. 培养学生具备良好的编程习惯,关注用户体验,提高对软件质量的追求。
3. 培养学生遵守职业道德,尊重知识产权,树立正确的价值观。
课程性质:本课程为实践性较强的课程设计,以项目为导向,旨在让学生在实际操作中掌握JSP技术,提高解决实际问题的能力。
学生特点:学生已具备一定的Java基础,了解基本的数据库知识,具有一定的编程能力和项目实践经验。
教学要求:结合学生特点和课程性质,教师应注重理论与实践相结合,引导学生主动参与,培养学生的动手能力和创新精神。
通过课程设计,使学生能够独立完成一个小型工资管理系统的设计与实现。
同时,注重过程评价,关注学生在课程学习中的具体表现,确保课程目标的达成。
二、教学内容1. JSP技术基础- JSP语法与结构- JSP内置对象及作用域- JSP页面跳转与重定向- JSP与JavaBean的交互2. 数据库连接与应用- JDBC技术简介- 数据库连接池技术- SQL语句编写与优化- 数据库操作(增删改查)3. 工资管理系统功能模块设计- 系统需求分析- 功能模块划分- 数据库表设计- 系统架构设计4. 工资管理系统功能实现- 用户登录与权限控制- 员工信息管理- 工资项目管理- 工资计算与发放5. 系统测试与优化- 功能测试- 性能测试- 用户体验优化- 系统安全优化教学内容安排和进度:第一周:JSP技术基础,了解工资管理系统需求第二周:数据库连接与应用,进行数据库表设计第三周:工资管理系统功能模块设计,编写各模块代码第四周:工资管理系统功能实现,进行系统测试与优化教材章节关联:本教学内容与教材中关于JSP技术、数据库应用和项目实践的相关章节紧密关联,涵盖了JSP基本知识、数据库操作和项目开发流程等内容。
工资管理系统操作流程系统路径:桌面一U8管理软件一►财务系统一►工资开始一U8管理软件一►财务系统—工资工资帐套初始:选择需要的启用日期:要大于等于帐套的启用日期第一次打开帐套会弹出工资帐套初始界面一选择工资类别个数(单个和多个的区别)一下一步 f 选择是否代扣个人所得税一下一步—选择是否扣零一下一步一选择人员编码长度和帐套启用日期一k完成注意:其中一些设置可以到“设置”菜单(或基础设置)—选项中重新设置帐套初始:单个工资类别:直接在基础设置中分别设置部门、人员类别、人员附加信息、工资项目、银行名称、人员档案1部门设置:基础设置 f部门设置f点击“增加” 按钮f 输入部门编号和部门名称等—点击“保存”注意:要严格遵循编码原则:例如:“* ** ”则表示一级编码为一位,二级编码为二位等同于科目编码的“ 1-2”,如果此帐套是和总帐连用的,则不需要输入部门,总帐的部门会自动传输。
删除部门:只需要选择要删除的部门点击“删除”按钮即可。
但是要先删除末级部门再删除上级部门并且要删除的部门没有用过2、人员类别设置:基础设置—人员类别设置一先输入类别再点击“增加”按钮注意:没有用过的人员类别直接选中删除即可,已经用过的不能删除3、人员附加信息设置:基础设置一人员附加信息设置一►点击“增加”按钮一H俞入或选择附加信息一k再点击“增加”按钮一输入或选择下一个人员附加信息注意:没有用过的人员附加信息直接选中删除即可,已经用过的不能删除人员信息的先后顺序可以选中要改变的附加信息点击“”和“"改变位置4、工资项目设置:基础设置一►工资项目设置点击“增加”按钮—输入或选择项目名称更改项目属性即可项目属性包括:类型、长度、小数、增减项类型:数字(参与加减和计算的数字,例如:基本工资等)字符(不参与加减和计算的注释例如:职称等)长度:根据项目需要自定长度小数:必须是数字的才有小数位数,并且要按照需要设定增减项:增项(参与计算并且累加的项目,汇总到应发合计)减项(参与计算并且累加的项目,汇总到扣款合计)其他(参与计算但不累加的项目,例如:病假天数)公式设置:先在“工资项目”中点击“增加”按钮选择要编辑公式的工资项目―选择增加的工资项目一根据向导编辑公式一点击“公式确认”按钮基本工资公式设置:iff(人员类别="企业管理人员",700,iff(人员类别="车间管理人员",650,iff(人员类别="福利人员",400,750)))5、银行名称设置:基础设置一银行名称设置一►先确定帐号长度一点击“增加” 按钮一►输入银行名称一►返回即可(属于银行代发的)6、人员档案:基础设置一人员档案一输入基础信息和附加信息一确认注意:如果银行代发要注意帐号不能重复,人员编号不能重复。
工资管理系统操作手册1.用帐套主管“赵超”(编码:01)登陆《系统管理》,启用工资管理模块,启用时间为:2006-01-012.以帐套主管“赵超”(编码:01)登陆《用友通教学软件》进入工资管理。
参数设置:选择“多个”工资类别数,币别:人民币。
扣税设置:从工资中代扣个人所得税。
扣零设置:不进行扣零处理人员编码:人员编码长度:3;启用日期:2006-01-01,设置后单击完成3单击确定.建立第一个“工资类别”。
单击确定:利用工资类别向导建立第一个工资类别新建工资类别的名称为“合同工工资”单击下一步,选中采用“合同工工资”核算的部门:管理部门,财务部,采购部,销售部。
单击完成,确认2006-01-01为启用当前工资类别的时间。
4.为采用“合同工工资”类别的人员进行人员类别设置:增加---“理人员,普通员工”。
5. 为采用“合同工工资”类别设置工资项目。
在设置前必须先关闭工资类别。
然后单击“工资项目”结合参照录入相关工资项目。
工资项目按下表录入,并按表格调整顺序。
单击确定6.银行名称设置增加:银行名称:工商银行海淀分理处;账号定长为:11。
7.“合同工工资”设置职员档案。
设置职员档案前必须:先打开“合同工工资”的工资类别。
选中“合同工工资”确认打开该类别根据下表补充录入人员档案:8.新建第二个工资类别。
在创建前先关闭第一个工资类别“合同工工资”关闭后,点击“工资”—“工资类别”—“新建工资类别”新建第二个名为“临时工工资”单击下一步选中所有部门,单击完成,确认2006-01-01为“临时工工资”工资类别启用时间。
关闭工资类别。
选中“合同工工资”类别打开它。
9.设置工资项目及计算公式。
项目设置时应先按增加,在选中相应名称参照。
项目内容及顺序参照下页表格。
操作方法:点击增加,选中要编辑公式的项目。
录完奖励工资与基本工资后退出工资变动中的,提示是否重算,点否。
然后重新进入工资变动。
11.(1)录入考勤情况:王刚请假3天,(2)销售部人员的奖励工资每人增加400。
程序设计报告( 2012 / 2013 学年第一学期)题目:个人帐本管理系统专业学生姓名班级学号指导教师指导单位计算机学院计算机软件教学中心日期2012年12月19日个人帐本管理系统一、课题内容和要求该系统要求实现一个简单、实用的个人帐本管理程序,主要功能包括帐务收支明细数据的录入、查找、修改、删除、统计、排序等。
所有帐务数据都要利用文件系统保存,以备系统下次运行时使用。
通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些基本算法思想的应用。
(1)个人帐务数据由帐务明细条目构成,包括:序号,日期(年、月、日),收支项名称,收支类型(收入/支出),收支金额(正/负数表示收支),备注等。
(2)需要实现的功能1)新增帐务明细数据。
2)查找帐务数据(可按日期(年、月、日)、名称、金额等查找)。
3)修改帐务明细条目(先查找,再修改。
若查找出多个条目,则进一步提示用户选择条目的序号,再修改)。
4)删除帐务明细条目(先查找,再删除。
若查找出多个条目,则进一步提示用户选择条目的序号,再删除)。
5)对帐务数据排序(可按日期、名称、金额等排序。
要求排序后,记录的序号也要重新编排)。
6)显示当前所有帐务数据列表。
7)帐务统计(根据日期范围,可分别按年、月或日统计收、支、结余总金额,并显示)8)保存帐务数据到文件中、从文件中读入帐务数据。
(3)界面友好,输入信息符合逻辑。
二、需求分析个人帐薄管理系统具有良好的性能和实用的功能,其性能的良好表现为:输入性强、检索迅速、查询方便、可靠性高等,其实用的功能表现为:录入、查询、修改、删除、统计、排序各方面的功能。
个人帐薄管理系统可以让用户方便的输入个人账目;可提供包括所有数据、年、月、日、收支以及名称的查询;可通过查询选择修改和删除;同时提供了以年、月、日为标准的数据统计和以名称、金额、日期为标准的数据排序。
这些优点能够促进优化家庭及财政管理,促进财政管理的科技化和现代化。
工资管理系统一、工资管理系统的功能与特点1、工资的概念:工资是以货币形式支付给职工的劳动报酬,是单位对职工个人的一种负债。
2、工资核算系统的主要任务(功能)是:准确计算职工工资;对职工工资总额实行计划管理;按工资用途、部门进行汇总;按一定的分配原则进行费用的计提与分分配,同时登录有关的总账和明细账。
3、工资管理的特点:一是政策性强,要求严格;二是及时性、准确性要求高;三是工资计算复杂性强、数据量大. 二、工资核算的初始化工作:1、设置用户需要的各级核算单位.包括设置各级单位代码和单位名称。
2、设置职工名册.3、设置用户需要的工资项目。
4、设置用户需要的工资项目之间的数据运算关系。
5、定义工资转账关系。
6、录入工资原始数据。
三、工资核算系统日常业务处理1、录入工资变动数据;2、进行工资计算与汇总;3、计算所得税,进行所得税扣缴;4、进行工资分配与转账;5、输出有关账表,如工资汇总表、工资发放表、工资发放条等。
四、启用工资管理模块1、启动系统管理,以账套主管身份注册登录系统。
2、通过账套→启用菜单,启用工资管理模块。
3、在工资核算模块前点击鼠标左键,在弹出的对话框中输入启用日期并确定。
4、当弹出是否启用对话框时,直接确定5、启用工资管理后的效果6、授予相应操作员工资管理权限以账套主管身份登录系统管理,对“填制凭证"操作员授予“工资管理"的权限.五、工资管理初始设置1、设置部门档案。
以账套主管身份登录用友T3系统,通过基础设置→部门档案增加部门。
如果在总账系统中设置过部门档案,这一步可以不做了。
本例设置部门如下:2、设置工资类别首次点击“工资”菜单,系统会启动工资类别设置向导,选择“多个”进行多个工资类别设置.根据实际,确定是否扣税,本例选择扣税根据实际,确定是扣零,本例选择扣零,并确定扣零到元根据单位职工人数确定人员编码位数,本例设定为3位通过向导建立工资类别输入类别名称指定包括的部门本例设置了4个工资类别3、设置人员类别通过工资→设置→人员类别菜单设置人类别。
企业工资管理系统用户手册一、简介企业工资管理系统是一款专门为企业设计的工资管理软件,旨在帮助企业实现工资的自动化计算、记录和管理。
本用户手册旨在帮助用户快速了解和掌握该系统的基本操作方法。
二、系统登录1. 打开企业工资管理系统,进入登录界面。
2. 输入用户名和密码,点击登录按钮。
3. 如果忘记密码,可以点击“找回密码”链接进行密码重置操作。
三、主界面1. 在登录成功后,进入系统的主界面。
2. 主界面包括工资计算、员工管理、数据统计等功能模块的快捷入口。
3. 用户可以根据需要点击相应功能模块进行操作。
四、工资计算1. 在工资计算模块中,用户可以根据设定的工资计算规则进行工资计算。
2. 初次使用系统时,需要先进行工资计算规则的设置,包括基本工资、津贴、奖金、考勤扣款等。
3. 用户可以选择一个时间段,系统将根据该时间段的员工考勤数据和设定的工资计算规则进行工资计算。
4. 完成工资计算后,系统会自动生成工资明细报表,用户可以导出或打印该报表。
五、员工管理1. 在员工管理模块中,用户可以添加、编辑和删除员工信息。
2. 用户可以输入员工的基本信息,包括姓名、工号、职位等。
3. 用户还可以上传员工的照片和其他相关文件。
4. 员工管理模块还可以记录员工的考勤情况、请假记录等。
六、数据统计1. 在数据统计模块中,用户可以查看各种统计数据,如工资总额、平均工资、各部门工资分布等。
2. 用户可以选择一个时间段和部门,系统将根据选择的条件进行数据统计。
3. 数据统计模块还可以生成图表和报表,方便用户进行数据分析和决策。
七、系统设置1. 在系统设置模块中,用户可以进行一些系统参数的配置。
2. 用户可以设置登录密码、工资计算规则、员工权限等。
3. 系统设置模块还可以进行数据备份和恢复操作,确保数据的安全性。
八、常见问题解答以下是一些用户常见问题的解答,供用户参考:1. 忘记密码怎么办?用户可以点击登录界面的“找回密码”链接,按照操作提示进行密码重置。
程序设计报告( 2013 / 2014 学年第 1学期)题目:模拟工资管理系统专业: 计算机科学与技术学生姓名:班级学号:指导教师:指导单位: 南京邮电大学通达学院日期: 2013年 12月 9日模拟工资管理系统一课题内容和要求工资管理系统是一个单位最基本的一项财务管理,该系统要求实现查找,修改,删除,统计,排序等。
所以帐务数据都要利用文件系统保存,以备系统下次运行时使用。
通过此课题,熟练掌握文件,数组,指针的各项操作,以及一些基本算法思想的应用。
基本要求:管理员:1)以密码系统登录2)录入员工信息具体工资,计算相应的税金(计算规则参见最新公布的政策)3)查询并显示所有员工具体信息4)显示统计信息:员工数目,工资总数和税金总数5)按照指定条件查询6)增减具体员工记录税金政策基本是不同收入等级的工资使用不同的比例收取税金。
类似于下表:工资税金0~1500 0%(超出部分)1500~2500 10%(超出部分)2500~3500 15%(超出部分)3500~5000 20%(超出部分)5000~10000 30%(超出部分)10000~ 40%(超出部分)员工:1)以工号为登录ID,密码自己设定;2)可以查询本人的相关信息;3)系统提供指定时间间隔的查询功能。
二需求分析工资管理系统的功能框架图如图1所示。
图一(功能框架图)(1)根据工资管理系统的要求,设计合适的数据结构。
(2)选择文件存储格式(文本或是二进制)和文件名。
(3)采用自顶向下的设计方法,设计系统的总体模块组成和数据结构。
(4)对于每项操作,设计一个函数(方法、子模块)进行实现,要明确定义函数类型。
(5)根据设计结果分布开发实现各模块,最后进行总体集成。
三、概要设计1 主要结构体class worker{public:worker(){}void show();//职工信息显示~worker(){}double GetTax (); // 获取缴税double GetAccumPay (); // 获取实发工资friend class WorkerList;private:string num,name,sex,edu,address,tel;//姓名,性别,教育程度,住址,电话int age,salary,A;//年龄,薪水,税金};class WorkerList{private:worker w[N];int NUM;//用来计算职工数目int count;//用来暂时记录当前操作第几个职工public:void add();//职工信息录入void sort();//职工信息排序void search();//职工信息查找void dele();//职工信息删除void modify();//职工信息修改void save();//职工信息以文件形式保存void showworker();//显示职工信息在屏幕上void read();WorkerList(){NUM=0;count=0;}};2 主要函数流程图(1)登录函数(如图二所示)图二(登录函数图)(2)职工信息录入如图三所示图三(录入函数)(3)职工信息查找(如图四所示)图四(查找函数)(4)职工信息统计(如图五所示)图五(统计函数)(5)职工信息修改(如图六所示)图六(修改函数)(6)职工信息删除(如图七所示)图七(删除函数)(7)职工信息保存(如图八所示)图八(8)职工信息排序(如图九所示)图九四.源代码#include<iostream>#include<string>#include<fstream>#include <stdlib.h>#include <cstdlib>#include"conio.h"using namespace std;#define N 100//N作为最大职工总数int f=0;//f作为开关string p;//p作为接收菜单选项的字符串int error=0;void menu();//显示菜单class worker{public:worker(){}void show();//职工信息显示~worker(){}double GetTax (); // 获取缴税double GetAccumPay (); // 获取实发工资friend class WorkerList;private:string num,name,sex,edu,address,tel;//姓名,性别,教育程度,住址,电话int age,salary,A;//年龄,薪水,税金};class WorkerList{private:worker w[N];int NUM;//用来计算职工数目int count;//用来暂时记录当前操作第几个职工public:void add();//职工信息录入void sort();//职工信息排序void search();//职工信息查找void dele();//职工信息删除void modify();//职工信息修改void save();//职工信息以文件形式保存void showworker();//显示职工信息在屏幕上void read();WorkerList(){NUM=0;count=0;}};double worker::GetTax () // 缴税{if(salary<=1500){return A==0;}elseif(salary<=2500){return A=(salary-1500)*10/100;}elseif(salary<=3500){return A=(salary-2500)*15/100+100;}elseif(salary<=5000){return A=(salary-3500)*20/100+100+150;}elseif(salary<=10000){return A=(salary-5000)*30/100+100+150+300;}elseif(salary>10000){return A=(salary-10000)*40/100+100+150+300+1500;}}double worker::GetAccumPay (){return salary-A;}//登陆函数void login(){system("cls");cout<<"\n\n*************************************************"<<endl; cout<<"** 请选择您所需要的模式 **"<<endl; cout<<"** 1.管理员模式 **"<<endl; cout<<"** 2.用户模式 **"<<endl; cout<<"*************************************************"<<endl;}void menu(){cout<<endl;cout<<"**************************************************************"<<endl;cout<<"****"<<endl;cout<<"** ===欢迎使用南京邮电大学职工工资管理系统=== **"<<endl;cout<<"****"<<endl;cout<<"** 1.职工信息添加**"<<endl;cout<<"** 2.职工信息修改**"<<endl;cout<<"** 3.职工信息删除**"<<endl;cout<<"** 4.职工信息排序**"<<endl;cout<<"** 5.职工信息查找**"<<endl;cout<<"** 6.职工信息显示**"<<endl;cout<<"** 7.职工信息保存**"<<endl;cout<<"** 8.职工信息查看**"<<endl;cout<<"** 0.退出**"<<endl;cout<<"****"<<endl;cout<<"**************************************************************"<<endl;cout<<endl;}void menu1(){cout<<endl;cout<<"**************************************************************"<<endl;cout<<"****"<<endl;cout<<"** ===欢迎使用南京邮电大学职工工资管理系统===**"<<endl;cout<<"** **"<<endl;cout<<"** 1.职工信息查找**"<<endl;cout<<"** 0.退出**"<<endl;cout<<"** **"<<endl;cout<<"********************************************************** ****"<<endl;cout<<endl;}void domain()//主菜单函数实现{char pa[20];int abcd;char before;WorkerList wl;int a;cout<<"请输入选择:";cin>>a;switch(a){case 1:cout<<"请输入密码:";int j;for( j=0;j<10;j++){before=getch();if(before==13){pa[j]='\0';break;}if(before==8){before=getchar();}else{pa[j]=before;cout<<'*';}}if(strcmp(pa,"123")==0||strcmp(pa,"456")==0){cout << "\n登录成功,祝您工作顺利,心情愉快!"<<endl;}else{do{error++;if(error==3){cout<<endl;cout<<"\n**************************************************"<<endl;cout<<"** 密码错误,系统自动退出,请稍后重新登录**"<<endl;cout<<"**************************************************"<<endl;for(abcd=1;abcd<=100000000;abcd++){}exit(1);}cout<<"\n密码错误!请重新输入"<<endl;for(abcd=1;abcd<=100000000;abcd++){}login();}while(error<3);}while(1){system("cls");menu();cout<<"请选择数字编号0~8"<<endl;int i1;cin>>i1;while(!(i1>=0&&i1<=8)){cout<<"输入有误,请重新输入:"<<endl;cin>>i1;}switch(i1){case 1:wl.add();//添加break;case 2:wl.modify();//修改break;case 3:wl.dele();//删除break;case 4:wl.sort();//排序break;case 5:wl.search();//查找break;case 6:wl.showworker();//显示break;case 7:wl.save();//保存break;case 8:wl.read ();//查看break;case 0:exit(0);cout<<"系统退出!!"<<endl;exit(0);default:break;}cout<<"是否返回主菜单? Y/N"<<endl;cin>>p;if(p=="n"||p=="N"){ cout<<"系统退出!!"<<endl;exit(0);}getchar();}case 2:cout<<"请输入密码:";int b ;for(b=0;b<10;b++){before=getch();if(before==13){pa[b]='\0';break;}if(before==8){before=getchar();}else{pa[b]=before;cout<<'*';}}if(strcmp(pa,"123")==0||strcmp(pa,"456")==0){cout << "\n登录成功,祝您工作顺利,心情愉快!"<<endl;}else{do{error++;if(error==3){cout<<endl;cout<<"\n**************************************************"<<endl;cout<<"** 密码错误,系统自动退出,请稍后重新登录**"<<endl;cout<<"**************************************************"<<endl;for(abcd=1;abcd<=100000000;abcd++){}exit(1);}cout<<"\n密码错误!请重新输入"<<endl;for(abcd=1;abcd<=100000000;abcd++){}login();}while(error<3);}while(1){system("cls");menu1();cout<<"请选择数字编号0~1"<<endl;int i1;cin>>i1;while(!(i1>=0&&i1<=7)){cout<<"输入有误,请重新输入:"<<endl;cin>>i1;}switch(i1){case 1:wl.search();//查找break;case 0:exit(0);cout<<"系统退出!!"<<endl;exit(0);default:break;}cout<<"是否返回主菜单? Y/N"<<endl;cin>>p;if(p=="n"||p=="N"){ cout<<"系统退出!!"<<endl;exit(0);}getchar();}}}void WorkerList::add()//职工信息添加函数实现{cout<<"请输入职工信息:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;string num;cin>>num;for(int i=0;i<NUM;i++)while(num==w[i].num){cout<<"此职工编号已存在,请重新输入:"<<endl;cin>>num;}w[NUM].num=num;cin>>w[NUM].name>>w[NUM].sex>>w[NUM].edu>>w[NUM].age>>w[NUM].sala ry>>w[NUM].address>>w[NUM].tel;++NUM;count=NUM;}void worker::show()//显示职工信息函数实现{cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;cout<<num<<'\t'<<name<<'\t'<<sex<<'\t'<<edu<<'\t'<<age<<'\t'<<sal ary<<'\t'<<address<<'\t'<<tel<<endl;cout<<endl;}void WorkerList::modify()//职工信息修改函数实现{if(NUM<=0){cout<<"没有职工信息存入,系统将返回主菜单"<<endl;menu();}else{ cout<<"职工信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;for(int i=0;i<count;i++)cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<<'\t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel <<endl;}cout<<"请输入需要修改信息职工的工号:"<<endl;string num1;cin>>num1;int j=0,k;int flag=1;while(flag){for(;j<count;j++){if(num1==w[j].num){flag=0;k=j;break;}}if(flag){cout<<"不存在此员工,请重新输入:"<<endl;j=0;cin>>num1;}}cout<<"你选择的职工的信息为:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;cout<<w[k].num<<'\t'<<w[k].name<<'\t'<<w[k].sex<<'\t'<<w[k].edu<< '\t'<<w[k].age<<'\t'<<w[k].salary<<'\t'<<w[k].address<<'\t'<<w[k].tel <<endl;cout<<endl;cout<<"***********************************************"<<endl;cout<<"** 1.修改工号 **"<<endl;cout<<"** 2.修改姓名 **"<<endl;cout<<"** 3.修改性别 **"<<endl;cout<<"** 4.修改学历 **"<<endl;cout<<"** 5.修改年龄 **"<<endl;cout<<"** 6.修改工资 **"<<endl;cout<<"** 7.修改地址 **"<<endl;cout<<"** 8.修改电话 **"<<endl;cout<<"** 0.返回主菜单 **"<<endl;cout<<"***********************************************"<<endl;cout<<endl;cout<<"请选择数字编号0~8"<<endl;int i3;cin>>i3;while(i3<0||i3>8){cout<<"输入有误,请重新输入:"<<endl;cin>>i3;}switch(i3){case 1:cout<<"请输入新的职工工号:";cin>>w[k].num;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 2:cout<<"请输入新的职工姓名:";cin>>w[k].name;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 3:cout<<"请输入新的职工性别:";cin>>w[k].sex;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 4:cout<<"请输入新的职工学历:";cin>>w[k].edu;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 5:cout<<"请输入新的职工年龄:";cin>>w[k].age;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 6:cout<<"请输入新的职工工资:";cin>>w[k].salary;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 7:cout<<"请输入新的职工地址:";cin>>w[k].address;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 8:cout<<"请输入新的职工电话:";cin>>w[k].tel;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 0:menu();default:break;}}void WorkerList::showworker()//职工信息显示函数实现{if(NUM<=0){cout<<"没有职工信息存入,系统将返回主菜单"<<endl;}elsecout<<"已保存的职工信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;for(int i=0;i<count;i++)cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<< '\t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel <<endl;cout<<"是否返回主菜单? Y/N"<<endl;cin>>p;while(1){if(p=="y"||p=="Y"){menu();}else if(p=="n"||p=="N"){cout<<"系统退出!!"<<endl;exit(0);}else{cout<<"输入有误,请重新输入:";cin>>p;}}}void WorkerList::search(){if(NUM<=0){cout<<"没有职工信息存入,系统将返回主菜单"<<endl;}elsecout<<"请选择查找方式:"<<endl;cout<<"***********************************************"<<endl;cout<<"** 1.按工号查找 **"<<endl;cout<<"** 2.按姓名查找 **"<<endl;cout<<"** 3.按工资查找 **"<<endl;cout<<"** 4.按学历查找 **"<<endl;cout<<"** 0.返回主菜单 **"<<endl;cout<<"***********************************************"<<endl;cout<<endl;cout<<"请选择数字编号0~4"<<endl;int i4;cin>>i4;while(i4<0||i4>4){cout<<"输入有误,请重新输入:"<<endl;cin>>i4;}if(i4==1){string num2;cout<<"请输入要查询的职工的工号:"<<endl;cin>>num2;int j=0,k;int flag=1;while(flag){for(;j<count;j++){if(num2==w[j].num){flag=0;k=j;cout<<"查询的职工信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t 地址\t电话"<<endl;cout<<w[k].num<<'\t'<<w[k].name<<'\t'<<w[k].sex<<'\t'<<w[k].edu<< '\t'<<w[k].age<<'\t'<<w[k].salary<<'\t'<<w[k].address<<'\t'<<w[k].tel <<endl;break;}}if(flag){flag=0;cout<<"不存在此职工!!\n返回主菜单"<<endl;break;}}}else if(i4==2){string name2;cout<<"请输入要查询的职工的姓名:"<<endl;cin>>name2;int j2=0,k2;int flag2=1;while(flag2){for(;j2<count;j2++){if(name2==w[j2].name){flag2=0;k2=j2;cout<<"查询的职工信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t 地址\t电话"<<endl;cout<<w[k2].num<<'\t'<<w[k2].name<<'\t'<<w[k2].sex<<'\t'<<w[k2].e du<<'\t'<<w[k2].age<<'\t'<<w[k2].salary<<'\t'<<w[k2].address<<'\t'<<w[k2].tel<<endl;break;}}if(flag2){flag2=0;cout<<"不存在此职工!!\n返回主菜单"<<endl;break;}}}else if(i4==3){int salary2;cout<<"请输入要查询的职工的工资:"<<endl;cin>>salary2;int j3=0,k3;int flag3=1;while(flag3){for(;j3<count;j3++){if(salary2==w[j3].salary){flag3=0;k3=j3;cout<<"查询的职工信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t 地址\t电话"<<endl;cout<<w[k3].num<<'\t'<<w[k3].name<<'\t'<<w[k3].sex<<'\t'<<w[k3].e du<<'\t'<<w[k3].age<<'\t'<<w[k3].salary<<'\t'<<w[k3].address<<'\t'<<w [k3].tel<<endl;break;}}if(flag3){flag3=0;cout<<"不存在此职工!!\n返回主菜单"<<endl;break;}}}else if(i4==4){string edu2;cout<<"请输入要查询的职工的学历:"<<endl;cin>>edu2;int j4=0,k4;int flag4=1;while(flag4){for(;j4<count;j4++){if(edu2==w[j4].edu){flag4=0;k4=j4;cout<<"查询的职工信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t 地址\t电话"<<endl;cout<<w[k4].num<<'\t'<<w[k4].name<<'\t'<<w[k4].sex<<'\t'<<w[k4].e du<<'\t'<<w[k4].age<<'\t'<<w[k4].salary<<'\t'<<w[k4].address<<'\t'<<w [k4].tel<<endl;break;}}if(flag4){flag4=0;cout<<"不存在此职工!!\n返回主菜单"<<endl;break;}}}else if(i4==0)menu();}void WorkerList::sort()//职工信息排序功能实现{if(NUM<=0){cout<<"没有职工信息存入,系统将返回主菜单"<<endl;menu();}elsecout<<"请选择排序方式:"<<endl;cout<<"***********************************************"<<endl;cout<<"** 1.按工号排序(升序) **"<<endl;cout<<"** 2.按工号排序(降序) **"<<endl;cout<<"** 3.按姓名排序(升序) **"<<endl;cout<<"** 4.按姓名排序(降序) **"<<endl;cout<<"** 5.按工资排序(升序) **"<<endl;cout<<"** 6.按工资排序(降序) **"<<endl;cout<<"** 0.返回主菜单 **"<<endl;cout<<"***********************************************"<<endl;cout<<endl;cout<<"请选择数字编号0~6"<<endl;int i5;cin>>i5;while(i5<0||i5>6){cout<<"输入有误,请重新输入:"<<endl;cin>>i5;}if(i5==1){int i,j;for(i=0;i<count-1;i++)for(j=0;j<count-1-i;j++)if(w[j].num>w[j+1].num){string temp;temp=w[j].num;w[j].num=w[j+1].num;w[j+1].num=temp;}cout<<"按工号升序后的信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;for(i=0;i<count;i++)cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<< '\t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel <<endl;}else if(i5==2){int i,j;for(i=0;i<count-1;i++)for( j=0;j<count-1-i;j++)if(w[j].num<w[j+1].num){string temp;temp=w[j].num;w[j].num=w[j+1].num;w[j+1].num=temp;}cout<<"按工号降序后的信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;for(i=0;i<count;i++)cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<< '\t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel <<endl;}elseif(i5==3){int i,j;for(i=0;i<count-1;i++)for(j=0;j<count-1-i;j++)if(w[j].name>w[j+1].name){string temp;temp=w[j].name;w[j].name=w[j+1].name;w[j+1].name=temp;}cout<<"按姓名升序后的信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;for(i=0;i<count;i++)cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<< '\t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel <<endl;}elseif(i5==4){int i,j;for(i=0;i<count-1;i++)for( j=0;j<count-i-1;j++)if(w[j].name<w[j+1].name){string temp;temp=w[j].name;w[j].name=w[j+1].name;w[j+1].name=temp;}cout<<"按姓名降序后的信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t 地址\t电话"<<endl;for(i=0;i<count;i++)cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<< '\t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel <<endl;}elseif(i5==5){int i,j;for( i=0;i<count-1;i++)for( j=0;j<count-i-1;j++)if(w[j].salary>w[j+1].salary){int temp;temp=w[j].salary;w[j].salary=w[j+1].salary;w[j+1].salary=temp;}cout<<"按工资升序后的信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t 地址\t电话"<<endl;for( i=0;i<count;i++)cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<< '\t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel <<endl;}elseif(i5==6){int i,j;for( i=0;i<count-1;i++)for(j=0;j<count-i-1;j++)if(w[j].salary<w[j+1].salary){int temp;temp=w[j].salary;w[j].salary=w[j+1].salary;w[j+1].salary=temp;}cout<<"按工资降序后的信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t 地址\t电话"<<endl;for( i=0;i<count;i++)cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<< '\t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel <<endl;}else if(i5==0)menu();}void WorkerList::dele()//职工信息删除功能实现{int i;if(NUM<=0){cout<<"没有职工信息存入,系统将返回主菜单"<<endl;menu();}elsecout<<"职工信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;for( i=0;i<count;i++)cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<< '\t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel <<endl;cout<<"请输入需要删除信息职工的工号:"<<endl;string num3;cin>>num3;int j=0,k;int flag=1;while(flag){for(;j<count;j++){if(num3==w[j].num){flag=0;k=j;break;}}if(flag){cout<<"不存在此员工,请重新输入:"<<endl;j=0;cin>>num3;}}cout<<"你选择的职工的信息为:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;cout<<w[k].num<<'\t'<<w[k].name<<'\t'<<w[k].sex<<'\t'<<w[k].edu<< '\t'<<w[k].age<<'\t'<<w[k].salary<<'\t'<<w[k].address<<'\t'<<w[k].tel <<endl;cout<<"确认请输入Y\t返回主菜单请输入N "<<endl;string p;cin>>p;while(1){if(p=="y"||p=="Y"){cout<<"员工信息已删除!"<<endl;for(int i=0;i<count;i++)if(w[i].num==num3)int j=i;for(;j<=count-1;j++)w[j]=w[j+1];count--;break;}else if(p=="n"||p=="N"){menu();}else{cout<<"输入有误,请重新输入:";cin>>p;}}}void WorkerList::save(){int i;if(NUM<=0){cout<<"没有职工信息存入,系统将返回主菜单"<<endl;menu();}else{ofstream fout;fout.open("D:\\worker.txt",ios_base::out);cout<<"文件正在保存......请稍候!!"<<endl;cout<<"数据保存成功!!!"<<endl;cout<<"已保存员工信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;for(i=0;i<count;i++)fout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<< '\t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel <<endl;cout<<"系统返回主菜单:"<<endl;menu();fout.close();}}void WorkerList::read(){ifstream in("D:\\worker.txt");int i=0;int count=3;for(i=0;i<count;i++){in>>w[i].num>>w[i].name>>w[i].sex>>w[i].edu>>w[i].age>>w[i].salar y>>w[i].address>>w[i].tel;cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<<'\t' <<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel<<en dl;}}int main(){WorkerList e;e.read();login();domain();void save();void read();return 0;}五、测试数据及其结果分析运行后,程序的主菜单界面如下:1.登录页面(1)管理员模式的页面(2)用户模式页面2.主菜单(1)职工信息添加(2)职工信息修改(3)职工信息删除(4)职工信息排序(6)职工信息查找(6)职工信息显示(7)职工信息保存(8)员工信息查看(9)退出六、调试过程中的问题1文件的读入:解决方案:void WorkerList::read(){ifstream in("D:\\worker.txt");int i=0;int count=5;for(i=0;i<count;i++){in>>w[i].num>>w[i].name>>w[i].sex>>w[i].edu>>w[i].age>>w[i].salar y>>w[i].address>>w[i].tel;cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<<'\t' <<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel<<en dl;}}缺点:int count=5;count为常量5,意味着最大只能录入的职工信息的人数最多为5,因此需要手动修改count的数值。