ssm高校专业信息管理系统源码和论文PPT001
一、选题背景
对于学校来说,每年的学生越来越多,需要管理的专业也有很多,每次专业报名信息的统计工作就变得非常的多,对于报名的统计工作变得非常的复杂。进入二十一世纪后,各种科学技术发速发展,管理软件尤其明显,现如今的科学技术发展水平使我国的管理软件信息平台已远远满足不了社会化人们的需求,同时也是管理系统的一个巨大的机会,每个国家包括国内国外都在管理软件方面投入了巨额的财力和人力已发展管理软件,近几十年来互联网发展的加入,扩大了人们的视野,增加了人们的见识,打开了国内人们的思路,为我们走上更好的信息化道路奠定了结实的基础。
二、国内外研究现状
- 国外现状
高校专业信息管理系统是一种管理信息系统。随着专业信息管理的热度越来越高,美国很多高校都开设了专业信息管理系统,最早是在1961年提出的,起产生已有三十多年的历史。专业信息管理系统是一个利用计算机软硬件,手工作业,分析计划。控制和决策模型以及数据库的人机系统,它能够提供信息,支持企业或组织的运行,管理功能。它对管理信息进行收集、传递、储存与处理,形成多用户共享系统,直接为基层和各级管理部门服务。专业信息管理系统应用了相关的经济数学模型,如运筹学、数理统计等对管理的过程信思进行监控和处理,并提供辅助决策支持。专业信息管理系统可以有广义和狭义之分。狭义的专业信息管理系统是指学校计算机网络类的信息系统,是指运用现代化计算机网络技术和学校管理学方法,系统地实现专业管理目标的一种综合管理系统。 广义的专业信息管理系统指所有运用计算机网络技术为其管理服务的所有内容,是指应用计算机网络技术和系统集成实现各项业务、技术、工作自动化及高水平管理的方法和模式,建设专业信息管理系统主要包括三方面的内容:是管理模式的确立。就狭义专业信息管理系统而言,主要是现代学校管理技术和模式的选择和应用。对广义的专业信息管理系统来说,则包括了管理模式和方法、专业规则、管理自动化OA的程序等的确定,总体要求是专业信息管理工作程序化,管理业务标准化,管理流程科学化,数据资料代码化。二是计算机网络系统的建设,包括系统软硬件平台的选择,专业管理信息系统的集成,局域网的建设及互联,局域网和广域网的互联等。三是专业信息管理系统的实施,如管理环境的适应性调整、人员培训、系统维护、信息源的组织等等。在现代社会已深入到各行各业,由于计算机技术的迅速发展和普及。专业信息管理系统事实上已成为计算机管理。计算机管理是一个不断发展的新型学科,专业信息管理系统的定义随着计算机技术和通讯技术的进步也在不断更新,在现阶段普遍认为专业信息管理系统是由人和计算机设备或其他信息处理手段组成并用于管理信息的系统。专业信息管理系统的对象就是信息,信息是经过加工的数据,信息是对决策者有价值的数据。信息的主要特征是来源分散,数量庞大。信息来源于生产第一线,来源于社会环境,来源于市场 。
- 国内现状
目前专业信息管理系统对于学校来说减少了人员的招聘,节省了成本,是时代发展的新产品。电脑的专业信息管理系统对于学校和学校员工来说都是一种互赢的方式,学校可以利用专业信息管理系统软件为自己节省成本,减少人力,使利润达到最大化,对于员工来说可以节省时间来实现工作目标,使用电脑的专业信息管理系统无论从信息的选择和信息的统计来说,都有非常大的优势。现如今已有很多人从传统的手动管理变为自动管理。数字的变化更能清楚的表达专业信息的管理方式的转变,据2016年底调查,我国使用网络上网的用户已达到了二点多亿,并且在2015年上网用户已达到了一点二亿,这一年的增长达到了83.7%,并且这在中间使用电脑办公的用户为一点九七亿。这些数字都明确的传达了传统的专业信息管理模式已不再满足学校的生活,已不再适应现代生活,开始朝着多行业发展。正是这些原因使计算机办公软件更加快速的发展,为专业信息管理系统的用户接受能力提供极大的便利。随着网络时代的兴起,各个行业发生了巨大的变革,学校专业信息管理工作部分也加入到线上服务上,很多学校在一夕之间都开始寻找适合自己专业的管理软件,在大多数的学校招聘信息上都可以看到招聘员工要求会基本的电脑操作,对于学校来说,主要的上班人群为中高学历的年轻人,目前专业针对学校管理来说的软件有学生管理系统,成绩系统等,这些管理系统最大的特点就是主要针对的是学校管理员,是为学校中上领导层准备的办公软件,属于特定模式,是学校管理员工的手段,还没有一种专业针对学生和专业两者合一的系统 。信息管理是所有学校所目临的主要问题点,但现如今实体学校信息管理效率低是绝大数学校的现实情况,信息的一些混乱问题也是最没有办法控制的,还缺少一种完整的体制。随着我国高等教育的发展,在信息化和数字化的背景下,国内高校迫切需要提高教育工作的质量与效率,数字化校园将成为种必然的超势,并逐步走向成熟。而专业信息管理工作是高校信息管理工作的重要组成部分,许多高校都针对自已学校的规模和特点开发出了专业信息管理系统,将管理人员从繁杂的日常事务性工作中解脱出来提高了工作效率 ,实现了信息共享,国内一些高校及软件公司也纷纷看好这一有着广阔市场前途的软件开发。
三、设计目的和要求
(1) 设计目的
改变传统管理学校专业信息的模式,为学生提供网上了解专业信息和报名的方式。可以帮助学校工作人员专业信息、学校信息、报名信息等的管理。提高工作效率,节省时间。同时可以体现学校的先进性。
(2)要求
1.掌握java的环境和ssm架构;
2.掌握myeclipse的使用方法;
3.掌握mySql的数据库技术;
4.熟悉编程工作和系统开发流程;
5.熟悉界面布局技术;
6.相关文档的撰写。
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.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.ChatEntity;
import com.entity.view.ChatView;
import com.service.ChatService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 客服聊天表
* 后端接口
* @author
* @email
* @date 2023-12-24 11:35:16
*/
@RestController
@RequestMapping("/chat")
public class ChatController {
@Autowired
private ChatService chatService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ChatEntity chat, HttpServletRequest request){
if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
chat.setUserid((Integer) request.getSession().getAttribute("userId"));
}
EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();
PageUtils page = chatService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chat), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,ChatEntity chat, HttpServletRequest request){
if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
chat.setUserid((Integer)request.getSession().getAttribute("userId"));
}
EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();
PageUtils page = chatService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chat), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( ChatEntity chat){
EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();
ew.allEq(MPUtil.allEQMapPre( chat, "chat"));
return R.ok().put("data", chatService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(ChatEntity chat){
EntityWrapper< ChatEntity> ew = new EntityWrapper< ChatEntity>();
ew.allEq(MPUtil.allEQMapPre( chat, "chat"));
ChatView chatView = chatService.selectView(ew);
return R.ok("查询客服聊天表成功").put("data", chatView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
ChatEntity chat = chatService.selectById(id);
return R.ok().put("data", chat);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
ChatEntity chat = chatService.selectById(id);
return R.ok().put("data", chat);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody ChatEntity chat, HttpServletRequest request){
chat.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(chat);
if(StringUtils.isNotBlank(chat.getAsk())) {
chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", request.getSession().getAttribute("userId")));
chat.setUserid((Integer)request.getSession().getAttribute("userId"));
chat.setIsreply(1);
}
if(StringUtils.isNotBlank(chat.getReply())) {
chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", chat.getUserid()));
chat.setAdminid((Integer)request.getSession().getAttribute("userId"));
}
chatService.insert(chat);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody ChatEntity chat, HttpServletRequest request){
chat.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(chat);
chat.setUserid((Integer)request.getSession().getAttribute("userId"));
if(StringUtils.isNotBlank(chat.getAsk())) {
chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", request.getSession().getAttribute("userId")));
chat.setUserid((Integer)request.getSession().getAttribute("userId"));
chat.setIsreply(1);
}
if(StringUtils.isNotBlank(chat.getReply())) {
chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", chat.getUserid()));
chat.setAdminid((Integer)request.getSession().getAttribute("userId"));
}
chatService.insert(chat);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody ChatEntity chat, HttpServletRequest request){
//ValidatorUtils.validateEntity(chat);
chatService.updateById(chat);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
chatService.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<ChatEntity> wrapper = new EntityWrapper<ChatEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = chatService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
package com.controller;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import com.annotation.IgnoreAuth;
import com.service.TokenService;
import org.apache.commons.lang3.StringUtils;
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.XueshengxinxiEntity;
import com.service.XueshengxinxiService;
import com.utils.PageUtils;
import com.utils.R;
/**
*
* 后端接口
* @author
* @email
* @date 2021-02-22
*/
@RestController
@Controller
@RequestMapping("/xueshengxinxi")
public class XueshengxinxiController {
private static final Logger logger = LoggerFactory.getLogger(XueshengxinxiController.class);
@Autowired
private XueshengxinxiService xueshengxinxiService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String role, HttpServletRequest request) {
XueshengxinxiEntity user = xueshengxinxiService.selectOne(new EntityWrapper<XueshengxinxiEntity>().eq("account", username));
if(user != null){
if(!user.getRole().equals(role)){
return R.error("权限不正常");
}
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),user.getName(), "users", user.getRole());
return R.ok().put("token", token);
}else{
return R.error("账号或密码或权限不对");
}
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody XueshengxinxiEntity user){
if(xueshengxinxiService.selectOne(new EntityWrapper<XueshengxinxiEntity>().eq("account", user.getAccount())) !=null) {
return R.error("学生已存在");
}
user.setRole("学生");
xueshengxinxiService.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){
XueshengxinxiEntity user = xueshengxinxiService.selectOne(new EntityWrapper<XueshengxinxiEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
xueshengxinxiService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Integer id = (Integer)request.getSession().getAttribute("userId");
XueshengxinxiEntity user = xueshengxinxiService.selectById(id);
return R.ok().put("data", user);
}
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("Controller:"+this.getClass().getName()+",page方法");
Object role = request.getSession().getAttribute("role");
PageUtils page = null;
if(role.equals("学生")){
params.put("yh",request.getSession().getAttribute("userId"));
page = xueshengxinxiService.queryPage(params);
}else{
page = xueshengxinxiService.queryPage(params);
}
return R.ok().put("data", page);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
logger.debug("Controller:"+this.getClass().getName()+",info方法");
XueshengxinxiEntity xueshengxinxi = xueshengxinxiService.selectById(id);
if(xueshengxinxi!=null){
return R.ok().put("data", xueshengxinxi);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 后端保存
*/
@IgnoreAuth
@RequestMapping("/save")
public R save(@RequestBody XueshengxinxiEntity xueshengxinxi, HttpServletRequest request){
logger.debug("Controller:"+this.getClass().getName()+",save");
Wrapper<XueshengxinxiEntity> queryWrapper = new EntityWrapper<XueshengxinxiEntity>()
.eq("name", xueshengxinxi.getName())
.eq("account", xueshengxinxi.getAccount())
.eq("password", xueshengxinxi.getPassword())
.eq("sex_types", xueshengxinxi.getSexTypes())
.eq("role", xueshengxinxi.getRole())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
XueshengxinxiEntity xueshengxinxiEntity = xueshengxinxiService.selectOne(queryWrapper);
if("".equals(xueshengxinxi.getImgPhoto()) || "null".equals(xueshengxinxi.getImgPhoto())){
xueshengxinxi.setImgPhoto(null);
}
xueshengxinxi.setRole("学生");
if(xueshengxinxiEntity==null){
xueshengxinxiService.insert(xueshengxinxi);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody XueshengxinxiEntity xueshengxinxi, HttpServletRequest request){
logger.debug("Controller:"+this.getClass().getName()+",update");
//根据字段查询是否有相同数据
Wrapper<XueshengxinxiEntity> queryWrapper = new EntityWrapper<XueshengxinxiEntity>()
.notIn("id",xueshengxinxi.getId())
.eq("name", xueshengxinxi.getName())
.eq("account", xueshengxinxi.getAccount())
.eq("password", xueshengxinxi.getPassword())
.eq("sex_types", xueshengxinxi.getSexTypes())
.eq("role", xueshengxinxi.getRole())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
XueshengxinxiEntity xueshengxinxiEntity = xueshengxinxiService.selectOne(queryWrapper);
if("".equals(xueshengxinxi.getImgPhoto()) || "null".equals(xueshengxinxi.getImgPhoto())){
xueshengxinxi.setImgPhoto(null);
}
if(xueshengxinxiEntity==null){
xueshengxinxiService.updateById(xueshengxinxi);//根据id更新
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
logger.debug("Controller:"+this.getClass().getName()+",delete");
xueshengxinxiService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}