录入考试成绩平台

为了让老师在学生考试完,高效快速的把成绩总结和录入,我们开发这样的一个平台

首先我们要在数据库中创建两张表 一张学生表和成绩表 双表关联 建表注意一下几点

1 时间字段的设计:  存储年:月:日;  date
2 年龄字段的设计: 存储时:出生日期;   
3 性别字段的设计: 存储时 能否限定 只存男 or 女;
4 姓名字段的设计:   注意 存储长度;

5 email字段的设计:  注意 存储长度;

//把学生表的学生基本信息查询出来 做添加页面
header("content-type:text/html;charset=utf-8");
//链接数据库
mysql_connect('127.0.0.1','root','root') or die('链接失败');
mysql_select_db('demo') or die('打开失败');
//查询学生表数据
$sql="select * from student";
//执行
$rel=mysql_query($sql);
//循环取出数据
while($arr=mysql_fetch_assoc($rel)){
    $arr1[]=$arr;
}
//把学生信息展示出来 做添加页面 添加考试成绩和时间 进行多条添加
<form action="student_do.php" method="post">
    <table border="1">
        <tr>
            <td>学生id</td>
            <td>入学时间</td>
            <td>姓名</td>
            <td>性别</td>
            <td>分数</td>
            <td>考试时间</td>
        </tr>
        <?php foreach($arr1 as $k=>$v){?>//把数据循环你展示出来
            <input type="hidden" value="<?php echo $v['s_id']?>" name="s_id[]">
            <tr>
                <td><?php echo $v['s_id']?></td>
                <td><?php echo $v['s_time']?></td>
                <td><?php echo $v['s_name']?></td>
                <td><?php echo $v['s_sex']?></td>
                <td><input type="text" name="g_grade[]" placeholder="请输入考试成绩"></td>//input添加成绩和时间
               <td><input type="date" name="time[]" placeholder="请输入考试时间"></td>
            </tr>
        <?php }?>
        <tr>
            <td>
                <input type="submit" value="添加">
                <input type="reset">
            </td>
        </tr>
    </table>
</form>
//多个数据 进行处理 添加到数据库
 
 
header("content-type:text/html;charset=utf-8");
include_once 'Db.class.php';//包含类分装
$arr=$_POST;//接受多条数据
foreach($arr as $key=>$item)//把数据循进行处理
foreach($item as $k=>$v){//把里面的值二维数组处理成以为数组 
        $new_data[$k][$key]=$v;
    }
}

$db=new Db();//实例化
//循环添加数据 把接受的数据添加到数据库
foreach($new_data as $k=>$v) {
    if ($v['g_grade'] != '' && $v['time'] != '') {
        $res = $db->add('grade', $v);
    }
}


if($res){
    echo '添加成功';
    header("refresh:2;url='grade.php'");
}else{
    echo '添加失败';
    header("refresh:2;url='student.php'");
}
 
 
//查询数据进行展示
mysql_connect('127.0.0.1','root','root') or die('链接失败');
mysql_select_db('demo') or die('打开失败');
$sql="select * from student join grade on student.s_id=grade.s_id ";

$rel=mysql_query($sql);
while($arr=mysql_fetch_assoc($rel)){
    $arr1[]=$arr;
}
//循环展示数据 并搜索数据
<table border="1">
    <tr>
        <td>学生姓名</td>
        <td>分数</td>
        <td>考试时间</td>
    </tr>
    <?php if(empty($arr1)){ echo "";}else{
      foreach( $arr1 as $k=>$v){?>
        <tr>
            <td><?php echo $v['s_name']?></td>
            <td><?php echo $v['g_grade']?></td>
            <td><?php echo $v['time'] ?></td>
        </tr>
    <?php }} ?>
</table>
//搜索数据 一个是模糊查询 一个是 按照分数查询
<form action="a.php" method="post">
    <tr>
        <input type="text"  name="key">

    </tr>
    <table>
        <tr>
            <td>
                <select name="keyword" >
                    <option value="0">请选择</option>
                    <option value="1"> < </option>
                    <option value="2"> > </option>
                    <option value="3"> = </option>
                </select>
            </td>
            <td>
                <select name="grade">
                    <option  value="0" selected> 请添加条件</option>
                    <?php for($i=0;$i<100;$i++){?>
                        <option><?php echo $i ?></option>
                    <?php  }?>
                </select>
            </td>
        </tr>
        <tr>
            <input type="submit" value="搜索">
        </tr>

    </table>
</form>
//新建页面进行搜索的页面
$key=empty($_POST['key'])?'':$_POST['key'];//接受数据
$keyword=empty($_POST['keyword'])?'':$_POST['keyword'];
$grade=empty($_POST['grade'])?'':$_POST['grade'];
switch($keyword){
    case 1:$where=" where g_grade < $grade and s_name like '%$key%' ";break;//判断搜索的条件
    case 2:$where=" where g_grade > $grade and s_name like '%$key%' ";break;
    case 3:$where=" where g_grade = $grade and s_name like '%$key%' ";break;
    default:$where="where s_name like '%$key%'";
}
mysql_connect('127.0.0.1','root','root') or die('链接失败');
mysql_select_db('demo') or die('打开失败');
$sql="select * from student join grade on student.s_id=grade.s_id ".$where;//查询

$rel=mysql_query($sql);
while($arr=mysql_fetch_assoc($rel)){
    $arr1[]=$arr;
}

如同这样过的页面

//查询最新的考试时间 按照时间最大的方式进行排序 
header("content-type:text/html;charset=utf-8");
mysql_connect('127.0.0.1','root','root') or die('链接失败');
mysql_select_db('demo') or die('打开失败');
$sql="select distinct s_id from grade";
$rel=mysql_query($sql);
while($arr=mysql_fetch_assoc($rel)){
    $arr1[]=$arr;
}



foreach($arr1 as $k=>$v){
   $id=$v['s_id'];
    $sql2="select * from grade join student on grade.s_id=student.s_id where grade.s_id=$id order by time desc limit 1";
    $rel2=mysql_query($sql2);
    while($arr2=mysql_fetch_assoc($rel2)){
              $data[]=$arr2;
    }
}
//把最新的一次成绩循环展示出来
<table border="1">
    <tr>
        <td>学生姓名</td>
        <td>分数</td>
        <td>考试时间</td>
        <td>邮箱</td>
        <td>操作</td>
    </tr>
    <?php foreach( $data as $k=>$v){?>
        <tr>
            <td><?php echo $v['s_name']?></td>
            <td><?php echo $v['g_grade']?></td>
            <td><?php echo $v['time'] ?></td>
            <td><?php echo $v['s_email']?></td>
            <td><input type="button" value="发送邮件" onclick="_email(<?php echo $v['s_id']; ?>)"></td>
        </tr>
    <?php } ?>
</table>
</body>
</html>
//用jquery的方式进行接收数据  跳转页面 发送邮件
<script src="Js/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
    function _email(id){
        $.ajax({
            type:'post',
            data:{s_id:id},
            dataType:'json',
            url:"email.php",
            success:function(json_info){
                alert(json_info);
            }
        })
    }

</script>
//发送邮件
 
 
//header("content-type:text/html;charset=utf-8");
//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 = "18210632075"; // SMTP username 注意:普通邮件认证不需要加 @域名
//$mail->Password = "chao1314"; // SMTP password
//$mail->From = "[email protected]"; // 发件人邮箱
//$mail->FromName = "zph"; // 发件人
//$mail->CharSet = "utf-8"; // 这里指定字符集!
//$mail->Encoding = "base64";
//$mail->AddAddress("[email protected]","111"); // 收件人邮箱和姓名
////$mail->AddReplyTo("[email protected]","wo");
////$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 = "
//<p>点击激活</p>
//<a href='#'>点击激活</a>
//";
//$mail->AltBody ="text/html";
//if(!$mail->Send())
//{
//    echo "邮件发送有误 <p>";
//    echo "邮件错误信息: " . $mail->ErrorInfo;
//    exit;
//}
//else {
//    echo "邮件发送成功!<br />";
//}

在linux中遇到的问题就是 数据库中的数据乱码  解决方案  在链接数据库下面 添加一行代码 

mysql_query("set names utf8"); 


//刚开始发邮件的时候 163发给qq邮件一直退信 被当成垃圾邮件












猜你喜欢

转载自blog.csdn.net/chao0508/article/details/80341438