基于javaweb的在线选课系统(java+springboot+semanticui+thymeleaf+ssm+redis+mysql)

基于javaweb的在线选课系统(java+springboot+semanticui+thymeleaf+ssm+redis+mysql)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

20220519002821

20220519002822

20220519002824

20220519002825

20220519002826

20220519002827

基于javaweb+SpringBoot的在线选课系统(java+SpringBoot+semanticUI+thymeleaf+ssm+redis+maven+mysql)

项目介绍

后端技术包含springboot+mybatis+spring security+mysql+redis

前端技术包含 semanticUI + thymeleaf模板引擎

使用教程

  1. 下载项目之后 等待maven安装对应jar包 2.  自行下载redis 并按照资源包下的application.yml要求进行配置

  2. 自行安装MySQL数据库 执行资源包下的sql文件

使用说明

  1. 运行redis服务器 2.  启动项目 3.  访问localhost:8080

  2. 用户名:admin  密码:admin

注意事项

若导出信息时报错,则需要设置mysql,设置方式如下: SELECT @@sql_mode; 查看是否包含ONLY_FULL_GROUP_BY;若包含,则执行以下命令: SET GLOBAL sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’; SET SESSION sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’; 执行完成后,再通过SELECT @@sql_mode; 来查看;

注意:该方法仅用于临时修改,重启mysql后,以上设置失效。

用户管理控制层:

@Controller

@RequestMapping(“admin/system/user”)

public class UserController {

@Autowired

UserService userService;

@Autowired

RoleService roleService;

@Autowired

UploadService uploadService;

@RequestMapping(“list”)

@SysLog(“跳转系统用户列表页面”)

public String list(){

return “admin/user/list”;

@RequiresPermissions(“sys:user:list”)

@PostMapping(“list”)

@ResponseBody

public PageData list(@RequestParam(value = “page”,defaultValue = “1”)Integer page,

@RequestParam(value = “limit”,defaultValue = “10”)Integer limit,

ServletRequest request){

Map map = WebUtils.getParametersStartingWith(request, “s_”);

PageData userPageData = new PageData<>();

QueryWrapper userWrapper = new QueryWrapper<>();

if(!map.isEmpty()){

String type = (String) map.get(“type”);

if(StringUtils.isNotBlank(type)) {

userWrapper.eq(“is_admin”, “admin”.equals(type) ? true : false);

String keys = (String) map.get(“key”);

if(StringUtils.isNotBlank(keys)) {

userWrapper.and(wrapper -> wrapper.like(“login_name”, keys).or().like(“tel”, keys).or().like(“email”, keys));

IPage userPage = userService.page(new Page<>(page,limit),userWrapper);

userPageData.setCount(userPage.getTotal());

userPageData.setData(userPage.getRecords());

return userPageData;

@RequestMapping(“add”)

public String add(ModelMap modelMap){

List roleList = roleService.selectAll();

modelMap.put(“roleList”,roleList);

return “admin/user/add”;

@RequiresPermissions(“sys:user:add”)

@PostMapping(“add”)

@ResponseBody

@SysLog(“保存新增系统用户数据”)

public ResponseEntity add(@RequestBody User user){

if(StringUtils.isBlank(user.getLoginName())){

return ResponseEntity.failure(“登录名不能为空”);

if(user.getRoleLists() == null || user.getRoleLists().size() == 0){

return ResponseEntity.failure(“用户角色至少选择一个”);

if(userService.userCount(user.getLoginName())>0){

return ResponseEntity.failure(“登录名称已经存在”);

// if(StringUtils.isNotBlank(user.getEmail())){

// if(userService.userCount(user.getEmail())>0){

// return ResponseEntity.failure(“该邮箱已被使用”);

// }

// }

// if(StringUtils.isNoneBlank(user.getTel())){

// if(userService.userCount(user.getTel())>0){

// return ResponseEntity.failure(“该手机号已被绑定”);

// }

// }

//设置默认密码

if(StringUtils.isBlank(user.getPassword())){

user.setPassword(Constants.DEFAULT_PASSWORD);

userService.saveUser(user);

if(StringUtils.isBlank(user.getId())){

return ResponseEntity.failure(“保存用户信息出错”);

//保存用户角色关系

userService.saveUserRoles(user.getId(),user.getRoleLists());

return ResponseEntity.success(“操作成功”);

@RequestMapping(“edit”)

public String edit(String id,ModelMap modelMap){

User user = userService.findUserById(id);

String roleIds = “”;

if(user != null) {

roleIds = user.getRoleLists().stream().map(role -> role.getId()).collect(Collectors.joining(“,”));

List roleList = roleService.selectAll();

modelMap.put(“localuser”,user);

modelMap.put(“roleIds”,roleIds);

modelMap.put(“roleList”,roleList);

return “admin/user/edit”;

@RequiresPermissions(“sys:user:edit”)

@PostMapping(“edit”)

@ResponseBody

@SysLog(“保存系统用户编辑数据”)

public ResponseEntity edit(@RequestBody User user){

if(StringUtils.isBlank(user.getId())){

return ResponseEntity.failure(“用户ID不能为空”);

if(StringUtils.isBlank(user.getLoginName())){

return ResponseEntity.failure(“登录名不能为空”);

if(user.getRoleLists() == null || user.getRoleLists().size() == 0){

return ResponseEntity.failure(“用户角色至少选择一个”);

User oldUser = userService.findUserById(user.getId());

if(StringUtils.isNotBlank(user.getEmail())){

if(!user.getEmail().equals(oldUser.getEmail())){

if(userService.userCount(user.getEmail())>0){

return ResponseEntity.failure(“该邮箱已被使用”);

if(StringUtils.isNotBlank(user.getLoginName())){

if(!user.getLoginName().equals(oldUser.getLoginName())) {

if (userService.userCount(user.getLoginName()) > 0) {

return ResponseEntity.failure(“该登录名已存在”);

if(StringUtils.isNotBlank(user.getTel())){

if(!user.getTel().equals(oldUser.getTel())) {

if (userService.userCount(user.getTel()) > 0) {

return ResponseEntity.failure(“该手机号已经被绑定”);

user.setIcon(oldUser.getIcon());

userService.updateUser(user);

if(StringUtils.isBlank(user.getId())){

return ResponseEntity.failure(“保存用户信息出错”);

userService.saveUserRoles(user.getId(),user.getRoleLists());

return ResponseEntity.success(“操作成功”);

@RequiresPermissions(“sys:user:lock”)

@PostMapping(“lock”)

@ResponseBody

@SysLog(“锁定或开启系统用户”)

public ResponseEntity lock(@RequestParam(value = “id”,required = false)String id){

if(StringUtils.isBlank(id)){

return ResponseEntity.failure(“参数错误”);

User user = userService.getById(id);

if(user == null){

return ResponseEntity.failure(“用户不存在”);

userService.lockUser(user);

return ResponseEntity.success(“操作成功”);

@RequiresPermissions(“sys:user:delete”)

@PostMapping(“delete”)

@ResponseBody

@SysLog(“删除系统用户数据(单个)”)

public ResponseEntity delete(@RequestParam(value = “id”,required = false)String id){

if(StringUtils.isBlank(id)){

return ResponseEntity.failure(“参数错误”);

User user = userService.getById(id);

if(user == null){

return ResponseEntity.failure(“用户不存在”);

}else if(user.getAdminUser()) {

return ResponseEntity.failure(“不能删除后台用户”);

userService.deleteUser(user);

return ResponseEntity.success(“操作成功”);

@RequiresPermissions(“sys:user:delete”)

@PostMapping(“deleteSome”)

@ResponseBody

@SysLog(“删除系统用户数据(多个)”)

public ResponseEntity deleteSome(@RequestBody List users){

if(users == null || users.size()==0){

return ResponseEntity.failure(“请选择需要删除的用户”);

for (User u : users){

if(u.getAdminUser()){

return ResponseEntity.failure(“不能删除超级管理员”);

}else{

userService.deleteUser(u);

return ResponseEntity.success(“操作成功”);

@RequestMapping(“userinfo”)

public String toEditMyInfo(ModelMap modelMap){

String userId = MySysUser.id();

User user = userService.findUserById(userId);

modelMap.put(“userinfo”,user);

modelMap.put(“userRole”,user.getRoleLists());

return “admin/user/userInfo”;

@SysLog(“系统用户个人信息修改”)

@PostMapping(“saveUserinfo”)

@ResponseBody

public ResponseEntity saveUserInfo(User user){

if(StringUtils.isBlank(user.getId())){

return ResponseEntity.failure(“用户ID不能为空”);

if(StringUtils.isBlank(user.getLoginName())){

return ResponseEntity.failure(“登录名不能为空”);

User oldUser = userService.findUserById(user.getId());

if(StringUtils.isNotBlank(user.getEmail())){

if(!user.getEmail().equals(oldUser.getEmail())){

if(userService.userCount(user.getEmail())>0){

return ResponseEntity.failure(“该邮箱已被使用”);

if(StringUtils.isNotBlank(user.getTel())){

if(!user.getTel().equals(oldUser.getTel())) {

if (userService.userCount(user.getTel()) > 0) {

return ResponseEntity.failure(“该手机号已经被绑定”);

userService.updateById(user);

return ResponseEntity.success(“操作成功”);

@RequestMapping(“changePassword”)

public String changePassword(ModelMap modelMap){

modelMap.put(“currentUser”,userService.getById(MySysUser.id()));

return “admin/user/changePassword”;

@CrossOrigin

@SysLog(“用户修改密码”)

@PostMapping(“changePassword”)

@ResponseBody

public ResponseEntity changePassword(@RequestParam(value = “userName”,required = false)String userName,

@RequestParam(value = “oldPwd”,required = false)String oldPwd,

@RequestParam(value = “newPwd”,required = false)String newPwd,

@RequestParam(value = “confirmPwd”,required = false)String confirmPwd){

if(StringUtils.isBlank(oldPwd)){

return ResponseEntity.failure(“旧密码不能为空”);

if(StringUtils.isBlank(newPwd)){

return ResponseEntity.failure(“新密码不能为空”);

if(StringUtils.isBlank(confirmPwd)){

return ResponseEntity.failure(“确认密码不能为空”);

if(!confirmPwd.equals(newPwd)){

return ResponseEntity.failure(“确认密码与新密码不一致”);

//小程序修改密码

if(StringUtils.isBlank(userName)){

//PC修改密码

User user = userService.findUserById(MySysUser.id());

byte[] hashPassword = Encodes.sha1(oldPwd.getBytes(), Encodes.SHA1, Encodes.decodeHex(user.getSalt()), Constants.HASH_INTERATIONS);

String password = Encodes.encodeHex(hashPassword);

if(!user.getPassword().equals(password)){

return ResponseEntity.failure(“旧密码错误”);

user.setPassword(newPwd);

Encodes.entryptPassword(user);

userService.updateById(user);

return ResponseEntity.success(“操作成功”);

}else {

//小程序修改密码

User user = userService.findUserByLoginName(userName);

byte[] hashPassword = Encodes.sha1(oldPwd.getBytes(), Encodes.SHA1, Encodes.decodeHex(user.getSalt()), Constants.HASH_INTERATIONS);

String password = Encodes.encodeHex(hashPassword);

if(!user.getPassword().equals(password)){

return ResponseEntity.failure(“旧密码错误”);

user.setPassword(newPwd);

Encodes.entryptPassword(user);

userService.updateById(user);

return ResponseEntity.success(“操作成功”);

@SysLog(“上传头像”)

@PostMapping(“uploadFace”)

@ResponseBody

public ResponseEntity uploadFile(@RequestParam(“icon”) MultipartFile file, HttpServletRequest httpServletRequest) {

if(file == null){

return ResponseEntity.failure("上传文件为空 ");

String url = null;

Map map = new HashMap();

try {

url = uploadService.upload(file);

map.put(“url”, url);

map.put(“name”, file.getOriginalFilename());

} catch (Exception e) {

e.printStackTrace();

return ResponseEntity.failure(e.getMessage());

return ResponseEntity.success(“操作成功”).setAny(“data”,map);

学生管理控制层:

@Controller

public class StudentController extends BaseController {

@Autowired

private StudentService studentService;

// 跳转学生查询页面

@RequestMapping(“/selectStudent”)

public String selectStudent(){

return “view/student/selStudent”;

// 查询所有学生

@RequestMapping(“selStudent”)

@ResponseBody

public LayuiResult selectStu(pageCount pageCount, StudentVO studentVO){

LayuiResult result = new LayuiResult<>();

List list = studentService.selStudent(studentVO,pageCount);

int count = studentService.selCount(studentVO);

result.setData(list);

result.setCount(count);

return result;

// 查询所有专业

@RequestMapping(“selDepartment”)

@ResponseBody

public LayuiResult selDepartment(){

List selDepartment = studentService.selDepartment();

LayuiResult result = new LayuiResult();

result.setData(selDepartment);

return result;

// 根据系部查询专业

@RequestMapping(“selectdid”)

@ResponseBody

public LayuiResult selMajorDB(Integer did){

List major =studentService.selMajorDB(did);

LayuiResult result = new LayuiResult();

result.setData(major);

return result;

// 根据专业查询年级

@RequestMapping(“selectmid”)

@ResponseBody

public LayuiResult selGradeDB(Integer mid){

List grade = studentService.selGradeDB(mid);

LayuiResult result = new LayuiResult();

result.setData(grade);

return result;

// 根据年级查询班级

@RequestMapping(“selectgid”)

@ResponseBody

public LayuiResult selClassinfoDB(Integer gid){

List classinfo = studentService.selClassinfoDB(gid);

LayuiResult result = new LayuiResult();

result.setData(classinfo);

return result;

// 根据id查询一条学生信息以此进行修改

@RequestMapping(“/selStudentId”)

public String selStudentId(Integer id, Model model){

// 查询学生信息

List stu = studentService.selStudentId(id);

// 查询班级

List cls = studentService.selClass();

// 查询政治面貌表

List stupol = studentService.selPolitics();

model.addAttribute(“stu”,stu);

model.addAttribute(“cls”,cls);

model.addAttribute(“stupol”,stupol);

return “view/student/updStudent”;

// 根据id查询显示学生详细信息

@RequestMapping(“/selectMessage”)

public String selectMessage(Integer id, Model model){

// 查询学生信息

List stu = studentService.selStudentId(id);

// 查询班级

List cls = studentService.selClass();

// 查询政治面貌表

List stupol = studentService.selPolitics();

model.addAttribute(“stu”,stu);

model.addAttribute(“cls”,cls);

model.addAttribute(“stupol”,stupol);

return “view/student/selStuExam”;

// 修改用户信息

@RequestMapping(“/updateStudent”)

@ResponseBody

public LayuiResult updateStudent(StudentDB studentDB, String birthday) throws Exception{

SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd”);

Date date=format.parse(birthday);

studentDB.setSbirthday(date);

studentService.updateStudent(studentDB);

LayuiResult result= new LayuiResult();

//删除提示

result.setMsg(“修改成功!”);

return result;

课程管理控制层:

@Controller

public class SelCourseManController {

@Autowired

private SelCourseManageService selCourseManageService;

@RequestMapping(“selCourses”)

public String selCourses(){

System.out.println(“----------------------”);

return “SelCourseMan”;

@RequestMapping(“selSc”)

@ResponseBody

public Object selSc(Integer page, Integer limit, StuCourseVO stuCourseVO){

System.out.println(stuCourseVO.getSname());

PageHelper.startPage(page, limit);

List stuCourseVOS = selCourseManageService.selSc(stuCourseVO);

PageInfo pageInfo = new PageInfo(stuCourseVOS);

Map<String, Object> tableData = new HashMap<String, Object>();

//这是layui要求返回的json数据格式

tableData.put(“code”, 0);

tableData.put(“msg”, “”);

//将全部数据的条数作为count传给前台(一共多少条)

tableData.put(“count”, pageInfo.getTotal());

//将分页后的数据返回(每页要显示的数据)

tableData.put(“data”, pageInfo.getList());

// System.out.print(cs);

return tableData;

//下面是下拉框

@RequestMapping(“selDe”)

@ResponseBody

public Object selDe(){

List departmentDBS = selCourseManageService.selDe();

//System.out.println(departmentDBS);

return departmentDBS;

@RequestMapping(“selMa”)

@ResponseBody

public Object selMa(Integer did){

//System.out.println(did);

List majors = selCourseManageService.selMa(did);

//System.out.println(majors);

return majors;

@RequestMapping(“selGr”)

@ResponseBody

public Object selGr(Integer mid){

//System.out.println(mid);

List gradeDBS = selCourseManageService.selGr(mid);

// System.out.println(gradeDBS);

return gradeDBS;

@RequestMapping(“selCl”)

@ResponseBody

public Object selCl(Integer gid){

// System.out.println(gid);

List classinfoDBS = selCourseManageService.selClass(gid);

// System.out.println(classinfoDBS);

return classinfoDBS;

@RequestMapping(“selSt”)

@ResponseBody

public Object selSt(Integer classid){

//System.out.println(classid);

List studentDBS = selCourseManageService.selSt(classid);

// System.out.println(studentDBS);

return studentDBS;

@RequestMapping(“selCo”)

@ResponseBody

public Object selCo(){

//System.out.println(classid);

List courseDBS = selCourseManageService.selCo();

// System.out.println(studentDBS);

return courseDBS;

//退课

@RequestMapping(“dropCous”)

@ResponseBody

public Object dropCous(Integer sid,Integer cid){

int dropcou = selCourseManageService.dropcou(sid, cid);

int updatecou = selCourseManageService.updatecou(cid);

if(dropcou>0 && updatecou>0){

return “退课成功”;

}else{

return “退课失败,请稍后再试或联系管理员”;

//换课

@RequestMapping(“changesCou”)

@ResponseBody

public Object changesCou( Integer ccd, Integer sid,Integer cid) {

/*System.out.println(ccd+“8888888”);

System.out.println(sid+“-----”+cid);*/

int i = selCourseManageService.selStc(ccd, sid);

if (i > 0) {

return “该学生已经选过这门课”;

} else {

int dropcou = selCourseManageService.changesCou(ccd, sid, cid);

if (dropcou > 0) {

return “换课成功”;

} else {

return “退课失败,请稍后再试或联系管理员”;


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
采用eclipse和MySQL开发的学生在线选课系统。功能如下: 1、权限控制:采用过滤器实现用户登录和权限的控制。同时,每个学生一个账户(学号)可以登录系统进行个人信息的管理,并完成选课操作;管理员(固定为admin用户)可以管理全部学生信息,查看每个学生的选课情况,并生成统计表。 2、数据库要求:包括学生基本信息表、课程信息表、学生选课信息表。 3、学生信息管理要求 (1)信息项:学号、姓名、身份证号码、班级、性别(男、女)、登录密码(加密存储,加密方法网上找一个)、籍贯(省份选择)、家庭住址、联系电话、兴趣爱好(运动、读书、音乐、旅游、社交); (2)学生信息管理:有显示学生基本信息的界面,每个学生只可以打开自己的信息界面;界面中,如果是学生身份,可以修改除了学号、姓名之外的全部信息。如果是管理员身份,可以全部管理,并提供学生信息的添加、修改和删除功能。 (3)学生信息列表:有列表显示学生信息的界面;如果是学生身份,列表只有本人一条信息;如果是管理员,列表可以有全部学生。可以按照学号、姓名快速查询功能。 4、选课中心要求: (1). 二级菜单:选课操作、选课列表 (2). 课程的信息项:课程编号、课程名称; (3). 学生选课操作:只有学生可用,管理员不可用。列表显示当前学生没有选中的课程名称,一次可以选取1个或者多个课程,点击保存即可完成选课。 (4). 学生选课列表:列表显示学生已经选中课程的信息;如果是学生身份,列表只有本人已经选中课程的列表;如果是管理员,列表可以已经有选课记录的学生。点击学生学号后,可以查看该学生的选课记录。 5、统计分析要求 (1). 二级菜单:学生信息统计、选课情况统计; (2).学生信息统计:统计每个学生的基本信息,包括学生籍贯统计(籍贯、学生数量)、爱好统计(爱好、学生数量)两个统计。 (3).选课情况统计:统计每个学生的选课数量,注意:没有选课的学生也要显示,按照选课数量倒序排列。 这个是我的JavaWeb课程设计作业,由于能力有限,这个系统的一些细节还不够完善,比如没有密码加密和分页,页面不够美观,以后会完善的。
系统的主要功能需求是对学生选课信息进行管理,对于要进行选课的学生进行选课操作,同时记录学生所选课的信息。如果对所选的课程不满意可以进行退课操作。学生如果想要对自己信息进行查看,可以登录后进行查看,如遇到修改信息,学生信息管理和系统管理可以对学生的信息进行修改,以便管理人员和用户可以随时查到最新的信息,同时,可以随时对需要的信息进行维护和更新。 经过对学校选课情况的分析,选课管理系统应该具有下列功能需求: 1、记录学生基本信息,提供查看、修改、删除学生基本信息的功能。学生基本信息包括学号、姓名等。 2、维护课程信息,提供查看、修改、删除课程基本信息的功能。课程信息包括id,课程名,学时,课程简要说明,上课教师等。 3、维护教师信息,提供修改,删除教师基本信息的功能。教师的基本信息ID,教师名,email,职称,年龄等。 4、制定选修课课表,根据学生的课程,时间的安排进行课表的制定。 5、维护学生选选修的课程信息。能够在选课的时间范围内可以进行退课操作,选课时间结束,系统不再能够访问。 6、录入课程分数,提供查看、修改,删除课程分数的功能。 2.1.2 用户及相关操作 系统有三种用户,分别为系统管理员、教师、学生,他们能够执行的操作不同,每种用户能执行的操作如下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值