如何使用Java代码制作一份满足大学生需求的毕业设计系统?
该文章仅限学习使用,旨在帮助某些和我一样有相同大学经历的同学,我写这篇文章,主要有两点想法:
一、未毕业且尚处于初入学的学生,希望我这篇文章能让你明确自己的方向,选择自己喜欢的专业和方向,通过四年大学时光,努力去学习这方面知识,java也好,测试也罢,C#、C++等所有的计算机方向专业,只要有兴趣,就去坚持。
二、未毕业但尚处于毕业期的学生,希望我这篇文章能带领你做完毕业设计,并从这次系统化的操作中学会Java编程。
郑重声明:该文章仅用于学习,请勿用于商业用途,违者后果自负!
补充说明:该文章中所有教学内容基于一定的Java基础,文章所写内容有限,如果疑惑不解之处,可加微信f2468433277详细咨询。
一、前期准备
一个满足学校需求的Java毕业设计系统,需要以下开发环境和工具:
1、jdk。(jdk是Java开发的必要开发环境,版本可自由选择,这里以jdk1.7为示范版本,安装教程可在线搜索,全网均可找到。)
2、mysql。(mysql是数据库的一种,在Java开发中,大多以mysql为数据存储中心,版本请自行选择,安装教程网上均可找到,每个版本之间存在少量差距,建议一个版本用到底,这里以mysql5.7为示范版本。)
3、tomcat。(版本可自由选择,建议使用非安装版,这里以tomcat8.5为示范版本。)
4、maven。(由于毕业设计大多为大型管理系统,故这里教学创建的是maven项目,所以需要用到maven,建议使用非安装版,这里以maven3.5为示范版本,如想了解更多关于maven的知识,可上网查询,这里不做讲解。)
提示:拥有第一条,你可直接通过txt文件编写Java代码,并在cmd窗口运行,拥有第二条,你可以使用Java代码完成与数据库的交互,下面还需要几个辅助工具,能更帮助你快速的完成代码编写。
5、idea编辑器。(由于本人所学为idea编辑器,故这里使用idea作为示范工具,若你使用的是eclipse编辑器,相关操作会有不同,你可以只看代码部分。)
6、sqlYog或者Navicat。(数据库的可视化工具,建库建表可直接跳过代码部分,简化编程过程,提高编程效率。)
最后两条的程序可在网上下载,建议使用某些操作完成免费使用。
二、设计和建立数据库
做开发前,先别急着写代码,首先要思考自己的系统应该是什么样的,即含有哪些功能,根据这些功能划分出相应的数据表,由于文章限制,我这里以自己制作过的一个干洗店管理系统为例做讲解。
首先,由于是管理系统,我们需要有注册和登录功能,所以需要一个用户表,另外要对衣物做管理,所以需要一张衣物表,衣物需要检验是否存在质量问题,所以需要一张检验衣物信息表,衣物清洗时有状态,因此需要一张清洗衣物表,衣物洗完后需要存放在仓库,因此需要一张库存表。根据这样的思路,将数据库设计出来,每张表使用特定字段关联,建好表以后再开始下一步。
三、寻找框架
在Java开发过程中,我们首先要明确自己想开发的是什么项目,使用什么架构,是C/S还是B/S。通俗点讲,C/S就是客户端类型,B/S就是网页版。目前流行的基本都是B/S架构,所以你需要一个Java后台框架以及一个优美的前端框架。
作为一个大学生,想要设计一个界面精美的前端页面,需要很强的前端开发能力,以及大量的时间,所以这里我建议大家去网上找一个完整的前端框架,自己进行修改,一样可以做的非常优美,而且还节省了时间。
另外,目前市面上流行的Java后台框架非常多,大学所学基本都是SSH,这种形式的早已经淘汰了,网上也很难找到教学教程,不适合社会主流。SSM框架比较适合大学生的毕业设计,轻简异动,稳定高效。SpringBoot分布式的不建议大学生涉及,这里面涵盖的知识非常广,如果你是刚入校的大学生,我建议你从头到尾好好学,但如果你是临近毕业的学生,建议你先别接触,第一会影响你毕业设计的开发,第二会扰乱你对开发的认知,等了解了学会了Java的其他框架,再去接触学习。
我的下载资源中有纯净版的SSM项目,下载即可使用!
四、代码部分
接下来,我们进入正题——代码部分。
首先,我们将SSM纯净版框架下载下来,通过idea打开。操作步骤如下图所示:
选择下载后解压的项目:
此处选择这两个,剩下的一直Next就行:
接下来,在idea的File—>settings里找到maven,完成如下配置:
根据数据库字段创建实体类:
文章内容有限,这里以数据展示功能为例,做详细介绍:
1、创建jsp前端页面代码(这里可以将在网上下载的前端框架进行修改使用)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>Title</title>
<script src="/js/jquery-3.3.1.min.js"></script>
</head>
<body>
<%--1.条件查询--%>
<form id="myForm" action="/emp/show" method="post" style="text-align: center">
姓名:<input type="text" name="name" value="${page.name}">
生日:<input type="date" name="startBirth" value="<fmt:formatDate value='${page.startBirth}' pattern='yyyy-MM-dd'/>" >-
<input type="date" name="endBirth" value="<fmt:formatDate value='${page.endBirth}' pattern='yyyy-MM-dd'/>" >
部门:<select name="deptId" >
<option value="0">--请选择--</option>
<c:forEach var="dept" items="${depts}">
<option value="${dept.did}"
<c:if test="${dept.did==page.deptId}">selected=true</c:if>
>${dept.dname}</option>
</c:forEach>
</select>
<input type="hidden" id="pageNum" name="currPage" value="1">
<input type="submit" value="搜索">
</form>
<%--2.数据展示--%>
<table align="center" cellpadding="15" cellspacing="0" border="1">
<tr>
<td><input type="checkbox" id="checkAll">全选</td>
<td>编号</td>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
<td>生日</td>
<td>津贴</td>
<td>工资</td>
<td>部门</td>
<td>大头贴</td>
<td><input type="button" id="batchDel" value="批量删除">| <input type="button" onclick="location.href='/emp/add1'" value="新增"></td>
</tr>
<c:if test="${not empty list}">
<c:forEach var="emp" items="${list}">
<tr>
<td><input class="checkNow" value="${emp.id}" type="checkbox"></td>
<td>${emp.id}</td>
<td>${emp.name}</td>
<td>${emp.age}</td>
<td>${emp.sex}</td>
<td><fmt:formatDate value="${emp.birth}" pattern="yyyy-MM-dd"/></td>
<td>${emp.bonus}</td>
<td>${emp.salary}</td>
<td>${emp.dept.dname}</td>
<td><a href="/emp2/down?fname=${emp.imgurl}"><img src="${emp.imgurl}" alt="" width="120px" height="120px"></a></td>
<td><a href="/emp/deleteById/${emp.id}">删除</a>|
<a href="/emp/update1/${emp.id}">修改</a></td>
</tr>
</c:forEach>
</c:if>
</table>
<%--3.分页--%>
<table align="center" cellpadding="10" cellspacing="10" border="1">
<tr>
<td><a href="javascript:goPage(1)">首页</a></td>
<td><a href="javascript:goPage(${page.currPage-1})">上一页</a></td>
<c:forEach var="i" begin="1" end="${page.totalPage}">
<td><a href="javascript:goPage(${i})">${i}</a></td>
</c:forEach>
<td><a href="javascript:goPage(${page.currPage+1})">下一页</a></td>
<td><a href="javascript:toPage()">跳转</a>到第<input size="2" type="text" value="${page.currPage}" id="go">页</td>
<td><a href="javascript:goPage(${page.totalPage})">尾页</a></td>
</tr>
</table>
<!--js部分-->
<script>
$("#batchDel").click(function () {
//1.获取到选中的ids 2.ids数组 送到后台
var ids=new Array();
$(".checkNow:checked").each(function () {
var id=$(this).val()
ids.push(id);
});
$.post("/emp2/batDel",{ids:ids.toString()},function (data) {
location.href="/";
});
});
//prop和attr的区别?
//实现全选和全不选
$("#checkAll").click(function () {
if($(this).prop("checked")){
$(".checkNow").prop("checked",true)
}else {
$(".checkNow").prop("checked",false)
}
});
function goPage(page) {
var total=${page.totalPage};
if(page>total){
page=total;
}
if(page<1){
page=1;
}
$("#pageNum").val(page);
$("#myForm").submit()
}
function toPage() {
var page=$("#go").val();
goPage(page)
}
</script>
</body>
</html>
2、书写后台代码,Java项目一共分为三层结构,其中包含控制器层Controller,服务层Service层以及服务层mapper层也叫dao层。以展示代码为例,现在一一列举:
(1)、控制层
@RequestMapping("/show")
public ModelAndView show(PageBean page, ModelAndView mav){
//取 调 存 转
//查询所有的部门--show.jsp中下拉框展示所有的部门
List<Dept> depts=service.selectDepts();
//模糊分页条件查询员工
List<Emp> list=service.show(page);
//存 depts list page
mav.addObject("depts",depts);
mav.addObject("list",list);
mav.addObject("page",page);
//转
mav.setViewName("show");
return mav;
}
该代码中需要结合部门表进行数据处理,所以代码看起来繁琐,其实数据的展示可以简化,@RequestMapping(“/show”)对应的是前台的路径,这是前后台交互必须的路径。前端页面通过该路径找到该方法,该方法调用service层的取数据方法,将返回的List集合给到控制层,控制层通过List的方式接受传过来的值,通过ModelAndView 发回给前端。
service层代码
List<Emp> show(PageBean page);
mapper层代码:
<select id="selectByExample" parameterType="com.pojo.DeptExample" resultMap="BaseResultMap">
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List" />
from dept
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="rows != null">
<if test="offset != null">
limit ${offset}, ${rows}
</if>
<if test="offset == null">
limit ${rows}
</if>
</if>
</select>
这就是一整段前后台交互的代码,相当于数据库中的“查”操作,其他的增删改只需要修改部分代码即可,由于文章内容限制,其他代码就不做过多赘述,如有疑问,可加微信了解,本人提供Java毕业设计的指导和教学。