日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

web课设 thinkphp5+mySQL 简易教学管理系统

發(fā)布時(shí)間:2024/3/26 php 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 web课设 thinkphp5+mySQL 简易教学管理系统 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

教學(xué)管理系統(tǒng)

  • 需求
  • 結(jié)果展示
    • 登錄界面
    • 學(xué)生界面
    • 教師界面
    • 管理員界面
  • 數(shù)據(jù)庫設(shè)計(jì)
    • E-R圖
  • 實(shí)現(xiàn)
    • 一、文件創(chuàng)建
    • 二、前端界面
    • 三、數(shù)據(jù)庫設(shè)置
    • 四、控制器
    • 五、前端返回信息處理
      • ajax簡單入門

需求

  • 有登錄界面,不同的用戶登錄后進(jìn)入不同的頁面。
  • 能完成基本數(shù)據(jù)(包括學(xué)生、教師、課程、選課)的增刪改。
  • 根據(jù)指定要求完成查詢。
  • 可以查詢指定姓名的學(xué)生或教師。
  • 可以查找某位教師的授課門數(shù)。
  • 可以查找指定學(xué)生選修的課程列表,包括課程名、任課教師、成績等。
  • 可以查找指定所有課程的平均成績。
  • 結(jié)果展示

    登錄界面

    學(xué)生界面

    教師界面

    管理員界面

    數(shù)據(jù)庫設(shè)計(jì)

    E-R圖

    實(shí)現(xiàn)

    一、文件創(chuàng)建

    在thinkPHP5下的application內(nèi)創(chuàng)建以下三個(gè)文件夾。

    在controller文件夾內(nèi)部新建一個(gè)php文件,作為控制器,命名為Signin.php。

    在model文件夾內(nèi)創(chuàng)建各個(gè)表所對應(yīng)的模型

    在view內(nèi)創(chuàng)建與控制器對應(yīng)的文件夾,命名為signin,在signin文件夾內(nèi)部,創(chuàng)建各個(gè)界面的html文件。以及需要的圖片

    二、前端界面

    以登錄界面為例。
    在調(diào)用控制器函數(shù)時(shí),可以用 {:url(項(xiàng)目名/控制器/函數(shù))},如此調(diào)用。

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title> </head> <style>* {margin: 0;overflow: hidden;padding: 0;}li ul {list-style: none;}input {margin: 3px;outline: none;}input[type=text] {width: 300px;padding: 8px 20px;margin: 4px 0px 4px 0px;display: flex;border: 1px solid #ccc;border-radius: 4px;box-sizing: border-box;background: #F0F0F0;}input[type=text]:focus {width: 300px;padding: 8px 20px;margin: 4px 0px 4px 0px;display: flex;border: 1px solid #ccc;border-radius: 4px;box-sizing: border-box;background: white;}input[type=submit] {width: 300px;background-color:#A6100E;color: white;padding: 10px 20px;margin: 18px 0;border: none;border-radius: 4px;cursor: pointer;}input[type=submit]:active {width: 300px;background-color: #8D0E0C;color: #BEBEBE;padding: 10px 20px;margin: 18px 0;border: none;border-radius: 4px;outline: none;cursor: pointer;}input [type=submit]:after{outline: none;}select{width: 300px;padding: 8px 20px;margin: 4px 0px 4px 0px;border: 1px solid #ccc;border-radius: 4px;box-sizing: border-box;outline: none;}select:active{outline: none;}option {outline: none;}#header {display: flex;background: black;color: whitesmoke;flex-direction: row;}#header ul {display: flex;margin-left: 10%;}#header li{align-items: center;display: flex;font-weight: bold;font-size: 16px;}#header ul li:hover{background-color: #444444;cursor: pointer;}#header ul li:active{background-color: #656565;}#header a{display: inline-block;padding: 0 25px 0 25px;height: 60px;line-height: 60px;font-size: 16px;}#signIn {margin-top: 10%;margin-right: 10%;float: right;color: white;display: flex;flex-direction: column;}#hh{display: flex;}a {direction: none;}a:focus{cursor: pointer;} </style><body background="../../../../../TP/public/curricula/signin/img/02.jfif"><div id="header"><ul><li><a herf="signin">首頁</a></li></ul></div><div><form id="signIn" method="post" action="{:url('curricula/Signin/checkIdentity')}"><p>用戶名</p><input type="text" name="username" id="username" placeholder="username" /><p>密碼</p><input type="text" name="password" id="password" placeholder="password" /><p>身份</p><select name="identity" id="identity" > <option value="s">學(xué)生</option><option value="t">教師</option><option value="a">尊敬的管理員</option></select><input type="submit" name="btn1" value="登錄 login" /></form></div> </body>

    三、數(shù)據(jù)庫設(shè)置

    數(shù)據(jù)庫建表過程略。數(shù)據(jù)庫名稱為student。

    在application文件夾內(nèi)有一個(gè)database.php文件,修改其中的信息,以連接mysql。

    修改以下信息即可。

    // 數(shù)據(jù)庫類型'type' => 'mysql',// 服務(wù)器地址'hostname' => '127.0.0.1',// 數(shù)據(jù)庫名'database' => 'student',// 用戶名'username' => 'root',// 密碼'password' => '168168',

    在完成以上設(shè)置后,可以直接在表對應(yīng)的model內(nèi),使用方法對完成增刪改查(以student為例)
    遇到比較復(fù)雜的情況可以像這樣直接進(jìn)行SQL查詢:

    use think\Model; //必須填上這句,才可使用 $M = $this; $sql = "要執(zhí)行的SQL語句"; $r = $M->execute($sql);

    $r 即為查詢的結(jié)果。

    student.php

    <?phpnamespace app\curricula\model; //curricula可改成你的項(xiàng)目名稱。 use think\Model;class Student extends Model {//根據(jù)學(xué)號(hào)選擇學(xué)生信息public function selStudentById($id) $student = Student::get($id);if ($student) {return true;} elsereturn false;}//增加一名學(xué)生public function addStudent($id, $name, $birth, $sex) //$id,$name,$sex,$brith){if (!$this->selStudentById($id)) {$M = $this;$r = $M->execute("insert into student values('" . (string) $id . "','" . (string) $name . "','" . (string) $birth . "','" . (string) $sex . "')");if ($r)return $this->selAll();elsereturn false;} elsereturn false;}//刪除一名學(xué)生public function delStudent($id) //$id,$name,$sex,$brith){if ($this->selStudentById($id)) {$M = $this;$sql = "delete from student where s_id='" . (string) $id . "'";$r = $M->execute($sql);if ($r) {return $this->selAll();} elsereturn false;}elsereturn false;}//更新學(xué)生信息public function uptStudent($id, $name, $birth, $sex) //$id,$name,$sex,$brith){$flag = false;$M = $this;if ($this->selStudentById($id)) {if ($name && $name != '') {$sql = "update student set s_name='" . (string) $name . "'where s_id='" . (string) $id . "'";$r = $M->execute($sql);$flag = true;}if ($sex && $sex != '') {$sql = "update student set s_sex='" . (string) $sex . "'where s_id='" . (string) $id . "'";$r = $M->execute($sql);$flag = true;}if ($birth && $birth != '') {$sql = "update student set s_birth='" . (string) $birth . "'where s_id='" . (string) $id . "'";$r = $M->execute($sql);$flag = true;}if ($flag)return $this->selAll();elsereturn 2;} elsereturn 1;}//根據(jù)學(xué)生姓名查詢學(xué)生信息public function selStudentByName($name) //$id,$name,$sex,$brith){$M = $this;$r = $M->query("select * from student where s_name='" . $name."'");if ($r)return $r;elsereturn false;}//查詢?nèi)啃畔?/span>public function selAll(){$M = $this;$r = $M->query("select * from student");if ($r) {return $r;} elsereturn false;} }

    四、控制器

    注意點(diǎn):

    • 命名空間 namespace app\項(xiàng)目名\控制器文件夾名
    • 必須引入幾個(gè)模型的位置,
    • 返回時(shí)使用json()包裝數(shù)據(jù)
    • 調(diào)用界面時(shí)使用view()函數(shù)
    <?phpnamespace app\curricula\Controller;use think\Controller; use think\Model; use app\curricula\model\Student; use app\curricula\model\Teacher; use app\curricula\model\Users; use app\curricula\model\Course; use app\curricula\model\Score; use think\migration\command\migrate\Status;define('APP_DEBUG', true);class Signin extends Controller {public function signin(){return view("signin");}public function student(){return view("student");}public function teacher(){return view("teacher");}public function admin(){return view("admin");}public function addScore($id, $id2, $s){return (new \app\curricula\model\Score())->addScore($id, $id2, $s);}public function checkIdentity(){$username = $_POST['username'];$password = $_POST['password'];$identity = $_POST['identity'];$r = (new \app\curricula\model\Users())->check($username, $password,$identity);$data = array("status" => false,"info" => array());if (!$r) {$this->redirect('signin');}if ($identity == 's')$this->redirect('student');else if ($identity == 't')$this->redirect('teacher');else if ($identity == 'a')$this->redirect('admin');else$this->redirect('signin');}public function selScoreCT() //$id,$name,$sex,$brith){$id = $_GET['id'];$r = (new \app\curricula\model\Score())->selScoreCT($id);$data = array("status" => false,"info" => array());if ($data == false) {return (json($data));} else {$data["status"] = true;$data["info"] = $r;return (json($data));}}public function deladdScore(){$ch = $_GET["ch"];$sid = $_GET["sid"];$cid = $_GET["cid"];if ($ch == 'del') {$r = (new \app\curricula\model\Score())->stuDelScore($sid, $cid);$data = array("status" => false,"info" => array("ERROR"));if ($r == -1) {$data["status"] = -1;$data["info"] = "成績已登陸,別想改啦";return (json($data));}if ($r == false) {return (json($data));} else {$data["status"] = true;$data["info"] = $r;return (json($data));}} else if ($ch == 'add') {$r = (new \app\curricula\model\Score())->stuAddScore($sid, $cid);$data = array("status" => false,"info" => -1);if ($r == -2) {$data["status"] = -2;$data["info"] = "你已選擇這門課程";return (json($data));}if ($r == -1) {$data["status"] = -1;$data["info"] = "沒有這門課程";return (json($data));}if ($r == -3) {$data["status"] = -3;$data["info"] = "插入失敗";return (json($data));}else {$data["status"] = true;$data["info"] = $r;return (json($data));}}}//選擇課程信息public function selCourseMS(){$tid = $_GET['tid'];$r = (new \app\curricula\model\Course())->countCourse($tid);$data = array("status" => false,"info" => array(),"cnum" => '0');if (!$r || $r[0]['c_num'] == 0)return json($data);else {$data["cnum"] = (string) $r[0]['c_num'];$r = (new \app\curricula\model\Course())->selCourse($tid);$data["info"] = $r;$data["status"] = true;return json($data);}}public function selTeacherId(){$tname = $_GET['name'];$r = (new \app\curricula\model\Teacher())->selTeacherId($tname);$data = array("status" => false,"info" => "查無此人");if (!$r) {return json($data);} else {$data["info"] = $r;$data["status"] = true;return json($data);}}public function selCourseAVG(){$c = $_GET['cid'];$cid = '';for ($i = 0; $i < count($c); $i++) {$cid .= "'" . $c[$i] . "'";if ($i != count($c) - 1) {$cid .= ',';}}$r = (new \app\curricula\model\Course())->selCourseAVG($cid);$data = array("status" => false,"info" => "無課程信息");if (!$r) {return json($data);} else {$data["info"] = $r;$data["status"] = true;return json($data);}}public function uptScore(){$sid = $_GET['sid'];$cid = $_GET['cid'];$sc = $_GET['sc'];$r = (new \app\curricula\model\Score())->uptScore($sid, $cid, $sc);$data = array("status" => false,"info" => "無課程信息");if (!$r) {return json($data);} else {$data["info"] = $r;$data["status"] = true;return json($data);}}public function addStudent($sid, $sname, $sbth, $sex){$r = (new \app\curricula\model\Student())->addStudent($sid, $sname, $sbth, $sex);$data = array("status" => false,"info" => "失敗");if ($r == false) {return json($data);} else {$data["info"] = $r;$data["status"] = true;return json($data);}}// studentpublic function delStudent($sid){$r = (new \app\curricula\model\Student())->delStudent($sid);$data = array("status" => false,"info" => "失敗");if ($r == false) {return json($data);} else {$data["info"] = $r;$data["status"] = true;return json($data);}}public function uptStudent($id, $name, $sbth, $sex){$r = (new \app\curricula\model\Student())->uptStudent($id, $name, $sbth, $sex);$data = array("status" => false,"info" => "失敗");if ($r == 1 || $r == 2) {$data["status"] = $r;return json($data);} else {$data["info"] = $r;$data["status"] = true;return json($data);}}//teacherpublic function addTeacher($id, $name){$r = (new \app\curricula\model\Teacher())->addTeacher($id, $name);$data = array("status" => false,"info" => "失敗");if ($r == false) {return json($data);} else {$data["info"] = $r;$data["status"] = true;return json($data);}}public function delTeacher($id){$r = (new \app\curricula\model\Teacher())->delTeacher($id);$data = array("status" => false,"info" => "失敗");if ($r == false) {return json($data);} else {$data["info"] = $r;$data["status"] = true;return json($data);}}public function uptTeacher($id, $name){$r = (new \app\curricula\model\Teacher())->uptTeacher($id, $name);$data = array("status" => false,"info" => "失敗");if ($r == 1 || $r == 2) {$data["status"] = $r;return json($data);} else {$data["info"] = $r;$data["status"] = true;return json($data);}}//Coursepublic function addCourse($cid, $name, $tid){$r = (new \app\curricula\model\Course())->addCourse($cid, $name, $tid);$data = array("status" => false,"info" => "失敗");if ($r == false) {return json($data);} else {$data["info"] = $r;$data["status"] = true;return json($data);}}public function delCourse($id){$r = (new \app\curricula\model\Course())->delCourse($id);$data = array("status" => false,"info" => "失敗");if ($r == false) {return json($data);} else {$data["info"] = $r;$data["status"] = true;return json($data);}}public function uptCourse($cid, $name, $tid){$r = (new \app\curricula\model\Course())->uptCourse($cid, $name, $tid);$data = array("status" => false,"info" => "失敗");if ($r == 1 || $r == 2) {$data["status"] = $r;return json($data);} else {$data["info"] = $r;$data["status"] = true;return json($data);}}public function studentADU(){$ch = $_GET['ch'];$sid = $_GET['sid'];$sname = $_GET['sname'];$sbth = $_GET['sbth'];$sex = $_GET['sex'];if ($ch == 'add') {return $this->addStudent($sid, $sname, $sbth, $sex);} else if ($ch == 'del') {return $this->delStudent($sid);} else if ($ch == 'upt') {return $this->uptStudent($sid, $sname, $sbth, $sex);} elsereturn $data = array("status" => false,"info" => "失敗");}public function teacherADU(){$ch = $_GET['ch'];$id = $_GET['tid'];$name = $_GET['tname'];if ($ch == 'add') {return $this->addTeacher($id, $name);} else if ($ch == 'del') {return $this->delTeacher($id);} else if ($ch == 'upt') {return $this->uptTeacher($id, $name);} elsereturn $data = array("status" => false,"info" => "失敗");}public function courseADU(){$ch = $_GET['ch'];$cid = $_GET['cid'];$name = $_GET['cname'];$tid = $_GET['tid'];if ($ch == 'add') {return $this->addCourse($cid, $name, $tid);} else if ($ch == 'del') {return $this->delCourse($cid);} else if ($ch == 'upt') {return $this->uptCourse($cid, $name, $tid);} elsereturn $data = array("status" => false,"info" => "失敗");}public function selAllCourseAVG(){$r = (new \app\curricula\model\Course())->selAllCourseAVG();$data = array("status" => false,"info" => "無課程信息");if (!$r) {return json($data);} else {$data["info"] = $r;$data["status"] = true;return json($data);}}public function selStudentByName(){$sname = $_GET['sname'];$r = (new \app\curricula\model\Student())->selStudentByName($sname);$data = array("status" => false,"info" => "無信息");if (!$r) {return json($data);} else {$data["info"] = $r;$data["status"] = true;return json($data);}}public function selTeacherByName(){$tname = $_GET['tname'];$r = (new \app\curricula\model\Teacher())->selTeacherByName($tname);$data = array("status" => false,"info" => "無信息");if (!$r) {return json($data);} else {$data["info"] = $r;$data["status"] = true;return json($data);}} }

    五、前端返回信息處理

    前端使用ajax提交并顯示數(shù)據(jù)

    ajax簡單入門

    //需引入jquery <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script> function func() {$.ajax({url: "delXXX", //后端函數(shù)名type: 'GET', //方式GET or POSTdata: { //要交由后端處理的數(shù)據(jù),用逗號(hào)間隔'sid': $("#sid").val(),'cid': $("#cid").val()},success: function (data) //成功返回?cái)?shù)據(jù),data是服務(wù)器端返回的字符串?dāng)?shù)據(jù){ // .......your code}}); //分號(hào)結(jié)束}

    以學(xué)生按姓名查詢信息為例:

    function inquiryStuByName() {if ($("#sname").val() == '') {alert("Empty Input!");return;}$.ajax({url: "selStudentByName",type: 'GET',data: {"sname": $("#sname").val()},success: function (data) { if (!data.status)alert("ERROR");else {var str = style;str += "<Table class='pure-table pure-table-bordered'>";str += "<tr> <td>學(xué)號(hào)</td> <td>姓名</td><td>出生日期</td><td>性別</td></tr>";for (var i = 0; i < data.info.length; i++) {str += '<tr>';str += ("<td>" + data.info[i].s_id + "</td>");str += ("<td>" + data.info[i].s_name + "</td>");str += ("<td>" + data.info[i].s_birth + "</td>");str += ("<td>" + data.info[i].s_sex + "</td>");str += '</tr>';}str += "</Table>"$("#show").html(str);}}});}

    需要完整代碼可戳我。

    總結(jié)

    以上是生活随笔為你收集整理的web课设 thinkphp5+mySQL 简易教学管理系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。