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

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

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

考试试题设置:

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

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

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

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>考试设置</title>
<script src="../../jquery-1.11.2.min.js"></script>
</head> <body>
<h1>考试试题设置</h1>
<form action="kschuli.php" method="post">
<div>请输入题目编号:<input type="text" name="code" /></div>
<div>请输入题目名称:<input type="text" name="name" /></div>
<div>请选择考试科目:
<select name="kemu" id="km">
<{foreach $kemu as $v}>
<option value="<{$v[0]}>"><{$v[1]}></option>
<{/foreach}>
</select>
</div>
<div>请输入考试时间:<input type="text" name="shijian" />分钟</div>
<div>请输入题目数量:<input type="text" name="shuliang" id="sl" /></div>
<div>请输入题目分值:<input type="text" name="fenzhi" /></div>
<input type="submit" value="提交" id="tj"/>
</form>
</body>
<script type="text/javascript">
//当发现考试科目中的试题数量小于输入的数量值时怎么办?
//点击提交时进行提醒
$(document).ready(function(e) {
$("#tj").click(function(){
//取科目的数量和输入的数量进行比较
var km=$("#km").val();
var sl=$("#sl").val();
var bs=""; $.ajax({
async:false,
url:"bijiaosl.php",
data:{km:km,sl:sl},
type:"POST",
dataType:"TEXT",
success: function(data){
bs=data;
}
}); if(bs.trim()=="OK")
{
return true;
}
else
{
alert("该科目下题目数量不足!")
return false;
} })
});
</script>
</html>

提交处理页面:kschuli.php

 <?php
include("../../DBDA.class.php");
$db=new DBDA();
//往试题表添加考试题目,科目等信息
$code=$_POST["code"];
$name=$_POST["name"];
$kemu=$_POST["kemu"];
$shijian=$_POST["shijian"];
$shuliang=$_POST["shuliang"];
$fenzhi=$_POST["fenzhi"]; $sql="insert into shiti values('{$code}','{$shijian}','{$kemu}','{$name}','{$shuliang}','{$fenzhi}')";
$db->Query($sql,1); //往试题题目表添加具体的题目内容
//根据科目和数量随机生成
//查科目
$all="select code from timu where kemu='{$kemu}'";
$aall=$db->Query($all);//里面包含本科目所有题目代号 $attr=array();//存放生成的试题代号
//根据数量来取
for($i=0;$i<$shuliang;$i++)
{
//随机取代号
$n=rand(0,count($aall)-1);
$daihao=$aall[$n][0];
//判断取出的代号是否重复
if(in_array($daihao,$attr))
{
$i--;//若什么也不添加,循环出的数量会减少,所以若代号重复是,$i减少一次,再加一个
}
else
{
//$aall[$n][0];
array_push($attr,$daihao);
}
} //往shititimu(试题题目)表添加数据
//code(自增长), shiti(试题代号)=$code, timu=$v, shunxu=$k foreach($attr as $k=>$v)
{
$shunxu=$k+1;
$stm="insert into shititimu values('','{$code}','{$v}','{$shunxu}')";
$db->Query($stm,1);
}
header("location:ksset.php");

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

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

 <?php

 include("../../DBDA.class.php");
$db=new DBDA(); $km=$_POST["km"];
$sl=$_POST["sl"]; $sql="select count(*) from timu where kemu='{$km}'";
$zs = $db->StrQuery($sql); if($zs>=$sl)
{
echo "OK";
}
else
{
echo "NO";
}

形成试卷页面:

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

 <?php
include("../init.inc.php"); include("../../DBDA.class.php");
$db=new DBDA(); $sql="select * from shiti";
$attr=$db->Query($sql); $shuzu=array();//存储题目信息
//判断考试名称的值是否为空
if(empty($_POST["ksmc"]))
{ }
else
{
//取出试题的代号
$code=$_POST["ksmc"];
$stm="select * from shititimu where shiti='{$code}'";
$atm=$db->Query($stm); //根据代号去查找相应的题目及选项
foreach($atm as $v)
{
//题目代号
$tmdh=$v[2];
//题目顺序
$tmsx=$v[3]; //从题目表中取出试题的题目
$sname="select name from timu where code='{$tmdh}'";
$aname=$db->StrQuery($sname); //从选项表中取出相应的选项
$sxx="select name,xuanxiang from xuanxiang where timu='{$tmdh}'";
$axx=$db->Query($sxx); $timuall=array("tmsx"=>$tmsx,"tmmc"=>$aname,"tmxx"=>$axx);
$shuzu[]=$timuall; } } $smarty->assign("shiti",$attr);
$smarty->assign("timu",$shuzu);
$smarty->display("shijuan.html");

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

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>试卷页面</title>
</head> <body>
<h1>试题详情</h1>
<form action="shijuan.php" method="post">
<div>请选择考试名称:
<select name="ksmc">
<{foreach $shiti as $v}>
<option value="<{$v[0]}>"><{$v[3]}></option>
<{/foreach}>
</select>
<input type="submit" value="查询" />
</div>
</form><br /> <div>
<{foreach $timu as $v}> <div><{$v.tmsx}>、<{$v.tmmc}>(&nbsp;&nbsp;&nbsp;)</div>
<{foreach $v.tmxx as $v1}>
<div><{$v1[1]}>:<{$v1[0]}></div>
<{/foreach}><br />
<{/foreach}> </div> </body>
</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. <Pro .NET MVC4> 三大工具之依赖注入神器——Ninject

    这篇内容是对<Pro .NET MVC4>一书中关于Ninject介绍的总结. Ninject是.NET MVC的一款开源的依赖注入工具. 使用场景:当MVC项目中使用了依赖注入技术来给程 ...

  2. 转:Java反射教程

    原文来自于:http://www.importnew.com/9078.html 什么是反射?反射有什么用处? 1. 什么是反射? “反射(Reflection)能够让运行于JVM中的程序检测和修改运 ...

  3. 剑指offer之O(1)算法删除指针所指向的节点

    题目如图: 1.把要删除pToBeDeleted的节点的后面节点覆盖点要删除的节点pToBeDeleted 2.要考虑如果删除的节点是最后一个节点怎么办 3.要考虑如果总共只有一个节点,删除的是头结点 ...

  4. github使用入门 之GIT GUI Windows版

    申明下是原创. 这二天网上也看了不少关于github使用的文章,github对代码管理也开始用起来了.这篇给github新手看,大牛们请跳过. github说白了就是版本管理库,最常用的就是程序代码管 ...

  5. C# and android

    http://www.cnblogs.com/GoodHelper/archive/2011/07/08/android_socket_chart.html http://blog.csdn.net/ ...

  6. Moxon(摩克森)天线介绍

    一.Moxon(摩克森)天线介绍Moxon天线是一种方形天线,性质上类似二单元Yagi(八木),增益高,具有很强的方向性,按尺寸做好后几乎不用调试,阻抗50欧姆.在U段,天线尺寸小,便于携带,是一款非 ...

  7. (转)linux中常用的头文件

    头文件主目录include 头文件目录中总共有32个.h头文件.其中主目录下有13个,asm子目录中有4个,linux子目录中有10个,sys子目录中有5个.这些头文件各自的功能如下,具体的作用和所包 ...

  8. crossdomain.xml跨越

    crossdomain.xml是adobe搞的,为了让flash跨域访问文件. 该配置文件放于服务器端的根目录下面.来设置让哪些域名下面的swf文件能够访问我服务器上的内容. 比如:我的服务器上有个图 ...

  9. iOS之UITableView带滑动操作菜单的Cell

    制作一个可以滑动操作的 Table View Cell 本文翻译自 http://www.raywenderlich.com/62435/make-swipeable-table-view-cell- ...

  10. 读取xml到DataSet中去

    XML如下: <?xml version="1.0" encoding="utf-8" ?> <Config> <System&g ...