首页 毕业论文--基于java的教务排课系统设计

毕业论文--基于java的教务排课系统设计

举报
开通vip

毕业论文--基于java的教务排课系统设计毕业论文--基于java的教务排课系统设计 1 引言 1.1 开发背景 随着信息技术的飞速发展,各个行业的信息化势在必行。科技的进步大大地提高了生产率。作为高校,如何才能提高办学效率,更好地完成教学任务,跟上社会发展步伐,这是一个摆在教学工作者面前的一个迫切的问题。应用信息化来改造传统的教学管理模式是一个重要途径 1 。 近几年来,随着各高校办公自动化工作的推进,教务管理自动化也被摆上了日程。在教务工作中占有很大比重的一项就是每学期的课程表排定工作。由于教工、教室和设备的相对紧张,如何进行合理地安排和分配,...

毕业论文--基于java的教务排课系统设计
毕业论文--基于java的教务排课系统设计 1 引言 1.1 开发背景 随着信息技术的飞速发展,各个行业的信息化势在必行。科技的进步大大地提高了生产率。作为高校,如何才能提高办学效率,更好地完成教学任务,跟上社会发展步伐,这是一个摆在教学工作者面前的一个迫切的问题。应用信息化来改造传统的教学管理模式是一个重要途径 1 。 近几年来,随着各高校办公自动化工作的推进,教务管理自动化也被摆上了日程。在教务工作中占有很大比重的一项就是每学期的课程 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 排定工作。由于教工、教室和设备的相对紧张,如何进行合理地安排和分配,从而充分利用教学资源是我们不得不面对的问题 2 。而人工进行排课不仅任务重,效率低,而且易出错,难于维护,想要排出一张各方面都满意的课表非常困难。并且随着高校规模的扩大手工排课的难度和工作量呈几何级数增长 3 。 在实际的应用中,很多研究者都提出了各种解决排课问题的方法,由于排课问题的复杂性,还没有找到有效的算法能获得NP完全问题的最优解。因此,如何运用近似算法和新的软件技术来降低排课问题的计算复杂度,仍然是颇具挑战性的研究方向 4 。 排课管理系统是利用数据库管理系统开发的一种应用系统,其开发主要包括数据库的建立,充分满足正常的题库管理的前提下,提供了多角度的题库信息查询和题库信息分析报表,使学校管理人员可以随时掌握学校的排课情况,进一步 指导学校的教学。真正实现了业务一体化,为学校全方位的信息化管理奠定了基础 5 。 传统的人工排课使用手工操作存在许多弊端,如重复劳动严重、效率低下、且不能达到资源的最优化配置等,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。最令人担心的问题就是――出现教室资源冲突或教师资源冲突的情况,而且工作繁琐,工作量巨大,尤其是在给大学校园进行排课时出现的问题更多 6 。当前高校教务管理所涉及到的信息资料数量大、类型多,还可能带有大量的统计输出,同时学校规模的不断扩大和招生人数的逐年攀升导致传统的排棵手段已无法满足现代化管理的要求 7 。 在教学计划的不断完善和各高校校园网建立的大背景下,设计满足高校教务要求的排课系统显得十分必要。而据了解,排课管理是高校教务处重复性比较强且急需得到解决的工作, 且排课系统有安全性要求高、交互性强、处理数据量大等人工难以实现的特点 8 。 因此设计一个基于校园网络的人工智能化且操作简便的排课系统是高校教务管理信息系统实现的首要条件,同时也是一大难点,因为排课管理要求综合考虑教师、课程、班级、教室、时间等诸方面的因素,统筹兼顾,使课表既符合教学规律,又能够充分利用现有资源使其最大限度地发挥作用 9 。 1.2 国内外研究现状 早在20世纪50年代末,国外就有人开始研究课表编排问题。1963年,Gotlieb曾提出一个课表问题的数学模型,但由于排课问题易受实际问题的影响,求解结果也不理想 10 。20世纪70年代,美国人S.Even等就证明了排课问题是一个NP完全问题,其算法的时间复杂度呈指数增长。S.Even的论证正式 确立了排课问题的学术地位,把人们对排课问题的认识提高到了理论高度 11 。此外,有些文献试图从图论的角度来求解课表问题,但是图的染色体问题也是NP完全问题,只有在极为简单的情况下才可以将课表编排转化为二部图匹配问题 12 。 在国内,在20世纪80年代初期,国内学者开始用从模拟手工排课,也有人工智能构建的专家系统等等,具有代表性的有:南京工学院的UTSS A University Timetable Seheduling System 系统,大连理工大学的智能教学组织管理与课程调度系统等。这些系统大都是模拟手工排课过程,以“班”为单位,运用启发式函数来进行编排的。但是这些课表编排系统往往依赖于各个学校的教学体制,不宜于进行大量推广 13 。 2 相关技术介绍 2.1 JSP简介 JSP应用程序不同于其他语言开发的单一性程序。使用Jsp编程时,必须首 先确定应用程序如何与用户交互,如鼠标单击,用户必须编写代码控制这些事件 的响应方法。 使用JSP开发数据库应用程序的一般步骤如下所示: 建立数据库 建立用户界面 编写代码 调试运行 编译应用程序 发布应用程序 界面设计 控件的位置 界面元素的一致性 保持界面的简明 使用颜色和图像:增加视觉的感染力 图像和图标:增加应用程序的视觉上的趣味 选取字体 JSP应用程序的结构: 由于JSP应用程序是基于对象的,所以应用程序的代码结构就是该程序 在屏幕上物理表示的模型。根据定义,对象包含数据和代码。在屏幕上看到的窗 体代表属性,这些属性定义了窗体的外观和内在特性 14 。 2.2 SQL Server 2000简介 本系统所用SQL Server 2000 的特性包括: 1.Internet 、部署和使用。SQL Server 2000 个人版 1 高性能设计,可充分利用Windows NT的优势。 2 系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。 3 强壮的事务处理功能,采用各种方法保证数据的完整性。 4 支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。SQL Server以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台 。Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的 Tomcat 是一个小型的轻量级应用服务器,当在一台机器上配置好Apache 服务器,可利用它响应对6>HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat具有处理HTML页面的功能,它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式 。 3 需求分析 3.1 系统的主要功能 1 掌握学校所有的课程和教师的信息。包括每门课程的时间、班级以及任课老师的姓名等。 2 针对不同的人员授予不同的权限。提供灵活的浏览、查询功能。可以查看某个系、某个班级所有课程的信息。 3 可以对一个或多个班级进入课程管理与排课表管理,可以不限次的生成该班级课程表。 4 可以对课程进行变动管理。既可以手工排课,又可以实现自动排序功能。 5 帮助系统维护可以实现:操作日志、重新登录、打印设置(包括统计各种报表及打印等)、退出等操作。 6 提供一种或多种课程表输出功能,并使用活动的 模板 个人简介word模板免费下载关于员工迟到处罚通告模板康奈尔office模板下载康奈尔 笔记本 模板 下载软件方案模板免费下载 输出功能,输出样式可以由用户自定义。 7 实现功能全面化,由于每个学校或班级的每天课程数目或时间都不太一样,实现智能计算总课程数目和管理对应的时间段,并且根据每门课程的独立分布式来进行排列(例如:大学语文自动排列的分布方式可以是周一至周六,那么系统就会自动将其平均分布在周一至周六这些天里)。 8用户管理:设置两个级别用户:管理员和普通用户,管理员有权限操作系统中的所有数据,普通用户只能以执行查询,输出之类的功能,无法对系统进行实质性的操作,用户使用本系统之前必须先通过身份认证(用户级别、用户名和密码,密码输入有次数限制,连续三次输入错误密码则锁定该用户)。 3.2 排课的约束条件 在我的排课系统,主要对不同类型课程进行等级划分,排列出课程的排课优先级别,通过优先次序对不同类型的课程使用不同的算法进行排课,能够非常方便地处理各种排课约束条件的限制。 例如教师和教室冲突、班级冲突、教师上课时间和地点选择、分层次教学、单双周排课、一课多教师教学和课程连上等各种各样的约束。同时该系统还能够非常迅速地得到排课结果,例如排一千门课只需几分钟时间等一系列问题。 3.3 系统所需硬件环境 (1)处理器:建议使用酷睿 2 (2)内存:1G以上 3.4 系统所需软件平台 (1)操作系统:Windows XP (2)数据库:Access 2003 (3)Web 服务器 :IIS 6.0 (4)浏览器:IE 7.0,推荐使用360安全浏览器 4 系统总体设计 4.1 设计思想 本系统采用各班级独立划分管理,所有教师均可为任何班级服务,各班级根据每天课程数目来进行自动排序,同时各教师允许教学多门课程,因此为了每名教师配置了时间占用表,只要与班级对应的时间空间表未被占用,都可以参与排课,并根据用户定义的要求排出课程。 数据管理类:由于班级,时间,教师,课程等信息都需要一个活动的管理过程,因为在节省资源的情况下,将各数据所需要的代码合并在一起进行编写和使用。 图4.1 数据管理 4.2 系统功能模块划分 教务排课系统在功能上分四个模块,如图4.2: 图4.2 系统功能模块划分 4.3 数据库结构的设计 利用SQL Server2000来管理排课资源、排课约束条件等信息,利用数据库技术来实现设置排课优先级、课时和时间段的匹配以及处理排课资源的冲突,从而实现自动排课的目的。 主要包含的数据实体有:专业、课程、教师、教室、课程表等。实体的具体属性如下: (1)专业信息包括:专业代码、专业名称; (2)课程信息包括:课程代码、课程名称、课程类型、总学时、每周课时、任课教师、开课院系、授课班级(专业)、上课人数、约束条件等信息; (3)教师信息包括:教师代码、教师名称、所属院系、约束条件等; (4)教室信息包括:教室代码、教室名称、教室类型、教室地址、容纳人数等; (5)课程表信息包括:课程代码、专业代码、教师代码、教室代码、上课时间等。 5 系统详细设计 5.1 登录系统设计 设计说明:进入主界面后,等待操作用户输入用户名和密码,在输入之后按确定进入,验证用户名和密码,实现流程: 1 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 数据库中有无管理员账号,如果有,则等待用户输入用户名和密码,否则按程序本身自动执行插入命令,新建一个管理员用户,并等待用户输入. 2 验证用户名和密码是否正确,错误次数不能超过三次,超过三次则退出系统登陆界面 3 当验证通过后,检测该登陆用户的管理权限,并设置变量传值给主窗体 图5.1 登录系统流程图 5.2 主界面及课表生成设计 班级管理设计 模块设计说明:班级的操作部分是排课程序正常执行的重要部分,班级的添加不允许有同名的班级出现,而修改也不能做到修改班级名,班级名称将作为不可修改的数据部分,而删除部分,在删除之前必须保证该班级的课表是否已经生成,如果是,则需要注销课程表,这样做是让该班级生成的课表占用教师空间的部分全部返回,这样不会使教师的空间被反复占用,而最终导致错误发生。 图5.2 班级管理流程图 班级课程处理设计 图5.3 班级课程处理流程图 模块设计说明:课程数据的添加,修改或删除都会影响到已生成课程表的返回,因为在操作之前必要保证课程表属于未生成状态,如果当前为生成状态,则 需要注销课程表,这样才可以继续操作。 注:已生成课程表的返回:由于课程表排列好后,对应的课程后教师的排课占用表都会有标记标明,如果这时修改了某此数据后,这教师的占用表并没有恢复到未生成状态,这样就会导致不可预知的错误发生。 课表生成部分设计 图5.4 排课循环流程图 模块设计说明:此处将执行的数据分成很多小部分来执行,这样做可以在测试中便如发现问题,因为排课系统的要求非常高,所以在程序实现方面是以由简到繁的过程。 1 排课中要求的每周课程数相加不能超出定义的课表范围,否则也将会出现死循环。 2 列出对应课程教师的未被占用的排课列表和班级的课程占用表。 3 穷举法列出以上两者之间的共通点,可用点。 4 最后通过循环随机选择来实现课程的定位与排列。 5 课程定位中不允许每天有相同的课程重复,并按规定来执行按什么样的格式来排列,例如两节连排,也就是说可以把该课程在同一天排在一起,可以实现两节课连上,这是大学课表里最常用的一个功能。 图5.5 课表生成流程图 报表输出功能设计 模块设计说明:此处采用了两种输出方式,第一种是普通的报表方式输出,可以实现一般的打印预览等功能,第二种则是采用模板功能,用户可以自由修改模板,前提是不可以更改数据位,其它的部分无论如何修改都没有关系。 图5.6 报表输出流程图 5.3 数据表设计 在使用SQL server创建“排课管理系统”数据库系统中需要建立的数据表如下所示: 1 课程信息 表5.1 课程信息表 字 段 数据类型 字段大小 必填字段 索引 允许为空 课程名 文本 50 否 有 无重复 否 课节数 数字 长整型 是 无 是 每周课数 数字 长整型 是 无 否 需要周数 数字 长整型 是 有 有重复 否 任课老师 文本 50 否 无 否 两节课累排 文本 50 否 无 否 课程分布 文本 50 否 无 否 所属班级 文本 50 否 无 否 2 用户登录 表5.2 系统登录表 字段 数据类型 字段大小 必填字段 索引 允许为空 用户名 文本 50 是 无 否 密码 文本 50 否 有 无重复 否 权限 文本 50 是 无 否 3 课程名 表5.3 课程名表 字 段 数据类型 字段大小 必填字段 索引 允许为空 课程名 文本 4 否 有 无重复 是 教师姓名 文本 50 是 无 否 4 临时生成表 表5.4 临时生成表 字段 数据类型 字段大小 必填字段 索引 允许为空 时间段 文本 50 是 无 是 星期一 文本 50 否 无 是 星期二 文本 50 否 无 是 星期三 文本 50 否 无 是 星期四 文本 50 否 无 是 星期五 文本 50 否 无 是 星期六 文本 50 否 无 是 星期日 文本 50 否 无 是 所属班级 文本 50 否 无 是 自动编号 自动编号 是 无 否 5 课程占用表 表5.5 课程占用表 字段 数据类型 字段大小 必填字段 索引 允许为空 班级 文本 50 是 无 否 占用 文本 50 否 有 无重复 否 6 系统日志 表5.6 系统日志表 字段 数据类型 字段大小 必填字段 索引 允许为空 用户名 文本 50 是 无 否 时间 文本 50 否 无 否 操作记录 文本 255 否 无 否 7 系统设定 表5.7 系统设定表 字段 数据类型 字段大小 必填字段 索引 允许为空 每天课数 数字 长整型 是 无 否 5.4 其它模块设计 此处几个模块是经过资源优化将其与班级管理整合在一起的,此处工作流程基本上与班级管理的流程相同。 6 系统的实现 6.1 调课功能的实现及设计说明 由系统自动排课生成的并不一定能完全达到用户所想需要的效果,虽然在程序中解决了系统冲突的出现,但是因为某些原因而出现临时的原因都需要进行调课,因此排课系统中除了自动生成课表还必须有很灵活的调课功能才能让系统更完整,也方便使用。 图6.1 调课流程图 此处调课是事先获取系统有用资源空间,并在图表中进行背景色变色显示,提示用户该门课程可以调动至变色显示的地方,主要是通过班级的课程占用与该教师的排课占用情况进行对比,寻找有利和适用的位置,并等待用户进行调课操作。 执行调课:在进行以上操作后,计算机自动等待用户选择系统列出的调课点,在选择某调课点后,系统自动清除数据库的中该课程的教师与当前班级该处资源占用情况,并同时清除图表中的资料,将其重新放置到新位置,并修改新地点的资源占用情况,最后将图表的可调位置背景色还原回正常状态。 6.2 核心代码 系统自动排课代码: //Class.java package com.youngmaster; public class Class private String name;//班级名称 private int id;//班级号 private int number;//班级人数 private Sequence cs; public Class public Class int id,String name,int number this.name name; this.number number; this.id id; setCs new Sequence ; public String getName return name; public void setName String name this.name name; public int getNumber return number; public void setNumber int number this.number number; public int getId return id; public void setId int id this.id id; public Sequence getCs return cs; public void setCs Sequence cs this.cs cs; //ClassDemo.java package com.youngmaster; import java.io.*; import ; import ndar; import jxl.*; import jxl.write.*; public class ClassDemo public void print throws Exception WritableWorkbook book Workbook.createWorkbook new File "Teaching.xls" ; WritableSheet sheet book.createSheet "第一页",0 ; Label[] label new Label[5]; label[0] new Label 0,0,"星期" ; label[1] new Label 1,0,"日期" ; label[2] new Label 2,0,"剑锋" ; label[3] new Label 3,0,"秋静" ; label[4] new Label 4,0,"秦少游" ; for Label l:label sheet.addCell l ; //输出日期 for int i 1;i 365;i++ Calendar cal Calendar.getInstance ; cal.add Calendar.DATE,i-1 ; double m cal.get Calendar.DAY_OF_WEEK ; er number new er 0,i,m ; sheet.addCell number ; Date date cal.getTime ; Time dt new Time 1,i,date ; sheet.addCell dt ; book.write ; book.close ; public static void main String[] args ClassDemo cd new ClassDemo ; try cd.print ; catch Exception e Sytln e ; //ClassRoom.java package com.youngmaster; public class ClassRoom private String name;//教室名称 private int id;//教室号 private int number;//教室容纳人数 public ClassRoom public ClassRoom int id,String name,int number this.name name; this.id id; this.number number; public String getName return name; public void setName String name this.name name; public int getId return id; public void setId int id this.id id; public int getNumber return number; public void setNumber int number this.number number; //Course.java package com.youngmaster; public class Course private String name;//课程名称 private int times;//课时数 private int timesWeek; private int id;//课程号 public int getId return id; public void setId int id this.id id; public int getTimes return times; public void setTimes int times this.times times; public Course public Course int id,String name,int times,int timesWeek this.name name; this.id id; this.times times; this.timesWeek timesWeek; public String getName return name; public void setName String name this.name name; public int getTimesWeek return timesWeek; public void setTimesWeek int timesWeek this.timesWeek timesWeek; //OrderCourse.java package com.youngmaster; import edList; import om; import Set; public class OrderCourse private Teacher t1, t2, t3; private Class c1, c2, c3; private Course cs1, cs2, cs3; private ClassRoom cr1, cr2, cr3; private LinkedList csList; private LinkedList crList; private LinkedList tList; private LinkedList cList; // 已经排成的时间段 LinkedList sub1; LinkedList sub2; LinkedList sub3; // 设置老师 t1 new Teacher 1001, "剑锋" ; t2 new Teacher 1002, "秋静" ; t3 new Teacher 1003, "秦少游" ; tList new LinkedList ; tList.add t1 ; tList.add t2 ; tList.add t3 ; // 设置上课班级 c1 new Class 0601, "JAVA0601班", 20 ; c2 new Class 0602, "JAVA0602班", 25 ; c3 new Class 0603, "JAVA0603班", 19 ; cList new LinkedList ; cList.add c1 ; cList.add c2 ; cList.add c3 ; // 设置课程 cs1 new Course 1001, "javabase", 29, 6 ; cs2 new Course 1002, "jsp", 35, 6 ; cs3 new Course 1003, "oracle", 51, 6 ; csList new LinkedList ; csList.add cs1 ; csList.add cs2 ; csList.add cs3 ; // 设置上课教室 cr1 new ClassRoom 1001, "实验楼303", 50 ; cr2 new ClassRoom 1002, "南方商务大厦", 40 ; cr3 new ClassRoom 1003, "先锋公司", 30 ; crList new LinkedList ; crList.add cr1 ; crList.add cr2 ; crList.add cr3 ; public void initShow Sytln "目前排课的资源情况如下:" ; Sytln "教师情况" ; for Teacher t : tList Sytln "教师ID:" + t.getId + " 教师姓名: " + t.getName ; Sytln "教室情况" ; for ClassRoom cr : crList Sytln "教室ID:" + cr.getId + " 教室名称: " + cr.getName + "" + cr.getNumber ; Sytln "课程情况" ; for Course cs : csList Sytln "课程ID:" + cs.getId + " 课程名称: " + cs.getName + " 课时数:" + cs.getTimes + " 每周课时 " + cs.getTimesWeek ; Sytln "班级情况" ; for Class c : cList Sytln "班级ID:" + c.getId + " 班级名称: " + c.getName + " 班级人数:" + c.getNumber ; // 排课流程 public void order Teacher t Course course null; if t t1 course cs1; else if t t2 course cs2; else if t t3 course cs3; temList1 LinkedList t.getTs .getList .clone ;// temList1存放原教师空闲时间 t.getTs .getList .retainAll c1.getCs .getList ;// 求教师与学生时间交集 temList2 t.getTs .getList ;// temList2存放教师与学 生时间交集 sub1 randList temList2, course.getTimesWeek ;// 取出教师和学生的一定次数的随机组合 c1.getCs .getList .removeAll sub1 ;// 移去被分去的时间 t.getTs .setList temList1 ;// 恢复t1中时间 t.getTs .getList .removeAll sub1 ;// 移去被分去的时间 temList1 LinkedList t.getTs .getList .clone ;// temList1存放原教师空闲时间 t.getTs .getList .retainAll c2.getCs .getList ;// 求交集 temList2 t.getTs .getList ;// temList2存放教师与学生时间交集 sub2 randList temList2, course.getTimesWeek ;// 取出教师和学生的一定次数的随机组合 c2.getCs .getList .removeAll sub2 ;// 移去被分去的时间 t.getTs .setList temList1 ;// 恢复t1中时间 t.getTs .getList .removeAll sub2 ;// 移去被分去的时间 temList1 LinkedList t.getTs .getList .clone ;// temList1存放原教师空闲时间 t.getTs .getList .retainAll c3.getCs .getList ;// 求交集 temList2 t.getTs .getList ;// temList2存放教师与学 生时间交集 sub3 randList temList2, course.getTimesWeek ;// 取 出教师和学生的一定次数的随机组合 c3.getCs .getList .removeAll sub3 ; t.getTs .setList temList1 ;// 恢复t1中时间 t.getTs .getList .removeAll sub3 ;// 移去被分去的时间 // 输入课表方法 public void showCourseTable Teacher t Course course null; if t t1 course cs1; else if t t2 course cs2; else if t t3 course cs3; Sytln ; Sytln t.getName + "的课表详情排列如下: " + "课程名称: " + course.getName ; Sytln "班级名称: " + c1.getName + " 教室名称: " + cr1.getName ; for String s : listToTree sub1 Sytln s ; Sytln "班级名称: " + c2.getName + " 教室名称: " + cr2.getName ; for String s : listToTree sub2 Sytln s ; Sytln "班级名称: " + c3.getName + " 教室名称: " + cr3.getName ; for String s : listToTree sub3 Sytln s ; //Sequence.java package com.youngmaster; import edList; public class Sequence private LinkedList list new LinkedList ; public Sequence list.add "a-星期一 1-2 节" ; list.add "b-星期一 3-4 节" ; list.add "c-星期一 5-6 节" ; list.add "d-星期一 7-8 节" ; list.add "e-星期二 1-2 节" ; list.add "f-星期二 3-4 节" ; list.add "g-星期二 5-6 节" ; list.add "h-星期二 7-8 节" ; list.add "i-星期三 1-2 节" ; list.add "j-星期三 3-4 节" ; list.add "k-星期三 5-6 节" ; list.add "l-星期三 7-8 节" ; list.add "m-星期四 1-2 节" ; list.add "n-星期四 3-4 节" ; list.add "o-星期四 5-6 节" ; list.add "p-星期四 7-8 节" ; list.add "q-星期五 1-2 节" ; list.add "r-星期五 3-4 节" ; list.add "s-星期五 5-6 节" ; list.add "t-星期五 7-8 节" ; public LinkedList getList return list; public void setList LinkedList list this.list list; //Teacher.java package com.youngmaster; public class Teacher private int id; private String name; private Sequence ts; public Sequence getTs return ts; public void setTs Sequence ts this.ts ts; public Teacher public Teacher int id,String name this.name name; this.id id; setTs new Sequence ; public String getName return name; public void setName String name this.name name; public int getId return id; public void setId int id this.id id; 6.3 系统的管理与维护 1.基础数据管理 将排课中涉及到的院、系、教研室、教师、班级、教室等事物的信息录入到系统数据库中,并能修改、查询和删除。 2.权限管理 不同角色的用户登录系统后,看到的用户界面不同,用户能操作的功能菜单也不同。 7 结论 7.1 设计总结 本程序使用了新型控件flexcell,此控件的双色表格与单元格的特殊赋值功能不但能带给用户最好的视觉感受,同时在操作时大大减少了手动输入操作,因此也为非计算机人员的可操作性带来很大的方便。 采用独特的资料占用排除方法来生成所需要的课程表,使课程表生成速度加快。 支持很方便的课程,用户等模块的添加,修改,删除等过程。 使用定位查询,只要选择对应的班级,就可以找到对应的内容,班级就是一个整体,通过班级来寻找所想要的数据会实现的更为简便。 特殊的课程表输出功能,大大减少了课程表输出时的格式局限性,只要修改EXECL中的模板,就可以打印出你想要的效果来。 程序的不足: 1 对排课来说,各个学校都有着不太相同的排列方法,有每天的课节数,允许课程连排数,时间段等等,而这些方法转换为计算机语言时,往往会因为这样那样的限制而造成死循环或者程序速度缓慢。 2 由于排课实现功能复杂,程序中也许有不可预知的错误未测试出来,所以这也需要长时间的进行测试才能发现并修复问题。 3 受开发条件和开发时间的限制,本系统只利用了本地数据库Sqlserver,它同应用程序处于同一系统中,能存储的数据量也有一定限制,并没有发挥出JSP其数据库方面的优势。 7.2 设计心得 本系统是在刘变莲老师的带领下,同时在许多同学和老师的帮助下完成。由于我没有什么开发经验,对相关技术掌握的不是很牢等,本系统存在着很多尚未解决的问题,可以说是本系统稚气未脱,显得不是那么成熟。 首先,系统模块之间的整和不好,按软件工程的要求,是要做到高内聚、低耦合。本系统还没有达到这样的要求; 再次,我在开发过程中没有过多的考虑各种因素,比如数据库异常、网络病毒等,当这些问题发生时,本系统是否能正常运行,这就是系统的健壮性,尽管JSP语言的健壮性是比其他的要好,但我们并没有做到更好,把它发挥到极至; 还有,本系统的运行速度,在数据库不是很大时,本系统的运行速度还比较满意,这应该得益于JSP的运行机制,但当数据库增加,系统的运行速度能否得到保证,当这些问题出现时,我们还要改变系统的代码,改善算法等。 本系统还有很多尚待解决的问题,有些是在系统交付使用后应运而生,这些问题都有待改进,才能使系统具有更强的生命力。 参 考 文 献 [1] 唐勇,唐雪飞,王玲. 基于遗传算法的排课系统 [J]. 计算机应用, 200 (美)埃克尔 著,陈昊鹏 译Java编程思想机械工业出版社~60( [9]吴亚峰等.30天学通Java web项目案例开发[M].北京:电子工业出版社, 2009. [10] 刘伟,张利国(Java web开发与实战[M](北京:科学出版社,2008. [11] 李刚疯狂Java讲义电子工业出版社~20. [12] Rogers Cadenhead. Java编程.北京:人民邮电出版社,2007Elmasri R A,Navathe S B.Fundamentals of database systems[J].USA:Benjamin Commings,1994. [14] 李盘林,李立健.基于启发性知识研究生院课表编排系统[J].计算机学 报.1992, 11 :876-880. [15] Ferland J A, Fleurent C. SAPHIR: A decision support system for course scheduling [J]. Interfaces, 1994, 24 2 :105-115 [16] Murphy,J and ol scheduling by computer-the story of GSAP[J].Educational Facitilies york,December,1964. 致 谢 自由发挥~ 第 1 页 共 33 页 第 32 页 共 33 页 教务排课系统 使可调位置变色 查询可调点 获取教室对应资源 调课 a:通过班级来获取对应的生成课程表数据并赋值给某个打印变量或数据集 b:打开MDI窗体,并在其中显示报表窗体,将该表的数据源定义为a所赋 值的语句变量 Y N 返回操作 打印 是否打印 获取模板并复制 数据填入临时文件 a 退出 打印 b a EXCEL模板输出 报表输出 N Y 注释: A:每周课程数是否大于课程表的表格数 B:退回以前曾生成的课程表,此操作达到将各位老师和该班级的排课占用情况返回到未生成状态 退出 排课完成并退出 进入排课循环 A 显示课程 生成课表 次数取决于课程总数 C:当前所排课程与当前班级的可排课位置生成 D:获取随机的值来计算课程表上对应的横向与纵向坐标 F:根据用户的设置来确定允许排课的课节数(例如:允许同一课程两节课速派,则可以进行某个操作步骤),根据当前的需要,目前只开发2节课速排与单节课排列。 G:在当前课程当前节排列成功后,将会在该课程的教师的课程占用情况与班级的占用做修改,做个标记 退出 G 是否再次循环 F D C 排课循环 2节课连排 2节课连排 Y N 验证重复 执行保存 修改 删除 输入数据 保存 添加 提示并返回操作 课程是否生成 班级课程处理 执行保存 验证重复 输入数据 返回 删除 修改 保存 添加 班级管理 N 4 Y 登录排课主界面 退出系统 验证账号和密码 输入用户名和密码 登录界面 保存临时文件 课表调整 排课结果查询 排课算法设计 管理与维护 学生管理 排课设计 课表生成 用户管理 时间段设置 课程管理 班级管理 老师管理 获取课程资料
本文档为【毕业论文--基于java的教务排课系统设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_601191
暂无简介~
格式:doc
大小:59KB
软件:Word
页数:29
分类:
上传时间:2018-03-09
浏览量:48