一个考试成绩系统制作(重点数据库设计)

下面是要做一个学生考试成绩平台。

简单的一个学生成绩平台,只要是为了给老师使用,一个很简单的平台。

要求:老师要能通过该平台添加学生的成绩信息。可以根据学生姓名、考试时间、考试分数标准等来筛选学生。而且在每次考试完后、找到最近一次学生们的成绩信息,并且能够通过点击,发送到家长邮箱。

先大概分一下流程:1.数据库的设计、2.写出伪代码、3.写代码。

1.数据库暂时分成两个表:学生信息表(student)、成绩表(exam) ps:两表关系一对多

student(学生表):

    

解释一下设计当前字段的意思:

        s_id(学生ID):主键、自增不用多说。

        s_name(学生姓名):学生姓名 长度10应该足够。

     s_sex(学生性别):因为现在世界上多数还是男或者女,所以暂时限定存入  男  or  女。图片展示性别字段设计

s_time(学生入学时间);这里就是普通的date(日期)  就可以。

s_age(学生年龄):这里设计成为date类型,并且存的是学生的出生日期,在展示学生年龄的时候可以用当前时间减去出生日期,得到的就是当前学生的年纪,如果只是单纯的存一个int或tinyint,就成死数据了。

email:(学生家长邮箱):比较容易理解,存个邮箱varchar30,够了。



exam ( 成绩表 ) :


e_id:考试结果ID。

e_score:考试成绩,这里用tinyint就可以,长度为3(没有超过四位数的成绩)。

e_time:考试时间。

s_id:录入成绩的学生的ID。

这样,数据库就暂时创建完了。


2.接下来,顺一下流程,写一下伪代码。

    (1):学生成绩录入(本人选择的是一种一口气全部录入的方式,后边代码上会有体现)。

    (2):录入成功后,跳转展示页面。展示所有学生成绩信息。

    (3):添加搜索按钮,可以根据条件进行成绩筛选。添加发送邮箱功能,点击后可以发送邮件到对应家长邮箱。


3.

        学生成绩信息录入:

   本人html代码直接写在了php文件里

<?php
header("content-type:text/html; charset=utf8");
mysql_connect('127.0.0.1','root','root');
mysql_select_db('exam');
$sql="select * from student";
$res=mysql_query($sql);

while($arr=mysql_fetch_assoc($res)){
    $date[]=$arr;
}
//print_r($date);exit;
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="exam_add_do.php" method="post">
<table border="1">
    <tr>
        <td>学生ID</td>
        <td>学生姓名</td>
        <td>学生成绩</td>
        <td>考试时间</td>
    </tr>
    <?php foreach($date as $k=>$v){ ?>
        <tr>
            <input type="hidden" value="<?php echo $v['s_id'];?>" name="s_id[]">
            <td><?php echo $v['s_id'];?></td>
            <td><?php echo $v['s_name'];?></td>
            <td><input type="text" name="e_score[]"></td>
            <td><input type="date" name="e_time[]"></td>
        </tr>
    <?php }?>
</table>
    <input type="submit" value="提交" >
</form>
</body>
</html>

输出界面是:通过后边直接填写成绩和考试日期直接写入数据库。


学生信息执行录入:

        

<?php
header("content-type:text/html; charset=utf8");

$s_id=empty($_POST['s_id'])?'':$_POST['s_id'];
$e_score=empty($_POST['e_score'])?'':$_POST['e_score'];
$e_time=empty($_POST['e_time'])?'':$_POST['e_time'];
$date['s_id']=$s_id;
$date['e_score']=$e_score;
$date['e_time']=$e_time;
$arr_new = array();
foreach($date as $item){
    foreach($item as $key=>$val){
        $arr_new[$key][] = $val;
    }
}
mysql_connect('127.0.0.1','root','root') or die();
mysql_select_db('exam');
$sql='';
foreach($arr_new as $k=>$v){
    $sql ="insert into exam (e_score,e_time,s_id)values('$v[1]','$v[2]','$v[0]')";
    $res=mysql_query($sql);
}

if($res){
    echo "添加成功";
    header("refresh:1;url='exam_list.php'");
}else{
    echo "添加失败";
    header("refresh:1;url='exam_add_do.php'");
}



展示页面展示:

提交到本页面直接根据筛选条件查数据

<?php
header("content-type:text/html; charset=utf8");
$s_name=empty($_POST['s_name'])?'':$_POST['s_name'];
$GG=empty($_POST['GG'])?'':$_POST['GG'];
$num=empty($_POST['num'])?'':$_POST['num'];

switch($GG){
    case 1: $where=" where e_score > $num and s_name like '%$s_name%' ";break;
    case 2: $where=" where e_score = $num and s_name like '%$s_name%' ";break;
    case 3: $where=" where e_score < $num and s_name like '%$s_name%' ";break;
    default:$where=" where s_name like '%$s_name%'";
}
mysql_connect('127.0.0.1','root','root');
mysql_select_db('exam');
$sql="select * from student join exam on student.s_id=exam.s_id ".$where;
$res=mysql_query($sql);
while($arr=mysql_fetch_assoc($res)){
    $date[]=$arr;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="exam_list.php" method="post">
<input type="text" placeholder="学生姓名" name="s_name">
<select name="GG">
    <option value="1"> > </option>
    <option value="2"> = </option>
    <option value="3"> < </option>
</select>
<select name="num">
    <?php for($i=1;$i<=100;$i++){?>
            <option value="<?php echo $i;?>"><?php echo $i;?></option>
    <?php }?>
</select>
<input type="submit" value="搜索">
<table border="1">
    <tr>
        <td>学生姓名</td>
        <td>学生分数</td>
        <td>考试时间</td>
        <td>操作</td>
    </tr>
    <?php foreach($date as $k=>$v){ ?>
    <tr>
        <td><?php echo $v['s_name'];?></td>
        <td><?php echo $v['e_score'];?></td>
        <td><?php echo $v['e_time'];?></td>
        <td><a href="email.php?id=<?php echo $v['s_id'];?>&num=<?php echo $v['e_score'];?>">发送</a></td>
    </tr>
<?php }?>
</table>
</form>

</body>
</html>




添加发送邮件功能:

本人还了一个新页面做的。

查数据并且添加发送按钮,按钮跳转到邮箱发送类里面。

<?php
header("content-type:text/html; charset=utf8");
mysql_connect('127.0.0.1','root','root');
mysql_select_db('exam');
$sql="select distinct s_name,e_score,e_time,email from student join exam on student.s_id=exam.s_id ";
$res=mysql_query($sql);
while($arr=mysql_fetch_assoc($res)){
    $date[]=$arr;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <input type="submit" value="搜索">
    <table border="1">
        <tr>
            <td>学生姓名</td>
            <td>学生分数</td>
            <td>考试时间</td>
            <td>操作</td>
        </tr>
        <?php foreach($date as $k=>$v){ ?>
            <tr>
                <td><?php echo $v['s_name'];?></td>
                <td><?php echo $v['e_score'];?></td>
                <td><?php echo $v['e_time'];?></td>
                <td><a href="email.php?id=<?php echo $v['s_id'];?>&num=<?php echo $v['e_score'];?>">发送</a></td>
            </tr>
        <?php }?>
    </table>
</body>
</html>


邮箱发送类:

<?php
header("content-type:text/html; charset=utf8");

$id=$_GET['id'];//学生ID
$num=$_GET['num'];//学生成绩

mysql_connect('127.0.0.1','root','root');
mysql_select_db('exam');
$sql="select * from student where s_id=".$id;
$res=mysql_query($sql);

$arr=mysql_fetch_assoc($res);


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 = "此处填写发件人邮箱"; // SMTP username 注意:普通邮件认证不需要加 @域名
$mail->Password = "自己邮箱的授权码"; // SMTP password
$mail->From = "发件人邮箱"; 
$mail->FromName = "老师"; // 发件人

$mail->CharSet = "utf-8"; // 这里指定字符集!
$mail->Encoding = "base64";
$mail->AddAddress($arr['email'],$arr['s_name']); // 收件人邮箱和姓名
//$mail->AddReplyTo("@163.com","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>你家孩子考了 $num 分</p>";
$mail->AltBody ="text/html";
if(!$mail->Send()) {
    echo "邮件发送有误 <p>";
    echo "邮件错误信息: " . $mail->ErrorInfo;
    exit;
}else{
    echo "邮件发送成功!<br />";
}


大神请无视!!!!!!!!THINK YOU!!!!

 
 


     

猜你喜欢

转载自blog.csdn.net/Onetiger_/article/details/80341199
今日推荐