javaWeb毕设分享 自动排课管理系统


1 项目简介

🔥 Hi,各位同学好呀,这里是L学长!

🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品,基于java web的自动排课管理系统

🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分)

  • 难度系数:3分

  • 工作量:3分

  • 创新点:3分

项目获取:
https://gitee.com/sinonfin/L-javaWebSha/tree/master


2 实现效果

废话不多说,先上实现效果

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

篇幅有限,本文不做过多展示

3 系统设计

排课管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以排课管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件排课,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对排课信息进行管理,具有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高排课管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。

设计思想

本系统采用各班级独立划分管理,所有教师均可为任何班级服务,各班级根据每天课程数目来进行自动排序,同时各教师允许教学多门课程,因此为了每名教师配置了时间占用表,只要与班级对应的时间空间表未被占用,都可以参与排课,并根据用户定义的要求排出课程。
数据管理类:由于班级,时间,教师,课程等信息都需要一个活动的管理过程,因为在节省资源的情况下,将各数据所需要的代码合并在一起进行编写和使用。

在这里插入图片描述
在这里插入图片描述

本系统是一个排课管理系统,主要是根据班级为单位,利用班级与课程来进行排课。
班级与课程是一对多的关系,班级不能重复,但是课程可以随意出现任何班级。
班级与班级课程信息之间也是一对多的关系,一个班级,可以有很多不同的课程。
班级与临时生成课表是一对多的关系,一个班级,只能有一个课程表,而排列的方式都同样由班级获得。
其余的数据库建立都是在让系统方便使用的基础上建立的,还有一个无需用户手动添加数据的,做为内部参数来使用的表,这里就不用标出的了。

3.1 详细设计流程

登陆系统流程图

在这里插入图片描述设计说明:进入主界面后,等待操作用户输入用户名和密码,在输入之后按确定进入,验证用户名和密码,实现流程:
(1) 检测数据库中有无管理员帐号,如果有,则等待用户输入用户名和密码,否则按程序本身自动执行插入命令,新建一个管理员用户,并等待用户输入.
(2) 验证用户名和密码是否正确,错误次数不能超过三次,超过三次则退出系统登陆界面
(3) 当验证通过后,检测该登陆用户的管理权限,并设置变量传值给主窗体.

班级管理流程图

在这里插入图片描述

班级课程处理流程图

在这里插入图片描述

流程较多,其他流程不在本文一一复述,详细的会放在论文里

4 关键代码

篇幅有限,无法放完整代码,源码分析在工程内

package com.service;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.dao.DB;
import com.orm.TQueren;
import com.orm.TUser;
import com.orm.TXuesheng;

/**
 * @author yanrj
 * @version ����ʱ�䣺Mar 29, 2013 10:26:29 PM
 */
public class GetListService {
	public List getXueshengList(String sql)
	{
		List xueshengList = new ArrayList();
		Object[] params={};
		DB mydb=new DB();
		try
		{
			mydb.doPstm(sql, params);
			ResultSet rs=mydb.getRs();
			while(rs.next())
			{
				TXuesheng xuesheng=new TXuesheng();
				
				xuesheng.setId(rs.getInt("id"));
				xuesheng.setXuehao(rs.getString("xuehao"));
				xuesheng.setLoginpw(rs.getString("loginpw"));
				xuesheng.setXingming(rs.getString("xingming"));
				xuesheng.setXingbie(rs.getString("xingbie"));
				xuesheng.setRuxue(rs.getString("ruxue"));
				xuesheng.setShenfenzheng(rs.getString("shenfenzheng"));
				xuesheng.setYuanxi(rs.getString("yuanxi"));
				xuesheng.setLianxi(rs.getString("lianxi"));
				xuesheng.setRiqi(rs.getString("riqi"));
				
				xuesheng.setZt_jwc(rs.getInt("zt_jwc"));
				xuesheng.setZt_fdy(rs.getInt("zt_fdy"));
				xuesheng.setZt_tsg(rs.getInt("zt_tsg"));
				xuesheng.setZt_sgc(rs.getInt("zt_sgc"));
				xuesheng.setZt_cwc(rs.getInt("zt_cwc"));
				xuesheng.setZt_xbgs(rs.getInt("zt_xbgs"));
				xuesheng.setZt_xuesheng(rs.getInt("zt_xuesheng"));
				xueshengList.add(xuesheng);
		    }
			rs.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		mydb.closed();
		return xueshengList;
	}
	
	private List getUserList(String sql)
	{
		List userList = new ArrayList();
		Object[] params={};
		DB mydb=new DB();
		try
		{
			mydb.doPstm(sql, params);
			ResultSet rs=mydb.getRs();
			while(rs.next())
			{
				TUser user=new TUser();
				user.setId(rs.getInt("id"));
				user.setLoginname(rs.getString("loginname"));
				user.setLoginpw(rs.getString("loginpw"));
			 	user.setXingming(rs.getString("xingming"));
			 	user.setXingbie(rs.getString("xingbie"));
				
				userList.add(user);
		    }
			rs.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		mydb.closed();
		return userList;		
	}
	
	private TXuesheng getXueshengById(int id)
	{
		String sql = "select * from t_xuesheng where id="+id;
		TXuesheng xuesheng = (TXuesheng)getXueshengList(sql).get(0);
		return xuesheng;
	}
	
	private TUser getUserById(int id)
	{
		String sql = "select * from t_user where id="+id;
		TUser user = (TUser)getUserList(sql).get(0);
		return user;
	}
	
	public List getQuerenList(String sql)
	{
		List querenList = new ArrayList();
		
		Object[] params={};
		DB mydb=new DB();
		try
		{
			mydb.doPstm(sql, params);
			ResultSet rs=mydb.getRs();
			while(rs.next())
			{
				TQueren queren=new TQueren();
				queren.setId(rs.getInt("id"));
				queren.setShijian(rs.getString("shijian"));

				int xuesheng_id = rs.getInt("xuesheng_id");
				queren.setXuesheng(getXueshengById(xuesheng_id));
				
				int user_id	= rs.getInt("user_id");
				queren.setUser(getUserById(user_id));
				
				querenList.add(queren);
		    }
			rs.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		mydb.closed();		
		
		return querenList;
	}
}

5 论文概览

在这里插入图片描述

6 最后

项目获取:
https://gitee.com/sinonfin/L-javaWebSha/tree/master

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件简介:鑫钜系统是一套智能系统 ,专门解决令头头疼的学校问题。 手工一向是学校教务工作中最令人头疼的事,非常费时费神,而且由于人工操作时多多少少会有些失误。往往经过一两天的冥思苦想出来的程表,却总会发现纰漏,导致程表需要修改。而修改程表一般都是牵一发而动全身,令人非常苦恼。 鑫钜系统的出现解决了以上所有难题,本系统特聘一位从事20余年学校教务工作的老师,根据自己多年来经验,全程跟踪系统开发,集众家软件之长,操作简单,直观;算法先进,合理分配每天的程节次,出来的更合理、更科学,完全符合中小学的需要。让您从此告别繁琐的手工,只要设置好学校班数、节数、程、教师任系统就会自动出所有程表。一个几十个班的学校,从信息开始录入到开始打印程表的整个过程一般一个小时内就可以完全搞定,这在手工阶段,几乎是不可想象的。而且电脑自动的过程只需几秒钟,完之后觉得不满意,完全可以根据系统提示进行调整。 功能特点:鑫钜系统还有很多特点都领先于同类软件,如: 1.傻瓜型的向导操作模式:《鑫钜系统》的向导操作模式使得对电脑一知半解的用户也可以操作自如。并采用教务工作者的思路来设计软件,即使不懂电脑的老教务主任操作起来也会有一种似曾相识的感觉。 2一流的算法: 《鑫钜系统》采用优秀的算法,自动无论速度及准确性是其它软件不可比拟的 3.直观的调功能。能采用直观的卡片式显示方法,用不同的颜色显示哪些可以调,哪些不能调,调直观,方便,像玩游戏一样,让您出的符合您的要求。 4.方便的查询功能。任意选中表中某一节(或几节),能查询哪些老师在上,哪些老师在休息,这样方便领导选派教师安临时性的工作,或考勤查岗等事务,也可以在调过程中利用它发现哪些不合理,以便进行调整. 5.教学工作量统计功能。能自动统计全校任教师的教学工作量,并导出到Excel(电子表格)中编辑、打印。以便根据您的需要计算出教师的教学工作量津贴等。 6.能合理分配场地受限的程。例如:微机、体育。如果您学校只有一间微机教室,那么在同一系统会只安一节微机。 7.能设置教师在哪节。例如:有些老师每周固定时间开会,固定时间教研等。 8..能设置程的不节次。例如:体育不安在上午第一、二节。 9.能根据您的需要安固定。例如:班会、劳动、自习等安在固定的某一节;也可以用来做手工,如:把某班的语文固定在第一节上。 10.方便、灵活的打印功能。总功表、班级表、个人表能一键导出到Excel(电子表格)中编辑、打印,让你打出更精美的表。班级表和个人表还可以用A4纸张直接打印出来。 11.强大的手动调功能。系统能够自动提示可调程位置,可以方便地调动程。 12.采用24小时在线升级技术。采用在线升级技术,令升级更方便。 13.立足用户的本地化改造。如校方对系统的某些功能需求有异,可在第一时间为校方做调整完善。 使用范围:适用于各类中学、小学、全日制、半日制、中专类院校等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值