比特教务选排课系统的设计与实现
摘 要
随着人类向信息社会的不断迈进,风起云涌的信息时代正掀起一次新的革命,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的比特教务选排课系统来管理选课信息,会使管理工作系统化、规范化,提高管理效率。
本课题的研究对象是比特教务选排课系统,该系统实现了系统用户管理、学生信息、教师信息、选课信息、课程信息等功能。本系统在设计上,考虑到系统内容以及系统的受众群体,在系统的美工方面采用了比较正规的设计,同时也提供了友好的页面以及简单的操作,系统采用PHP、Mysql,这样的组合不但利用上了在大学中所学到的知识,并且能够使系统真正的发布到互联网上,而不是一个单纯的演示系统。
本系统经过测试,运行效果稳定,操作方便、快捷。在具体的应用过程中,有可能会出现一些问题,今后还会对本系统不断地进行完善、更新,使其功能更强大,应用更广泛。
关键词:B/S结构;管理效率;PHP;
Design and implementation of bit educational administration course selection and scheduling systemAbstract
With the continuous progress of mankind towards the information society, the surging information age is setting off a new revolution. At the same time, with the rapid development of computer network technology, the application of network management has become more and more widely. Therefore, establishing a bit educational administration course selection and scheduling system with B / S structure to manage the course selection information will systematize and standardize the management work and improve the management efficiency.
The research object of this subject is bit educational administration course selection and scheduling system, which realizes the functions of system user management, student information, teacher information, course selection information, course information and so on. In the design of the system, considering the system content and the audience of the system, the system adopts a more formal design in the art of the system, and also provides friendly pages and simple operation. The system adopts PHP and mysql. This combination not only makes use of the knowledge learned in college, but also enables the system to be truly released to the Internet, rather than a simple demonstration system.
After testing, the system has stable operation effect and convenient and fast operation. In the specific application process, there may be some problems. In the future, the system will be continuously improved and updated to make it more powerful and widely used.
Key Words: B/S structure; Management efficiency; PHP; The Internet
摘 要
Abstract
目 录
第1章 绪论
1.1研究背景
1.2开发意义
1.3开发现状
1.4论文结构
第2章 主要技术和工具介绍
2.1开发技术
2.2 MVVM模式介绍
2.3MYSQL数据库
2.4 B/S结构
2.5 Thinkphp框架介绍
第3章 系统分析
3.1可行性分析
3.1.1经济可行性
3.1.2技术可行性
3.1.3操作可行性
3.2需求分析
3.3业务流程分析
3.4数据流程分析
第4章 系统设计
4.1开发环境
4.2系统结构设计
4.3主要功能模块设计
4.4界面设计
4.5数据库设计
4.5.1数据库设计概述
4.5.2概念设计
4.5.3表设计
第5章 系统实现
5.1登录模块的实现
5.2学生子系统模块的实现 21
5.2.1学生注册模块的实现
5.2.2选课模块的实现
5.2.3学生信息模块的实现
5.3管理员子系统模块的实现 26
5.3.1用户管理模块的实现 26
5.3.2课程规划管理模块的实现 27
5.3.3学生信息管理模块的实现 29
第6章 系统测试 30
6.1软件测试 30
6.2功能测试 30
6.3测试结果 31
第7章 总结 32
致 谢
参考文献 35
1.1研究背景
1.2开发意义
从学生的角度来说,由于学校教学制度的改革,现在大部分高等院校开始实行的是学生的自主选课模式。传统的教学模式(学生按照学校安排好的课程上课)已经不能适应新型的教学模式,如果仍然通过纸上的方式选课,一方面浪费了大量的人力、物力资源,另一方面浪费时间以及会在人为的统计汇总过程中出现可避免的差错等情况。随着高校人数的增多,上述弊端会越来越多的暴露出来。如果利用网络进行选课,学生只要在计算机前输入自己的个人选课信息即可完成教务部门原来几倍的作业量。从教师的角度来说,教师提出代课申请完成课程发布的工作更加容易,得到教学的信息更加快捷,因此通过选课系统可以大幅度的减少教师的工作量,方便了教学工作。
1.3开发现状
国外的教学科研软件与国内相比开发的早而且比较成熟。早在七十年代末,美国就建成了NSFNET(国家科学基金网),其课题的申报及课题的进展情况汇报都在网上进行。其网上学生在线选课系统也十分完善,世界各地的学生可以坐在家里通过互联网完成入学报名、选课、考试、毕业论文、取得学位这一学习生活的全过程。目前,国际上已具规模的远程教育学校就有数百所之多,网上教育正在各地发挥着巨大的作用,为世界各国培养出大批人才。所有这些都表明,基于Internet的校园网的应用已深入到校园内的各个方面。
我国不少高校都实行了学分制,它的核心是允许学生自由选课,即把学习的自主权交给学生。在这里,学生选课时的制约因素比较复杂,工作量也很大,而且往往需要在较短的时间内完成。运用计算机辅助选课,即能实时地对大量选课数据进行检验和统计,十分方便地输出选课结果,同时也避免了人工处理时容易产生的错误。
1.4论文结构
第一章是论文的绪论部分,主要介绍了课题的研究背景以及研究目的和意义。
第二章研究了比特教务选排课系统的所采用的开发技术和开发工具。
第三章研究了比特教务选排课系统的需求分析,根据系统的特点,分析系统采用的体系结构及开发方法,以及该系统的运行环境,并分析了业务流程,绘制了业务流程以及数据流程。
第四章是对系统的详细设计进行说明。
第五章是系统的具体实现,介绍系统的各个模块的具体实现。
第六章在前几章的基础上对系统进行测试和运行。
第2章 主要技术和工具介绍
2.1 开发技术
本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于php的Thinkphp框架进行开发。
前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型。
后端部分:采用Thinkphp作为开发框架,同时集成Redis等相关技术。
2.2MVVM模式介绍:
MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。
2.3MySQL数据库
网站的开发必须配套相应数据库,数据库具有一定的组织结构,能够存放和管理数据信息,在以前数据库的功能仅仅是数据保存和管理操作,但是时代的变迁和发展,现在的数据库演变成了数据处理的方式,数据库从最开始的简单存放数据表格信息到现在的能够存放成千上万数据的大型数据库,期间还是经历了许多的改革。
本次开发的心理学交流学习网站使用的数据库是MYSQL数据库,该数据库运行速度快,安全性能也很高,而且对使用的平台没有任何的限制,所以被广泛应运到系统的开发中。MySQL是一个开源和多线程的关系管理数据库系统,MySQL是开放源代码的数据库,具有跨平台性,虽然功能未必强大,导致很多人都了解这个数据库的基本应用,在数据库中,总共建立了10几个表,这里面每个表都是相对应的,都各自有各自的联系,数据库意义重大,如果没有数据库的链接,就没办法运行程序,这显然可以看见数据库与程序的重要性,是紧密相连接的。
2.4B/S结构
B/S(浏览器/服务器)结构是目前主流的网络化的结构模式,它能够把系统核心功能集中在服务器上面,可以帮助系统开发人员简化操作,便于维护和使用。只需要用户在用户端安装360浏览器、谷歌浏览器、QQ浏览器等当前大众浏览器,在电脑里面安装sqlserver、mysql数据库等数据库。安装好的浏览器与服务器端的数据库进行信息数据的交互。很多专门软件能够做到的事情,采用B/S结构模式也能实现,它能够结合Web浏览器技术,ActiveX技术以及多种脚本语言等技术。帮助程序开发者节约了不少开发成本。目前B/S结构成为程序开发主流结构,它最好的地方就是没有地点限制还不用专门安装软件,笔记本或者电脑能够上网就能访问系统。系统使用B/S进行开发在后期系统维护上面就会很省事,不用什么问题都在服务器上面操作,简单的用户端处理就解决部分问题,开发出来的程序跟用户交互性上面也会增强,还可以实时刷新浏览器进行程序局部的数据信息更新。
图2-1 B/S模式三层结构图
2.5Thinkphp框架介绍:
ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。
ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。
ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。
作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。
第3章 系统分析
3.1可行性分析
分析用户需求和数据需求,得到一个方案,然后设定系统的开发方案,为每个功能模块设计出物理设计方案,开发本系统的是否可行?本文从技术上、操作上和经济上对本系统的开发进行可行性分析。
3.1.1经济可行性
比特教务选排课系统 属于一个工具型的系统,它可以节省工作人员大量数据收集、方便快捷,能够极大地提高工作效率,最大限度的降低管理员的工作量,使管理尽量简便,同时促进¥新闻管理的信息化、现代化,及时提供必要的信息统计。因为整个系统采用Apache+Mysql+PHP组合,这几个软件都是免费开源的,系统开发所需的费用是比较低的,由于系统并不复杂,其运行与培训费用也不会占用很多资金,可以预见系统完成后可以带来较大的经济效益。
3.1.2技术可行性
本系统采用windows 7作为操作平台。数据库开发平台选用Mysql,该数据库管理系统在windows7和windows 8/10上都能运行,并提供数据库之间的数据复制功能,可代替现有系统单据数据的手工传递工作,。本系统的应用软件开发平台选用Phpstorm。
3.1.3操作可行性
本系统使用的是现流行的开发语言,即PHP技术。同时所有的信息都是以网页的形式展示,系统中的信息都可以在后台操作数据库达到数据更新的效果。用户只需要会计算机的基本操作或者会上网就可以使用本系统。系统布局较简单,功能操作不复杂,完全符合现代市场需求。
3.2需求分析
针对现存的问题和需要,通过功能需求的分析,特建立了数字化、信息化的比特教务选排课系统。
本系统主要包含了系统用户管理、学生信息、教师信息、课程信息、选课信息等多个功能模块。下面分别简单阐述一下这几个功能模块需求。
表3-1功能需求表
编号 | 功能名称 | 功能描述 |
| 用户登录 | 保证用户通过身份验证进入系统进行操作 |
| 数据备份 | 超级管理员对系统的数据进行备份 |
| 批量删除 | 超级管理员选择系统某个数据表进行数据清空 |
| 修改个人信息 | 用户可以根据自己当前的情况修改个人的信息 |
| 后台登录 | 仅管理员能够登录后台 |
| 添加选课记录 | 学生添加选课记录 |
| 编辑选课记录 | 学生修改选课记录信息 |
| 删除选课记录 | 学生删除选课记录 |
| 选课审核 | 教师给学生添加的选课进行审核 |
| 添加学生信息 | 学生添加学生信息 |
| 编辑学生信息 | 学生修改信息 |
| 删除学生信息 | 学生删除信息记录 |
| 添加选课信息 | 教师添加选课信息 |
| 编辑选课信息 | 教师修改选课信息 |
| 删除选课信息 | 教师删除选课信息 |
| 添加课程信息 | 管理员添加课程信息 |
| 编辑课程信息 | 管理员修改课程信息 |
| 删除课程信息 | 管理员删除课程信息 |
3.3业务流程分析
经过对系统功能的分析,调查,研究,总结出比特教务选排课系统主要实现的是对¥留言信息、用户信息等管理功能。这样,可以对该系统绘制业务流程图。
如下为业务流程图图例。
图3-1业务流程图图例
系统的业务流程如下图所示。
图3-2系统业务流程图
3.4数据流程分析
根据上文所述的业务流程特点,首先对各个方面总的数据处理环节和外部实体进行了描述, 根据自顶向下原则,逐层分解功能,这个过程产生DFD图。
以下是本文当中使用的数据流图图例,见下图所示。
图3-3系统数据流图(0层)
零层数据流程是流程中最抽象的一层,它包括了与登录管理、用户功能管理和检索维护管理等功能模块,在登录模块使用到的数据存储有用户账户信息文档、用户信息文档,用户功能管理模块需要的存储是学生动态信息文档、选课信息文档、成绩信息文档,检索维护是通过以上这些文档信息通过关键词进行搜索。
系统的0层数据流图如下图所示。
图3-4系统数据流图(0层)
一层数据流程图是对零层数据流程图的细化,将登录与细分为填制登录信息和完善信息,用户功能管理细分为用户基本功能管理和用户特色功能管理。
系统的1层数据流图如下图所示。
图3-5系统数据流图(1层)
二层数据流程是对一层数据流层图中填写登录信息、学生基本功能和教师功能的细化。即:填写登录信息细化为填制信息、后台审核,用户基本功能细化为学生资料修改、课程信息、教师信息、学生信息、选课信息、用户管理。
系统的2层数据流图如下图所示。
图3-6系统数据流图(2层)
第4章 系统设计
4.1开发环境
- 软件体系结构方案:采用B/S模式,B/S代表的是服务器端由web服务器发放,客户端由浏览器接收的系统,它的前台是html语言,由浏览器解释。B/S结构可以由web服务器能够解释的脚本语言如PHP。
- 操作系统方案:Windows 7(旗舰版)操作系统,该系统可以兼容需要的软件,并且具有良好的运行速度,界面良好。
- 后台数据库:选用Mysql。Mysql旨在通过数据库加密、更加安全的默认设置、加强的密码政策和细化许可控制、及加强的安全模型等特性,为企业数据提供最高级别的安全性。
- 开发工具:前台网页使用dreamweaver工具,后台逻辑选用Phpstorm。
- 开发语言:PHP语言。
- 开发技术:PHP +html+css+js技术
4.2系统结构设计
本系统使用的角色主要有系统管理员、学生、教师,本系统分为学生端、教师端和管理员端,首先学生用账号密码登录系统用户端,进行教师信息、学生信息、课程信息、选课信息,学生可以通过标题和类别进行信息的搜索。
管理员端主要由管理员使用,以管理员的身份在登录页面输入账号和密码,经过数据库身份验证,验证成功后登录系统主页,可以使用系统用户管理、学生管理、教师管理、课程信息、学生信息、教师信息、选课信息等功能操作。同时管理员可以通过关键字搜索可以搜索相应的信息,打印各种详细信息,导出各类信息列表至excel中。
系统的功能结构图如下图所示。
图4-1系统功能结构图
4.3主要功能模块设计
该模块包括普通用户管理和系统用户管理,系统用户主要是普通管理员,对用户信息进行管理,只有普通用户才可在该系统上进行相应的操作。用户对个人信息可进行修改;管理员可对自己的个人信息进行维护,同时可对用户的密码信息进行修改,也可删除系统中的用户
- 登录模块
根据用户输入的 Id 和密码到数据库中查找该用户,如果未能找到该用户则做出 提醒“用户名或密码错误”,如果找到该用户,则要判断用户的类别然后根据用户类别进入相应的页面。
(1)课程添加:必须填写课程名称、上课教室、课程科目、授课教师、课程日期、对应课本、课程大纲、对应章节、课程备注,课程规划编号必须是唯一的, 提交后判断某一项是否为填写, 如果是则做出提醒, 填写符合规则后方可添加到数据库。
(2)课程查询:可以根据课程规划编号等信息对课程进行查询,查询结果可能有多个。
(3)课程修改:除了课程编号外,其他信息均可以修改。
(4)课程删除:首先找到要删除的课程(一个或多个),然后删除即可。
(1)学生添加:必须填写学生姓名、学生性别、学生专业、所属学院、院系信息、班级信息、学生电话、学生地址,且编号必须是唯一的,各项都不能为空。
(2)学生查询:该功能能够显示学生的基本信息,可以根据学生的编号等信息对学生做出查询。
(3)学生修改:如果学生信息需要被修改,可修改的信息包括学生内容等基本信息,但是编号是唯一、固定 的,不能被修改。
(4)学生删除:首先找到要删除的学生(一个或多个),然后删除即可。
- 选课管理模块
教师选中某个选课,点击添加选课,填写成绩数据,点击添加按钮,完成选课成绩操作,每次成绩录入,列表将生成新的成绩信息,供管理员管理。
- 选课模块
用户查询课程规划信息,选择课程规划进入该课程规划的详细页面,点击选课按钮,填写选课表单,添加选课记录。
用户选课课程规划模块主要实现的是对课程规划的选课功能,同时可查看自己的选课记录,并对选课可进行取消选课操作。管理员登录系统后,可查看用户的选课信息,也可搜索选课信息,同时可对选课信息进行确认或删除的操作。
4.4界面设计
系统首页是整个系统功能的一个缩影,对首页的布局不仅仅关系到用户的使用性,还关系到其他页面的设计以及功能管理设计。所以使用Photoshop先对首页背景和页面布局进行设计。
登录页设计图,如下图所示。
图4-3登录页设计图
首页设计图,如下图所示。
图4-4首页设计图
4.5数据库设计
4.5.1数据库设计概述
为了实现系统的功能设计,就要有相应的数据库表设计。根据系统的功能设计要求为各个数据库表设计字段、数据类型、是否为空等的相关信息。在实际调研和需求分析的基础上,对该系统设计数据库。再有系统的需求分析可以看出,本系统有两个角色:普通用户和管理员,他们分别在系统的运行和使用中起着不同的作用。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整性和一致性。数据库中表的设计主要考虑两个方面:一是整个管理系统的所有表中的数据要共享性高、冗余度小、占用最可能小的存储空间。
4.5.2概念设计
概念设计是整个数据库设计的关键,在概念设计阶段,由需求分析得到了E-R模型。E-R图是识别功能模型与数据模型间关联关系的,在主题数据库的抽取和规范化的过程中,采用的是简化的E-R图表示方法,从而避免过繁过细的E-R图表示影响规划的直观和可用性。是对现实世界的抽象和概括,是数据库设计人员进行数据可设计的有力工具,能够方便直接地表达应用中的各种语义知识,令一方面它简单、清晰、易于用户理解。
图4-10系统总体ER图
4.5.3表设计
概念模型是独立于任何一种数据模型的信息结构。将概念模型转换成逻辑模型,转换的一般原则如下:
(1)一个实体性转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。
(2)一个1:1联系可以转化为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
(3)一个1:n联系可以转化为一个独立的关系模式,也可以与n端对应的关系模式合并。
(4)一个m:n联系转化为一个关系模式。
本系统设计如下多个表,包括学生表、教师表、选课表、成绩表、竞赛表、申报表等。
teacher_information表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
teacher_information_id | int | 11 | 是 | 是 | 教师信息ID |
teacher_name | int | 11 | 否 | 否 | 教师姓名 |
teacher_gender | varchar | 64 | 否 | 否 | 教师性别 |
teacher_profession | varchar | 64 | 否 | 否 | 教师专业 |
affiliated_college | varchar | 64 | 否 | 否 | 所属学院 |
department_information | varchar | 64 | 否 | 否 | 院系信息 |
class_information | varchar | 64 | 否 | 否 | 班级信息 |
teacher_telephone | varchar | 64 | 否 | 否 | 教师电话 |
teacher_address | varchar | 64 | 否 | 否 | 教师地址 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
teacher表: | |||||
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
teacher_id | int | 11 | 是 | 是 | 教师ID |
teacher_name | varchar | 64 | 否 | 否 | 教师姓名 |
teacher_gender | varchar | 64 | 否 | 否 | 教师性别 |
teacher_profession | varchar | 64 | 否 | 否 | 教师专业 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
student_user表: | |||||
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
student_user_id | int | 11 | 是 | 是 | 学生用户ID |
student_name | varchar | 64 | 否 | 否 | 学生姓名 |
student_gender | varchar | 64 | 否 | 否 | 学生性别 |
student_major | varchar | 64 | 否 | 否 | 学生专业 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
student_information表: | |||||
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
student_information_id | int | 11 | 是 | 是 | 学生信息ID |
student_name | int | 11 | 否 | 否 | 学生姓名 |
student_gender | varchar | 64 | 否 | 否 | 学生性别 |
student_major | varchar | 64 | 否 | 否 | 学生专业 |
affiliated_college | varchar | 64 | 否 | 否 | 所属学院 |
department_information | varchar | 64 | 否 | 否 | 院系信息 |
class_information | varchar | 64 | 否 | 否 | 班级信息 |
student_telephone | varchar | 64 | 否 | 否 | 学生电话 |
student_address | varchar | 64 | 否 | 否 | 学生地址 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
course_selection_information表 | |||||
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
course_selection_information_id | int | 11 | 是 | 是 | 选课信息ID |
course_name | varchar | 64 | 否 | 否 | 课程名称 |
course_subjects | varchar | 64 | 否 | 否 | 课程科目 |
course_date | varchar | 64 | 是 | 否 | 课程日期 |
classroom | varchar | 64 | 否 | 否 | 上课教室 |
elective_students | int | 11 | 否 | 否 | 选课学生 |
student_name | varchar | 64 | 否 | 否 | 学生姓名 |
instructor | int | 11 | 否 | 否 | 授课教师 |
notes_on_course_selection | text | 0 | 否 | 否 | 选课备注 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
course_information表: | |||||
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
course_information_id | int | 11 | 是 | 是 | 课程信息ID |
course_name | varchar | 64 | 否 | 否 | 课程名称 |
course_subjects | varchar | 64 | 否 | 否 | 课程科目 |
course_date | datetime | 0 | 否 | 否 | 课程日期 |
classroom | varchar | 64 | 否 | 否 | 上课教室 |
instructor | int | 11 | 否 | 否 | 授课教师 |
corresponding_textbook | varchar | 64 | 否 | 否 | 对应课本 |
corresponding_chapter | varchar | 64 | 否 | 否 | 对应章节 |
course_notes | varchar | 64 | 否 | 否 | 课程备注 |
syllabus | text | 0 | 否 | 否 | 课程大纲 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
第5章 系统实现
5.1登录模块的实现
比特教务选排课系统 的系统入口就是用户登录功能,在浏览器输系统地址跳转至系统前台首页,系统前台的登录窗口在首页左面,包括用户名、密码、权限、验证码,除了权限框使用下拉列表,其他使用文本框,验证码下方为登录和重置两个按钮,用户点击登录按钮,则进行登录验证。
登录流程图如下所示。
图5-1登录流程图
系统登录界面如下所示。
图5-1系统登录
登录的逻辑代码如下:
if ($bol){
$password = md5($password);
if ($request['password']==$bol['password']) {
//添加token信息public function login()
{
if (Request::isPost()) {
$request = Request::param();
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
$request['password'] = md5($request['password']);
$result = $this->model->login($request, $this->table);
$data = $result;
}
} else {
$data['error'] = 30000;
$data['message'] = "field的值不能为空!";
}
return json_encode($data);
}
public function login($request=[],$table_name = ''){
$username = $request['username'];
$password = $request['password'];
$bol = $this->where(['username'=>$user
$access_token['create_time'] = date('Y-m-d H:i:s');
$access_token['update_time'] = date('Y-m-d H:i:s');
$access_token['info'] = json_encode($bol);
// $access_token['info'] = $bol;
$access_token['token'] = md5(date('Y-m-d H:i:s'));
$bol_token = Db::name('AccessToken')->insert($access_token);
if ($bol_token){
$data['obj'] = $bol;
$data['obj']['token'] = $access_token['token'];
return ['result' => $data];
}else{
return ['error' => ['code' => 5000, 'message' => '登录失败,token生成失败']];
}
} else {
return ['error' => ['code' => 5000, 'message' => '登录失败,密码不正确']];
}
}else{
return ['error' => ['code' => 5000, 'message' => '登录失败,账号不存在']];
}
}
5.2学生子系统模块的实现
5.2.1学生注册模块的实现
用户在填写数据的时候必须与注册页面上的验证相匹配否则会注册失败,注册页面的表单验证是通过JavaScript进行验证的,用户名的长度必须在6到18之间,邮箱必须带有@符号,密码和密码确认必须相同,你输入的密码,系统会根据你输入密码的强度给出指定的值,电话号码和身份证号码必须要求输入格式与生活相符合,当你前台验证通过的时候你点击注册,表单会将你输入的值通过name值传递给后台并保存到数据库中。
学生注册流程图如下所示。
图5-1注册流程图
学生注册界面如图所示。
图5-1注册界面图
public function register()
{
if (Request::isPost()) {
$request = Request::param();
$request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');
$request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
$request['password'] = md5($request['password']);
$result = $this->model->register($request, $this->table);
$data = $result;
}
} else {
$data['error'] = 30000;
$data['message'] = "field的值不能为空!";
}
return json_encode($data);
}
public function register($request=[],$table_name = ''){
$username = $request['username'];
$bol = $this->where(['username'=>$username])->find();
if (!$bol){
$result = self::allowField(true)->save($request);
if ($result) {
return ['result' => 1];
} else {
return ['error' => ['code' => 3000, 'message' => '注册失败']];
}
}else{
return ['error' => ['code' => 3000, 'message' => '注册失败,账号已存在']];
}
}
5.2.2选课模块的实现
学生点击某个选课点进入课程规划详细页,点击选课按钮进入选课页,提交选课信息,成功选课后,教师管理学生的选课信息,审核选课信息。
学生选课流程图如下所示。
图5-1学生选课流程图
选课界面如图所示。
图5-1选课界面图
5.2.3学生信息模块的实现
根据课程信息对应所属的教师,该教师可对选择该门课程的学生录入信息,学生查看个人信息。
学生信息界面如图所示。
图5-1学生信息界面图
5.3管理员子系统模块的实现
5.3.1用户管理模块的实现
用户管理主要是对新用户的添加和旧用户的删除。新用户的添加主要是指添加用户名称并确定其密码;旧用户的删除也是从下拉菜单中找到对应的用户名称将其删除。不论是新用户添加还是旧用户的删除,这个权限只有管理员具有。
用户管理界面如下图所示。
图5-1用户管理界面
用户管理关键代码如下:
public function add($request=[],$table_name = '',$table_id = ''){
$result = self::allowField(true)->save($request);
if ($result) {
return ['result' => 1];
} else {
return ['error' => ['code' => 3000, 'message' => '数据添加失败']];
}
}
5.3.2课程管理模块的实现
课程信息添加功能主要指对其课程名称、课程科目、课程日期、上课教室、授课教师、对应课本、对应章节、课程备注等一些基本信息的添加、删除和修改。课程查询能根据课程id、课程名称等多种条件对课程规划信息进行查询。
课程管理流程图如下所示。
图5-1课程管理流程图
课程添加如下图所示:
图5-1课程管理界面
{
$request = Request::param();
if (isset($request['groupby']) && isset($request['field'])) {
if (!empty($request['groupby']) && !empty($request['field'])) {
$result = $this->model->avg_group($request, $this->table, $this->table_id);
$data = $result;
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "groupby或者field的值不能为空!";
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "groupby或者field的值不能为空!";
}
return json_encode($data);
}
5.3.3学生信息管理模块的实现
管理员发布新的学生信息,系统前台显示学生信息,学生信息添加功能主要指对其学生姓名、学生性别、学生专业、所属学院、院系信息、班级信息、学生电话、学生地址等一些基本信息的添加、删除和修改。学生查询能根据学生id、学生姓名等多种条件对学生信息进行查询。
学生管理流程图如下所示。
图5-1学生管理流程图
学生添加如下图所示:
图5-1学生添加
学生信息添加关键代码为:
{
protected $rule = [
'username|账号' => [
'require' => 'require',
'max' => '16',
],
'password|密码' => [
'require' => 'require',
'max' => '32',
],
];
}
6.1软件测试
6.2功能测试
功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项检测,检查产品是否达到用户要求的功能。下面列出的测试用例是基于需求分析阶段的用例描述而进行的设计。
下面将通过表格的形式介绍针对本系统每个功能模块所进行的功能测试。
1.登录模块功能测试,如下表所示。
表6-1登录测试
测试用例编号 | 测试用例描述 | 前提条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
| 登录系统 | 用户打开登录界面 | 输入正确的用户名,密码为空 | 无法登录 | 提示密码不得为空,无法登录 | 正常 |
| 登录系统 | 用户打开登录界面 | 输入正确的用户名,输入错误密码 | 无法登录 | 提示密码不正确,无法登录 | 正常 |
| 登录系统 | 用户打开登录界面 | 输入正确的密码,用户名为空 | 无法登录 | 提示用户名不得为空,无法登录 | 正常 |
| 登录系统 | 用户打开登录界面 | 输入正确的密码,错误的用户名 | 无法登陆 | 提示用户名不正确,无法登录 | 正常 |
| 登录系统 | 用户打开登录界面 | 用户名及密码都为空 | 无法登录 | 提示用户名和密码不得为空,无法登录 | 正常 |
| 登录系统 | 用户打开登录界面 | 用户名及密码都输入错误 | 无法登录 | 提示用户名和密码正确,无法登录 | 正常 |
| 登录系统 | 用户打开登录界面 | 输入正确的用户名和密码 | 正常登录 | 进入主界面 | 正常 |
2.修改密码模块功能测试,如下表所示。
表6-2修改密码测试
测试用例编号 | 测试用例描述 | 前提条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
| 修改密码 | 用户打开修改密码界面 | 输入正确初始密码和2次相同的新密码 | 密码修改成功 | 密码修改成功 | 正常 |
| 修改密码 | 用户打开修改密码界面 | 输入错误的原始密码 | 密码修改失败 | 密码修改失败 | 正常 |
| 修改密码 | 用户打开修改密码界面 | 输入正确初始密码和2次不相同的新密码 | 密码修改失败 | 密码修改失败 | 正常 |
3.课程管理功能测试,如下表所示。
表6-7课程管理测试
测试用例编号 | 测试用例描述 | 前提条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
| 课程信息添加 | 用户已登录,打开课程规划添加界面 | 输入课程名称、课程负责账号、课程负责人、课时规划等信息 | 课程规划添加成功 | 课程添加成功,新课程规划成功显示 | 正常 |
| 课程信息添加 | 用户已登录,打开课程添加界面 | 用户未输入课程名称、课程负责账号、课程负责人、课时规划 | 课程添加失败 | 课程添加失败 | 正常 |
4.选课功能测试,如下表所示。
表6-8选课测试
测试用例编号 | 测试用例描述 | 前提条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
| 选课 | 用户已登录,打开选课界面 | 输入申请类型、申请账号、申请学生等信息 | 选课成功 | 选课成功 | 正常 |
| 选课 | 用户已登录,打开选课界面 | 用户未输入申请类型、申请账号、申请学生 | 选课失败 | 选课失败 | 正常 |
6.3测试结果
通过对比特教务选排课系统整个流程管理的测试,发现了许多无法实现的功能并及时得到改正和实现,为比特教务选排课系统 的发布奠定了基础。此系统中各模块的功能都基本实现,不过还存在着许多不足,在以后的学习中通过测试还需加强和完善。
第7章 总结
本文主要研究了比特教务选排课系统的设计与实现。本次论文主要研究的内容主要包括:
(1)分析研究了本课题的开发背景和课题的研究意义。
(2)对此次毕业设计进行了详尽的需求分析,并根据实际需求,分析了其数据字典。
(3)概要设计了系统的功能模块,详细设计了系统所使用的数据库表,并研究了该系统的ER图。
(4)详细介绍了该平台要实现的功能,构建了此系统。
从技术上来说,整个系统的基本实现环境是Win7操作系统搭配phpstorm下的PHP环境,数据库的建立使用Mysql软件,系统开发使用phpstorm软件,用java语言进行系统的设计和开发,图片采用Photoshop CS6处理,使整个系统在视觉上和功能上尽量做到完整和美观。系统界面设计美观大方,功能较为完整,技术较先进且具有一定现实意义。
在摸索中前进。对Mysql数据库的使用,如何设计后台表结构,使得系统更加合理,健壮,是面临的又一个难题,通过查找相关资料,以及在充分的需求分析基础上,解决了以上问题。若条件允许,系统的功能模块能够更丰富,某些模块的功能也能更完善,用户之间权限的处理逻辑性也能更强。今后在改善客观条件的情况下,本系统还需要进一步进行研究开发。
致 谢
经历了几个月的毕业设计之旅,遭遇了无数难题与挑战,几经波折后,近乎要摧毁我当初选择这个题目的信心。好在我的导师一直坚持对我悉心支持,并对此套系统提出了诸多改善意见,解决了我所遇到的众多难题,比特教务选排课系统 也得以在这样的境况下圆满完成。老师给予了我正确的指导和极大的帮助,这不仅仅使我获得了足够多的开发经验,更使我在系统设计过程中少走了许多的弯路,巩固了以前所学的知识,提高了应用能力,这使我对以后的工作也信心满满。
敬业的工作态度都给予了我极大的鼓励与帮助。对于提出的问题和遇到的困难都给予细心的解答和真诚的帮助,再次表示衷心的感谢。我还要对学院及系里的各位领导、老师们表示谢意,在这次毕业论文期间给我们提供了良好的学习和生活环境,并给予软硬件的支持,使得我的系统设计工作及论文撰写工作更加顺畅、便利。最后我还要感谢所有为我的毕业设计提出指导意见的各位老师、同学。
参考文献
[1]王旭,陈越,王晓莉,谈一真.实验教学排课系统的设计与应用[J].科技风,2022(06):69-71.DOI:10.19392/j.cnki.1671-7341.202206023.
[2]吴剑谦,王美荣.浅谈高校教务管理信息平台中的排课模式[J].试题与研究,2022(05):124-125.
[3]惠晓萍.高职院校二级排课模式探究[J].卫生职业教育,2022,40(03):6-8.
[4]张琦,张丽华,魏敏捷.高校计算机辅助课程安排系统算法及实现研究[J].中国电力教育,2021(S1):256-257.DOI:10.19429/j.cnki.cn11-3776/g4.2021.s1.112.
[5]杜冬霞.多Agent通信协商技术在高职院校排课系统的应用研究[J].数字通信世界,2021(12):246-248.
[6]黄泓彰,王辰尹,王伟楠.基于Springboot的高校智能排课系统的设计与实现[J].电脑知识与技术,2021,17(26):59-62+81.DOI:10.14004/j.cnki.ckt.2021.2595.
[7]高建兴.混合量子粒子群优化算法在高职院校排课管理系统中的应用[J].信息与电脑(理论版),2021,33(17):47-49.
[8]贺照易. 排课系统的MSVL建模与验证[D].西安电子科技大学,2021.
[9]朱良学.基于遗传算法的高职学院排课系统设计研究[J].湖北师范大学学报(哲学社会科学版),2021,41(03):94-99.
[10]黄阿新.基于蚁群算法的高校排课系统设计[J].安徽电子信息职业技术学院学报,2021,20(02):6-10.
[11]吴剑谦,王美荣.教务排课对高等院校教学运行的作用分析[J].大学,2021(06):27-28.
[12]荀旭. 自动排课系统的设计与实现[D].西安科技大学,2020.DOI:10.27397/d.cnki.gxaku.2020.000839.
[13]黄艺燕,洪星星,孙燕君.排课机制及其优化——以北京大学为例[J].中国大学教学,2020(06):49-53.
[14]李玉伟. 基于优先级的智能排课系统的研究与实现[D].华中师范大学,2020.DOI:10.27159/d.cnki.ghzsu.2020.002106.
免费领取本源代码,请关注点赞+私信