• 第五篇 《随机点名答题系统》——抽点答题详解(类抽奖系统、在线答题系统、线上答题系统、在线点名系统、线上点名系统、在线考试系统、线上考试系统)


             

    目录

    1.功能需求 

    2.界面设计 

    3.流程设计

    4.关键代码


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

    1.功能需求 

            需求点—— 

    1.先进行人员抽取,再进行题目抽取;

    2.同一人员可以回答多个题目(抽取一次人员,可抽取多次题目);

    3.显示题目答案后,题目从题目数据池中移除,人员从人员数据池中移除。

    2.界面设计 

    左侧菜单栏

    抽取结果
    抽取题目
    显示答案

    3.流程设计

            抽点答题包括抽取人员、抽取题目、显示答案3个模块。基本流程是:在程序初始化基础上,点击【开始抽取人员】,人员信息在屏幕上进行滚动,点击【停止抽取人员】人员信息停止滚动,显示抽取的人员姓名和单位信息;点击【抽取题目】程序会在后台随机抽取一道题目显示在屏幕上,点击【显示答案】会显示所抽取题目的答案。

            在完成基本流程过程中,可反复对人员和题目进行抽取,每答完一道题目人员信息和题目信息就会从数据池里移除,全部人员或者题目被移除后可重新进行程序初始化继续进行抽点答题操作。

    4.关键代码

    1. var timer_cqry;
    2. var data_cqry;
    3. var data_cqry2;
    4. var data_cqtm;
    5. var data_cqtm2;
    6. var drawFlag = true;
    7. var tmFlag = false;
    8. var isCqRy;
    9. var isCqTm;
    10. var data_ry;
    11. var data_tm;
    12. function dataInit(){
    13. data_cqry = [];
    14. data_cqtm =[];
    15. drawFlag = true;
    16. tmFlag = false;
    17. data_ry=[];
    18. data_tm=[];
    19. isCqRy="";
    20. isCqTm="";
    21. clearInterval(timer_cqry);
    22. $("#ks").off("click");
    23. $("#tz").off("click");
    24. $("#tm").off("click");
    25. $("#xsda").off("click");
    26. }
    27. function initEvent(){
    28. $("#ks").on("click",function (){
    29. $("#main_php").html( cjcxTips('请先进行程序初始化'));
    30. });
    31. $("#tz").on("click",function (){
    32. $("#main_php").html( cjcxTips('请先进行程序初始化'));
    33. });
    34. $("#tm").on("click",function (){
    35. $("#main_php").html( cjcxTips('请先进行程序初始化'));
    36. });
    37. $("#xsda").on("click",function (){
    38. $("#main_php").html( cjcxTips('请先进行程序初始化'));
    39. });
    40. }
    41. $(document).ready(function (){
    42. initEvent();
    43. //初始化菜单
    44. $(document).on("click","#cshcx",function (){
    45. dataInit();
    46. $("#main_php").html( cjcxTips('抽点答题程序正在初始化,请耐心等待'));
    47. $.ajax({
    48. method: "post",
    49. url:"cjcx.php",
    50. data:{},
    51. success:function (res){
    52. res = JSON.parse(res);
    53. if(res["flag"]=="success_init") {
    54. setTimeout(function () {
    55. $("#main_php").html( cjcxTips('程序初始化完毕,请进行【抽点答题】'));
    56. }, 0);
    57. data_ry = res["renyuan"];//人员数据池
    58. data_tm = res["timu"];//题目数据池
    59. //初始化完毕后,为开始、停止、显示答案按钮绑定事件
    60. $("#ks").on("click",function (){
    61. startDraw();
    62. });
    63. $("#tz").on("click",function (){
    64. stopDraw();
    65. });
    66. $("#tm").on("click",function (){
    67. tmDraw();
    68. });
    69. $("#xsda").on("click",function (){
    70. displayDa();
    71. });
    72. }
    73. if (res["flag"] == "err_null"){
    74. $("#main_php").html( cjcxTips(res["data"]));
    75. }
    76. if (res["flag"] == "err_null_all"){
    77. $("#main_php").html( cjcxTips(res["data"]));
    78. }
    79. }
    80. });
    81. //php_reload("cjcx.php","#main_php",{});
    82. });
    83. });
    84. function cjcxTips(data){
    85. $html = '
      ' +
    86. '
      ' +
    87. '
      ' +
    88. '
      ' +
    89. '

      '+

    90. data+'
    ';
  • return $html;
  • }
  • //开始抽取人员
  • function startDraw(){
  • var randomInt;
  • var data_one;
  • let newSet = new Set(data_ry);
  • if (isCqRy != ""){
  • newSet.delete(isCqRy);
  • }
  • data_ry = Array.from(newSet);
  • if (data_ry != ""){
  • if (drawFlag){
  • timer_cqry = setInterval(function (){
  • randomInt = Math.floor(Math.random() * data_ry.length);
  • data_one = JSON.parse(data_ry[randomInt]);
  • $("#main_php").html( cjcxTips(''+data_one["xm"]+'
    '
    +data_one["dw"]+''
    ) );
  • data_cqry = data_one;
  • data_cqry2 = data_ry[randomInt];
  • },10);
  • drawFlag = false;
  • }
  • }else {
  • $("#main_php").html( cjcxTips("所有人员抽取完毕,请重新初始化程序") );
  • isCqRy = "";
  • data_cqry = [];
  • }
  • }
  • //停止抽取人员
  • function stopDraw(){
  • clearInterval(timer_cqry);
  • if (!drawFlag && data_cqry != ""){
  • $("#main_php").html( cjcxTips(''+data_cqry["xm"]+'
    '
    +data_cqry["dw"]+''
    ) );
  • drawFlag = true;
  • }else {
  • $("#main_php").html( cjcxTips("请先开始抽取人员") );
  • }
  • }
  • //抽取题目
  • function tmDraw(){
  • var randomInt;
  • let newSet = new Set(data_tm);
  • if (isCqTm != ""){
  • newSet.delete(isCqTm);
  • }
  • data_tm = Array.from(newSet);
  • clearInterval(timer_cqry);
  • if(data_tm != ""){
  • if (data_cqry != "" && drawFlag){
  • randomInt = Math.floor(Math.random() * data_tm.length);
  • tmdata = JSON.parse(data_tm[randomInt]);
  • $html = '
    ' +
  • '
    【' +data_cqry["xm"]+'】要回答的题目是:
    '
    +
  • '
    ' +
  • '' +
  • '
    ' +
  • '
    该题目的正确答案是:
    '
    +
  • '
    ' +
  • '' +
  • '
    ' +
  • '
    '
  • $("#main_php").html($html);
  • data_cqtm = tmdata;
  • data_cqtm2 = data_tm[randomInt];
  • }else {
  • $("#main_php").html( cjcxTips("请先抽取人员") );
  • drawFlag = true;
  • data_cqry = [];
  • data_cqry2 = "";
  • }
  • }else {
  • $("#main_php").html( cjcxTips("所有题目抽取完毕,请重新初始化程序") );
  • isCqTm = "";
  • }
  • }
  • //显示答案
  • function displayDa(){
  • clearInterval(timer_cqry);
  • if (data_cqtm != "" && drawFlag){
  • $("#tmda").val(data_cqtm["da"]);
  • isCqRy = data_cqry2;
  • isCqTm = data_cqtm2;
  • }else {
  • $("#main_php").html( cjcxTips("请先抽取题目") );
  • drawFlag = true;
  • data_cqry = [];
  • data_cqry2 = "";
  • }
  • }
  • 相关阅读:
    e智团队实验室项目-第三周-经典的卷积神经网络的学习
    Elasticsearch:使用 ESRE 和生成式 AI 了解 TLS 日志错误
    springboot+vue开发的智慧学校源码(人脸识别+电子班牌+小程序)
    JsonPath 数据快速查找和提取工具
    Spark基础
    C++信息学奥赛1184:明明的随机数
    lv6 嵌入式开发-4 gdb调试多进程程序
    使用TS进行Vue-Router的Meta类型扩展
    Java版企业电子招标采购系统源码—企业战略布局下的采购寻源
    【Java】抽象类和接口
  • 原文地址:https://blog.csdn.net/JayKuen/article/details/134476657