C++高校人员信息管理系统课程设计报告
.
《基于C++的面向对象程序设计实例》
课程设计报告
报告题目: 高校人员信息管理系统 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技术专业 作者所在班级: 作 者 姓 名 : 指导教师姓名: 完 成 时 间 : 2012.6
摘 要
.
.
在当前的市场经济体制下,企业间竞争不断,企业的发展与企业的有效管理密不可分,一个企业要偶适合自身特点的信息化管理系统,以实现企业降低成本、及时反馈市场信息、完善服务质量、提高经济效益、分析市场需求、制定销售
和目标等管理目的。 本文利用Microsoft Visual C++ 6.0编写程序,实现了用户对公司经理、技术人员、销售人员和销售经理管理操作。
本系统主要有八个功能模块:添加功能、查询功能、显示功能、 编辑功能、删除功能、 统计功能、保存功能、读取功能
关键词:系统设计 类 信息 面向对象
目录
摘 要 ............................................................................................................................ 1
第一章 绪论 ..................................................................................................................... 3
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 致谢 ................................................................................................ 错误~未定义书签。30 参考文献 ...........................................................................................................................31 任务书 ...............................................................................................................................32
第一章 绪论
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(1 问题描述
某高校有四类员工:教师、实验员、行政人员,教师兼行政人员;共有的信息包括:编号、姓名、性别、年龄等。其中,教师还包含的信息有:所在系部、专业、职称;实验员还包含的信息由:所在实验室、职务;行政人员还包含的信息有:政治面貌、职称等。
.
.
2(2 功能要求
(1)基本功能
1) 添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。
2) 查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
3) 显示功能:可显示当前系统中所有记录,每条记录占据一行。
4) 编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空~”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。
6) 统计功能:能根据多种参数进行人员的统计。例如,统计四类人员数量以及总数,
或者统计男、女员工的数量,或者统计某年龄段人员的数量等。
7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。
8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。
2(3 问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
2)分析系统中的各个实体及它们之间的关系;
3)根据问题描述,设计系统的类层次;
4)完成类层次中各个类的描述;
5)完成类中各个成员函数的定义;
6)完成系统的应用模块;
7)功能调试;
8)完成系统
报告。
.
.
第三章 系统设计 3(1 数据设计
3(1(1 类设计
1.人员的管理需包含人员的基本信息,所以定义一个人员类如表3-1所示:
表 3-1员工类
.
.
类名 人员类 数据成员 protected:
num(编号) char name[20](姓名)
char sex[10](性别) age(年龄) 成员函数 public:
Input():输入函数
Output():输出函数
GetNum():获取编号
GetName(): 获取姓名
2. 根据高校人员的工作性质的不同,将所有员工分为教师、实验员、行政人员,教师兼行政人员
表3-2教师类
类名 教师类(公有继承员工类) 数据成员 protected:
char depart[20](部门);
char spec[20](专业);
char title[20](职称); 成员函数 public:
void Input_1():输入函数
void Output_1():输出函数
char GetDepart(): 获取部门
char GetSpec(): 获取专业
char GetTitle(): 获取职称
friend Tea_Manage:友元教师管理类
表3-3实验员类
类名 实验员类(公有继承员工类) 数据成员 protected:
char textroom[20](所在实验室)
char post[20](职务) 成员函数 public:
void Input_3():输入函数
void Output_3():输出函数
char GetTextroom(): 获取实验室
.
.
char GetPost(): 获取职务
friend Exp_Manage: 友元实验人员管理类
表3-4行政人员类
类名 行政人员类(公有继承员工类) 数据成员 public:
char politics[20]:(政治面貌)
char title[20]:(职称)
成员函数 public:
void Input_2():输入函数
void Output_2():输出函数
char GetPolitics():获取政治面貌
char GetTitle():获取职称
friend Sta_Manage:友元行政人员管理类
表3-5教师兼行政人员类 类名 教师兼行政人员类(公有继承员工类)
数据成员
成员函数 Public:
void Input_4():输入函数
void Output_4():输出函数
friend Tea_Sta_Manage:友元教师行政人员管理
类
4、为了控制以上的类,分别建立了4个管理类,以经理的管理了为例:
表 3-6 教师管理类
.
.
类名 教师管理类
数据成员 Teacher Tea[20] (创建教师的空间);
top(统计人员数和进行操作时的指针);
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(1 类实现
class Person //人员类 class Teacher:virtual public Person //教师类 class Staff:virtual public Person //行政人员类 class Experimenter:public Person //实验员类
.
. class Tea_Sta:public Teacher,public Staff //教师兼行政人员类 class Tea_manage //教师管理类
class Sta_manage //行政人员管理类 class Exp_manage //实验员管理类 class Tea_Sta_manage //教师兼行政人员管理类 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 () //员工信息输出 {
cout<<"编号:"<1000)
cout<<"内存已满,不可添加"<>choice;
switch(choice)
{
case 1:
{
char name[20];
cout<<"请输入您所查询的人员名字:"<>name;
for(i;i>num;
for(i=0;i>choice;
switch(choice)
{
case 1:
cout<<"编号不可修改"<>na;
strcpy(Tea[i].name,na);
cout<<"修改成功"<>a;
strcpy(Tea[i].sex,a);
cout<<"修改成功,是否继续(1/2)"<>m;
if(m=1)
return;
}break;
case 4:
{
int b,m;
cout<<"请输入修改后的年龄:"<>b;
Tea[i].age=b;
cout<<"修改成功,是否继续(1/2)"<>m;
if(m=1)
return;
}break;
case 5:
{
int m;
char n[20];
cout<<"请输入修改后系部:"<>n;
strcpy(Tea[i].depart,n);
cout<<"修改成功,是否继续(1/2)"<>m;
if(m=1)
return;
}break;
case 6:
{
int m;
char n[20];
cout<<"请输入修改后专业:"<>n;
strcpy(Tea[i].spec,n);
cout<<"修改成功,是否继续(1/2)"<>m;
if(m=1)
.
.
return;
}break;
case 7:
{
int m;
char n[20];
cout<<"请输入修改后的职称:"<>n;
strcpy(Tea[i].title,n);
cout<<"修改成功,是否继续(1/2)"<>m;
if(m=1)
return;
}break;
case 0:cout<<"退出成功!"<>t.num;
if(top==0)
cout<<"没有人员选择"<>m;
if(m=1) return;
}
void Tea_Manage::Total() //教师信息的统计 {
cout< 行政人员管理 2 => 教师管理 ||"< 实验人员管理 4 =>教师兼行政人员管理 ||"< 退出系统
||"<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"<>choice;
switch(choice)
{
case 1:StuMenu();break;
case 2:TeaMenu();break;
case 3:ExpMenu();break;
case 4:Tea_StaMenu();break;
case 0:cout<<"\n您已安全退出系统."<