职工信息管理系统设计

上传人:1888****888 文档编号:39488208 上传时间:2021-11-11 格式:DOC 页数:27 大小:1.46MB
收藏 版权申诉 举报 下载
职工信息管理系统设计_第1页
第1页 / 共27页
职工信息管理系统设计_第2页
第2页 / 共27页
职工信息管理系统设计_第3页
第3页 / 共27页
资源描述:

《职工信息管理系统设计》由会员分享,可在线阅读,更多相关《职工信息管理系统设计(27页珍藏版)》请在装配图网上搜索。

1、 2012年下半学期C语言课程设计报告题 目:职工信息管理系统设计专业班级:11级计科一班 姓 名:徐传轩 学 号:110104011102 指导教师:鲁丽 目录摘 要1前 言2正 文31.系统需求分析32. 系统总体设计43.详细设计64.系统测试95.软件使用说明书13设计总结14参考文献15致 谢16附录:部分原程序代码17摘 要建立一个“职工信息管理系统”,系统以菜单方式工作,编写存放有职工基本信息,包含职工工号,姓名,性别,年龄,学历,工资,住址,电话等,并且要求录入职工号不重复;输入的职工号信息要求用文件形式保存,并可以对其进行查询、修改、删除等基本操作,建立职工信息管理的文件。关

2、键词:职工信息管理;文件;浏览;查询;修改前 言随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展要高效率的把内部活动有机的组织起来,就必须建立自身特点相适应的管理信息系统。本组设计的是一个关于职工信息管理的数据库系统,通过这个系统,管理员可以简捷方便的对职工信息进行增加、删除、修改等功能,而用户也可以通过这个系统对职工信息进行查询等功能。正文1.系统需求分析1.1需求概述:(1)新建并输入职工数据;(2)按条件输出职工数据;(3)修改制定职工的数据;(4)删除数据;(5)推出;1.2 需求说明:(1

3、)职工信息包括员工编号、姓名、性别、年龄、学历、工资、电话、住址等,并且要求职工号不重复。(2)录入的职工信息要求用文件形式保存,并可以对其进行查询、修改、删除等基本操作。(3)职工信息的显示要求有一定的规范格式。 (4)能直接浏览所有员工数据或按职工学历、年龄、职工编号等条件查询,要求能返回所有符合条件的职工的信息。(5)对职工信息的修改应逐个地进行,在一个职工的信息的更改不影响其他的职工记录。(6)所设计的系统应以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并要求在此过程中能尽可能地兼容用户使用过程中的异常情况。2. 系统总体设计一、编写目的根据需求分析文档,初

4、步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案,并写出书面文档总体设计说明书,为下一步进行详细设计做准备。二、总体设计1.功能划分该系统可以按功能进行模块划分,如图1所示。输出全体职工信息新建并输入职工数据按职工学历输出按条件输出职工数据主菜单按职工年龄输出修改指定职工的数据按职工编号输出删除数据 图1 系统模块图其中:退出(1) 菜单选择模块完成用户命令的接受,此模块也是职工信息管理的入口,用户所要进行的各种操作均需在此模块中进行选择,并进而调用其他模块实现相应的功能。(2) 新建并输入职工数据模块完成职工信息的输入功能,输入信息包括职工号、姓名、性别、年龄、学历、工资、电

5、话、住址等。(3) 按条件输出职工数据模块完成已录入职工信息的显示与查找的输出功能。查询时对应有按学历查询,按年龄查询和按编号查询三种方式。(4) 信息修改模块完成职工信息的修改功能。(5) 信息删除功能模块完成职工信息的删除功能。2.数据结构本系统中主要的数据结构就是职工的信息,包含职工号、姓名、性别、年龄、学历、工资、电话、住址等,在处理过程中各项可以作为一个职工的不同属性来进行处理。3.程序流程系统的执行应从功能菜单选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如图2所示:开始菜单选择输入?浏览?查询?修改?否否删除

6、?信息输入信息浏览信息查询信息修改信息删除是是是是是结束否否否 图2 程序流程图3.详细设计1.数据结构(1)信息数组string EnameN; /姓名数组long EnumN; /工号数组char EsexN; /性别数组int EageN; /年龄数组int EdegreeN;/ 学历数组float EwageN;/工资数组string EtelN;/电话号码数组string EaddrN;/员工住址数组(2) 员工信息class Employee public: string Employeename; /员工姓名 long Employeenum; /员工工号 char Employ

7、eesex; /员工性别 int Employeeage; /员工年龄 int Employeedegree;/员工学历 float Employeewage;/员工工资 string Employeetel;/员工电话 string Employeeaddr;/员工地址 static long EmployeeMaxNum; void NewInformation(); /增添新的员工信息函数 void ShowInformation(); /输出员工信息函数 void Showall(); /输出所有的员工信息函数 void Showbydegree(int degree); /按学历输出

8、员工的信息函数 void Showbyage(int min,int max); /按年龄输出员工的信息函数 void Showbynum(long number); /按工号输出员工的信息函数 void RefreshInformation(); /更新员工的信息函数 void DeleteInformation(); /删除员工的信息函数 static int MaxNum(); /返回系统已经存储的人数;2.各个功能模块的处理流程对应于总体设计时的系统模块图,各个功能模块的处理流程如下:(1)新建并输入职工数据模块 打开职工信息文件; while(继续输入) 读入职工信息; 将读入的信息

9、添加到职工信息文件中; 提示是否继续输入; 关闭职工信息文件;(2)按条件输出职工数据模块 1、信息浏览模块 打开职工信息文件; while(不到文件结束) 从文件中顺序读出一个职工的信息; 按指定格式输出该职工的信息; 关闭职工信息文件; 2、信息查询模块 while(继续查询) if(按学历查询) 读入该学历数据; 打开职工信息文件; while(不到文件结束) 顺序读出一个职工的信息; if(该职工信息的符合条件) 输出该职工的信息; 关闭职工信息文件; 提示共有几条符合调价的记录; else if(按姓名查询) 读入查询的职工姓名; 打开职工信息文件; while(不到文件结束) 顺序

10、读出一个职工的信息; if(该职工信息的姓名符合条件) 输出该职工的信息; 关闭职工信息文件; 提示共有几条符合条件的记录; else 提示输入不合适; 提示是否继续查询; (3)信息修改模版 while (继续修改) 打开职工信息文件; 打开临时文件; 提示并读入待修改的职工的编号; While (不到文件结束) 顺序读出一个职工的信息; if (该职工信息的编号符合条件) 将职工的信息进行修改; 将职工的信息写入临时文件中; 关闭原信息文件; 关闭临时文件; 删除原信息文件; 将临时文件的名字改为原信息文件的名字; (4)信息删除模块 while (继续删除) 提示并读入待删除的职工号;

11、打开职工信息文件; 查找是否有符合条件的职工记录; if (有符合条件的记录) 创建一个新的临时文件; while (原信息文件中记录未读完) 读出原信息文件中的下一条记录; if (此条记录不是待删除记录) 写入临时文件中间去; 关闭原信息文件; 关闭临时文件; 删除原信息文件; 将临时文件的名字改为原信息文件的名字; else 提示没有符合条件的记录存在; (5)菜单选择模板 给出信息提示; 清屏; 绘制菜单(包含输入 显示&查询 修改 删除 退出); 提示菜单选择并读入到变量; 返回变量的值;4.系统测试一、设置测试数据根据以下几个列子分析测试:1.录入:职工号:2009003 姓名:山

12、鸡 性别:男年龄:19 学历:本科工资:2000 地址:文华学院电话:1102.查询单个职工号2009002的职工信息3.修改姓名山鸡的职工信息4.删除职工号为2009002的职工信息5.浏览所有职工信息6.退出二、测试结果及分析(1) 职工信息录入分析图如图1所示:图1 输入分析图(2)职工信息查询分析图如图2所示:图2查询分析图(3)修改职工信息如图3所示图3修改信息图(4)职工信息删除分析图如图4所示:图4 删除分析图(5)职工信息退出分析图如图6所示:图5 退出分析图5.软件使用说明书(1)根据正确的提示安装软件。(2)Intel486以上系列、AMD K6 以上系列等PC台式机和便携

13、式电脑都可运行。 (3) 打开该程序系统,浏览菜单,根据需要选择功能,进行各项操作。操作如下:点击开始菜单,进入菜单选择。输入:将所需的信息输入。输出:职工基本信息。输入:根据不同的需要选择,当信息输入显示出错误时,进入浏览信息,找出错误。当错误不能改正,则退出浏览信息。进入查询信息:则屏幕会出现已一个对话框按编号查找,把相应的所需信息的状态。当查询不能显示需要时进入修改程序,把所输入的信息进行修改,使之正确能够正常运行或进入删除信息中,重新输入自己所要的信息。当信息输入正确,进入你所需要的菜单程序中:职工信息:显示职工号、姓名、性别、年龄、学历、工资、电话、住址等。管理员信息:显示出职工信息

14、管理的负责人及他们的工号。设计总结 在本系统的开发过程中,由于组是初次开发软件,在知识、经验方面都存在着不足。另外,在整个开发的过程中,时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。因为对职工信息管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。通过开发这个系统,我组掌握了的项目基本开发过程,用到的知识巩固了我组对C语言的学习,但在这次设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互

15、帮助的精神。参考文献(1) C语言程序设计教程-杨有安、陈维、曹惠雅、鲁丽编(2) C Primer Plus(第五版)中文版-Stephen Prata致 谢在编写程序的过程中,我们得到了老师的精心指导以及孜孜不倦的教诲,在老师的指导下,我们的能力得到了提高,同时养成了科学、严谨的作风和习惯,在此,我们对老师的精心栽培表示衷心的感谢! 同样,我也感谢在完成过程中对我有所帮助的同学,附录:部分原程序代码#include #include #include using namespace std;const N=1000; / 定义系统可录入的员工最大数值string EnameN; /姓名数组

16、long EnumN; /工号数组char EsexN; /性别数组int EageN; /年龄数组int EdegreeN;/ 学历数组float EwageN;/工资数组string EtelN;/电话号码数组string EaddrN;/员工住址数组class Employee public: string Employeename; /员工姓名 long Employeenum; /员工工号 char Employeesex; /员工性别 int Employeeage; /员工年龄 int Employeedegree;/员工学历 float Employeewage;/员工工资 s

17、tring Employeetel;/员工电话 string Employeeaddr;/员工地址 static long EmployeeMaxNum; void NewInformation(); /增添新的员工信息函数 void ShowInformation(); /输出员工信息函数 void Showall(); /输出所有的员工信息函数 void Showbydegree(int degree); /按学历输出员工的信息函数 void Showbyage(int min,int max); /按年龄输出员工的信息函数 void Showbynum(long number); /按工

18、号输出员工的信息函数 void RefreshInformation(); /更新员工的信息函数 void DeleteInformation(); /删除员工的信息函数 static int MaxNum(); /返回系统已经存储的人数;class DatabaseOperate public: string Employeename; long Employeenum; char Employeesex; int Employeeage; int Employeedegree; float Employeewage; string Employeetel; string Employeea

19、ddr; static long EmployeeMaxNum; void WriteInformation(int num);/ 把信息写入文件函数 void ReadOut(); /从文件中读取信息函数 void RefreshMaxNum(int num); /更新系统中员工计数文件的函数 /(i=1 or -1 or 0 );long Employee:EmployeeMaxNum = 2009000;int Employee:MaxNum() /返回系统已经存储的人数 int MN = 0; ifstream myf; myf.open(EmployeeMaxNum.txt); my

20、fMN; /coutMNendl; myf.close(); return MN; void Employee:NewInformation() /添加新成员 coutEmployee:Employeename; Employee:Employeenum = EmployeeMaxNum + Employee:MaxNum()+1; coutEmployee:Employeesex; coutEmployee:Employeeage; cout新员工学历,请输入相应学历的序号: endl; coutEmployee:Employeedegree; while(Employee:Employee

21、degree !=1&Employee:Employeedegree !=2 &Employee:Employeedegree !=3&Employee:Employeedegree !=4 &Employee:Employeedegree !=5) cout输入有误,请重新输入:endl; coutEmployee:Employeedegree; coutEmployee:Employeewage ; coutEmployee:Employeetel ; coutEmployee:Employeeaddr ; DatabaseOperate database; database.ReadOu

22、t(); int MaxNum = Employee:MaxNum(); EnumMaxNum = Employee:Employeenum; EnameMaxNum = Employee:Employeename; EsexMaxNum = Employee:Employeesex; EageMaxNum = Employee:Employeeage; EdegreeMaxNum = Employee:Employeedegree; EwageMaxNum=Employee:Employeewage ; EtelMaxNum=Employee:Employeetel ; EaddrMaxNu

23、m=Employee:Employeeaddr ; database.WriteInformation(1); cout 添加新成员成功!endl; return; void Employee:ShowInformation() /程序主体 数据输出函数 int choice1,choice2,min,max; long searchnum; Employee e; cout*请选择查询方式:*endl; cout*endl; cout* 输出全体职工信息- 1endl; cout* 按职工学历输出- 2endl; cout* 按职工年龄输出- 3endl; cout* 按职工编号输出- 4e

24、ndl; cout*choice1; switch(choice1) case 1: Showall();break; case 2: cout请输入要查询职工的学历编号: ; coutchoice2; e.Showbydegree(choice2);break; case 3: cout请输入要查询的年龄范围: ; coutmin; coutmax; e.Showbyage(min,max);break; case 4: coutsearchnum; e.Showbynum(searchnum);break; default: cout出错啦! endl;break; void Employ

25、ee:Showall() /全体员工输出函数 int i; long number; for(i=0;iEmployee:MaxNum();i+) number = Enumi; Showbynum(number); void Employee:Showbydegree(int degree) /按员工学历输出函数 int i; switch(degree) case 1: cout*初中学历的员工有:*endl;break; case 2: cout*高中学历的员工有:*endl;break; case 3: cout*本科学历的员工有:*endl;break; case 4: cout*硕

26、士学位的员工有:*endl;break; case 5: cout*博士学位的员工有:*endl;break; for(i=0;iEmployee:MaxNum();i+) if(Edegreei = degree) long number = Enumi; Showbynum(number); else continue; void Employee:Showbyage(int min,int max) /按员工年龄段输出函数 int i; for(i=0;i=min&Eagei=max) long number = Enumi; Showbynum(number); else contin

27、ue; void Employee:Showbynum(long number) /按员工工号输出函数 int i; for(i=0;iEmployee:MaxNum();i+) if(Enumi = number) cout*endl; coutEnumiendl; coutEnameiendl; cout; if(Esexi=f) cout女 endl; else if(Esexi=m) cout男 endl; coutEagei岁endl; cout; switch (Edegreei) case 1:cout初 中 endl;break; case 2:cout高 中 endl;bre

28、ak; case 3:cout本 科 endl;break; case 4:cout硕 士 endl;break; case 5:cout博 士 endl;break; coutEwagei元endl; coutEteliendl; coutEaddriendl; cout*endl; else continue; void Employee:RefreshInformation() /修改员工信息的函数 int cNum = 2009000; DatabaseOperate database; database.ReadOut(); cout; cincNum; int MN; MN = E

29、mployee:MaxNum(); for(int i=0;iMN;i+) /遍历数据文件,查找要修改的员工数据 if(Enumi = cNum) Employee:Showbynum(cNum);/录入员工的新的数据,员工号保持不变 cout请输入该员工的新信息: endl; coutEmployee:Employeename; Enamei = Employee:Employeename; coutEmployee:Employeesex; Esexi = Employee:Employeesex; coutEmployee:Employeeage; Eagei = Employee:Em

30、ployeeage; cout新员工学历,请输入相应学历的序号:endl; coutEmployee:Employeedegree; while(Employee:Employeedegree !=1&Employee:Employeedegree !=2 &Employee:Employeedegree !=3&Employee:Employeedegree !=4 &Employee:Employeedegree !=5) cout输入有误,请重新输入:endl; coutEmployee:Employeedegree; Edegreei = Employee:Employeedegree

31、; coutEmployee:Employeewage; Ewagei = Employee:Employeewage; coutEmployee:Employeetel; Eteli = Employee:Employeetel; coutEmployee:Employeeaddr; Eaddri = Employee:Employeeaddr; break; database.WriteInformation(0); void Employee:DeleteInformation() /删除员工数据的函数 char tmp; int cNum = 2009000; DatabaseOper

32、ate database; database.ReadOut(); void Employee:Showbynum(long number); cout: ; cincNum; int MN; MN = Employee:MaxNum(); for(int i=0;iMN;i+) /遍历数据文件,查找要删除的员工 if(Enumi = cNum) Employee:Showbynum(cNum); couttmp; if(tmp=y) if(i=MN-1) database.WriteInformation(-1); else for(int j=i;jMN-1;j+) Enumj = Enu

33、mj+1; database.WriteInformation(-1); cout 删除操作成功 ! endl; void DatabaseOperate:WriteInformation(int num) /数据操作函数 写入 DatabaseOperate:RefreshMaxNum(num); ofstream myfile(Employee.txt); Employee e; int MN; MN = e.MaxNum(); for(int i=0;iMN;i+) myfileEnuminEnameinEsexin EageinEdegreeinEwagein EtelinEaddri

34、n; myfile.close(); return; void DatabaseOperate:ReadOut() /数据操作函数 读出 ifstream myfile(Employee.txt); Employee e; int MN; MN = e.MaxNum(); for(int i=0 ;iEnumiEnameiEsexiEagei EdegreeiEwageiEteliEaddri; myfile.close(); void DatabaseOperate:RefreshMaxNum(int num) /更新系统中员工计数文件的函数 int MaxNum = 0; ifstream

35、 myif(EmployeeMaxNum.txt); myifMaxNum; myif.close(); MaxNum = MaxNum+num; ofstream myof(EmployeeMaxNum.txt); myofMaxNum; myof.close(); int main() /主函数 system(color 09f); /设置当前窗口的背景色为淡蓝色 int select = 0; while(select!=5) cout 主菜单endl; cout 请选择功能 endl; cout endl; cout 1.新建并输入职工数据 endl; cout 2.按条件输出职工数据

36、 endl; cout 3.修改指定职工的数据 endl; cout 4.删除数据 endl; cout 5.退出 endl; cout endl; cout endl; coutselect; Employee e; DatabaseOperate database; switch(select) case 1: e.NewInformation(); break; case 2: database.ReadOut(); e.ShowInformation(); break; case 3: e.RefreshInformation(); break; case 4: e.DeleteInformation(); break; case 5: break; default: cout命令错误!endl; if(select = 5) break; exit(1); return 0; 26

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!