计算机毕业设计-程序论文-高校智能排课系统

本系统开发采用技术为JSP、Bootstrap、Ajax、SSM、Java、Tomcat、Maven

此文章为本人亲自指导加编写,禁止任何人抄袭以及各类盈利性传播, 相关的代码+部署+论文+ppt+代码讲解+答辩指导文件都有可私要

项目源码,请关注❥点赞收藏并私信博主,谢谢~

摘 要

近年来我国在计算机领域取得了很大的进步,很多行业都从人工变成了智能操作,极大程度的节省了人力、物力等资源。很多工作强度大、操作复杂容易出错的工作大部分都被相关的智能操作所代替,还有一些操作风险较高、可能对人身造成伤害的工作也都逐渐被人工智能所代替了。近几年我国的各大高校都对学生们的课程安排十分上心,而且学生的排课任务是一件十分复杂的事情,所以将高校的排课与计算机的人工智能相结合是势在必行的。将人工智能与高校的排课工作相结合的话,即节省了教育工作者的时间,又节省了学生选课的时间,极大的给学校对教育的支出节省了成本。所以本次设计一款高校智能排课系统来解决排课过程中出现的问题。

基于目前高校教务排课的发展现状,本次拟计划设计开发一款基于Java语言的高校智能排课系统,此智能排课系统使用主流的Java语言、并结合JSP开发技术,使用eclipse作为开发工具,采用MySQL关系型数据库,来完成最后的设计与实现。根据排课的任务和需求,整个系统设置了两个管理端,一个是管理员端另一个是学生端,不同的角色有不同的功能和管理权限,管理员主要是进行课程的管理和学生的管理,学生主要是进行选课。根据不同的功能设置不同的功能模块,主要有注册登录模块、选课模块、学生管理模块、课程管理模块、课程查询模块等。

关键词:高校 JAVA 排课 MySQL 智能

Abstract

In recent years, China has made great progress in the field of computer, many industries have changed from artificial to intelligent operation, greatly saving human and material resources. Most of the jobs that are hard and complicated to do and easy to make mistakes are replaced by the related intelligent operations, there are also some high-risk operations, may cause personal injury to the work are gradually replaced by artificial intelligence. In recent years, all the universities in our country pay much attention to the arrangement of students'courses, and the task of arranging courses for students is a very complicated thing, so it is imperative to combine the arrangement of courses with computer artificial intelligence. The combination of artificial intelligence and course scheduling in colleges and universities not only saves the time of educators, but also saves the time of students choosing courses, which greatly saves the cost of education. So this design a university intelligent course scheduling system to solve the problems in the course scheduling.

Based on the current development of university teaching schedule, this plan to design and develop a Java language-based University intelligent schedule system, which uses the mainstream Java language, and combined with JSP development technology, eclipse as a development tool, using MySQL relational database, to complete the final design and implementation. According to the task and requirement of course arrangement, the whole system has set up two management ends, one is the administrator end and the other is the student end. Different roles have different functions and management rights, administrators are mainly for the management of courses and student management, students are mainly for course selection. According to the different function set different function module, mainly have register module, elective module, Student Management Module, course management module, course inquiry module and so on.

Key words: college, JAVA, , Schedule classes, MySQL ,intelligence

目 录

第一章 绪论.................................................................. 1

1.1 国内外现状............................................................................. 1

1.2 论文研究主要内容................................................................. 1

1.3 论文组织介绍......................................................................... 2

第二章 关键技术介绍.................................................. 3

2.1 Java语言.................................................................................. 3

2.2 SpringMVC框架.................................................................... 3

2.3 JavaBean................................................................................. 3

2.4 HTML....................................................................................... 4

第三章 系统分析................................................................... 5

3.1系统运行环境.......................................................................... 5

3.2 系统可行性分析..................................................................... 5

3.2.1技术可行性分析............................................................................. 5

3.2.2经济可行性分析............................................................................. 5

3.2.3法律可行性分析............................................................................. 5

3.3系统的构架概述...................................................................... 5

3.3.1 系统框架描述................................................................................ 5

3.3.2系统功能构架................................................................................. 5

3.4系统功能的需求分析.............................................................. 6

3.4.1基本功能......................................................................................... 6

3.4.2扩展功能......................................................................................... 6

3.4.3系统用例图分析............................................................................. 7

3.3.4系统控制流程............................................................................... 10

第四章 系统设计......................................................... 11

4.1 设计指导思想和原则........................................................... 11

4.2数据库设计............................................................................ 11

4.2.1概念模型设计(E-R图)........................................................... 11

4.2.2数据库概念描述........................................................................... 11

4.2.3数据库设计................................................................................... 11

4.3接口设计.......................................................................................... 13

4.4系统类图设计........................................................................ 13

4.4.1系统普通用户类图设计............................................................... 13

4.4.2系统管理员类图设计................................................................... 14

4.5系统主要功能结构设计........................................................ 15

4.5.1系统普通用户功能结构设计....................................................... 15

4.5.2系统管理员功能结构设计........................................................... 17

第五章 系统实现........................................................ 19

5.1 普通用户模块....................................................................... 19

5.1.1 查看所有新闻模块...................................................................... 19

5.1.2 发布个人文章模块...................................................................... 19

5.1.3 查看个人文章模块...................................................................... 20

5.1.4修改个人信息模块....................................................................... 20

5.2 管理员模块........................................................................... 20

5.2.1查看新闻模块............................................................................... 20

5.2.2添加新闻模块............................................................................... 21

5.2.3查看用户信息............................................................................... 21

5.2.4修改用户信息............................................................................... 22

5.2.5查看普通用户发布文章............................................................... 22

5.2.6添加文章....................................................................................... 23

5.2.7修改普通用户发布文章............................................................... 23

第六章 系统测试

6.1 测试方案............................................................................... 25

6.2测试用例描述........................................................................ 25

第七章 结论................................................................ 27

第一章 绪论

我们生活在互联网发达的时代,很多行业也都依靠互联网,网络的发展推动着社会的进步。近几年我国提倡大力发展教育,将教育放在发展的第一位,所以不管是在人力、物力、财力等方面都有着极大的投入。所以近几年我国的高校也不断地改进,尤其是在招生方面,极大的提升了学生的升学率,让更多的学生能够接受良好的教育。而且在学生教育方面,开始注重学生的全面发展,所以现在学生的学习生活处理必修的课程还增加了许多的选修课程,丰富了学生的学习生活也拓宽了学生的知识面。所以学生的排课任务变得更加复杂了,教务老师不仅要考虑学生的排课是否重复,还要考虑上课地点是否冲突,这些都是最基本的,还有一些更复杂的问题需要去考虑,所以传统的排课方式是不适合现在的高校排课工作的。

1.1 研究意义

随着信息化时代的到来,我们的生活与互联网联系紧密,所以现在的高校排课应当与互联网系统相结合。在教育工作者的工作中,排课工作是十分重要的,它即要合理的安排课程,还要保证教师、教室的安排,避免发生时间或地点上的冲突。所在以往的排课工作中,这项工作十分复杂而且容易出错,所以会使教务老师的工作量骤增。后来随着信息化的到来,许多高校开始进行线上选课,即节省了人力还节省的学生浏览课程的时间,尤其是在挑选选修课时,学生有充分的时间去了解自己喜欢的课程。智能排课系统高效、快速的解决了排课问题,并在不断地使用中发现问题以达到更加合理的使用。

1.2 国内外研究现状

早在二十世纪五十年代就已经有学者提出相关的问题,并且经过几十年的探究和不同的计算方法来优化这一问题。后来学者们将排课的问题与数学模型相结合,得到了能应用于高校的排课系统,但是只能进行简单的应用,这个系统在一些学校还是存在弊端的。最主要的问题就是教室冲突的问题,最开始的系统没有考虑到教室资源不足或教室使用时间冲突的问题,所以对于一些教室资源不是十分丰富的学校来说,这个系统并不能运用,所以在后来的研究中,学者们主要对教室和时间的安排方面进行了改进。近几年在国内许多高校都采取了智能系统排课,但是很多排课系统都具有很多的独特性,并不能完全的解决高校的智能排课问题,所以本次设计主要是将其他系统的弊端进行改进,将一些排课问题进行合理化的安排,最终将通过不断地改进和测试得到一个更加合理化的智能排课系统。

1.3论文研究主要内容

高校智能排课系统是采用Java语言开发,使用MySQL数据库管理数据,主要包含了两个用户端,分别是管理员端和学生端,包含了注册登录模块、选课模块、学生管理模、查询课表模块、课表导入模块等。在这个系统中,将以往出现的问题进行改进,并增加一些能帮助学生和学校的功能,将这个排课的复杂问题智能化。通过对事实的考察进行详细的设计,完成此系统的开发任务,还对系统进行了相关内容的软件测试,检验系统的完成效果是否符合预期,从而得到一个完善的排课系统。

第二章 关键技术介绍

2.1 Java语言

Java作为开源语言中最为编程能力强的语言,融合了更多的技术特点,java的三大要素特点是封装、继承、多态、java主要包含8种基本类型,可以对所有的变量进行定义,且这几个类型又可以作为变量在对象实体中保存,因此java是面向对象的语言,开发者无需关注底层架构本身,只需要对类层进行设计,java语言是对底层c++语言的封装,因此java没有面向过程的部分体现,主要是面向对象的开发,可以面向点,也可以升华到面,基于java的23种设计模式,可以让java的开发更为简单、简洁。

2.2 SSM框架

Springmvc:springmvc主要是对控制层的请求url进行处理,在前端页面发送请求后需要找到后台对应的路由信息,根据路由的指向,然后进行业务层的处理,springmvc作为控制层可以对一些日志的拦截处理,以及一些开发错误信息日常的信息进行搜集集体处理,在接口层通常采用restful进行定义,springmvci由于时基于rest风格的,首先可以在url路径上进行参数的设定,也可以通过requestbody对参数进行对象化封装直接进行装载,springmvc类似于之前架构的struts,struts是基于对象的拦截url定义,而springmvc是基于函数的片段化拦截,因此更为的灵活,且参数化,一个是基于整个对象变量,而springmvc是基于各自的函数变量。

Spring:spring作为java的底层架构,彻底的对java的对象定义进行颠覆,采用了bean的注入方式进行新建,且可以定义动态代理类进行事务的处理,spring可以处理很多的事务,例如文件的上传,以及一些常规实体compontent类的定义,且在spring中开启了类的注解形式,通过注解的方式可以进行类的关联,且可以进行切面对类的扫描,类可以整个的都交给spring进行处理,且spring可以集成很多的框架,例如hibernate和mybatis等。

Mybatis:mybtis通常是跟一些关系型数据库进行数据的处理,特别是在mysql和sqlserver的处理上,mybatis可以对sql进行校验,在定义时通过对mapper与xml进行对于,然后通过id与参数进行关联和传输,对底层的业务进行封装处理,通过mybatis将sqlsessionfactory进行了封装,这样解放了开发者,避免了一些多线程处理事务的繁琐流程。而另一个数据库处理框架hibernate,则直接自动生成sql,在一定程度上昂也是基于面向对象开发,而mybtis作为半自动orm架构也使得底层查询更为的灵活。

2.3 Mysql介绍

Mysql作为最常用的关系型数据库,可以对数据进行格式化存储,mysql可以里面内包含一些已经封装的函数,保证了sql的正常调用以及快速查询搜索,mysql的特点在于可以对中小型数据量的数据进行快速的检索,且可以通过index索引对数据进行内部的关联设定,mysql的底层检索原理也为二叉树形式进行数据标签关联存储,mysql的数据格式与java的格式基本一致,因此在开发者选择中也会首先选择mybatis与之搭配开发,mysql无需一些用户权限角色的关联直接便于开发者上手进行查询。

第三章 系统分析

3.1系统运行环境

开发环境:

(1)采用java开发,采用SSM技术架构

(2)软件采用mysql5.7,开发工具为idea

3.2 系统可行性分析

在本次的设计中采用的时跨平台的java语言开发,采用的是ssm架构,在设计上技术都比较成熟且可以进行正常的部署和二次开发

此次开发所采用的语言和软件都是开源的,且服务器基于电脑就可以操作,在java

此次的设计都是基于本人的思想进行开发,不参与任何的盗版行为,且对于各个软件的使用和各个系统的参考都是个人自身完成

3.3系统的构架概述

高校智能排课基于三种用户角色,主要功能都在管理员端,管理员可以对课程进行设置,可以对学校的学生和教师信息进行管理,可以对班级信息以及教室信息进行记录,可以通过课程的导入以及自动排课和手动排课完成课程排课,学生和教室可以进行课程的查询。如图3.1所示。

|---|
| |

图3.1模块功能架构图

3.4系统功能的需求分析

排课包括如下基本功能。

管理员部分: 管理员可以对课程进行设置,可以对学校的学生和教师信息进行管理,可以对班级信息以及教室信息进行记录,可以通过课程的导入以及自动排课和手动排课完成课程排课

教师部分:教师主要是对自己的关联授课课程进行查询,可以对自己的课程进行导出,以及模糊搜索

学生部分: 学生主要是对自己所属的班级关联授课课程进行查询,可以对自己的课程进行导出,以及模糊搜索

系统用例图如图3.3所示。

用例图:

图3.3 系统用例图

在新增排课的过程中,在页面进行课程选择排课后,后台主要是对课程进行冲突异常处理,通过对各个环节以及因素的排课信息进行冲突分析,对课程进行录入

图4手动调课流程图
第四章 系统设计

4.1 设计指导思想和原则

在整个的排课系统过程,主要是对课程的影响因素和冲突因子进行分析,对课程中涉及到的学生、教师、教室信息进行分析,对同一时间端的,影响因子不可同时出现,做到课程的唯一性。

4.2数据库设计

根据课堂知识所学,进行E-R的设计,新闻发布系统的E-R如图4.1所示。

图4.1 新闻发布系统的E-R

4.2.2数据库概念描述

数据库是存储在一起的相关数据的集合,这些数据是结构化的;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。

4.2.3数据库设计

根据上述已经描述出的的E-R图在数据库中创建各个表,数据库中各表的结构如下:

(1)学生表主要是学生对班级的关联以及学生的学号等基本情况如下表1所示:

表1 schoolstus

|-------------|---------|--------|------|
| 数据字段 | 属性类型 | 主键限制条件 | 属性内容 |
| schstuid | Int | 是 | 整型自增 |
| schstunum | Varchar | 否 | 学号 |
| Schstupwd | Varchar | 否 | 登陆密码 |
| Schstuclaid | Int | 否 | 关联班级 |
| schstuname | Varchar | 否 | 姓名 |

(2)教室表主要是学校安排的一些教学楼里包含的教学空间如表2所示:

表2 schoolroom

|------------|---------|--------|-------|
| 数据字段 | 属性类型 | 主键限制条件 | 属性内容 |
| schroomid | Int | 是 | 命名编号 |
| schoolname | Varchar | 否 | 教室称呼 |
| schroodsec | Varchar | 否 | 所在教学楼 |

(3)学校生成的课程信息,包含绑定的班级和上课时间如表3所示:

表3 teachworks

|-----------|---------|--------|------|
| 数据字段 | 属性类型 | 主键限制条件 | 属性内容 |
| teachwid | Int | 是 | 整型自增 |
| teajiaoid | Int | 否 | 上课老师 |
| classid | Int | 否 | 排课班级 |
| weektime | Int | 否 | 星期数 |
| shijian | Int | 否 | 课程节数 |
| roomid | Int | 否 | 安排教室 |
| classname | Varchar | 否 | 上课课程 |

(4)此表为学校老师信息,主要是老师的登陆账号和老师在学校注册的基本信息如表4所示:

表4 schooltea

|-------------|---------|--------|------|
| 数据字段 | 属性类型 | 主键限制条件 | 属性内容 |
| schteaid | Int | 是 | 整型自增 |
| schteabbian | Varchar | 否 | 工号 |
| schteapwd | Varchar | 否 | 注册密码 |
| schteaming | Varchar | 否 | 姓名 |

(5)学校教学课程命名,对课程所属的信息保存,如表5所示:

表5 schoolclass

|-----------|---------|--------|--------|
| 数据字段 | 属性类型 | 主键限制条件 | 属性内容 |
| gradeid | Int | 是 | 整型自增 |
| gradename | Varchar | 否 | 管理班级命名 |
| gradedsec | Varchar | 否 | 班级属性 |

第五章 系统实现

5.1 普通用户模块

(二)用户注册登陆实现

首先输入部署地址然后输入端口,进入系统后可以看到有两个输入框,可以输入用户名和密码,在登陆时必须选择角色类型,将登陆按钮绑定enter事件,在数据转移到后台后,对密码首先进行MD5加密,32位的大写设置,然后通过equals对数据进行判断对比,若符合则进入个人操控页面,界面如下:

图1登陆注册

(三) 基础信息管理实现

管理员进入到班级管理页面,跳转到页面后首先通过Js的load方法进行数据加载,通过异步请求获取到班级第一页的数据也就是前10条数据,通过limit10进行分页,通过select * from class limit page进行分页获取,数据通过response返回,然后通过result对数据进行进行循环展示到页面,在对班级新增时,弹出新增窗口,将班级信息以及班级描述信息填写后通过form表单提交,保存到数据库,在编辑时对数据通过update更新到班级表,:

图5 班级信息管理

在学生跟教师管理中,可以对学生绑定班级,教师授课绑定班级,通过多对多建立机制,在学生新增中输入学生学号以及学生所属班级进行新增,可以对学生信息进行编辑,在教师新增时,输入教师工号以及教师信息。通过insert into student数据库sql去插入学生数据,后台需通过checkUser对用户是否存在进行校验

图6 学生信息管理

图7 教师管理

图8 教室管理

(四)自动排课实现

图9 自动排课

在排课时首先建立DFS深度搜索模型以及排课冲突模型,可以对数据进行过滤和快速优先搜寻,首先在页面中填写好班级的名称和学校教师的工号以及课程名称,可以通JS触发事件,在填写中通input绑定事件,建立光标触发机制,在光标离开输入框时对班级和教师信息进行后台搜索匹配,若可以查询到则不提醒否则提醒数据填写不存在。

在数据提交到后台后,在对数据进行校验后,进入到模型区域,通过rand方法随机一个星期和时间,将查询出教室放入Map中,通过对数据建立二叉树,结合组合数组,最后去set中匹配是否有冲突无则保存,然后回溯循环。

(五)手动调课实现

在一个特定条件的课程可以特殊处理或者是一些老师有事情需要调整课程需要手动进行课程调整,可以选择时间,然后输入一些班级、上课地点等信息,然后提交到后台进行在模型中进行筛选,若不冲突直接保存,下图所示

图10 手动调课

(六)课程查询实现

在后台教务人员端可以对各个条件下课程信息进行筛选,可以通过对试卷date进行排序,通过order by条件进行设置,将查询结果填充到resultmap中,然后对数据返回到页面,界面如下:

图11 课程查询

(七)学生端课程查询实现

在本系统中,学生通过班级进行关联,课程通过班级进行关联,因此可以对学生在查询课程时,通过查询到此学生的所在的班级,然后left join左连接进行查询,通过select * from course left jin student on 条件为班级一致对课表进行返回。

图12 学生课程查询

(八)教师端课程查询实现

在本系统中,教师关联课程,课程通过班级进行关联,因此可以对教师编号在查询课程时通过left join左连接进行查询,对课表进行返回。可以导出课表信息,通过POI技术查询出所有的课程后,通过表格设定成文件流返回浏览器

图13 教师课程查询

相关推荐
paopaokaka_luck6 分钟前
[371]基于springboot的高校实习管理系统
java·spring boot·后端
以后不吃煲仔饭18 分钟前
Java基础夯实——2.7 线程上下文切换
java·开发语言
进阶的架构师19 分钟前
2024年Java面试题及答案整理(1000+面试题附答案解析)
java·开发语言
The_Ticker24 分钟前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
大数据编程之光1 小时前
Flink Standalone集群模式安装部署全攻略
java·大数据·开发语言·面试·flink
B站计算机毕业设计超人1 小时前
计算机毕业设计SparkStreaming+Kafka旅游推荐系统 旅游景点客流量预测 旅游可视化 旅游大数据 Hive数据仓库 机器学习 深度学习
大数据·数据仓库·hadoop·python·kafka·课程设计·数据可视化
爪哇学长1 小时前
双指针算法详解:原理、应用场景及代码示例
java·数据结构·算法
ExiFengs1 小时前
实际项目Java1.8流处理, Optional常见用法
java·开发语言·spring
paj1234567891 小时前
JDK1.8新增特性
java·开发语言
繁依Fanyi1 小时前
简易安卓句分器实现
java·服务器·开发语言·算法·eclipse