第四篇 《随机点名答题系统》——基础设置详解(类抽奖系统、在线答题系统、线上答题系统、在线点名系统、线上点名系统、在线考试系统、线上考试系统)

        

目录

1.功能需求 

2.数据库设计

3.流程设计 

4.关键代码 

4.1.设置题库 

4.1.1数据请求示意图  

4.1.2选择题库(index.php)数据请求代码 

 4.1.3取消题库(index.php)数据请求代码 

4.1.4业务处理Service(xztk.php) 

4.1.4.1代码

4.1.4.2业务处理逻辑流程图

4.2.设置答题人员

 4.2.1数据请求示意图

4.2.2选择答题人员(index.php)数据请求代码

4.2.3取消答题人员(index.php)数据请求代码

4.2.4业务处理Service(xzfz.php)

4.2.4.1代码

4.2.4.2业务处理逻辑流程图


        随机点名答题系统(类抽奖系统、在线答题系统、线上答题系统、在线点名系统、线上点名系统、在线考试系统、线上考试系统),是基于php(8.2.11),JavaScrip,MySQL开发的轻量化点名答题系统,分为数据管理和前端两部分。主要解决了随机抽点人员和随机抽点题目结合的业务需求,有很强的实用意义。

1.功能需求 

        需求点—— 

1.对人员进行分组,按分组进行数据准备,可多分组抽取;

2.对试题进行分组,按分组进行数据准备,可多分组抽取;

         针对以上需求,系统设计了【设置题库】和【设置答题人员】、【程序初始化】3个功能模块。 

        【设置题库】选取需要作答的题库进入题库数据池,具有题库选择、取消、查询操作。

         【设置答题人员】需求需要进行作答的人员分组进入人员数据池,具有选择、取消、查询功能。

        【程序初始化】是将题库数据和人员数据进行数据加载和格式化,为后续抽点答题做准备。

2.数据库设计

        设计了基础设置1张数据表,用于存储题库数据和人员数据信息。

         表结构 :

基础设置表结构

3.流程设计 

        基础设置包括设置题库、设置答题人员、程序初始化3个模块。基本流程是:首先选择需要抽取的题库或者取消不需要抽取的题库,完成题库数据的选取,然后对答题人员进行选择和移除,设置完题库和人员后即可对程序进行初始化以加载题库数据和人员数据,完成抽点答题的数据准备。 

4.关键代码 

4.1.设置题库 

4.1.1数据请求示意图  

4.1.2选择题库(index.php)数据请求代码 

function  xztk_btn(tkmc){
        php_reload("xztk.php","#main_php",{tkmc:tkmc,flag:"xz"});
    }

 4.1.3取消题库(index.php)数据请求代码 

function  qxtk_btn(tkmc){
        php_reload("xztk.php","#main_php",{tkmc:tkmc,flag:"qx"});
    }

4.1.4业务处理Service(xztk.php) 

4.1.4.1代码
//打开数据库链接
$dbUtil = new \util\DBUtil();
$conn = $dbUtil->connect();

$flag = $_POST['flag'];

$rows_jcsz = $dbUtil->select($conn,"t_jcsz"," 1=1 ");
$tkmcs = array();
if (sizeof($rows_jcsz)>0){//判断是否在基础设置表里已经有数据,如果已经存在,那么进行修改操作,否则就新增一条
    $rows_jcsz2 = $rows_jcsz[0];
    if ($flag == 'xz'){//选择题库操作,数据存入基础设置表tk字段格式为:题库1|题库2|题库3
        $tkmc = $_POST['tkmc'];
        $tkmc = $tkmc.'|'.$rows_jcsz2['tk'];
        $data = array(\util\Config::$tk=>$tkmc);
        $dbUtil->update($conn,'t_jcsz',$data," id = '".$rows_jcsz2['id']."'");
    }

    if ($flag == 'qx'){//取消题库操作,从基础设置表tk字段中剔除相应题库
        $yctk = '';
        $tkmc = $_POST['tkmc'];
        $yctks = explode('|',$rows_jcsz2['tk']);
        for ($i=0;$i<sizeof($yctks)-1;$i++){
            if ($yctks[$i] != $tkmc){
                $yctk = $yctks[$i].'|'.$yctk;
            }
        }
        $data = array(\util\Config::$tk=>$yctk);
        $dbUtil->update($conn,'t_jcsz',$data," id = '".$rows_jcsz2['id']."'");
    }

    $rows_jcsz = $dbUtil->select($conn,"t_jcsz"," 1=1 ");
    $rows_jcsz2 = $rows_jcsz[0];
    if ($rows_jcsz2['tk'] != ""){
        $tkmcs = explode('|',$rows_jcsz2['tk']);
    }
}else{
    if ($flag == 'xz'){
        $tkmc = $_POST['tkmc'];
        $dbUtil->add($conn,"t_jcsz",array("id"=>time(),"tk"=>$tkmc,"zb"=>""));

        $rows_jcsz = $dbUtil->select($conn,"t_jcsz"," 1=1 ");
        $rows_jcsz2 = $rows_jcsz[0];
        $tkmcs = explode('|',$rows_jcsz2['tk']);

    }
}

$where = " 1=1 ";



if ($flag == 'cx'){//查询操作
    $tkmc = $_POST['tkmc'];
    $cjz = $_POST['cjz'];


    if ($tkmc != ""){
        $where = $where." and tk like '%".$tkmc."%' ";
    }
    if ($cjz != ""){
        $where = $where." and cjz like '%".$cjz."%'";
    }

    $where = $where." order by rq desc";

    $rows = $dbUtil->select($conn,"t_tiku",$where);
}else{
    $rows = $dbUtil->select($conn,"t_tiku","1=1 order by rq desc");
}

//关闭数据库链接
$dbUtil->close($conn);
4.1.4.2业务处理逻辑流程图

4.2.设置答题人员

 4.2.1数据请求示意图

4.2.2选择答题人员(index.php)数据请求代码

function  xzzb_btn(id){
        php_reload("xzfz.php","#main_php",{zb:id,flag:"xz"});
    }

4.2.3取消答题人员(index.php)数据请求代码

function  qxzb_btn(id){
        php_reload("xzfz.php","#main_php",{zb:id,flag:"qx"});
    }

4.2.4业务处理Service(xzfz.php)

4.2.4.1代码
$flag = $_POST['flag'];

//打开数据库链接
$dbUtil = new \util\DBUtil();
$conn = $dbUtil->connect();

$rows_jcsz = $dbUtil->select($conn,"t_jcsz"," 1=1 ");
$zbs = array();
if (sizeof($rows_jcsz)>0){
    $rows_jcsz2 = $rows_jcsz[0];
    if ($flag == 'xz'){
        $zbid = $_POST['zb'];
        $zbid = $zbid.'|'.$rows_jcsz2['zb'];
        $data = array(\util\Config::$zb=>$zbid);
        $dbUtil->update($conn,'t_jcsz',$data," id = '".$rows_jcsz2['id']."'");
    }

    if ($flag == 'qx'){
        $yczb = '';
        $zbid = $_POST['zb'];
        $yczbs = explode('|',$rows_jcsz2['zb']);
        for ($i=0;$i<sizeof($yczbs)-1;$i++){
            if ($yczbs[$i] != $zbid){
                $yczb = $yczbs[$i].'|'.$yczb;
            }
        }
        $data = array(\util\Config::$zb=>$yczb);
        $dbUtil->update($conn,'t_jcsz',$data," id = '".$rows_jcsz2['id']."'");
    }

    $rows_jcsz = $dbUtil->select($conn,"t_jcsz"," 1=1 ");
    $rows_jcsz2 = $rows_jcsz[0];
    if ($rows_jcsz2['zb'] != ""){
        $zbs = explode('|',$rows_jcsz2['zb']);
    }
}else{
    if ($flag == 'xz'){
        $zbid = $_POST['zb'];
        $dbUtil->add($conn,"t_jcsz",array("id"=>time(),"tk"=>"","zb"=>$zbid));

        $rows_jcsz = $dbUtil->select($conn,"t_jcsz"," 1=1 ");
        $rows_jcsz2 = $rows_jcsz[0];
        $zbs = explode('|',$rows_jcsz2['zb']);

    }
}

if ($flag == 'cx'){
    $zb = $_POST['zb'];

    $where = " 1=1 ";
    if ($zb != ""){
        $where = $where." and zb like '%".$zb."%' ";
    }
    $where = $where." order by xh asc";

    $rows = $dbUtil->select($conn,"t_zubie",$where);
}else{
    $rows = $dbUtil->select($conn,"t_zubie"," 1=1 order by xh asc");
}
//关闭数据库链接
$dbUtil->close($conn);
4.2.4.2业务处理逻辑流程图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/160495.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【高并发内存池】第一篇 项目简介及定长内存池

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

Flume学习笔记(4)—— Flume数据流监控

前置知识&#xff1a; Flume学习笔记&#xff08;1&#xff09;—— Flume入门-CSDN博客 Flume学习笔记&#xff08;2&#xff09;—— Flume进阶-CSDN博客 Flume 数据流监控 Ganglia 的安装与部署 Ganglia 由 gmond、gmetad 和 gweb 三部分组成。 gmond&#xff08;Ganglia …

MybatisPlus学习

一.快速入门 1.相关数据库创建 CREATE TABLE USER(id BIGINT(20) NOT NULL COMMENT 主键ID,NAME VARCHAR(30) NULL DEFAULT NULL COMMENT 姓名,age INT(11) NULL DEFAULT NULL COMMENT 年龄,email VARCHAR(50) NULL DEFAULT NULL COMMENT 邮箱,PRIMARY KEY (id));​​INSERT I…

BUG:编写springboot单元测试,自动注入实体类报空指针异常

原因:修饰测试方法的Test注解导入错误 造成错误的原因是 import org.junit.Test;正确的应该是 import org.junit.jupiter.api.Test前者是Junit4,后者是Junit5 junit4的使用似乎要在测试类除了添加SpringbootTest还要添加RunWith(SpringRunner.class) 同时要注意spring-boot-s…

制作翻页电子相册,这个工具你必须了解!

电子相册作为一种很有纪念意义的载体&#xff0c;无论是生日、旅行、结婚、毕业纪念等等&#xff0c;可以应用在很多场合当中&#xff0c;如何制作呢&#xff1f; 而对于不会制作电子相册的人来说&#xff0c;使用套用模板是最直接快速的方式了。所以&#xff0c;推荐大家使用…

Find My充电宝|苹果Find My技术与充电宝结合,智能防丢,全球定位

充电宝是一种个人可随身携带&#xff0c;自身能储备电能&#xff0c;主要为手持式移动设备等消费电子产品&#xff08;例如无线电话、笔记本电脑&#xff09;充电的便携充电器&#xff0c;特别应用在没有外部电源供应的场合。其主要组成部分包括&#xff1a;用作电能存储的电池…

C++软件开发面试场景题

自己在秋招过程中遇到的一些场景题 海量数据N取Top K个元素&#xff0c;复杂度是多少 在处理海量数据中获取前K个元素&#xff08;Top K&#xff09;的问题中&#xff0c;通常会使用一些高效的算法来减少时间和空间复杂度。以下是两种常见的解决方案和它们的复杂度&#xff1…

LeetCode热题100——图论

图论 1. 岛屿的数量2. 腐烂的橘子 1. 岛屿的数量 给你一个由 ‘1’&#xff08;陆地&#xff09;和 ‘0’&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆…

PHP排序sort()、asort() 和 ksort() 的区别及用法

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…

Centos(Linux)服务器安装Dotnet8 及 常见问题解决

1. 下载dotnet8 sdk 下载 .NET 8.0 SDK (v8.0.100) - Linux x64 Binaries 拿到 dotnet-sdk-8.0.100-linux-x64.tar.gz 文件 2. 把文件上传到 /usr/local/software 目录 mkdir -p /usr/local/software/dotnet8 把文件拷贝过去 mv dotnet-sdk-8.0.100-linux-x64.tar.gz /usr/loc…

多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测

多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测 目录 多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 …

混沌系统在图像加密中的应用(基于哈密顿能量函数的混沌系统构造1.4)

混沌系统在图像加密中的应用&#xff08;基于哈密顿能量函数的混沌系统构造1.4&#xff09; 前言一、逆时间对称性分析二、具有逆时间对称性的单晶格状混沌与拟周期流1.逆时间对称性及哈密顿能量函数2.数值仿真 python代码 前言 续接混沌系统在图像加密中的应用&#xff08;基…

数据科学家应该知道的 10 个高级深度学习架构!

一、介绍 跟上深度学习的最新进展变得非常困难。几乎每天都会出现深度学习的新创新或新应用。然而&#xff0c;这些进步大部分都隐藏在 ArXiv / Springer 等媒体上发表的大量研究论文中。 本文包含深度学习的一些最新进展以及 keras 库中的实现代码。我还提供了…

批量替换WordPress文章内图片链接

在WordPress使用过程中&#xff0c;如果中途更换了域名&#xff0c;原先文章内的图片使用的是原来的域名&#xff0c;就会造成文章页里面的图片链接无法显示。如果从后台文章挨个修改就比较麻烦。可以通过数据库进行批量替换即可。 使用 PHPMyadmin 打开 数据库&#xff0c;登…

【DataV可视化工具详解】

文章目录 前言一、什么是DataV&#xff1f;二、主要特点1. 强大的图表库2. 灵活的数据接入3.实时数据展示4. 易于定制的仪表盘 三、应用场景1.业务监控与分析2.大屏展示3.数据洞察与决策支持 四、例图总结我是将军&#xff0c;我一直都在&#xff0c;。&#xff01; 前言 今天…

如何下载到正确版本的Steam?正确使用实现多开搬砖不被封号

各位游戏玩家们&#xff0c;你们是否也曾因为无法在Steam平台上正常下载游戏而感到烦恼呢&#xff1f;盗版问题已经严重影响了Steam的用户体验&#xff0c;也给玩家们带来了不必要的经济损失。但是&#xff0c;作为玩家&#xff0c;我们需要更多的方法来区分正版和盗版&#xf…

西南科技大学814考研一

C语言基础 字节大小 char&#xff1a;1 字节 unsigned char&#xff1a;1 字节 short&#xff1a;2 字节 unsigned short&#xff1a;2 字节 int&#xff1a;通常为 4 字节&#xff08;32 位平台&#xff09;或 8 字节&#xff08;64 位平台&#xff09; unsigned int&#x…

for,while,do-while,死循环,嵌套循环,跳转关键字,随机数

1.for循环 public class ForDemo1 {public static void main(String[] args) {for (int i 0; i < 5; i) {System.out.println("HelloWorld");}System.out.println("--------------------------------------------");for (int i 1; i <10 ; i) {Sy…

Linux基础知识(1)——目录结构,绝对/相对路径,指令等(配图)

目录 1.目录结构 2.路径 3.认识指令 文章内容并不聚焦于Linux命令&#xff0c;而是针对Linux的基础知识进行讲解&#xff0c;相信这部分知识更能帮助大家了解Linux系统。 本文只是带大家简单了解一下Linux的入门知识&#xff0c;在之后的文章中&#xff0c;我们将讲解Linux中…

三、程序员指南:数据平面开发套件

定时器库 定时器库为DPDK执行单元提供了定时器服务&#xff0c;以便异步执行回调函数。该库的特点包括&#xff1a; 定时器可以是周期性的&#xff08;多次触发&#xff09;或单次的&#xff08;一次性触发&#xff09;。定时器可以从一个核加载并在另一个核上执行。这必须在…