1、- 1 -一 、 设 计 内 容 与 设 计 要 求1.课程设计目的:面向对象程序设计课程设计是集中实践性环节之一,是学习完面向对象程序设计课程后进行的一次全面的综合练习。要求学生达到熟练掌握 C+语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。2.课题题目1)公司库存管理系统2)高校学籍管理系统3)高校工资管理系统4)高校人事管理系统5)通讯录程序设计6)学生成绩管理系统7) 图书管理系统8)文本编辑器的设计与实现9)学生考勤管理系统10)公司人员管理系统3设计要求: 设计课题题目:
2、 每位同学根据自己学号除 以 9 所得的余数加一选择相应题号的课题。换题者不记成绩。 (课题 10 只做为参考课题) 根据自己对应的课题完成以下主要工作:完成系统需求分析:包括系统设计目的与意义;系统功能需求(系统流程图) ;输入输出的要求。完成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模块图) 。完成系统详细设计:包括数据库需求分析;数据库概念结构设计(ER 图) ;数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。系统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。使用说明书及编程体会:说明如何使用你编写的程序,- 2 -详细列出每一
3、步的操作步骤。关键源程序(带注释) 按规定格式完成课程设计报告,将其打印稿(A4 纸)上交给老师存档。 不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。二 、 进 度 安 排第 18 周 星期一 8:0012:00星期二 8:0012:00星期四 8:0012:00第 19 周 星期一 8:0012:00星期二 14:3018:30星期三 8:0012:00三、参考书籍1.C程序设计课程设计 刘振安编著 TP312C5632.C+ Builder 和 Delphi 课程设计与系统开发案例 伍俊良 清华大学出版社 7-302-06072-X 3.Visual C+课程设计案例精编 严
4、华峰 中国水利水电出版社 7-5084-2007-1 2004 4.Visual C+课程设计与系统开发案例 伍俊良 清华大学出版社 7-302-05968-3 2002(编程平台不限,vc+, c+ Builder 等等。 )课题 4:高校人事管理系统 (一) 、课程设计题目:高校人事管理系统(二) 、目的与要求: 1、目的: (1)要求学生达到熟练掌握 C+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2、基本要求: (1)要求利用面向对象的方法以及 C+的编程思想来完成系统的设计; (2)要
5、求在设计的过程中,建立清晰的类层次; (3)在系统中至少要定义四个类,每个类中要有各自的属性和方法; (4)在系统的设计中,至少要用到面向对象的一种机制。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 4、写出设计说明书 (三) 、设计方法和基本原理: 1、问题描述(功能要求): 某高校,主要人员有:在职人员(行政人员、教师、一般员工) 、退休人员、返聘人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。要求: (1)添加删除功能:能根据学院人事的变动情况,添加删除记录;(2)查询功
6、能:能根据编号和姓名进行查询;(3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;(4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数) ;(5)保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。(6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加 1。- 1 -2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系包括属性和行为; (3)根据问题描述,设计系统的类层次;
7、(4)完成类层次中各个类的描述(包括属性和方法) ; (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试; (8)完成系统总结报告以及系统使用说明书。目 录1. 系统需求分析 .12. 总体设计 .23. 详细设计 .34. 系统调试 .45. 结果分析 .46. 总结 .71. 系统需求分析题目需求:(1)添加删除功能:能根据学院人事的变动情况,添加删除记录;(2)查询功能:能根据编号和姓名进行查询;(3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;(4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数) ;(5)
8、保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。(6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加 1。系统设计目标:(1) 系统能根据用户输入菜单的选项进行执行 。(2) 能对基本错误进行判断,并要求用重新输入。(3) 能够把输入的数据保存到 txt 文件中,下次能够使用。(4) 有较好的人性化,不至于用户不知道做什么。系统实现功能:(1)删除功能:能根据用户输入姓名与编号进行删除。(2)查询功能:能根据用户输入姓名、编号、职位、来校时间、离校时间。(3)编辑功能:能根据查询的数据进行修改。(4)统计功能:能根据多种参数进行人员统计。(5
9、)保持功能:能对输入的数据进行存储在文件中。(6)识别错误功能:能对基本错误进行判断,并要求用户重新输入。(7)人员编号在生成人员信息时自动生成。湖南工程学院课程设计报告- 1 -2. 总体设计系统功能模块划分M a i n ( )I n p u t F i l e ( )M e n u ( )i n p u t A l l I n f o r m a t i o n( )S e a r c h ( )D e l e t e ( )E d i t ( )S t a t i s t i c s ( )S h o w ( )E m p t y F i l e ( )E x i t S y s t
10、e m ( )湖南工程学院课程设计报告- 2 -3. 详细设计 UML :TimePeopleToSchoolTime LeaveSchoolTime WorkerTime-numbert: int -Work: work;-ToSchoolTime: toSchoolTime-LeaveSchoolTime : leaveSchoolTime-WorkTime: workerTime-judgeLeaveSchol: char+Worker(j=N:char)+Worker()+ getNum(): int+ getWork(): Work+ getToSchoolTime(): ToSch
11、oolTime+ getLeaveSchoolTime(): LeaveSchoolTime+ getWorkTime(): WorkTime+ getJudgeLeaveSchool(): char+setNum(n : int virtual Time();int getYear() const;int getMonth() const;int getDay() const;void setYear(int y);void setMonth(int m);void setDay(int d);bool judgeLeapYear();protected:int year;int month
12、;int day;#endifTime.cpp#includeusing namespace std;#include“Time.h“Time:Time(int y, int m, int d):year(y),month(m),day(d)Time:Time()- 2 -int Time:getYear() const return year;int Time:getMonth() constreturn month;int Time:getDay() constreturn day;void Time:setYear(int y)year=y;void Time:setMonth(int
13、m)month=m;void Time:setDay(int d)day=d;bool Time:judgeLeapYear()bool flag=true;flag=(year%4=0) return flag;ToSchoolTime.h#ifndef TOSCHOOLTIME_H#define TOSCHOOLTIME_H#include“Time.h“class ToSchoolTime:public Timepublic:ToSchoolTime(int y=1900, int m=1, int d=1);virtual ToSchoolTime(); bool judgeYear(
14、);void inputYear();bool judgeMonth();void inputMonth();- 3 -int judgeMonthDay();bool judgeDay();void inputDay();void inputToSchoolTime();friend ostream inputt.yearc1t.monthc2t.day;return input;private:int oneMonthDay;#endifToSchoolTime.cpp#includeusing namespace std;#include“ToSchoolTime.h“#include“
15、Time.h“ToSchoolTime:ToSchoolTime(int y, int m, int d):Time(y,m,d)oneMonthDay=30;ToSchoolTime:ToSchoolTime()bool ToSchoolTime:judgeYear() const int startYear=1990;- 4 -bool flag=true;if(year “year;flag=judgeYear(); cout 12)flag=false;coutmonth;flag=judgeMonth();cout oneMonthDay)flag=false;coutday;fla
16、g=judgeDay();cout(istream inputl.yearc1l.monthc2l.day;return input;private:int oneMonthDay;#endifLeaveSchool.cpp#includeusing namespace std;#include“LeaveSchoolTime.h“#include“ToSchoolTime.h“#include“Time.h“LeaveSchoolTime:LeaveSchoolTime(int year, int month, int day):Time(year,month,day)oneMonthDay
17、=judgeMonthDay(); /调用函数。LeaveSchoolTime:LeaveSchoolTime()int LeaveSchoolTime:getOneMonthDay() constreturn oneMonthDay;int LeaveSchoolTime:judgeLeaveSchoolYear(const int if(toSchoolYear = year)flag=0;if(toSchoolYear year) - 9 -flag=-1;cout “year;flag=judgeLeaveSchoolYear(toSchoolYear);cout month)flag
18、=-1;return flag;void LeaveSchoolTime:inputMonth(const int - 10 -if(flagYear = 0)int flagMonth=-1;while(flagMonth = -1)coutmonth;flagMonth=judgeLeaveSchoolMonth(toSchoolMonth);elsecoutmonth;cout day)flag=-1;cout “ oneMonthDay)- 12 -flag=false;cout “day;flagDay=judgeLeaveSchoolDay(toSchoolDay);flagOve
19、roneMonthDay=judgeDayOveroneMonthDay();else- 13 -bool flagOveroneMonthDay=false;while(!flagOveroneMonthDay)coutday;flagOveroneMonthDay=judgeDayOveroneMonthDay(); coutusing namespace std;#ifndef WORKTIME_H#define WORKTIME_H#include“Time.h“#include“ToSchoolTime.h“#include“LeaveSchoolTime.h“class WorkT
20、ime:public Timepublic:WorkTime();virtual WorkTime();- 14 -void calculateWorkTimeYear(const int /计算在职年份void calculateWorkTimeMonth(const int /计算在职月份void calculateWorkTimeDay(const int /计算在职天数void calculateWorkTime(const ToSchoolTime /计算在职时间void isDayNegative(int /天数为负,则月份减一 void isMonthNegative(int f
21、riend ostream inputw.yearc1w.monthc2w.day;return input;private:int oneMonthDay;#endifWorkTime.cpp#includeusing namespace std;#include“Time.h“- 15 -#include“ToSchoolTime.h“#include“LeaveSchoolTime.h“#include“WorkTime.h“WorkTime:WorkTime()WorkTime:WorkTime()void WorkTime:calculateWorkTimeYear(const int void WorkTime:isMonthNegative(int month=month+12;void WorkTime:calculateWorkTimeMonth(const int isMonthNegative(month);void WorkTime:isDayNegative(int day=day+oneMonthDay;