数据库表格:shiti, shititimu, timu, kemu, xuanxiang

根据科目设置一个可以添加试题的页面:(如下图)

具体的题目从数据库中查出并形成一张试卷的形式

考试试题设置:

考试试题设置后台:ksset.php

  1. <?php
  2. include("../init.inc.php");
  3. include("../../DBDA.class.php");
  4. $db=new DBDA();
  5. $sql="select * from kemu";
  6. $attr=$db->Query($sql);
  7. $smarty->assign("kemu",$attr);
  8. $smarty->display("ksset.html");

考试试题设置前端:ksset.html

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>考试设置</title>
  6. <script src="../../jquery-1.11.2.min.js"></script>
  7. </head>
  8.  
  9. <body>
  10. <h1>考试试题设置</h1>
  11. <form action="kschuli.php" method="post">
  12. <div>请输入题目编号:<input type="text" name="code" /></div>
  13. <div>请输入题目名称:<input type="text" name="name" /></div>
  14. <div>请选择考试科目:
  15. <select name="kemu" id="km">
  16. <{foreach $kemu as $v}>
  17. <option value="<{$v[0]}>"><{$v[1]}></option>
  18. <{/foreach}>
  19. </select>
  20. </div>
  21. <div>请输入考试时间:<input type="text" name="shijian" />分钟</div>
  22. <div>请输入题目数量:<input type="text" name="shuliang" id="sl" /></div>
  23. <div>请输入题目分值:<input type="text" name="fenzhi" /></div>
  24. <input type="submit" value="提交" id="tj"/>
  25. </form>
  26. </body>
  27. <script type="text/javascript">
  28. //当发现考试科目中的试题数量小于输入的数量值时怎么办?
  29. //点击提交时进行提醒
  30. $(document).ready(function(e) {
  31. $("#tj").click(function(){
  32. //取科目的数量和输入的数量进行比较
  33. var km=$("#km").val();
  34. var sl=$("#sl").val();
  35. var bs="";
  36.  
  37. $.ajax({
  38. async:false,
  39. url:"bijiaosl.php",
  40. data:{km:km,sl:sl},
  41. type:"POST",
  42. dataType:"TEXT",
  43. success: function(data){
  44. bs=data;
  45. }
  46. });
  47.  
  48. if(bs.trim()=="OK")
  49. {
  50. return true;
  51. }
  52. else
  53. {
  54. alert("该科目下题目数量不足!")
  55. return false;
  56. }
  57.  
  58. })
  59. });
  60. </script>
  61. </html>

提交处理页面:kschuli.php

  1. <?php
  2. include("../../DBDA.class.php");
  3. $db=new DBDA();
  4. //往试题表添加考试题目,科目等信息
  5. $code=$_POST["code"];
  6. $name=$_POST["name"];
  7. $kemu=$_POST["kemu"];
  8. $shijian=$_POST["shijian"];
  9. $shuliang=$_POST["shuliang"];
  10. $fenzhi=$_POST["fenzhi"];
  11.  
  12. $sql="insert into shiti values('{$code}','{$shijian}','{$kemu}','{$name}','{$shuliang}','{$fenzhi}')";
  13. $db->Query($sql,1);
  14.  
  15. //往试题题目表添加具体的题目内容
  16. //根据科目和数量随机生成
  17. //查科目
  18. $all="select code from timu where kemu='{$kemu}'";
  19. $aall=$db->Query($all);//里面包含本科目所有题目代号
  20.  
  21. $attr=array();//存放生成的试题代号
  22. //根据数量来取
  23. for($i=0;$i<$shuliang;$i++)
  24. {
  25. //随机取代号
  26. $n=rand(0,count($aall)-1);
  27. $daihao=$aall[$n][0];
  28. //判断取出的代号是否重复
  29. if(in_array($daihao,$attr))
  30. {
  31. $i--;//若什么也不添加,循环出的数量会减少,所以若代号重复是,$i减少一次,再加一个
  32. }
  33. else
  34. {
  35. //$aall[$n][0];
  36. array_push($attr,$daihao);
  37. }
  38. }
  39.  
  40. //往shititimu(试题题目)表添加数据
  41. //code(自增长), shiti(试题代号)=$code, timu=$v, shunxu=$k
  42.  
  43. foreach($attr as $k=>$v)
  44. {
  45. $shunxu=$k+1;
  46. $stm="insert into shititimu values('','{$code}','{$v}','{$shunxu}')";
  47. $db->Query($stm,1);
  48. }
  49. header("location:ksset.php");

注意:若该科目的试题数量少于输入的试题数量时,要提醒试题数量不足(如图)

使用ajax来进行处理,处理页面:bijiaosl.php

  1. <?php
  2.  
  3. include("../../DBDA.class.php");
  4. $db=new DBDA();
  5.  
  6. $km=$_POST["km"];
  7. $sl=$_POST["sl"];
  8.  
  9. $sql="select count(*) from timu where kemu='{$km}'";
  10. $zs = $db->StrQuery($sql);
  11.  
  12. if($zs>=$sl)
  13. {
  14. echo "OK";
  15. }
  16. else
  17. {
  18. echo "NO";
  19. }

形成试卷页面:

形成试卷页面后台:shijuan.php

  1. <?php
  2. include("../init.inc.php");
  3.  
  4. include("../../DBDA.class.php");
  5. $db=new DBDA();
  6.  
  7. $sql="select * from shiti";
  8. $attr=$db->Query($sql);
  9.  
  10. $shuzu=array();//存储题目信息
  11. //判断考试名称的值是否为空
  12. if(empty($_POST["ksmc"]))
  13. {
  14.  
  15. }
  16. else
  17. {
  18. //取出试题的代号
  19. $code=$_POST["ksmc"];
  20. $stm="select * from shititimu where shiti='{$code}'";
  21. $atm=$db->Query($stm);
  22.  
  23. //根据代号去查找相应的题目及选项
  24. foreach($atm as $v)
  25. {
  26. //题目代号
  27. $tmdh=$v[2];
  28. //题目顺序
  29. $tmsx=$v[3];
  30.  
  31. //从题目表中取出试题的题目
  32. $sname="select name from timu where code='{$tmdh}'";
  33. $aname=$db->StrQuery($sname);
  34.  
  35. //从选项表中取出相应的选项
  36. $sxx="select name,xuanxiang from xuanxiang where timu='{$tmdh}'";
  37. $axx=$db->Query($sxx);
  38.  
  39. $timuall=array("tmsx"=>$tmsx,"tmmc"=>$aname,"tmxx"=>$axx);
  40. $shuzu[]=$timuall;
  41.  
  42. }
  43.  
  44. }
  45.  
  46. $smarty->assign("shiti",$attr);
  47. $smarty->assign("timu",$shuzu);
  48. $smarty->display("shijuan.html");

形成试卷页面前端:shijuan.html

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>试卷页面</title>
  6. </head>
  7.  
  8. <body>
  9. <h1>试题详情</h1>
  10. <form action="shijuan.php" method="post">
  11. <div>请选择考试名称:
  12. <select name="ksmc">
  13. <{foreach $shiti as $v}>
  14. <option value="<{$v[0]}>"><{$v[3]}></option>
  15. <{/foreach}>
  16. </select>
  17. <input type="submit" value="查询" />
  18. </div>
  19. </form><br />
  20.  
  21. <div>
  22. <{foreach $timu as $v}>
  23.  
  24. <div><{$v.tmsx}>、<{$v.tmmc}>(&nbsp;&nbsp;&nbsp;)</div>
  25. <{foreach $v.tmxx as $v1}>
  26. <div><{$v1[1]}>:<{$v1[0]}></div>
  27. <{/foreach}><br />
  28. <{/foreach}>
  29.  
  30. </div>
  31.  
  32. </body>
  33. </html>

smarty练习: 设置试题及打印试卷的更多相关文章

  1. 6月6 Smarty练习----设置题目及打印试卷

    所需要的数据库表格:shiti, shititimu, timu, kemu, xuanxiang  考试试题的设置: 考试试题后台:ksset.php <?php include(" ...

  2. 面试题12:打印1到最大的n位数

    // 面试题12_打印1到最大的n位数.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> ...

  3. 算法笔记_189:历届试题 横向打印二叉树(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 二叉树可以用于排序.其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交给左子树继续处理,否则交给右子树. 当遇到空子树 ...

  4. 【剑指offer】面试题 17. 打印从 1 到最大的 n 位数

    面试题 17. 打印从 1 到最大的 n 位数 题目描述 题目:输入数字 n,按顺序打印出从 1 最大的 n 位十进制数.比如输入 3,则打印出 1.2.3 一直到最大的 3 位数即 999. 解答过 ...

  5. Excel2010表格里设置每页打印时都有表头

    在打印Excel表格时常常会出现如果存在多页打印时,往往从第二页开始就会出现没有表头的情况,导致到后面都不清楚对应的是哪个数据,查看时也很麻烦,下面就将为大家介绍如何在Excel表格里设置每页打印时都 ...

  6. Logback设置SQL参数打印

    一.hibernate中设置SQL参数打印: (主要是第一句) <logger name="org.hibernate.type.descriptor.sql.BasicBinder& ...

  7. NPOI导出EXCEL 打印设置分页及打印标题

    在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方法,但一直都没有起到作用.经过研究是要设置  sheet1.FitToPage = false; 而 ...

  8. EPSON LQ610K 设置税控盘打印发票的格式

    问题困扰 之前一直是手动调试发票打印格式,浪费发票纸张不说,而且还浪费时间.今天在Parrells Desktop里利用Bonjour设置打印机的时候,找到了EPSON网站有这方面的介绍,根据上面的提 ...

  9. [转]NPOI导出EXCEL 打印设置分页及打印标题

    本文转自:http://www.cnblogs.com/Gyoung/p/4483475.html 在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方 ...

随机推荐

  1. 解决VS2013中“This function or variable may be unsafe”的问题

    1.在VS2013中编译代码时出现如上错误信息,下面就介绍下如何解决This function or variable may be unsafe的问题. 2.用VS2013打开出现错误的代码文件 3 ...

  2. 复杂事件处理引擎—Esper 处理模型

    1.esper的处理模型是持续性的——根据statement中事件流(event stream).视图(views).过滤器(filters)等的选择,esper引擎一旦处理事件数据,就会变更stat ...

  3. 王学长的AAA树

    让我们响应王学长的号召勇敢的分开写splay和lct吧! 分开写大法好!!!!!!!!!!!杜教的ch[4]弱爆了!!!! #include <stdio.h> #include < ...

  4. 【转】中断处理函数中不用disable_irq而用disable_irq_nosync原因

    原文网址:http://blog.csdn.net/skyflying2012/article/details/8265869 今天在写触摸屏驱动时在中断处理函数中使用disable_irq关中断发现 ...

  5. 2014-08-04 BBS主页页面的设计

    今天是在吾索实习的第19天.这天,开始参照一开始设计的界面原型,真真正正地进行BBS界面的设计.在运用.NET进行界面设计时,发现没有用RP进行界面设计来得容易,很多都要再进行更精细的操作,才能达到原 ...

  6. android SimpleCursorAdapter的使用

    String[] fields=new String[]{"foodname","price","taste","stuff&qu ...

  7. 读<<如何阅读一本书>>乱七八糟的笔记1

    阅读层次 第一层:基础阅读 第二层:检视阅读 系统化略读 第三层:分析阅读 第四层:主题阅读(比较阅读) 第二层:检视阅读 1.有系统的粗读或略读 (1)先看书名页,然后如果有序就先看序 (2)研究目 ...

  8. BZOJ 3514 (动态树)

    这两天终于基本理解了Link-Cut Tree这种神一般的东西.然后就来做这道题了. 原题是CodeChef上的.CodeChef上没有强制在线,且时限更宽松,所以似乎用莫队一样的算法把询问分组就能水 ...

  9. MySQL 遇到的问题:在服务里找不到自己的 MySQL,以及在命令行窗口中运行服务出现的问题。

    1.用数据库的时候在服务里找不到自己的 MySQL ,于是就想用命令行窗口去运行. ①.在开始里,键入 cmd ,打开命令行窗口. ②.输入:mysql -u root -p 回车,这时会提示请输入密 ...

  10. Javascript:阻止浏览器默认右键事件,并显示定制内容

    在逛一些知名图片社区的时候,遇到自己心怡的图片,想要右键另存的时候,默认的浏览器菜单不见了,却出现了如:[©kevin版权所有]之类的信息: 今天在看Javascript事件默认行为相关的知识,所以, ...