JSP+mysql实现 计算机等级考试系统

文章目录

  • 第一章 开发工具
  • 第二章 数据库组成
    • 2.1 考生表
    • 2.2 管理员表
    • 2.3 考试科目表
    • 2.4 考场表
  • 第三章 功能分析、实现
    • 3.1 登录、注册功能
    • 3.2 报名功能
    • 3.3 生成准考证
    • 3.4 成绩查询
  • 第四章 总结

第一章 开发工具

项目运行环境:IntelliJ IDEA
服务器:Tomcat
数据库:MySQL
数据库可视化工具:Navicat Premium 12

第二章 数据库组成

将功能细化,降低数据冗余,表达到三范式

2.1 考生表

JSP+mysql实现 计算机等级考试系统_第1张图片考生表的主要信息包括学生Id(Sid)、姓名(Sname)、密码(Spwd)、报考状态(Sstatus:0为未报考,1为已报考)、成绩(Grade)

这里的Sid设为自动递增,后续注册时自动为用户生成一个唯一标识,用户用此id进行登录

2.2 管理员表

仅包括管理员的用户名和密码。因为经过分析,管理员与考生之间无直接联系,仅是考场分配和成绩录入的操作。

管理员表

2.3 考试科目表

这是张固定表,用来标识科目号和科目名称
JSP+mysql实现 计算机等级考试系统_第2张图片

2.4 考场表

固定表,标识考场和监考老师
JSP+mysql实现 计算机等级考试系统_第3张图片

第三章 功能分析、实现

功能主要分为管理员功能和考生功能,简单的数据库增删改查操作即可实现。

3.1 登录、注册功能

涉及到的数据库操作为表的查询和增加。
用户登录功能关键代码

        int flag = -1;  //-1:系统异常  0:用户名或密码异常   1:登陆成功
        try {

            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/testproject", "root", "123456");

            String sql = "select count(*) from student where Sid =? and Spwd =?";
            pstmt = connection.prepareStatement(sql);

            pstmt.setString(1, login.getSid());
            pstmt.setString(2, login.getSpwd());
            rs = pstmt.executeQuery();

            if (rs.next()) {
                result = rs.getInt(1);
            }
            if (result > 0) {
                return 1;
            } else {
                return 0;//登陆失败(用户名或密码有误!)
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            return -1; //登陆失败(系统异常!)
        } catch (SQLException e) {
            e.printStackTrace();
            return -1;
        } catch (Exception e) {
            e.printStackTrace();
            return -1;
        } finally {
            {
                try {
                    if (pstmt != null) pstmt.close();
                    if (rs != null) rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

查询数据库中有没有发过来的指定字段,如果ResultSet rs 查到值,则 result = rs.getInt(1); 并给servlet返回1,servlet借此判断登陆成功,跳转至登录成功界面

JSP+mysql实现 计算机等级考试系统_第4张图片用户注册功能关键代码

public int registerUser(Register register){
            
        String sql = "insert into Student(Sname,Spwd,Ssex,Sphone) values(?,?,?,?)";
        PreparedStatement pstmt = DButils.getPreparedStatement(sql,register.getSname(),register.getSpwd(),register.getSsex(),register.getSphone());
        try {
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return 0;
    }

这里只是简单的插入数据 操作,就不赘述了

注册并登录成功后,跳转至用户首页:

3.2 报名功能

JSP+mysql实现 计算机等级考试系统_第5张图片JSP+mysql实现 计算机等级考试系统_第6张图片

  • 由于用户登陆进来我们已经对其信息进行获取,所以这里看到的文字都是只读文字,仅供用户审核。唯一能操作的就是报考的科目。
  • 代码实现同上注册功能,只是简单的插入数据。这里就不进行代码演示了。

3.3 生成准考证

JSP+mysql实现 计算机等级考试系统_第7张图片这里是对数据库的多表查询,稍有些复杂。此外,用户的考场号需要等待管理员分派后才可以显示,默认为0.

select student.Sname,student.Ssex,student.Sid,exam.Ename,student.Rid from student,exam where student.Sid=18130 and(select Ename from exam where student.Eid in(select student.Eid from student where student.Sid=18130))

3.4 成绩查询

管理员给用户成绩赋值后,用户方可查询成绩。这里涉及的sql操作也比较简单。
JSP+mysql实现 计算机等级考试系统_第8张图片

第四章 总结

  • 数据库
    1.数据操作使用增删改查以及增删改查即可实现所有功能
    2.由于功能比较简单,没有用到数据库的触发器
  • 前端
    1.界面中用到了layUI和bootstrap,这两个组件库使用简单、优化了界面、简化了jsp代码的冗余
    2.像如下这种“骚操作”(html代码中嵌jsp代码使用if判断语句)一定一定少用。虽然实现功能很方便,但是很容易出现谜之错误
<%
   String statue = "0";
   String id = String.valueOf(request.getAttribute("id"));
   statue = String.valueOf(request.getAttribute("statue"));
   if (statue == "1") {
%>
<script src="layer.js"></script>
<script>
   layer.open({
       title: '注册成功,您的用户名为'
       , content: <%=id%>
   });
</script>
<%
} else {
%>
<script src="layer.js"></script>
<script>
   layer.msg('请选择登录或注册');
</script>
<%
   }
%>

你可能感兴趣的:(jsp,mysql,java,数据库)