高校人事管理系统 C++.docx

上传人:b****5 文档编号:8573579 上传时间: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

高校人事管理系统C++

一、设计内容与设计要求

1.课程设计目的:

面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。

要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。

2.课题题目

1)公司库存管理系统

2)高校学籍管理系统

3)高校工资管理系统

4)高校人事管理系统

5)通讯录程序设计

6)学生成绩管理系统

7)图书管理系统

8)文本编辑器的设计与实现

9)学生考勤管理系统

10)公司人员管理系统

3.设计要求:

⑴设计课题题目:

每位同学根据自己学号除以9所得的余数加一选择相应题号的课题。

换题者不记成绩。

(课题10只做为参考课题)

⑵根据自己对应的课题完成以下主要工作:

①完成系统需求分析:

包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。

②完成系统总体设计:

包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。

③完成系统详细设计:

包括数据库需求分析;数据库概念结构设计(E-R图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。

④系统调试:

调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。

⑤使用说明书及编程体会:

说明如何使用你编写的程序,详细列出每一步的操作步骤。

⑥关键源程序(带注释)

⑶按规定格式完成课程设计报告,将其打印稿(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++程序设计课程设计》刘振安编著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)编辑功能(高级):

根据查询对相应的记录进行修改,并存储;

(4)统计功能:

能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);

(5)保存功能:

能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。

(6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加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:

增加职工

5:

统计信息

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

usingnamespacestd;

#include"Time.h"

Time:

:

Time(inty,intm,intd):

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

{

}

Time:

:

~Time()

{}

intTime:

:

getYear()const

{returnyear;}

intTime:

:

getMonth()const

{returnmonth;}

intTime:

:

getDay()const

{returnday;}

voidTime:

:

setYear(inty)

{year=y;}

voidTime:

:

setMonth(intm)

{month=m;}

voidTime:

:

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

#include"Time.h"

classToSchoolTime:

publicTime

{

public:

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

virtual~ToSchoolTime();

booljudgeYear();

voidinputYear();

booljudgeMonth();

voidinputMonth();

intjudgeMonthDay();

booljudgeDay();

voidinputDay();

voidinputToSchoolTime();

friendostream&operator<<(ostream&out,constToSchoolTime&t)

{

out<<"";

out<

returnout;

}

friendistream&operator>>(istream&input,ToSchoolTime&t)

{

charc1,c2;

input>>t.year>>c1>>t.month>>c2>>t.day;

returninput;

}

private:

intoneMonthDay;

};

#endif

ToSchoolTime.cpp

#include

usingnamespacestd;

#include"ToSchoolTime.h"

#include"Time.h"

ToSchoolTime:

:

ToSchoolTime(inty,intm,intd):

Time(y,m,d)

{oneMonthDay=30;}

ToSchoolTime:

:

~ToSchoolTime()

{}

boolToSchoolTime:

:

judgeYear()

{constintstartYear=1990;

boolflag=true;

if(year

{

flag=false;

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

"<"<

}

returnflag;

}

voidToSchoolTime:

:

inputYear()

{

boolflag=false;

while(!

flag)

{

cout<<"###来校年份###(1990~?

):

";

cin>>year;

flag=judgeYear();

}

cout<

}

boolToSchoolTime:

:

judgeMonth()

{

boolflag=true;

constintstartMonth=1;

constintendMonth=12;

if(month<1||month>12)

{

flag=false;

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

}

returnflag;}

voidToSchoolTime:

:

inputMonth()

{

boolflag=false;

while(!

flag)

{

cout<<"###来校月份###(1~12):

";

cin>>month;

flag=judgeMonth();

}

cout<

}

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

{

if(month%2==0)

{oneMonthDay=31;}

else

{oneMonthDay=30;}

}returnoneMonthDay;

}

boolToSchoolTime:

:

judgeDay()

{

boolflag=true;

constintstartDay=1;

constintendDay=oneMonthDay;

if(dayoneMonthDay)

{

flag=false;

cout<<"\t输入有误,"<

}

returnflag;

}

voidToSchoolTime:

:

inputDay()

{oneMonthDay=judgeMonthDay();

boolflag=false;

while(!

flag)

{

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

";

cin>>day;

flag=judgeDay();

}

cout<

}

voidToSchoolTime:

:

inputToSchoolTime()

{inputYear();

inputMonth();

inputDay();}

LeaveSchoolTime.h

#ifndefLEAVESCHOOLTIME_H

#defineLEAVESCHOOLTIME_H

#include"Time.h"

#include"ToSchoolTime.h"

classLeaveSchoolTime:

publicTime

{

public:

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

virtual~LeaveSchoolTime();

intgetOneMonthDay()const;

voidinputYear(constint&toSchoolYear);

intjudgeLeaveSchoolYear(constint&toSchoolYear);//判断输入年份是否小于来校年份

intjudgeLeaveSchoolMonth(constint&toSchoolMonth);//当来校年份与离校年份相等时,判断输入月份是否小于来校月

intjudgeLeaveSchoolDay(constint&toSchoolDay);

voidinputMonth(constint&toSchoolYear,constint&toSchoolMonth);

intjudgeMonthDay();//判断一个月有多少天.

booljudgeDayOveroneMonthDay();

voidinputDay(constint&toSchoolYear,constint&toSchoolMonth,constint&toSchoolDay);

voidinputLeaveSchoolTime(constToSchoolTime&toSchoolTime);

friendostream&operator<<(ostream&out,constLeaveSchoolTime&l)//友元函数重载<<用来输出

LeaveSchoolTime类

{

out<

returnout;

}

friendistream&operator>>(istream&input,LeaveSchoolTime&l)//友元函数重载>>用来输入

LeaveSchoolTime类

{

charc1,c2;

input>>l.year>>c1>>l.month>>c2>>l.day;

returninput;

}

private:

intoneMonthDay;

};

#endif

LeaveSchool.cpp

#include

usingnamespacestd;

#include"LeaveSchoolTime.h"

#include"ToSchoolTime.h"

#include"Time.h"

LeaveSchoolTime:

:

LeaveSchoolTime(intyear,intmonth,intday):

Time(year,month,day)

{oneMonthDay=judgeMonthDay();}//调用函数。

LeaveSchoolTime:

:

~LeaveSchoolTime()

{}

intLeaveSchoolTime:

:

getOneMonthDay()const

{returnoneMonthDay;}

intLeaveSchoolTime:

:

judgeLeaveSchoolYear(constint&toSchoolYear)

{intflag=1;

if(toSchoolYear==year)

{flag=0;}

if(toSchoolYear>year)

{

flag=-1;

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

"<"<

}

returnflag;

}

voidLeaveSchoolTime:

:

inputYear(constint&toSchoolYear)

{

intflag=-1;

while(flag==-1)

{

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

):

";

cin>>year;

flag=judgeLeaveSchoolYear(toSchoolYear);

}

cout<

}

intLeaveSchoolTime:

:

judgeLeaveSchoolMonth(constint&toSchoolMonth)

{

intflag=1;

if(toSchoolMon

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

当前位置:首页 > 初中教育

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

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