数据库表格: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. SpringMVC——从HelloWorld

    学习SpringMVC——从HelloWorld开始   前言: 时隔十二年,中国女排最终过关斩将,用3:1的成绩证明了自己的实力,霸气夺冠,为中国赢得了一枚意义非常的金牌.这是一次全民的狂欢,一场视 ...

  2. Java was started but returned exit code=13

    安装Eclipse(32位)后打开报错:Java was started but returned exit code=13 解决方法: 1,首先我查看了我当前安装的JDK版本,发现是64位的: 2, ...

  3. [51单片机]18B20驱动函数

    /**********DS18B20.h**********/ #include "REG52.H" #include "INTRINS.H" sbit DQ ...

  4. mobile 测试入门思维导图

    手机测试思维导图 ISO 测试思维导图 Android测试思维导图 原图出自:http://www.ministryoftesting.com/resources/mindmaps/

  5. 关于 "Context" 模式(基于COM思想IUnknown思想)

    有同事很喜欢用Context模式,觉得是自己"首创", 我有些自己的想法, 或者大家可以发表下自己的观点.   什么是Context模式? 23种设计模式中没有这个模式, 是同事自 ...

  6. 18个SaaS及其功能评价

    SAAS软件及其功能评价1. 360 两个同步功能都不错,却被埋没了2. 够快云3. DBFen4. Seafile5. 坚果云6. DZ7. 百度云8. 1159. 迷你云10. 微云11. Dro ...

  7. SPOJ3267--D-query (树状数组离线操作)

    题意查询区间 [l,r]内有多少个不同的数字 先把所有询问按 右端点进行排序,然后离线操作.如果该位置的数字 已经出现过那么把前一个位置-1,当前位置+1.扫一遍输出. #include <cs ...

  8. [LeetCode] 128. Longest Consecutive Sequence 解题思路

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ...

  9. SRM 600 DIV1

    A 按位讨论,取最小值; B 数据范围不大,首先要确定枚举角度; 状压枚举palindromes的列比较科学; 列确定后,目标就是求获得rcnt行的最小代价: dp[i][cnt]表示扫描到第i行,已 ...

  10. CSS常用操作-导航栏

    1.垂直导航栏 index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...