高校人员信息管理系统 课程设计报告书.docx
《高校人员信息管理系统 课程设计报告书.docx》由会员分享,可在线阅读,更多相关《高校人员信息管理系统 课程设计报告书.docx(78页珍藏版)》请在冰豆网上搜索。
高校人员信息管理系统课程设计报告书
北华航天工业学院
《基于C++的面向对象程序设计实例》
课程设计报告
报告题目:
高校人员信息管理系统
作者所在系部:
计算机科学与工程系
作者所在专业:
网络工程
作者所在班级:
B08522班
作者姓名:
马洪彪
指导教师姓名:
赵辉
完成时间:
2008年6月26日
北华航天工业学院教务处制
课程设计任务书
课题名称
高校人员信息管理系统
完成时间
第18周
指导教师
职称
讲师
学生姓名
班级
总体设计要求和技术要点
某高校,主要人员有:
领导、教师和学生,共有的信息包括:
编号、姓名、性别、年龄。
其中领导还应包含的信息有:
任职部门(学院、各系部)、职称;教师还应包含的信息有:
职称、任职时间、专业;学生还应包含的信息有:
所在班级、所在宿舍等.
要求:
对各类人员信息完成的基本功能有:
1)添加功能:
程序能够添加相应的记录;
2)查询功能:
能根据编号和姓名进行查询,并显示相应的记录信息;
3)编辑功能:
根据查询对相应的记录进行修改;
4)统计功能:
能根据多种参数进行人员的统计(如在职人数、党员人数、女工人数等);
5)删除功能:
根据查找结果,完成具体记录的删除。
6)保存功能:
将对高校人员信息进行的添加、删除、修改结果保存到文本文件中。
学生在完成本次课程设计的基本要求后,进一步完善程序,从如下几个方面加以考虑:
1)添加人员记录时,考虑各种数据的有效性。
2)组合查询功能的实现。
3)编辑数据时,注意操作的方便
4)删除数据时,考虑删除操作的方便
工作内容及时间进度安排
1.6月2日~13日:
布置任务,软件设计
2.6月15日~26日:
编写代码,上机调试
3.6月25、26日:
软件验收,撰写课程设计报告
4.各班在6月29日下午四点前将课程设计报告收齐并上交
课程设计成果
1.课程设计报告
2.源程序代码
摘要
在信息化教育的今天,高校要想实现教育的现代化,不但要又优秀的师资力量,同时也要有好的软件系统.高校人员信息管理系统是一套完善的信息化管理系统,用来实现高校人员的统一方便的信息操作,以实现高校人员流动及时更新、及时反馈校园信息、完善教育质量、提高教育效率、分析校园需求、制定招生和招聘的管理目的。
本文利用Microsoftvisualc++6.0提供的OOP(噢把巨额彩图噢日恩特等批rogrammin,OOP面向对象的程序设计)的编写程序,实现了校园内部人员的信息添加,查询,编辑,统计,删除,载入,保存,加载等功能。
本系统主要有四个类:
基类、领导类、教师类以及学生类。
已经过全面的系统测试,能够很好的运行,基本达到了预期的效果。
关键词:
系统类信息管理
第一章绪论
1.1课程设计的目的
课程设计是课程教学必不可缺的一个重要环节,可加深学生对该课程所学内容的进一步的了解与巩固,是将计算机课程与实际问题相连接的关键步骤。
通过课程设计,能够提高学生的分析问题,解决问题,要能很好的完成课程设计,要求我们必须掌握在学习中学到的知识,所以要我们对课本中学的知识要熟悉且掌握,从而运用所学知识解决实际问题的能力,因而必须给予足够的重视。
1.2课程设计的背景和意义
1.2.1课程设计的背景
1。
理论研究基础
(1)C++语言的基本知识和技能,如:
类与对象,指针,输入/输出流,文本文件的建立保存;
(2)面向对象程序设计的基本思路和方法。
2。
技术层面的支持
(1)研究这些结构的存储、显示,并有查找、添加、删除、修改、查询、统计、保存信息、载入等功能.
(2)类定义、类对象、继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容.
1.2.2课程设计的意义
(1)通过课程设计的综合训练,培养了学生分析解决实际问题和编程等实际动手能力。
帮助了同学系统的掌握C++课程的主要内容。
(2)综合实际应用的需求是课程设计既覆盖教学所要求的知识点,有接近工程的实际需求,训练自己实际分析问题和解决问题以及编程的能力。
做到理论结合实际.
1.3课程设计环境
(1)在MicrosoftVisualC++6.0开发平台上编写程序源代码,修改,增加功能,通过编译、连接,直到完全无误,最终执行程序,反复输入合理的以及不合理的数据进行测试并进一步完善。
(2)硬件:
学校机房
(3)软件:
MicrosoftVisualC++6。
0开发平台
第二章需求分析
2.1问题描述
某高校,主要人员有:
领导、教师和学生,共有的信息包括:
编号、姓名、性别、年龄。
其中领导还应包含的信息有:
任职部门(学院、各系部)、职称;教师还应包含的信息有:
职称、任职时间、专业;学生还应包含的信息有:
所在班级、所在宿舍等。
2.2功能要求
(1)对各类人员信息完成的基本功能有:
1)添加功能:
程序能够添加相应的记录;
2)查询功能:
能根据编号和姓名进行查询,并显示相应的记录信息;
3)编辑功能:
根据查询结果对相应的记录进行修改;
4)统计功能:
能根据多种参数进行人员的统计(如在职人数、党员人数、女工人数等);
5)删除功能:
根据查找结果,完成具体记录的删除。
6)保存功能:
将对高校人员信息进行的添加、删除、修改结果保存到文本文件中。
7)载入功能:
把文件中的数据导入内存中,通过显示功能把载入的数据显示在桌面上.
(2)学生在完成本次课程设计的基本要求后,进一步完善程序,从如下几个方面加以考虑:
1)添加人员记录时,考虑各种数据的有效性。
2)组合查询功能的实现.
3)编辑数据时,注意操作的方便。
4)删除数据时,考虑删除操作的方便.
5)载入数据时,要考虑到操作简单,快捷.
2.3问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
2)分析系统中的各个实体及它们之间的关系;
3)根据问题描述,设计系统的类层次;
4)完成类层次中各个类的描述;
5)完成类中各个成员函数的定义;
6)完成系统的应用模块;
7)功能调试;
8)完成系统总结报告.
第三章系统设计
3.1数据设计
3.1.1类设计
***************************************************************************
基类:
***************************************************************************
classPerson//定义基类Person
{
public:
Person(intn,stringnam,chars,inta):
num(n),name(nam),sex(s),age(a){}
intnum;
stringname;
protected:
charsex;
intage;
};
***************************************************************************
领导类:
***************************************************************************
classLeader:
publicPerson//由基类派生出Leader(领导)类
{
public:
Leader(intn=0,stringnam=””,chars='m’,inta=0,stringd=”",stringp=””):
Person(n,nam,s,a),dep(d),post(p){}
voidset_leader()
{
cout<<"pleaseinputthenumberofleader(1to20):
”;cin〉〉num;
for(intk=1;k<21;k++)
if(num==k)
k=21;
if(k==21)
{
cout<〈”thenumberyouputiniswrong,pleaseinputtheinformationagain"〈set_leader();
}//如果输入数字合法,则k=22;否则,k=21
cout<〈"pleaseinputthenameofleader:
";cin>>name;
cout〈<"pleaseinputthesexofleader(morf):
”;cin〉>sex;
if(sex!
=’m'&&sex!
=’f’)
{
cout<〈"thesexyouputiniswrong,pleaseinputtheinformationagain”〈〈endl;
set_leader();
}
cout〈<”pleaseinputtheageofleader:
";cin>〉age;
cout〈<”pleaseinputthedepartmentofleader:
";cin>>dep;
cout〈〈"pleaseinputthepostofleader:
";cin〉>post;
}
voidshow_leader()
{
cout<〈”number"<〈"\t"〈〈"name”<<"\t"<〈”sex”<〈”\t”<〈"age”〈<"\t”<<"department"〈〈”\t"<<”post”<cout<〈num<<"\t”〈〈name〈<"\t"〈〈sex<〈"\t"〈}
voidsave_leader(ofstream&outf)
{
outf<〈"number”<<”\t”〈〈”name"<〈”\t”〈<"sex"<<"\t"<<”age"〈〈”\t"〈<"department"<<”\t”<〈”post"〈〈endl;
outf〈}
voidload_leader(ifstream&inf)
{
inf>〉num〉〉name〉>sex〉〉age〉>dep>>post;
}
friendvoidLTongJi();
private:
stringdep;
stringpost;
}led[20];
***************************************************************************
教师类:
***************************************************************************
classTeacher:
publicPerson//由基类派生出Teacher(老师)类
{
public:
Teacher(intn=0,stringnam=”",chars=’m’,inta=0,stringp=”",stringd="”,stringsp=”"):
Person(n,nam,s,a),post(p),day(d),spec(sp){}
voidset_teacher()
{
cout<〈”pleaseinputthenumberofteacher(1to20):
”;cin〉>num;
for(intk=1;k〈21;k++)
if(num==k)
k=21;
if(k==21)
{
cout〈〈"thenumberyouputiniswrong,pleaseinputtheinformationagain"〈set_teacher();
}//如果输入数字合法,则k=22;否则,k=21
cout〈〈"pleaseinputthenameofteacher:
";cin〉〉name;
cout<〈”pleaseinputthesexofteacher(morf):
";cin〉>sex;
if(sex!
=’m'&&sex!
='f')
{
cout<〈"thesexyouputiniswrong,pleaseinputtheinformationagain”<set_teacher();
}
cout〈〈”pleaseinputtheageofteacher:
”;cin>>age;
cout<<"pleaseinputthepostofteacher:
";cin〉>post;
cout〈〈"pleaseinputthedayofteacher:
”;cin>>day;
cout<<”pleaseinputthespecialtyofteacher:
";cin〉>spec;
}
voidshow_teacher()
{
cout〈<”number"〈〈”\t”〈〈”name"〈<"\t”<<"sex"<<"\t”〈<”age”<〈"\t”<〈"post"〈〈"\t"〈〈"time"<〈”\t”〈<"specialty”〈〈endl;
cout<〈num<<”\t"〈}
voidsave_teacher(ofstream&outf)
{
outf〈<"number"〈〈”\t”〈〈”name”<〈"\t"〈〈"sex"〈<"\t”<<"age”<〈”\t"<〈"post”<<"\t"<〈”time”〈〈"\t”〈<"specialty"〈〈endl;
outf<}
voidload_teacher(ifstream&inf)
{
inf>>num>>name>>sex>〉age>〉post>>day〉>spec;
}
friendvoidTTongJi();
private:
stringpost;
stringday;
stringspec;
}tea[20];
***************************************************************************
学生类:
***************************************************************************
classStudent:
publicPerson//定义由Person类派生出的Student类
{
public:
Student(intn=0,stringnam=”",chars=’m',inta=0,stringc="",stringd=”"):
Person(n,nam,s,a),cla(c),door(d){}
voidset_student()
{
cout〈〈”pleaseinputthenumberofstudent(1to20):
";cin〉〉num;
for(intk=1;k〈21;k++)
if(num==k)
k=21;
if(k==21)
{
cout<〈"thenumberyouputiniswrong,pleaseinputtheinformationagain"<〈endl;
set_student();
}//如果输入数字合法,则k=22;否则,k=21
cout〈〈”pleaseinputthenameofstudent:
”;cin>〉name;
cout〈〈”pleaseinputthesexofstudent(form):
";cin>〉sex;
if(sex!
='m'&&sex!
='f’)
{
cout<<”thesexyouputiniswrong,pleaseinputtheinformationagain"〈set_student();
}
cout〈<"pleaseinputtheageofstudent:
";cin〉>age;
cout〈<”pleaseinputtheclassofstudent:
”;cin>>cla;
cout〈<”pleaseinputthedormitoryofstudent:
”;cin>>door;
}
voidshow_student()
{
cout<<"number”<〈"\t"<<”name"<<"\t"〈<”sex”〈<”\t"<〈"age"〈〈”\t”<<”class"〈<”\t"〈<"dormitory"〈〈endl;
cout〈〈num〈<”\t"〈〈name〈〈"\t"〈〈sex〈〈”\t”<}
voidsave_student(ofstream&outf)
{
outf〈<"number"〈<”\t"〈〈"name”<<”\t"<〈"sex"<<"\t”〈〈"age"〈<”\t”<<"class”〈〈"\t”〈〈”dormitory"<outf<}
voidload_student(ifstream&inf)
{
inf〉〉num〉>name>>sex〉〉age>〉cla〉〉door;
}
friendvoidSTongJi();
private:
stringcla;
stringdoor;
}stu[20];
3.1.2类之间的关系
基类为Person类。
Leader类、Teacher类、Student类公用继承Person类
3.1.3函数设计
voidTianJia()******************************************添加功能函数
可以对人员的信息进行添加,能够防止重复编号的添加
voidChaXun()*****************************************查询功能函数
可按照编号或姓名进行人员信息的查询
voidBianJi()*******************************************编辑功能函数
可对人员的信息进行修改
voidTongJi()******************************************统计功能函数
可统计人员的相关信息
voidShanChu()****************************************删除功能函数
查询到需要删除的人员后,执行删除命令,可将其删除
voidBaoCun()*****************************************保存功能函数
将人员信息保存在文本文档中
voidJiaZai()*******************************************加载功能函数
将人员信息由文本文档加载到内存中
intmain()***************************************************主函数
调用各个功能函数以及菜单函数
3.2结构设计
3.2.1系统流程图
图3-1系统流程图
3.2.2界面设计
(1)进入程序界面
图3-2进入程序的欢迎界面
(2)选择操作方式界面
图3-3选择操作方式时的界面
(3)选择操作对象界面
图3-4选择操作对象时的界面
(4)退出程序界面
图3—5退出程序时的界面
第四章系统实现
4.1类实现
定义基类Person类,然后由基类派生出Leader(领导)类、Teacher(教师)类、Student(学生)类。
在各类中定义相关成员函数和数据成员
图4—1类结构图
4.2函数实现
4.2.1高校人员信息的添加功能的实现
该功能用于对高校人员信息进行添加
(1)该函数分别调用
(2)(3)(4)中的函数,分别实现对领导、教师、学生信息的添加
voidTianJia()***************************************************添加功能函数
{
inti=1;
while(i)
{
intchoice;
Menu();
cin>>choice;
switch(choice)
{
case1:
LTianJia();break;//添加领导信息
case2:
TTianJia();break;//添加教师信息
case3:
STianJia();break;//添加学生信息
case4:
i=0;break;
default:
cout〈〈”error,pleaseinputitagain!
"〈}
}
}
(2)对领导信息的添加
voidLTianJia()**********************************对领导类对象的添加功能函数
{
led[Lcount]。
set_leader();//调用领导类成员函数添加信息
cout<<”succeedinadding”<led[Lcount].show_leader();//调用领导类成员函数显示添加的信息
Lcount++;
}
(3)对教师信息的添加
voidTTianJia()*********************************