选题在线提交系统(html+JS+php)

在线选题系统
为解决课程设计选题统计难题,开发了一个简易在线选题系统。系统采用HTML、JavaScript及PHP编写,实现选题提交与验证功能,并能实时更新剩余名额。

在线选题系统完善篇(含后台管理)

前言:

        作为学习委员还是有挺多的事情要忙的,比如经常统计同学们的课设题目选择结果。如果老师的要求少一点,我还可以轻松一点。但是当老师对选题有种种限制的时候,自己就估计不会那么好办了。这次数据结构老师,给的要求如下:

 

  •   选题总分不低于一百分
  •   选题分为20分,60分,70分,80分,100分,180分六类一共十九道,除了20分的以外,每个选题选择人数不能超过四人
  •   同学考虑时间为三个周(时间好长。。。) 

 

不过作为学软件的学生怎么可能不利用自身的优势来统计呢。于是开做,做一个在线提交系统开放给同学们,而我只需要最后收一下结果就好了!想的挺好啊吐舌头

 

语言:

        html、Javascript、PHP(因为是给自己班里同学用,而且考虑到用的时间不长就没有使用CSS对页面进行美化)

 

主体思路:

       用html写个表单,然后提交到一个.php文件,对提交的信息进行处理,然后再写一个.php文件将提交保存的数据展示出来。(这里用的文件存储数据,一个原因是数据量较小,其实主要是因为我服务器上的Mysql数据库还没配置好哭

 

功能分析:

  1.   在提交表单时,验证姓名和学号是否填写,验证选题总分是否不低于100分 (Javascript)
  2.   在处理表单的php文件中,判断提交的表单中的选题是否还有余量。

                      ---如果有余量,使用switch语句对所选题目存储余量的数据进行-1

                      ---如果余量为零,则输出该选题的名字进行提示,然后终止程序运行

 

     3.   对同学提交的表单内容进行存储,使用fwrite()函数

     4.   写个php文件用for循环将文件中的信息读取出来,然后每隔五秒刷新一次

     5.   限定提交次数,每个人只能提交一次,先把同学们的学号存储起来。等提交的时候,比对一下如果在而且提交次数为0,则通过,如果不为0则exit()  (此功能没有加上,因为是给自班里同学用提前说明了情况,再说用的时间相对较短就不费工夫了)

 

 

代码部分:

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <title>计154-2数据结构课程设计</title>
        <meta charset="GB2312">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        <script tyoe="text/javascript">
            alert("谨记:只有一次填写机会,为了让学委不那么累,大家体谅一下!毕竟你选了以后,那道题就少了一次机会!万一别人也想选呢。所以选择前望三思,大家都轻松。如果乱填的的话,常轩会很难办的,如果常轩生气不给你统计了那怎么办!拜托了~~~~");
            function check(f)
            {
                if(f.number.value=="")
                {
                    alert("又调皮了吧!你不写学号,你让学委怎么统计~_~");
                    f.number.focus();
                    return (false);
                }
                if(f.name.value=="")
                {
                    alert("你不写名字,想累死学委啊~_~");
                    f.name.focus();
                    return (false);
                }
                           
                var ids = document.getElementsByName("fav[]");                
                var flag = false ;      
                var sum=0;
                for(var i=0;i<ids.length;i++){
                    
                    if(ids[i].checked){
                        flag=true;
                        switch(ids[i].value)
                        {
                            case "约瑟夫环游戏(20分)":
                                sum=sum+20;
                                break;
                            case "八皇后问题(20分)":
                                sum=sum+20;
                                break;
                            case "表达式的求值问题(20分)":
                                sum=sum+20;
                                break;
                            case "迷宫问题(20分)":
                                sum=sum+20;
                                break;
                            case "HTML文档标记匹配算法(60分)"||"程序源代码的相似性(60分)":
                                sum=sum+60;
                                break;
                            case "程序源代码的相似性(60分)":
                                sum=sum+60;
                                break;
                            case "并查集:检查网络(70分)":
                                sum=sum+70;
                                break;
                            case "插队买票(70分)":
                                sum=sum+70;
                                break;
                           
                            case "飞机订票系统(80分)":
                                sum=sum+80;
                                break;
                            case "图书管理系统(80分)":
                                sum=sum+80;
                                break;
                            case "拯救007(80分)":
                                sum=sum+80;
                                break;
                            case "小型英汉词典(80分)":
                                sum=sum+80;
                                break;
                            case "景区旅游信息管理系统(180分)":
                                sum=sum+180;
                                break;
                            case "LZW压缩器/解压器(180分)":
                                sum=sum+180;
                                break;
                            default:
                                sum=sum+100
                         
                                
                        }
                       
                    }
                }
              
                if(sum<100){
                    alert("你选题总分为:"+sum+"还不够100,老师再给你扣几分还有吗?");
                    f.name.focus();
                    return (false);
                }
                if(!flag){
                    alert("一项都不选,是不是不想上学了!");
                    return false ;
                }
            
            }
         </script>
    </head>
    <body>
        
        <h3 align="center">课程设计选题提交表</h3>
        <table border="1" align="center" cellpadding="0" cellspacing="0">
            <form method="post" action="back.php" onsubmit="return check(this)" >
                <tr>
                    <td colspan="2" align="center">选题</td>
                </tr>
                <tr>
                    <td align="right">学号:</td>
                    <td><input type="text" name="number" size="25"></td>
                </tr>
                <tr>
                    <td align="right">姓名:</td>
                    <td><input type="text" name="name" size="25"></td>
                </tr>
               <!-- <tr>
                    <td>性别:</td>
                    <td>
                        <input type="radio" value="男" name="sex" checked="checked">
                        <input type="radio" value="女" name="sex" >
                    </td>
                </tr>-->
                <tr>
                    <td align="right">班级:</td>
                    <td>
                        <select name="class" size="1">
                            <option value="计154-2">计154-2</option>
                            <option value="计154-2">不用看了,怎么选都是2班</option>
                            <option value="计154-2">选这个也是二班</option>
                        </select>
                    </td>
                </tr>
                <tr>
                    <td align="right">选题:</td>
                    <td><input type="checkbox" value="约瑟夫环游戏(20分)" name="fav[]">约瑟夫环游戏(20分)<br>
                        <input type="checkbox" value="八皇后问题(20分)" name="fav[]">八皇后问题(20分)<br>
                        <input type="checkbox" value="表达式的求值问题(20分)" name="fav[]">表达式的求值问题(20分)<br>
                        <input type="checkbox" value="迷宫问题(20分)" name="fav[]">迷宫问题(20分)<br><br>
                        <input type="checkbox" value="HTML文档标记匹配算法(60分)" name="fav[]">HTML文档标记匹配算法(60分)<br>
                        <input type="checkbox" value="程序源代码的相似性(60分)" name="fav[]">程序源代码的相似性(60分)<br><br>
                        <input type="checkbox" value="并查集:检查网络(70分)" name="fav[]">并查集:检查网络(70分)<br>
                        <input type="checkbox" value="插队买票(70分)" name="fav[]">插队买票(70分)<br><br>
                        <input type="checkbox" value="飞机订票系统(80分)" name="fav[]">飞机订票系统(80分)<br>
                        <input type="checkbox" value="图书管理系统(80分)" name="fav[]">图书管理系统(80分)<br>
                        <input type="checkbox" value="小型英汉词典(80分)" name="fav[]">小型英汉词典(80分)<br>
                        <input type="checkbox" value="拯救007(80分)" name="fav[]">拯救007(80分)<br><br>
                        <input type="checkbox" value="文件目录结构显示(100分)" name="fav[]">文件目录结构显示(100分)<br>
                        <input type="checkbox" value="校园导航问题(100分)" name="fav[]">校园导航问题(100分)<br>
                        <input type="checkbox" value="哈夫曼编码/译码器(100分)" name="fav[]">哈夫曼编码/译码器(100分)<br>
                        <input type="checkbox" value="熊猫烧香(100分)" name="fav[]">熊猫烧香(100分)<br>
                        <input type="checkbox" value="全国交通咨询模拟(100分)" name="fav[]">全国交通咨询模拟(100分)<br><br>
                        <input type="checkbox" value="LZW压缩器/解压器(180分)" name="fav[]">LZW压缩器/解压器(180分)<br>
                        <input type="checkbox" value="景区旅游信息管理系统(180分)" name="fav[]">景区旅游信息管理系统(180分)<br>
                        
                    </td>
                </tr>
                <tr>
                    <td colspan="2" align="center">
                     <!--   <input type="hidden" name="hide" value="这里是隐藏的内容">-->
                        <input type="reset" value="重填">
                        <input type="submit" value="提交">
                    </td>
                </tr>
            </form>
        
        </table><br>
<center><a href="admin.php">查看同学选题情况</a></center>
<br><br>
        <span style="font-family:arial; color:black;"><center>Copyright &copy;2017 版权所有 洋火(烟台大学) </center></span>
    </body>
</html>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>提交结果</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=GB2312">
    </head>
    <body> 
<?php
        function tishi($str){
              echo "选题:".$str."已被选完,请选择其他题目!";
              echo "<br>click<a href='tijiao.html'>返回选题页面</a>To back"; 

        }
        $file="renshu.txt";
        $fp=fopen($file,"r");
        if($fp){
            $i=0;
            while ($con= fgets($fp)){
                $m=explode(',',$con);      
                $i++;
            }
            echo $n['HTML文档标记匹配算法(60分)'];
            echo $n['程序源代码的相似性(60分)'];
            $n=array('HTML文档标记匹配算法(60分)'=>$m[0],
                     '程序源代码的相似性(60分)'=>$m[1],
                     '并查集:检查网络(70分)'=>$m[2],
                     '插队买票(70分)'=>$m[3],
                     '飞机订票系统(80分)'=>$m[4],
                     '图书管理系统(80分)'=>$m[5],
                     '小型英汉词典(80分)'=>$m[6],
                     '拯救007(80分)'=>$m[7],
                     '文件目录结构显示(100分)'=>$m[8],
                     '校园导航问题(100分)'=>$m[9],
                     '哈夫曼编码/译码器(100分)'=>$m[10],
                     '熊猫烧香(100分)'=>$m[11],
                     '全国交通咨询模拟(100分)'=>$m[12],
                     'LZW压缩器/解压器(180分)'=>$m[13],
                     '景区旅游信息管理系统(180分)'=>$m[14]
                );
            
            
        }
        else{
            echo "打开文件出错!";
        }
        fclose($fp);
        if($_POST){
       $num=count($_POST["fav"]);
        for($j=0;$j<$num;$j++){         //判断选题余量
            echo $_POST["fav"][$j];
            switch($_POST["fav"][$j])
            {
                case "HTML文档标记匹配算法(60分)":
                    if($n['HTML文档标记匹配算法(60分)']==0){
                        tishi('HTML文档标记匹配算法(60分)');
                        exit ();
                    }
                    else 
                        (int)$n['HTML文档标记匹配算法(60分)']-=1;
                    break;
                case "程序源代码的相似性(60分)":
                    if($n['程序源代码的相似性(60分)']==0){
                        tishi('程序源代码的相似性(60分)');
                        exit ();
                    } 
                    else{
                        (int)$n['程序源代码的相似性(60分)']-=1;
                         
                         }
                    break;
                  
                case "并查集:检查网络(70分)":
                    if($n['并查集:检查网络(70分)']==0){
                         tishi('并查集:检查网络(70分)');
                        exit ();
                    } 
                    else 
                        (int)$n['并查集:检查网络(70分)']-=1;
                    break;
                case "插队买票(70分)":
                    if($n['插队买票(70分)']==0){
                        tishi('插队买票(70分)');
                        exit ();
                    }
                    else 
                        (int)$n['插队买票(70分)']-=1;
                    break;
                           
                case "飞机订票系统(80分)":
                    if($n['飞机订票系统(80分)']==0){
                        tishi('飞机订票系统(80分)');
                        exit ();
                    }
                    else{
                        (int)$n['飞机订票系统(80分)']-=1;
                        }
                    break;
                case "图书管理系统(80分)":
                    if($n['图书管理系统(80分)']==0){
                        tishi('图书管理系统(80分)');
                        exit ();
                    } 
                    else 
                        (int)$n['图书管理系统(80分)']-=1;
                    break;
                case "拯救007(80分)":
                    if($n['拯救007(80分)']==0){
                        tishi('拯救007(80分)');
                    
                        exit ();
                    }
                    else 
                        (int)$n['拯救007(80分)']-=1;
                    break;
                case "小型英汉词典(80分)":
                    if($n['小型英汉词典(80分)']==0){
                        tishi('小型英汉词典(80分)');
                        exit ();
                     } 
                    else 
                        (int)$n['小型英汉词典(80分)']-=1;
                    break;
                case "景区旅游信息管理系统(180分)":
                    if($n['景区旅游信息管理系统(180分)']==0){
                        tishi('景区旅游信息管理系统(180分)');
                        exit ();
                    }
                    else 
                        (int)$n['景区旅游信息管理系统(180分)']-=1;
                    break;
                case "LZW压缩器/解压器(180分)":
                    if($n['LZW压缩器/解压器(180分)']==0){
                        tishi('LZW压缩器/解压器(180分)');
                        exit ();}
                    else 
                        (int)$n['LZW压缩器/解压器(180分)']-=1;
                    break;
                case "文件目录结构显示(100分)":
                    if($n['文件目录结构显示(100分)']==0){
                        tishi('文件目录结构显示(100分)');
                        exit ();}
                    else 
                        (int)$n['文件目录结构显示(100分)']-=1;
                    break;
                case "校园导航问题(100分)":
                    if($n['校园导航问题(100分)']==0){
                       tishi('校园导航问题(100分)');

                        exit ();}
                    else 
                        (int)$n['校园导航问题(100分)']-=1;
                    break;
                case "哈夫曼编码/译码器(100分)":
                    if($n['哈夫曼编码/译码器(100分)']==0){
                        tishi('哈夫曼编码/译码器(100分)');
                        exit ();
                    }
                    else 
                        (int)$n['哈夫曼编码/译码器(100分)']-=1;
                    break;
                case "熊猫烧香(100分)":
                    if($n['熊猫烧香(100分)']==0){
                       tishi('熊猫烧香(100分)');
                        exit ();}
                    else 
                        (int)$n['熊猫烧香(100分)']-=1;
                    break; 
                case "全国交通咨询模拟(100分)":
                    if($n['全国交通咨询模拟(100分)']==0){
                        tishi('全国交通咨询模拟(100分)');
                        exit ();}
                    else 
                        (int)$n['全国交通咨询模拟(100分)']-=1;
                    break;
                default:
                    echo "(非限制数量题目)<br>";
                    break;
            
              }
        }
        $fil="renshu.txt";
        $fps=fopen($fil,"w");
        fwrite($fps, $n['HTML文档标记匹配算法(60分)'].",".$n['程序源代码的相似性(60分)'].",".$n['并查集:检查网络(70分)'].","
.$n['插队买票(70分)'].",".$n['飞机订票系统(80分)'].",".$n['图书管理系统(80分)'].",".
$n['小型英汉词典(80分)'].",".$n['拯救007(80分)'].",".$n['文件目录结构显示(100分)'].",".$n['校园导航问题(100分)'].",".
$n['哈夫曼编码/译码器(100分)'].",".$n['熊猫烧香(100分)'].",".$n['全国交通咨询模拟(100分)'].",".
$n['LZW压缩器/解压器(180分)'].",".$n['景区旅游信息管理系统(180分)']);
       // fwrite($fp, $n['程序源代码的相似性(60分)']."\n");
       // fwrite($fp, $n['并查集:检查网络(70分)']."\n");
       // fwrite($fp, $n['插队买票(70分)']."\n");
       // fwrite($fp, $n['飞机订票系统(80分)']."\n");
       // fwrite($fp, $n['图书管理系统(80分)']."\n");
       // fwrite($fp, $n['小型英汉词典(80分)']."\n");
       // fwrite($fp, $n['拯救007(80分)']."\n");
       // fwrite($fp, $n['文件目录结构显示(100分)']."\n");
       // fwrite($fp, $n['校园导航问题(100分)']."\n");
       // fwrite($fp, $n['哈夫曼编码/译码器(100分)']."\n");
       // fwrite($fp, $n['熊猫烧香(100分)']."\n");
       // fwrite($fp, $n['全国交通咨询模拟(100分)']."\n");
       // fwrite($fp, $n['LZW压缩器/解压器(180分)']."\n");
       // fwrite($fp, $n['景区旅游信息管理系统(180分)']);
        fclose($fps);
        $fi="cunChu.txt";
        $f=fopen($fi,"a");
        fwrite($f,$_POST["number"].",");
        fwrite($f,$_POST["name"].",");
        fwrite($f,$_POST["class"].",");
        $nums=count($_POST["fav"]);
        for($y=0;$y<$nums;$y++){
        fwrite($f,$_POST["fav"][$y]);
        }
        fwrite($f,"\n");
        fclose($f);
        echo "<font size=7>提交成功</font>,好好做啊!不要马虎,如果现在后悔了,立给我打电话我去后台改,电话:<font size=7>15762217675</font>";
        }
        else
            echo '没有提交内容!';
        echo "<br>click<a href='tijiao.html'>Here</a>To back"; 
        ?>
</body>
</html>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>后台</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=GB2312">
    <meta http-equiv="Refresh" content="5">
    </head>
    <body>
<?php
        $file="cunChu.txt";
        $fp=fopen($file,"r");
        if($fp)
        { echo "<center><h3>计154-2选题情况</h3></center>";
          echo "<table border=\"1\"  align=\"center\" cellpadding=\"0\" cellspacing=\"0\">";
          echo "<tr>
                  <td>学号</td>
                  <td>姓名</td>
                  <td>班级</td>
                  <td>选题</td>
              </tr> ";
           while($con=fgets($fp))
           {
              $m=explode(',',$con);
              echo "<tr>";
              echo "<td>".$m[0]."</td>";
              echo "<td>".$m[1]."</td>";
              echo "<td>".$m[2]."</td>";
              echo "<td>".$m[3]."</td>";
              echo "</tr>";
            }
            echo "</table>";
         }  
         else
        {
          echo "open error!";
         }
        //$fp=fopen($file,"a");
        //$result=file($file);
        //echo $result;
        fclose($fp);
?>
<span style="font-family:arial; color:black;"><center>Copyright &copy;2017 版权所有 洋火(烟台大学) </center></span>
        </body>
    </html>

 

 

1 项目背景 毕业论文选题管理是高校必不可缺的组成部分,一直以来,学院教学管理工作人员使用传统人工的方式进行论文选题的管理,模式多种多样,如:学院指定教师与所带毕业设计的学生的对应关系,由教师和学生联系后确定题目;又如:学院汇总选题后,由各班学生分别进行选题和汇总,学院最终进行毕业选题的分配,这种管理方式存在着许多缺点,如:效率低、容易出错,实时性和互动性不强等,在发挥学生特长、更有效地通过毕业设计强化学生知识体系的目标不吻合,也无法实现学分制下教学管理的要求。 项目开发的《毕业论文网上选题管理系统》能够满足不同特点的学生对课题的不同要求,有利于发挥学生的特点,让学生根据自己的实际爱好,按要求自由选择论文课题,让水平比较高的学生选择难度大一些的课题,水平较高的学生有充分发挥才能的空间,让水平不是特别高的学生选择适合自己的难度适当的题目。通过选择课题,使各类学生的知识水平、实践潜力都得到充分调动,解决问题的潜力得到充分发挥。而且能够充分利用各种教育资源,建立,优化课题组织结构,调动教师与学生教和学的积极性,进一步提高毕业生的质量,提高办学水平,具有十分重要的作用。作为计算机应用的一部分,使用计算机对课题信息进行管理,具有人工管理所无法比拟的优点.例如:操作方便,使用简单,自主性强等。这些优点能够极大地提高学校毕业论文课题管理的质量,进一步提高办学水平和办学效率,有利于贯彻“以人为本”的教育原则,适应当今时代对高等教育的客观要求,培养出更多一专多能的毕业生。 基于网络数据库的学生毕业论文选题系统是在网络环境的支持下,开展学生选题和信息查询的一种先进模式,发挥学生选择课题的自主性,提高学校课题管理效率。网络选题具有其它技术手段无可比拟的优越性,因此世界各国尤其是发达国家无不对此给予高度的重视。发达国家主要从硬件和实践上建立网络选题环境,并建起信息传递式、合作学习模式等几种主要的选题模式。 2 系统特点: 《毕业论文网上选题管理系统》采用B/S结构进行架构,使用ASP作为开发工具,MS SQL为后台数据库,采用了DAO数据库访问技术,这种技术功能强大,使用方便。另外,本系统的主要特色是界面简单友好,操作方便,用户能在很短的时间内掌握其操作。 3 系统功能 根据使用本平台的对象,系统把用户列为四类:系统管理员、院系管理员、教师、学生。根据身份不同,功能也有所相同。下面介绍各类对象在平台上的具体操作。 3.1 系统管理员 3.1.1 基础设置 在基础设置中,系统管理员可以完成系别设置、专业设置、管理员管理、教师信息、学生信息的设置。 系别设置:在此功能模块,系统管理员可以设置本学院下属系,系别设置好以后,可以部署本学院各系的选题管理,把学院的选题管理工作分解至各系,传统的手工选题管理过程一般也是这样分解的; 专业设置:设置本学院的各个专业,导入学生时需要把学生定位于相应的专业; 管理员管理:设置系管理员以后,各系的管理员就可以在系统统一安排下自行安排本系的选题的上报和选题情况的查阅等; 教师信息:系统管理员或者系管理员导入教师信息,教师登录后即可以上报课题信息、查阅选题学生,确定选题学生、上传文件等(任务书等); 学生信息:系统管理员或者系管理员导入学生信息后,学生即可进行课题浏览、选题和文件上传(开题计划、论文初稿等)等; 3.2.2 课题管理 课题浏览:查看各系上报的课题并进行审核; 添加课题:系统管理员帮助计算机操作水平差的教师进行课题上报,一般用不到; 学生选题情况:查看已确定选题的学生及选题及未确定选题的学生; 3.2 系管理员 系管理员的功能与系统管理员相似,所不同的是系管理员的操作数据的权限仅在该系,无法浏览及操作学院其它系的课题信息; 3.3 教师 教师信息:教师登录后可以更改个人信息,这样可以方便学生在选题时了解教师研究内容和方向; 课题浏览:查看教师已上报课题及审核情况,课题必须经系统管理员或系管理员审核通过后,学生方可查阅并进行选题;学生选题后在该功能模块可以查阅已选学生名单及学生信息,并进行该课题学生的确认,实现互动双向选择; 添加课题:课题信息上报给系或者学院管理员,以便教学管理人员进行审核; 课题浏览:查看已确定学生的课题信息,在此功能模块可以进行任务书的上传; 3.4 学生 学生信息:学生登录后可以更改个人信息,这样可以方便教师在确定学生时了解学生的专业兴趣及特长; 课题浏览:查阅学生所在系的课题信息及选择课题; 已选课题:查看学生已选课题信息及教师确定是否同意申请,通过教师审核后,学生可以查看教师上报的任务书等文件,学生可以上传自己的开题计划及论文初稿给教师查阅; 学生选题情况:查看本系已确定选题的学生及对应关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值