項(xiàng)目介紹
互聯(lián)網(wǎng)發(fā)展至今,無(wú)論是其理論還是技術(shù)都已經(jīng)成熟,而且它廣泛參與在社會(huì)中的方方面面。它讓信息都可以通過(guò)網(wǎng)絡(luò)傳播,搭配信息管理工具可以很好地為人們提供服務(wù)。針對(duì)高校教師成果信息管理混亂,出錯(cuò)率高,信息安全性差,勞動(dòng)強(qiáng)度大,費(fèi)時(shí)費(fèi)力等問(wèn)題,采用高校學(xué)習(xí)助手小程序可以有效管理,使信息管理能夠更加科學(xué)和規(guī)范。
高校學(xué)習(xí)助手小程序使用Java語(yǔ)言進(jìn)行編碼,使用Mysql創(chuàng)建數(shù)據(jù)表保存本系統(tǒng)產(chǎn)生的數(shù)據(jù)。系統(tǒng)可以提供信息顯示和相應(yīng)服務(wù),其管理員高校學(xué)習(xí)助手小程序信息,查看高校學(xué)習(xí)助手小程序信息,管理高校學(xué)習(xí)助手小程序信息。
總之,高校學(xué)習(xí)助手小程序集中管理信息,有著保密性強(qiáng),效率高,存儲(chǔ)空間大,成本低等諸多優(yōu)點(diǎn)。它可以降低信息管理成本,實(shí)現(xiàn)信息管理計(jì)算機(jī)化。
開(kāi)發(fā)環(huán)境
編程語(yǔ)言:Java
數(shù)據(jù)庫(kù) :Mysql
系統(tǒng)架構(gòu):B/S
后端框架:SSM
編譯工具:idea或者eclipse,微信開(kāi)發(fā)者工具,jdk1.8,maven
支持定做:java/php/python/android/小程序vue/爬蟲/c#/asp.net
系統(tǒng)實(shí)現(xiàn)
5.1教師信息管理
如圖5.1顯示的就是教師信息管理頁(yè)面,此頁(yè)面提供給管理員的功能有:教師信息的查詢管理,可以刪除教師信息、修改教師信息、新增教師信息,
還進(jìn)行了對(duì)用戶名稱的模糊查詢的條件
圖5.1 教師信息管理頁(yè)面
5.2 學(xué)生信息管理
如圖5.2顯示的就是學(xué)生信息管理頁(yè)面,此頁(yè)面提供給管理員的功能有:查看已發(fā)布的
學(xué)生信息數(shù)據(jù),修改學(xué)生信息,學(xué)生信息作廢,即可刪除,還進(jìn)行了對(duì)學(xué)生信息名稱的模糊查詢 學(xué)生信息信息的類型查詢等等一些條件。
圖5.2 學(xué)生信息管理頁(yè)面
5.3作業(yè)信息管理
如圖5.3顯示的就是作業(yè)信息管理頁(yè)面,此頁(yè)面提供給管理員的功能有:根據(jù)作業(yè)信息進(jìn)行條件查詢,還可以對(duì)作業(yè)信息進(jìn)行新增、修改、查詢操作等等。
圖5.3 作業(yè)信息管理頁(yè)面
5.1公告信息管理
如圖5.4顯示的就是公告信息管理頁(yè)面,此頁(yè)面提供給管理員的功能有:根據(jù)公告信息進(jìn)行新增、修改、查詢操作等等。
圖5.4 公告信息管理頁(yè)面
核心代碼
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("/jiaoanxinxi")
public class JiaoanxinxiController {
private static final Logger logger = LoggerFactory.getLogger(JiaoanxinxiController.class);
@Autowired
private JiaoanxinxiService jiaoanxinxiService;
@Autowired
private TokenService tokenService;
@Autowired
private DictionaryService dictionaryService;
//級(jí)聯(lián)表service
@Autowired
private JiaoshiService jiaoshiService;
@Autowired
private 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,"永不會(huì)進(jìn)入");
else if("學(xué)生".equals(role))
params.put("yonghuId",request.getSession().getAttribute("userId"));
else if("教師".equals(role))
params.put("jiaoshiId",request.getSession().getAttribute("userId"));
if(params.get("orderBy")==null || params.get("orderBy")==""){
params.put("orderBy","id");
}
PageUtils page = jiaoanxinxiService.queryPage(params);
//字典表數(shù)據(jù)轉(zhuǎn)換
List<JiaoanxinxiView> list =(List<JiaoanxinxiView>)page.getList();
for(JiaoanxinxiView c:list){
//修改對(duì)應(yīng)字典表字段
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);
JiaoanxinxiEntity jiaoanxinxi = jiaoanxinxiService.selectById(id);
if(jiaoanxinxi !=null){
//entity轉(zhuǎn)view
JiaoanxinxiView view = new JiaoanxinxiView();
BeanUtils.copyProperties( jiaoanxinxi , view );//把實(shí)體數(shù)據(jù)重構(gòu)到view中
//級(jí)聯(lián)表
JiaoshiEntity jiaoshi = jiaoshiService.selectById(jiaoanxinxi.getJiaoshiId());
if(jiaoshi != null){
BeanUtils.copyProperties( jiaoshi , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把級(jí)聯(lián)的數(shù)據(jù)添加到view中,并排除id和創(chuàng)建時(shí)間字段
view.setJiaoshiId(jiaoshi.getId());
}
//修改對(duì)應(yīng)字典表字段
dictionaryService.dictionaryConvert(view, request);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到數(shù)據(jù)");
}
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody JiaoanxinxiEntity jiaoanxinxi, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,jiaoanxinxi:{}",this.getClass().getName(),jiaoanxinxi.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if(false)
return R.error(511,"永遠(yuǎn)不會(huì)進(jìn)入");
else if("教師".equals(role))
jiaoanxinxi.setJiaoshiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
Wrapper<JiaoanxinxiEntity> queryWrapper = new EntityWrapper<JiaoanxinxiEntity>()
.eq("jiaoanxinxi_name", jiaoanxinxi.getJiaoanxinxiName())
.eq("jiaoanxinxi_types", jiaoanxinxi.getJiaoanxinxiTypes())
.eq("jiaoshi_id", jiaoanxinxi.getJiaoshiId())
;
logger.info("sql語(yǔ)句:"+queryWrapper.getSqlSegment());
JiaoanxinxiEntity jiaoanxinxiEntity = jiaoanxinxiService.selectOne(queryWrapper);
if(jiaoanxinxiEntity==null){
jiaoanxinxi.setInsertTime(new Date());
jiaoanxinxi.setCreateTime(new Date());
jiaoanxinxiService.insert(jiaoanxinxi);
return R.ok();
}else {
return R.error(511,"表中有相同數(shù)據(jù)");
}
}
/**
* 后端修改
*/
@RequestMapping("/update")
public R update(@RequestBody JiaoanxinxiEntity jiaoanxinxi, HttpServletRequest request){
logger.debug("update方法:,,Controller:{},,jiaoanxinxi:{}",this.getClass().getName(),jiaoanxinxi.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
// if(false)
// return R.error(511,"永遠(yuǎn)不會(huì)進(jìn)入");
// else if("教師".equals(role))
// jiaoanxinxi.setJiaoshiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
//根據(jù)字段查詢是否有相同數(shù)據(jù)
Wrapper<JiaoanxinxiEntity> queryWrapper = new EntityWrapper<JiaoanxinxiEntity>()
.notIn("id",jiaoanxinxi.getId())
.andNew()
.eq("jiaoanxinxi_name", jiaoanxinxi.getJiaoanxinxiName())
.eq("jiaoanxinxi_types", jiaoanxinxi.getJiaoanxinxiTypes())
.eq("jiaoshi_id", jiaoanxinxi.getJiaoshiId())
;
logger.info("sql語(yǔ)句:"+queryWrapper.getSqlSegment());
JiaoanxinxiEntity jiaoanxinxiEntity = jiaoanxinxiService.selectOne(queryWrapper);
if("".equals(jiaoanxinxi.getJiaoanxinxiFile()) || "null".equals(jiaoanxinxi.getJiaoanxinxiFile())){
jiaoanxinxi.setJiaoanxinxiFile(null);
}
if(jiaoanxinxiEntity==null){
jiaoanxinxiService.updateById(jiaoanxinxi);//根據(jù)id更新
return R.ok();
}else {
return R.error(511,"表中有相同數(shù)據(jù)");
}
}
/**
* 刪除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
jiaoanxinxiService.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<JiaoanxinxiEntity> jiaoanxinxiList = new ArrayList<>();//上傳的東西
Map<String, List<String>> seachFields= new HashMap<>();//要查詢的字段
Date date = new Date();
int lastIndexOf = fileName.lastIndexOf(".");
if(lastIndexOf == -1){
return R.error(511,"該文件沒(méi)有后綴");
}else{
String suffix = fileName.substring(lastIndexOf);
if(!".xls".equals(suffix)){
return R.error(511,"只支持后綴為xls的excel文件");
}else{
URL resource = this.getClass().getClassLoader().getResource("../../upload/" + fileName);//獲取文件路徑
File file = new File(resource.getFile());
if(!file.exists()){
return R.error(511,"找不到上傳文件,請(qǐng)聯(lián)系管理員");
}else{
List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//讀取xls文件
dataList.remove(0);//刪除第一行,因?yàn)榈谝恍惺翘崾?/span>
for(List<String> data:dataList){
//循環(huán)
JiaoanxinxiEntity jiaoanxinxiEntity = new JiaoanxinxiEntity();
// jiaoanxinxiEntity.setJiaoanxinxiName(data.get(0)); //教案標(biāo)題 要改的
// jiaoanxinxiEntity.setJiaoanxinxiTypes(Integer.valueOf(data.get(0))); //教案類型 要改的
// jiaoanxinxiEntity.setJiaoanxinxiFile(data.get(0)); //課件下載 要改的
// jiaoanxinxiEntity.setJiaoshiId(Integer.valueOf(data.get(0))); //教師 要改的
// jiaoanxinxiEntity.setJiaoanxinxiContent("");//詳情和圖片
// jiaoanxinxiEntity.setInsertTime(date);//時(shí)間
// jiaoanxinxiEntity.setCreateTime(date);//時(shí)間
jiaoanxinxiList.add(jiaoanxinxiEntity);
//把要查詢是否重復(fù)的字段放入map中
}
//查詢是否重復(fù)
jiaoanxinxiService.insertBatch(jiaoanxinxiList);
return R.ok();
}
}
}
}catch (Exception e){
e.printStackTrace();
return R.error(511,"批量插入數(shù)據(jù)異常,請(qǐng)聯(lián)系管理員");
}
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
// 沒(méi)有指定排序字段就默認(rèn)id倒序
if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){
params.put("orderBy","id");
}
PageUtils page = jiaoanxinxiService.queryPage(params);
//字典表數(shù)據(jù)轉(zhuǎn)換
List<JiaoanxinxiView> list =(List<JiaoanxinxiView>)page.getList();
for(JiaoanxinxiView c:list)
dictionaryService.dictionaryConvert(c, request); //修改對(duì)應(yīng)字典表字段
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);
JiaoanxinxiEntity jiaoanxinxi = jiaoanxinxiService.selectById(id);
if(jiaoanxinxi !=null){
//entity轉(zhuǎn)view
JiaoanxinxiView view = new JiaoanxinxiView();
BeanUtils.copyProperties( jiaoanxinxi , view );//把實(shí)體數(shù)據(jù)重構(gòu)到view中
//級(jí)聯(lián)表
JiaoshiEntity jiaoshi = jiaoshiService.selectById(jiaoanxinxi.getJiaoshiId());
if(jiaoshi != null){
BeanUtils.copyProperties( jiaoshi , view ,new String[]{ "id", "createDate"});//把級(jí)聯(lián)的數(shù)據(jù)添加到view中,并排除id和創(chuàng)建時(shí)間字段
view.setJiaoshiId(jiaoshi.getId());
}
//修改對(duì)應(yīng)字典表字段
dictionaryService.dictionaryConvert(view, request);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到數(shù)據(jù)");
}
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody JiaoanxinxiEntity jiaoanxinxi, HttpServletRequest request){
logger.debug("add方法:,,Controller:{},,jiaoanxinxi:{}",this.getClass().getName(),jiaoanxinxi.toString());
Wrapper<JiaoanxinxiEntity> queryWrapper = new EntityWrapper<JiaoanxinxiEntity>()
.eq("jiaoanxinxi_name", jiaoanxinxi.getJiaoanxinxiName())
.eq("jiaoanxinxi_types", jiaoanxinxi.getJiaoanxinxiTypes())
.eq("jiaoshi_id", jiaoanxinxi.getJiaoshiId())
;
logger.info("sql語(yǔ)句:"+queryWrapper.getSqlSegment());
JiaoanxinxiEntity jiaoanxinxiEntity = jiaoanxinxiService.selectOne(queryWrapper);
if(jiaoanxinxiEntity==null){
jiaoanxinxi.setInsertTime(new Date());
jiaoanxinxi.setCreateTime(new Date());
jiaoanxinxiService.insert(jiaoanxinxi);
return R.ok();
}else {
return R.error(511,"表中有相同數(shù)據(jù)");
}
}
}
論文參考
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-818627.html
目 錄
目 錄 III
第1章 緒論 1
1.1 課題背景 1
1.2 課題意義 1
1.3 研究?jī)?nèi)容 2
第2章 開(kāi)發(fā)環(huán)境與技術(shù) 3
2.1 MYSQL數(shù)據(jù)庫(kù) 3
2.2 Java語(yǔ)言 3
2.3 微信小程序技術(shù) 4
2.4 SSM框架 5
2.5 B/S架構(gòu) 5
2.6 Tomcat 介紹 6
2.7 HTML簡(jiǎn)介 7
2.8 MyEclipse開(kāi)發(fā)工具 7
第3章 系統(tǒng)分析 9
3.1 可行性分析 9
3.1.1 技術(shù)可行性 9
3.1.2 經(jīng)濟(jì)可行性 9
3.1.3 操作可行性 9
3.2 系統(tǒng)流程 10
3.2.1 操作流程 10
3.2.2 登錄流程 10
3.2.3 刪除信息流程 11
3.2.4 添加信息流程 12
3.3 性能需求 12
第4章 系統(tǒng)設(shè)計(jì) 14
4.1 設(shè)計(jì)原則 14
4.2 功能結(jié)構(gòu)設(shè)計(jì) 15
4.3 數(shù)據(jù)庫(kù)設(shè)計(jì) 15
4.3.1 數(shù)據(jù)庫(kù)物理設(shè)計(jì) 16
第5章 系統(tǒng)實(shí)現(xiàn) 18
5.1教師信息管理 18
5.2 學(xué)生信息管理 19
5.3作業(yè)信息管理 21
5.1公告信息管理 23
第6章 系統(tǒng)測(cè)試 26
6.1?測(cè)試的任務(wù)? 26
6.2?測(cè)試的目標(biāo)? 26
6.3?測(cè)試方案? 27
6.4?功能測(cè)試 28
6.4.1 登錄功能測(cè)試 29
6.4.2 添加班級(jí)功能測(cè)試 29
6.5 測(cè)試結(jié)果 29
結(jié) 論 30
致 謝 31
參考文獻(xiàn) 32文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-818627.html
到了這里,關(guān)于基于java+ssm+vue的高校學(xué)習(xí)助手微信小程序的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!