职工信息管理系统——C++课程设计报告_第1页
职工信息管理系统——C++课程设计报告_第2页
职工信息管理系统——C++课程设计报告_第3页
职工信息管理系统——C++课程设计报告_第4页
职工信息管理系统——C++课程设计报告_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

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

温馨提示

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

最新文档

评论

0/150

提交评论