一个简单的考试系统

        做了一个简单的系统,其实也就是个小功能。是一个考试系统,主要试用人群是老师,大致功能与相关代码罗列一下:

大概涉及到了两个表,分别是学生表和分数表,暂时不需要太完善的功能,所以只有一个管理员,没必要再设计管理员表了。

学生表的字段说几个重要的: 名称,年龄,家长邮箱,年龄在数据库里可以给个char类型,长度给3就可以了,再添加的时候可以验证输入的是否为纯数字。分数表:分数(给int就可以了),考试时间,(给int,date类型都可以,直接存时间戳或者存date类型的时间),s_id,它是分数表与学生表的关联字段,这个s_id是学生表里的自增id,很重要,展示一下我自己的表结构


        接下来讲一下具体的功能以及实现的代码

为了方便用户进行操作,需要一个一次添加多条的功能,表单页面如下:


这里表单里的数据必须从学生表里查出来,循环展示就可以了,学生id和学生姓名必须给一个 readonly  的样式,因为这个数据不能更改,其余的样式随便给就可以了

<?php
header("content-type:text/html;charset=utf8");
$con=mysqli_connect('127.0.0.1','root','root','student') or die(mysql_error('1233211234567'));
$sql="select s_id,s_name from student";

$res=mysqli_query($con,$sql);
	while($arr=mysqli_fetch_assoc($res)){
		$data[]=$arr;
	}
	$num=mysqli_num_rows($res);
?>
<form action="pointAdd_do.php" method="post">
	<table>
			<tr>
				<td>学生id</td>
				<td>姓名</td>
				<td>分数</td>
				<td>考试时间</td>
			</tr>
			<?php foreach($data as $k=>$v){?>
			<tr>
				<td><input type="text" name='s_id[]' value="<?php echo $v['s_id']?>" style='width: 70px;' readonly></td>
				<td><input type="text" value="<?php echo $v['s_name']?>" style='width: 70px;' disabled></td>
				<td><input type="text" name='point[]' style='width: 80px;'></td>
				<td><input type="date" name="exam_time[]"></td>
			</tr> 
			<?php }?>
			<tr>
				<td><input type="submit" value="提交"></td>
			</tr>
		</table>	
</form>

    表单页面里文本框的name属性值后跟一个文本框,类似数组的写法,其实也真是数组,否则会被最后一行的值覆盖。

    提交后的值应该是这样的

    

    很重要的一环,数组处理

$arr=[];
foreach ($data['s_id'] as $k => $v) {
	foreach ($data['point'] as $key => $val) {
		foreach ($data['exam_time'] as $key1 => $value) {
		$arr[$k]['s_id']=$v;
		$arr[$k]['point']=$val;
		$arr[$k]['exam_time']=$value;
		}
		
	}
}

处理后的数据


处理完循环添加就可以了,在这里我调了一个自己封装的Db类中的添加单条的一个方法

接下来是展示页面,

做了一个搜索的功能,根据姓名精确搜和根据分数搜,在这里用到了js的一些技术,跨页面传值和页面替换无刷新,替换页面作用挺大的,可以减少服务器压力,实现页面无刷新,这个页面数据少,用不用都可以,以下是实现代码,

<script type="text/javascript" src="jquery-1.9.1.min.js"></script>
<script type="text/javascript">
	function _username(){
		var name = $("[name='s_name']").val();
		var type = $("[name='type']").val();
		var fraction = $("[name='fraction']").val();
		$.ajax({
			type:'post',
			data:{name:name,type:type,fraction:fraction},
			// dataType:'json',
			url:"pointList_do.php",
			success:function(json_info){
				$('#data').html(json_info);
			}
		})
	}


</script>

主要是将关键字和分数条件传到php页面,根据这两个条件查询数据库,将查到的数据响应回来将之前的页面替换

<?php
	header("content-type:text/html;charset=utf8");
	// $con = mysqli_connect('127.0.0.1','root','root','student') or die('链接数据库出错');
	// $con->set_charset("utf8");
	include('./database/db.php');
	connect();
	$where = 1;
	$name  = $_POST['name'];
	$fraction  = $_POST['fraction'];
	$type  = $_POST['type'];
	if(!empty($name)){
		$where .=  " and s_name like '%$name%'";
	}
	if(!empty($fraction) && !empty($type)){
		$where .=  " and point $type $fraction";
	}
	
	$sql = "select * from student join point on point.s_id = student.s_id where $where";
// echo $sql;exit;

	$arr = mysqli_query($con,$sql);
	// var_dump($arr);exit;
	if($arr){
		while ($array = mysqli_fetch_assoc($arr)) {
			$data[] = $array;
		}
	}
	
?>
<table border="1">
	<thead>
		<tr>
			<td>学号</td>
			<td>学生姓名</td>
			<td>分数</td>
			<td>考试时间</td>
		</tr>
	</thead>
	<tbody>
		<?php 
			if (!empty($data)) {
				foreach ($data as $k => $v) { 
		?>
		<tr>
			<td><?php echo $v['p_id']; ?></td>
			<td><?php echo $v['s_name']; ?></td>
			<td><?php echo $v['point']; ?></td>
			<td><?php echo $v['exam_time']; ?></td>
		</tr>
		<?php } }else{ ?>
			
		<?php } ?>
	</tbody>
</table>

还有一个功能,是 用户可以将学生最近一次的考试成绩发送给家长的邮箱,是这样的,将学生表和分数表关联,查询最近一次的考试信息,展示

<?php 
header("content-type:text/html;charset=utf8");
include_once("./database/db.php");
$con=mysqli_connect('127.0.0.1','root','root','student') or die(mysql_error(1231231));
$sql="select distinct s_id from point";
$res=mysqli_query($con,$sql);
while ($arr=mysqli_fetch_assoc($res)){
	$data[]=$arr;
}
foreach ($data as $k => $v) {
	$id=$v['s_id'];
	$sql1="select * from `point` join `student` on `point`.s_id=`student`.s_id where `point`.s_id=$id order by exam_time desc limit 1";
	$result=mysqli_query($con,$sql1);
	while ($arr1=mysqli_fetch_assoc($result)){
		$data1[]=$arr1;
	}
}
?>
<table border="1">
	<tr>
		<td>姓名</td>
		<td>性别</td>
		<td>分数</td>
		<td>入学时间</td>
		<td>毕业时间</td>
		<td>邮箱</td>
		<td>考试时间</td>
		<td>发送邮件</td>
	</tr>·
	<?php foreach($data1 as $k=>$v){?>
		<tr>
			<td><?php echo $v['s_name'];?></td>
			<td><?php echo $v['s_sex'];?></td>
			<td><?php echo $v['point'];?></td>
			<td><?php echo $v['into_time'];?></td>
			<td><?php echo $v['gradtime'];?></td>	
			<td><?php echo $v['email'];?></td>
			<td><?php echo $v['exam_time'];?></td>
			<td><a href="dome.php?email=<?php echo $v['email']?>&point=<?dome.php echo $v['point'];?>">发送邮件</a></td>
		</tr>
	<?php }?>
</table>

在这里要用到一个模板,邮箱发送的模板,链接给大家,有需要的话可以去csdn下载    邮箱模板下载

大概就这么多。


  • 9
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
铭成在线考试系统 界面预览 图1 系统登录界面 图2 随机抽题界面 图3 试题管理模块界面 图4 后台管理员模块运行界面 使用说明 系统介绍 为了保障整个系统的安全性,在线考试系统实现了分类验证的登录模块,通过此模块,可以对不同身份的登录用户进行验证,确保了不同身份的用户操作系统。在抽取试题上,系统使用随机抽取试题的方式,体现了考试的客观与公正。当考生答题完毕之后,提交试卷即可得知本次考试的得分,体现系统的高效性。在后台管理上,分后台管理员管理模块和试题管理模块。分别适应不同的用户,前者只有系统的高级管理员才能进入,对整个系统进行管理。而后者只允许教师登录,教师可以对自己任教的科目试题进行修改,并且可以查看所有参加过自己任教科目的学生成绩。 操作注意事项 (1)本系统管理员用户名为:zhuyunfeng,密码为:123。 (2)实例执行文件位置:在线考试系统\ Login.aspx (3)本系统共分为三种操作权限,分别为管理员、老师、学生。 操作流程  管理员权限 输入账号、密码后进入管理员管理界面如图9所示。 图9 管理员管理界面 (1)单击“学生信息管理”/“学生基本信息”菜单项,对学生信息进行查询、修改及删除操作。 (2)单击“学生信息管理”/“添加学生信息”菜单项,对学生信息进行添加操作。 (3)单击“教师信息管理”/“教师基本信息”菜单项,对教师信息进行查询、修改及删除操作。 (4)单击“教师信息管理”/“添加教师信息”菜单项,对教师信息进行添加操作。 注意:每个教师只能负责自己的课程,其它课程只能有其他课程教师管理。 (5)单击“试题信息管理”/“试题基本信息”菜单项,对试题信息进行查询、修改及删除操作。 (6)单击“试题信息管理”/“添加试题信息”菜单项,对试题信息进行添加操作。 (7)单击“科目信息管理”/“考试科目设置”菜单项,对考试科目信息进行添加操作,如图10所示。 图10 考试科目设置 (8)单击“考试结果管理”/“考试结果”菜单项,对考试结果进行查询及删除操作,如图11所示。 图11 考试结果 (9)单击“管理员信息维护”/“修改密码”菜单项,对管理员操作密码进行修改操作。  学生权限 学生登录后,只能进行考试答题操作,如图12所示。 图12 学生考试  教师权限 教师登录后,可对试题基本信息进行添加、修改、查询及删除操作。同时对学生考试成绩进行查询及删除操作。如果教师对现有的密码不满意,还可以修改自己的密码,如图13所示。 图13 教师权限
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值