《c++学生选课管理系统.doc》由会员分享,可在线阅读,更多相关《c++学生选课管理系统.doc(30页珍藏版)》请在金锄头文库上搜索。
1、河南城建学院河南城建学院 C+程序设计程序设计课程设计课程设计 设计题目:设计题目: 学生选修课程系统设计学生选修课程系统设计 指导教师:指导教师: 郭力争郭力争 刘荣辉刘荣辉 薛冰薛冰 专专 业:业: 数学与应用数学数学与应用数学 学生班级:学生班级: 学生学号:学生学号: 学生姓名:学生姓名: 刘亚欣刘亚欣 同同 组组 人:人: 李菲李菲 马小川马小川 数理学院数理学院 2013 年年 6 月月 2 目目 录录 1、课题目标、课题目标1 1.1 设计要求.1 1.2 选题背景 1 1.3 课题意义 1 1.4 功能需求分析.2 1.5 系统功能分析.2 2、程序具体实现原理、程序具体实现原
2、理.3 2.1 总体方案 3 2.1.1 开发平台3 2.1.2 基本原理4 2.1.3 数据结构4 2.1.4 类的 UML 图.5 2.1.5 模块说明6 2.2 程序各个功能说明 7 2.2.1 程序结构.7 2.2.2 课程设计要求的实现.9 3、调试报告、调试报告.14 3.1 遇到的问题及解决办法.14 3.2 程序调试及运行结果.15 4 4、总结、总结.19 5、参考文献、参考文献.19 附录附录.20 河南城建学院C程序设计课程设计报告 1 1、课题目标、课题目标 1.1 设计要求设计要求 假定有 n 门课程,每门课程有课程编号,课程名称,课程性质,总学时, 授课学时,实验或
3、上机学时,学分,开课学期等信息,学生可按要求(如总学 分不得少于 10)自由选课。试设计一个选修课程系统,使之能提供以下功能: 1.系统以菜单方式工作; 2.课程信息录入功能(课程信息用文件保存) ; 3.课程信息浏览功能; 4.查询功能(至少一种查询方式:按学分查询、按课程性质查询) ; 5.学生选修课程。 1.21.2 选题背景选题背景 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是 计算机被广泛应用于信息管理系统的环境。计算机的最到好处在于利用它能够 进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的 提高了其安全性。 尤其对于复杂的信息管理,计算机能
4、够充分发挥它的优越性。计算机进行 信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本 系统就是为了管理好学生选课信息而设计的。 随着高校的多样全面发展,学生的人数和课程的种类急速增加,传统的选 课管理模式已经无法满足当前的实际需求,学生选课作为一种信息资源的集散 地,包含很多的信息数据的管理。由于数据繁多,容易丢失,且不易查找。并 且数据处理手工操作工作量大,出错率高,出错后不易更改,造成各种不便, 总的来说,缺乏系统,规范的信息管理手段。尽管有的学校有计算机,但是尚 未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是学生选课管 理信息系统的开发基本环境背景。 1.3
5、1.3 课题意义课题意义 基于以上问题,我们认为有必要建立一个学生选课管理信息系统,使学生 选课信息管理工作规范化、系统化、程序化,以避免学生选课管理的随意性, 提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况。 系统实现后,极大的方便对学生进行选课和选课后班级的安排管理工作, 学生选课信息的管理。避免在安排课程信息的滞后,减少信息交流的繁琐过程 及其带来的额外开销。促进高校教育的计算机信息化进程,提高高校的工作效 2 率。并且对于系统本身而言,具有更高的使用性、安全性。能够满足学生选课, 以及学生对选课信息的管理。 同时,通过该课程设计,我们可以达到把 C+程序设计理论知
6、识更加的巩固 加深,加强动手操作能力与实践能力,学以致用,与现实生活中的应用充分的 结合起来,也实现了知识的活学活用。 1.41.4 功能需求分析功能需求分析 一个完善的学生选课管理信息系统能够极大的提高学生选课信息的管理效 率,具有检索迅速,查找方便,可靠性高,存储量大,更新快,寿命长,成本 低等优点。 本系统主要可以实现以下任务目标: 1、系统可以准确的记录和查询学生、老师以及所开设的课程的基本信息 2、学生登录系统后可以根据本专业制定的教学计划进行选课操作,可以查 询个人的基本信息 性能需求: 本学生信息管理系统要能够抵御用户可能的各种操作,包括修改、更新、 删除等操作,以保证软件的可行
7、性、稳定性、健壮性,同时要对数据进行检验, 保证数据有效性,可操作性,安全性。同时普通用户登录只有浏览的权限。系 统的非功能性需求: 实用性:系统以用户需求为目标,以方便用户为原则。根据用户实际的 需求情况,度身订造一套先进的局域网数据传输,从用户角度出发尽可能的方 便用户使用,满足基本的用户需要,成为学校等通用的网络软件。 高可靠性:一个实用的系统同时必须是可靠的,本设计通过合理而先进的 网络设计以及软、硬件的优化选型,可保证系统数据传输的正确性。 高安全性:在设计中,将充分利用网络软、硬件提供的各种安全措施,既 可以保证用户共享资源,同时也可保证关键数据的安全性。 可扩展性及灵活性:系统的
8、设计以方便未来业务的扩展和系统扩充为目标, 系统要求能够方便的升级,充分保护系统的投资。 智能型:系统在设计时,充分考虑系统运行的智能性,在使用系统一段时 间后,系统可以适应于任何局域网。 1.51.5 系统功能分析系统功能分析 根据设计要求,我们认为该系统应该包括:(1)课程信息输入功能;(2) 课程信息浏览功能;(3)按学分查询功能;(4)按课程性质查询功能;(5) 数据保存功能;(6)正确退出系统功能。其中对于课程信息输入功能可以有两 个实现途径:直接在系统中根据提示输入;根据系统的功能在相应文件下 建立 text 文件直接输入课程信息。对于其余四个功能则主要是供学生选课使用。 本程序将
9、课程性质统一规定为考试和考查两种;数据保存功能是为了保证在系 统中直接输入的课程信息顺利保存到 text 文件。 河南城建学院C程序设计课程设计报告 3 2、程序具体实现原理、程序具体实现原理 2.12.1 总体方案总体方案 首先根据设计要求,我们定义了三个类: Class 类,Control 类,Menu 类。 Class 类用来存放一系列课程的信息,以及一些获取信息的 get 函数;Control 类 是用来定义选课类的操作属性,从 Control 类里面来判断并实现用户所需要执行 的动作;Menu 类定义了菜单的操作,其中包括显示菜单,显示提示信息,获取 用户从键盘输入的信息并执行。 针
10、对 Class 类的定义,首先我们定义了一系列的设置相关课程信息的公有函 数,用来将输入的内容传给私有函数,其次定义了常函数,目的是为了防止数 据被其它函数调用时发生改变,同时将学分定义为浮点型,范围在 010 之间。 针对 Menu 类的定义,我们先定义了一个获取键盘输入的函数 getInput(), 用于获取数据,接着定义了界面友好的显示目录函数,使得用户进行操作更加 方便,最后定义了一系列的显示提示信息函数。为了使得在今后的修改中更加 清楚方便,我们将这些函数独立分开。 针对 Control 类的定义,因为它的目的是用于判断并实现用户所要执行的操 作,是学生选课系统的核心。一切从 sta
11、rt()函数开始,通过 switch 语句判断按 下了哪个数字键,然后执行对应的操作,在文件录入这一方面,我定义了一个 initIalization()函数,首先建立一个输入流,打开文件,将用户录入的课程信息 放入到变量中,再由变量放入文件中。其中的公有函数即课程设计所要求的功 能部分:添加选课,浏览选课,查询选课,保存文件。私有函数我们用了链表, classList,用来一条一条记录课程信息,方便添加浏览以及查询。两种查询方法 都运用了迭代器的功能,迭代器的作用相当于指针,从链表的头部一个个指向 链表的末尾,用于浏览以及查询部分。最后把迭代器指向的对象每个字段写入 文件中,文件名定义为 cl
12、assSave,保存到程序的当前目录下。 最后主函数的实现,代码十分简单,先定义一个 Control 类的对象, ControlClass,再通过 controlClass.start()启动整个程序。 2.1.1 开发平台开发平台 操作系统:Win7 开发软件:Mirosoft Visual C+ 6.0 4 2.1.2 基本原理基本原理 开始 进入系统界面 进入主菜单 课程信息浏览按学分查询 退出 课程信息录入信息存储 结束 按课程性质查询 2.1.3 数据结构数据结构 表 1 数据结构表 数据名称数据类型解释 classNumstring课程编号 classNamestring课程名称
13、classPropertiesstring课程性质 totalClassNumberInt总课时 currentClassNumberInt授课学时 expClassNumberInt上级或实验学时 creditDouble学分 rightTermstring开课学期 河南城建学院C程序设计课程设计报告 5 2.1.4 类的类的 UML 图图 表 2 Class 类的 UML 图 Class -ClassNum: string -ClassName: string -ClassProperties: string -TotalClassNumber: int -currentClassNumb
14、er: int -ExpClassNumber: int -credit: double -rightTerm: string +setClassNum(classNumTemp: string) +setClassName(classNameTemp: string) +setClassProperties(classPropertiesTemp: string) +setTotalClassNumber(totalClassNumberTemp: int) +setCurrentClassNumber(currentClassNumber: int) +setExpClassNumber(
15、expClassNumberTemp: int) +setCredit(credit: double) +setRightTerm(rightTermTemp: string) +getClassNum():string +getClassName():string +getClassProperties():string +getTotalClassNumber():int +getCurrentClassNumber():int +getExpClassNumber():int +getCredit() :double +getRightTerm() :string 表 3 Menue 类
16、的 UML 图 Menue +getInput():char +showMenu():void +clearScreen():void +pauseScreen():void +showAddClass():void +showBrowseClass():void +showSearchByCredit():void +showSearchByClassProperties():void +showAddClassNum():void 6 +showAddClassName():void +showAddClassProperties():void +showAddCurrentClassNumber():void +showAddExpClassNumber():void +showLoadingSaving():void +showSuccessedSaving():void +showEachClassInfo(Class classTemp) :vo