• 基于ssm的公选课申报系统


    一、系统简介


    本项目采用eclipse工具开发,spring+springmvc+mybatis+bootstrap技术编写,数据库采用的是mysql,navicat管理工具。

    系统一共分为3个角色分别是:管理员,审批人,教师

    二、模块简介

    管理员

    1、登录

    2、审批人管理

    3、教师管理

    4、分类管理

    5、计划时间管理

    6、公选课申报管理

    7、个人信息管理

    8、数据统计管理

    审批人

    1、登录

    2、个人信息管理

    3、审批公选课

    4、统计数据

    5、下载附件

    教师

    1、登录

    2、个人信息管理

    3、上传附件

    4、公选课申报

    5、历史记录查询

    项目简介:
    难度等级:✩✩✩
    用户类型:3角色(管理员,审批人,教师)
    设计模式:MVC
    项目架构:B/S架构
    开发语言:Java语言
    前端技术:bootstrap+HTML、CSS、JS、JQuery等
    后端技术:JSP、ssm框架
    运行环境:Windows7或10、JDK1.8
    运行工具:本系统采用Eclipse开发,仅支持Eclipse运行,不支持MyEclipse和IDEA运行,因为三者的骨架不一样,强行导入打开运行可能会导致出现未知的错误。(如若想用idea运行,需要转换!!!!)
    数  据  库:MySQL5.5/5.7/8.0版本
    运行服务器:Tomcat7.0/8.0/8.5/9.0等版本
    是否基于Maven环境:否
    是否采用框架:是
    数据库表数量:7张表
    JSP页面数量:20多张
    是否有分页:有分页

    相关截图


     

     

     

     

     

     

     

     

     

     

     

     相关代码

    登录

    1. <%@ page language="java" contentType="text/html; charset=utf-8"
    2. pageEncoding="utf-8"%>
    3. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    4. <%
    5. String path = request.getContextPath();
    6. String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
    7. %>
    8. html>
    9. <html lang="en">
    10. <head>
    11. <meta charset="UTF-8">
    12. <meta name="viewport"
    13. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    14. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    15. <title>登录title>
    16. <link rel="icon" href="<%=path%>/resource/static/favicon.ico">
    17. <link rel="stylesheet" href="<%=path%>/resource/static/bootstrap/css/bootstrap.min.css">
    18. <link rel="stylesheet" href="<%=path%>/resource/static/admin/css/login.css">
    19. <script src="<%=path%>/resource/static/js/vue.min.js">script>
    20. <script src="<%=path%>/resource/static/js/jquery-3.3.1.min.js">script>
    21. <script src="<%=path%>/resource/static/bootstrap/js/bootstrap.bundle.js">script>
    22. <script src="<%=path%>/layui/layui.js">script>
    23. head>
    24. <body>
    25. <div class="login">
    26. <form id="saveForm">
    27. <h2>公选课申报系统h2>
    28. <div class="form-group">
    29. <label>用户名label>
    30. <input type="text" v-model="username" name="username" id="username" class="form-control form-control-lg">
    31. div>
    32. <div class="form-group">
    33. <label>密码label>
    34. <input type="password" v-model="password" name ="password" id="password" class="form-control form-control-lg" id="pwd">
    35. div>
    36. <div class="form-group form-check">
    37. <input type="radio" class="form-check-input" name="type" value="1" id="exampleCheck2" checked>
    38. <label class="form-check-label" for="exampleCheck2">管理员label>        
    39. <input type="radio" class="form-check-input" name="type" value="2" id="exampleCheck1" >
    40. <label class="form-check-label" for="exampleCheck1">教师label>        
    41. <input type="radio" class="form-check-input" name="type" value="3" id="exampleCheck1" >
    42. <label class="form-check-label" for="exampleCheck1">审批人label>
    43. div>
    44. <button type="button" :disabled="loading" @click="login" id="login" class="btn btn-primary btn-lg btn-block">
    45. <span v-show="loading" class="spinner-grow spinner-grow-sm" role="status" aria-hidden="true">span>
    46. 立即登录
    47. button>
    48. form>
    49. div>
    50. <div class="modal fade" id="myModal" aria-labelledby="myModallabel"
    51. aria-hidden="true" tabindex="-1" >
    52. <div class="modal-dialog">
    53. <div class="modal-content" >
    54. <div class="modal-header">
    55. <h5 class="modal-title" id="myModallabel">供应商注册h5>
    56. <button class="close" type="button" data-dismiss="modal"
    57. aria-hidden="true">×button>
    58. div>
    59. <form id="addForm" class="form-horizontal">
    60. <div class="modal-body">
    61. <div class="form-group">
    62. <label class="control-label col-lg-4">姓名:label>
    63. <div class="col-lg-9">
    64. <input type="text" name="uname" class="form-control">
    65. div>
    66. div>
    67. <div class="form-group">
    68. <label class="control-label col-lg-4">公司名:label>
    69. <div class="col-lg-9">
    70. <input type="text" name="company" id="company" class="form-control">
    71. div>
    72. div>
    73. <div class="form-group">
    74. <label class="control-label col-lg-4">密码:label>
    75. <div class="col-lg-9">
    76. <input type="password" name="pwd" id="pwd" class="form-control">
    77. div>
    78. div>
    79. <div class="form-group">
    80. <label class="control-label col-lg-4">主营产品:label>
    81. <div class="col-lg-9">
    82. <input type="text" name="address" id="address" class="form-control">
    83. div>
    84. div>
    85. <div class="form-group">
    86. <label class="control-label col-lg-4">手机号:label>
    87. <div class="col-lg-9">
    88. <input type="text" name="phone" id="phone" class="form-control">
    89. div>
    90. div>
    91. div>
    92. <div class="modal-footer">
    93. <button class="btn btn-default" type="button" data-dismiss="modal">关闭button>
    94. <a class="btn btn-success aaa" type="button" id="save" >提交a>
    95. div>
    96. form>
    97. div>
    98. div>
    99. div>
    100. <script>
    101. $("#save").click(function() {
    102. $.ajax({
    103. cache : true,
    104. type : "post",
    105. url : "addGys",
    106. data : $("#addForm").serialize(),
    107. async : false,
    108. success : function(e) {
    109. if (e) {
    110. alert("注册成功!");
    111. document.location.reload();//当前页面
    112. } else {
    113. alert("注册失败,手机号重复!");
    114. }
    115. }
    116. })
    117. });
    118. script>
    119. <script>
    120. layui.use([ 'form','jquery','layer','laydate','upload' ], function() {
    121. var form = layui.form,
    122. layer = layui.layer,
    123. laydate = layui.laydate,
    124. upload = layui.upload,
    125. $= layui.jquery;
    126. form.render();//这句一定要加,占坑
    127. /* laydate.render({
    128. elem: '#schoolTime'
    129. });
    130. laydate.render({
    131. elem: '#day'
    132. }); */
    133. var uploadInst = upload.render({
    134. elem: '#test1'
    135. ,url: 'upload2'
    136. ,accept:'images'
    137. ,size:50000
    138. ,before: function(obj){
    139. obj.preview(function(index, file, result){
    140. $('#demo1').attr('src', result);
    141. });
    142. }
    143. ,done: function(res){
    144. //如果上传失败
    145. if(res.code > 0){
    146. return layer.msg('上传失败');
    147. }
    148. //上传成功
    149. var demoText = $('#demoText');
    150. demoText.html('上传成功');
    151. var fileupload = $(".img");
    152. fileupload.attr("value",res.data.src);
    153. console.log(fileupload.attr("value"));
    154. }
    155. ,error: function(){
    156. //演示失败状态,并实现重传
    157. var demoText = $('#demoText');
    158. demoText.html('上传失败 重试');
    159. demoText.find('.demo-reload').on('click', function(){
    160. uploadInst.upload();
    161. });
    162. }
    163. });
    164. });
    165. script>
    166. <script>
    167. $("#login").click(function(){
    168. var username = $("#username").val();
    169. var password = $("#password").val();
    170. if(username == null || username == ""){
    171. alert("请填写用户名");
    172. return false;
    173. }if(password == null || password == ""){
    174. alert("请填写密码");
    175. return false;
    176. }
    177. //执行添加的操作ajax
    178. $.ajax({
    179. cache:true,
    180. type:"post",
    181. url:"login",
    182. data:$("#saveForm").serialize(),
    183. async:false,
    184. success:function(e){
    185. if(e){
    186. alert("登录成功");
    187. window.parent.location.href="toMain";
    188. }else{
    189. alert("登录失败,账号或密码错误");
    190. }
    191. }
    192. })
    193. });
    194. script>
    195. body>
    196. html>
    1. /**
    2. * 登录
    3. * @param username
    4. * @param request
    5. * @param password
    6. * @param session
    7. * @param response
    8. * @param mv
    9. * @return
    10. * @throws ServletException
    11. * @throws IOException
    12. */
    13. @RequestMapping("/login")
    14. @ResponseBody
    15. public boolean login(@RequestParam("username")String username,
    16. HttpServletRequest request,@RequestParam("password")String password,
    17. HttpSession session,HttpServletResponse response,ModelAndView mv) throws ServletException, IOException {
    18. session.removeAttribute("admin");
    19. session.removeAttribute("user");
    20. String type=request.getParameter("type").toString();
    21. Admin admin = new Admin();
    22. request.getSession().setAttribute("type", type);
    23. boolean re = false;
    24. if(type != null && type.equals("1")){
    25. admin.setUsername(username);
    26. admin.setPassword(password);
    27. Admin admin1 = us.selectAdmin(admin);
    28. if(admin1 != null){
    29. request.getSession().setAttribute("admin", admin1);
    30. session.setAttribute("admin", admin1);
    31. re = true;
    32. }
    33. }else if(type != null && type.equals("2")){
    34. Teacher teacher = teacherService.selectTeachers(username,password);
    35. if(teacher != null){
    36. request.getSession().setAttribute("teacher", teacher);
    37. session.setAttribute("teacher", teacher);
    38. re = true;
    39. }
    40. }else if(type != null && type.equals("3")){
    41. User u = new User();
    42. u.setPhone(username);
    43. u.setPassword(password);
    44. User user = us.selectUser(u);
    45. if(user != null){
    46. request.getSession().setAttribute("user", user);
    47. session.setAttribute("user", user);
    48. re = true;
    49. }
    50. }
    51. return re;
    52. }

    其他相关代码都是类似的,主要是前端jsp和后端控制器交互比较重要!!!非开源!!!!!!
    其他模块代码都是类似的,此项目适合初学者学习借鉴,项目整体比较简单,可用作于期末考核,课设,毕设等方面的作业!!!!!
    喜欢的朋友的点赞加关注,感兴趣的同学可以研究!!!!!
    感谢  = v =
     

     

  • 相关阅读:
    初创企业应该选一款怎样的客服系统?
    java通过FTP跨服务器动态监听读取指定目录下文件数据
    荣耀进击背后的「韧性力量」
    git cherry-pick
    java“贪吃蛇”小游戏
    Flutter 启动白屏
    亚马逊AI编程助手CodeWhisperer
    外包干了2个月,技术退步明显。。。。。
    流水线作业
    数据结构 | 【红黑树】图解原理
  • 原文地址:https://blog.csdn.net/qq_43485489/article/details/126127347