自动排课管理系统(源代码+论文+开题报告)

一、题目摘要

题目简要说明:
选排课系统功能的设计上,选排课系统可以分为登录、排课和选课3个子系统。登录子系统区分排课者(也即系统的管理者)、教师和学生这三者的不同身份,给出不同的权限,在页面中根据身份判断其相应具有的功能来使用这套系统。排课子系统主要供排课者使用,排课者可以在这里进行一切与排课有关的活动。选课系统主要供学生选课使用,在这里可以进行与选课有关的活动;教师可在教师反馈系统中对排课者提出反馈意见,供排课者在排课时可参考使用。

二、题目背景

1、国内国外发展

随着Internet的逐步发展,网络不仅仅是科研部门学术交流的平台,在其他的方面上也得到了很大的发展,尤其是在校园网的分支教务管理上,同时在教务管理的主要分之选课排课系统的应用上得到了较大的发展,国外针对此问题展开的研究较早。1963年C C Gotlieb 在他的文章《The Construction of Class-Teacher Time-Tables》中提出了课表编排的数学模型。这篇文章引起了人们对于选排课问题的重视。1976年S Even在其论文《The Complexity of Timetable And Multi Commodity Flow Problem 》中,第一次证明了课表问题是NP完全的。S Even的论证进一步地将人们对课表问题复杂性的认识提高到理论高度。

而国内对排课问题的研究较晚。1984年,清华大学在《清华大学学报》上发表了林漳希和林尧瑞在该课题上的实验性研究成果《人工智能技术在课表编排中的应用》。

如今国内软件市场上也有很多通用型的排课软件,例如“排课无忧” 、“排课高手”等等。这些通用软件往往无法满足学校的某些特殊要求。因此,针对学校的一些特殊要求,我设计并开发了基于校园网之子系统选排课系统。

2、需求背景分析

网上选排课系统是针对在校学生和教师使用,从学生的角度来说,由于学校教学制度的改革,现在大部分高等学校开始实行的是学生的自主选课模式,而传统的教学模式:学生按照学校安排好的课程上课已经不能适应新型的教学方式,如果按照传统方式宣科,一方面浪费了大量的人力和物力;另一方面浪费时间以及在人为的统计过程中不可避免出现的差错的情况。从教师的角度来说,由于教师提出代课申请完成课程发布的工作,因此通过网上进行课程发布能大幅度的减少教师的工作量,减少错误的发生几率。作为教师,只要通过自己的电脑来操作即可,不必于奔波在教务处和办公室之间。基于此等原因从而提出网上选排课系统的研究进行实施与探讨。

3、主要技术JSP语言和Oracle数据库

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。 JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。 在传统的网页HTML文件中加入Java程序片段(Script let)和JSP标记(tag),就构成了JSP网页(扩展名为.jsp)。

Oracle数据库相对于其他数据库也有很多优点:

(1)无范式要求,可根据实际系统需求构造数据库。

(2)采用标准的SQL结构化查询语言。

(3)具有丰富的开发工具,覆盖开发周期的各阶段。

(4)支持大型数据库,数据类型支持数字、字符、大至4GB的二进制数据,为数据库的面向存储提供数据支持。

(5)具有第四代语言的开发工具(SQLformS、SQLREPORTS、SQL*MENU等)。

(6)具有字符界面和图形界面,易于开发。

(7)通过SQL*DBA控制用户权限,提供数据保护功能,监控数据库的 运行状态,调整数据缓冲区的大小。

(8)分布优化查询功能。

(9)具有数据透明、网络透明,支持异种网络、异构数据库系统。并行 处理采用动态数据分片技术。

(10)支持客户机/服务器体系结构及混合的体系结构(集中式、分布式、 客户机/服务器)。

(11)实现了两阶段提交、多线索查询手段。

正因于此,所以采用此数据库编程语言。

4、题目所采用的主要技术

服务器系统为Linux系统,前台采用JSP语言,后台采用sqlserver2000/Oracle数据库。

5、所应用技术的难点

(1) 选课系统设计

根据功能的不同可以将本系统划分为三个主模块,九个子模块:

一、用户登录子系统

操作对象:学生、教师、管理员。
用户登录子系统功能:用户登录时,首先要选择自己登录的类型,才能实现自己所需求的服务功能。即用不同身份登录系统会拥有不同的权限。
用户登录操作流程:首先用户应先输入账号(学号、教师号、管理员号)和密码,再选择登录的类型,如果相应的账号和密码正确,则顺利进入系统,如果账号或密码不正确,则提示用户登录失败。

二、学生选课子系统

操作对象:学生。
学生选课子系统功能:学生可以查询课表、查询课程详细信息(课程,教师)、选课和退课等操作。
学生选课操作流程:学生登录验证成功后,进入学生选课子系统,点击相应的课程号就可以直接选课。如果输入课程号或教师号,可以进行可选课程查询,同时,自己的选课表会显示出来,在选课版面还可以进行密码修改,退出系统。除此之外,学生还可以进入课表查询、课程查询和选课查询版面进行相应操作。

三、课程管理子系统

操作对象:管理员。
课程管理子系统功能:管理员可以进入排课系统,还可以进行课表查询、课程查询、选课查询,但不具有学生拥有的选课功能。
管理员操作流程:管理员登录验证成功,进入系统,即可以进行相应的操作,如进入排课系统,可以进行排课、发布选课信息、对学生的选课信息进行确认。

(2)排课系统编码与实现

首先,排课时设置了排课优先级:优先级最高的是公共课,因为公共课一般合班上课的班级个数较多,最容易产生时间冲突,优先级次之的是每周平均课时最多的课程,同样,因为平均课时多,选择时间时进行排课冲突的机会就大,最后是总课时最多的课程。

其次,产生的时间是在教师和所有上课的班级共同的空闲时间集合中产生,并且尽量保证时间选择上的均匀性,防止一周几次课集中于某一段时间。

再次,对教师的选择,一方面考虑到教师的时间限制(由教师确定一学期中第几周,每周哪天哪节课没空),另一方面,对教师设置排课级别,随着排课时间的增多,级别值就增大,从而再次被选择排课的几率就减小(此时要求同一门课程有多个教师讲授)。
最后,教室也设置了排课级别,同教师类似,这样便可以保证教室资源会得到合理而均匀有效地利用。
流程图如下:

(3)设计及连接数据库
数据库设计是本系统的起点,它的分析结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。它的基本任务是回答“系统必须做什么”的问题。至此,本阶段的主要任务有明确系统的开发目的,分析系统功能的具体要求,由此画出系统的数据库的E-R图。

三、题目任务

1、主要要求

开发一个校园网门户网站其中一个子系统之学生选课排课系统,由选课信息、教室信息根据排课原则生成。
选课信息数据库中包含:学生姓名、课程名称、每周所需课时、所在班级、任课教师姓名
教室信息数据库包含:教室名称、教室容纳人数
要求生成的课程表需要包含:班级名称、课程名称、上课时间、教室名称、任课教师姓名

2、时间要求

3月12日至3月16日。提交开题报告。

3月16日至5月中旬,完成毕业设计。

六、题目需求分析

1、功能需求分析

A、根据学生的所学专业、学校的教学大纲(开设的课程)、生成每个学生的选课信息;

B、学生的选课信息要求符合课程体系的实际需求,即先开课没有选修完成时,不允许选修后序课程,选修课程在专业方向上要根据专业类别设置课程的连带关系;

C、学生在累积有5门课,没拿到学分时,不允许选择新课。

D、学生未缴纳学费超过两门次时,不允许选课;

E、排课系统要根据教室情况、学生人数、每个学生选课的情况、教师的授课情况等条件自动排课、手动排课、半自动排课;可以设置不同的排课优先级。

2、生成结果标准

有良好的交互界面
1)新用户可以成功注册(以学号注册)
2)用户可以成功登陆
3)用户可以成功进行相关操作(选课操作)
4)管理员可以成功登陆管理员界面(及相关操作)

3、所需开发工具
JSP语言(掌握程度一般)
Eclipse,JBuild (熟练掌握)
Oracle数据库SQL语言(一般了解)
Linux系统web服务器(初步了解)

4、需要的主要测试条目
(1)用户登录界面(题目:学生选课排课系统)
(2)学生登录功能
(3)管理员登录功能
(4)学生选课功能
(5)管理员对学生选课信息进行修改与删除功能
(6)管理员上传选课信息
(7)根据选课信息进行排课

七、题目计划安排
1、开发进度,以周为单位进行安排。(只需安排系统开发阶段的内容,论文写作不算在内)

开发时间 开发内容 完成情况
第一周(3.12—3.18) 开题报告

第二周(3.19—3.25) 需求分析、概要设计、数据库设计

第三周(3.26—4.1) 总体设计开始

第四周(4.2—4.8) (选课系统实现阶段)用户登录模块

第五周(4.9—4.15) (选课系统实现阶段)学生选课子系统

第六周(4.16—4.22) (选课系统实现阶段)课程管理子系统

第七周(4.23—4.29) (排课系统实现阶段) 教师管理子系统

第八周(4.30—5.6) (排课系统实现阶段)教室管理子系统

第九周(5.7—5…13) (排课系统实现阶段)课程安排子系统

第十周(5.14—5.20) (排课系统实现阶段)排课管理子系统

第十一周(5.21—5.27) 测试

第十二周(5.28—6.3) 论文

2、测试计划(测试内容条目,时间,测试结果)

测试条目 时间 测试结果

用户登录模块
学生选课子系统
课程管理子系统
教师管理子系统
教室管理子系统
课程安排子系统
排课管理子系统

八、参考文献
1、主要的参考书籍和资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/425040.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Scratch游戏-史诗忍者7免费下载

小虎鲸Scratch资源站-免费少儿编程Scratch作品源码,素材,教程分享网站! 作品描述: 在Scratch版本的《史诗忍者7》中,你需要穿越关卡,击败敌人并收集33个水果。通过灵活的操作和精准的攻击,逐步闯过重重难关。游戏中提供了丰富的技…

C++3D迷宫

目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。 程序 #include <iostream> using namespace std; void printmaze(char strmaze[5][5][5]) {cout << "-----" << endl;int i 0;int ia 0…

Java后端框架---Spring

目录 一.Spring是什么&#xff1f; 二.Spring Hello World 搭建 三.XML配置bean管理 1.bean标签 2.依赖注入 3.依赖注入的补充 四.注解配置bean管理 1.开启注解扫描 2.使用注解对类进行配置 3.自动注入 五.面向切面编程AOP 1.概述 2.通知 六.spring事务管理 1.数据库…

网络原理(3)—— 应用层、传输层(TCP)

1. 应用层 日常开发中最常用到的一层&#xff0c;主要涉及到两种情况&#xff1a; 1) 使用现成的应用层协议 2) 自己定义应用层协议 1.1 自定义应用层协议的流程 1. 明确前后端交互过程中需要传递哪些信息 实例&#xff1a;开发一个外卖软件 打开软件&#xff0c;首先需要展…

Linux 文件 IO 管理(第一讲)

Linux 文件 IO 管理&#xff08;第一讲&#xff09; 回顾 C 语言文件操作&#xff0c;提炼理解新创建的文件为什么被放在可执行文件的同级目录下&#xff1f;上述 log.txt 何时被创建&#xff1f;又是谁在打开它&#xff1f;那文件没有被打开的时候在哪里&#xff1f;一个进程可…

css 个人喜欢的样式 速查笔记

起因&#xff0c; 目的: 记录自己喜欢的&#xff0c; 觉得比较好看的 css. 下次用的时候&#xff0c;直接复制&#xff0c;很方便。 1. 个人 html 模板&#xff0c; 导入常用的 link 设置英语字体: Noto导入默认的 css使用网络 icon 图标导入 Bootstrap css 框架 html <…

【Python】谷歌浏览器总是自动更新,使用selenium跟chromedriver版本不匹配怎么办?

我发现&#xff0c;我的电脑对谷歌浏览器的禁止自动更新无效&#xff0c;哪怕是在任务计划程序里&#xff0c;禁止谷歌浏览器更新&#xff0c;也没有用。而且有时候点开右上角的三个点&#xff0c;也会自动更新版本。 但是往往chromedriver的更新版本更不上浏览器的版本哇&…

RPC远程调用的序列化框架

序列化框架对比&#xff1a; 一、Java Serialiazer 字段serialVersionUID的作用是为了在序列化时保持版本的兼容性&#xff0c;即版本升级时反序列化仍保持对象的唯一性。 //序列化 ByteArrayOutputStream bout new ByteArrayOutputStream(); ObjectOutoutStream out new O…

测试-Gatling 与性能测试

Gatling 与性能测试详解 一、什么是性能测试&#xff1f; 性能测试是一种软件测试类型&#xff0c;旨在评估系统在负载下的响应时间、吞吐量和资源利用率等性能指标。通过性能测试&#xff0c;开发者和运维团队能够识别出系统的瓶颈、优化系统性能&#xff0c;并确保其在实际…

使用kkFileView的几个问题

经测试&#xff0c;可以正常的预览&#xff1a;pdf&#xff0c;png&#xff0c;pptx&#xff0c;psd&#xff0c;zip&#xff0c;word&#xff0c;dcm(医学片子 dr ct等) 部署发布&#xff08;Linux&#xff09; 一、上传到服务器 上传jar包&#xff08;或者官方社区提供的包…

【Linux】精通GDB:打造你的Linux调试超能力

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;C从入门到精通 目录 一&#xff1a; &#x1f525; 什么是GDB / CGDB 二&#xff1a; &#x1f525; CGDB的安装 &#x1f34a; Linux-centos 三&#xff1a; &#x1f525; cgdb的使用背景 &#…

深度剖析iOS渲染

iOS App 图形图像渲染的基本流程&#xff1a; 1.CPU&#xff1a;完成对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码、图像的绘制。 2.GPU&#xff1a;GPU拿到CPU计算好的显示内容&#xff0c;完成纹理的渲染&#xff0c; 渲染完成后将渲…

界面控件DevExpress中文教程:如何PDF图形对象的可见性?

DevExpress拥有.NET开发需要的所有平台控件&#xff0c;包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress 近期重要版本v24.1已正式发布&#xff0c;该版本拥有众多新产…

STM32与ESP8266的使用

串口透传 “透传”通常指的是数据的透明传输&#xff0c;意思是在不对数据进行任何处理或修改的情况下&#xff0c;将数据从一个接口转发到另一个接口。值得注意的是要避免串口之间无限制的透明&#xff0c;可以采用互斥锁的方式进行限制使用方法 对USART1和USART3(用他俩举例…

word文档无损原样转pdf在windows平台使用python调用win32com使用pip安装pywin32

前提&#xff1a; windows环境下&#xff0c;并且安装了office套装&#xff0c;比如word,如果需要调用excel.也需要安装。在另外的文章会介绍。这种是直接调用word的。所以还原度会比较高。 需求&#xff1a; word文档转pdf,要求使用命令行形式&#xff0c;最终发布为api接口…

基于高通主板的ARM架构服务器

一、ARM架构服务器的崛起 &#xff08;一&#xff09;市场需求推动 消费市场寒冬&#xff0c;全球消费电子需求下行&#xff0c;服务器成半导体核心动力之一。Arm 加速布局服务器领域&#xff0c;如 9 月推出 Neoverse V2。长久以来&#xff0c;x86 架构主导服务器市场&#…

QTreeView模糊查询

本文代码效果如下&#xff1a; 本文代码&#xff1a; https://download.csdn.net/download/Sakuya__/89759410https://download.csdn.net/download/Sakuya__/89759410 代码之路 MainWindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #incl…

基于Ant-Design-Vue设计的配置化表单

适用vue 3.4 版本以上 在日常的前端开发中&#xff0c;表单开发必不可少&#xff0c;尤其是在遇到一些大型的复杂的表单&#xff0c;这往往会变成一个痛点。于是就想着开发一个可以list来配置的表单组件。 先上组件代码 <!-- 该组件 VUE 版本在 3.4 以上可使用--> <…

【QT】定时器使用

文章目录 关于 Qt 定时器使用的注意细节总结实例-检查工具使用周期时间是否合理UI设计头文件 remind.h源文件 remind.cpp实现效果 关于 Qt 定时器使用的注意细节总结 一、创建与初始化 使用 QTimer 类来创建定时器。可以在构造函数中指定父对象&#xff0c;确保定时器在正确的…

JavaDS —— B树

前言 本章节将带领大家进入B树的学习&#xff0c;主要介绍B树的概念和B树的插入代码的实现&#xff0c;删除代码不做讲解&#xff0c;最后简单介绍B树和B*树。 B树的概念 1970年&#xff0c;R.Bayer和E.mccreight提出了一种适合外查找的树&#xff0c;它是一种平衡的多叉树&…