C高校人员信息管理系统.docx

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

C高校人员信息管理系统.docx

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

C高校人员信息管理系统.docx

C高校人员信息管理系统

 

《基于C++的面向对象程序设计实例》

课程设计报告

 

课程名称C++面向对象程序设计

课题名称高校人员信息管理系统

专业计算机科学与技术

班级1220541

学号122054113

姓名苗鹏程

指导教师侯欢欢

 

(一)、课程设计题目:

高校人员信息管理系统

(二)、目的与要求:

1、目的:

(1)要求学生达到熟练掌握C++语言的基本知识和技能;

(2)基本掌握面向对象程序设计的基本思路和方法;

(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

2、基本要求:

(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;

(2)要求在设计的过程中,建立清晰的类层次;

(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;

(4)在系统的设计中,至少要用到面向对象的一种机制。

3、创新要求:

在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。

(三)、设计方法和基本原理:

1.功能要求

添加功能

程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求人员的编号要唯一,如果添加了重复编号的记录时,则提示用户数据添加重复并取消添加。

查询功能

可根据编号、姓名等信息对已添加的记录进行查询。

如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

显示功能

可显示当前系统中所有记录。

修改功能

可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

删除功能

对已添加的人员记录进行删除。

如果当前系统中没有相应的人员记录,则提示“记录为空!

”并返回操作;否则输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。

统计功能

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

例如:

统计四类人员数量以及总数,统计男、女员工的数量,统计某年龄段人员的数量等。

保存功能

将当前系统中各类人员记录存入文件中。

读取功能

将保存在文件中的人员信息读入到当前系统中,以供用户使用。

在完成以上基本功能的基础上,可自行进行扩展或完善。

2.问题的解决方案:

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

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

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

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

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

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

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

(7)功能调试;

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

 

1.第一章绪论

1.1课程设计的目的

《C++面向对象程序设计》是计算机专业的基础课程,本课程按照软件程序设计所需能力进行教学设计,提出以项目模块方式带动相关知识点、实践项目和理论并行的思路,将案例贯穿于课程始终,对原有的教学体系、教学内容进行重新编排,按照从易到难的原则,将其巧妙地融入到项目开发过程中,降低学习难度,提高学生学习的信心,有效培养学生的应用能力和学习能力。

1.2课程设计的背景和意义

随着社会的发展,各种公司规模逐渐变大,需要对公司的员工信息进行统一有效的管理,方便的对人员的信息进行增添、查阅、修改、删除、保存,这就必须有一个实用的管理系统。

1.2.1课程设计的背景

1.理论研究基础

掌握C++基本知识,具体包括:

掌握面向对象基本知识和基本概念,掌握静态成员的定义与作用,掌握友元的定义,掌握运算符重载方法,继承与派生,虚函数的定义和使用,输入、输出流操作,文件的创建、打开、读写、关闭等。

2.技术层面的支持

(1)定义基类与派生类,将数据成员与成员函数封装在类中。

(2)设计增添、显示、查询、修改、删除、保存等函数。

1.2.2课程设计的意义

(1)通过课程设计的综合训练,培养了学生分析解决实际问题和编程等实际动手能力。

帮助了同学系统的掌握C++课程的主要内容。

(2)通过详细的实例分析,循环渐进的描述,启发学生顺利的完成设计。

课程设计将设计要求、需求分析、算法设计、编程和实例测试运行分开,为学生创造分析问题、独立

思考的条件。

(3)通过编写一个较长的程序,实现了对人员信息的管理,激发了学生学习编程的兴趣。

1.3课程设计环境

MicrosoftVisualC++6.0

 

2.第二章需求分析

2.1问题描述

某高校有四类人员:

教师、实验员、行政人员、教师兼行政人员;共有的信息包括:

编号、姓名、性别、年龄等。

其中,教师还包含的信息有:

所在系部、专业、职称;实验员还包含的信息有:

所在实验室、职务;行政人员还包含的信息有:

政治面貌、职称等。

2.2功能要求

1)添加功能

程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求人员的编号要唯一,如果添加了重复编号的记录时,则提示用户数据添加重复并取消添加。

2)查询功能

可根据编号、姓名等信息对已添加的记录进行查询。

如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

3)显示功能

可显示当前系统中所有记录。

4)修改功能

可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

5)删除功能

对已添加的人员记录进行删除。

如果当前系统中没有相应的人员记录,则提示“记录为空!

”并返回操作;否则输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。

6)统计功能

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

例如:

统计四类人员数量以及总数,统计男、女员工的数量,统计某年龄段人员的数量等。

7)保存功能

将当前系统中各类人员记录存入文件中。

8)读取功能

将保存在文件中的人员信息读入到当前系统中,以供用户使用。

在完成以上基本功能的基础上,可自行进行扩展或完善。

2.3问题的解决方案

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

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

2)分析系统中的各个实体以及它们之间的关系;

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

4)完成类层次中各个类的描述;

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

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

7)功能调试;

8)完成系统总结报告。

 

3.第三章系统设计

3.1数据设计

3.1.1类设计

1.人员的管理需包含人员的基本信息,所以定义一个人员类如表3-1所示:

表3-1员工类

类名

人员类

数据成员

protected:

num(编号)charname[20](姓名)

charsex[10](性别)age(年龄)

成员函数

public:

Input():

输入函数

Output():

输出函数

GetNum():

获取编号

GetName():

获取姓名

2.根据高校人员的工作性质的不同,将所有员工分为教师、实验员、行政人员,教师兼行政人员

表3-2教师类

类名

教师类(公有继承员工类)

数据成员

protected:

chardepart[20](部门);

charspec[20](专业);

chartitle[20](职称);

成员函数

public:

voidInput_1():

输入函数

voidOutput_1():

输出函数

charGetDepart():

获取部门

charGetSpec():

获取专业

charGetTitle():

获取职称

friendTea_Manage:

友元教师管理类

表3-3实验员类

类名

实验员类(公有继承员工类)

数据成员

protected:

chartextroom[20](所在实验室)

charpost[20](职务)

成员函数

public:

voidInput_3():

输入函数

voidOutput_3():

输出函数

charGetTextroom():

获取实验室

charGetPost():

获取职务

friendExp_Manage:

友元实验人员管理类

表3-4行政人员类

类名

行政人员类(公有继承员工类)

数据成员

public:

charpolitics[20]:

(政治面貌)

chartitle[20]:

(职称)

成员函数

public:

voidInput_2():

输入函数

voidOutput_2():

输出函数

charGetPolitics():

获取政治面貌

charGetTitle():

获取职称

friendSta_Manage:

友元行政人员管理类

 

表3-5教师兼行政人员类

类名

教师兼行政人员类(公有继承员工类)

 

数据成员

成员函数

Public:

voidInput_4():

输入函数

voidOutput_4():

输出函数

friendTea_Sta_Manage:

友元教师行政人员管理类

4、为了控制以上的类,分别建立了4个管理类,以经理的管理了为例:

表3-6教师管理类

类名

教师管理类

数据成员

TeacherTea[20](创建教师的空间);

top(统计人员数和进行操作时的指针);

3.1.2类之间的关系

员工类派生出教师类、实验员类、行政人员类,教师类和行政人员类派生出教师兼行政人员类。

3.1.3函数设计

根据要求,为了功能的实现,通过top实现功能。

分别以8个功能函数进行对数据的操作(下面以经理类为例)

voidAdd();(信息的添加)

voidSearch();(信息的查找)

voidEdit();(信息的编辑)

voidTotal();(信息的统计)

voidDelete();(信息的删除)

voidShow();(信息的显示)

voidSave();(信息的存储)

voidRead();(信息的读取)

3.2结构设计

3.2.1系统流程图

 

3.2.2界面设计

1.主菜单界面,如图3—3所示

图3—3主菜单

2.教师菜单界面,如图3-4

图3—4教师管理界面

3.教师查询界面,如图3-5所示:

 

图3—5教师查询界面

4.教师删除界面,如图3-6所示:

图3—6教师删除界面

 

4.第四章系统实现

4.1类实现

classPerson//人员类

classTeacher:

virtualpublicPerson//教师类

classGovernment:

virtualpublicPerson//行政人员类

classExperimenter:

publicPerson//实验员类

classTea_Gover:

publicTeacher,publicGovernment:

//教师兼行政人员类

classTea_manage//教师管理类

classGov_manage//行政人员管理类

classExp_manage//实验员管理类

classTea_GoverManage//教师兼行政人员管理类

4.2函数实现

voidPerson:

:

Input()//员工信息输入

{

cout<<"请输入编号:

"<>num;

cout<<"请输入名字:

"<>name;

cout<<"请输入性别:

"<>sex;

cout<<"请输入年龄:

"<>age;

}

voidTeacher:

:

Input_1()//教师信息输入

{

Input();

cout<<"请输入所在系别:

"<>depart;

cout<<"请输入专业名称:

"<>spec;

cout<<"请输入职称:

"<>title;

}

voidPerson:

:

Output()//员工信息输出

{

cout<<"编号:

"<

cout<<"姓名:

"<

cout<<"性别:

"<

cout<<"年龄:

"<

}

voidTeacher:

:

Output_1()//教师信息输出

{

Output();

cout<<"所在系别:

"<

cout<<"所在专业:

"<

cout<<"职称:

"<

}

intPerson:

:

GetNum()//返回编号

{

returnnum;

}

charPerson:

:

GetName()//返回姓名

{

returnname[20];

}

charPerson:

:

GetSex()//返回性别

{

returnsex[10];

}

intPerson:

:

GetAge()//返回年龄

{

returnage;

}

charTeacher:

:

GetDepart()//返回所在部门

{

returndepart[20];

}

charTeacher:

:

GetSpec()//返回专业

{

returnspec[20];

}

charTeacher:

:

GetTitle()//返回职称

{

returntitle[20];

}

voidTea_Manage:

:

Add()//教师信息的添加

{

Teachert;

cout<<"请输入新增人员的信息:

"<

t.Input_1();inti;

for(i=0;i

{

if(t.GetNum()==Tea[i].GetNum())

{

cout<<"编号已存在,请重新输入:

"<

break;

}

}

if(i==top)

{

if(top>1000)

cout<<"内存已满,不可添加"<

elseif(top<=1000)

{Tea[top]=t;

cout<<"添加成功"<

top++;

}

return;

}

}

voidTea_Manage:

:

Show()//教师信息的显示

{

for(inti=0;i

{

Tea[i].Output_1();

cout<<"....................................."<

}

}

voidTea_Manage:

:

Search()//教师信息的查询

{

if(top==0)

{

cout<<"没有任何信息"<

}

intchoice;inti=0;

intm=0;intn=0;intnum;

cout<<"请输入您的选择:

"<

cout<<"查询方式1.按名字2.按编号"<

cin>>choice;

switch(choice)

{

case1:

{

charname[20];

cout<<"请输入您所查询的人员名字:

"<

cin>>name;

for(i;i

{

if(!

strcmp(name,Tea[i].name))

{

Tea[i].Output_1();

break;

}

}

if(i==top)

cout<<"查无此人"<

}break;

case2:

{

cout<<"请输入编号:

"<

cin>>num;

for(i=0;i

{

if(num==Tea[i].GetNum())

{

Tea[i].Output_1();

}

if(i==top)

cout<<"查无此人"<

}

}break;

}

}

voidTea_Manage:

:

Edit()//教师信息的修改

{

inti=0;

Search();

cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<

cout<<"1.修改编号2.修改姓名3.修改性别4.修改年龄5.修改系别6.修改专业7.修改职称0.退出"<

cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<

intchoice;cin>>choice;

switch(choice)

{

case1:

cout<<"编号不可修改"<

break;

case2:

{

charna[20];

cout<<"请输入修改后的姓名:

"<>na;

strcpy(Tea[i].name,na);

cout<<"修改成功"<

}break;

case3:

{

intm;

chara[10];

cout<<"输入修改后的内容:

"<

cin>>a;

strcpy(Tea[i].sex,a);

cout<<"修改成功,是否继续(1/2)"<

cin>>m;

if(m=1)

return;

}break;

case4:

{

intb,m;

cout<<"请输入修改后的年龄:

"<

cin>>b;

Tea[i].age=b;

cout<<"修改成功,是否继续(1/2)"<>m;

if(m=1)

return;

}break;

case5:

{

intm;

charn[20];

cout<<"请输入修改后系部:

"<

cin>>n;

strcpy(Tea[i].depart,n);

cout<<"修改成功,是否继续(1/2)"<

cin>>m;

if(m=1)

return;

}break;

case6:

{

intm;

charn[20];

cout<<"请输入修改后专业:

"<

cin>>n;

strcpy(Tea[i].spec,n);

cout<<"修改成功,是否继续(1/2)"<>m;

if(m=1)

return;

}break;

case7:

{

intm;

charn[20];

cout<<"请输入修改后的职称:

"<

cin>>n;

strcpy(Tea[i].title,n);

cout<<"修改成功,是否继续(1/2)"<>m;

if(m=1)

return;

}break;

case0:

cout<<"退出成功!

"<

default:

cout<<"无此选项!

请重试!

"<

}

}

voidTea_Manage:

:

Delete()//教师信息的删除

{

Teachert;

inti=0;

cout<<"请输入你想删除人员的编号:

"<>t.num;

if(top==0)

cout<<"没有人员选择"<

for(i;i

{

if(t.num==Tea[i].num)

{

Tea[i]=Tea[i+1];

top--;

}

break;

if(i==top)

cout<<"查无此人"<

}

cout<<"删除成功"<

return;

intm;cin>>m;

if(m=1)return;

}

voidTea_Manage:

:

Total()//教师信息的统计

{

cout<

}

voidTea_Manage:

:

Save()//教师信息的保存

{

ofstreamoutfile("c:

//高校管理系统之教师类.dat",ios:

:

binary);

if(!

outfile)

{

cerr<<"openerror!

"<

abort();

}

for(inti=0;i

{

outfile.write((char*)&Tea[i],sizeof(Tea[i]));

}

cout<<"保存成功"<

outfile.close();

}

voidTea_Manage:

:

Read()//教师信息的读出

{

ifstreaminfile("c:

//高校管理系统之教师类.dat",ios:

:

binary);

if(!

infile)

{

cerr<<"openerror!

"<

abort();

}

while(infile.read((char*)&Tea[top],sizeof(Tea[0])))top++;

cout<<"读取成功"<

infile.close();

}

4.3主函数实现

intmain()//主函数的实现

{

cout<<"***欢迎进入北华航天工业学院人员管理系统***"<

intchoice;

do{

cout<<"*****主菜单*****\n"<

cout<<"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<

cout<<"||||"<

cout<<"||1=>行政人员管理2=>教师管理||"<

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

当前位置:首页 > 经管营销 > 生产经营管理

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

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