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)完成系统总结报告以及系统使用说明书

目录

摘 要 . ............................................................................................... 错误!未定义书签。 第一章 绪论 . ......................................................................................................................... 5

1.1 课程设计的目的 . ................................................................................................... 4 1.2 课程设计的背景和意义 . ....................................................................................... 4

1.2.1 课程设计的背景 . ..................................................................................... 4 1.2.2 课程设计的意义 . ..................................................................................... 4 1.3 课程设计环境 . ....................................................................................................... 5 第二章 需求分析 . ................................................................................................................. 6

2.1 问题描述 . ............................................................................................................... 6 2.2 功能要求 . ............................................................................................................... 6 2.3 问题的解决方案 . ................................................................................................... 6 第三章 系统设计 . ................................................................................................................. 8

3.1 数据设计 . ............................................................................................................... 8

3.1.1 类设计 . ..................................................................................................... 8 3.1.2 类之间的关系 . ....................................................................................... 10 3.1.3 函数设计 . ............................................................................................... 10 3.2 结构设计 . ............................................................................................................. 10

3.2.1 系统流程图 . ........................................................................................... 10 3.2.2 界面设计 . ............................................................................................... 11

第四章 系统实现 . ............................................................................................................... 13

4.1 类实现 . ................................................................................................................. 13 4.2 函数实现 . ............................................................................................................. 13 4.3 主函数实现 . ......................................................................................................... 21 第五章 系统测试 . ............................................................................................................... 23

5.1 模块测试 . ............................................................................................................. 23 5.2 课程设计过程中遇到的问题 . ............................................................................. 28 结 论 . ................................................................................................................................... 29 致谢 . ..................................................................................................... 错误!未定义书签。0 参考书目 . ............................................................................................................................... 31

1. 第一章 绪论

1.1 课程设计的目的

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

1.2 课程设计的背景和意义

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

1.2.1 课程设计的背景

1. 理论研究基础

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

2. 技术层面的支持

(1)定义基类与派生类,将数据成员与成员函数封装在类中。 (2)设计增添、显示、查询、修改、删除、保存等函数。

1.2.2 课程设计的意义

(1)通过课程设计的综合训练,培养了学生分析解决实际问题和编程等实际动手能力。帮助了同学系统的掌握C++课程的主要内容。

(2)通过详细的实例分析,循环渐进的描述,启发学生顺利的完成设计。课程设计将设计要求、需求分析、算法设计、编程和实例测试运行分开,为学生创造分析问题、独立 思考的条件。

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

1.3 课程设计环境

Microsoft Visual C++ 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员工类

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

表3-3实验员类

表3-4行政人员类

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

3.1.2 类之间的关系

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

3.1.3 函数设计

根据要求,为了功能的实现,通过top 实现功能。分别以8个功能函数进行对数据的操作(下面以经理类为例)

void Add(); (信息的添加) void Search(); (信息的查找)

void Edit(); (信息的编辑) void Total(); (信息的统计) void Delete(); (信息的删除) void Show(); (信息的显示) void Save(); (信息的存储)

void Read(); (信息的读取)

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 类实现

class Person //人员类 class Teacher:virtual public Person //教师类 class Government:virtual public Person //行政人员类 class Experimenter:public Person //实验员类

class Tea_Gover:public Teacher,public Government: //教师兼行政人员类 class Tea_manage //教师管理类 class Gov_manage //行政人员管理类 class Exp_manage //实验员管理类

class Tea_GoverManage //教师兼行政人员管理类

4.2 函数实现

void Person::Input() //员工信息输入 {

cout>num; cout>name; cout>sex; cout>age; }

void Teacher::Input_1() //教师信息输入 {

Input();

cout>depart; cout>spec; cout>title; }

void Person::Output () //员工信息输出 {

coutvoid Teacher::Output_1() //教师信息输出 {

Output();

cout

int Person::GetNum() //返回编号 {

return num; }

char Person::GetName() //返回姓名 {

return name[20]; }

char Person::GetSex() //返回性别 {

return sex[10]; }

int Person::GetAge() //返回年龄 {

return age; }

char Teacher::GetDepart() //返回所在部门 {

return depart[20]; }

char Teacher::GetSpec() //返回专业 {

return spec[20]; }

char Teacher::GetTitle() //返回职称 {

return title[20]; }

void Tea_Manage::Add() //教师信息的添加 {

Teacher t;

cout

if(i==top) { if(top>1000) cout

return; } }

void Tea_Manage::Show() //教师信息的显示 {

for(int i=0;i

cout

void Tea_Manage::Search() //教师信息的查询 {

if(top==0) { cout

int choice;int i=0;

int m=0; int n=0;int num;

cout

cout>choice; switch(choice) { case 1: { char name[20]; cout>name; for(i;i>num; for(i=0;i

void Tea_Manage::Edit() //教师信息的修改 {

int i=0; Search();

cout

cout

cout

int choice;cin>>choice; switch(choice) {

case 1: cout>na; strcpy(Tea[i].name,na); cout

{ int m; char a[10]; cout>a; strcpy(Tea[i].sex,a); cout>m; if(m=1) return; }break; case 4: { int b,m; cout>b; Tea[i].age=b; cout>m; if(m=1) return; }break; case 5: { int m; char n[20]; cout>n; strcpy(Tea[i].depart,n); cout>m; if(m=1) return; }break; case 6: { int m; char n[20]; cout>n; strcpy(Tea[i].spec,n); cout>m; if(m=1) return; }break; case 7: { int m; char n[20]; cout>n; strcpy(Tea[i].title,n); cout>m; if(m=1) return; }break;

case 0:cout

default:cout

void Tea_Manage::Delete() //教师信息的删除 {

Teacher t; int i=0;

cout>t.num; if(top==0) cout

cout

int m; cin>>m; if(m=1) return; }

void Tea_Manage::Total() //教师信息的统计 {

cout

void Tea_Manage::Save() //教师信息的保存 {

ofstream outfile("c://高校管理系统之教师类.dat",ios::binary); if(!outfile) { cerr

for(int i=0;i

cout

void Tea_Manage::Read() //教师信息的读出 {

ifstream infile("c://高校管理系统之教师类.dat",ios::binary); if(!infile) { cerr

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

4.3 主函数实现

int main() //主函数的实现 {

cout

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

cout 实验人员管理 4 =>教师兼行政人员管理 ||" 退出系统 ||">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"

cout>choice; switch(choice) { case 1:StuMenu();break; case 2:TeaMenu();break; case 3:ExpMenu();break; case 4:Tea_StaMenu();break; case 0:cout

}while(choice!=0);

cout

5. 第五章 系统测试

5.1 模块测试

以教师信息为例进行说明。

(1)选择对教师信息进行添加 ,见图5—1 ,图5—2

图5—1

图5—2 (2)选择对教师信息显示 图

5—3

图5—3

(3)选择对教师信息修改 图5—4

图5—4 (4)修改后显示 图5—5

图5—5

(5)对教师信息的删除 图5—6

图5—6 (6)对教师信息保存 图5—7

图5—7 (7)对保存的教师信息的读取 图5—8

图5—8 (8)程序的退出 图

5—9

图5—9

5.2 课程设计过程中遇到的问题

1、程序设计时选择了数组的方式来对数据的操作,在查询时,由于思路不明确,没有成功实现程序对教师信息的查询,在请教老师之后,巧妙地运用了变量top ,终于完成了查询的功能。

2、文件的存入和读出使用的2进制的方法,对此,因为掌握不是很熟练,总是存入读出错误,在查阅了课本书籍之后,仍出现类似问题,请教老师后明白了2进制存入、读出的方法,实现了相关功能。

结论

通过本程序设计掌握了类对象、类数组、继承、派生、重载、输入输出流的定义和使用,对使用C++语言编码有了更深层次的理解,也认识到了自己还有许多不足之处,达到了实验目的。

本系统基本完成了题目的功能要求,并且还在一定程度上进行了优化,具体如下: 优点:删除时可以重新选择;对无效数据的输入进行了有效的判断;在删除和查询时既可以按编号也可以按姓名;每次删除后自动将人员信息显示出来。

缺点:对于重名的人员系统照旧可以添加,没有提醒;人员的编号可以重复。 可以改进的地方:在添加成员时进行验证,看所输姓名和编号是否重复,若重复进行重新输入;在实现七个功能的地方添加exit 函数,一旦操作失误,不想继续进行,则系统跳转会主界面进行新的操作选择。

6. 心得体会

本次课程设计主要使用了本学期学习的Microsoft Visual C++ 6.0的设计环境,内容涵盖了c 和c++语言部分知识,在本次编程过程中,我学习到了很多。例如:在编程首先要有全局观念,要认识到自己是要编写怎样的程序,并且要构建相应的程序结构,否则漫无目的的编写只能造成自己后期的负担。其次要熟练的掌握老师以前所教授的相关知识,这样在编写程序的时候才能得心应手。再次,要分步进行程序的编写,实现一个功能,再实现另一个功能,不可以全部编好最后在检查,否则最终无从下手。

我现在才明白一个真正好的程序是需要很多人共同完成的,不是说一个人就能完成一个程序的编写,现在的程序还不是很大,但如果是一个巨型系统,任何一个人是不可能完成的,像是微软操作系统也是由很多高手一起编写的,这次编写过程中,我请教了老师和同学一些问题,是在他们的帮助下我才最终顺利地完成任务。让我深刻的认识到团队的力量。

所以在以后学习过程中,我想应该多探讨,多帮助,多学习才行。

参考书目

[1] 沈炜,徐慧. Visual C++数据库编程技术与实例 . 北京:人民邮电出版社,2005 [2] 邓阿奇, 丁有和. Visual C++ 教程 . 北京:清华大学出版社,2004年9月 [3] 谭浩强. C++程序设计. 北京:清华大学出版社,2004年

[4] 谭浩强.C 语言程序设计(第2版). 北京:清华大学出版社, 2003

附录:关键程序代码

#include #include #include

#include "Person.h"

#include "Experiment.h" #include "Goverment.h" #include "Teacher.h" #include "Tea_Gov.h"

#include "Tea_Manage.h" #include "Exp_Manage.h" #include "Gov_Manage.h" #include "Teagov_Manage.h" using namespace std;

//////////////////////////////////////////////////////////////////////////

void TeaMenu(); void ExpMenu(); void GovMenu(); void Tea_GovMenu();

///////////////////////////////////*main主函数 int main() {

int choice; do{ cout

============================================================================"

============================================================================">choice; switch(choice) { case 1:TeaMenu();break; case 2:ExpMenu();break; case 3:GovMenu();break;

case 4:Tea_GovMenu();break; case 0:cout

}while(choice!=0);

cout

void TeaMenu()

{ system("cls"); Tea_Manage t; int choice;

while(choice!=0) { cout>choice; switch(choice) { case 1:t.Add();break; case 2:t.Search();break; case 3:t.Edit();break; case 4:t.Total();break; case 5:t.Delete();break; case 6:t.Show();break; case 7:t.Save();break; case 8:t.Read();break; case 0:cout

void ExpMenu() {

system("cls"); Exper_Manage t; int choice;

while(choice!=0) { cout

cout>choice; switch(choice) { case 1:t.Add();break; case 2:t.Search();break; case 3:t.Edit();break; case 4:t.Total();break; case 5:t.Delete();break; case 6:t.Show();break; case 7:t.Save();break; case 8:t.Read();break; case 0:cout>choice; switch(choice) { case 1:t.Add();break; case 2:t.Search();break; case 3:t.Edit();break; case 4:t.Total();break; case 5:t.Delete();break; case 6:t.Show();break; case 7:t.Save();break; case 8:t.Read();break; case 0:cout

31

++++">choice; switch(choice) {

}

} }

case 1:t.Add();break; case 2:t.Search();break; case 3:t.Edit();break; case 4:t.Total();break; case 5:t.Delete();break; case 6:t.Show();break; case 7:t.Save();break; case 8:t.Read();break; case 0:cout

《基于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)完成系统总结报告以及系统使用说明书

目录

摘 要 . ............................................................................................... 错误!未定义书签。 第一章 绪论 . ......................................................................................................................... 5

1.1 课程设计的目的 . ................................................................................................... 4 1.2 课程设计的背景和意义 . ....................................................................................... 4

1.2.1 课程设计的背景 . ..................................................................................... 4 1.2.2 课程设计的意义 . ..................................................................................... 4 1.3 课程设计环境 . ....................................................................................................... 5 第二章 需求分析 . ................................................................................................................. 6

2.1 问题描述 . ............................................................................................................... 6 2.2 功能要求 . ............................................................................................................... 6 2.3 问题的解决方案 . ................................................................................................... 6 第三章 系统设计 . ................................................................................................................. 8

3.1 数据设计 . ............................................................................................................... 8

3.1.1 类设计 . ..................................................................................................... 8 3.1.2 类之间的关系 . ....................................................................................... 10 3.1.3 函数设计 . ............................................................................................... 10 3.2 结构设计 . ............................................................................................................. 10

3.2.1 系统流程图 . ........................................................................................... 10 3.2.2 界面设计 . ............................................................................................... 11

第四章 系统实现 . ............................................................................................................... 13

4.1 类实现 . ................................................................................................................. 13 4.2 函数实现 . ............................................................................................................. 13 4.3 主函数实现 . ......................................................................................................... 21 第五章 系统测试 . ............................................................................................................... 23

5.1 模块测试 . ............................................................................................................. 23 5.2 课程设计过程中遇到的问题 . ............................................................................. 28 结 论 . ................................................................................................................................... 29 致谢 . ..................................................................................................... 错误!未定义书签。0 参考书目 . ............................................................................................................................... 31

1. 第一章 绪论

1.1 课程设计的目的

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

1.2 课程设计的背景和意义

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

1.2.1 课程设计的背景

1. 理论研究基础

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

2. 技术层面的支持

(1)定义基类与派生类,将数据成员与成员函数封装在类中。 (2)设计增添、显示、查询、修改、删除、保存等函数。

1.2.2 课程设计的意义

(1)通过课程设计的综合训练,培养了学生分析解决实际问题和编程等实际动手能力。帮助了同学系统的掌握C++课程的主要内容。

(2)通过详细的实例分析,循环渐进的描述,启发学生顺利的完成设计。课程设计将设计要求、需求分析、算法设计、编程和实例测试运行分开,为学生创造分析问题、独立 思考的条件。

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

1.3 课程设计环境

Microsoft Visual C++ 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员工类

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

表3-3实验员类

表3-4行政人员类

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

3.1.2 类之间的关系

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

3.1.3 函数设计

根据要求,为了功能的实现,通过top 实现功能。分别以8个功能函数进行对数据的操作(下面以经理类为例)

void Add(); (信息的添加) void Search(); (信息的查找)

void Edit(); (信息的编辑) void Total(); (信息的统计) void Delete(); (信息的删除) void Show(); (信息的显示) void Save(); (信息的存储)

void Read(); (信息的读取)

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 类实现

class Person //人员类 class Teacher:virtual public Person //教师类 class Government:virtual public Person //行政人员类 class Experimenter:public Person //实验员类

class Tea_Gover:public Teacher,public Government: //教师兼行政人员类 class Tea_manage //教师管理类 class Gov_manage //行政人员管理类 class Exp_manage //实验员管理类

class Tea_GoverManage //教师兼行政人员管理类

4.2 函数实现

void Person::Input() //员工信息输入 {

cout>num; cout>name; cout>sex; cout>age; }

void Teacher::Input_1() //教师信息输入 {

Input();

cout>depart; cout>spec; cout>title; }

void Person::Output () //员工信息输出 {

coutvoid Teacher::Output_1() //教师信息输出 {

Output();

cout

int Person::GetNum() //返回编号 {

return num; }

char Person::GetName() //返回姓名 {

return name[20]; }

char Person::GetSex() //返回性别 {

return sex[10]; }

int Person::GetAge() //返回年龄 {

return age; }

char Teacher::GetDepart() //返回所在部门 {

return depart[20]; }

char Teacher::GetSpec() //返回专业 {

return spec[20]; }

char Teacher::GetTitle() //返回职称 {

return title[20]; }

void Tea_Manage::Add() //教师信息的添加 {

Teacher t;

cout

if(i==top) { if(top>1000) cout

return; } }

void Tea_Manage::Show() //教师信息的显示 {

for(int i=0;i

cout

void Tea_Manage::Search() //教师信息的查询 {

if(top==0) { cout

int choice;int i=0;

int m=0; int n=0;int num;

cout

cout>choice; switch(choice) { case 1: { char name[20]; cout>name; for(i;i>num; for(i=0;i

void Tea_Manage::Edit() //教师信息的修改 {

int i=0; Search();

cout

cout

cout

int choice;cin>>choice; switch(choice) {

case 1: cout>na; strcpy(Tea[i].name,na); cout

{ int m; char a[10]; cout>a; strcpy(Tea[i].sex,a); cout>m; if(m=1) return; }break; case 4: { int b,m; cout>b; Tea[i].age=b; cout>m; if(m=1) return; }break; case 5: { int m; char n[20]; cout>n; strcpy(Tea[i].depart,n); cout>m; if(m=1) return; }break; case 6: { int m; char n[20]; cout>n; strcpy(Tea[i].spec,n); cout>m; if(m=1) return; }break; case 7: { int m; char n[20]; cout>n; strcpy(Tea[i].title,n); cout>m; if(m=1) return; }break;

case 0:cout

default:cout

void Tea_Manage::Delete() //教师信息的删除 {

Teacher t; int i=0;

cout>t.num; if(top==0) cout

cout

int m; cin>>m; if(m=1) return; }

void Tea_Manage::Total() //教师信息的统计 {

cout

void Tea_Manage::Save() //教师信息的保存 {

ofstream outfile("c://高校管理系统之教师类.dat",ios::binary); if(!outfile) { cerr

for(int i=0;i

cout

void Tea_Manage::Read() //教师信息的读出 {

ifstream infile("c://高校管理系统之教师类.dat",ios::binary); if(!infile) { cerr

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

4.3 主函数实现

int main() //主函数的实现 {

cout

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

cout 实验人员管理 4 =>教师兼行政人员管理 ||" 退出系统 ||">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"

cout>choice; switch(choice) { case 1:StuMenu();break; case 2:TeaMenu();break; case 3:ExpMenu();break; case 4:Tea_StaMenu();break; case 0:cout

}while(choice!=0);

cout

5. 第五章 系统测试

5.1 模块测试

以教师信息为例进行说明。

(1)选择对教师信息进行添加 ,见图5—1 ,图5—2

图5—1

图5—2 (2)选择对教师信息显示 图

5—3

图5—3

(3)选择对教师信息修改 图5—4

图5—4 (4)修改后显示 图5—5

图5—5

(5)对教师信息的删除 图5—6

图5—6 (6)对教师信息保存 图5—7

图5—7 (7)对保存的教师信息的读取 图5—8

图5—8 (8)程序的退出 图

5—9

图5—9

5.2 课程设计过程中遇到的问题

1、程序设计时选择了数组的方式来对数据的操作,在查询时,由于思路不明确,没有成功实现程序对教师信息的查询,在请教老师之后,巧妙地运用了变量top ,终于完成了查询的功能。

2、文件的存入和读出使用的2进制的方法,对此,因为掌握不是很熟练,总是存入读出错误,在查阅了课本书籍之后,仍出现类似问题,请教老师后明白了2进制存入、读出的方法,实现了相关功能。

结论

通过本程序设计掌握了类对象、类数组、继承、派生、重载、输入输出流的定义和使用,对使用C++语言编码有了更深层次的理解,也认识到了自己还有许多不足之处,达到了实验目的。

本系统基本完成了题目的功能要求,并且还在一定程度上进行了优化,具体如下: 优点:删除时可以重新选择;对无效数据的输入进行了有效的判断;在删除和查询时既可以按编号也可以按姓名;每次删除后自动将人员信息显示出来。

缺点:对于重名的人员系统照旧可以添加,没有提醒;人员的编号可以重复。 可以改进的地方:在添加成员时进行验证,看所输姓名和编号是否重复,若重复进行重新输入;在实现七个功能的地方添加exit 函数,一旦操作失误,不想继续进行,则系统跳转会主界面进行新的操作选择。

6. 心得体会

本次课程设计主要使用了本学期学习的Microsoft Visual C++ 6.0的设计环境,内容涵盖了c 和c++语言部分知识,在本次编程过程中,我学习到了很多。例如:在编程首先要有全局观念,要认识到自己是要编写怎样的程序,并且要构建相应的程序结构,否则漫无目的的编写只能造成自己后期的负担。其次要熟练的掌握老师以前所教授的相关知识,这样在编写程序的时候才能得心应手。再次,要分步进行程序的编写,实现一个功能,再实现另一个功能,不可以全部编好最后在检查,否则最终无从下手。

我现在才明白一个真正好的程序是需要很多人共同完成的,不是说一个人就能完成一个程序的编写,现在的程序还不是很大,但如果是一个巨型系统,任何一个人是不可能完成的,像是微软操作系统也是由很多高手一起编写的,这次编写过程中,我请教了老师和同学一些问题,是在他们的帮助下我才最终顺利地完成任务。让我深刻的认识到团队的力量。

所以在以后学习过程中,我想应该多探讨,多帮助,多学习才行。

参考书目

[1] 沈炜,徐慧. Visual C++数据库编程技术与实例 . 北京:人民邮电出版社,2005 [2] 邓阿奇, 丁有和. Visual C++ 教程 . 北京:清华大学出版社,2004年9月 [3] 谭浩强. C++程序设计. 北京:清华大学出版社,2004年

[4] 谭浩强.C 语言程序设计(第2版). 北京:清华大学出版社, 2003

附录:关键程序代码

#include #include #include

#include "Person.h"

#include "Experiment.h" #include "Goverment.h" #include "Teacher.h" #include "Tea_Gov.h"

#include "Tea_Manage.h" #include "Exp_Manage.h" #include "Gov_Manage.h" #include "Teagov_Manage.h" using namespace std;

//////////////////////////////////////////////////////////////////////////

void TeaMenu(); void ExpMenu(); void GovMenu(); void Tea_GovMenu();

///////////////////////////////////*main主函数 int main() {

int choice; do{ cout

============================================================================"

============================================================================">choice; switch(choice) { case 1:TeaMenu();break; case 2:ExpMenu();break; case 3:GovMenu();break;

case 4:Tea_GovMenu();break; case 0:cout

}while(choice!=0);

cout

void TeaMenu()

{ system("cls"); Tea_Manage t; int choice;

while(choice!=0) { cout>choice; switch(choice) { case 1:t.Add();break; case 2:t.Search();break; case 3:t.Edit();break; case 4:t.Total();break; case 5:t.Delete();break; case 6:t.Show();break; case 7:t.Save();break; case 8:t.Read();break; case 0:cout

void ExpMenu() {

system("cls"); Exper_Manage t; int choice;

while(choice!=0) { cout

cout>choice; switch(choice) { case 1:t.Add();break; case 2:t.Search();break; case 3:t.Edit();break; case 4:t.Total();break; case 5:t.Delete();break; case 6:t.Show();break; case 7:t.Save();break; case 8:t.Read();break; case 0:cout>choice; switch(choice) { case 1:t.Add();break; case 2:t.Search();break; case 3:t.Edit();break; case 4:t.Total();break; case 5:t.Delete();break; case 6:t.Show();break; case 7:t.Save();break; case 8:t.Read();break; case 0:cout

31

++++">choice; switch(choice) {

}

} }

case 1:t.Add();break; case 2:t.Search();break; case 3:t.Edit();break; case 4:t.Total();break; case 5:t.Delete();break; case 6:t.Show();break; case 7:t.Save();break; case 8:t.Read();break; case 0:cout


相关内容

  • 高校水电费管理
  • 青岛理工大学 C++面向对象课程设计报告 院(系): 计算机工程学院 专业: 软件工程 学生姓名: 班级 题目: 高校水电费管理系统设计_______ 起迄日期: _2015.6.29-2015.7.10 设计地点: 计算机学院机房 指 导 教 师: 完成日期: 2015 年7月 10 日 任务书 ...

  • 各种编程语言的特点
  • 各种编程语言的特点.txt Pascal语言: Pascal是一种计算机通用的高级程序设计语言,由瑞士Niklaus Wirth教授六十年代末设计并创立的. Pascal的主要特点有:严格的结构化形式.丰富完备的数据类型.运行效率高.查错能力强等特点. 由于上述特点,Pascal可以方便用于描述各种 ...

  • 排课系统的遗传算法交叉算子实现--本科毕业论文
  • 天 津 师 范 大 学 本科毕业论文(设计) 题目:排课系统的遗传算法交叉算子实现 学 院:计算机与信息工程学院 学生姓名: *** 学 号: ******** 专 业: 计算机科学与技术 年 级: 2008级 完成日期: 2012年4月 指导教师: 排课系统的遗传算法交叉算子实现 摘要:近年来随着 ...

  • 图书借阅管理系统
  • 青岛农业大学 课程设计报告 课程名称: 动态网站课程设计 设计题目: 图书借阅管理系统 专 业: 计算机科学与技术09级1班 学生姓名: 学 号: 小组成员: 指导教师: 王轩慧 实习地点: 完成时间 2012年9月10日 1系统概述 1.1 开发背景及意义 图书管理系统在实际中应用广泛,例如所有大 ...

  • 电脑公司求职简历
  • 自荐信 尊敬的电脑公司领导: 您好!很荣幸您能在百忙之中翻阅我的求职信,谢谢! 我是一名即将毕业的计算机专业毕业生.大学三,奠定了扎实的专业理论基础,良好的组织能力,团队协作精神,务实的工作作风. ★理论学习上 认真学习专业知识理论,阅读了大量计算机书籍.同时对于法律.文学等方面的非专业知识我也有浓 ...

  • 基于NCRE的网络安全与执法专业培养模式
  • [摘要]目前公安网监部门亟需网络安全与执法相关专业人才,而普通高校和部分公安院校毕业生无法立即满足当前网监部门的专业技能需求, 我们对公安网监业务和人才专业技能需求进行了深入调研, 认真总结网络安全与执法人才培养模式和专业技能, 提出基于NCRE(计算机等级考试)的网络安全与执法专业的培养模式,并对 ...

  • 课程设计选题管理系统设计
  • 北 华 航 天 工 业 学 院 <基于C++的面向对象程序设计实例> 课程设计报告 报告题目: 课程设计选题管理系统设计 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机应用技术 作者所在班级: 作 者 姓 名 : 指导教师姓名: 斯庆巴拉 完 成 时 间 : 北华航天工业学院 ...

  • VC小区物业管理
  • 6.1 系统的测试 --------------------------26 6.2 系统测试总结 -------------------------30 7 系统开发时注意的问题 ----------------------30 结束语 ------------------------------ ...

  • 文献综述 选课系统的
  • <选课系统的设计与实现>文献综述 张愉 摘要:随着计算机和网络的普及,高等学校里纷纷建立了C/S或者B/S结构的网上选课系统.与传统的选课方式相比,网上选课系统利用局域网为学生选课带来了便利.学生在学校的公共机房或者宿舍的个人电脑上通过网络来选课,只要选课还没有截止,学生就能够灵活的修改 ...