軟件工程畢業(yè)設(shè)計 java自動排課管理系統(tǒng)
1 項(xiàng)目簡介
?? Hi,各位同學(xué)好呀,這里是M學(xué)姐!
?? 學(xué)長根據(jù)實(shí)現(xiàn)的難度和等級對項(xiàng)目進(jìn)行評分(最低0分,滿分5分)
難度系數(shù):3分
工作量:3分
創(chuàng)新點(diǎn):3分
項(xiàng)目源碼:https://space.bilibili.com/1015687726
2 實(shí)現(xiàn)效果
廢話不多說,先上實(shí)現(xiàn)效果



篇幅有限,本文不做過多展示
3 系統(tǒng)設(shè)計
排課管理系統(tǒng)是一個教育單位不可缺少的部分,它的內(nèi)容對于學(xué)校的決策者和管理者來說都至關(guān)重要,所以排課管理系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄?。但一直以來人們使用傳統(tǒng)人工的方式管理文件排課,這種管理方式存在著許多缺點(diǎn),如:效率低、保密性差,另外時間一長,將產(chǎn)生大量的文件和數(shù)據(jù),這對于查找、更新和維護(hù)都帶來了不少的困難。隨著科學(xué)技術(shù)的不斷提高,計算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識,它已進(jìn)入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。作為計算機(jī)應(yīng)用的一部分,使用計算機(jī)對排課信息進(jìn)行管理,具有著手工管理所無法比擬的優(yōu)點(diǎn)。例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點(diǎn)能夠極大地提高排課管理的效率,也是企業(yè)的科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。
設(shè)計思想
本系統(tǒng)采用各班級獨(dú)立劃分管理,所有教師均可為任何班級服務(wù),各班級根據(jù)每天課程數(shù)目來進(jìn)行自動排序,同時各教師允許教學(xué)多門課程,因此為了每名教師配置了時間占用表,只要與班級對應(yīng)的時間空間表未被占用,都可以參與排課,并根據(jù)用戶定義的要求排出課程。 ?數(shù)據(jù)管理類:由于班級,時間,教師,課程等信息都需要一個活動的管理過程,因?yàn)樵诠?jié)省資源的情況下,將各數(shù)據(jù)所需要的代碼合并在一起進(jìn)行編寫和使用。


本系統(tǒng)是一個排課管理系統(tǒng),主要是根據(jù)班級為單位,利用班級與課程來進(jìn)行排課。 ? 班級與課程是一對多的關(guān)系,班級不能重復(fù),但是課程可以隨意出現(xiàn)任何班級。 ? 班級與班級課程信息之間也是一對多的關(guān)系,一個班級,可以有很多不同的課程。 ? 班級與臨時生成課表是一對多的關(guān)系,一個班級,只能有一個課程表,而排列的方式都同樣由班級獲得。 ? 其余的數(shù)據(jù)庫建立都是在讓系統(tǒng)方便使用的基礎(chǔ)上建立的,還有一個無需用戶手動添加數(shù)據(jù)的,做為內(nèi)部參數(shù)來使用的表,這里就不用標(biāo)出的了。
3.1 詳細(xì)設(shè)計流程
登陸系統(tǒng)流程圖

設(shè)計說明:進(jìn)入主界面后,等待操作用戶輸入用戶名和密碼,在輸入之后按確定進(jìn)入,驗(yàn)證用戶名和密碼,實(shí)現(xiàn)流程: ?(1) 檢測數(shù)據(jù)庫中有無管理員帳號,如果有,則等待用戶輸入用戶名和密碼,否則按程序本身自動執(zhí)行插入命令,新建一個管理員用戶,并等待用戶輸入. ?(2) 驗(yàn)證用戶名和密碼是否正確,錯誤次數(shù)不能超過三次,超過三次則退出系統(tǒng)登陸界面 (3) 當(dāng)驗(yàn)證通過后,檢測該登陸用戶的管理權(quán)限,并設(shè)置變量傳值給主窗體.
班級管理流程圖

班級課程處理流程圖

流程較多,其他流程不在本文一一復(fù)述,詳細(xì)的會放在論文里
4 關(guān)鍵代碼
篇幅有限,無法放完整代碼,源碼分析在工程內(nèi)
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 最后
項(xiàng)目源碼:https://space.bilibili.com/1015687726