• 项目任务发布互助申请系统(Java+Web+MySQL)


    目 录
    摘 要 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 现行研究存在的问题

    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 经济效益分析
      本任务调度系统是针对项目组任务调度和团队协作而开发的,一方面因为系统的人机交互界面的友好型和功能的全面性,工作效率与沟通成本均能得到较大改善,另一方面,系统开发运行成本低,所以经济效益是不言而喻的,能够用低成本得到高回报。
      4 调度算法设计
      基于树状任务集组成的项目问题调度算法如下:
      1、按照约束对项目构造任务树
      2、根据任务树将可调度任务和准可调度任务加入备选任务集。如果任务集为空,则表示项目完成,转至第5步。
      3、根据动态关键路径策略从备选任务集中选出路径长度最长的可调度任务。若任务唯一,则选取此任务,若不唯一,则选取用时最短的任务。
      4、应用首次适应调度算法调度选出来的任务,接着从任务树上删除此任务结点,从备选任务集中删除此任务。回到第2步。
      5、结束

    算法流程图如图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()) { %> <% } %> <% while (iterator2.hasNext()) { %> <% } %>
    发起 参与
    <%=((Project) iterator.next()).getName()%>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177

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

  • 相关阅读:
    Docker快速安装Mysql
    C语言入门--指针
    yolov5 focal_loss源码解析
    论文阅读 (77):Abductive Learning with Ground Knowledge Base
    全栈工程师必须要掌握的前端Html技能
    Linux 基础(一)——Linux简介、目录管理、文件管理
    rhcsa-压缩和解压缩
    3.2 自定义函数
    【VMware/Linux】虚拟机根目录扩容
    AppWeb认证绕过漏洞(CVE-2018-8715)
  • 原文地址:https://blog.csdn.net/sheziqiong/article/details/127750699