基于 SSH 的任務調度系統的設計與實現

點擊下載源碼

基于SSH的任務調度系統的設計與實現

摘 要
隨著科學技術的飛速發展和各行各業的分工愈發明細化,對于改革傳統的人工任務調度方式的呼聲越來越大。得益于快速發展的計算機技術,我們看到了改革的方向。本系統是針對企業或者事業單位甚至一個小團隊的任務調度而設計的,目的是改變傳統的調度方式,通過計算機來計算各項任務的最佳人員分配和最佳時間分配,繪制出任務調度圖,以此更好地進行各項任務的調度和團隊協作,該系統是一種任務調度系統。
本系統采用了B/S體系結構,主要實現語言是JAVA,后臺數據庫使用的是MySql。整個系統實現角色將分為組長和組員,實現功能包括帳號注冊、修改信息、項目管理、任務管理、消息管理、團隊管理等功能。本任務調度系統的設計實現可以遠程實現任務的調度與科學分配,并通過評估各項任務與參與人員,來使項目更好的進行任務調度。

關鍵詞: 任務調度;B/S;SSH

目 錄
摘 要 I
Abstract II
目 錄 III
1 引言 1
1.1 課題研究意義及背景 1
1.2 論文的目的及設計要求 1
2 研究現狀及設計目標 2
2.1 任務調度系統的現狀 2
2.2 任務調度系統優缺點分析 2
2.3現行研究存在的問題及解決方法 2
2.3.1 現行研究存在的問題 2
2.3.2 解決辦法 3
2.4 本課題要達到的設計目標 3
2.5 經濟效益分析 4
3 關鍵問題及分析 5
3.1 問題分析與設計 5
3.1.1 核心問題即任務調度 5
3.1.2 數據表間聯系 6
3.1.3 系統安全性 6
4 調度算法設計 7
5 需求分析 8
5.1 USE-CASE用例圖 8
5.2 類圖 8
5.3 活動圖 9
5.4 功能需求 10
5.5 開發環境 10
5.6 系統交互圖 11
5.6.1 系統架構類交互圖 11
5.6.2 系統協作圖 12
5.6.3 系統狀態圖 13
6 系統設計 15
6.1 系統體系結構 15
6.2 系統功能結構 15
6.3 系統架構的設計目標 16
6.4 系統架構設計 16
6.5 數據庫表結構 17
6.5.1 數據庫設計原則 17
6.5.2 數據庫設計概述 18
6.5.3 數據庫設計周期 18
6.5.4 數據字典 19
7 系統實現 21
7.1 公共模塊 21
7.1.1 模塊功能 21
7.1.2 模塊代碼 21
7.2 注冊模塊 26
7.2.1 模塊功能 26
7.2.2 模塊代碼 26
7.3 登錄模塊 29
7.3.1 模塊功能 29
7.3.2 模塊代碼 29
7.4 搜索模塊 31
7.4.1 模塊功能 31
7.4.2 模塊代碼 31
7.5 項目管理模塊 33
7.5.1 模塊功能 33
7.5.2 模塊代碼 33
7.6 任務調度模塊 40
7.6.1 模塊功能 40
7.6.2 模塊代碼 40
8 結論與展望 49
參考文獻 50
致 謝 51

1 引言
在實際生產生活中,許多項目是由多個任務組成的,并且這多個任務存在約束關系,有一類約束關系為樹狀的約束關系,小至產品,大至廣場的修建。如產品由工件裝配而成,而工件又由一系列精加工任務組成,再如廣場由各類功能區組成,而各類功能區又由一系列建造流程租出。所以任務調度是各行各業都離不開的,在以前這些工作都由人力完成,或者采用低效的任務調度策略。到了現在,各行各業都在運用計算機進行復雜計算或自動化處理事務,計算機能夠進行快速復雜計算,可以實現遠程辦公,團隊協作,并有將數據可視化的能力。使用計算機并且加上高效的調度策略,不僅能提高工作效率,還能進行更科學更客觀的分配。
計算越復雜,計算機的優越性體現的越明顯。在多任務的項目中,計算機可通過各類算法,如關鍵路徑算法或多機調度算法,來進行任務評估和總體任務調度,計算機與人們的生產生活密切相關,故現在開發任務調度系統。本系統運用了當前的流行框架Spring,Struts2,Hibernate,保證了可擴展性與可維護性。
1.1 課題研究意義及背景
雖然科技進步在改革開發這幾十年來速度飛快,計算機行業也發展迅速,但仍然有大量商家或企業,甚至項目組,采用落后的人工管理方式或者低效的任務調度策略,這無疑是對計算機的一種無視。
計算機處理信息的準確度與高效率遠遠超過人類,在團隊協作中項目又可以被分成一個個小任務。故此,本人開發這套基于SSH的任務調度系統,使團隊協作與任務分派更加科學高效,進而促進企業經濟效益的提高。
1.2 論文的目的及設計要求
任務調度系統主要目的是對企事業單位項目的任務集進行調度分配,敏捷高效地處理任何或大或小的項目。使項目小組的工作效率大大提高,工作成本大大降低。本系統開發主要包括調度算法的設計,后臺程序的處理,后臺數據庫的建立和維護,和前端頁面的展示開發。算法要求高效性和可實現性,后臺要求業務邏輯的合理性與科學性,數據庫要求數據的完整性和一致性,前臺頁面又要求美觀性與功能完備性。正因為此,本人選擇采用SSH三大框架的整合技術和MySQL數據庫進行系統的開發。
本系統的實現角色將包括項目組長和項目組員這兩個角色,用戶可同時扮演兩種角色,共有的功能包括修改登錄密碼、發起項目、刪除項目、參與項目、添加任務、刪除任務、添加成員、刪除成員、處理消息。其中組長部分的功能還包括組員管理、更新項目,其中組員部分的功能還包括申請加入與申請退出。并且,不光保證實現這些功能,還得為本任務調度系統提供一個良好的人機交互,提高系統友好性。

2 研究現狀及設計目標
2.1 任務調度系統的現狀
長久以來一般的大小項目組均采用傳統的人工方式或者低效的調度算法來負責項目任務集合的日常管理工作,在以前,也就是計算機尚未普及前,基于樹狀任務集的項目的管理方式是人工管理,這樣的缺點是顯而易見的,效率低下并且錯誤率高。如果我們應用計算機來代替落后的人工管理方式,無疑會極大程度地提高效率和準確率,使我們更加精準的管理項目。
目前存在的調度算法多以時間輪轉為主,雖然保證了項目樹狀結構的橫向,但忽略了縱向。針對這個問題,本文提出了更優秀的調度算法。
2.2 任務調度系統優缺點分析
1.優點
(1) 采用可擴展性強、分離度高的B/S模式。
(2) 數據庫選用了市場上應用廣泛的關系型數據庫。
(3) 界面美觀大氣,操作邏輯科學合理。
2.缺點
(1) 軟件穩定性有待提高
目前,B/S模式已經廣泛應用于網站和系統建設,但同時,B/S模式也存在著很多需要我們注意的問題,如并發性操作、大數據量訪問等,這就很考驗系統的設計和代碼,因為他們會極大影響軟件的穩定性。另外,軟件行業中,版本更迭是非常常見的,但在更新版本的過程中,因為沒有進行良好的交接,很容易造成系統的不穩定,為后期的維護工作帶來巨大的困難。
(2) 存在安全隱患
B/S模式系統中的B是瀏覽器的意思,暨客戶端操作是通過瀏覽器進行的,而瀏覽器又常采用腳本模式,腳本語言目前尚未完善,所以存在一些安全隱患。

2.3現行研究存在的問題及解決方法
2.3.1 現行研究存在的問題

1.調度系統形式落后
多以人工為主進行項目任務的調度,沒能做到與時俱進,采用計算機和網絡來進行調度。

2.調度算法低效暴力
先行算法多以時間輪詢為主,忽略了任務可并行以及樹狀結構任務調度以縱向
為主的機理。

3.數據庫選擇問題
市面上的數據庫種類繁多,從這么多中選出一個適合本系統、擁有強大功、移植性強的數據庫是非常重要的。選擇時必須保證它可以有效的與其它數據庫結合,降低系統的特定數據庫的依賴,增強軟件的可移植性。
4.可擴展性
因為需求的增多減少,或者彌補系統現有缺陷,程序進行修改和升級是必然的,這就要求程序具有良好的可擴展性。
5.開發平臺和語言
選擇一個良好的的開發平臺和適合本系統的語言能夠降低開發成本,延長生命周期。
2.3.2 解決辦法
考慮到目前任務調度系統的需求與研究現狀,想要解決上述問題應該從以下幾方面的要求出發:
1.數據庫選用MySql,足以保證數據存放的持久性,當存儲設備改變時,不用重寫程序代碼就可以方便的移植過去。
2.系統實現模式采用B/S架構,實現過程也做到模塊化,把用戶界面與跳轉邏輯分開,把業務信息又按應用功能分開,同時與數據交互層分開,任一方的改變都不會過多影響對方。
3.開發平臺選用Eclipse,語言選用JAVA作為主要的開發語言,該語言一次編寫隨處運行以及強大的可伸縮性對于系統的開發和維護提供了強有力的保障。
4.設計一個能兼顧樹狀任務集縱橫兩個方向的調度算法,充分利用參與人員的時間空檔,來縮短整個項目的完成時間
2.4 本課題要達到的設計目標
本課題采用B/S模式,面向或大或小的項目管理而開發的任務調度系統,為了系統的安全性,該系統只允許已經注冊到該系統的用戶使用。系統有兩種角色:項目組長和項目組員。各用戶可同時承擔所有角色,各角色功能如下:
1.共有功能:
a、注冊、登錄功能,個人信息管理功能,如對密碼的修改。
b、部分項目管理功能,實現了對項目的管理操作,包括對項目的搜索、查看操作。
c、部分任務管理功能,實現了對所有項目任務的管理操作,包括對任務集的查看操作。
2.項目組長:
a、具有管理組員、處理申請功能
b、具有部分項目管理功能,包括對項目的刪除操作。
3.項目組員:
a、具有申請加入與退出項目組的功能。
2.5 經濟效益分析
本任務調度系統是針對項目組任務調度和團隊協作而開發的,一方面因為系統的人機交互界面的友好型和功能的全面性,工作效率與溝通成本均能得到較大改善,另一方面,系統開發運行成本低,所以經濟效益是不言而喻的,能夠用低成本得到高回報。

3 關鍵問題及分析
一個相對成熟的系統,對于穩定性和安全性都有很高的要求,本系統也不例外,所以本系統應用分層思想,通過前后臺分離開發,來保證系統的穩定性與安全性。考慮項目組長和組員進入系統后功能需求的不同,需要對各用戶類型的不同功能做詳細分析。
3.1 問題分析與設計
在本次系統的設計中,勢必會遇到許多以前沒遇到過的問題,會需要許多曾經沒有接觸過的技術去攻克難點。所以,現將研究設計中要解決的問題總結如下:
3.1.1 核心問題即任務調度
此次所研究的問題是在3個約束下使由樹狀任務集組合而成的項目所用時間盡可能短。3個約束指的是:(1)對于每個任務, 必須等待其所有的前繼任務完成后才能處理此任務;(2)對于每個組員, 任意時刻只能進行一個任務, 且必須滿足完成一個任務后才能開始另一個任務;(3)不存在相同任務。
1、任務樹和任務分類
由于項目的任務圖呈樹狀結構,僅僅邊的方向與正常的樹相反,姑且可稱之為任務樹。任務樹上的結點代表任務,有向邊代表任務之間的次序關系。其中,葉結點任務為剛開始就可被進行的任務,根結點任務為最終進行的任務。當根結點任務完成,標志著整個項目完成。
設有一個項目, 項目由N任務組成.這N個任務可繪制出樹狀結構。在某個任務完成后, 剩下的未完成任務仍可繪制出樹狀結構。由任務樹和問題的約束條件可知, 初始時只能調度某個葉節點任務.當某個任務結點的所有子節點任務全部完成, 則此任務結點就轉換為葉節點任務。 現在分類任務:可調度任務是屬于某空閑組員的葉節點任務; 準可調度任務是屬于某非空閑組員的葉結點任務;不可調度任務是所有非葉節點任務;所有可調度任務和準可調任務的任務集為備選任務集 ;若某個任務X在某個任務Y之后,且中間再無其他任務,則成X為Y的直接后繼任務。
2、調度策略分析
關鍵路徑為圖中的概念,樹作為特殊的一種圖,我們可將其概念引申過來,在這里我們將任務樹中需要進行時間最長的路徑稱為關鍵路徑,所以整個項目的完成時間在很大程度上由關鍵路徑的有效調度所決定。值得注意的是,關鍵路徑是在不斷發生變化的,在某個任務完成后,剩余任務樹的關鍵路徑是有可能發生變化的,所以在調度中如果始終保持一條關鍵路徑不變,就無法保證整個項目用時最短。所以我們首先采用動態關鍵路徑策略。
除此之外,由于任務是從備選任務中調度,故多個可調度任務同時爭奪一個組員的情況是很有可能發生的,于此同時還可能發生這多個任務的路徑長度均為最長即均在關鍵路徑上。考慮到這種情況,我們在這里可以采用最短用時策略,優先調度用時較短的那個任務。
在整個項目中,一個項目組是有一個或多個組員的,為了是各個任務盡早開始,故我們使任務選擇最早空閑的組員即選擇最早適合開始任務的空隙。這里采用首次適應調度策略。
3.1.2 數據表間聯系
任務調度系統涉及到的數據復雜,業務邏輯關系也較復雜,尤其是調度算法的邏輯,所以可能需要用到臨時表,表與表之間也需要通過外鍵聯系起來。外鍵的聯系保證在項目組任務調度過程中業務操作穩定的關鍵。底層數據庫設計的好壞直接影響著整個系統的穩定運行。
由于任務調度系統涉及到了具體的用戶更新維護項目信息、項目任務集信息、個人登錄信息功能操作,數據庫中的數據不能隨意刪除,以防出現信息丟失的問題。所以必須重視表間的聯系,倘若不夠完善,系統運行起來就會報出許多bug或error,結果造成的損失將無法彌補,程序的可維護性也大打折扣。
3.1.3 系統安全性
本任務調度系統是基于B/S模式的,需要通過瀏覽器來進行訪問,也就是說所有用戶都可以通過瀏覽器來訪問本系統。
因此本系統加入了注冊和登錄模塊,只有注冊用戶輸入正確的帳號密碼后,才可以訪問本系統,并且根據不同的用戶角色分配不同的功能權限。于此同時,使用Spring中的攔截器,在除了主頁和注冊、登錄頁面意外的頁面,都會驗證登錄狀態,最大程度的防止用戶以非法途徑進入到本系統中。

4 調度算法設計
基于樹狀任務集組成的項目問題調度算法如下:
1、 按照約束對項目構造任務樹
2、 根據任務樹將可調度任務和準可調度任務加入備選任務集。如果任務集為空,則表示項目完成,轉至第5步。
3、 根據動態關鍵路徑策略從備選任務集中選出路徑長度最長的可調度任務。若任務唯一,則選取此任務,若不唯一,則選取用時最短的任務。
4、 應用首次適應調度算法調度選出來的任務,接著從任務樹上刪除此任務結點,從備選任務集中刪除此任務。回到第2步。
5、 結束

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45854.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45854.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45854.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Golang | Leetcode Golang題解之第234題回文鏈表

題目: 題解: func reverseList(head *ListNode) *ListNode {var prev, cur *ListNode nil, headfor cur ! nil {nextTmp : cur.Nextcur.Next prevprev curcur nextTmp}return prev }func endOfFirstHalf(head *ListNode) *ListNode {fast : headslo…

camtasia怎么剪掉不用的部分 屏幕錄制的視頻怎么裁剪上下不要的部分 camtasia studio怎么裁剪視頻時長 camtasia怎么剪輯視頻教程

有時我們錄制的屏幕內容,并不一定全部需要。那么,屏幕錄制的視頻怎么裁剪上下不要的部分?可以使用視頻剪輯軟件,或者微課制作工具來進行裁剪。屏幕錄制的視頻怎么旋轉?錄制視頻的旋轉也是一樣的,均在編輯步…

萬字長文之分庫分表里如何優化分頁查詢?【后端面試題 | 中間件 | 數據庫 | MySQL | 分庫分表 | 分頁查詢】

分庫分表的一般做法 一般會使用三種算法: 哈希分庫分表:根據分庫分表鍵算出一個哈希值,根據這個哈希值選擇一個數據庫。最常見的就是數字類型的字段作為分庫分表鍵,然后取余。比如在訂單表里,可以按照買家的ID除以8的…

【Flutter】 webview_flutter避坑

webview_flutter webview_flutter沒有SSL Error接口,也就是說等你的網頁出現SSL 錯誤的時候這個插件無法捕捉處理,除非你改它的源碼。 下面這段是webview_flutter官網的例子,它有onHttpError、onWebResourceError、但沒有任何捕捉 SSL 錯誤…

代謝組數據分析(十五):基于python語言構建PLS-DA算法構建分類模型

介紹 本教程描述了一個具有二元分類結果的研究的典型代謝組學數據分析工作流程。主要步驟包括: 從Excel表格導入代謝物和實驗數據。基于匯總QC的數據清洗。利用主成分分析可視化來檢查數據質量。兩類單變量統計。使用偏最小二乘判別分析(PLS-DA)進行多變量分析,包括: 模型…

go語言 fmt的幾個打印區別以及打印格式

文章目錄 一、打印Print1.1 fmt.Print 和 fmt.Println1.2fmt.Printf1.3 fmt.Sprint, fmt.Sprintf, 和 fmt.Sprintln1.4 fmt.Fprint, fmt.Fprintf, 和 fmt.Fprintln 二、打印格式基本格式動詞整數類型浮點數和復數類型字符串和字節切片布爾類型指針 一、打印Print Go 語言的 fm…

字符串類中的常用方法

1 string對象的創建 靜態創建 String s1  "abc";  String s2  "abc";  動態創建 String s3  new String("abc"); String s4  new String("abc"); 2string對象的不可變性 任何一個String對象在創建之后都不能對它的…

大數據環境下的房地產數據分析與預測研究的設計與實現

1緒論 1.1研究背景及意義 隨著經濟的快速發展和城市化進程的推進,房地產市場成為了國民經濟的重要組成部分。在中國,房地產行業對經濟增長、就業創造和資本投資起到了重要的支撐作用。作為中國西南地區的重要城市,昆明的房地產市場也備受關…

云備份服務端

文件使用工具和json序列化反序列化工具 //文件和json工具類的設計實現 #ifndef __UTIL__ #define __UTIL__ #include<iostream> #include<fstream> #include<string> #include <vector> #include<sys/stat.h> #include"bundle.h" #inc…

FPGA資源容量

Kintex? 7 https://www.amd.com/zh-tw/products/adaptive-socs-and-fpgas/fpga/kintex-7.html#product-table AMD Zynq? 7000 SoC https://www.amd.com/en/products/adaptive-socs-and-fpgas/soc/zynq-7000.html#product-table AMD Zynq? UltraScale? RFSoC 第一代 AMD Z…

【每日一練】python類的構造方法以及常用的魔術方法詳細講解

在Python中&#xff0c;構造方法是一個用來初始化新創建的對象狀態的特殊方法。Python中的構造方法是__init__。此外&#xff0c;Python中的"魔術方法"是Python提供的一系列特殊方法&#xff0c;它們都以雙下劃線開頭和結尾&#xff0c;例如__init__, __str__, __rep…

Redis系列命令更新--Redis列表命令

Redis列表 1、Redis Blpop命令&#xff1a; &#xff08;1&#xff09;說明&#xff1a;Redis Blpop命令移出并獲取列表的第一個元素&#xff1b;如果列表沒有元素會阻塞列表直到等到超時或發現可彈出元素為止 &#xff08;2&#xff09;語法&#xff1a;redis 127.0.0.1:63…

mybaits-plus自定義分頁查詢

1. 引入依賴 在 pom.xml 文件中添加必要的依賴&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId&…

Git進階(十四):Windows下 git 提示 Repository not found

文章目錄 一、前言 一、前言 在Windows10下執行 git clone/pull 的時候出現Repository not found錯誤。解決方法如下&#xff1a; 打開控制面板 搜索“憑據” 選中“Windows憑據” 在“普通憑據”一欄中查看當前git服務器配置的憑據信息是否正確&#xff0c;出現以上問題的…

081、Python 關于方法重寫

所謂方法重寫&#xff0c;就是子類對父類已有的方法&#xff0c;重新編寫自己的實現版本&#xff0c;這個過程就叫做方法重寫&#xff08;override&#xff09;。 說到方法重寫&#xff0c;就不得不提多態。因為方法重寫是實現多態的一種重要方式。 所謂多態&#xff0c;就是…

Windows的包管理器Chocolatey

Chocolatey 是 Windows 平臺上的一個軟件包管理工具&#xff0c;類似于 Linux 上的 apt、yum 或者 macOS 上的 Homebrew。你可以通過命令行快速安裝、更新和卸載軟件包。 一、安裝 Chocolatey 查看是否有安裝 choco --version 2.3.0如果有顯示版本號&#xff0c;說明安裝成功…

Laravel IDE Helper:開發者的代碼導航燈塔

Laravel IDE Helper&#xff1a;開發者的代碼導航燈塔 在Laravel開發過程中&#xff0c;IDE&#xff08;集成開發環境&#xff09;的輔助工具可以極大地提高開發效率和代碼質量。Laravel IDE Helper是一個專門為此目的設計的工具&#xff0c;它為PHP IDE提供了額外的上下文信息…

提高自動化測試腳本編寫效率 5大關鍵注意事項

提高自動化測試腳本編寫效率能加速測試周期&#xff0c;減少人工錯誤&#xff0c;提升軟件質量&#xff0c;促進項目按時交付&#xff0c;增強團隊生產力和項目成功率。而自動化測試腳本編寫效率低下&#xff0c;往往會導致測試周期延長&#xff0c;增加項目成本&#xff0c;延…

Python項目部署到Linux生產環境(uwsgi+python+flask+nginx服務器)

1.安裝python 我這里是3.9.5版本 安裝依賴&#xff1a; yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y 根據自己的需要下載對應的python版本&#xff1a; cd local wget https://www.python.org/ftp…

git 提交遠程倉庫 方式

第一種方式&#xff1a; git init //初始化 gitgit clone https://github.com/luckygilrhpp/gitTest.git //克隆遠程倉庫代碼將要提交的文件夾復制到這個clone的遠程倉庫里面 第二種方式&#xff1a; git init git remote add origin https://github.com/lucky…