菜单

数据库设计之问卷模块的安插1

2019年2月8日 - 金沙编程资讯

PHP落成类似题库抽题效果

大家好,我顾某人又回去了,目前学了一些PHP,然后就想写个简单小例子试试,于是就写了一个接近于从题库抽题的东西,大约就是先输入必要抽题的数额,然后从数据库中擅自抽取标题。
梦想各位大佬轻喷。
要是我前几日有这么一个题库:
图片 1
哎?为啥要用英文?,因为自己,,没搞定编码难题。
进而我来开展抽题:
图片 2
图片 3
这么就随便抽出了三道难点。


现在的话说自家的思绪,希望各位大佬不吝赐教。
首先要促成这些职能,首先本身需求多少个页面,一个是用户输入页面input.html,一个是后台处理页面select.php,还有一个是不当警告页面error.html(若是用户输入为空,或者输入的抽题数量超过了题库的多寡那么就报错),然后是数据库,数据库分为两列,一列是question,用来存放题目,另一列是id,用于标识question

接下来对用户的输入进行判断:
图片 4


input.html页面:

<html>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <form action="select.php" method="get">
        请输入要随机生成的题数:<input type="text" name="input" />
        <input type="submit" name="Submit" value="提交" />
    </form>
</html>

error.html页面:

<html>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <p>您的输入有误,请重新输入!</p>
</html>

select.php页面:

<?php
    header("Content-type:text/html;charset=utf8");
    $connect=new mysqli('localhost','wy','000000','test');
    if(!$connect){
        die("数据库连接失败!");
    }                           //连接数据库
    $sql="select id from test";
    $result=$connect->query($sql);
    $array=array();
    $i=0;
    while($row=$result->fetch_row()){
        foreach($row as $val){
            $array[$i]=$val; 
            $i ++;
        }
    }                          //将题目id存放进一个数组array
    $input=$_GET['input'];    //接受用户的输入
    if(empty($input) || $input>count($array)){  //判断用户的输入是否为空或输入大于题库数量
        header("Location:error.html");    //输入有误重定向到错误提示页面
    }else{
        shuffle($array);    //将存放题目id的数组进行随机排序
        $k=0;               //用于取出rand数组中question时的id
        for($j=0;$j<$input;$j++){
            $rand=array_slice($array,0,$input);     //从数组的第一个数开始,取出用户输入数量个id存放进一个数组
            $sql2="select * from test where id='{$rand[$k]}'";  //查找rand数组中每一个id对应的question
            $result2=$connect->query($sql2);    //存放mysql语句返回的结果集
            while($row2=$result2->fetch_assoc()){
                echo $row2['question'];     //返回question对应的内容
                echo '<br />';
            }
            $k++;
        }
        $result2->free();   //释放内存
    }
    $result->free();        //释放内存
    $connect->close();      //关闭连接
?>

诸君大佬,若是你们不介意的话,我只想要一点流量(民用博客)。

2、到官网下载安装包

wget https://github.com/tecnickcom/tcexam/archive/master.zip

3、导入起头化数据

3.为什么试题的选项要利用,单独一个卷子的某部试题存放一份。而不是某个试题存放一份。

八、tcexam的使用

5)、举行完上述操作后,就足以在测试管理里新建测试,从题库里自由抽题进行试验了。

6.x安装TCExam
集团培训部方今有在线考试的要求,而眼前拔取的在线考试的体系尚未自行评分功用,全体的课题须要人工实行批阅,效…

当希望统一修改的时候,那是好的。当不希望统一修改的时候,那就是不佳的。

3、导入开首化数据

六、安全方面的安装

遵从官方的文档,安装到位后要求进行以下操作,来拉长程序的安全性。

2.试题序号
率先,试题在题库中确实有主键id,然而出于数据库本身的表征,删除了有些记下,前边的滋长照旧会从已经出现过的起始,并不会从当下部分开首。
比如1,2,3,。我现在剔除了3,下一个记录id就会是4,不会是3。
附带,同一道标题,在分歧试卷中本来就是分化的。
之所以要单独维护一个试题在问卷中的,单独的编号。
此处有多少个难题
(1)新插入的课题编号
自己眼前想到的章程是,插入以前查一下有稍许试题,然后拿走相应作为几号。
(2)试题的编号变动
比如,插入一个试题到中路,或者去除一道题,其他的编号都要改变。

2)、导入伊始数据
mysql -uroot -p tcexam < mysql_db_structure.sql
mysql -uroot -p tcexam < db_data.sql

独自实施每一条语句并回车,按提醒输入密码

1)、生成模块

可以知道为科目,是数学、语文如故立陶宛语,这么说懂了吗!

7.改动履历表
以此模块重要是对此每一个修改(增、删、改)都开展记录。
本身的想法是,
(1)按照用户的体会实行记录
譬如说用户创设一个问卷,在其中有创立了一道题,并且创办了5个挑选。
此间拥有都会记录。
可是删除一个问卷,固然还要也删除了难点记录和选取,不过只会记录删除了问卷
从一个问卷导入若干标题,也只会记录导入题
(2)所有的改动都是存放在在varchar里面的。可是在拼接那一个动作的时候要是直接将全部讲话拼接,会很麻烦。所以自己动用的艺术是分别问卷、试题、选项3个级别,给四个接口,填入不一样的参数,来区分操作人,操作办法(新增、编辑、删除)。
与此同时额外提供一个从来书写整个讲话的接口,以便于事后扩充记录一些万分操成效。
例如调整一个问卷中的多少个课题的逐一那个动作。

1、安装epel-release源

yum install -y epel-release;

4、设置php时区

vim /etc/php.ini

修改 date.timezone

date.timezone = "Asia/Shanghai"

(2)要求完毕的统一修改。

1、设置邮件验证

亟待修改shared/config/tce_email_config.php

  #管理员的邮件地址
  $emailcfg['AdminEmail'] = 'lzl001@163.com';

  #smtp服务器
  $emailcfg['Host'] = 'smtp.163.com';

  #smtp服务端口
  $emailcfg['Port'] = 25; (端口默认是25)

  #邮箱的用户名
  $emailcfg['Username'] = 'lzl001@163.com';

  #邮箱的密码
  $emailcfg['Password'] = '123456';

  #是否开启高度模式
  $emailcfg['SMTPDebug'] = false;

八、tcexam的使用

那七个星期在筹划一个问卷调查的数据库,现在做一番计算。

3)、添加题目

可以领会为题库里的相继考题

2)、导入开首数据
mysql -uroot -p tcexam < mysql_db_structure.sql
mysql -uroot -p tcexam < db_data.sql

单身实施每一条语句并回车,按提示输入密码

当真那些问卷模块可能有过多过多份问卷,可是,具有同等的难点的问卷有些许吧?

1)、tcexam首要的配备文件全体放置在./shared/config目录下,以tce_ 开头, .php 结尾
文件名 说明
tce_cas.php CAS认证中心配置
tce_config 系统通用设置
tce_db_config.php 数据库配置
tce_email_config.php 电子邮件配置
tce_general_constants.php 系统通用常量配置
tce_latex.php LaTeX公式配置
tce_ldap.php LDAP 配置
tce_mime.php MIME 文件扩展名关联
tce_paths.php 配置系统内的文件及文件夹
tce_pdf.php PDF文件导出设置
tce_radius.php RADIUS 配置
tce_user_registration.php 用户注册配置

1、设置mysql的root密码

tcexams必要mysql的root密码无法为空,所以先安装mysql的root密码。

mysqladmin -u root password "newpassword";

”newpassword” 是您指定的mysql的root密码

1.有关为啥不选取一个问卷的课题是单身存储的原因?

2、安装lamp

yum install -y  gd curl ImageMagick   texlive  zbar mysql-server php httpd php-mysql libdbi-dbd-mysql php-gd php-curl memcached
3)、添加标题

可以通晓为题库里的逐一考题

如果有一个东西被复用,对于那几个事物的修改(编辑、删除、新增部分附属物)都会潜移默化引用了这么些事物的实体。

5)、举办完上述操作后,就可以在测试管理里新建测试,从题库里随意抽题进行考试了。

更多CentOS有关新闻见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-06/132412.htm

图片 5

一、安装LAMP环境

即便说tcexam要求的是lamp环境,不过官方文档中是内需经过yum安装的,我透过手工编译安装lamp环境后,在tcexam安装进程中碰着不少题材。所以我在此地运用的是通过yum安装lamp和其他连锁的软件的。

(1)为了兑现题库的复用

三、设置mysql

安分守纪官方文档tcexam的设置页面是可以自动新建tcexam数据库并导入早先数据的,但从实际上的操作的意义来看,这么些意义基本上不可以到位那些职责。由此我们要求手工建立数据库并导入起头数据。

1、删除安装目录并剔除根目录下的TXT文件
cd /var/www/html
rm -rf install
rm -rf *.TXT

6.评分的处理
那些打分的逻辑,完全就是靠数据库来落到实处的,从而减轻了Java程序的承担。
措施是,将精选的每一种可能对应的分值,全部存下来。
如此那般到时候直接匹配就能得到分值,从而不须求Java程序再去做逻辑上的论断。
举个例证,一个多选题,给出了A,B,C多个选项。
您的答案里面会有A,B,C,AB,AC,BC,ABC,将具有的或许与相应的分值存入数据库。
下一场给选项参预一个IS_SHOW属性,表示在问题打印的时候显得怎么。
譬如这一道,就只突显A,B,C。
然后根据用户的对答去匹配选项就能收获用户的分值。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图