《职工信息管理系统——C++课程设计报告(共41页).doc》由会员分享,可在线阅读,更多相关《职工信息管理系统——C++课程设计报告(共41页).doc(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上课 程 设 计 报 告课程名称 C#程序设计 课题名称 职工信息管理系统 专 业 信息管理与信息系统 班 级 信管1301 学 号 5 姓 名 指导教师 2015年 6 月 10 日湖南工程学院课 程 设 计 任 务 书课程名称 C#程序设计 课 题 职工信息管理系统 专业班级 信管1301 学生姓名 学 号 5 指导老师 李峰、赵锦元、谢雅 审 批 任务书下达日期 2015 年 6 月 10 日任务完成日期 2015 年 6 月 27 日一、设计内容与设计要求1.课程设计目的:全面熟悉、掌握计算机系统与系统软件基本知识,增强对不同的问题运用和灵活选择合适的数据结构以
2、及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,增强面向对象程序设计概念,熟悉C+语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。2.课题题目职工信息管理系统3.设计要求:具有功能:1、添加信息2、显示统计数据3、查找学生成绩4、 修改信息5、删除信息6、插入信息 7、显示全部信息8、退出本系统课程设计报告规范1、完成系统需求分析:包括
3、系统设计目的与意义;系统功能需求;输入输出的要求。2、完成系统概要设计:程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。3、完成系统详细设计:包括采用C+语言定义相关的数据类型;写出各模块的类C+码算法;画出函数的调用关系图。4、调试分析、设计体会、测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。5、关键源程序(带注释)6、其他1)设计正确,方案合理。2)界
4、面友好,使用方便。3)程序精炼,结构清晰。4)设计报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。5)实际操作过程中遇到的问题及解决方法:设计总结及心得体会.6)上机演示。二、进度安排第 16 周 星期一 14时:00分星期二 14时:00分 星期四 14时:00分星期五 14时:00分第 17 周 星期一 14时:00分星期二 14时:00分目 录1 系统需求分析11.1系统设计目的与意义11.2系统功能需求11.3输入输出要求12 总体设计22.1总体设计图22.2 各函数之间的调用关系33 详细设计33.1 采用C+语言定义的相关数据类型:33.2 各功能模块的
5、实现44调试分析及设计体会134.1调试运行的结果134.2 程序调试中的问题145心得体会156附录166.1源代码166.2参考文献:347 评分表35专心-专注-专业1 系统需求分析1.1系统设计目的与意义全面熟悉、掌握计算机系统与系统软件基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,增强面向对象程序设计概念,熟悉C+语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程(数
6、据结构、数据库和汇编语言等课程)的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。1.2系统功能需求职工信息管理系统,具有录入职工信息,职工信息的输入、输出功能可以在数据库中查询、修改、插入和删除所保存的记录,而且具有对职工信息进行排序并显示的功能;并具有退出该系统模块的功能。1.3输入输出要求本系统是一个职工信息管理系统,采用VC+6.0 编译器作为开发环境,这个环境是我们在学习的C+平台。输入数据类型主要是char、int、float等数据类型,输入内容包括:工号、姓名、性别、学历、年龄、工资、地址、电话等数据。用户在输入职工信息保证输入数据格式的正确性,系统不会自动检测输入的
7、数据是否正确可用。输出形式与输入形式类似,根据需要可以选择显示输入的各项内容,还可以修改、删除、查找、显示所有、保存等功能。2 总体设计2.1总体设计图职工信息管理系统职工信息输入输出功能职工信息保存功能按工资从大道小排序按学历、工号或姓名查询职工信息删除或修改功能图2.1.总体设计流程图2.2 各函数之间的调用关系职工信息管理系统系统主菜单主菜单的各个按钮与程序相连接添加函数保存函数 修改函数删除函数排序函数查找函数显示函数对添加的职工信息保存修改职工信 息删除职工信 息对薪水排序按提示查找显示职工信 息保存数据到库中图2.2 各函数的调用关系3 详细设计3.1 采用C+语言定义的相关数据类
8、型:在程序中主要用的是c+面向对象的编程方法,主题是用类来写的,通过各成员属性和成员方法来实现各种功能。数据类型有整形(int)、字符型(char)、字符串型(string),还有各种静态变量:class worker public: worker() void show(); /职工信息显示worker() friend class WorkerList; private: string num,name,sex,edu,address,tel; int age,salary; ; class WorkerList private: worker wN; int NUM; /用来计算职工数目
9、int count; /用来暂时记录当前操作第几个职工 public: void add(); /职工信息录入 void sort(); /职工信息排序void search(); /职工信息查找void dele(); /职工信息删除void modify(); /职工信息修改void save(); /职工信息以文件形式保存void showworker();/显示职工信息在屏幕上WorkerList() NUM=0; count=0; ;3.2 各功能模块的实现(1)职工信息添加函数:职工的信息首先是按照工号来输入的,在输入的同时先与已经存在的信息进行比较,如果输入的工号已经存在,则需要
10、重新输入,如果还没有存在,则依次出入职工的工号,姓名,性别,学历,年龄,工资,地址和电话,其实现代码如下:for(int i=0;iNUM;i+) while(num=wi.num) cout此职工编号已存在,请重新输入:endl; coutnum; wNUM.num=num; coutwNUM.name; coutwNUM.sex; coutwNUM.edu; coutwNUM.age; coutwNUM.salary; coutwNUM.address; coutwNUM.tel; +NUM; count=NUM; (2)职工信息显示函数:进入主菜单之后,通过输入选择项,程序的show()
11、成员函数会直接调用已经存储的职工的信息,直接把所有的职工信息都显示出来,其主要的代码如下: void worker:show() /职工信息显示函数实现 cout工号:numendl; cout姓名:nameendl; cout性别:sexendl; cout学历:eduendl; cout年龄:ageendl; cout工资:salaryendl; cout地址:addressendl; cout电话:telendl; coutendl; (3)职工信息修改函数:进入这一模块功能之后,程序是已经定义按照工号来修改,先输入你需要修改的工号,查找你输入的工号的职工信息是否已经存储,否,则需要重新
12、输入,是的话,进入一个子菜单,选择你需要修改的选项,选择某一项之后,在进行你需要修改的内容,只后在直接保存职工的信息,最后在确认你是否返回主菜单,其主要代码如下: 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; while(i38) cout
13、输入有误,请重新输入:i3; switch(i3) case 1: coutwk.num; cout修改信息已保存,现返回主菜单:endl; menu(); break; case 2: coutwk.name; cout修改信息已保存,现返回主菜单:endl; menu(); break; case 3: coutwk.sex; cout修改信息已保存,现返回主菜单:endl; menu(); break; case 4: coutwk.edu; cout修改信息已保存,现返回主菜单:endl; menu(); break; case 5: coutwk.age; cout修改信息已保存,现
14、返回主菜单:endl; menu(); break; case 6: coutwk.salary; cout修改信息已保存,现返回主菜单:endl; menu(); break; case 7: coutwk.address; cout修改信息已保存,现返回主菜单:endl; menu(); break; case 8: coutwk.tel; cout修改信息已保存,现返回主菜单:endl; (4)职工信息查询函数:进入查找功能模块之后,会有一个子菜单,你会选择一个查找方式,按工号,姓名查找,通过你输入的工号或者姓名用一个for()循环来比较已经存储的职工信息,正确,则会输出你这一工号或者姓
15、名的职工的所有信息;如果是按学历查询,则有一点不同,在已经存储的职工信息中有很多的学历是相同的,这样,在出入的时候,就会输出所有相同学历的职工的信息,其主要的代码如下:if(NUM=0) cout没有职工信息存入,系统将返回主菜单endl; else cout*endl; cout* 请选择查找方式: *endl; cout* 1.按工号查找 *endl; cout* 2.按姓名查找 *endl; cout* 3.按学历查找 *endl; cout* 0.返回主菜单 *endl; cout*endl; cout请输入要查询的职工的工号:endl; for(;jcount;j+) if(num2
16、=wj.num) flag=0; k=j; cout查询的职工信息如下:endl; cout 工号:wk.numendl; cout 姓名:wk.nameendl; cout 性别:wk.sexendl; cout 学历:wk.eduendl; cout 年龄:wk.ageendl; cout 工资:wk.salaryendl; cout 地址:wk.addressendl; cout 电话:wk.telendl; cout请输入要查询的职工的姓名:name2; int j2=0,k2; int flag2=1; while(flag2) for(;j2count;j2+) if(name2=
17、wj2.name) flag2=0; k2=j2; cout查询的职工信息如下:endl; cout 工号:wk2.numendl; cout 姓名:wk2.nameendl; cout 性别:wk2.sexendl; cout 学历:wk2.eduendl; cout 年龄:wk2.ageendl; cout 工资:wk2.salaryendl; cout 地址:wk2.addressendl; cout 电话:wk2.telendl; break; cout请输入要查询的职工的学历:edu2; int j4=0,k4; int flag4=1; while(flag4) for(;j4co
18、unt;j4+) if(edu2=wj4.edu) flag4=0; k4=j4; cout查询的职工信息如下:endl; cout 工号:wk4.numendl; cout 姓名:wk4.nameendl; cout 性别:wk4.sexendl; cout 学历:wk4.eduendl; cout 年龄:wk4.ageendl; cout 工资:wk4.salaryendl; cout 地址:wk4.addressendl; cout 电话:wk4.telendl; break; (5)职工信息排序函数:在程序中的排序这一个功能模块之中,有一个子菜单的选择项,排序的方式是通过工资的多少来升
19、序或者降序排列。排序的的方法是用的冒泡排序,将所有已经存储的职工的工资的多少用冒泡的方法来排序,冒泡法:有N个职工的工资,则需要两个for()循环,外循环有N-1次,最后一个职工的工资不用排序就已经出来,内循环,在第J个则它需要循环的次数为N-J-1次。其主要的程序如下: cout*endl; cout* 请选择排序方式: *endl; cout* 1.按工资排序(升序) *endl; cout* 2.按工资排序(降序) *endl; cout* 0.返回主菜单 *endl; cout*endl; coutendl; cout请选择数字编号02i5; while(i52) cout输入有误,请
20、重新输入:i5; if(i5=1) for(int i=0;icount-1;i+) for(int j=0;jwj+1.salary) worker temp; temp=wj; wj=wj+1; wj+1=temp; else if(i5=2) for(int i=0;icount-1;i+) for(int j=0;jcount-i-1;j+) if(wj.salarywj+1.salary) worker temp; temp=wj; wj=wj+1; wj+1=temp; (6)职工信息删除函数:在程序中删除模块的功能,程序已经定义是按照工号来删除职工的信息,先比较你输入的工号的职工
21、信息是否已经存储,否,则需要重新输入;是,通过一个判断你是否真的需要删除这一职工的信息,删除职工信息的方法是将后一个职工的信息区覆盖前一个职工的信息来达到删除的功能,其主要代码如下:cout请输入需要删除信息职工的工号:num3; int j=0,k; int flag=1; while(flag) for(;jcount;j+) if(num3=wj.num) flag=0; k=j; break; if(flag) cout不存在此员工,请重新输入:num3; cout确认删除请输入Y,返回主菜单请输入N p; while(1) if(p=y|p=Y) cout员工信息已删除!endl;
22、for(int i=0;icount;i+) if(wi.num=num3) int j=i; for(;j=count-1;j+) wj=wj+1; count-; break; else if(p=n|p=N) menu(); else coutp; 4调试分析及设计体会4.1调试运行的结果(1)添加函数:运行程序之后,进入主菜单,通过选择项进入添加职工信息的功能模块,按照提示输入职工的工号,姓名,性别,学历,年龄,工资,地址和电话,一次输入之后再保存职工的信息,输入三次,得到如图4.1所示。图4.1 添加职工图(2)修改函数:再主菜单通过选择项进入修改职工功能模块,输入你要修改职工信息的
23、工号,你输入的工号在存储的信息之中,进入一个子菜单,选择你要修改的的内容如图,选择修改工号为3的职工的姓名,通过修改后的职工信息如图4.2所示。 图4.2 按工号修改图(3)删除函数:进入主菜单通过选择项,在删除功能模块中系统提示你要删除的职工信息,你输入职工工号,如果在已经存储的文件中,则会让你再次确认是否删除该职工的信息,如图4.3是删除职工工号为2的的职工信息,它的结果如图4.3所示。图4.3 按工号删除职工图(4)排序函数: 在排序功能中,有一个子菜单,选择你是升序还是降序排列,图4.4,是按照升序选择项进行升序排列得到的结果,工资选择升序排列之后的结果如图4.4所示。图4.4 按工资
24、升序图(5)查找函数:在查找功能模块之中有按工号,姓名,学历三种查询方式查询,图4.5通过工号查询,输入工号3之后,继续运行程序,得到的结果如图4.5所示。 图4.5 按工号查找职工图4.2 程序调试中的问题(1)语句的最后忘记了加上“;”,使程序发生错误;(2)有时会多打一个“”或者少打一个“”;(3)考虑问题不全面,有漏洞,进行了多次完善。5心得体会在为期两周的课程设计中,我学会了很多东西。将课堂上学会的理论知识运用到实际生活中去,使我把知识掌握的更加的牢固,与此同时也提高了动手实践能力。C+的课程设计让我知道了面向对象编程的优点,以及给我们带来的便利性。整体地评价这次课程设计,我认为收获
25、很大,正如上面所说的那样,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。最重要的还是激发了我编程的兴趣和热情,让我从一个只懂理论变成了能做一些小型程序,让我对编程更加热爱了。6附录6.1源代码#include #includestring #include #include #include #define N 100 /N作为最大职工总数int f=0; /f作为开关using namespace std; s
26、tring p; /p作为接收菜单选项的字符串void menu(); /显示菜单 class worker public: worker() void show(); /职工信息显示worker() friend class WorkerList; private: string num,name,sex,edu,address,tel; int age,salary; ; class WorkerList private: worker wN; int NUM; /用来计算职工数目int count; /用来暂时记录当前操作第几个职工 public: void add(); /职工信息录入
27、 void sort(); /职工信息排序void search(); /职工信息查找void dele(); /职工信息删除void modify(); /职工信息修改void save(); /职工信息以文件形式保存void showworker();/显示职工信息在屏幕上WorkerList() NUM=0; count=0; ; void menu() /显示菜单 coutendl; cout*endl; cout* *endl; cout* 职工信息管理系统主菜单 *endl; cout* *endl; cout* 1.职工信息添加 *endl; cout* 2.职工信息修改 *en
28、dl; cout* 3.职工信息删除 *endl; cout* 4.职工信息排序 *endl; cout* 5.职工信息查找 *endl; cout* 6.职工信息显示 *endl; cout* 7.职工信息保存 *endl; cout* 0.退出 *endl; cout* *endl; cout*endl; coutendl; void domain() /主菜单函数实现 WorkerList wl; while(1) system(cls); menu(); cout请选择数字编号07i1; while(!(i1=0&i1=7) cout输入有误,请重新输入:i1; switch(i1)
29、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 0:cout系统退出!endl; exit(0); default: break; cout是否返回主菜单? Y/Np; if(p=n|p=N) cout系统退出!endl; exit(0); void WorkerList:add()
30、 /职工信息添加函数实现 cout请输入职工信息:endl; coutnum; for(int i=0;iNUM;i+) while(num=wi.num) cout此职工编号已存在,请重新输入:endl; coutnum; wNUM.num=num; coutwNUM.name; coutwNUM.sex; coutwNUM.edu; coutwNUM.age; coutwNUM.salary; coutwNUM.address; coutwNUM.tel; +NUM; count=NUM; void worker:show() /职工信息显示函数实现 cout工号:numendl; cou
31、t姓名:nameendl; cout性别:sexendl; cout学历:eduendl; cout年龄:ageendl; cout工资:salaryendl; cout地址:addressendl; cout电话:telendl; coutendl; void WorkerList:modify() /职工信息修改函数实现 if(NUM=0) cout没有职工信息存入,系统将返回主菜单endl; menu(); cout请输入需要修改信息职工的工号:num1; int j=0,k; int flag=1; while(flag) for(;jcount;j+) if(num1=wj.num)
32、 flag=0; k=j; break; if(flag) cout不存在此员工,请重新输入:num1; cout你选择的职工的信息为:endl; cout 工号:wk.numendl; cout 姓名:wk.nameendl; cout 性别:wk.sexendl; cout 学历:wk.eduendl; cout 年龄:wk.ageendl; cout 工资:wk.salaryendl; cout 地址:wk.addressendl; cout 电话:wk.telendl; coutendl; 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.修改电话 *e