欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

学生考试查看和告知系统

程序员文章站 2022-06-11 08:50:43
...

做一个考试系统   添加完成绩后展示所有学生的所有成绩 并能查询学生最近的一次考试成绩并发送邮件给家长

考试系统的数据库设计

需要学生表考试表 。

学生表的设计的设计要注意的有

 1、学生的年龄 

    不能只存年龄,要存出生日期在和当前时间计算一下算出年龄 

 2、入学的 时间 的字段设置   

时间用date()或time()都可以 

3、性别字段的设置 

里需要用到在数据库里只能存男或女          1或2  这里需要用到一个字段是enum,并在默认值那里写上‘男’,‘女’

学生考试查看和告知系统

4、所有字段都要注意存储的长度

5、学生分为在校生和毕业生,所以这里要给数据库一给状态来区别是在校生和离校生,以防止学生离校时还能出学生的成绩难

功能的难度

1、分数和时间的传值  和数据处理

  学生考试查看和告知系统

学生考试查看和告知系统

    列表展示用的是foreach循环遍历这里就不能单独的写name=“name”,这要写只能接到一个值,要写成数组的形式name=“name[]”,这样$_POST接值会变成一个三维数组。

//获取数据库的字段名
foreach($datas as $k =>$v ){
    $arr[$k] = $k;
}
$id= $arr['s_id'];
$grade= $arr['grade'];
$examtime= $arr['examtime'];
//循环遍历添加入数据库
$link=mysqli_connect('127.0.0.1','root','root','grade')or die(mysqli_error());

foreach($new_data as $k =>$v ){
    if(!$v[$grade] == '' && !$v[$examtime] == ''){
        $sql = "insert into `grade` (".$id.",".$grade.",".$examtime.",stutas) values ('".$v[$id]."','".$v[$grade]."','".$v[$examtime]."',1)";
        $res=mysqli_query($link,$sql);
    }

}

2展示列表

查询状态为1的所有数据 ,并添加查询数据的input框

学生考试查看和告知系统

查询条件默认为$where = 1;

姓名模糊查询

分数查询为大于   大于等于  小于 小于等于  等于

3 展示学生最近最近一 次考试并发送邮件提醒家长

学生考试查看和告知系统

查询数据哟查询在校学生的最近一次考试成绩

//处理学生的id  去重
$link=mysqli_connect('127.0.0.1','root','root','grade')or die(mysqli_error());
$sqls = "select distinct s_id from  `grade` ";
$result=mysqli_query($link,$sqls);
while($arr=mysqli_fetch_assoc($result)) {
    $data[]=$arr;
}
//循环查询每个学生的最近一次成绩
foreach( $data as $k=>$v){
    $ids=$v['s_id'];
    $sql = "select * from  `grade` join `student` on `grade`.s_id=`student`.s_id  where `grade`.s_id = $ids and `student`.stutas =1 order by examtime desc limit 1 ";

    $results=mysqli_query($link,$sql);
    while($arr=mysqli_fetch_assoc($results)) {
        $data1[]=$arr;
    }
}

4、发送邮件

    1、注册一个邮箱(开通授权:设置->设置POP3、SMTP/IMAP勾选),如果不勾选,授权失败

学生考试查看和告知系统

学生考试查看和告知系统

2、去这个网址下载phpmailer类库,http://github.com/PHPMailer/PHPMailer

3、


<?php
header("content-type:text/html;charset=utf-8");
//接值
$s_id=$_GET['s_id'];
$link=mysqli_connect('127.0.0.1','root','root','grade')or die(mysqli_error());
//查询一条学生信息
$sql = "select * from `grade` join `student` on `grade`.s_id=`student`.s_id where grade.s_id='$s_id'";
$result=mysqli_query($link,$sql);

$arr=mysqli_fetch_assoc($result);
$name = $arr['s_name'];
//发送邮件的文本
$messgae='尊敬的'.$name.'的家长,您的孩子最近一次成绩是'.$arr['grade'].',希望您注重孩子的学习。';
//让aaa@qq.com给aaa@qq.com发送邮件

include("class.phpmailer.php");
include("class.smtp.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = "smtp.163.com"; // SMTP servers
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "aaa@qq.com"; // SMTP username 注意:普通邮件认证不需要加 @域名
$mail->Password = "wj1995320"; // SMTP password
$mail->From = "aaa@qq.com"; // 发件人邮箱
$mail->FromName = "静静"; // 发件人

$mail->CharSet = "utf-8"; // 这里指定字符集!
$mail->Encoding = "base64";
$mail->AddAddress("aaa@qq.com",$name); // 收件人邮箱和姓名
$mail->AddReplyTo("aaa@qq.com",$name);
//$mail->WordWrap = 50; // set word wrap 换行字数
//$mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment 附件
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg");
$mail->IsHTML(true); // send as HTML
// 邮件主题
$subject="测试";
$mail->Subject = $subject;
// 邮件内容
$mail->Body = $messgae;
$mail->AltBody ="text/html";
if(!$mail->Send())
{
    echo "邮件发送有误 <p>";
    echo "邮件错误信息: " . $mail->ErrorInfo;
    exit;
}
{
    echo "邮件发送成功!<br />";
}

此博客最后展现的内容是可以通过页面来发送邮件告知成绩。

此博客现在就只是涉及了一个班级的所有成绩,不能体现出多班的成绩,这个博客还没有加必要的验证和年龄的处理,年龄还是出生日期。

在windows下运行  ,要注意的邮件的类库,发送邮件的模板。

在Linux下运行,如果过在Windows运行正常,在linux里报错首先要看的是防火墙是否关闭,centOS6.4  iptables、centOS7   firewall。还不成功报这个错

学生考试查看和告知系统

关闭SELINUX(linux   内核模块的防火墙)

vi /etc/selinux/config  
#SELINUX=enforcing #注释掉  
SELINUX=disabled #增加  
:wq! #保存退出  
setenforce 0 #使配置立即生效

学生考试查看和告知系统   结束...

相关标签: 考试功能