高校人事管理系统 C++文档格式.docx

上传人:b****5 文档编号:21709803 上传时间:2023-01-31 格式:DOCX 页数:67 大小:355.36KB
下载 相关 举报
高校人事管理系统 C++文档格式.docx_第1页
第1页 / 共67页
高校人事管理系统 C++文档格式.docx_第2页
第2页 / 共67页
高校人事管理系统 C++文档格式.docx_第3页
第3页 / 共67页
高校人事管理系统 C++文档格式.docx_第4页
第4页 / 共67页
高校人事管理系统 C++文档格式.docx_第5页
第5页 / 共67页
点击查看更多>>
下载资源
资源描述

高校人事管理系统 C++文档格式.docx

《高校人事管理系统 C++文档格式.docx》由会员分享,可在线阅读,更多相关《高校人事管理系统 C++文档格式.docx(67页珍藏版)》请在冰豆网上搜索。

高校人事管理系统 C++文档格式.docx

00

星期二8:

星期四8:

第19周星期一8:

星期二14:

30——18:

30

星期三8:

三、参考书籍

1.《C++程序设计课程设计》刘振安编著TP312C563

2.《C++Builder和Delphi课程设计与系统开发案例》伍俊良清华大学出版社7-302-06072-X

3.VisualC++课程设计案例精编严华峰中国水利水电出版社7-5084-2007-12004

4.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、问题的解决方案:

根据系统功能要求,可以将问题解决分为以下步骤:

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;

(2)分析系统中的各个实体及它们之间的关系包括属性和行为;

(3)根据问题描述,设计系统的类层次;

(4)完成类层次中各个类的描述(包括属性和方法);

(5)完成类中各个成员函数的定义;

(6)完成系统的应用模块;

(7)功能调试;

(8)完成系统总结报告以及系统使用说明书。

 

1.系统需求分析

题目需求:

系统设计目标:

(1)系统能根据用户输入菜单的选项进行执行。

(2)能对基本错误进行判断,并要求用重新输入。

(3)能够把输入的数据保存到txt文件中,下次能够使用。

(4)有较好的人性化,不至于用户不知道做什么。

系统实现功能:

(1)删除功能:

能根据用户输入姓名与编号进行删除。

(2)查询功能:

能根据用户输入姓名、编号、职位、来校时间、离校时间。

(3)编辑功能:

能根据查询的数据进行修改。

(4)统计功能:

能根据多种参数进行人员统计。

(5)保持功能:

能对输入的数据进行存储在文件中。

(6)识别错误功能:

能对基本错误进行判断,并要求用户重新输入。

(7)人员编号在生成人员信息时自动生成。

2.总体设计

系统功能模块划分

3.详细设计

UML:

4.系统调试

1.问题1:

VC++6.0对友元函数支持不是很好,通过查资料得知解决方法。

2.问题2:

逻辑错误,通过分析解决。

3.问题3:

txt文件读入到动态数组中去,会读错,读不出,多读入一个,通过询问

老师同学解决。

4.问题4:

vector容器中成员函数的使用,通过查书解决。

5.结果分析

1.输入信息

2.查询信息

1:

按姓名查询

2:

按编号查询

3:

按来校时间查询

4:

按离校时间查询

5:

按职工职位查询

3:

删除信息

1:

按姓名删除

2:

按编号删除

4:

编辑信息

3:

增加职工

统计信息

6:

输出信息

0:

退出系统

独到的设计:

1.有基本的纠错功能,并能提示用户重新输入。

2.除了按姓名、编号搜索还能按来小时间、离校时间、职位进行搜索。

3.编辑功能能够分别对姓名、编号、性别、修改。

4.较好的使用继承、派生,符合基本思维。

5.较好的使用类的组合。

6.函数命名、类的命名、数据的命名能够见明思意,较好的符合命名规则。

不足之处:

1.源代码过多,仅仅使用了容器vector,没有使用STL迭代器、算法等。

2.基类没有很好的抽象。

3.主函数调用的函数没有封装在一个类中,仅仅包含在一个头文件中。

4.文件的操作没有很好的掌握。

5.数据输出,没有按格式对齐混乱。

6.函数过长,函数做的事情不止一件。

7.类中包含的成员过多。

8.不够人性话,用户界面不够美观。

9.对于一些错误不能有效的终止。

(总结自己独到的设计特点和不足之处。

6.总结

通过一周的课程设计,我学到了很多东西,

1.系统分析,类层次之间的关系非常重要,只有架构好总体,才能设计出好的系统

2.建立了一套完整的系统模型,先从整体入手,再细分。

而不是一开始就着急编写,那样系统只会非常混乱。

3.函数、类的命名。

基本上能够见名思意。

4..文件的操作本来是一片模糊,通过实践操作,已经理解对文件的操作,原来很简单。

5.通过与同学讨论,知道要擅长使用STL来解决实际问题,而不是自己去编写函数。

懂得利用C++中定义的对象解决问题。

对于面向对象设计又有了更深的理解。

6.类之间的设计中符合人的思维逻辑。

7.通过一些书籍,知道在设计中要遵守的规则,程序中统一的输出格式。

8.知道一些基本的优化规则,如函数只能做一件事、越小越好、基类要足够的抽象,最好使用组合而不是继承,减少依赖性等等。

9.在程序设计中要与别人合作,把自己的糟粕去掉,吸取别人程序中的精华,与其他同学讨论。

10.编写中要先写好一个功能后马上调试,及时发现问题,及时解决问题,而不是系统写完后再慢慢调试,那样问题会很多,调好这里后那里又出现问题,我们初学者还有很多细节不会注意,这种方法有助于我更快的编写出系统,减少编写时间,把更多的时间留下来完善程序。

总之,通过这次的课程设计,让我真正了解到C++语言中的类模块真正魅力和无穷的功能,感到STL的强大,希望尽快掌握STL的知识来解决实际问题。

通过对文件的操作领略到编程的神奇,感到非常的方便。

这个学期的对C++的学习,仅仅是叩开了C++这扇大门,里面还有很多知识我所不知道的,而此次的课程设计更加激发了我对C++语言学习的浓厚兴趣。

这个假期会进一步加强这个学期所学,也会进一步学习C++。

计算机与通信学院课程设计评分表

课程名称:

面向对象程序设计

项目

评价

设计方案的合理性与创造性

设计与调试结果

设计说明书的质量

答辩陈述与回答问题情况

课程设计周表现情况

综合成绩

教师签名:

日期:

附源代码:

Time.h

#ifndefTIME_H

#defineTIME_H

classTime

{

public:

Time(inty=1900,intm=1,intd=1);

virtual~Time();

intgetYear()const;

intgetMonth()const;

intgetDay()const;

voidsetYear(inty);

voidsetMonth(intm);

voidsetDay(intd);

booljudgeLeapYear();

protected:

intyear;

intmonth;

intday;

};

#endif

Time.cpp

#include<

iostream>

usingnamespacestd;

#include"

Time.h"

Time:

:

Time(inty,intm,intd):

year(y),month(m),day(d)

}

~Time()

{}

intTime:

getYear()const

{returnyear;

getMonth()const

{returnmonth;

getDay()const

{returnday;

voidTime:

setYear(inty)

{year=y;

setMonth(intm)

{month=m;

setDay(intd)

{day=d;

boolTime:

judgeLeapYear()

boolflag=true;

flag=((year%4==0)&

&

(year%100!

=0)||(year%400==0));

returnflag;

ToSchoolTime.h

#ifndefTOSCHOOLTIME_H

#defineTOSCHOOLTIME_H

classToSchoolTime:

publicTime

ToSchoolTime(inty=1900,intm=1,intd=1);

virtual~ToSchoolTime();

booljudgeYear();

voidinputYear();

booljudgeMonth();

voidinputMonth();

intjudgeMonthDay();

booljudgeDay();

voidinputDay();

voidinputToSchoolTime();

friendostream&

operator<

<

(ostream&

out,constToSchoolTime&

t)

{

out<

"

"

;

t.year<

-"

t.month<

t.day;

returnout;

}

friendistream&

operator>

>

(istream&

input,ToSchoolTime&

charc1,c2;

input>

t.year>

c1>

t.month>

c2>

returninput;

private:

intoneMonthDay;

ToSchoolTime.cpp

ToSchoolTime.h"

ToSchoolTime:

ToSchoolTime(inty,intm,intd):

Time(y,m,d)

{oneMonthDay=30;

~ToSchoolTime()

boolToSchoolTime:

judgeYear()

{constintstartYear=1990;

if(year<

startYear)

flag=false;

cout<

\t输入有误,起始年份大于来校年份:

startYear<

>

year<

endl;

voidToSchoolTime:

inputYear()

boolflag=false;

while(!

flag)

cout<

###来校年份###(1990~?

):

cin>

year;

flag=judgeYear();

}

cout<

judgeMonth()

constintstartMonth=1;

constintendMonth=12;

if(month<

1||month>

12)

\t输入有误,一年中没有"

month<

月份"

}

inputMonth()

###来校月份###(1~12):

cin>

month;

flag=judgeMonth();

intToSchoolTime:

judgeMonthDay()

if(month==2)

boolflagYear=false;

flagYear=judgeLeapYear();

if(flagYear)

{oneMonthDay=29;

else

{oneMonthDay=28;

elseif(month<

8)

if(month%2==0)

{oneMonthDay=30;

else{oneMonthDay=31;

else

{oneMonthDay=31;

}returnoneMonthDay;

judgeDay()

constintstartDay=1;

constintendDay=oneMonthDay;

if(day<

startDay||day>

oneMonthDay)

\t输入有误,"

月份没有"

day<

这一天"

inputDay()

{oneMonthDay=judgeMonthDay();

###来校日###(1~"

oneMonthDay<

day;

flag=judgeDay();

inputToSchoolTime()

{inputYear();

inputMonth();

inputDay();

LeaveSchoolTime.h

#ifndefLEAVESCHOOLTIME_H

#defineLEAVESCHOOLTIME_H

classLeaveSchoolTime:

LeaveSchoolTime(intyear=2010,intmonth=1,intday=1);

virtual~LeaveSchoolTime();

intgetOneMonthDay()const;

voidinputYear(constint&

toSchoolYear);

intjudgeLeaveSchoolYear(constint&

//判断输入年份是否小于来校年份

intjudgeLeaveSchoolMonth(constint&

toSchoolMonth);

//当来校年份与离校年份相等时,判断输入月份是否小于来校月

intjudgeLeaveSchoolDay(constint&

toSchoolDay);

voidinputMonth(constint&

toSchoolYear,constint&

intjudgeMonthDay();

//判断一个月有多少天.

booljudgeDayOveroneMonthDay();

voidinputDay(constint&

toSchoolMonth,constint&

voidinputLeaveSchoolTime(constToSchoolTime&

toSchoolTime);

out,constLeaveSchoolTime&

l)//友元函数重载<

用来输出

LeaveSchoolTime类

l.year<

l.month<

l.day;

input,LeaveSchoolTime&

l)//友元函数重载>

用来输入

LeaveSchoolTime类

l.year>

l.month>

LeaveSchool.cpp

LeaveSchoolTime.h"

LeaveSchoolTime:

LeaveSchoolTime(intyear,intmonth,intday):

Time(year,month,day)

{oneMonthDay=judgeMonthDay();

}//调用函数。

~LeaveSchoolTime()

intLeaveSchoolTime:

getOneMonthDay()const

{returnoneMonthDay;

judgeLeaveSchoolYear(constint&

toSchoolYear)

{intflag=1;

if(toSchoolYear==year)

{flag=0;

if(toSchoolYear>

year)

flag=-1;

\t输入有误,来校年份大于离校年份:

toSchoolYear<

voidLeaveSchoolTime:

inputYear(constint&

intflag=-1;

while(flag==-1)

###该职工离校的年份###("

~?

flag=judgeLeaveSchoolYear(toSchoolYear);

judgeLeaveSchoolMonth(constint&

toSchoolMonth)

intflag=1;

if(toSchoolMon

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1