目 录
摘 要 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
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 现行研究存在的问题
算法流程图如图4.1所示:
图4.1 算法流程图
<%@ page language="java" import="java.util.*,com.fcq.schedule.job.po.*"
contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
分布式任务调度系统
发现有趣的项目和人员来充实您的仓库。
您可以在项目页面申请参与,申请会出现在对方的消息列表中。
消息
您的项目
发起
参与
<%
Set setLeadProject = (Set) session.getAttribute("leadProjects");
Set setJoinProject = (Set) session.getAttribute("joinProjects");
int size = setLeadProject.size();
int size2 = setJoinProject.size();
Iterator iterator = setLeadProject.iterator();
Iterator iterator2 = setJoinProject.iterator();
%>
<%
while (iterator.hasNext()) {
%>
<%=((Project) iterator.next()).getName()%>
<%
}
%>
<%
while (iterator2.hasNext()) {
%>
<%=((Project) iterator2.next()).getName()%>
<%
}
%>