大家好!我是岛上程序猿,感谢您阅读本文,欢迎一键三连哦。
💞当前专栏:Java毕业设计
精彩专栏推荐👇🏻👇🏻👇🏻
目录
一、项目简介
本文以java为开发技术,实现了一个儿童思德教育网管理平台。儿童思德教育网管理平台的主要使用者分为管理员和用户;用户:首页、个人中心、后台管理、购物车等详细内容。管理员:个人中心、用户管理、育儿资讯管理、图书分类管理、图书信息管理、系统管理、订单管理等功能。通过这些功能模块的设计,基本上实现了整个儿童思德教育网信息管理的过程。
具体在系统设计上,采用了B/S的结构,同时,也使用java技术在动态页面上进行了设计,后台上采用Mysql数据库,是一个非常优秀的儿童思德教育网管理平台。
二、系统设计
2.1软件功能模块设计
系统整体功能如下:
2.2数据库设计
本系统的E-R图如下图所示:
1、用户属性图如图4-3所示:
三、系统项目部分截图
3.1系统功能模块
儿童思德教育网系统网站,在系统首页可以查看首页、育儿资讯、图书信息、系统公告、个人中心、后台管理、购物车等内容,如图5-1所示。
育儿资讯,在育儿资讯页面中输入时间、账号、昵称、点击次数等详细内容进行评论或我的收藏;如图5-2所示。
图书信息:在图书信息页面中可以查看图书名称、价格、单次购买、库存、图书分类、作者、出版社、点击次数等详细内容添加到购物车,进行立即购买、详情、评论和我的收藏;如图5-3所示。
个人中心:在个人中心页面中输入账号、昵称、密码、性别、年龄、联系电话、电子邮箱、QQ、生日、余额等详细内容进行点我充值或更新信息;并可根据我的订单、我的地址、我的收藏等进行的操作;如图5-4所示。
3.2管理员功能模块
管理员登录:通过填写注册时输入的用户名、密码进行登录,如图5-5所示
管理员:管理员登录进入儿童思德教育网网站可以查看个人中心、用户管理、育儿资讯管理、图书分类管理、图书信息管理、系统管理、订单管理等信息进行详细操作;如图5-5所示。
用户管理:在用户管理页面可以对索引、账号、昵称、性别、年龄、联系电话、电子邮箱、qq、生日等详细内容进行详情、修改或删除;如图5-6所示。
图书信息管理:在图书信息管理页面可以对索引、图书编号、图书名称、图书分类、图片、作者、出版社、价格、单限、库存等内容进行详情、修改、删除或查看评论,如图5-9所示。
四、论文目录
摘要 II
Abstract III
目录 IV
1概述 1
1.1课题背景及意义 1
1.2 国内外研究现状 1
1.3 本课题主要工作 2
2系统开发环境 3
2.1 java技术 3
2.2 Mysql数据库 3
2.3 B/S结构 4
3 系统分析 5
3.1 可行性分析 5
3.1.1 技术可行性 5
3.1.2操作可行性 5
3.1.3 经济可行性 5
3.1.4 法律可行性 6
3.2系统流程分析 6
3.2.1系统开发流程 6
3.2.2 用户登录流程 7
3.2.3 系统操作流程 7
3.2.4 添加信息流程 8
3.2.5 修改信息流程 9
3.2.6 删除信息流程 9
3.3系统用例分析 10
3.3.1管理员用例图 10
3.3.2用户用例图 10
4系统设计 11
4.1 系统概述 11
4.2 系统结构设计 11
4.3数据库设计 12
4.3.1 数据库设计原则 12
4.3.2 数据库实体 12
4.3.3 数据库表设计 13
5系统详细设计 18
5.1系统功能模块 18
5.2管理员功能模块 19
5.3用户功能模块 23
6系统测试 26
6.1系统测试的意义 26
6.2 测试方法 27
6.3测试分析 27
结论 28
致谢 29
参考文献 30
五、部分核心代码
4.1 用户部分
package com.controller;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
return R.error("用户名已存在。");
}
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
4.2文件部分
package com.controller;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;
/**
* 上传文件映射表
*/
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
@Autowired
private ConfigService configService;
/**
* 上传文件
*/
@RequestMapping("/upload")
public R upload(@RequestParam("file") MultipartFile file, String type,HttpServletRequest request) throws Exception {
if (file.isEmpty()) {
throw new EIException("上传文件不能为空");
}
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
String fileName = new Date().getTime()+"."+fileExt;
File dest = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);
file.transferTo(dest);
if(StringUtils.isNotBlank(type) && type.equals("1")) {
ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
if(configEntity==null) {
configEntity = new ConfigEntity();
configEntity.setName("faceFile");
configEntity.setValue(fileName);
} else {
configEntity.setValue(fileName);
}
configService.insertOrUpdate(configEntity);
}
return R.ok().put("file", fileName);
}
/**
* 下载文件
*/
@IgnoreAuth
@RequestMapping("/download")
public void download(@RequestParam String fileName, HttpServletRequest request, HttpServletResponse response) {
try {
File file = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);
if (file.exists()) {
response.reset();
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName+"\"");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setContentType("application/octet-stream; charset=UTF-8");
IOUtils.write(FileUtils.readFileToByteArray(file), response.getOutputStream());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
获取源码或论文
如需对应的源码,可以评论或者私信都可以。