简单实现在线考试java

简单实现在线考试

核心代码:

生成一组可用随机数,对数据库中的id进行了对比,防止id不连续。

   //生成指定随机数
    public static List<Integer> subId(Integer number) {
        SubjectService subjectService = new SubjectServiceImpl();
        //list集合用来储存产生的可用的随机数
        List<Integer> list = new ArrayList();
        //得到带有id的集合
        List<Subject> list1 = subjectService.selectId();
        //用于储存id的集合
        List<Integer> list2 = new ArrayList<>();
        //将ID存入list2集合
        for (int i = 0; i < list1.size(); i++) {
            list2.add(list1.get(i).getId());
        }
        //获取最大的id值和最小的id值
        int max = list1.get(0).getId();
        int min = list1.get(0).getId();
        for (int i = 0; i < list1.size(); i++) {
            if (max < list1.get(i).getId()) {
                max = list1.get(i).getId();
            }
            if (min > list1.get(i).getId()) {
                min = list1.get(i).getId();
            }
        }
        Random random = new Random();
        int u = 0;
        //当传入的number参数不为空时进入循环
        if (number != null) {
            //循环的目的产生number个不重复并且属于数据库中sub表的id
            while (number != list.size()) {
                //产生一个指定期间的随机数
                int rand = random.nextInt(max - min) + min;
                //判断id是否存在
                if (list2.contains(rand)) {
                    //当list集合没有值时
                    if (list.size() == 0) {
                        list.add(rand);
                    } else {
                        //不重复时存入随机id值
                        if (list.contains(rand) == false) {
                            list.add(rand);
                        }

                    }
                }
              /*  for (int i = 0; i < list1.size(); i++) {
                    if (rand == list1.get(i).getId()) {
                        if (list.size() == 0) {
                            list.add(rand);
                            System.out.println("rand=" + rand);
                        } else {
                            for (int j = 0; j < list.size(); j++) {
                                if (rand != list.get(j)) {
                                    list.add(rand);
                                    System.out.println(j + "=" + rand);
                                    System.out.println(list.size());
                                }
                            }
                        }

                    }
                }*/
            }
        }
        return list;
    }

扩展:

扩展中的功能资源中并没有

功能扩展:

1、登录功能、注册功能、题库的增删改查、

2、用户类型:最终管理员、二级管理员、教师端、学生端、题库编辑员

最终管理员:对二级管理员、教师端、学生端、题库编辑员、等账户的管理,也包括其他表

二级管理员:对教师端、学生端账户管理

教师端:个人题库(增删改查),共享题库(查,调用),班级管理、个人中心(账号,密码修改,历史记录查看)

学生端:考试答题功能,考试记录查看,练习、个人中心(账号,密码修改,历史记录查看)

题库编辑员:对题库的增删改查

数据库表:

用户表(id,账号,密码,用户类型,状态,同时在线数)

用户类型表(id,类型)

状态表(id,状态)

题库表:

单选题(id,题目、答案、题目类型、题类型、权限、比对码、 A、B、C、D )

多选(id,题目、答案、题目类型、题类型、权限、比对码、A、B、C、D、E、F、G、H)

判断题(id,题目、答案、题目类型、题类型、权限、比对码)

填空题(id,前半段题目、后半段题目、答案、题目类型、题类型、权限、比对码)

简答题(id、题目、答案、题目类型、题类型、权限、比对码)

教师题库表(id、题号id、比对码用户id)

学生答题记录表(id、题号id、题目、题类型id、答案、得分情况)

题目类型(id 、类型)

题类型(id 、类型)

资源:简单实现的考试功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值