-2-一、设计内容与设计要求1.课程设计目的:面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。2.课题题目1)公司库存管理系统2)高校学籍管理系统3)高校工资管理系统4)高校人事管理系统5)通讯录程序设计6)学生成绩管理系统7)图书管理系统8)文本编辑器的设计与实现9)学生考勤管理系统10)公司人员管理系统3.设计要求:⑴设计课题题目:每位同学根据自己学号除以9所得的余数加一选择相应题号的课题。换题者不记成绩。(课题10只做为参考课题)⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。②完成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。③完成系统详细设计:包括数据库需求分析;数据库概念结构设计(E-R图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。④系统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。⑤使用说明书及编程体会:说明如何使用你编写的程序,详细列出每一步的操作步骤。⑥关键源程序(带注释)-3-⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。二、进度安排第18周星期一8:00——12:00星期二8:00——12:00星期四8:00——12:00第19周星期一8:00——12:00星期二14:30——18:30星期三8:00——12:00三、参考书籍1.《C++程序设计课程设计》刘振安编著TP312C5632.《C++Builder和Delphi课程设计与系统开发案例》伍俊良清华大学出版社7-302-06072-X3.VisualC++课程设计案例精编严华峰中国水利水电出版社7-5084-2007-120044.VisualC++课程设计与系统开发案例伍俊良清华大学出版社7-302-05968-32002(编程平台不限,vc++,c++Builder等等。)课题4:高校人事管理系统(一)、课程设计题目:高校人事管理系统(二)、目的与要求:1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求:(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;(4)在系统的设计中,至少要用到面向对象的一种机制。3、创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。4、写出设计说明书(三)、设计方法和基本原理:1、问题描述(功能要求):某高校,主要人员有:在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。要求:(1)添加删除功能:能根据学院人事的变动情况,添加删除记录;(2)查询功能:能根据编号和姓名进行查询;(3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;(4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);(5)保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。(6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。-2-2、问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系包括属性和行为;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述(包括属性和方法);(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告以及系统使用说明书。目录1.系统需求分析.........................................................................................................-1-2.总体设计......................................................................................................................23.详细设计......................................................................................................................34.系统调试......................................................................................................................45.结果分析......................................................................................................................46.总结..............................................................................................................................71.系统需求分析题目需求:(1)添加删除功能:能根据学院人事的变动情况,添加删除记录;(2)查询功能:能根据编号和姓名进行查询;(3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;(4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);(5)保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。(6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。系统设计目标:(1)系统能根据用户输入菜单的选项进行执行。(2)能对基本错误进行判断,并要求用重新输入。(3)能够把输入的数据保存到txt文件中,下次能够使用。(4)有较好的人性化,不至于用户不知道做什么。系统实现功能:(1)删除功能:能根据用户输入姓名与编号进行删除。(2)查询功能:能根据用户输入姓名、编号、职位、来校时间、离校时间。(3)编辑功能:能根据查询的数据进行修改。(4)统计功能:能根据多种参数进行人员统计。(5)保持功能:能对输入的数据进行存储在文件中。(6)识别错误功能:能对基本错误进行判断,并要求用户重新输入。(7)人员编号在生成人员信息时自动生成。湖南工程学院课程设计报告-2-2.总体设计系统功能模块划分Main()InputFile()Menu()inputAllInformation()Search()Delete()Edit()Statistics()Show()EmptyFile()ExitSystem()湖南工程学院课程设计报告-3-3.详细设计UML:TimePeopleToSchoolTimeLeaveSchoolTimeWorkerTime-numbert:int-Work:work;-ToSchoolTime:toSchoolTime-LeaveSchoolTime:leaveSchoolTime-WorkTime:workerTime-judgeLeaveSchol:char+Worker(j='N':char)+~Worker()+constgetNum():int+constgetWork():Work+constgetToSchoolTime():ToSchoolTime+constgetLeaveSchoolTime():LeaveSchoolTime+constgetWorkTime():WorkTime+constgetJudgeLeaveSchool():char+setNum(n:int&):void+setWork(w:Work&):void+setToSchoolTime(t:ToScholTime&):void+setLeaveSchoolTime(l:LeaveSchoolTime&):void+setWorkTime(w:WorkTime&):void+setJudgeLeaveSchool(j:char&):void+virtualinput():void+friendoperator(out:ostream,worker:constWorker&):ostream+friendoperator(input:istream,worker:constWorker&):istreamWork湖南工程学院课程设计报告-4-4.系统调试1.问题1:VC++6.0对友元函数支持不是很好,通过查资料得知解决方法。2.问题2:逻辑错误,通过分析解决。3.问题3:txt文件读入到动态数组中去,会读错,读不出,多读入一个,通过询问老师同学解决。4.问题4:vector容器中成员函数的使用,通过查书解决。5.结果分析1.输入信息2.查询信息1:按姓名查询2:按编号查询湖南工程学院课程设计报告-5-3:按来校时间查询4:按离校时间查询5:按职工职位查询3:删除信息1:按姓名删除2:按编号删除4:编辑信息3:增加职工湖南工程学院课程设计报告-6-5:统计信息6:输出信息0:退出系统独到的设计:1.有基本的纠错功能,并能提示用户重新输入。2.除了按姓名、编号搜索还能按来小时间、离校时间、职位进行搜索。3.编辑功能能够分别对姓名、编号、性别、修改。4.较好的使用继承、派生,符合基本思维。5.较好的使用类的组合。6.函数命名、类的命名、数据的命名能够见明思意,较好的符合命名规则。不足之处:1.源代码过多,仅仅使用了容器vector,没有使用STL迭代器、算法等。2.基类没有很好的抽象。3.主函数调用的函数没有封装在一个类中,仅仅包含在一个头文件中。湖南工程学院课程设计报告-7-4.文件的操作没有很好的掌握。5.数据输出,没有按格式对齐混乱。6.函数过长,函数做的事情不止一件。7.类中包含的成员过多。8.不够人性话,用户界面不够美观。9.对于一些错误不能有效的终止。(总结自己独到的设计特点和不足之处。)6.总结通过一周的课程设计,我学到了很多东西,1.系统分析,类层次之间的关系非常重要,只有架构好总体,才能设计出好的系统2.建立了一套完整的系统模型,先从整体入手,再细分。而不是一开始就着急编写,那样系统只会非常混乱。3.函数、类的命名。基本上能够见名思意。4..文件的操作本来是一片模糊,通过实践操作,已经理解对文件的操作,原来很简单。5.通过与同学讨论,知道要擅长使用STL来解决实际问题,而不是自己去编写函数。懂得利用C++中定义的对象解决问题。对于面向对象设计又有了更深的理解。6.类之间的设计中符合人的思维逻辑。7.通过一些书籍,知道在设计中要遵守的规则,程序中统一的输出格式。8.知道一些基本的优化规则,如函数只能做一件事、越小越好、基类要足够的抽象,最好使用组合而不是继承,减少依赖性等等。9.在程序设计中要与别人合作,