大家好!我是程序猿老A,感謝您閱讀本文,歡迎一鍵三連哦。
💞當前專欄:微信小程序畢業設計
精彩專欄推薦👇🏻👇🏻👇🏻
🎀 Python畢業設計
🌎Java畢業設計
開發運行環境
①前端:微信小程序開發工具
② 后端:Java
- 框架:springboot
- JDK版本:JDK1.8
- 服務器:tomcat7
- 數據庫:mysql 5.7
- 數據庫工具:Navicat12
- 開發軟件:eclipse/myeclipse/idea
- Maven包:Maven3.3.9
- 瀏覽器:谷歌瀏覽器
源碼下載地址:
https://download.csdn.net/download/2301_76953549/89227754
論文目錄
【如需全文請按文末獲取聯系】
一、項目簡介
英語互助小程序使用Java語言進行編碼,使用Mysql創建數據表保存本系統產生的數據。系統可以提供信息顯示和相應服務,其管理英語互助小程序信息,查看英語互助小程序信息,管理英語互助小程序。
二、系統設計
2.1軟件功能模塊設計
在前面分析的管理員功能的基礎上,進行接下來的設計工作,最終展示設計的結構圖(見下圖)。
2.2數據庫設計
(1)下圖是用戶實體和其具備的屬性。
(2)下圖是考試記錄表實體和其具備的屬性。
(3)下圖是興趣小組實體和其具備的屬性。
(5)下圖是答題詳情表實體和其具備的屬性。
(9)下圖是錯題表實體和其具備的屬性。
(10)下圖是學習討論實體和其具備的屬性。
三、系統項目部分截圖
3.1用戶信息管理
如圖5.1顯示的就是用戶信息管理頁面,此頁面提供給管理員的功能有:用戶信息的查詢管理,可以刪除用戶信息、修改用戶信息、新增用戶信息,
還進行了對用戶名稱的模糊查詢的條件
3.2興趣小組管理
如圖5.2顯示的就是興趣小組管理頁面,此頁面提供給管理員的功能有:查看已發布的興趣小組數據,修改興趣小組,興趣小組作廢,即可刪除,還進行了對興趣小組名稱的模糊查詢 興趣小組信息的類型查詢等等一些條件。
3.3小組打卡管理
如圖5.3顯示的就是小組打卡管理頁面,此頁面提供給管理員的功能有:根據小組打卡進行條件查詢,還可以對小組打卡進行新增、修改、查詢操作等等。
四、部分核心代碼
package com.controller;import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;/*** 小組打卡* 后端接口* @author* @email
*/
@RestController
@Controller
@RequestMapping("/xingquxiaozuLiuyan")
public class XingquxiaozuLiuyanController {private static final Logger logger = LoggerFactory.getLogger(XingquxiaozuLiuyanController.class);@Autowiredprivate XingquxiaozuLiuyanService xingquxiaozuLiuyanService;@Autowiredprivate TokenService tokenService;@Autowiredprivate DictionaryService dictionaryService;//級聯表service@Autowiredprivate XingquxiaozuService xingquxiaozuService;@Autowiredprivate YonghuService yonghuService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永不會進入");else if("用戶".equals(role))params.put("yonghuId",request.getSession().getAttribute("userId"));if(params.get("orderBy")==null || params.get("orderBy")==""){params.put("orderBy","id");}PageUtils page = xingquxiaozuLiuyanService.queryPage(params);//字典表數據轉換List<XingquxiaozuLiuyanView> list =(List<XingquxiaozuLiuyanView>)page.getList();for(XingquxiaozuLiuyanView c:list){//修改對應字典表字段dictionaryService.dictionaryConvert(c, request);}return R.ok().put("data", page);}/*** 后端詳情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id, HttpServletRequest request){logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);XingquxiaozuLiuyanEntity xingquxiaozuLiuyan = xingquxiaozuLiuyanService.selectById(id);if(xingquxiaozuLiuyan !=null){//entity轉viewXingquxiaozuLiuyanView view = new XingquxiaozuLiuyanView();BeanUtils.copyProperties( xingquxiaozuLiuyan , view );//把實體數據重構到view中//級聯表XingquxiaozuEntity xingquxiaozu = xingquxiaozuService.selectById(xingquxiaozuLiuyan.getXingquxiaozuId());if(xingquxiaozu != null){BeanUtils.copyProperties( xingquxiaozu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把級聯的數據添加到view中,并排除id和創建時間字段view.setXingquxiaozuId(xingquxiaozu.getId());view.setXingquxiaozuYonghuId(xingquxiaozu.getYonghuId());}//級聯表YonghuEntity yonghu = yonghuService.selectById(xingquxiaozuLiuyan.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把級聯的數據添加到view中,并排除id和創建時間字段view.setYonghuId(yonghu.getId());}//修改對應字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到數據");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody XingquxiaozuLiuyanEntity xingquxiaozuLiuyan, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,xingquxiaozuLiuyan:{}",this.getClass().getName(),xingquxiaozuLiuyan.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永遠不會進入");else if("用戶".equals(role))xingquxiaozuLiuyan.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));xingquxiaozuLiuyan.setInsertTime(new Date());xingquxiaozuLiuyan.setCreateTime(new Date());xingquxiaozuLiuyanService.insert(xingquxiaozuLiuyan);return R.ok();}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody XingquxiaozuLiuyanEntity xingquxiaozuLiuyan, HttpServletRequest request){logger.debug("update方法:,,Controller:{},,xingquxiaozuLiuyan:{}",this.getClass().getName(),xingquxiaozuLiuyan.toString());String role = String.valueOf(request.getSession().getAttribute("role"));
// if(false)
// return R.error(511,"永遠不會進入");
// else if("用戶".equals(role))
// xingquxiaozuLiuyan.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));//根據字段查詢是否有相同數據Wrapper<XingquxiaozuLiuyanEntity> queryWrapper = new EntityWrapper<XingquxiaozuLiuyanEntity>().eq("id",0);logger.info("sql語句:"+queryWrapper.getSqlSegment());XingquxiaozuLiuyanEntity xingquxiaozuLiuyanEntity = xingquxiaozuLiuyanService.selectOne(queryWrapper);if(xingquxiaozuLiuyanEntity==null){xingquxiaozuLiuyanService.updateById(xingquxiaozuLiuyan);//根據id更新return R.ok();}else {return R.error(511,"表中有相同數據");}}/*** 刪除*/@RequestMapping("/delete")public R delete(@RequestBody Integer[] ids){logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());xingquxiaozuLiuyanService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 批量上傳*/@RequestMapping("/batchInsert")public R save( String fileName, HttpServletRequest request){logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try {List<XingquxiaozuLiuyanEntity> xingquxiaozuLiuyanList = new ArrayList<>();//上傳的東西Map<String, List<String>> seachFields= new HashMap<>();//要查詢的字段Date date = new Date();int lastIndexOf = fileName.lastIndexOf(".");if(lastIndexOf == -1){return R.error(511,"該文件沒有后綴");}else{String suffix = fileName.substring(lastIndexOf);if(!".xls".equals(suffix)){return R.error(511,"只支持后綴為xls的excel文件");}else{URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//獲取文件路徑File file = new File(resource.getFile());if(!file.exists()){return R.error(511,"找不到上傳文件,請聯系管理員");}else{List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//讀取xls文件dataList.remove(0);//刪除第一行,因為第一行是提示for(List<String> data:dataList){//循環XingquxiaozuLiuyanEntity xingquxiaozuLiuyanEntity = new XingquxiaozuLiuyanEntity();
// xingquxiaozuLiuyanEntity.setXingquxiaozuId(Integer.valueOf(data.get(0))); //興趣小組 要改的
// xingquxiaozuLiuyanEntity.setYonghuId(Integer.valueOf(data.get(0))); //用戶 要改的
// xingquxiaozuLiuyanEntity.setXingquxiaozuLiuyanText(data.get(0)); //小組打卡內容 要改的
// xingquxiaozuLiuyanEntity.setInsertTime(date);//時間
// xingquxiaozuLiuyanEntity.setCreateTime(date);//時間xingquxiaozuLiuyanList.add(xingquxiaozuLiuyanEntity);//把要查詢是否重復的字段放入map中}//查詢是否重復xingquxiaozuLiuyanService.insertBatch(xingquxiaozuLiuyanList);return R.ok();}}}}catch (Exception e){e.printStackTrace();return R.error(511,"批量插入數據異常,請聯系管理員");}}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));// 沒有指定排序字段就默認id倒序if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){params.put("orderBy","id");}PageUtils page = xingquxiaozuLiuyanService.queryPage(params);//字典表數據轉換List<XingquxiaozuLiuyanView> list =(List<XingquxiaozuLiuyanView>)page.getList();for(XingquxiaozuLiuyanView c:list)dictionaryService.dictionaryConvert(c, request); //修改對應字典表字段return R.ok().put("data", page);}/*** 前端詳情*/@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id, HttpServletRequest request){logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);XingquxiaozuLiuyanEntity xingquxiaozuLiuyan = xingquxiaozuLiuyanService.selectById(id);if(xingquxiaozuLiuyan !=null){//entity轉viewXingquxiaozuLiuyanView view = new XingquxiaozuLiuyanView();BeanUtils.copyProperties( xingquxiaozuLiuyan , view );//把實體數據重構到view中//級聯表XingquxiaozuEntity xingquxiaozu = xingquxiaozuService.selectById(xingquxiaozuLiuyan.getXingquxiaozuId());if(xingquxiaozu != null){BeanUtils.copyProperties( xingquxiaozu , view ,new String[]{ "id", "createDate"});//把級聯的數據添加到view中,并排除id和創建時間字段view.setXingquxiaozuId(xingquxiaozu.getId());}//級聯表YonghuEntity yonghu = yonghuService.selectById(xingquxiaozuLiuyan.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把級聯的數據添加到view中,并排除id和創建時間字段view.setYonghuId(yonghu.getId());}//修改對應字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到數據");}}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody XingquxiaozuLiuyanEntity xingquxiaozuLiuyan, HttpServletRequest request){logger.debug("add方法:,,Controller:{},,xingquxiaozuLiuyan:{}",this.getClass().getName(),xingquxiaozuLiuyan.toString());xingquxiaozuLiuyan.setInsertTime(new Date());xingquxiaozuLiuyan.setCreateTime(new Date());xingquxiaozuLiuyanService.insert(xingquxiaozuLiuyan);return R.ok();}}
五、獲取源碼或論文
如需對應的論文或源碼,以及其他定制需求,也可以下方微?聯系。