基于 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.mzph.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的…

字符串类中的常用方法

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…

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

Redis列表 1、Redis Blpop命令&#xff1a; &#xff08;1&#xff09;说明&#xff1a;Redis Blpop命令移出并获取列表的第一个元素&#xff1b;如果列表没有元素会阻塞列表直到等到超时或发现可弹出元素为止 &#xff08;2&#xff09;语法&#xff1a;redis 127.0.0.1:63…

提高自动化测试脚本编写效率 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…

UE5.4新功能 - MotionDesign上手简介

MotionDesign是UE中集成的运动图形功能&#xff0c;我们在游戏中经常会见到&#xff0c;例如前方漂浮于空中的若干碎石&#xff0c;当玩家走进时碎石自动吸附合并变成一条路&#xff0c;或者一些装饰性的物件做随机运动等等&#xff0c;在引擎没有集成运动图形时&#xff0c;这…

网络爬虫开发:JavaScript与Python特性的小差异

JavaScript JavaScript具有以下一些主要特点&#xff1a; 动态类型&#xff1a; JavaScript是一种动态类型语言&#xff0c;变量可以存储任意类型的数据&#xff0c;无需事先声明变量的类型。事件驱动&#xff1a;JavaScript主要用于处理用户在浏览器中的各种交互事件&#x…

什么是大数据信用?它的作用有哪些?怎么查询大数据?

在金融行业中&#xff0c;风险管理是至关重要的一环。传统的信用评估方法主要基于借款人的财务状况和信用历史&#xff0c;但这些信息往往无法全面反映借款人的信用状况。大数据信用的出现为金融风控提供了新的解决方案。 首先&#xff0c;大数据信用可以为金融机构提供更全面的…

jmeter持续学习之---控制器

IF控制器 下面这种写法jmeter不推荐有性能的问题 jmeter推荐勾选上的这种写法 使用"Interpret Condition as Variable Expression"工具的性能要好一些 循环控制器 ForEach控制器 与用户定义的变量或者正则表达式提取器配合使用,循环读取。用户定义的变量或者正则…

C语言-分支与循环(2)

目录 1、while循环 1.1 if 和 while 的对比 1.2 while 语句的执行流程 6.3 while循环简单例题 2、for 循环 2.1 语法形式 2.2 for循环与while循环对比 2.3 for循环的执行流程 2.4 for循环的简单例题 2.5 扩展&#xff1a;for循环的初始化&#xff0c;判断&#xff0c;…

django学习入门系列之第四点《图标》

文章目录 图标往期回顾 图标 图标网站&#xff1a; Font Awesome&#xff0c;一套绝佳的图标字体库和CSS框架 (dashgame.com) bootstrap提供的不多 注意&#xff0c;要用框架启动&#xff0c;但用html启动的话是用不了的&#xff08;图标启动不了&#xff09; 如何使用 如果…

DAMA学习笔记(六)-数据安全

1.引言 数据安全包括安全策略和过程的规划、建立与执行&#xff0c;为数据和信息资产提供正确的身份验证、授权、访问和审计。数据安全实践的目标是根据隐私和保密法规、合同协议和业务要求来保护信息资产。这些要求来自以下几个方面: 1&#xff09;利益相关方: 应识别利益相关…

YOLO--置信度(超详细解读)

YOLO&#xff08;You Only Look Once&#xff09;算法中的置信度&#xff08;Confidence&#xff09;是一个关键概念&#xff0c;用于评估模型对预测框内存在目标对象的信心程度以及预测框对目标对象位置的准确性。 一、置信度的定义 数值范围&#xff1a;置信度是一个介于0和…

vscode 打开远程bug vscode Failed to parse remote port from server output

vscode 打开远程bug vscode Failed to parse remote port from server output 原因如图&#xff1a; 解决&#xff1a;

网络滤波器、EMI滤波器与EMC滤波器在电子元器件中的分类关系

在电子工程领域&#xff0c;滤波器作为关键的电子元器件&#xff0c;广泛应用于信号处理、电磁兼容性和电磁干扰抑制等方面。本文将详细介绍网络滤波器、EMI滤波器和EMC滤波器的基本概念、工作原理及其在电子元器件中的分类关系。 一、网络滤波器 网络滤波器是一种通过处理信号…