資料庫程式設計 – PHP+MySQL 第十三章 專題研討:課程管理系統  上一頁      下一頁

 

13-3 教師課務系統

內容:

  • 13-3-1 系統功能

  • 13-3-2 範例研討:主選單製作

  • 13-3-3 範例研討:教師開課

  • 13-3-4 自我挑戰:教師刪除開課課程

13-3-1 系統功能

吾人規劃『教師課務系統』具有下列功能:

n   依教師姓名,選擇課程名稱、班級開課。(13-3-3 )

n   依教師姓名;班級名稱、課程名稱,管理學生成績。(13-4 )

n   依教師姓名,選擇課程名、班級刪除開課課程 (具有 cascade 功能)(13-3-4 )

13-3-2 範例研討:主選單製作

(A) 系統功能:mTeacher.html

請製作『教師課務系統』的主選單,提供教師開課、停開課程、成績管理使用,期望網頁格式如下: (超連結暫時連結 www.tsnien.idv.tw)

13-3-3 範例研討:教師開課

(A) 系統功能:openCourse

請製作一個可供輸入教師開課的工具,輸入介面有:教師姓名、課程名稱與開課班級(選單方式),期望查詢網頁如下:

執行網頁的結果如下:

 (B) SQL 系統分析

全校各系所開課都登錄於 open_course 資料表內,每筆開課記錄內容是 {open_course_ID, course_ID, class_ID, teacher_ID},除了 open_course_ID 是自動產生的序號外,其餘皆表示開課的課程代碼、班級代碼與教師代碼。插入 oen_course 新課程,各資料表的關係如下:

 

(C) 網頁製作技巧

依照上述 SQL 分析,吾人規劃網頁如下:

(1) 表單網頁:製作三個下拉式選單,每個配合開啟一個資料表提供選擇。(a) 開啟 teachers 表顯示 teacher_IDnamedep_ID,選擇後傳遞 teacher_ID(b) 開啟 all_course 表顯示其內容,選擇後傳遞 course_ID(c) 開啟 classes 表,傳遞 clsaa_ID 給執行網頁。

(2) 執行網頁:收到 3 個訊息後,執行 Insert into 命令,將資料插入,再顯示其內容。

(D) 表單網頁程式範例:openCourse-form.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

<?php

        $select_db = mysqli_connect("localhost", "root", "12345678", "course_db")

                or die("MySQL 伺服器連結失敗 <br>");

        // 查詢所有教師及編碼

        $sql_query1 = "select teacher_ID, name

                   from teachers";

        $result1 = mysqli_query($select_db, $sql_query1);

        // 查詢所有班級與編碼

        $sql_query2 = "select class_ID, class_name

                   from classes";

        $result2 = mysqli_query($select_db, $sql_query2);

        // 查詢所有課程、編碼、必選修、學分數

        $sql_query3 = "select course_ID, course_name, required, credit

                   from all_course";

        $result3 = mysqli_query($select_db, $sql_query3);

        //echo "res3 = $result3 <BR>";

   echo "<p><font size='3'> 教師選擇開課課程與班級 </font></p>";

   echo "<form name='表單' method='post' action='openCourse-action.php'>";

        echo "開課教師姓名:";

        echo "<select name='teacher_ID'>";

        while($row=mysqli_fetch_row($result1)) {

            echo "<option value='$row[0]'> $row[1]($row[0])</option><BR>";

            }

        echo "</select>";

        echo "<BR><BR>";

                echo "開課課程名稱:";

        echo "<select name='course_ID'>";

        while($row=mysqli_fetch_row($result3)) {

            echo "<option value='$row[0]'> $row[1]($row[0])($row[2])

($row[3])</option><BR>";

            }

        echo "</select>";

        echo "<BR><BR>";

                echo "開課班級名稱:";

        echo "<select name='class_ID'>";

        while($row=mysqli_fetch_row($result2)) {

            echo "<option value='$row[0]'> $row[1]($row[0])</option><BR>";

            }

        echo "</select>";

        echo "<BR><BR>";

                echo "<input type='submit' value='送出'>";

        echo "</form>";

    mysql_close($db_link);

?>

(E) 執行網頁程式範例:openCourse-action.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

 

<?php

        $teacher_ID = $_POST["teacher_ID"];

        $course_ID = $_POST["course_ID"];

        $class_ID = $_POST["class_ID"];

        $select_db = mysqli_connect("localhost", "root", "12345678", "course_db")

                or die("MySQL 伺服器連結失敗 <br>");

        // 查詢開課課程教師

    $sql_query = "insert into open_course (course_ID, class_ID, teacher_ID)

                                  values('$course_ID', '$class_ID', '$teacher_ID')";

        $result = mysqli_query($select_db, $sql_query);

        if(!$result) {

                echo "新增開課課程失敗 !! <BR>";

                exit();

        }

        $sql_query = "select *

                                  from open_course

                                  where teacher_ID = '$teacher_ID'";

        $result = mysqli_query($select_db, $sql_query);

        echo "該教師目前開課情形 <BR>";

        $items = array("開課代碼","課程代碼", "班級代碼", "教師代碼");

        echo "<table border = '2'><tr align='center'>";

        // 利用 foreach 迴圈印出陣列

        foreach ($items as $value) {

                echo "<td> $value </td>";

        }

        echo "</tr>";

        while($row=mysqli_fetch_row($result)) {

                echo "<tr>";

                for($j=0; $j<mysqli_num_fields($result); $j++) {

                        echo "<td>$row[$j]</td>";

                }

                echo "</tr>";

        }

        echo "</table>";

        mysql_close($db_link);

?>

13-3-4 自我挑戰:教師刪除開課課程

(A) 系統功能:remCourse

請製作一支可刪除已登錄的開課課程,期望表單網頁如下:

執行網頁的結果如下:

 (B) SQL 系統分析

教師所開的課程都登錄於 open_course 表內,但表內以代碼表示,如何搜尋出所欲刪除的開課代碼(open_course_ID) 是要花費一點功夫,其系統關係如圖 11-2 所示。

11-4 教師開課關連表

 

主講人:粘添壽博士

course_db 關聯圖

 

資料庫程式設計 - PHP+MySQL: