c++职工信息管理系统课程设计说明书(带全部源码)
- 格式:doc
- 大小:494.00 KB
- 文档页数:29
高级语言程序设计说明书职工信息管理系统系别专业班级学生姓名指导教师注释:2010.......................计算机工程系《高级语言程序设计》大作业目录引言 (3)程序结构 (3)程序流程图 (4)程序源程序模块设计说明 (5)1.函数头 (5)2.主函数 (5)3.基类及继承类 (5)3-1.基类 (5)3-2.继承类 (6)3-3.公司类 (6)程序使用说明 (8)总结 (9)引言程序名称:职工信息管理系统开发平台:windows 7Microsoft Visual C++ 6.0主要功能:1。
添加职工信息;2。
删除职工信息及薪酬;3。
修改职工信息;4。
查询职工信息及薪酬;5。
设置职位基本薪酬;6。
存储职位信息;程序说明:准确性要求高,可靠性要求高,输入控制严格,页面响应时间短,用户界面友好,输出准确,功能强大!!!运行环境:Windows NT/2000/XP/VISTA/WIN7文件说明:程序源代码(职工信息管理系统.cpp);程序运行文件(职工信息管理系统.exe);职工信息存储文件(Employee.text);参考资料:《C++程序设计》谭浩强编著清华大学出版社程序结构函数头:<iostream.h> // cin , cout , 等函数<string.h> //类,对象,等函数定义<fstream.h> // 文本文档的读/写/复制等函数<ctype.h>主函数:void main ()基类职工类employee派生类:Technician技术员类、Salesman销售员类、Salesmanager销售经理类、Manager经理类、Company公司类。
在公司类中定义六个模块功能的实现方法:void Add () //添加void Delete () //删除void Modify () //修改void Query () //查询 void set () //设置void Save() //载入void Load() //储存程序流程图程序流程图程序源程序模块设计说明1.函数头:#include <iostream>#include <fstream>#include <ctype.h>#include <string.h>调用系统在程序中将要用到的函数。
课程设计说明书课程名称C++项目设计设计题目学生姓名学号专业指导教师年月日课程设计评语与成绩评定综合评定成绩:优秀 良好 中等 及格 不及格指导教师:年 月 日项目评判标准 (在每一项目对应的标准下方空格内标记√)优秀良好 中等 及格 不及格 工作量能很好地完成任务书规定的工作量。
能较好地完成任务书规定的工作量。
按时完成任务书规定的工作量。
基本完成任务书规定的工作量。
没有完成任务书规定的工作量。
资料收集方案设计独立提出实施方案,有分析整理、获取新知识的能力。
能阅读一些自选资料,能较好地分析整理各类信息。
能分析整理各类信息。
能阅读教师指定的参考资料。
未完成教师指定的参考资料的阅读。
综合应用能力 能熟练掌握和运用基本理论,取得的结果有一定的实用价值。
能熟练掌握和运用有关理论,能独立取得结果。
较好地掌握有关理论,在教师指导下能完成工作。
掌握和运用理论比较符合要求。
基本理论模糊不清,无任何结果。
技术水平实际能力设计合理,有较强的实际动手能力和计算机应用能力。
设计比较合理、有一定的实际动手能力和计算机应用能力。
设计比较合理,实际动手尚可。
设计基本合理,理论分析与实施无大错。
设计不合理,实际动手能力差。
说明书撰写质量结构严谨,逻辑性强,层次清晰,文字流畅,符合规范化要求,打印精美。
结构合理,符合逻辑,文章层次分明,语言准确,达到规范化要求,打印工整。
结构基本合理,层次较分明,文理通顺,基本达到规范化要求。
结构基本合理,文字尚通顺,勉强达到规范化要求。
结构混乱,文字表达不清,错别字较多,达不到规范化要求。
学习态度态度认真,作风严谨,严格按进度开展各项工作。
学习态度比较认真,能按期圆满完成任务书规定的任务。
遵守纪律,基本保证设计时间,按期完成各项工作。
态度尚可,在指导教师的帮助下能按期完成任务。
纪律涣散,不能保证设计时间和进度。
目录一、系统开发相关情况 (1)(一)开发背景 (1)(二)系统开发的目标 (1)二、系统以及需求分析 (1)(一)系统目标 (1)(二)系统可行性分析 (1)1、技术可行性分析 (1)2、开发工具可行性分析 (2)三、程序功能描述以及模块结构 (2)(一)功能模块描述及主要类描述 (2)(二)程序流程图 (3)(三)数据结构表 (4)四、用户使用说明与调试结果 (4)(一)使用说明 (4)(二)调试结果 (4)(三)优缺点分析 (8)五、总结 (8)参考文献: (9)附录:职工信息管理系统源码(C++) (9)随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。
课程设计报告(本科)课程:高级语言课程设计学号:姓名:班级:教师:时间:计算机科学与技术系23图1:进入主菜单界:”进行录入职工信息2.输入数字“1:录入职工信息图2。
y3.输入“”返回主菜单(界面同图1):职浏2入4.输“”览工息信 43:浏览职工信息图 3输入“y”后继续,输入“”进行查询职工信息:5.:按职工号查询职工信息图457图:按姓名删除职工信息:按职工号删除职工信息图8:职添进5入单主进7.入菜输“”行加工息信6:添加职工信息图9:工信息”进行修改职6单进8.入主菜输入“:按姓名修改职工信息10图:按职工号修改职工信息图11:息工出””输菜入9.进主单入7退职信管统理系7退出系统图12:优点是:基本实现了程序的多功能,对与查询职工信息提供了三种方法,对与修改和删除职工信息提供了两种方法,功能多种多样。
旗帜变量的使用也是优点之一;这个程序用到了的结构体,整个程序简单,易懂。
缺点是:保存职工信息有限,程序段比较臃长。
设计体会与建议:语言函数调语言,学会更好的使用C通过这次的课程设计,我更加了解C用和结构体等,把学过的知识运用于实践中,而不仅仅停留于对课本的单纯理要学习的东西还有很多。
想完成一项功能解;这次设计也让我知道我懂的太少,就要用很复杂的语句去实现,所以整个程序变的很长,复杂,但是结构体,数组,指针等的灵活运用又可使程序变的易懂。
另外,团队的合作也是成功的一部分!结果找起来和修改,在编写代码时一开始没有运用有意义的函数名和变量我认为最重要的就是耐心和细心。
,也使别人看不懂。
在整个课程设计中,好麻烦细心,就是在编写过程中注意拼写,仔细编写程序;耐心,就是程序编译中出现很多错误的时候能够耐心去修改,只有这样,才能很好的完成程序。
虽然在整个过程中出现了不少错误,但最终还是圆满完成了,此次程序设以前好多不懂的也都理解了。
也学会了作为大学生我,计的经历让我学到了太多们也应该学会不仅从课堂上学习知识,还应该学会自学。
洛阳理工学院课程设计说明书课程名称C语言程序设计设计课题职工管理系统专业计算机科学与技术班级B140501学号姓名完成日期2015-7-1课程设计任务书设计题目:职工信息管理系统设计内容与要求:1.1问题描述对职工信息进行管理,职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
1.2基本要求(1) 系统以菜单方式工作(2) 职工信息录入功能(职工信息用文件保存) 。
(3) 输出职工信息、浏览职工信息功能。
(4) 查询和排序功能:(至少一种查询方式) ,如按工资查询、按学历查询等。
(5) 职工信息删除、修改功能(任选项)。
指导教师:_______________年月日课程设计评语成绩:指导教师:_______________年月日目录1.设计概述2.总体设计3.功能模块图3.1录入员工数据3.2输出员工数据3.3查找员工数据3.4修改员工数据4.测试5.设计总结6.源代码概述设计的目标是建立一个可以录入,浏览,查找以及修改员工所有数据的职工管理同,在不知道有多少职工的情况下我采用了动态链表的方式来使员工的信息录入的更加简单方便。
实现浏览员工信息的过程中我选择了用循环的方式输出每一个节点信息,同样用循环的方法通过每一个节点中的工号所要查找的工号的对比,实现了员工数据的查找,然后将printf改成scanf从而实现了修改员工信息。
这五个功能均在一个不停循环的系统中,每完成一种操作就会返回主界面重新选择要进行的操作,实现退出系统的功能时用break直接跳出五个功能的循环,从而结束整个信息管理系统。
录入员工数据输出员工数据查找员工数据修改员工数据测试录入员工数据输出员工数据查找员工数据修改员工数据退出系统设计总结在程序还没有开始写之前,我一直在想用什么方式来写这个程序,使用一直使用的循环还是用刚学的自己并不熟悉的链表,因为用循环的写法许久没有头绪,最后我选择了写起来难度高但是代码比较简洁的链表。
*******************实践教学*******************兰州理工大学计算机与通信学院2010年春季学期计算机语言B 课程设计题目:职工信息管理系统专业班级:姓名:学号:指导教师:成绩:目录摘要 (3)前言 (3)正文 (3)1. 问题描述 (3)2. 需求分析 (4)3. 系统总体设计 (4)4. 详细设计....................................... 错误!未定义书签。
5. 系统测试....................................... 错误!未定义书签。
6. 软件使用说明书 (8)总结 (9)参考文献 (9)致谢 (9)附件Ⅰ部分原程序代码 (10)摘要该设计要求学生以某企业职工信息管理业务为背景,设计、开发一套“职工信息管理系统”软件。
通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对c语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
得到软件工程的综合训练,提高解决实际问题的能力。
关键词:职工信息管理;文件;浏览;查询;修改;前言近年来,随着每一个企业规模的不断扩大,员工数量也相应的增加,面对着如此复杂的企业员工信息,有必要建立一个企业职工管理系统对员工进行管理,使企业更具规范化、整体化、全局化,使个各员工都能充分发挥自己在相应职位中的作用。
因此,建立一个比较全面的职工信息系统有助于公司的合理化运作。
正文1. 问题描述由于员工数量的不断增加,员工的信息没有办法统一记录,因此,就有必要建立一个职工信息系统来解决当前问题。
2. 需求分析本系统通过对员工信息的管理,有助于上层领导集团对职工更准确的了解,在人员调配方面更能各显其才,产生更大的经济效益。
现在有很多的小型工厂或公司都没有涉及到电脑方面,没有很好地保存职工的信息,仅仅是用一些档案保存,这样容易丢失,保存起来也不方便,查找更是费劲,如有职工的信息作废,文档就只能作废了。
c语言职工信息管理系统课程设计一、教学目标本课程的教学目标是使学生掌握C语言职工信息管理系统的基本概念、设计与实现。
通过本课程的学习,学生应达到以下知识目标:1.理解C语言的基本语法和数据结构。
2.掌握职工信息管理系统的需求分析和系统设计。
3.学会使用C语言实现职工信息管理系统的功能。
4.能够使用C语言进行程序设计。
5.能够独立完成职工信息管理系统的需求分析和系统设计。
6.能够使用C语言实现职工信息管理系统的功能并调试程序。
情感态度价值观目标:1.培养学生对计算机科学的兴趣和热情。
2.培养学生独立思考、解决问题的能力。
3.培养学生团队协作、沟通的能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、职工信息管理系统的需求分析和系统设计,以及C语言实现职工信息管理系统的方法。
1.C语言的基本语法:数据类型、变量、运算符、表达式、语句等。
2.数据结构:数组、链表、栈、队列等。
3.职工信息管理系统的需求分析:系统功能、数据流图、实体关系图等。
4.职工信息管理系统的系统设计:模块划分、模块功能、接口设计等。
5.C语言实现职工信息管理系统:代码编写、调试与优化。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解C语言的基本语法、数据结构和职工信息管理系统的相关知识,使学生掌握基本概念。
2.案例分析法:分析实际案例,使学生了解职工信息管理系统的需求分析和系统设计的过程。
3.实验法:让学生动手编写C语言代码,实现职工信息管理系统的功能,培养学生的实际操作能力。
四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用权威、实用的C语言教材,为学生提供系统、全面的学习资料。
2.参考书:提供相关领域的参考书籍,丰富学生的知识体系。
3.多媒体资料:制作课件、视频等多媒体资料,提高课堂教学效果。
4.实验设备:提供计算机、编程环境等实验设备,确保学生能够进行实际操作。
c语言职工信息管理系统课程设计一、课程目标知识目标:1. 理解C语言中数组、结构体和文件操作的基本概念;2. 学会使用C语言编写职工信息管理系统的基本功能,如增加、删除、修改和查询职工信息;3. 掌握利用C语言进行简单的数据处理和分析。
技能目标:1. 能够运用结构体数组管理职工信息;2. 独立编写代码实现职工信息的增加、删除、修改和查询功能;3. 学会使用文件操作将职工信息存储到文件中,并从文件中读取数据;4. 通过编程实践,培养解决问题的能力和逻辑思维能力。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养良好的编程习惯;2. 培养学生的团队协作意识和沟通能力,通过分组讨论和实践,共同完成职工信息管理系统的开发;3. 强化学生的责任感和使命感,认识到信息技术在现实生活中的应用和价值。
课程性质:本课程为实践性较强的课程,结合课本知识,让学生通过实际操作,掌握C语言编程的基本方法和技巧。
学生特点:学生已具备一定的C语言基础,熟悉基本语法和简单程序设计,但缺乏实际项目经验。
教学要求:注重理论与实践相结合,引导学生通过动手实践,提高编程能力和解决问题的能力。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 理论知识:- 复习C语言基础:数据类型、运算符、控制语句等;- 数组与字符串:数组的使用,字符串操作;- 结构体:定义结构体,结构体数组,结构体指针;- 文件操作:文件的打开、关闭、读写,以及文件存储职工信息。
2. 实践操作:- 设计职工信息结构体,创建职工信息数组;- 编写增加、删除、修改和查询职工信息的功能函数;- 利用文件操作存储和读取职工信息;- 集成职工信息管理系统,实现用户界面。
3. 教学大纲:- 第一周:复习C语言基础知识,讲解数组与字符串;- 第二周:学习结构体,设计职工信息结构体;- 第三周:文件操作学习,实现职工信息的存储与读取;- 第四周:编写职工信息管理系统的功能函数;- 第五周:集成系统,测试与优化。
1.设计目的在今天这个高速信息时代,许多繁杂的办公事务都由计算机代劳,例如职工信息管理等重复劳动越来越需要计算机来处理。
本系统就是为提高企业管理职工信息的效率而设计的,现在职工信息管理系统发挥无可取代的作用。
职工信息管理系统是一个可以用来进行职工工号、姓名等自然信息以及各项工资构成进行录入、查询、修改、删除、增加和排序浏览等操作的应用软件。
2.设计的总体思想本系统是用Visual C进行设计与开发,总体思想是结构化、模块化的程序设计。
由于主要实现的是管理系统的增、删、改、查和排序等功能,因此应用到程序设计中的基本控制结构,如循环和选择,还使用到C语言最具特色的语言成分——指针,高效地使用数组、字符串和结构体,采用经典的排序方法——冒泡法进行排序,并且包含对文件的读、写等基本操作。
3.功能模块描述职工信息管理系统是为企业进行职工信息管理提供辅助而设计的,需要为用户提供一个简单的人机界面以便操作,各功能模块如下。
1)登录模块:根据输入的登录密码判断是否允许该用户使用本系统,输入密码正确才能进入管理界面,管理职工信息。
2)创建模块:当第一次使用本系统时,根据提示输入职工的工号、姓名、性别、年龄、学历、职位、工资、电话和住址,可一次性输入多条职工的信息记录。
浏览模块:可以浏览经输入、修改、删除、添加、排序、读取后的职工信息。
3)查询模块:分为根据工号、姓名、电话、工资查询的四个具体需求,分别提示管理员要查询的职工信息的的工号、姓名、电话或工资。
4)修改模块:分为根据工号、姓名修改的两个具体需求,分别提示管理员要修改的职工信息的工号和姓名,如果有对应职工的信息记录存在,则逐项列出对应职工的信息。
5)删除模块:分为根据工号、姓名删除的两个具体需求,分别提示管理员要删除的职工信息的工号和姓名,如果有则删除此职工对应的信息记录。
6)添加模块:可在原有职工信息记录的基础上增加新的职工信息记录,并保存至磁盘中。
7)排序模块:分为根据姓名、年龄、工资排序的三个具体需求,分别提示管理员选择排序的方式。
职工信息管理系统C语言课程设计+源代码课程设计报告课程:高级语言课程设计学号:姓名:班级:教师:时间:设计名称:职工信息管理系统设计内容、目的与要求:本设计旨在熟练掌握C语言的基本知识和编辑技能,基本掌握结构化程序设计的基本思路和方法。
通过编写职工信息管理系统,便于对职工的信息进行管理,训练综合运用函数的自定义,数组,结构体等,并提高程序设计的能力。
要求:设计一个职工信息管理系统,提供以下功能:1.提供一个清晰美观的界面来调用各个功能。
2.录入功能:职工信息录入(职工信息用文件保存),可以一次完成若干条记录的输入。
3.浏览功能:完成对全部职工信息的显示。
4.查找功能:①按职工的职工号查询职工的相关信息,并显示。
②按职工的学历查询职工的相关信息,并显示。
③按职工的电话号码查询职工的相关信息,并显示。
5.删除功能:①通过输入职工的姓名完成对该名职工的信息进行删除。
②通过输入职工号完成对该名职工的信息进行删除。
6.添加功能:完成添加新职工的信息的任务。
7.修改功能:①通过输入职工的姓名完成对该名职工的信息进行修改。
②通过输入职工号完成对该名职工的信息进行修改。
8.退出职工信息管理系统。
计划与进度安排:2012年12月8日至2012年12月15日:仔细研究数据库相关知识,通过上网查资料找思路。
2012年12月16日至2012年12月20日:完成设计思路并作出草稿,编写主函数和各调用函数模块。
2012年12月21日至2013年1月1日:逐步实现各模块的功能化,实现整个程序大体功能。
2013年1月2日至2013年1月6日:修改并完善各功能,编写电子实验报告,并准备提交验收。
设计过程、步骤:一、功能结构1.职工信息管理系统开始菜单根据菜单输入的值选择程序1.录入职工信息2.浏览职工信息3.查询职工信息5.添加职工信息4.删除职工信息6.修改职工信息7.退出1.按职工号查询2.按学历查询3.按号码查询1.按职工号删除2.按职工姓名删除1.按职工号修改2.按职工姓名修改二、设计说明1.这个程序需要使用结构体来存储职工信息。
c语言职工信息管理系统课程设计一、课程目标知识目标:1. 理解C语言编程基础,掌握数据类型、变量、运算符、控制结构等基本概念;2. 学会使用C语言进行数组、字符串和结构体的操作;3. 掌握文件操作和内存分配在C语言中的应用;4. 了解职工信息管理系统的基本功能需求。
技能目标:1. 能够运用C语言编写职工信息管理系统的基本模块,如增加、删除、修改、查询等功能;2. 能够对程序进行调试和优化,解决常见错误和异常;3. 能够独立设计简单的职工信息管理系统界面,并进行用户交互;4. 学会运用结构体数组管理大量职工数据。
情感态度价值观目标:1. 培养学生严谨、细致的编程习惯,提高问题分析和解决能力;2. 增强学生的团队合作意识,学会与他人协作完成项目;3. 培养学生对信息管理系统实际应用的兴趣,激发创新思维;4. 引导学生关注社会实际问题,理解职工信息管理在企业运营中的重要性。
课程性质:本课程为实践性较强的课程,结合C语言编程和职工信息管理系统的实际应用,注重培养学生的编程能力和实际操作能力。
学生特点:学生已具备一定的C语言基础,对编程有初步了解,但实践经验不足,需要通过实际项目提高动手能力。
教学要求:教师需结合学生特点,采用项目驱动教学,分解课程目标为具体学习成果,注重理论与实践相结合,提高学生的编程技能和实际应用能力。
同时,关注学生情感态度价值观的培养,激发学生学习兴趣,培养团队合作精神。
二、教学内容1. C语言基础知识回顾:数据类型、变量、常量、运算符、表达式、控制结构(条件语句、循环语句)。
相关教材章节:第一章至第三章。
2. 数组、字符串与结构体:一维数组、二维数组、字符串处理、结构体的定义和使用。
相关教材章节:第四章、第五章。
3. 文件操作与内存分配:文件读写、文件定位、内存分配与释放。
相关教材章节:第八章、第十章。
4. 职工信息管理系统功能模块设计:a. 职工信息录入:设计界面,实现职工信息的录入功能;b. 职工信息查询:实现按不同条件(如姓名、工号等)查询职工信息;c. 职工信息修改:实现对职工信息的修改功能;d. 职工信息删除:实现对特定职工信息的删除功能;e. 职工信息统计:实现职工信息统计功能,如总数、平均工资等。
数学与计算机学院课程设计说明书课程名称:计算机科学与技术程序设计语言-课程设计课程代码:题目: 职工信息管理系统年级/专业/班:学生姓名: 学号:开始时间:年月日完成时间:年月日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书撰写质量(45)总分(100)指导教师签名:年月日目录1 引言 (1)1.1问题的提出 (1)1.2国内外研究的现状 (1)1.3任务与分析 (1)2 程序的主要功能 (2)2.1添加功能 (2)2.2删除功能 (2)2.3按年龄排序全部职工信息 (2)2.4显示功能 (2)2.5按姓名查找功能 (2)2.6按学历查找功能............................................................................................... 错误!未定义书签。
3 程序运行平台 (3)4 总体设计 (4)5 模块分析 (5)5.1添加模块 (5)5.2显示模块 (5)5.3按姓名查找模块 (6)5.4按学历查找模块 (8)5.5删除模块 (9)5.6按年龄排序全部职工信息 (10)6 系统测试 (12)7 结论 (15)致谢 (17)参考文献 (18)摘要随着计算机的普及,小型系统的编写有了很快的发展。
本系统分析了任务书中的要求,利用C语言编程实现了职工信息管理系统,该系统具有人员信息的添加,删除,查找,修改和显示功能。
关键词:职工信息管理系统;计算机; 添加;删除;查找;修改。
1 引言1.1 问题的提出在现代化的企业管理中,人事管理系统有着十分重要的作用,然而,用大型软件系统来于小型的企事业单位,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种单位自然有十分重要作用。
小型企业出与这种目的制作了这个人事管理系统。
1.2国内外研究的现状现今国内外大多注意在大型人事管理系统的开发,在小型人事管理系统却少有开发,但并非所有的公司都实用与大型系统,所以小型系统有开发的必要。
c语言职工信息管理系统 课程设计一、课程目标知识目标:1. 学生能理解C语言中结构体的概念,掌握结构体在职工信息管理中的运用。
2. 学生能掌握文件操作的基本方法,实现对职工信息数据的存储与读取。
3. 学生了解并掌握C语言中字符串处理、数据排序等基本算法。
技能目标:1. 学生能够运用C语言编写简单的职工信息管理系统,实现职工信息的增加、删除、修改和查询功能。
2. 学生能够利用结构体和文件操作,实现数据的持久化存储。
3. 学生能够运用所学知识解决实际问题,提高编程实践能力。
情感态度价值观目标:1. 学生通过课程学习,培养对计算机编程的兴趣和热情,激发创新精神。
2. 学生能够认识到编程在现实生活中的应用价值,提高对信息技术的认识。
3. 学生在课程实践过程中,培养团队合作意识,提高沟通与协作能力。
课程性质:本课程为C语言编程实践课程,旨在让学生通过职工信息管理系统的设计与实现,掌握C语言的基本知识和编程技能。
学生特点:本课程面向高中生,学生对C语言有一定了解,具备基本的编程能力,但实践经验不足。
教学要求:结合学生特点和课程性质,教师需注重理论与实践相结合,引导学生通过动手实践,提高编程能力和解决实际问题的能力。
教学过程中,注重培养学生的自主学习能力和团队合作精神。
通过本课程的学习,使学生能够达到上述课程目标,为后续课程打下坚实基础。
二、教学内容1. 结构体的定义和使用:以职工信息管理系统为例,讲解结构体的定义方法,如何定义职工信息结构体,以及结构体在程序中的使用。
相关教材章节:C语言基础,结构体与共用体。
2. 文件操作:介绍文件的基本操作,如文件的打开、关闭、读写等,结合职工信息管理系统,实现数据的持久化存储。
相关教材章节:文件操作,数据存储。
3. 字符串处理:讲解字符串的基本操作,如字符串的连接、比较、查找等,应用于职工信息管理系统中的输入输出处理。
相关教材章节:字符串处理。
4. 数据排序算法:介绍一种简单的排序算法,如冒泡排序、选择排序等,应用于职工信息的排序显示。
课程设计说明书课程名称C++项目设计设计题目企业人事信息管理系统学生姓名学号专业计算机应用指导教师李广松2011 年06 月30日目录一、系统开发相关情况 (1)(一)开发背景 (1)(二)系统开发的目标 (1)二、系统以及需求分析 (1)(一)系统目标 (1)(二)系统可行性分析 (1)1、技术可行性分析 (1)2、开发工具可行性分析 (2)三、程序功能描述以及模块结构 (2)(一)功能模块描述及主要类描述 (2)(二)程序流程图 (3)(三)数据结构表 (4)四、用户使用说明与调试结果 (4)(一)使用说明 (4)(二)调试结果 (4)(三)优缺点分析 (8)五、总结 (8)参考文献: (9)附录:职工信息管理系统源码(C++) (9)随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。
管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。
本文介绍了在Microsoft Visual C++ 6.0环境下开发一个职工信息管理系统的过程。
本系统界面友好,操作简单,比较实用。
一、系统开发相关情况(一)开发背景随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。
管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。
(二)系统开发的目标为了更好地适应我校的要求,进一步提供全方位的信息服务,职工信息管理系统在实施后应该能够达到以下的目标:★能够准确地记录职工的相关信息。
★系统界面友好、操作简单易行,查询灵活方便,数据储存安全可靠。
★系统维护安全、方便、可靠,并且能够实现实用性,先进性的要求。
二、系统以及需求分析(一)系统目标除了前面所述,我们所开发的系统还应该具有以下功能:⑴原始数据修改简单方便;⑵方便的数据查询;⑶删除数据方便简单,稳定性好;⑷数据计算自动完成,尽量减少人工干预;(二)系统可行性分析1、技术可行性分析由于本系统管理的对象单一,都是公司职工,所以涉及的计算过程不是很复杂。
现在学校用于学生管理的微机都是Pentium(R)4 CPU以上的机器,在存储量、速度方面都能满足各方面的要求。
在技术难度方面,由于有指导老师的指导和相关参考文献,因此完全可以实现。
2、开发工具可行性分析Microsoft Visual C++ 6.0简介Visual C++是一个功能强大的可视化软件开发工具。
自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。
虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。
所以实际中,更多的是以Visual C++6.0为平台。
Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。
Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。
这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。
根据以上对开发工具的功能的了解,我们相信,依靠Microsoft Visual C++ 6.0能开发出我们所期待的系统。
因此,在开发工具方面是可行的。
三、程序功能描述以及模块结构(一)功能模块描述及主要类描述模块一:增加人员函数Add();增加职工基本信息。
模块二:删除人员函数Delete();删除指定的职工的基本信息以及薪酬。
模块三:修改人员函数Modify();修改指定的职工基本信息。
模块四:查询职工信息函数Query();查询指定的职工信息以及薪酬。
模块五:基础数据设置函数Set();设置五类职位的基本薪酬。
模块六:数据存盘,载入函数Save()以及Load();储存职工基本信息,薪酬以及五类职位的基本薪酬。
本系统采用了面向对象的程序设计方法。
所有的方法均以类为基础。
所涉及到的类包括:class Person 基本员工类;该类是一个基类,设置了属于保护类的职工基本属性,以及构造函数Person(char ID,char *Name,int Duty)。
可以给职工类型继承。
class Cservant文员类;由Person类继承而来。
定义了职工上个月的工作量Workload,获得工作量函数double GetWorkload(),传入工作量函数void SetWorkload(double Amount),以工作量计算薪酬函数void CalcSalary(),输出薪酬结果以及该类职工信息函数void Output ()。
class Salesman业务员类;同Cservant文员类。
class APman行政人员类;同Cservant文员类。
class CSman文员兼职业务人员类;同Cservant文员类。
class ACman行政人员兼职文员类;同Cservant文员类。
class Company 公司类;该类定义了前文所述六个模块功能的实现方法,链表的使用也包括其中。
此类的作能在于将所有功能模块集成并定义本系统使用的主要方法。
(二)程序流程图图 3-1 程序流程图表3-1 数据结构表四、用户使用说明与调试结果(一)使用说明这是一个关于职工信息管理系统,具有录入、输出、删除、查询、修改、保存、载入数据、计算总支出薪酬等功能,建立了一个含有工号、姓名、性别、联系方式、国籍、工作量等成员的类的变量class Person 。
系统中已预输入了5个职工的相关数据以及基本薪酬数据,调试是可按“4”键先查看输入的数据记录。
调试过程中,可按照有关提示进行相关操作:增加职工数据按“1”键;删除职工数据按“2”键;修改职工数据按“3”键;查询职工数据按“4”键;基础数据设置按“5”键;数据存盘按“6”键;数据装入按“7”键;退出系统按“8”键。
(二)调试结果★代码中运用了switch 语句调用各子函数,数字1、2、3、4、5、6、7、8等七个数字代表不同的指令。
★系统启动时,会自动在存放该系统的磁盘根目录之下装入两个数据文件:person.txt 和base.txt。
装入成功之后会显示“人员和基础数据已经装入…”。
调试时两个数据文件都已经写入部分数据,使用功能“4-查询职工信息”,显示如下:★各个职工最后的“工资”根据事前输入的职位,工作量自动计算生成。
并将所有的工资累加得到每个月需要支付的总工资。
以本次调试为例,系统显示“本月实发工资总数:14110元”。
★指令“1-增加人员”代表调用增加人员函数Add(),要求操作者输入职工的相关信息,管理系统会自动地开辟一个新的节点指针,把它的结点赋给预输入数据中的最后一个节点p2->next ,使其链接起来。
★指令“2-删除人员”代表调用删除人员函数Delete(),要求操作者输入职工的相关ID,系统根据操作者输出的ID,找出对应的记录,然后删除该职工的信息,如果删除的是第一个结点,则p1->next,指向第二个结点;下图示范了删除第一个节点之后的显示结果:★如果删除的是第i个(0< i <n)就把下一个结点地址赋给前一个结点地址;如果找不到对应的ID,则不会删除任何一个记录,并输出“未找到!”。
★指令“3-修改人员”代表调用修改人员函数Modify(),体统根据操作者输入的ID 找到对应的记录,将新输入的数据对应地赋给要修改的各成员。
包括调整职位,修改姓名,工作量。
★如果没有找到对应的ID,则不会修改任何一个记录,并输出“未输出!”。
★指令“4-查询职工信息”表示调用查询职工信息函数Query(),先输出所有的职工记录,然后系统根据输入的ID找到对应的数据,并输出总支出薪酬,如果没有找到对应的记录,则输出“未找到!”。
★指令“5-基础数据设置”表示调用基础数据设置函数Set(),要求操作员输入文员,行政人员,业务员的基本工资,以便计算每位职工的薪酬。
★指令“6-数据存盘”表示调用存盘函数Save(),输入“Y”或者“N”以进一步操作。
★指令“7-数据装入”表示调用载入函数Load(),系统直接导入数据。
(三)优缺点分析优点:★系统中包含了输入、输出、保存、删除、查询、修改等多种功能,系统操作灵活性较强,功能较强大;★可以随意地选择不同的指令进行操作;★自动计算本月应该支出的所有薪酬;★排版效果清晰明了,美观;★操作简单方便。
缺点:★在调用某些函数时,若没有找到对应记录的情况下,输出结果的处理不太完善,例如查询函数;★录入函数的设计不完善,这也是整个程序设计中最突出的问题。
五、总结本次设计我选择的题目是职工信息管理系统。
因为事先的计划非常明确,所以我们在完成这个设计的过程也是比较顺利的。
在系统分析和设计的部分仍然花了比较多的时间。
模块设计部分因为涉及功能的实现,要从抽象的设计转化成实际的代码,因此对于某项功能的实现方法都思考得比较详尽。
加上在开发系统之前,我阅读很多与本系统有相关内容的书籍以做参考,使得此次系统编写能顺利进行。
由于班里每个人都需要做一份设计,所以我们经常互相交流。
在交流的时候经常能够互相提出更好的建议。
经过对职工信息管理系统的分析与编写,我得到了很大的收获。
自主学习的必要性更是解决问题的基础。
这次设计使我重温了以前学过的各科知识,让我对C++编程有了更深刻的认识。
除了对系统作出正确的分析,实际的调查工作对系统的整体设计有着至关重要的作用。
所以在分析系统之前,我花了一些时间在公司的实际管理工作调查上。
也因为这样,如何编写代码逐渐变得明朗。
每一个功能模块经过调查后后,各个功能逐渐显露出来,然后,反复探讨,验证这项功能是否有存在的必要,是否可以改进得更好。
在这样的前提下,最后顺利完成了这份设计。
这次C++系统设计作业,提升了我分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。
从这次设计学到的东西,相信会对我们日后的学习工作起到很大的指导作用参考文献:[1] 徐士良:C常用算法程序集,清华大学出版社,1995年版.[2] 洪永清:面向对象建模与设计,清华大学出版社,1993年版.[3] 谭浩强:C程序设计,清华大学出版社,1991年版.[4] 张国峰:C++语言及其程序设计教程,电子工业出版社,1997年版.[5] 侯捷:STL源码剖析,华中科技大学出版社,2002年版.[6] Bruce Eckel:Thinking in C++(2 nd ed),机械工业出版社,2003年版.附录:职工信息管理系统源码(C++)#include <iostream.h>#include <fstream.h>#include <ctype.h>#include <string.h>//全局数据,对象double CSalary; //文员的基本工资double SSalary; //业务员的基本工资double APSalary; //行政人员的基本工资int ID; //员工工号(要保证唯一)class Person //员工类{protected:int No; //编号char Name[20]; //姓名char Sex[10]; //性别char Tel[20]; //联系方式char Nation[30]; //国籍int Duty; //职位double Earning; //收入Person *next;public:Person(char ID,char *Name,int Duty){this->Duty=Duty;strcpy(this->Name,Name);this->No=ID;}virtual void CalcSalary()=0;virtual void Output()=0;friend class Company;};class Cservant:public Person //文员类{private:double Workload; //上个月完成工作量public:Cservant(char ID,char *Name,int Duty,double Workload):Person(ID,Name,Duty) {this->Workload=Workload;}double GetWorkload(){return Workload;}void SetWorkload(double Amount){this->Workload=Amount;}void CalcSalary()Earning=CSalary+(Workload-20)*20;}void Output(){CalcSalary();cout<<No<<"\t"<<Name<<"\t文员\t"<<"\t\t"<<Earning<<endl;}};class Salesman:public Person //业务员类{private:double Workload; //上个月完成工作量public:Salesman(char ID,char *Name,int Duty,double Workload):Person(ID,Name,Duty) {this->Workload=Workload;}double GetWorkload(){return Workload;}void SetWorkload(double Amount){this->Workload=Amount;}void CalcSalary(){Earning=SSalary+(Workload-15)*20+150; //150为业务补贴}void Output()CalcSalary();cout<<No<<"\t"<<Name<<"\t业务员\t"<<"\t\t"<<Earning<<endl;}};class ACman:public Person //行政人员兼职文员类{private:double Workload; //上个月完成工作量public:ACman(char ID,char *Name,int Duty,double Workload):Person(ID,Name,Duty) {this->Workload=Workload;}double GetWorkload(){return Workload;}void SetWorkload(double s){Workload=s;}void CalcSalary(){Earning=250+APSalary+CSalary+(Workload-15)*20;}void Output(){CalcSalary();cout<<No<<"\t"<<Name<<"\t行政人员兼职文员\t"<<Earning<<endl;}};class APman:public Person //行政人员类{public:APman(char ID,char *Name,int Duty):Person(ID,Name,Duty){}void CalcSalary(){Earning=APSalary+250;//250为行政补贴}void Output(){CalcSalary();cout<<No<<"\t"<<Name<<"\t行政人员\t\t"<<Earning<<endl;}};class CSman:public Person //文员兼职业务人员{private:double Workload;//文员兼职业务人员上个月完成工作量public:CSman(char ID,char *Name,int Duty,double Workload):Person(ID,Name,Duty) {this->Workload=Workload;}double GetWorkload(){return Workload;}void SetWorkload(double Amount){this->Workload=Amount;}void CalcSalary(){Earning=(Workload-25)*20+CSalary+150+SSalary;//150为业务补贴}void Output(){CalcSalary();cout<<No<<"\t"<<Name<<"\t文员兼职业务人员\t"<<Earning<<endl; }};class Company //公司类{private:Person *Worker; //员工表void Clear(); //清除内存中数据public:Company(){Worker=0;Load();}~Company(){Person *p;p=Worker;while(p){p=p->next;delete Worker;Worker=p;}Worker=0;}void Find(char Name[20]);//按姓名查找void Find(int ID);//按编号查找void Add(); //增加人员void Delete(); //删除人员void Modify(); //修改人员void Query(); //查询人员void Set(); //基础数据设置void Save(); //数据存盘(包括基础数据,人员数据)void Load(); //数据装入(包括基础数据,人员数据) };void Company::Clear() //清除内存中人员数据(内部使用) {Person* p=Worker;while(p){Worker=p->next;delete p;p=Worker;}}void Company::Find(char Name[20]){}void Company::Add(){Person *p; //新结点指针int Duty;char Name[20]; ``char Sex[10]; //性别char Tel[20]; //联系方式char Nation[30]; //国籍double Workload;cout<<"\n** 新增员工**\n";//输入员工信息cout<<"输入工号:"; cin>>ID;cout<<"输入职位(1-文员2-行政人员兼职文员3-文员兼职业务员4-行政人员5-业务员):"; cin>>Duty;cout<<"输入姓名:"; cin>>Name;cout<<"输入性别:"; cin>>Sex;cout<<"输入联系方式:"; cin>>Tel;cout<<"输入国籍:"; cin>>Nation;if(Duty!=4){cout<<"上个月完成工作量:"; cin>>Workload;}//创建新员工结点switch(Duty){case 1:p=new Cservant(ID,Name,Duty,Workload); break;case 2:p=new ACman(ID,Name,Duty,Workload); break;case 3:p=new CSman(ID,Name,Duty,Workload); break;case 4:p=new APman(ID,Name,Duty); break;case 5:p=new Salesman(ID,Name,Duty,Workload); break;}p->next=0;//员工结点加入链表if(Worker) //若已经存在结点{Person *p2;p2=Worker;while(p2->next) //查找尾结点{p2=p2->next;}p2->next=p; //连接}else //若不存在结点(表空){Worker=p; //连接}}void Company::Delete() //删除人员{int No;cout<<"\n** 删除员工**\n";cout<<"ID:"; cin>>No;//查找要删除的结点Person *p1,*p2; p1=Worker;while(p1){if(p1->No==No)break;else{p2=p1;p1=p1->next;}}//删除结点if(p1!=NULL)//若找到结点,则删除{if(p1==Worker) //若要删除的结点是第一个结点{Worker=p1->next;delete p1;}else //若要删除的结点是后续结点{p2->next=p1->next;delete p1;}cout<<"找到并删除\n";}else //未找到结点cout<<"未找到!\n";}void Company::Modify(){int No,Duty;char Name[20];double Workload;cout<<"\n** 修改员工**\n"; cout<<"ID:"; cin>>No;//查找要修改的结点Person *p1,*p2; p1=Worker; while(p1){if(p1->No==No)break;else{p2=p1;p1=p1->next;}}//修改结点if(p1!=NULL)//若找到结点{p1->Output();cout<<"调整职位(1-文员2-行政人员兼职文员3-文员兼职业务人员4-行政人员5-业务人员):"; cin>>Duty;if(p1->Duty!=Duty) //若职位发生变动{//修改其它数据cout<<"输入姓名:"; cin>>Name;if(Duty!=4){cout<<"上个月完成工作量:"; cin>>Workload;}//创建新员工结点Person *p3;switch(Duty){case 1:p3=new Cservant(p1->No,Name,Duty,Workload); break;case 2:p3=new ACman(p1->No,Name,Duty,Workload); break;case 3:p3=new CSman(p1->No,Name,Duty,Workload); break;case 4:p3=new APman(p1->No,Name,Duty); break;case 5:p3=new Salesman(p1->No,Name,Duty,Workload); break;}//员工结点替换到链表p3->next=p1->next;if(p1==Worker) //若要替换的结点是第一个结点Worker=p3;else //若要删除的结点是后续结点p2->next=p3;//删除原来的员工结点delete p1;}else //若职位没有变动{cout<<"输入姓名:"; cin>>p1->Name;if(Duty==1){cout<<"上个月完成工作量:"; cin>>Workload; ((Cservant *)p1)->SetWorkload(Workload);}else if(Duty==2){cout<<"上个月完成工作量:"; cin>>Workload; ((ACman *)p1)->SetWorkload(Workload);}else if(Duty==3){cout<<"上个月完成工作量:"; cin>>Workload; ((CSman *)p1)->SetWorkload(Workload);}else if (Duty==5){cout<<"上个月完成工作量:"; cin>>Workload; ((Salesman *)p1)->SetWorkload(Workload);}}cout<<"修改成功!\n";}else //未找到结点cout<<"未找到!\n";}void Company::Query()int chet,count(0);cout<<"\n** 查询职工信息以及本月销售信息**\n";cout<<"编号"<<"\t"<<"姓名"<<"\t"<<"职位"<<"\t\t\t"<<"工资(元/月)"<<endl;Person *p=Worker;double sum2=0; //工资总和while(p){p->Output();sum2+=p->Earning;p=p->next;}cout<<"本月实发工资总数:"<<sum2<<"元"<<endl;cout<<"请输入你要查询人员的编号:"; cin>>chet;Person *p4=Worker;while(p4){if(p4->No==chet){if(p4->Duty==1){((Cservant*)p4)->Output();count++;break;}else if(p4->Duty==2){((ACman*)p4)->Output();count++;break;}else if(p4->Duty==3)((CSman*)p4)->Output();count++;break;}else if(p4->Duty==4){((APman*)p4)->Output();count++;break;}else if(p4->Duty==5){((Salesman*)p4)->Output();count++;break;}}else{p4=p4->next;}}if(count==0) cout<<"未找到!"<<endl;}void Company::Set(){cout<<"\n** 设置基础数据**\n";cout<<"文员基本工资["<<CSalary<<"元]:"; cin>>CSalary;cout<<"行政人员基本工资["<<APSalary<<"元]:"; cin>>APSalary; cout<<"业务人员基本工资["<<SSalary<<"]:"; cin>>SSalary;cout<<"员工工号[>="<<ID<<"]:"; cin>>ID;void Company::Save() //数据存盘(包括基础数据,人员数据),均采用文本文件{ofstream fPerson,fBase;char c;cout<<"\n保存人员和基础数据,是否继续?[Y/N]:"; cin>>c;if(toupper(c)!='Y')return;//保存人员编号、姓名、职位fPerson.open("person.txt",ios::out);Person *p=Worker;while(p){fPerson<<p->No<<"\t"<<p->Name<<"\t"<<p->Duty<<"\t";if(p->Duty==1)fPerson<<((Cservant*)p)->GetWorkload()<<"\t";else if (p->Duty==2)fPerson<<((ACman*)p)->GetWorkload()<<"\t";else if (p->Duty==3)fPerson<<((CSman*)p)->GetWorkload()<<"\t";else if (p->Duty==5)fPerson<<((Salesman*)p)->GetWorkload()<<"\t";fPerson<<endl;p=p->next;}fPerson.close();//保存基础数据fBase.open("base.txt",ios::out);fBase<<"文员基本工资\t"<<CSalary<<endl;fBase<<"行政人员基本工资\t"<<APSalary<<endl;fBase<<"业务人员基本工资\t"<<SSalary<<endl;fBase<<"ID\t"<<ID<<endl;fPerson.close();cout<<"\n保存人员和基础数据已经完成...\n";}void Company::Load() //数据装入(包括基础数据,人员数据) {//基础数据装入ifstream fBase;char buf[80]; //buf用于保存数据文件中的注释字符串fBase.open("base.txt",ios::in);fBase>>buf>>CSalary; //文员基本工资fBase>>buf>>APSalary; //行政人员基本工资fBase>>buf>>SSalary; //业务人员基本工资fBase>>buf>>ID; //员工工号fBase.close();//清除内存人员数据Clear();//人员数据数据装入ifstream fPerson;Person *p=Worker;int No; char Name[20]; int Duty;double Workload;fPerson.open("person.txt",ios::in);//读一条记录fPerson>>No>>Name>>Duty;if(Duty!=4)fPerson>>Workload;while(fPerson.good()){//创建员工结点switch(Duty){case 1:p=new Cservant(No,Name,Duty,Workload); break; case 2:p=new ACman(No,Name,Duty,Workload); break; case 3:p=new CSman(No,Name,Duty,Workload); break; case 4:p=new APman(No,Name,Duty); break;case 5:p=new Salesman(No,Name,Duty,Workload); break;}p->next=0;//员工结点加入链表if(Worker) //若已经存在结点{Person *p2;p2=Worker;while(p2->next) //查找尾结点{p2=p2->next;}p2->next=p; //连接}else //若不存在结点(表空){Worker=p; //连接}//读下一条记录fPerson>>No>>Name>>Duty;if(Duty!=4)fPerson>>Workload;}fPerson.close();cout<<"\n人员和基础数据已经装入...\n"; }void main(){char c;Company a;do{cout<<"\n*** 职工信息管理系统***\n"; cout<<"1-增加人员\n";cout<<"2-删除人员\n";cout<<"3-修改人员\n";cout<<"4-查询职工信息\n";cout<<"5-基础数据设置\n";cout<<"6-数据存盘\n";cout<<"7-数据装入\n";cout<<"8-退出\t请选择(1-8):";cin>>c;switch(c){case '1': a.Add(); break;case '2': a.Delete();break;case '3': a.Modify();break;case '4': a.Query(); break;case '5': a.Set(); break;case '6': a.Save(); break;case '7': a.Load(); break;}}while(c!='8');}。