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

第一章 开发工具

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

第二章 数据库组成

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

2.1 考生表

考生表组成结构考生表的主要信息包括学生Id(Sid)、姓名(Sname)、密码(Spwd)、报考状态(Sstatus:0为未报考,1为已报考)、成绩(Grade)

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

2.2 管理员表

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

管理员表

2.3 考试科目表

这是张固定表,用来标识科目号和科目名称
考试科目表

2.4 考场表

固定表,标识考场和监考老师
考场表

第三章 功能分析、实现

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

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借此判断登陆成功,跳转至登录成功界面

注册界面用户注册功能关键代码

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 报名功能

报名功能界面在这里插入图片描述

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

3.3 生成准考证

准考证这里是对数据库的多表查询,稍有些复杂。此外,用户的考场号需要等待管理员分派后才可以显示,默认为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操作也比较简单。
成绩查询

第四章 总结

  • 数据库
    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>
<%
   }
%>
  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值