末尾獲取源碼
開(kāi)發(fā)語(yǔ)言:Java
Java開(kāi)發(fā)工具:JDK1.8
后端框架:SSM
前端:采用JSP技術(shù)開(kāi)發(fā)
數(shù)據(jù)庫(kù):MySQL5.7和Navicat管理工具結(jié)合
服務(wù)器:Tomcat8.5
開(kāi)發(fā)軟件:IDEA / Eclipse
是否Maven項(xiàng)目:是
目錄
一、項(xiàng)目簡(jiǎn)介
二、系統(tǒng)功能
三、系統(tǒng)項(xiàng)目截圖
管理員功能實(shí)現(xiàn)
問(wèn)卷調(diào)查管理
學(xué)校主管管理
學(xué)院主管管理
學(xué)院主管功能實(shí)現(xiàn)
學(xué)院統(tǒng)計(jì)管理
學(xué)院統(tǒng)計(jì)
學(xué)校主管功能實(shí)現(xiàn)
學(xué)校統(tǒng)計(jì)管理
學(xué)校統(tǒng)計(jì)
校友功能實(shí)現(xiàn)
問(wèn)卷調(diào)查
班級(jí)論壇
問(wèn)卷答復(fù)管理
班級(jí)校友功能實(shí)現(xiàn)
班級(jí)相冊(cè)
?問(wèn)卷調(diào)查
班級(jí)統(tǒng)計(jì)管理
班級(jí)相冊(cè)管理
四、核心代碼
登錄相關(guān)
文件上傳
封裝
一、項(xiàng)目簡(jiǎn)介
如今社會(huì)上各行各業(yè),都喜歡用自己行業(yè)的專屬軟件工作,互聯(lián)網(wǎng)發(fā)展到這個(gè)時(shí)候,人們已經(jīng)發(fā)現(xiàn)離不開(kāi)了互聯(lián)網(wǎng)。新技術(shù)的產(chǎn)生,往往能解決一些老技術(shù)的弊端問(wèn)題。因?yàn)閭鹘y(tǒng)高校班級(jí)同學(xué)錄信息管理難度大,容錯(cuò)率低,管理人員處理數(shù)據(jù)費(fèi)工費(fèi)時(shí),所以專門(mén)為解決這個(gè)難題開(kāi)發(fā)了一個(gè)高校班級(jí)同學(xué)錄網(wǎng)站,可以解決許多問(wèn)題。
高校班級(jí)同學(xué)錄網(wǎng)站實(shí)現(xiàn)的功能包括班級(jí)校友管理,學(xué)院主管管理,學(xué)校主管管理,班級(jí)相冊(cè)管理,通知信息管理,問(wèn)卷調(diào)查管理,問(wèn)卷答復(fù)管理,班級(jí)統(tǒng)計(jì)管理,學(xué)院統(tǒng)計(jì)管理,學(xué)校統(tǒng)計(jì)管理,班級(jí)論壇管理等功能。該系統(tǒng)采用了Mysql數(shù)據(jù)庫(kù),Java語(yǔ)言,SSM框架等技術(shù)進(jìn)行編程實(shí)現(xiàn)。
高校班級(jí)同學(xué)錄網(wǎng)站可以提高高校班級(jí)同學(xué)錄信息管理問(wèn)題的解決效率,優(yōu)化高校班級(jí)同學(xué)錄信息處理流程,保證高校班級(jí)同學(xué)錄信息數(shù)據(jù)的安全,它是一個(gè)非常可靠,非常安全的應(yīng)用程序。
二、系統(tǒng)功能
管理員權(quán)限操作的功能包括管理班級(jí)校友,管理通知信息,管理問(wèn)卷調(diào)查,管理問(wèn)卷答復(fù),管理學(xué)院主管,管理學(xué)校主管,管理班級(jí)統(tǒng)計(jì),管理學(xué)院統(tǒng)計(jì),管理學(xué)校統(tǒng)計(jì)等功能。
?學(xué)院主管權(quán)限操作的功能包括管理學(xué)院統(tǒng)計(jì)信息,查看班級(jí)相冊(cè),在班級(jí)論壇發(fā)帖,評(píng)論帖子等。
?學(xué)校主管權(quán)限操作的功能包括管理學(xué)校統(tǒng)計(jì)信息,查看通知信息,查看班級(jí)論壇帖子,查看班級(jí)相冊(cè)等。
?校友權(quán)限操作的功能包括管理問(wèn)卷答復(fù)信息,管理個(gè)人信息,收藏班級(jí)相冊(cè),對(duì)問(wèn)卷調(diào)查進(jìn)行答復(fù)等。
?班級(jí)校友權(quán)限操作的功能包括管理班級(jí)相冊(cè),管理班級(jí)統(tǒng)計(jì),管理通知信息,參與問(wèn)卷調(diào)查,在班級(jí)論壇發(fā)帖,評(píng)論帖子等。
?
三、系統(tǒng)項(xiàng)目截圖
管理員功能實(shí)現(xiàn)
問(wèn)卷調(diào)查管理
圖5.1 即為編碼實(shí)現(xiàn)的問(wèn)卷調(diào)查管理界面,問(wèn)卷調(diào)查信息包括問(wèn)卷名稱,調(diào)查題目,調(diào)查目的等信息,管理員對(duì)登記有錯(cuò)誤的問(wèn)卷調(diào)查信息進(jìn)行修改,可以刪除需要?jiǎng)h除的問(wèn)卷調(diào)查信息等。
?
學(xué)校主管管理
圖5.2 即為編碼實(shí)現(xiàn)的學(xué)校主管管理界面,學(xué)校主管信息包括手機(jī)號(hào)碼,負(fù)責(zé)人,學(xué)校名稱等信息,管理員對(duì)學(xué)校主管進(jìn)行增刪改查管理。
?
學(xué)院主管管理
圖5.3 即為編碼實(shí)現(xiàn)的學(xué)院主管管理界面,學(xué)院主管信息包括相片,手機(jī)號(hào)碼,郵箱,性別,學(xué)院名稱等信息,管理員增刪改查學(xué)院主管信息等。
?
學(xué)院主管功能實(shí)現(xiàn)
學(xué)院統(tǒng)計(jì)管理
圖5.4 即為編碼實(shí)現(xiàn)的學(xué)院統(tǒng)計(jì)管理界面,學(xué)院主管添加學(xué)院統(tǒng)計(jì)信息,包括學(xué)院名稱,統(tǒng)計(jì)備注,統(tǒng)計(jì)數(shù)量等信息,可以對(duì)學(xué)院統(tǒng)計(jì)信息進(jìn)行修改,查詢,刪除等。
?
學(xué)院統(tǒng)計(jì)
圖5.5 即為編碼實(shí)現(xiàn)的學(xué)院統(tǒng)計(jì)界面,學(xué)院主管在學(xué)院統(tǒng)計(jì)界面查看以柱狀圖的形式展示的學(xué)院統(tǒng)計(jì)信息。
?
學(xué)校主管功能實(shí)現(xiàn)
學(xué)校統(tǒng)計(jì)管理
圖5.6 即為編碼實(shí)現(xiàn)的學(xué)校統(tǒng)計(jì)管理界面,學(xué)校統(tǒng)計(jì)信息包括學(xué)校名稱,統(tǒng)計(jì)備注,統(tǒng)計(jì)日期,統(tǒng)計(jì)數(shù)量等信息,學(xué)校主管負(fù)責(zé)增刪改查學(xué)校統(tǒng)計(jì)信息等。
?
學(xué)校統(tǒng)計(jì)
圖5.7 即為編碼實(shí)現(xiàn)的學(xué)校統(tǒng)計(jì)界面,學(xué)校主管查看以柱狀圖的形式展示的學(xué)校統(tǒng)計(jì)信息,主要是展示統(tǒng)計(jì)學(xué)校的數(shù)量信息。
?
校友功能實(shí)現(xiàn)
問(wèn)卷調(diào)查
圖5.8 即為編碼實(shí)現(xiàn)的問(wèn)卷調(diào)查界面,校友收藏問(wèn)卷調(diào)查,可以對(duì)問(wèn)卷調(diào)查進(jìn)行答復(fù)。
?
班級(jí)論壇
圖5.9 即為編碼實(shí)現(xiàn)的班級(jí)論壇界面,校友發(fā)布帖子,對(duì)班級(jí)論壇的帖子的具體內(nèi)容進(jìn)行查看后可以評(píng)論查看的帖子。同時(shí),在班級(jí)論壇界面,校友也能根據(jù)帖子標(biāo)題實(shí)現(xiàn)對(duì)論壇帖子的查詢。
?
問(wèn)卷答復(fù)管理
圖5.10 即為編碼實(shí)現(xiàn)的問(wèn)卷答復(fù)管理界面,校友在問(wèn)卷答復(fù)管理界面中主要是查看已答復(fù)的問(wèn)卷的詳細(xì)信息,可以修改答復(fù)內(nèi)容等信息,也能刪除問(wèn)卷答復(fù)信息等。
?
班級(jí)校友功能實(shí)現(xiàn)
班級(jí)相冊(cè)
圖5.11 即為編碼實(shí)現(xiàn)的班級(jí)相冊(cè)界面,班級(jí)校友可以查看班級(jí)相冊(cè)具體內(nèi)容,收藏喜歡的班級(jí)相冊(cè)。
?
?問(wèn)卷調(diào)查
圖5.12 即為編碼實(shí)現(xiàn)的問(wèn)卷調(diào)查界面,班級(jí)校友也能參與問(wèn)卷調(diào)查,可以收藏問(wèn)卷調(diào)查,也能對(duì)問(wèn)卷調(diào)查的問(wèn)題進(jìn)行回答。
?
班級(jí)統(tǒng)計(jì)管理
圖5.13 即為編碼實(shí)現(xiàn)的班級(jí)統(tǒng)計(jì)管理界面,班級(jí)校友在班級(jí)統(tǒng)計(jì)管理界面中主要是增刪改查班級(jí)統(tǒng)計(jì)信息。
班級(jí)相冊(cè)管理
圖5.14 即為編碼實(shí)現(xiàn)的班級(jí)相冊(cè)管理界面,前臺(tái)展示的班級(jí)相冊(cè)信息都是班級(jí)校友在班級(jí)相冊(cè)管理界面中發(fā)布的信息,該班級(jí)相冊(cè)信息也能讓班級(jí)校友修改,查詢,刪除等管理。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-794978.html
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-794978.html
四、核心代碼
登錄相關(guān)
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;
/**
* 登錄相關(guān)
*/
@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("賬號(hào)或密碼不正確");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注冊(cè)
*/
@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("賬號(hào)不存在");
}
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);
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 刪除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
文件上傳
package com.controller;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
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 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) throws Exception {
if (file.isEmpty()) {
throw new EIException("上傳文件不能為空");
}
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = new File("");
}
File upload = new File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
String fileName = new Date().getTime()+"."+fileExt;
File dest = new File(upload.getAbsolutePath()+"/"+fileName);
file.transferTo(dest);
FileUtils.copyFile(dest, new File("C:\\Users\\Desktop\\jiadian\\springbootl7own\\src\\main\\resources\\static\\upload"+"/"+fileName));
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 ResponseEntity<byte[]> download(@RequestParam String fileName) {
try {
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = new File("");
}
File upload = new File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
File file = new File(upload.getAbsolutePath()+"/"+fileName);
if(file.exists()){
/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
getResponse().sendError(403);
}*/
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", fileName);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
}
} catch (IOException e) {
e.printStackTrace();
}
return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
封裝
package com.utils;
import java.util.HashMap;
import java.util.Map;
/**
* 返回?cái)?shù)據(jù)
*/
public class R extends HashMap<String, Object> {
private static final long serialVersionUID = 1L;
public R() {
put("code", 0);
}
public static R error() {
return error(500, "未知異常,請(qǐng)聯(lián)系管理員");
}
public static R error(String msg) {
return error(500, msg);
}
public static R error(int code, String msg) {
R r = new R();
r.put("code", code);
r.put("msg", msg);
return r;
}
public static R ok(String msg) {
R r = new R();
r.put("msg", msg);
return r;
}
public static R ok(Map<String, Object> map) {
R r = new R();
r.putAll(map);
return r;
}
public static R ok() {
return new R();
}
public R put(String key, Object value) {
super.put(key, value);
return this;
}
}
到了這里,關(guān)于基于SSM的高校班級(jí)同學(xué)錄網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!