C++学生选课管理系统Word文件下载.docx
《C++学生选课管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《C++学生选课管理系统Word文件下载.docx(36页珍藏版)》请在冰豆网上搜索。
数理学院
2013年6月
作效率。
并且对于系统本身而言,具有更高的使用性、安全性。
能够满足学生选课,以及学生对选课信息的管理。
同时,通过该课程设计,我们可以达到把C++程序设计理论知识更加的巩固加深,加强动手操作能力与实践能力,学以致用,与现实生活中的应用充分的结合起来,也实现了知识的活学活用。
1.4功能需求分析
一个完善的学生选课管理信息系统能够极大的提高学生选课信息的管理效率,具有检索迅速,查找方便,可靠性高,存储量大,更新快,寿命长,成本低等优点。
本系统主要可以实现以下任务目标:
1、系统可以准确的记录和查询学生、老师以及所开设的课程的基本信息
2、学生登录系统后可以根据本专业制定的教学计划进行选课操作,可以查询个人的基本信息
性能需求:
本学生信息管理系统要能够抵御用户可能的各种操作,包括修改、更新、删除等操作,以保证软件的可行性、稳定性、健壮性,同时要对数据进行检验,保证数据有效性,可操作性,安全性。
同时普通用户登录只有浏览的权限。
系统的非功能性需求:
实用性:
系统以用户需求为目标,以方便用户为原则。
根据用户实际的需求情况,度身订造一套先进的局域网数据传输,从用户角度出发尽可能的方便用户使用,满足基本的用户需要,成为学校等通用的网络软件。
高可靠性:
一个实用的系统同时必须是可靠的,本设计通过合理而先进的网络设计以及软、硬件的优化选型,可保证系统数据传输的正确性。
高安全性:
在设计中,将充分利用网络软、硬件提供的各种安全措施,既可以保证用户共享资源,同时也可保证关键数据的安全性。
可扩展性及灵活性:
系统的设计以方便未来业务的扩展和系统扩充为目标,系统要求能够方便的升级,充分保护系统的投资。
智能型:
系统在设计时,充分考虑系统运行的智能性,在使用系统一段时间后,系统可以适应于任何局域网。
1.5系统功能分析
根据设计要求,我们认为该系统应该包括:
(1)课程信息输入功能;
(2)课程信息浏览功能;
(3)按学分查询功能;
(4)按课程性质查询功能;
(5)数据保存功能;
(6)正确退出系统功能。
其中对于课程信息输入功能可以有两个实现途径:
①直接在系统中根据提示输入;
②根据系统的功能在相应文件下建立text文件直接输入课程信息。
对于其余四个功能则主要是供学生选课使用。
本程序将课程性质统一规定为考试和考查两种;
数据保存功能是为了保证在系统中直接输入的课程信息顺利保存到text文件。
2、程序具体实现原理
2.1总体方案
首先根据设计要求,我们定义了三个类:
Class类,Control类,Menu类。
Class类用来存放一系列课程的信息,以及一些获取信息的get函数;
Control类是用来定义选课类的操作属性,从Control类里面来判断并实现用户所需要执行的动作;
Menu类定义了菜单的操作,其中包括显示菜单,显示提示信息,获取用户从键盘输入的信息并执行。
针对Class类的定义,首先我们定义了一系列的设置相关课程信息的公有函数,用来将输入的内容传给私有函数,其次定义了常函数,目的是为了防止数据被其它函数调用时发生改变,同时将学分定义为浮点型,范围在0~10之间。
针对Menu类的定义,我们先定义了一个获取键盘输入的函数getInput(),用于获取数据,接着定义了界面友好的显示目录函数,使得用户进行操作更加方便,最后定义了一系列的显示提示信息函数。
为了使得在今后的修改中更加清楚方便,我们将这些函数独立分开。
针对Control类的定义,因为它的目的是用于判断并实现用户所要执行的操作,是学生选课系统的核心。
一切从start()函数开始,通过switch语句判断按下了哪个数字键,然后执行对应的操作,在文件录入这一方面,我定义了一个initIalization()函数,首先建立一个输入流,打开文件,将用户录入的课程信息放入到变量中,再由变量放入文件中。
其中的公有函数即课程设计所要求的功能部分:
添加选课,浏览选课,查询选课,保存文件。
私有函数我们用了链表,classList,用来一条一条记录课程信息,方便添加浏览以及查询。
两种查询方法都运用了迭代器的功能,迭代器的作用相当于指针,从链表的头部一个个指向链表的末尾,用于浏览以及查询部分。
最后把迭代器指向的对象每个字段写入文件中,文件名定义为classSave,保存到程序的当前目录下。
最后主函数的实现,代码十分简单,先定义一个Control类的对象,ControlClass,再通过controlClass.start()启动整个程序。
2.1.1开发平台
操作系统:
Win7
开发软件:
MirosoftVisualC++6.0
2.1.2基本原理
2.1.3数据结构
表1数据结构表
数据名称
数据类型
解释
classNum
string
课程编号
className
课程名称
classProperties
课程性质
totalClassNumber
Int
总课时
currentClassNumber
授课学时
expClassNumber
上级或实验学时
credit
Double
学分
rightTerm
开课学期
2.1.4类的UML图
表2Class类的UML图
Class
-ClassNum:
string
-ClassName:
-ClassProperties:
-TotalClassNumber:
int
-currentClassNumber:
-ExpClassNumber:
-credit:
double
-rightTerm:
+setClassNum(classNumTemp:
string)
+setClassName(classNameTemp:
+setClassProperties(classPropertiesTemp:
+setTotalClassNumber(totalClassNumberTemp:
int)
+setCurrentClassNumber(currentClassNumber:
+setExpClassNumber(expClassNumberTemp:
+setCredit(credit:
double)
+setRightTerm(rightTermTemp:
<
const>
>
+getClassNum():
+getClassName():
+getClassProperties():
+getTotalClassNumber():
int
+getCurrentClassNumber():
+getExpClassNumber():
+getCredit():
double
+getRightTerm():
表3Menue类的UML图
Menue
static>
+getInput():
char
+showMenu():
void
+clearScreen():
+pauseScreen():
+showAddClass():
+showBrowseClass():
+showSearchByCredit():
+showSearchByClassProperties():
+showAddClassNum():
+showAddClassName():
+showAddClassProperties():
+showAddCurrentClassNumber():
+showAddExpClassNumber():
+showLoadingSaving():
+showSuccessedSaving():
+showEachClassInfo(ClassclassTemp):
+quit():
表4Control类的UML图
Control
-classList:
list<
Class>
+Control()
+Start():
+initIalization():
+addClass():
+showAllClass():
+searchByCredit():
+searchByClassProperties():
+saveClass():
bool
2.1.5模块说明
(1)课程信息录入。
课程信息录入应包括:
课程编号、课程名称、课程性质、总学时、授课学时、实验学时、学分、开课信息八个成员,为录入以上信息,首先使用setClassNum、setClassName、setClassProperties、setTotalClassNumber、setCurrentClassNumber、setExpClassNumber、setCredit、setRightTerm输出提示信息,其次使用addClass函数添加课程信息。
(2)课程信息浏览。
该功能主要是读取所有的课程信息,在程序中首先通过getClassNum、getClassName、getClassProperties、getTotalClassNumber、getCurrentClassNumber、getExpClassNumber、getCredit、getRightTerm八个函数读取课程信息的相关信息,设置为静态成员函数,防止已录入的数据被篡改;
其次使用showclass、showeachclassinfo函数显示全部课程信息。
(3)按学分查询。
首先使用getCredit函数得到课程的学分信息,其次使用searchByCredit函数输出“按学分查询”的提示信息;
接着使用showAddCredit函数输出“请输入学分”的提示信息;
最后使用showSearchByCredit函数将查询结果输出。
(4)按课程性质查询。
按照课程性质的查询实现了根据课程的性质对课程的查询,程序主要通过、showAddClassProperties、setClassProperties、getClassProperties、searchByClassProperties、showSearchByClassProperties、来实现对课程的查询,同样全部设置为静态成员函数,已经录入的数据部能被篡改,根据提示输入就能得到想要查询的内容。
(5)存储信息。
选择存储信息