C++高校人员信息管理系统课程设计报告 .pdf
.基于 C+的面向对象程序设计实例课程设计报告报告题目:高校人员信息管理系统作者所在系部:计算机科学与工程系作者所在专业:计算机科学与技术专业作者所在班级:作 者 姓 名:指导教师姓名:完 成 时 间:2012.6 摘要名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 35 页 -.在当前的市场经济体制下,企业间竞争不断,企业的发展与企业的有效管理密不可分,一个企业要偶适合自身特点的信息化管理系统,以实现企业降低成本、及时反馈市场信息、完善服务质量、提高经济效益、分析市场需求、制定销售计划和目标等管理目的。本文利用 Microsoft Visual C+6.0 编写程序,实现了用户对公司经理、技术人员、销售人员和销售经理管理操作。本系统主要有八个功能模块:添加功能、查询功能、显示功能、编辑功能、删除功能、统计功能、保存功能、读取功能关键词:系统设计类信息面向对象目录摘要.1第一章绪论.311 课程设计的目的.4名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 35 页 -.12 课程设计的背景和意义.4121 课程设计的背景.4122 课程设计的意义.413 课程设计环境.5第二章需求分析.621 问题描述.622 功能要求.623 问题的解决方案.6第三章系统设计.831 数据设计.8311 类设计.8312 类之间的关系.10313 函数设计.1032 结构设计.10321 系统流程图.10322 界面设计.11第四章系统实现.1341 类实现.1342 函数实现.1343 主函数实现.21第五章系统测试.2351 模块测试.2352 课程设计过程中遇到的问题.28总结.29 致谢.错误!未定义书签。0参考文献.31任务书.32第一章绪论11 课程设计的目的C+面向对象程序设计 是计算机专业的基础课程,本课程按照软件程序设计所需能力进行教学设计,提出以项目模块方式带动相关知识点、实践项目和理论并行的思路,将案例贯穿于课程始终,对原有的教学体系、教学内容进行重新编排,按照从易到难的原则,将其名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 35 页 -.巧妙地融入到项目开发过程中,降低学习难度,提高学生学习的信心,有效培养学生的应用能力和学习能力。12 课程设计的背景和意义随着社会的发展,各种公司规模逐渐变大,需要对公司的员工信息进行统一有效的管理,方便的对人员的信息进行增添、查阅、修改、删除、保存,这就必须有一个实用的管理系统。121 课程设计的背景1.理论研究基础掌握 C+基本知识,具体包括:掌握面向对象基本知识和基本概念,掌握静态成员的定义与作用,掌握友元的定义,掌握运算符重载方法,继承与派生,虚函数的定义和使用,输入、输出流操作,文件的创建、打开、读写、关闭等。2.技术层面的支持(1)定义基类与派生类,将数据成员与成员函数封装在类中。(2)设计增添、显示、查询、修改、删除、保存等函数。122 课程设计的意义(1)通过课程设计的综合训练,培养了学生分析解决实际问题和编程等实际动手能力。帮助了同学系统的掌握C+课程的主要内容。(2)通过详细的实例分析,循环渐进的描述,启发学生顺利的完成设计。课程设计将设计要求、需求分析、算法设计、编程和实例测试运行分开,为学生创造分析问题、独立思考的条件。(3)通过编写一个较长的程序,实现了对人员信息的管理,激发了学生学习编程的兴趣。13 课程设计环境Microsoft Visual C+6.0 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 35 页 -.第二章需求分析21 问题描述某高校有四类员工:教师、实验员、行政人员,教师兼行政人员;共有的信息包括:编号、姓名、性别、年龄等。其中,教师还包含的信息有:所在系部、专业、职称;实验员还包含的信息由:所在实验室、职务;行政人员还包含的信息有:政治面貌、职称等。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 35 页 -.22 功能要求(1)基本功能1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。2)查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。3)显示功能:可显示当前系统中所有记录,每条记录占据一行。4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。6)统计功能:能根据多种参数进行人员的统计。例如,统计四类人员数量以及总数,或者统计男、女员工的数量,或者统计某年龄段人员的数量等。7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。23 问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤:1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;2)分析系统中的各个实体及它们之间的关系;3)根据问题描述,设计系统的类层次;4)完成类层次中各个类的描述;5)完成类中各个成员函数的定义;6)完成系统的应用模块;7)功能调试;8)完成系统总结报告。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 35 页 -.第三章系统设计31 数据设计311 类设计1.人员的管理需包含人员的基本信息,所以定义一个人员类如表3-1 所示:表 3-1 员工类名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 35 页 -.类名人员类数据成员protected:num(编号)char name20(姓名)char sex10(性别)age(年龄)成员函数public:Input():输入函数Output():输出函数GetNum():获取编号GetName():获取姓名2.根据高校人员的工作性质的不同,将所有员工分为教师、实验员、行政人员,教师兼行政人员表 3-2 教师类类名教师类(公有继承员工类)数据成员protected:char depart20(部门);char spec20(专业);char title20(职称);成员函数public:void Input_1():输入函数void Output_1():输出函数char GetDepart():获取部门char GetSpec():获取专业char GetTitle():获取职称friend Tea_Manage:友元教师管理类表 3-3 实验员类类名实验员类(公有继承员工类)数据成员protected:char textroom20(所在实验室)char post20(职务)成员函数public:void Input_3():输入函数void Output_3():输出函数char GetTextroom():获取实验室名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 35 页 -.char GetPost():获取职务friend Exp_Manage:友元实验人员管理类表 3-4 行政人员类类名行政人员类(公有继承员工类)数据成员public:char politics20:(政治面貌)char title20:(职称)成员函数public:void Input_2():输入函数void Output_2():输出函数char GetPolitics():获取政治面貌char GetTitle():获取职称friend Sta_Manage:友元行政人员管理类表 3-5 教师兼行政人员类类名教师兼行政人员类(公有继承员工类)数据成员成员函数Public:void Input_4():输入函数void Output_4():输出函数friend Tea_Sta_Manage:友元教师行政人员管理类4、为了控制以上的类,分别建立了4 个管理类,以经理的管理了为例:表 3-6 教师管理类名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 35 页 -.类名教师管理类数据成员Teacher Tea20(创建教师的空间);top(统计人员数和进行操作时的指针);312 类之间的关系员工类派生出教师类、实验员类、行政人员类,教师类和行政人员类派生出教师兼行政人员类。313 函数设计根据要求,为了功能的实现,通过top 实现功能。分别以8 个功能函数进行对数据的操作(下面以经理类为例)void Add();(信息的添加)void Search();(信息的查找)void Edit();(信息的编辑)void Total();(信息的统计)void Delete();(信息的删除)void Show();(信息的显示)void Save();(信息的存储)void Read();(信息的读取)32 结构设计321 系统流程图名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 35 页 -.322 界面设计1.主菜单界面,如图33 所示图 33 主菜单2.教师菜单界面,如图3-4 图 34 教师管理界面3.教师查询界面,如图3-5 所示:图 35 教师查询界面教师类实验员类行政人员类教师兼行政人员类名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 35 页 -.4.教师删除界面,如图3-6 所示:图 36 教师删除界面第四章系统实现41 类实现class Person/人员类class Teacher:virtual public Person/教师类class Staff:virtual public Person/行政人员类class Experimenter:public Person/实验员类名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 35 页 -.class Tea_Sta:public Teacher,public Staff/教师兼行政人员类class Tea_manage/教师管理类class Sta_manage/行政人员管理类class Exp_manage/实验员管理类class Tea_Sta_manage/教师兼行政人员管理类42 函数实现void Person:Input()/员工信息输入 cout 请输入编号:num;cout 请输入名字:name;cout 请输入性别:sex;cout 请输入年龄:age;void Teacher:Input_1()/教师信息输入 Input();cout 请输入所在系别:depart;cout 请输入专业名称:spec;cout 请输入职称:title;void Person:Output()/员工信息输出 cout 编号:numendl;cout 姓名:nameendl;cout 性别:sexendl;cout 年龄:ageendl;void Teacher:Output_1()/教师信息输出 Output();cout 所在系别:departendl;cout 所在专业:specendl;cout 职称:titleendl;名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 35 页 -.int Person:GetNum()/返回编号 return num;char Person:GetName()/返回姓名 return name20;char Person:GetSex()/返回性别 return sex10;int Person:GetAge()/返回年龄 return age;char Teacher:GetDepart()/返回所在部门 return depart20;char Teacher:GetSpec()/返回专业 return spec20;char Teacher:GetTitle()/返回职称 return title20;void Tea_Manage:Add()/教师信息的添加 Teacher t;cout 请输入新增人员的信息:endl;t.Input_1();int i;for(i=0;itop;i+)名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 35 页 -.if(t.GetNum()=Teai.GetNum()cout 编号已存在,请重新输入:1000)cout 内存已满,不可添加endl;else if(top=1000)Teatop=t;cout 添加成功 endl;top+;return;void Tea_Manage:Show()/教师信息的显示 for(int i=0;itop;i+)Teai.Output_1();cout.endl;void Tea_Manage:Search()/教师信息的查询 if(top=0)cout没有任何信息endl;int choice;int i=0;名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 35 页 -.int m=0;int n=0;int num;cout 请输入您的选择:endl;cout 查询方式1.按名字2.按编号 choice;switch(choice)case 1:char name20;cout 请输入您所查询的人员名字:name;for(i;itop;i+)if(!strcmp(name,Teai.name)Teai.Output_1();break;if(i=top)cout 查无此人 endl;break;case 2:cout 请输入编号:num;for(i=0;itop;i+)if(num=Teai.GetNum()Teai.Output_1();if(i=top)cout 查无此人 endl;名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 35 页 -.break;void Tea_Manage:Edit()/教师信息的修改 int i=0;Search();cout+endl;cout1.修改编号2.修改姓名3.修改性别4.修改年龄5.修改系别6.修改专业7.修改职称0.退出endl;cout+choice;switch(choice)case 1:cout 编号不可修改endl;break;case 2:char na20;cout 请输入修改后的姓名:na;strcpy(Teai.name,na);cout 修改成功 endl;break;case 3:int m;char a10;cout 输入修改后的内容:a;strcpy(Teai.sex,a);cout 修改成功,是否继续(1/2)m;if(m=1)return;break;case 4:int b,m;cout 请输入修改后的年龄:b;Teai.age=b;cout 修改成功,是否继续(1/2)m;if(m=1)return;break;case 5:int m;char n20;cout请输入修改后系部:n;strcpy(Teai.depart,n);cout 修改成功,是否继续(1/2)m;if(m=1)return;break;case 6:int m;char n20;cout请输入修改后专业:n;strcpy(Teai.spec,n);cout 修改成功,是否继续(1/2)m;if(m=1)名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 35 页 -.return;break;case 7:int m;char n20;cout 请输入修改后的职称:n;strcpy(Teai.title,n);cout 修改成功,是否继续(1/2)m;if(m=1)return;break;case 0:cout退出成功!endl;break;default:cout 无此选项!请重试!endl;break;void Tea_Manage:Delete()/教师信息的删除 Teacher t;int i=0;cout 请输入你想删除人员的编号:t.num;if(top=0)cout没有人员选择endl;for(i;itop;i+)if(t.num=Teai.num)Teai=Teai+1;top-;break;if(i=top)cout查无此人 endl;名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 35 页 -.cout 删除成功 m;if(m=1)return;void Tea_Manage:Total()/教师信息的统计 couttopendl;void Tea_Manage:Save()/教师信息的保存 ofstream outfile(c:/高校管理系统之教师类.dat,ios:binary);if(!outfile)cerropen error!endl;abort();for(int i=0;itop;i+)outfile.write(char*)&Teai,sizeof(Teai);cout 保存成功 endl;outfile.close();void Tea_Manage:Read()/教师信息的读出 ifstream infile(c:/高校管理系统之教师类.dat,ios:binary);if(!infile)cerropen error!endl;abort();while(infile.read(char*)&Teatop,sizeof(Tea0)top+;cout 读取成功 endl;infile.close();名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 35 页 -.4.3 主函数实现int main()/主函数的实现 cout*欢迎进入北华航天工业学院人员管理系统*endl;int choice;do cout*主菜单*nendl;coutendl;cout|endl;cout 行 政 人 员 管 理2=教 师 管 理|endl;cout 实 验 人 员 管 理4=教 师 兼 行 政 人 员 管 理|endl;cout 退出系统|endl;cout|endl;coutendl;coutchoice;switch(choice)case 1:StuMenu();break;case 2:TeaMenu();break;case 3:ExpMenu();break;case 4:Tea_StaMenu();break;case 0:coutn 您已安全退出系统.endl;break;default:coutn 没有此选项.请重选.endl;break;名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 35 页 -.while(choice!=0);coutn*欢迎您下次再使用本系统!*endl;return 0;第五章系统测试51 模块测试以教师信息为例进行说明。(1)选择对教师信息进行添加,见图 51,图 52 名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 35 页 -.图 51 图 52(2)选择对教师信息显示图 53 名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 35 页 -.图 53(3)选择对教师信息修改图 54 图 54(4)修改后显示图 55 名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 35 页 -.图 55(5)对教师信息的删除图 56 图 56(6)对教师信息保存图 57 名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 35 页 -.图 57(7)对保存的教师信息的读取图 58 图 58(8)程序的退出图 59 名师资料总结-精品资料欢迎下载-名师精心整理-第 26 页,共 35 页 -.图 59 52 课程设计过程中遇到的问题1、程序设计时选择了数组的方式来对数据的操作,在查询时,由于思路不明确,没有成功实现程序对教师信息的查询,在请教老师之后,巧妙地运用了变量top,终于完成了查询的功能。2、文件的存入和读出使用的2 进制的方法,对此,因为掌握不是很熟练,总是存入读出错误,在查阅了课本书籍之后,仍出现类似问题,请教老师后明白了2 进制存入、读出的方法,实现了相关功能。名师资料总结-精品资料欢迎下载-名师精心整理-第 27 页,共 35 页 -.总结通过本程序设计掌握了类对象、类数组、继承、派生、重载、输入输出流的定义和使用,对使用 C+语言编码有了更深层次的理解,也认识到了自己还有许多不足之处,达到了实验目的。本系统基本完成了题目的功能要求,并且还在一定程度上进行了优化,具体如下:优点:删除时可以重新选择;对无效数据的输入进行了有效的判断;在删除和查询时既可以按编号也可以按姓名;每次删除后自动将人员信息显示出来。缺点:对于重名的人员系统照旧可以添加,没有提醒;人员的编号可以重复。可以改进的地方:在添加成员时进行验证,看所输姓名和编号是否重复,若重复进行重新输入;在实现七个功能的地方添加exit 函数,一旦操作失误,不想继续进行,则系统跳转会主界面进行新的操作选择。名师资料总结-精品资料欢迎下载-名师精心整理-第 28 页,共 35 页 -.致谢本次课程设计主要使用了本学期学习的Microsoft Visual C+6.0 的设计环境,内容涵盖了 c 和 c+语言部分知识,在本次编程过程中,我学习到了很多。例如:在编程首先要有全局观念,要认识到自己是要编写怎样的程序,并且要构建相应的程序结构,否则漫无目的的编写只能造成自己后期的负担。其次要熟练的掌握老师以前所教授的相关知识,这样在编写程序的时候才能得心应手。再次,要分步进行程序的编写,实现一个功能,再实现另一个功能,不可以全部编好最后在检查,否则最终无从下手。我现在才明白一个真正好的程序是需要很多人共同完成的,不是说一个人就能完成一个程序的编写,现在的程序还不是很大,但如果是一个巨型系统,任何一个人是不可能完成的,像是微软操作系统也是由很多高手一起编写的,这次编写过程中,我请教了老师和同学一些问题,是在他们的帮助下我才最终顺利地完成任务。让我深刻的认识到团队的力量。所以在以后学习过程中,我想应该多探讨,多帮助,多学习才行。名师资料总结-精品资料欢迎下载-名师精心整理-第 29 页,共 35 页 -.参考文献1 沈炜,徐慧.Visual C+数据库编程技术与实例 .北京:人民邮电出版社,2005 2 邓阿奇,丁有和.Visual C+教程.北京:清华大学出版社,2004 年 9 月3 谭浩强.C+程序设计.北京:清华大学出版社,2004 年4 谭浩强.C 语言程序设计(第2 版).北京:清华大学出版社,2003 名师资料总结-精品资料欢迎下载-名师精心整理-第 30 页,共 35 页 -.基于 C+的面向对象程序设计实例任务书一目的与要求1、目的(1)要求学生能够熟练掌握C+语言的基本知识和技能。(2)基本掌握面向对象程序设计的基本思路和方法。(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求(1)要求利用面向对象的方法以及C+的编程思想来完成系统的设计。(2)在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能,并且要建立清晰的类层次关系。(3)在系统设计中要分析和定义各个类,每个类中要有各自的数据成员和成员函数。(4)主函数中提供菜单选项,并给出足够的选择信息以及提示信息。(5)程序具有一定的健壮性,不会因为用户的输入错误引起程序运行错误而中断执行。对输入值的类型、大小范围、字符串的长度等,进行正确性检查,对不合法的输入值给出出错信息,指出错误类型,等待重新输入。3、创新要求在基本要求达到后,可根据实际情况进行创新设计,如根据查找结果进行修改的功能及设计出比较友好的界面等。二验收方式完成设计内容之后,即可开始验收。验收时,首先由学生简要说明所做题目的思路、设计结构及实现过程,然后运行程序并进行测试,对输出结果作出解释,同时认真回答教师提出的问题。三课设报告在完成验收之后,提交课设报告。其中报告中需包括系统设计要求,设计思路,系统功能模块图,系统流程图,类的层次图(包括类成员列表),调试过程,关键程序代码,总结,参考书目等。另外,课设报告要严格遵守模板文件的格式要求,思路清晰,内容详实丰富。四成绩评定课设总成绩=验收成绩(50%)+课程设计报告成绩(30%)+程序源代码(10%)+课设态度、考勤与遵守教学制度情况(10%)名师资料总结-精品资料欢迎下载-名师精心整理-第 31 页,共 35 页 -.五说明1、每位同学在以下的题目中任选一个或自拟题目来完成。2、学生应严格遵守课堂秩序,按时上机,认真完成各项任务。3、上机前做好充分的准备,包括事先写好主要程序代码,以保证充分利用上机的时间调试程序。4、每位同学各自独立完成自己的任务,禁止抄袭或拷贝。5、必须按规定时间上交课设报告。六课设题目题目 1 “高校人员信息管理系统”1、问题描述某高校有四类员工:教师、实验员、行政人员,教师兼行政人员;共有的信息包括:编号、姓名、性别、年龄等。其中,教师还包含的信息有:所在系部、专业、职称;实验员还包含的信息由:所在实验室、职务;行政人员还包含的信息有:政治面貌、职称等。2、功能要求(1)基本功能1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。2)查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。3)显示功能:可显示当前系统中所有记录,每条记录占据一行。4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。6)统计功能:能根据多种参数进行人员的统计。例如,统计四类人员数量以及总数,或者统计男、女员工的数量,或者统计某年龄段人员的数量等。7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。(2)扩展功能在完成以上基本功能的基础上,可自行进行扩展或完善,例如:1)添加人员记录时,考虑各种数据的有效性。名师资料总结-精品资料欢迎下载-名师精心整理-第 32 页,共 35 页 -.2)组合查询功能的实现。3)可按人员的某些信息进行排序。4)对文件的读写使用二进制信息。3、问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤:1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;2)分析系统中的各个实体及它们之间的关系;3)根据问题描述,设计系统的类层次;4)完成类层次中各个类的描述;5)完成类中各个成员函数的定义;6)完成系统的应用模块;7)功能调试;8)完成系统总结报告。名师资料总结-精品资料欢迎下载-名师精心整理-第 33 页,共 35 页 -.指导教师评语及设计成绩评语课程设计成绩:指导教师:日期:年月日名师资料总结-精品资料欢迎下载-名师精心整理-第 34 页,共 35 页 -.名师资料总结-精品资料欢迎下载-名师精心整理-第 35 页,共 35 页 -