基于javaServlet和MySQL实现的选课系统

person 匿名

发布日期: 2021-08-12 11:20:24 浏览量: 204
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

1.项目简介

由Java为主要框架,mysql8.0配置主从复制实现读写分离,主机丛机分别为腾讯云的服务器,而项目部署在阿里云上。前端主要由bootstrap完成,在添加修改相关功能时通过ajax来验证其主键是否存在可用。代码层次清晰,输入框约束较高,已配置登录拦截。

设计内容:设计一个简单的“在线教学平台系统”,实现基本的选课功能。

主要功能及要求:

  • 管理员能够实现学生基本信息的录入、修改、删除等操作,其中学生信息包括学号、姓名、性别、专业等信息

  • 管理员能够实现课程的录入、修改、删除等功能,其中课程信息包括课程号、课程名、课程图片、学分等

  • 学生能实现选课功能,每个学生可以在首页浏览课程信息,并可以进行选课操作,其中课程信息包括学分、上课地点、课程编号、授课教师、课程名等信息

  • 管理员可以查看学生选课信息,并可以进行添加选课学生和删除选择该课程的学生等操作

  • 有汇总功能,管理员首页可以查看没门课程的选课人数

应用技术

  • 工具:eclipse、navicat

  • 环境:JDK1.8、tomcat9.0、mysql8.0

  • 前端:JavaScript、jQuery、bootstrap4

  • 后端:maven、ajax、mysql读写分离

2.功能

主要功能模块图

新增:

  • 增加分页查询

    • 输入框约束
      • 学号、身份证、课程编号、教师编号只能输入数字,并且有最大输入限制,其中学号固定12位,若小于12位将会有提示。姓名只能输入中文。几乎所有输入框不能输入空格等约束
  • 下拉框联动

    • 添加、修改课程采用二级联动,即所属系别——所属专业
    • 添加、修改学生采用三级联动,即系别——专业——班级(三级联动代码有些复杂,因为JavaScript学的不好=-=)。
  • ajax验证

    • 用于验证学号、课程编号、教师编号是否存在并给出提示信息等。
    • 其中课程安排时间地点排重功能正在开发中····
  • 登录拦截

    • 在handler层配置拦截器,对各角色进行登录拦截,即未登录用户不能直接通过相应url访问。

3.数据库设计

3.1 表结构

教室表

课程表

公告表

成绩表

用户表

3.2 数据ER图

5.项目实现

5.1 编写实体类

user.java

  1. public class User {
  2. private String email;
  3. private String password;
  4. private int role;
  5. private String name;
  6. public User(){
  7. super();
  8. }
  9. public User (String email, String password){
  10. this.email = email;
  11. this.password = password;
  12. }
  13. public String getEmail(){
  14. return email;
  15. }
  16. public void setEmail(String email){
  17. this.email = email;
  18. }
  19. public String getPassword(){
  20. return password;
  21. }
  22. public void setPassword(String password){
  23. this.password = password;
  24. }
  25. public int getRole() {
  26. return role;
  27. }
  28. public void setRole(int role) {
  29. this.role = role;
  30. }
  31. public String getName() {
  32. return name;
  33. }
  34. public void setName(String name) {
  35. this.name = name;
  36. }
  37. }

5.2 编写Dao层

User.java

  1. public class UserDao {
  2. public User signin (Connection con, User user) throws SQLException{
  3. User resultUser = null;
  4. PreparedStatement pstmt = null;
  5. try {
  6. String sql = "select * from user where email=? and password=?";
  7. pstmt = con.prepareStatement(sql);
  8. pstmt.setString(1, user.getEmail());
  9. pstmt.setString(2, user.getPassword());
  10. ResultSet rs = pstmt.executeQuery();
  11. if (rs.next()){
  12. resultUser = new User();
  13. resultUser.setEmail(rs.getString("email"));
  14. resultUser.setPassword(rs.getString("password"));
  15. resultUser.setRole(rs.getInt("role"));
  16. resultUser.setName(rs.getString("name"));
  17. }
  18. return resultUser;
  19. }catch (Exception e){
  20. e.printStackTrace();
  21. }
  22. return resultUser;
  23. }
  24. }

5.3 Servlet层编写

  1. @WebServlet(urlPatterns = "/useradd", name = "useradd")
  2. public class UseraddServlet extends HttpServlet {
  3. Dbutil dbutil = new Dbutil();
  4. AdminDAO adminDAO = new AdminDAO();
  5. @Override
  6. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  7. this.doGet(req, resp);
  8. }
  9. @Override
  10. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  11. String school_num = new String(req.getParameter("school_num").getBytes("ISO-8859-1"), "UTF-8");
  12. String name = new String(req.getParameter("name").getBytes("ISO-8859-1"), "UTF-8");
  13. String sex = new String(req.getParameter("sex").getBytes("ISO-8859-1"), "UTF-8");
  14. String grade = new String(req.getParameter("grade").getBytes("ISO-8859-1"), "UTF-8");
  15. String school = new String(req.getParameter("school").getBytes("ISO-8859-1"), "UTF-8");
  16. String major = new String(req.getParameter("major").getBytes("ISO-8859-1"), "UTF-8");
  17. String qq = new String(req.getParameter("qq").getBytes("ISO-8859-1"), "UTF-8");
  18. String phone = new String(req.getParameter("phone").getBytes("ISO-8859-1"), "UTF-8");
  19. String email = new String(req.getParameter("email").getBytes("ISO-8859-1"), "UTF-8");
  20. String password = new String(req.getParameter("password").getBytes("ISO-8859-1"), "UTF-8");
  21. String adress = new String(req.getParameter("adress").getBytes("ISO-8859-1"), "UTF-8");
  22. String role = new String(req.getParameter("role").getBytes("ISO-8859-1"), "UTF-8");
  23. UserAdd userAdd = new UserAdd();
  24. Connection con = null;
  25. userAdd.setSchool_num(school_num);
  26. userAdd.setName(name);
  27. userAdd.setSex(sex);
  28. userAdd.setGrade(grade);
  29. userAdd.setSchool(school);
  30. userAdd.setMajor(major);
  31. userAdd.setQq(qq);
  32. userAdd.setPhone(phone);
  33. userAdd.setEmail(email);
  34. userAdd.setPassword(password);
  35. userAdd.setAdress(adress);
  36. userAdd.setRole(role);
  37. try {
  38. con = dbutil.getCon();
  39. adminDAO.useradd(con, userAdd);
  40. resp.sendRedirect("admin/user.jsp");
  41. } catch (Exception e) {
  42. e.printStackTrace();
  43. }
  44. }
  45. }

6.项目展示

登录页

首页

用户管理

添加用户

批量导入

公告管理

添加公告

课程管理

教室管理

学生信息管理

教师查看课程详情页

我的课程页面,学生查看已选的课程

修改密码

学生页面

查看公告

信息查询

选课(管理员需要先添加数据)

上传的附件 cloud_download 开发文档.pdf ( 765.59kb, 2次下载 ) cloud_download SelectCource-master.zip ( 6.20mb, 2次下载 )
error_outline 下载需要13点积分
eject