C++大学人员信息管理系统报告文档格式.docx
《C++大学人员信息管理系统报告文档格式.docx》由会员分享,可在线阅读,更多相关《C++大学人员信息管理系统报告文档格式.docx(60页珍藏版)》请在冰豆网上搜索。
1.2.2课程设计的意义
(1)通过课程设计的综合训练,培养了学生分析解决实际问题和编程等实际动手能力。
帮助了同学系统的掌握C++课程的主要内容。
(2)通过详细的实例分析,循环渐进的描述,启发学生顺利的完成设计。
课程设计将设计要求、需求分析、算法设计、编程和实例测试运行分开,为学生创造分析问题、独立思考的条件。
(3)通过编写一个较长的程序,实现了对人员信息的管理,激发了学生学习编程的兴趣。
1.3课程设计环境
在MicrosoftVisualC++6.0开发平台上编写程序源代码,修改,增加功能,通过编译、连接,直到完全无误,最终执行程序,反复输入新的数据进行验证并进一步完善。
第二章需求分析
2.1问题描述
某高校,主要人员有:
领导、教师和学生,共有的信息包括:
编号、姓名、性别、年龄。
其中领导还应包含的信息有:
任职部门(学院、各系部)、职称;
教师还应包含的信息有:
职称、任职时间、专业;
学生还应包含的信息有:
所在班级、所在宿舍等。
2.2功能要求
对各类人员信息完成的基本功能有:
1)添加功能:
程序能够添加相应的记录;
2)查询功能:
能根据编号和姓名进行查询,并显示相应的记录信息;
3)编辑功能:
根据查询结果对相应的记录进行修改;
4)统计功能:
能根据多种参数进行人员的统计;
5)删除功能:
根据查找结果,完成具体记录的删除;
6)保存功能:
将对高校人员信息进行的添加、删除、修改结果保存到文本文件中。
2.3问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
2)分析系统中的各个实体及它们之间的关系;
3)根据问题描述,设计系统的类层次;
4)完成类层次中各个类的描述;
5)完成类中各个成员函数的定义;
6)完成系统的应用模块;
7)功能调试;
8)完成系统总结报告。
第三章系统设计
3.1数据设计
3.1.1类设计
人员有共同的信息编号number、姓名neme、性别sex、年龄age,所以设计一个基类people,在此基础上派生出leader类(添加数据成员任职部门bumen,职称zhicheng),teacher类(添加数据成员职称zhicheng,任职时间time,专业project),student类(添加数据成员班级banji,宿舍sushe)。
基类people中包含设置成员值的set函数,添加成员的add函数。
在派生类leader,teacher,student中对set和add进行重新定义。
为了对信息进行添加、删除、查找等功能,定义leaderbase,teacher,student类,分别定义对象数组,定义指向对象的指针,以leaderbase类为例,inttop;
人数leaderread[Maxr];
领导类数组;
leaderbase()将领导信息从leader.txt读取到read[]中,voiddelnu(intu)编号删除,voiddelname(char*na)姓名删除,voidclear()删除所有,voiddisp()领导信息显示,voiddata()领导维护,~leaderbase()将read[]中的信息读入到leader.txt中。
3.1.2类之间的关系
由people类派生出leader,teacher,student类,leaderbase类调用leader类,teacherbase类调用了teacher类,studentbase类调用了student类.。
派生类对基类的成员进行继承。
继承是面向对象程序设计中软件重用的关键技术。
继承机制使用已经定义的类作为基础建立新的类定义,新的类是原有类的数据、操作和新类所添加的数据、操作的组合。
新的类把原有类作为基类引用,而不需要修改原有类的定义。
3.1.3函数设计
leaderbase()将领导信息从leader.txt读取到read[]中,voiddelnu(intn)编号删除,voiddelname(char*na)姓名删除,voidclear()删除所有,voiddisp()领导信息显示,voiddata()领导数据维护,实现领导信息的添加、删除、查询、显示、统计、更改功能。
~leaderbase()将read[]中的信息读如到leader.txt中。
当删除和查找时调用两个函数leader*query(intn),leader*query1(char*na),看删除或查找的领导是否存在,若存在,返回指向leader类的指针,若不存在,返回空指针。
3.2结构设计
3.2.1系统流程图
3.2.2界面设计
登入高校管理系统界面如图3-2所示
图3-2界面菜单设计
程序开始运行,通过主函数进入系统主界面(如上图所示),操作员可键入数字信息选择系统的各个功能或退出系统。
每种功能的界面都有相应的提示(以输入领导为例):
在添加信息功能中系统提示“请输入领导的性别为男或女,如果输入错误,会输出“输入性别错误,请重新输入”在新增时系统会同时计算输入男女领导的人数;
在更改中系统提供了按姓名或编号修改,在修改前系统会输出该领导的全部信息,修改时系统会输出是否更改;
删除中系统提供了按编号或姓名删除,删除前系统会再次提醒使用者是否确定删除;
在查找中亦提供了按编号或姓名查找;
在输入完毕后按0返回主菜单。
,以便操作员更方便地使用该系统
注:
各子菜单项均有重新显示,并顺利返回到主菜单。
如果要保存信息的数据,必须退出到主菜单,系统会自动保存;
System(“cls”)清除以前的内容,界面重新显示。
System(“color23”)设置当前的窗口和输出字体的颜色
第四章系统实现
4.1类实现
classpeople//人员基类
{
protected:
intnumber;
//编号
charname[20];
//姓名
charsex[4];
//性别
intage;
//年龄
public:
voidshow()
cout<
<
"
编号"
setw(10)<
姓名"
性别"
年龄"
endl;
number<
name<
sex<
age<
}
voidset()
{
请输入编号:
cin>
>
number;
请输入姓名:
name;
请输入性别:
sex;
请输入年龄:
age;
}
char*getname(){returnname;
}//获取名字
intgetno(){returnnumber;
}//获取编号
intgetage(){returnage;
}//获取年龄
char*getsex(){returnsex;
}//获取性别
voidren(intn){cout<
n<
voidadd(intn,char*na,intag,char*se)
number=n;
age=ag;
strcpy(name,na);
strcpy(sex,se);
};
classleader:
publicpeople//领导类
private:
charbumen[20];
charzhicheng[20];
voidset1()
set();
cout<
请输入任职部门:
cin>
bumen;
请输入职称:
zhicheng;
voidsetbu(charbu[])
strcpy(bumen,bu);
voidsetzhi(charzhi[])
strcpy(zhicheng,zhi);
voidshow1()
show();
部门"
职称"
bumen<
zhicheng<
voidadd1(intn,char*na,intag,char*se,char*bu,char*zhi)
add(n,na,ag,se);
char*getbu(){returnbumen;
}//获取部门
char*getzhi(){returnzhicheng;
}//获取职称
类似的,在people类的基础上派生出student类,teacher类。
4.2函数实现
voidleaderbase:
:
data()//定义领导维护
{
intchoice=1;
intb=1;
//标记变量
charx;
intnan=0;
//男领导
intnv=0;
//女领导
//姓名
//编号
charzhi[20];
///职称
charbu[20];
//系部
leader*r;
while(choice!
=0)
{
领导维护1:
新增2:
更改3:
删除4:
查找5:
显示6:
全删7:
统计0:
退出=>
;
choice;
switch(choice)
{
case1:
//新增
system("
color17"
);
//颜色
cls"
//清屏
输入领导编号:
cin>
输入领导姓名:
输入领导年龄:
"
输入领导性别(maleorf):
cin>
if(strcmp("
male"
sex)!
=0&
&
strcmp("
f"
=0)
{
while(b)
{
cout<
输入性别有误,请重新输入:
cin>
sex)==0||strcmp("
sex)==0)
b=0;
}
}
{nan++;
}//统计男女领导的人数
else
{nv++;
输入领导所在系部:
bu;
输入领导的职称:
zhi;
add(number,name,age,sex,bu,zhi);
break;
case2:
//根据查询结果更改
colorf4"
//颜色
cout<
按编号更改1"
按姓名更改2"
返回0"
b;
while(b)
switch(b)
case1:
r=query(number);
if(r==NULL)
{cout<
该领导不存在"
break;
}
r->
show1();
是否确认更改任职部门?
(Y/N)"
x;
if(x=='
Y'
||x=='
y'
)
{
cout<
输入新的任职部门:
setbu(bu);
}
是否确认更改职称?
{
请输入新的职称"
setzhi(zhi);
add(number,name,age,sex,bu,zhi);
r->
r=query1(name);
{cout<
{cout<
add(number,name,age,sex,bu,zhi);
}
case3:
break;
}
break;
//删除
colorf1"
//颜色同样是调用doc
按编号删除1"
按姓名删除2"
while(b!
switch(b)
case1:
delnu(number);
{cout<
delname(name);
b=0;
}
break;
case4:
//查找
color07"
cout<
按编号查找1"
按姓名查找2"
{
switch(b)
输入领导姓名:
case3:
case5:
//显示信息
colorfa"
disp();
case6:
colorfd"
clear();
case7:
color48"
统计男领导人数1"
统计女领导人数2"
该高校男领导人数"
ren(nan);
b=0;
该高校女领导人数"
ren(nv);
case3:
类似的,定义teacherbase类与studentbase类的数据维护data函数,实现对人员信息的新增、更改、删除、查找、显示、全删、统计功能。
4.3主函数实现
intmain()
{A:
intchoice=1;
leaderbasel;
teacherbaset;
studentbases;
while(choice!
{cout<
********************************************************************************"
setw(20)<
******************************欢迎使用高校人员管理系统**************************"
setw(50)<
-------------\n"
请选择您所需的操作\n"
\n"
操作1,领导信息管理\n"
操作2,教师信息管理\n"
操作3,学生信息管理\n"
操作0,退出信息管理系统\n"
switch(choice)
{case1:
while
(1)
setw(20);
l.data();
gotoA;
case2:
while
(1)
t.data();
s.data();
}
return0;
第五章系统测试
5.1模块测试
以管理领导信息为例进行说明。
(1)选择对领导信息进行添加,见图5—1
图5—1
(2)添加界面如图5—2
图5—2
(3)可以按编号和姓名进行更改,见图5—3
图5—3
(4)按编号更改如图5—4
图5—4
(5)按姓名删除如图5—5
图5—5
(6)可以按姓名、编号进行查找,如图5—6