考试成绩平台开发功能

项目需求

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 #使配置立即生效  
 尝试发送邮件 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值