项目介绍
随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势,商品交易当然也不能排除在外,随着商品交易管理的不断成熟,它彻底改变了过去传统的经营管理方式,不仅使商品交易管理难度变低了,还提升了商品交易管理的灵活性。这种个性化的网上商品交易特别注重交互协调经营与管理的相互配合,激发了管理人员的创造性与主动性,对商品交易的管理而言非常有利。
星空游戏购买下载平台的设计主要是对系统所要实现的功能进行详细考虑,确定所要实现的功能后进行界面的设计,在这中间还要考虑如何可以更好的将功能及页面进行很好的结合,方便用户可以很容易明了的找到自己所需要的信息,还有系统平台后期的可操作性,通过对信息内容的详细了解进行技术的开发。
本设计的基本思想就是采用SSM框架开发星空游戏购买下载平台,以Java为开发语言,MySQL为数据库,后端使用了Spring、Spring MVC和MyBatis三个框架(简称SSM),其中用Spring MVC实现。测试结果表明,该星空游戏购买下载平台能以一种简便、轻量级的方式实现了管理的基本功能,降低了开发的复杂性,提高了系统的可维护性,具有一定的应用价值。
4.1系统结构设计
架构设计的目的是反映一个结构和其他元素之间的关系,抽象,通常用于指导大型软件系统。将一个巨大的任务细分为多个小任务的过程是系统架构的总体设计。完成小任务后,整个任务就可以完成了。具体的实现过程是分解系统,分析各部分的功能、接口和逻辑关系。页面是一个一个模块组建而成的,层次结构分明,思想运用的是面向对象,一个实体对应一个数据类型,还要对每个数据类添加一个实施类。
星空游戏购买下载平台的实现主要包括用户和管理员两个用户角色,由于系统用户角色不同所使用的功能模块相应不同,管理员根据需求对系统功能模块进行维护管理操作。
根据我们对星空游戏购买下载平台的功能要求进行分析,我们将本系统划分为以下几各主要的模块,如图4-1所示。
开发环境
编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序ue/爬虫/c#/asp.net
系统实现
5.1前台功能模块
用户进入星空游戏购买下载平台平台可以查看首页、游戏信息、留言反馈、我的、后台等操作,系统前台主界面如图5-1所示。
图5-1 系统前台主界面
用户通过登录界面,进行在线填写用户名和密码,信息输入完成后选择提交,用户登录完成,如果用户没有自己的账号,需要在线注册成为网站会员,用户进入到注册界面,进行填写用户的基本信息内容,信息编辑完成后选择提交,如图5-2所示。
图5-2 用户登录界面
用户通过游戏信息列表可以查看网站已有的游戏信息类别,用户根据需求可以进行在线选择分类进行查看游戏信息,通过游戏信息列表查看界面展示的游戏信息,如图5-3所示,用户根据自己的需求可以点击商品图片进入到游戏详情界面,通过详情界面获取到游戏名称、开发商、价格、游戏简介、上市日期等信息,根据需求在线评价操作,也可结合需求进行在线购买等操作,如图5-4所示。
图5-3 游戏信息列表界面
图5-4 游戏信息详情界面
用户通过购买页面可以进行查看订单编号、游戏分类、开发商、价格、购买日期、用户名、用户姓名、联系方式等信息,进行提交订单操作,如图5-5所示。
图5-5提交购买界面
留言反馈:通过列表可以进行在线输入留言内容进行在线提交留言反馈信息,如图5-6所示。
图5-6 留言反馈界面
个人中心:通过页面可以进行获取个人中心、我的收藏等功能模块,进行相对应操作。个人中心:通过页面可以进行在线更新个人信息,进行在线更新操作,如图5-7所示。
图5-7个人中心界面
5.2用户后台功能模块
用户通过后台进行查看个人中心、订单信息管理、游戏下载管理、我的收藏管理、留言板管理等功能模块,进行相对应操作。
订单信息管理,用户根据自己的订单信息,可以进行查看订单编号、游戏分类、游戏名称、开发商、价格、购买日期、用户名、用户姓名、联系方式、是否支付等,进行在线查看订单或在线支付操作,并通过输入订单编号进行查询,如图5-8所示。
图5-8订单信息管理界面
游戏下载管理,通过列表可以获取订单编号、游戏分类、游戏名称、开发商、游戏软件、用户名、用户姓名等信息,进行在线查看并在线下载操作,并通过输入订单编号进行查询,如图5-9所示。
图5-9游戏下载管理界面
留言板管理,通过列表可以获取留言人ID、用户名、留言内容、回复内容等信息,进行在线查看或删除操作,并通过输入用户名进行查询操作,如图5-10所示。
图5-10留言板管理界面
5.3后台功能模块
管理员通过登录窗口进行输入自己的账号信息进行在线登录,登录完成后可以对系统的个人中心、用户管理、游戏分类管理、游戏信息管理、订单信息管理、游戏下载管理、管理员管理、留言板管理、系统管理等功能模块进行在线编辑或者删除等操作。
订单信息管理,管理员根据需求可以在线查看系统查看订单编号、游戏分类、游戏名称、开发商、价格、购买日期、用户名、用户姓名、联系方式、是否支付等信息,并结合需求可以对订单信息进行在线发送、查看订单、修改或删除等操作,如图5-11所示。
图5-11订单信息管理界面
游戏下载管理,管理员通过列表可以进行在线查看订单编号、游戏分类、游戏名称、开发商、游戏软件、用户名、用户姓名等信息,进行在线查看、在线下载、修改、删除操作,如图5-12所示。
图5-12游戏下载管理界面
用户管理:通过列表可以获取用户名、用户姓名、头像、性别、联系方式、邮箱等信息,进行在线查看、添加、修改或删除操作,并通过输入用户名、用户姓名进行查询、批量删除操作,如图5-13所示。
图5-13 用户管理界面
游戏分类管理:通过列表可以获取游戏分类等信息,进行在线查看、添加、修改或删除操作,并通过输入游戏分类进行查询、批量删除操作,如图5-14所示。
图5-14游戏分类界面
游戏信息管理:通过列表可以获取游戏名称、游戏分类、图片、开发商、价格、游戏简介、上市日期等信息,进行在线查看、修改添加或删除操作,并通过输入游戏名称进行查询,如图5-15所示。
图5-15 游戏信息管理界面
管理员管理:通过列表可以获取用户名、密码、角色等信息,进行在线查看、添加、修改或删除操作,并通过输入用户名进行查询,如图5-16所示。
图5-16 管理员管理界面
留言板管理,通过列表可以获取留言人、用户名、留言内容、回复内容等信息,进行在线查看、回复、修改或删除操作,如图5-17所示。
图5-17 留言板管理界面
核心代码
package com.controller;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;
import com.entity.YouxixiazaiEntity;
import com.entity.view.YouxixiazaiView;
import com.service.YouxixiazaiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 游戏下载
* 后端接口
* @author
* @email
* @date
*/
@RestController
@RequestMapping("/youxixiazai")
public class YouxixiazaiController {
@Autowired
private YouxixiazaiService youxixiazaiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,YouxixiazaiEntity youxixiazai,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
youxixiazai.setYonghuming((String)request.getSession().getAttribute("username"));
}
EntityWrapper<YouxixiazaiEntity> ew = new EntityWrapper<YouxixiazaiEntity>();
PageUtils page = youxixiazaiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, youxixiazai), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("st")
public R list(@RequestParam Map<String, Object> params,YouxixiazaiEntity youxixiazai, HttpServletRequest request){
EntityWrapper<YouxixiazaiEntity> ew = new EntityWrapper<YouxixiazaiEntity>();
PageUtils page = youxixiazaiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, youxixiazai), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("sts")
public R list( YouxixiazaiEntity youxixiazai){
EntityWrapper<YouxixiazaiEntity> ew = new EntityWrapper<YouxixiazaiEntity>();
ew.allEq(MPUtil.allEQMapPre( youxixiazai, "youxixiazai"));
return R.ok().put("data", youxixiazaiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(YouxixiazaiEntity youxixiazai){
EntityWrapper< YouxixiazaiEntity> ew = new EntityWrapper< YouxixiazaiEntity>();
ew.allEq(MPUtil.allEQMapPre( youxixiazai, "youxixiazai"));
YouxixiazaiView youxixiazaiView = youxixiazaiService.selectView(ew);
return R.ok("查询游戏下载成功").put("data", youxixiazaiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
YouxixiazaiEntity youxixiazai = youxixiazaiService.selectById(id);
return R.ok().put("data", youxixiazai);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
YouxixiazaiEntity youxixiazai = youxixiazaiService.selectById(id);
return R.ok().put("data", youxixiazai);
}
/**
* 后端保存
*/
@RequestMapping("ve")
public R save(@RequestBody YouxixiazaiEntity youxixiazai, HttpServletRequest request){
youxixiazai.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(youxixiazai);
youxixiazaiService.insert(youxixiazai);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody YouxixiazaiEntity youxixiazai, HttpServletRequest request){
youxixiazai.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(youxixiazai);
youxixiazaiService.insert(youxixiazai);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody YouxixiazaiEntity youxixiazai, HttpServletRequest request){
//ValidatorUtils.validateEntity(youxixiazai);
youxixiazaiService.updateById(youxixiazai);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
youxixiazaiService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<YouxixiazaiEntity> wrapper = new EntityWrapper<YouxixiazaiEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
wrapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));
}
int count = youxixiazaiService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
论文参考
目 录
1 绪论 5
1.1网站开发背景 5
1.2课题意义 5
1.3研究内容 6
2 关键技术简介 7
2.1 JSP技术介绍 7
2.2 JAVA简介 7
2.3 Tomcat服务器 8
2.4 MySQL数据库 8
2.5 VUE框架 8
2.6 SSM框架 9
3 系统分析 10
3.1 可行性分析 10
3.1.1 技术可行性 10
3.1.2 经济可行性 10
3.1.3 操作可行性 10
3.2 项目设计目标与原则 10
3.3 系统流程分析 11
3.3.1 操作流程 11
3.3.2 添加信息流程 12
3.3.3 购买操作流程分析 13
3.4 系统功能需求分析 13
4 系统设计 15
4.1系统结构设计 15
4.2数据库设计 16
4.2.1 数据库E-R图设计 16
4.2.2 数据库表设计 18
5 系统的实现 21
5.1前台功能模块 21
5.2用户后台功能模块 24
5.2后台功能模块 25
6 系统测试 30
6.1系统测试的目的 30
6.2系统测试方法 30
6.3功能测试 30
总 结 32
致 谢 33
参考文献 34