c++课程设计—教师管理系统报告 (1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电气与信息学院
计算机科学与技术系
《面向对象编程技术》课程设计报告
课题名称
专业计算机科学与技术
班级微机1326
学号A19130428
姓名杨芮
指导教师杜勇
2014年6月2日
第一章课程设计内容........................................................................................................... 2
1.1 课程设计目的................................................................................................................ 2
1.2 课程设计功能说明.......................................................................................................... 2
1.2.0 功能总概述........................................................................................................... 2
1.2.1 各项功能说明..................................................................................................... 3
1.3 各项功能的需求标准................................................................................................... 5第二章课程设计环境与原理....................................................................................................... 6
2.1 设计环境与模块的划分.................................................................................................. 6
2.1.1软件设计环境........................................................................................................ 6
2.1.2软件模块的划分.................................................................................................... 6
2.2.3主要流程图............................................................................................................ 7第三章软件的设计过程....................................................................................... 10
3.1 各软件模块之间的调用方式.................................................................................... 10
3.2 软件中实现各项功能的函数与程序代码.................................................................. 10第四章设计结果与分析......................................................................................................... 16
4.1 软件使用结果.............................................................................................................. 16
总结..................................................................................................................................... 18
第一章课程设计内容
1.1 课程设计目的
经过了对课本《C++面对对象程序设计》这本书中的学生管理系统综合应用实例的学习,为了让自己能够对C++语言设计有更加深入、深刻的理解和掌握,希望通过实践设计出类似于学生管理系统的教师管理系统来提升自己对C++语言的认识。
首先定义一个教师TeacherList类;其次可以对教师信息进行增加,用链表来做,所以可以分别从表头和表尾来增加;然后可以用链表来查找和删除教师的相关信息;最后可以显示教师的所有信息并要求用二进制文件进行读写操作。
由此来系统化的管理教师的信息,并达到简易操作的目的。
在课程设计同时,我们应学会以下几点:
1、通过C++语言的课程设计进一步的了解和掌握C++语言的有关知识和相关语法的使用方法。
2、熟练掌握使用C++语言对一些简单常见问题进行解决,编译程序对问题进行解决。
3、通过课程设计,进一步掌握C++语言中有关重要的数据结构,诸如类、链表、结构体、重载、传输流、构造析构函数、虚函数、友元类、文件处理等在程序开发中的应用。
4、通过课程设计,能根据实际问题的具体情况,结合面向对象的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。
提高程序开发能力,能运用合理的控制流编写清晰高效的程序。
5、通过课程设计,培养C++语言知识运用和自学能力,验证自己设计的算法和程序的正确性。
学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。
独立或合作设计和开发一个中小型系统,掌握系统研发全过程。
6、通过此次课程设计发现自己在C++语言编程上的不足并进一步掌握C++语言,为以后课程打下基础。
1.2课程设计功能说明
1.2.0 功能总概述
运行系统时使用switch关键字控制主菜单的选择如下图所示
当某一个被选择上时,就会按照文字上所阐述的内容进行相关的处理;当查找教师时,并且填入的教师存在时,就会显示所对应的子菜单用于增加授课的班级;当查找班级时,并且填入的班级存在时,就会显示所对应的子菜单用于增加此班级授课的科目。
程序在各各菜单选项中支持增加、查找、显示所有、删除、退出等功能选择。
通过该程序能够很好的管理教师的信息,具有很好的可维护性,保存后的信息可以在下次运行程序时被正确无误的载入,方便管理人员的操作和建立新的教师档案。
以解决现实生活中繁琐、冗余、耗时间、费事、容易丢失的数据管理问题,使教师管理信息更加简单,易懂,安全性更加强。
注:由于本程序是参照课本上的学生管理系统应用实例程序而修改过来的,很多程序的命名规则没有做过多的改动,所以经修改过后的程序有一定的阅读难度。
1.2.1 各项功能说明
主函数说明:
(1)教师信息的增加:
这部分的功能主要是在数据文件中加入教师的信息。
首先建立一个指向student.dat文件的指针,若成功建立,则按程序提示输入教师的相关信息,包括工号、姓名、性别、电话以及职位等,并将这些信息分别赋给指针中的相应变量,其中包括当前所指向的指针和指向;然后把这个结点加入到指针中,可以从首地址来增加,计数器加一。
这样一个教师信息就形成了。
(2)查找教师信息:
进入该功能界面后,可以通过教师的工号查找出该教师的所有信息。
首先开辟一个
指针,并把文件student.dat所指向的头指针赋给它,根据输入的教师工号,逐个查找文件中与此工号匹配的教师,找到之后,将此教师的所有信息输出。
(3)删除教师信息:
进入该功能界面后,可以通过教师的工号对某个教师信息进行删除。
首先开辟一个指针,并把文件student.dat所指向的头指针赋给它,根据输入的教师编号,逐个查找文件中与此工号匹配的教师指针,找到之后,将此教师的所有信息删除。
可以通过显示所有的教师信息来看此教师信息是否删除。
(4)保存、载入教师信息:
选择这个功能后就会保存教师的所有信息,以供以后使用程序时载入之前保存过的信息
(5)显示教师信息:
选择此功能后可以将当前的所有教师信息显示出来。
(6)退出:
关闭程序。
各子菜单功能介绍:
(1)增加班级:
这部分的功能主要是在数据文件中加入教师所对应的班级的信息。
首先建立一个指向student.dat文件的指针,若成功建立,则按程序提示输入班级的相关信息,包括工号、姓名等,并将这些信息分别赋给指针中的相应变量,其中包括当前所指向的指针和指向;然后把这个结点加入到指针中,可以从首地址来增加,计数器加一。
这样一个教师对应的班级信息就形成了。
(2)查找、删除、显示、退出班级信息:
此部分跟主函数中的查找教师信息、删除教师信息、显示教师信息、退出相类似,不同之处就是班级管理信息是教师管理信息的一个子菜单,是附属关系。
班级信息中的退出只是返回到上一级菜单,而主函数中的退出是退出程序。
(3)科目管理子菜单:
此部分是班级菜单中的子菜单,其各部分的功能与班级管理信息菜单功能相似,其中包括:增加科目、显示所有科目、删除科目、退出等选项。
其关系如下图:
1.3 各项功能的需求标准
一、有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。
二、有严密正确的数据验证功能和数据处理功能,可根据需要增加教师信息,不会有空间的浪费,并能按编号进行查找和删除教师信息,删除后将空间释放。
三、系统要有一定的可靠性。
第二章课程设计环境与原理
2.1设计环境与模块的划分
2.1.1软件设计环境
Microsoft Visual C++ 6.0
2.1.2软件模块的划分
该软件主要组成模块和各个模块之间的调用关系如下图:
2.2.3主要流程图
一、从表尾增加教师信息
增加教师信息
删除教师信息
第三章软件的设计过程
3.1 各软件模块之间的调用方式
程序中各个模块之间的调用方式主要是通过文件的包含和函数的调用实现的,用文件的形式把各个函数分开,再用头文件把它们包含进来,使用主函数进行调用。
3.2软件中实现各项功能的函数与程序代码
主函数:
#include"School.h"
void main()
{
cout<<" *********************************"<<endl;
cout<<" * 欢迎进入教师管理系统*"<<endl;
cout<<" ********************************"<<endl;
while(sel)
{
cout<<"\n请选择你的操作:"<<endl;
cout<<" 1.增加教师"<<endl;
cout<<" 2.查找教师"<<endl;
cout<<" 3.显示所有教师信息"<<endl;
cout<<" 4.删除教师"<<endl;
cout<<" 5.保存"<<endl;
cout<<" 6.载入"<<endl;
cout<<" 0.退出"<<endl;
cout<<"请选择要执行的操作(0-6):";
cin>>sel;
cout<<endl;
//判断输入,0退出
if(sel>=0&&sel<=6)
{
switch(sel)
{
case 1:
cout<<"请输入教师工号:";
cin>>Pno;
cout<<endl;
cout<<"请输入教师姓名:";
cin>>Pname;
cout<<endl;
cout<<"请输入性别:";
cin>>Psex;
cout<<endl;
cout<<"请输入年龄:";
cin>>Pold;
cout<<endl;
cout<<"请输入职称:";
cin>>Pwork;
cout<<endl;
cout<<"请输入工资:";
cin>>Pmoney;
cout<<endl;
cout<<"请输入工龄:";
cin>>Poldd;
cout<<endl;
cout<<"请输入联系方式:";
cin>>Pcall;
cout<<endl;
cout<<"请输入住址:";
cin>>Paddres;
cout<<endl;
shiyou.AddDept(Pno,Pname,Psex,Pold,Pwork,Pmoney,Poldd,Pcall,Paddres);
break;
case 2:
Department *find;
cout<<"请输入教师工号:";
cin>>Pno;
find=shiyou.FindDept(Pno);
if(find!=NULL)
{
cout<<"教师工号:"<<find->Pno<<endl;
cout<<"教师姓名:"<<find->Pname<<endl<<endl;
cout<<"1.进入此系"<<endl;
cout<<"其他数返回上级菜单"<<endl;
int depsel;
cin>>depsel;
if(depsel==1)
{
//系里菜单
shiyou.DepMenu(find);
}
else
break;
}
break;
case 3:
cout<<"所有教师信息为:"<<endl;
shiyou.DispAll();
break;
case 4:
cout<<"\t 请输入教师工号:";
cin>>Pno;
shiyou.DeleteDept(Pno);
break;
case 5:
shiyou.save();
break;
case 6:
shiyou.load();
break;
case 0:
break;
}
}
else
{
cout<<"输入错误!请重新输入!"; } }}
一、一个包含教师基本信息的类:
#if!defined (AFX_SCHOOL_H_7D278A4A_44F9_45A2_B3D6_35306E25BEFE_INCLUDED_) #define AFX_SCHOOL_H_7D278A4A_44F9_45A2_B6D6_35306E25BEFE_INCLUDED_
#if _MSC_VER>1000
#pragma once
#endif //_MSC_VER>1000
#include "Department.h"
class School
{
public:
void DepMenu(Department *depType);
void DispAll();
Department *root;
int DeptCount;
School();
virtual ~School();
bool AddDept(char *pno,char *pname,char *psex,char *pold,char *pwork,char *pmoney,char *poldd,char *pcall,char *paddres);
bool DeleteDept(char *no);
Department *FindDept(char *no);
void save(); //将班级记录存入指定文件
void load(); //从指定文件装载班级记录
};
#endif
二、定义一个班级类
#if!defined (AFX_DEPANTMENT_H_A6895DC1_C3F3_4737_88EC_AE2DA280272E_INCLUDED_) #define AFX_DEPANTMENT_H_A6895DC1_C3F3_4737_88EC_AE2DA280272E_INCLUDED_
#if _MSC_VER>1000
#pragma once
#endif //_MSC_VER>1000
#include "Class.h"
class Department
{
public:
void ClaMenu(Class *ClaType);
void DispAll();
char Pname[10];
char Pno[5];
char Psex[5];
char Pold[4];
char Pwork[6];
char Pmoney[10];
char Poldd[10];
char Paddres[50];
char Pcall[20];
int ClaCount;
Department *next;
Class *Cla;
Department();
Department(char *Pno1,char *Pname1,char *Psex1,char *Pold1,char *Pwork1,char *Pmoney1,char *Poldd1,char *Pcall1,char *Paddres1)
{
next=NULL;
Cla=NULL;
ClaCount=0;
strcpy(Pno,Pno1);
strcpy(Pname,Pname1);
strcpy(Psex,Psex1);
strcpy(Pold,Pold1);
strcpy(Pwork,Pwork1);
strcpy(Pmoney,Pmoney1);
strcpy(Poldd,Poldd1);
strcpy(Pcall,Pcall1);
strcpy(Paddres,Paddres1);
}
virtual ~Department();
bool AddClass(char *cno,char *cname,char *pno);
bool DeleteClass(char *no);
Class *FindsClass(char *no);
friend ostream &operator<<(ostream &oc,Department &obj);
friend istream &operator>>(istream &ic,Department &obj);
};
#endif
第四章设计结果与分析
4.1 软件使用结果
在此,我们将把软件使用过程写出,并对此程序的一些细节的具体的操作方法加以说明,说明如下:
1..进入程序菜单,界面如下:
2.增加教师信息
3.根据教师编号查找教师信息
4.班级管理子菜单:
5.科目管理子菜单:
总结
经过了一周的课程设计,我感到编程并不是那么困难和枯燥,我对C++语言编程又重新有了浓厚的兴趣。
我经过这次编程,对程序的结构有了更加深科的认识,回忆起并熟悉掌握了C++语言的一些基础而重要的知识,对程序的调试能力也有了进一步的提高。
本次我圆满的完成了程序的编写与调试,所编写的程序能够顺利运行,并能够解决一些实际问题,我感到非常高兴和欣慰,对自己也充满了信心。
关于这次课程设计中,我们设计了一个对教师信息进行管理的系统,它基本满足了界面友好,易于操作的要求,因此更利于用户操作方便,运行简易,从而达到对教师信息更加有效的系统管理。
在此次设计中我们实现了根据用户的需求对教师信息的增加、查找和删除功能,采用C++所具有的优点,合理利用了空间。
但软件仍存在一些不足,比如可视化效果有点逊色,很多重要的功能都没有涉及到,存储数据的文件不能选择性的保存到其他的地方等。
通过这段时间不断对C++这门语言的学习和探索,我们发现理论和实践要充分地结合,是需要扎实的基本功的,这就表明学好基础知识是理论付诸实践的前提。
在设计中我们锻炼了自己同时也学到了很多,希望在以后我们能充分利用上机的时间充实自己,并希望这样的机会能被更好更多地提供。