目 录
第一章 绪论 4
1.1 “互联网+”农业 4
第二章 互联网软件开发技术 6
2.1 Spring框架 6
2.2 Spring MVC 9
2.3 MyBatis 10
2.4 MySQL 11
2.5 Maven 12
2.6 Bootstrap 13
第三章 互联网软件开发环境搭建 14
3.1 基本开发环境配置 14
3.2 建立Maven项目 14
3.3 MyBatis与Spring整合 16
3.4 Spring MVC配置 22
3.5 web.xml配置 23
第四章 “互联网+农业“案例介绍 25
4.1 系统需求分析 25
4.1.1 业务描述 25
4.1.2 系统功能架构图 25
4.1.3 系统技术规格 25
4.2 系统概要设计 27
4.2.1 项目总体框架 27
4.2.2 业务能力视图 27
4.2.3 系统数据视图 30
4.2.4 系统组件视图 30
4.3 系统详细设计 33
4.3.1 数据库设计 33
4.3.2 系统组件设计 39
4.3.3 系统功能模块设计 45
4.4 系统核心功能实现 57
4.4.1 CRUD(增删改查) 57
4.4.2表的关联查询(作物的种植功能、菜地收益计算、任务、订单等功能) 66
4.4.3菜地最佳种植方案推荐(多个约束条件下的求最值的规划问题) 67
4.5 系统测试 69
4.5.1 登录注册模块 69
4.5.2农场管理模块 72
4.5.3系统管理模块 80
4.5.4结论 81
第五章 反思、总结与展望 82
第四章 “互联网+农业“案例介绍
在搭建好开发环境后,我们通过软件工程的需求分析、概要设计、详细设计以及列举几个核心功能的实现流程来对整个开发流程进行详细介绍,最后对整个系统进行详细测试来保证系统的稳定性。
4.1 系统需求分析
4.1.1 业务描述
该系统结构集农业生产、销售、服务、管理于一身,针对农业信息化的需求进行功能设计。并且系统结构应具有一定扩展性,在新增其他服务功能的同时不修改原有系统功能。
系统需要实现的目标主要是实现“互联网+农业”的新融合发展模式下搭建管理维护平台,主要包括农场管理、系统管理两个模块。通过这两个模块对该企业的生产、销售、管理、服务等流程进行全方位管理和系统自身的运行维护,系统主要面向的对象是农场管理人员。
4.1.2 系统功能架构图
根据上述对系统业务功能的描述,设计出系统的业务架构图如图4-1-1所示,系统被分为农场管理、系统管理两个主要功能模块。
图4-1-1 系统业务架构图
4.1.3 系统技术规格
1、总体设计原则
系统从总体架构设计、业务设计和技术架构设计上可以被分为三个部分:一是Web平台,Web平台具有很强的开放性,外部用户也可以通过浏览器访问;平台向用户提供系统交互接口,为用户提供方便、快捷、高效的系统管理界面的同时,可以提高农场信息化管理效率;而且对于系统的开发、维护和升级比较便利;二是计算处理层,保证用户的数据请求能够准确、高效、及时的执行,能够快速进行响应,为系统用户提供精确的农业信息和种植推荐。该层级在架构上应当相互独立、在业务上相互关联的各个模块组成,这些模块共同处理用户服务请求,进行相应计算,实现相应功能;三是数据存储层,该层位于整个系统的最底层,一方面负责保存和整合用户的相关数据信息和系统的管理信息,实现数据整合、存储的环节,另一方面负责向系统上层提供计算所需的数据信息,保证各个功能模块所需数据输入。
Web平台将采用B/S架构模式,需要实现农场、商城管理、系统管理等。其中商城主要涉及企业所管理商家的操作,包括新增商家、修改商家信息等。农场管理是该系统的主要部分,既包含农场本身的生产、供应、销售信息进行查看、管理,如菜地管理、菜品管理,又包含农场客户的相关管理,如对农场客户信息的管理。系统管理主要对系统使用用户进行用户管理以及面向管理员的操作日志管理。
计算机处理层采用模块化的设计思想,分模块实现各个系统模块,保证系统的容错性以及可扩展性。整个处理层将采用请求-响应的模式,利用不同的模块中的不同方法对用户的请求提出不同的响应。
数据存储层采用主流的MySQL关系数据库对系统产生的所有数据进行存储,实现数据高效、安全存储,以便后续处理与维护。
客户端与服务器端技术选择:
在Web平台的选择上主要注重用户体验、用户交互、跨平台以及便于使用的特性,因此使用了HTML、CSS和JavaScript,并且使用了技术成熟的Bootstrap前端框架,有效的提升了系统的开发效率。
服务端采用Spring、Spring MVC、MyBatis框架进行开发。主要是因为Spring、Spring MVC、MyBatis框架都具有极高扩展性和伸缩性而且他们的技术已经成熟。利用Spring的IoC机制能够将程序之间的关系的控制权交给容器,从而减少了程序的耦合;利用MyBatis作为数据持久化框架,在提升项目数据层可移植性的同时也提高项目的开发效率;Spring MVC将整个业务流程更加清晰,使业务流程变得组件化,最终使得程序更易于开发。
<%--
Created by IntelliJ IDEA.
User: Eternity-Myth
Date: 2018/5/11
Time: 19:27
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=utf-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>登录</title>
<!-- Bootstrap -->
<link href="css/font.css" rel="stylesheet">
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/bootstrapValidator.min.css">
<!-- Custom styles for this template -->
<!-- 可选的 Bootstrap 主题文件(一般不用引入) -->
<!--<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">-->
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body style="background-image:url(agro/UIpic/background.jpg);background-repeat:no-repeat;background-attachment:fixed;background-size: 100%">
<div class="container-fluid">
<div class="row" style="height:100px"></div>
<div class="row">
<div class="col-md-6 col-md-offset-2">
<img src="agro/UIpic/agro logo.png" style="height:100px">
</div>
</div>
<br>
<form id="signInForm" name="form"
onsubmit="form.$valid && signIn()" role="form">
<div class="row">
<div class="col-md-8 col-md-offset-2" style="background-color:rgba(80,77,77,0.9);height:300px">
<div class="biaoti">
登 录
</div>
<div class="form-group">
<label class="col-md-2 col-md-offset-3 control-label normalfonts"> 用户名</label>
<div class="col-md-4">
<input type="text" style="height:25px" class="form-control" name="userName" required/>
</div>
<div class="col-md-3" style="height:50px"></div>
</div>
<div class="form-group">
<label class="col-md-2 col-md-offset-3 control-label normalfonts"> 密 码</label>
<div class="col-md-4">
<input type="password" style="height:25px" class="form-control" name="userPass" required/>
</div>
<div class="col-md-3" style="height:50px"></div>
</div>
<div class="form-group">
<div class="col-md-2 col-md-offset-3">
<input type="text" class="form-control" style="height:25px; margin-left:20px" name="code"
size="8"
maxlength="4" placeholder="验证码"/>
</div>
<div class="col-md-4">
<img id="validateCodeImg" src="/user/validateCode" style="height:25px;margin-left:10px"
onclick="this.src=this.src+'?'+new Date() + Math.floor(Math.random() * 24)"/>
<a style="color:#E3E3E3;margin-left:5px" href="javascript:validateCodeImg.onclick()">
看不清,换一个</a>
</div>
<div class="col-md-3" style="height:50px"></div>
</div>
<div class="row">
<div class="col-md-2 col-sm-offset-5">
<button type="submit" name="submit" class="btn btn-md btn-primary btn-block"
style="background-color:rgba(88,88,88,0.7)">登 录
</button>
</div>
<div class="col-md-5" style="height:50px"></div>
</div>
<div class="row">
<div style="text-align:center">
<p style="color:#FFFFFF">没有账号,前往 <a style="color:#E3E3E3" href="sign-up.jsp">注册</a></p>
</div>
</div>
</div>
</div>
</form>
</div>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="lib/jquery-1.12.3.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="lib/bootstrap.min.js"></script>
<script src="lib/bootstrapValidator.min.js"></script>
<script src="js/sign.js"></script>
</body>
</html>