基于微信小程序+SSM实现培训机构管理系统

作者主页:编程千纸鹤

作者简介:Java、前端、Pythone开发多年,做过高程,项目经理,架构师

主要内容:Java项目开发、毕业设计开发、面试技术整理、最新技术分享

项目编号:BS-XCX-010

一,项目简介

本系统 主要实现一个针对培训机构进行宣传和信息管理的信息化管理系统,系统一是对内部的学生选课及成绩管理,一是通过小程序对外进行宣传 并提供了小程序管理后台数据的功能。前端使用微信小程序开发实现,主要实现一些静态数据的展示和宣传功能,后台主要使用SSM框架开发实现完成对教师、学生和课程的基本信息管理。主要功能如下

微信小程序端:

1.小程序端管理员实现对信息模块的管理,包含课程、讲师、学员三类模块。

2.小程序端用户实现各类模块内容的浏览。

Web后台管理端:

1.Web端管理员实现对信息模块的管理;

2.Web端讲师实现对培训机构学员课程成绩打分等功能;

3.Web端学员实现对培训机构课程的报名、退选以及课程成绩查看等功能;

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

相关技术:

  1. 微信小程序(js、css前端基础):前端小程序页面;
  2. SSM框架(Spring+SpringMVC+Mybatis):微信小程序界面需要调用的接口以及后台的管理系统;
  3. Maven:项目管理必备的技术;
  4. Shiro框架:保证系统安全的框架;
  5. Bootstrap前端框架:Web后台管理端的后台界面;

 

三,系统展示

后台管理功能的展示

管理员

课程管理

学员管理

讲师管理

学生登陆

讲师登陆

前端小程序端演示

管理员登陆

学生登陆:主要进行信息的宣传展示

信息资讯

查看课程

个人中心

四,核心代码展示

package com.system.controller;import com.system.exception.CustomException;
import com.system.po.*;
import com.system.service.*;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;import javax.annotation.Resource;
import java.util.List;@Controller
@RequestMapping("/admin")
public class AdminController {@Resource(name = "studentServiceImpl")private StudentService studentService;@Resource(name = "teacherServiceImpl")private TeacherService teacherService;@Resource(name = "courseServiceImpl")private CourseService courseService;@Resource(name = "collegeServiceImpl")private CollegeService collegeService;@Resource(name = "userloginServiceImpl")private UserloginService userloginService;/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<学生操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/@RequestMapping("/showStudent")public String showStudent(Model model, Integer page) throws Exception {List<StudentCustom> list = null;//页码对象PagingVO pagingVO = new PagingVO();//设置总页数pagingVO.setTotalCount(this.studentService.getCountStudent());if (page == null || page == 0) {pagingVO.setToPageNo(1);list = studentService.findByPaging(1);} else {pagingVO.setToPageNo(page);list = studentService.findByPaging(page);}/*  if (page != null && page.intValue() != 0){pagingVO.setToPageNo(page);list = this.studentService.findByPaging(1);}else{pagingVO.setToPageNo(Integer.valueOf(1));list = this.studentService.findByPaging(Integer.valueOf(1));}*/model.addAttribute("studentList", list);model.addAttribute("pagingVO", pagingVO);return "/admin/showStudent";}//  添加学生信息页面显示@RequestMapping(value = "/addStudent", method = {RequestMethod.GET})public String addStudentUI(Model model) throws Exception {List<College> list = collegeService.finAll();model.addAttribute("collegeList", list);return "/admin/addStudent";}// 添加学生信息操作@RequestMapping(value = "/addStudent", method = {RequestMethod.POST})public String addStudent(StudentCustom studentCustom, Model model) throws Exception {Boolean result = studentService.save(studentCustom);if (!result) {model.addAttribute("message", "学号重复");return "error";}//添加成功后,也添加到登录表Userlogin userlogin = new Userlogin();userlogin.setUsername(studentCustom.getUserid().toString());userlogin.setPassword("123");userlogin.setRole(2);userloginService.save(userlogin);//重定向return "redirect:/admin/showStudent";}// 修改学生信息页面显示@RequestMapping(value = "/editStudent", method = {RequestMethod.GET})public String editStudentUI(Integer id, Model model) throws Exception {if (id == null) {//加入没有带学生id就进来的话就返回学生显示页面return "redirect:/admin/showStudent";}StudentCustom studentCustom = studentService.findById(id);if (studentCustom == null) {throw new CustomException("未找到该名学生");}List<College> list = collegeService.finAll();model.addAttribute("collegeList", list);model.addAttribute("student", studentCustom);return "/admin/editStudent";}// 修改学生信息处理@RequestMapping(value = "/editStudent", method = {RequestMethod.POST})public String editStudent(StudentCustom studentCustom) throws Exception {studentService.updataById(studentCustom.getUserid(), studentCustom);//重定向return "redirect:/admin/showStudent";}// 删除学生@RequestMapping(value = "/removeStudent", method = {RequestMethod.GET} )private String removeStudent(Integer id) throws Exception {if (id == null) {//加入没有带学生id就进来的话就返回学生显示页面return "/admin/showStudent";}studentService.removeById(id);userloginService.removeByName(id.toString());return "redirect:/admin/showStudent";}// 搜索学生@RequestMapping(value = "selectStudent", method = {RequestMethod.POST})private String selectStudent(String findByName, Model model) throws Exception {List<StudentCustom> list = studentService.findByName(findByName);model.addAttribute("studentList", list);return "/admin/showStudent";}/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<教师操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/// 教师页面显示@RequestMapping({"/showTeacher"})public String showTeacher(Model model, Integer page) throws Exception {List<TeacherCustom> list = null;PagingVO pagingVO = new PagingVO();pagingVO.setTotalCount(this.teacherService.getCountTeacher());if (page != null && page.intValue() != 0) {pagingVO.setToPageNo(page);list = this.teacherService.findByPaging(page);} else {pagingVO.setToPageNo(Integer.valueOf(1));list = this.teacherService.findByPaging(Integer.valueOf(1));}model.addAttribute("teacherList", list);model.addAttribute("pagingVO", pagingVO);return "/admin/showTeacher";}// 添加教师信息@RequestMapping(value = "/addTeacher", method = {RequestMethod.GET})public String addTeacherUI(Model model) throws Exception {List<College> list = collegeService.finAll();model.addAttribute("collegeList", list);return "/admin/addTeacher";}// 添加教师信息处理@RequestMapping(value = "/addTeacher", method = {RequestMethod.POST})public String addTeacher(TeacherCustom teacherCustom, Model model) throws Exception {Boolean result = teacherService.save(teacherCustom);if (!result) {model.addAttribute("message", "工号重复");return "/error";}//添加成功后,也添加到登录表Userlogin userlogin = new Userlogin();userlogin.setUsername(teacherCustom.getUserid().toString());userlogin.setPassword("123");userlogin.setRole(1);userloginService.save(userlogin);//重定向return "redirect:/admin/showTeacher";}// 修改教师信息页面显示@RequestMapping(value = "/editTeacher", method = {RequestMethod.GET})public String editTeacherUI(Integer id, Model model) throws Exception {if (id == null) {return "redirect:/admin/showTeacher";}TeacherCustom teacherCustom = teacherService.findById(id);if (teacherCustom == null) {throw new CustomException("未找到该名学生");}List<College> list = collegeService.finAll();model.addAttribute("collegeList", list);model.addAttribute("teacher", teacherCustom);return "/admin/editTeacher";}// 修改教师信息页面处理@RequestMapping(value = "/editTeacher", method = {RequestMethod.POST})public String editTeacher(TeacherCustom teacherCustom) throws Exception {teacherService.updateById(teacherCustom.getUserid(), teacherCustom);//重定向return "redirect:/admin/showTeacher";}//删除教师@RequestMapping("/removeTeacher")public String removeTeacher(Integer id) throws Exception {if (id == null) {//加入没有带教师id就进来的话就返回教师显示页面return "/admin/showTeacher";}teacherService.removeById(id);userloginService.removeByName(id.toString());return "redirect:/admin/showTeacher";}//搜索教师@RequestMapping(value = "selectTeacher", method = {RequestMethod.POST})private String selectTeacher(String findByName, Model model) throws Exception {List<TeacherCustom> list = teacherService.findByName(findByName);model.addAttribute("teacherList", list);return "/admin/showTeacher";}/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<课程操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/// 课程信息显示@RequestMapping("/showCourse")public String showCourse(Model model, Integer page) throws Exception {List<CourseCustom> list = null;//页码对象PagingVO pagingVO = new PagingVO();//设置总页数pagingVO.setTotalCount(courseService.getCountCourse());if (page == null || page == 0) {pagingVO.setToPageNo(1);list = courseService.findByPaging(1);} else {pagingVO.setToPageNo(page);list = courseService.findByPaging(page);}model.addAttribute("courseList", list);model.addAttribute("pagingVO", pagingVO);return "/admin/showCourse";}//添加课程@RequestMapping(value = "/addCourse", method = {RequestMethod.GET})public String addCourseUI(Model model) throws Exception {List<TeacherCustom> list = teacherService.findAll();List<College> collegeList = collegeService.finAll();model.addAttribute("collegeList", collegeList);model.addAttribute("teacherList", list);return "/admin/addCourse";}// 添加课程信息处理@RequestMapping(value = "/addCourse", method = {RequestMethod.POST})public String addCourse(CourseCustom courseCustom, Model model) throws Exception {Boolean result = courseService.save(courseCustom);if (!result) {model.addAttribute("message", "课程号重复");return "/error";}//重定向return "redirect:/admin/showCourse";}// 修改教师信息页面显示@RequestMapping(value = "/editCourse", method = {RequestMethod.GET})public String editCourseUI(Integer id, Model model) throws Exception {if (id == null) {return "redirect:/admin/showCourse";}CourseCustom courseCustom = courseService.findById(id);if (courseCustom == null) {throw new CustomException("未找到该课程");}List<TeacherCustom> list = teacherService.findAll();List<College> collegeList = collegeService.finAll();model.addAttribute("teacherList", list);model.addAttribute("collegeList", collegeList);model.addAttribute("course", courseCustom);return "/admin/editCourse";}// 修改教师信息页面处理@RequestMapping(value = "/editCourse", method = {RequestMethod.POST})public String editCourse(CourseCustom courseCustom) throws Exception {courseService.updateById(courseCustom.getCourseid(), courseCustom);//重定向return "redirect:/admin/showCourse";}// 删除课程信息@RequestMapping("/removeCourse")public String removeCourse(Integer id) throws Exception {if (id == null) {//加入没有带教师id就进来的话就返回教师显示页面throw new CustomException("查询该课程失败");}courseService.removeById(id);return "redirect:/admin/showCourse";}//搜索课程@RequestMapping(value = "selectCourse", method = {RequestMethod.POST})private String selectCourse(String findByName, Model model) throws Exception {List<CourseCustom> list = courseService.findByName(findByName);model.addAttribute("courseList", list);return "/admin/showCourse";}/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<其他操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/// 普通用户账号密码重置@RequestMapping("/userPasswordRest")public String userPasswordRestUI() throws Exception {return "/admin/userPasswordRest";}// 普通用户账号密码重置处理@RequestMapping(value = "/userPasswordRest", method = {RequestMethod.POST})public String userPasswordRest(Userlogin userlogin) throws Exception {Userlogin u = userloginService.findByName(userlogin.getUsername());if (u != null) {if (u.getRole() == 0) {throw new CustomException("该账户为管理员账户,没法修改");}u.setPassword(userlogin.getPassword());userloginService.updateByName(userlogin.getUsername(), u);} else {throw new CustomException("没找到该用户");}return "/admin/userPasswordRest";}// 本账户密码重置@RequestMapping("/passwordRest")public String passwordRestUI() throws Exception {return "/admin/passwordRest";}}
package com.system.controller;import com.system.po.Userlogin;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.HashMap;
import java.util.Map;/*** 包含Web端以及微信小程序端登录*/
@Controller
public class LoginController {//登录跳转@RequestMapping(value = "/login", method = {RequestMethod.GET})public String loginUI() throws Exception {return "/login";}@RequestMapping(value="/logout",method = {RequestMethod.GET})public String logout() throws Exception{return "/login";}@RequestMapping(value = "/wxlogin", method = {RequestMethod.POST,RequestMethod.GET})@ResponseBodypublic Map<String,String>  wxlogin(Userlogin userlogin, Model model) throws Exception{//Shiro实现登录Map<String,String> map = new HashMap<String, String>();UsernamePasswordToken token = new UsernamePasswordToken(userlogin.getUsername(),userlogin.getPassword());//Subject:项目,通过Shiro保护的项目一个抽象概念//通过令牌(token)与项目(subject)的登陆(login)关系,Shiro保证了项目整体的安全//获取Subject单例对象Subject subject = SecurityUtils.getSubject();//如果获取不到用户名就是登录失败,但登录失败的话,会直接抛出异常//登录subject.login(token);if (subject.hasRole("admin")) {map.put("role","admin");map.put("username",userlogin.getUsername());} else if (subject.hasRole("teacher")) {map.put("role","teacher");map.put("username",userlogin.getUsername());} else if (subject.hasRole("student")) {map.put("role","student");map.put("username",userlogin.getUsername());}return map;}//登录表单处理@RequestMapping(value = "/login", method = {RequestMethod.POST})public String login(Userlogin userlogin) throws Exception {//Shiro实现登录UsernamePasswordToken token = new UsernamePasswordToken(userlogin.getUsername(),userlogin.getPassword());Subject subject = SecurityUtils.getSubject();//如果获取不到用户名就是登录失败,但登录失败的话,会直接抛出异常//登录subject.login(token);if (subject.hasRole("admin")) {return "redirect:/admin/showStudent";} else if (subject.hasRole("teacher")) {return "redirect:/teacher/showCourse";} else if (subject.hasRole("student")) {return "redirect:/student/showCourse";}return "/login";}}

五,项目总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36190.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于微信小程序的培训机构系统

随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个开发过程…

培训报名小程序实战开发

目录 1 需求描述2 原型绘制2.1 首页2.2 报名列表页2.3 报名页2.4 支付页面2.5 支付成功页面2.6 我的页面2.7 我的报名页面2.8 报名详情页面 3 数据源设计4 数据源开发5 创建模型应用6 录入测试数据7 创建自定义应用8 创建页面总结 经常有人问&#xff0c;低代码学习容易么&…

培训机构微信在线报名

培训机构微信报名系统 进入微信公众号&#xff0c;点击在线报名&#xff0c;进入在线报名的主页&#xff1a; 点击免费课程或是热门课程等&#xff0c;即可打开课程列表&#xff0c;界面如下&#xff1a; 点击对应一门课程&#xff0c;打开课程的详细界面进行报名&#xff0c;界…

微信小程序的培训机构课程报名系统

培训机构小程序的设计基于现有的手机&#xff0c;可以实现首页、个人中心、学员管理、教师管理、课程类型管理、课程信息管理、课程报名管理、课程退订管理、课程成绩管理、课程评价管理、留言板管理、系统管理等功能。方便教师和学员对首页、课程信息、课程资讯、我的等详细的…

北京电台“广播三下乡” 徐德亮演唱传统曲艺

中新网北京1月30日电 29日&#xff0c;北京电台“广播三下乡”活动在延庆刘斌堡村举行&#xff0c;北京电台主持人、相声演员徐德亮等为村民送上了精彩的演出。 徐德亮演出 北京电台供图 一到延庆刘斌堡村&#xff0c;北京电台主持人大帅和艾珂就迫不及待地帮着搬运大米和油&…

《大众摄影》四十年经典作品精选

《炼铁炉旁》   作者&#xff1a;华谷平   选自1958年第9期      《黎明钟声》1942年   作者&#xff1a;江波   选自1958年第10期      《冒雨奋战》1958年   作者&#xff1a;陈勃   选自1959年第1期      《在结婚登记处》195…

微商在微信营销的时候微信封号的原因是什么?

微信号被封可以说是做微信营销的噩梦&#xff0c;现在解封微信的限制比较多&#xff0c;而且流程很是繁琐&#xff0c;很多人因为操作不当造成微信号总是被封&#xff0c;那么究竟原因是什么呢?接下来&#xff0c;马找钱这篇问文章就和大家分享下微信老是被封的原因&#xff0…

Zebec Chain缘何能成为新晋应用链,熊市下又为何值得我们关注?

流支付生态 Zebec 正处于发展的火热阶段&#xff0c;Zebec此前于12月20日举办的为期3天的Web3.0 TechHive Summit 2022 大会&#xff0c;目前已经落幕&#xff0c;此次大会参会项目多达34个囊括了公链、钱包、DID、GameFi等多个主流行业赛道&#xff0c;并围绕行业安全、发展趋…

《ChatGPT:利用最先进的技术支撑多域作战》

来源&#xff1a;专知 本文约2000字&#xff0c;建议阅读5分钟 我们对ChatGPT带来的可能性感到兴奋。 ChatGPT是一个建立在GPT-3大型自然语言模型上的人工智能驱动的聊天机器人&#xff0c;自OpenAI于2022年11月推出以来&#xff0c;已经风靡全球。它是历史上增长最快的消费者应…

腾讯AI Lab绝悟团队夺冠Kaggle足球AI竞赛

感谢阅读腾讯AI Lab微信号第115篇文章。本文将介绍绝悟WeKick版本登顶首届谷歌足球Kaggle竞赛的内容。 Google Research 与英超曼城俱乐部在 Kaggle 平台上联合举办的 11v11 足球 AI 竞赛 Google Football 近日宣布最终结果&#xff1a;腾讯 AI Lab 绝悟 WeKick 版本&#xff0…

ChatGPT挑起的这场AI竞赛,有一个肮脏的秘密

来源&#xff1a;WIRED 作者&#xff1a;Chris Stokel-Walker 编译&#xff1a;库珀 将大型语言模型&#xff08;LLM&#xff09;整合到搜索引擎中&#xff0c;或意味着 5 倍的算力增长和巨大的碳排放。 2 月初&#xff0c;微软和谷歌相继宣布对其搜索引擎进行重大改革。 这两家…

NCT全国青少年编程能力等级测试教程(图形化编程、Python语言编程)

图形化编程 Python语言编程 蓝桥杯STEMA测评-python真题讲解6 蓝桥杯STEMA测评-python真题讲解6_哔哩哔哩_bilibili 工橙院大豪猪 工橙院大豪猪的个人空间_哔哩哔哩_Bilibili 蓝桥杯青少组Python竞赛真题讲解 蓝桥杯青少组Python竞赛真题讲解_哔哩哔哩_bilibili 蓝桥杯第13…

Go C画图 CSP-J信息学奥赛 2023.03.02、03 测试题

一、单项选择题 &#xff08;共10题&#xff0c;每题1.5分&#xff0c;共计15分。每题有且仅有一个正确选项。&#xff09; 1&#xff0e;在二进制下&#xff0c;1011001 &#xff08; &#xff09; 1100110。 A&#xff0e;1011 B &#xff0e;1101 …

股票交易查询接口api源码分享

股票交易查询接口是一个股票分析的工具&#xff0c;投资折可以通过这个接口在股票的买卖过程中自己判断是否要做空&#xff0c;简单来说股票交易查询接口就用来判断股价上涨或者下跌以及投资亏损的分析工具&#xff01; 那么在本质上来说股票交易查询接口其实就死是一个帮助投资…

微信小程序实现仿微信聊天界面(各种细节处理)

下面先来看看效果 为实现这样的效果&#xff0c;首先要解决两个问题&#xff1a; 1.点击输入框弹出软键盘后&#xff0c;将已有的少许聊天内容弹出&#xff0c;导致看不到的问题&#xff1b; 2.键盘弹出或收起时&#xff0c;聊天消息没有自动滚到最底部。 首先解决第二个问题…

小程序中如何实现即时通信聊天功能?

项目背景&#xff1a;小程序中实现实时聊天功能 一、服务器域名配置 配置流程 配置参考URL&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/api/api-network.html 二、nginx中配置反向代理加密websocket(wss) upstream websocket{hash $remote_addr consiste…

微信小程序的测试方法,抓包,模拟

微信小程序的测试&#xff0c;抓包&#xff0c;模拟 不仅仅只是测试同学需要完整的对我们的程序进行测试&#xff0c;同时也需要我们的开发同学对如何进行微信小程序的测试有一定的了解&#xff0c;接下来&#xff0c;我们来对一些特殊场景的微信小程序进行测试。 目录 微信小…

如何在微信小程序里实现聊天室功能?

准备工作 下载环信 小程序demosdkgit clone https://github.com/easemob/webim-weixin-xcx创建一个文件夹&#xff0c;将 demo 中的文件 comps、images、sdk、utils 拷贝到新的文件&#xff0c;文件目录说明 集成 登录环信没什么可说的&#xff0c;这里选择的是使用 usernam…

具身智能,是机器人的“冷饭热炒”吗?

大模型正如火如荼&#xff0c;下一个AI风口就来了。 如果你关注2023世界人工智能大会等行业峰会&#xff0c;以及英伟达、微软、谷歌、特斯拉和国內科技大厂的最新发布会&#xff0c;除了“大模型”&#xff0c;应该会听到另一个高频词——具身智能。 所谓具身智能Embodied AI …