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

考试成绩平台开发功能

程序员文章站 2022-07-06 10:40:09
...

项目需求

1、学生成绩录入(学生基本信息自行数据库模拟)

2、展示   搜索条件(1)、按学生名称搜索 (2)、按分数搜索 (3)、按学生考试时间搜索

3、考试成绩通知家长(php自带 发送邮箱类文件)


一、表分析

            ----学生基本信息表(student_info)  AND  学生成绩表(stuent_score)  ;

            ----表关系:1对多 (一个学生有多个考试分数  一个分数只属于一个学生);

二、数据库设计 及 字段

表1(学生基本信息表)::【自行模拟数据】

    字段:c_id-学生id、c_num-学生学号、c_name-学生姓名、c_sex-学生性别、c_age-学生年龄、enrol_time-入学时间、is_graduate-是否毕业、parents_email-学生家长邮箱

     注:c_age-学生年龄date类型(当前年份-储存出生年份=年龄,可自动增长年龄);

            c_sex-学生性别枚举型enum (限定男女)有关于check约束可参考点击打开链接  (博主还尚未修改^.^)

考试成绩平台开发功能

表2(学生考试分数记录表)::

    字段:s_id-自增id、s_score-考试分数、test_time-考试时间、c_id-关联id

    注:s_score-考试分数float类型(分数可能出现小数点)

考试成绩平台开发功能

三、代码实现  【面向过程】基本验证自行处理

(一)、添加表单 name设置数组 提交浏览器处理得到一个三维数组

<?php
$con = mysqli_connect('localhost','root','root','test');
$con->set_charset('utf8');
if (mysqli_connect_errno($con))
{
    echo "连接 MySQL 失败: " . mysqli_connect_error();
}
$sql = "select * from `student_info`";
$res = mysqli_query($con,$sql);
while($arr = mysqli_fetch_assoc($res)){
    $student_info[] = $arr;
}
?>
<html>
    <h3>学生成绩录入</h3>
    <form action="scoreEnteringDo.php" method="post">
        <table>
            <tr>
                <td>学生学号</td>
                <td>学生姓名</td>
                <td>本次考分</td>
                <td>考试时间</td>
            </tr>
            <?php foreach ($student_info as $k => $v){?>
                <tr class="data">
                    <input type="hidden" name="student[c_id][]" value="<?php echo $v['c_id'];?>">
                    <td><?php echo $v['c_num'];?></td>
                    <td><?php echo $v['c_name'];?></td>
                    <td><input name="student[s_score][]" type="number"></td>
                    <td><input name="student[test_time][]" type="date"></td>
                </tr>
            <?php }?>
        </table>
        <input type="submit" id="demo1" style="margin-top:20px;margin-left:100px;">
        <input type="reset"  style="margin-top:20px;margin-left:100px;">
    </form>
</html>

添加表单图样

考试成绩平台开发功能

多条数据入库处理

$con = mysqli_connect('localhost','root','root','test');
$con->set_charset('utf8');
if (mysqli_connect_errno($con))
{
    echo "连接 MySQL 失败: " . mysqli_connect_error();
}
$arr = $_POST;
if(empty($arr['test_time'])){
    $arr['test_time']=date('ymd');
}
//转成二维数组
foreach ($arr as $value){
    foreach($value as $v){
        $data[] = $v;
    }
}

$arr_new = array();
foreach($data as $item){
    foreach($item as $key=>$val){
        $arr_new[$key][] = $val;
    }
}

foreach($arr_new as $new_key =>$new_value){
    if(empty($new_value[1]) || empty($new_value[2])){
        unset($new_value);
    }else{
        $sqli = "INSERT INTO `student_score` (`c_id`, `s_score`, `test_time`) VALUES ('" . $new_value[0] . "','" . $new_value[1] . "','" . $new_value[2] . "')";
        $a=mysqli_query($con , $sqli);
    }
}

(二)、展示数据    【根据ajax获取搜索条件->发送请求->进行以下数据处理->回掉数据进行展示数据的替换】

ajax请求代码【引入jQuery文件】

$("#dome").click(function () {
            var c_name = $("#c_name").val(); //搜索名称
            var s_score = $("#s_score").val(); //搜索分数
            var type = $("#type").val(); //分数类型
            var date = $("#date").val(); //考试日期
            $.ajax({
                url: "scoreSearch.php",
                type: "post",
                data: {c_name: c_name, s_score: s_score, type: type, date: date},
                success: function (json_data) {
                    // console.log(json_data);
                    var str = '';
                    if (json_data != 'no') {
                        var data = JSON.parse(json_data);
                        str += "<tr>" +
                            "<td>学生学号</td>" +
                            "<td>学生姓名</td>" +
                            "<td>考试分数</td>" +
                            "<td>考试时间</td>" +
                            "<td>是否毕业</td>" +
                            "<td>是否通知家长</td>" +
                            "</tr>";
                        for (var i in data) {
                            str += "<tr>" +
                                "<td>" + data[i]['c_num'] + "</td>" +
                                "<td>" + data[i]['c_name'] + "</td>" +
                                "<td>" + data[i]['s_score'] + "</td>" +
                                "<td>" + data[i]['test_time'] + "</td>" +
                                "<td>" + data[i]['is_graduate'] + "</td>" +
                                "<td><a href='javascript:;' class='send_email'>是</a></td>" +
                                "<input type='hidden' value=" + data[i]['c_id'] + " class='c_id'>" +
                                "<input type='hidden' value=" + data[i]['test_time'] + " class='test_time'>" +
                                "</tr>";
                        }

                    } else {
                        str += "<tr>" +
                            "<td>学生学号</td>" +
                            "<td>学生姓名</td>" +
                            "<td>考试分数</td>" +
                            "<td>考试时间</td>" +
                            "<td>是否毕业</td>" +
                            "<td>是否通知家长</td>" +
                            "</tr>";
                        str += "<tr>" +
                            "<td><p style='line-height: 40px;'>暂无此类数据</p></td>" +
                            "</tr>";
                    }
                    $("#data").html(str);
                }
            });
        });
展示列表 被请求页面的数据处理
header("content-type:text/html;charset=utf-8");
$con = mysqli_connect('localhost','root','root','test');
$con->set_charset('utf8');
if (mysqli_connect_errno($con))
{
    echo "连接 MySQL 失败: " . mysqli_connect_error();
}
//接受搜索条件
$c_name = !empty($_POST['c_name'])?$_POST['c_name']:'';  //名称
$s_score = !empty($_POST['s_score'])?$_POST['s_score']:'';  //分数
$type = !empty($_POST['type'])?$_POST['type']:'';  //类型
$date = !empty($_POST['date'])?$_POST['date']:'';  //考试时间
//var_dump($date);
if($type ==1){
    $type = '=';
}elseif($type ==2){
    $type = '>';
}elseif($type ==3){
    $type = '<';
}
//拼条件
$where=1;
if(!empty($c_name)){
    $where .=" and c_name = '$c_name'";
}
if(!empty($s_score) && !empty($type)){
    $where .=" and s_score $type '$s_score'";
}
if(!empty($date)){
    $where .= " and test_time ='$date'";
}
    $sql = "select * from `student_info` join `student_score` on student_info.c_id=student_score.c_id where $where";
    $res = mysqli_query($con , $sql);
    //判断受影响行数
    $number = mysqli_num_rows($res);
    if($number != 0){
        while($arr = mysqli_fetch_assoc($res)){
            $student_data[] = $arr;
        }
            foreach($student_data as $k_k => $v_v){
                if($v_v['is_graduate'] == 0){
                    $student_data[$k_k]['is_graduate'] = "在校";
                }else{
                    $student_data[$k_k]['is_graduate'] = "毕业";
                }
            }
            echo json_encode( $student_data );
    }else{
        echo 'no';
    }
展示列表图样

考试成绩平台开发功能

(3)、是否通知家长   点击超链接 get传值学生id  进行查询学生信息表家长邮箱  调用php自带发送邮箱类库

修改模板数据,进行发送邮箱


注释::

上传到liunx运行

邮件发不出去 关闭防火墙 IPtables(6.4)或firewalld(7.0) 在运行一遍  如果还发不出去 再关闭selinux 0(临时关闭) 

  1. vi /etc/selinux/config    
  2. #SELINUX=enforcing #注释掉    
  3. SELINUX=disabled #增加    
  4. :wq! #保存退出    
  5. setenforce 0 #使配置立即生效  
 尝试发送邮件 




相关标签: 功能