Создание сайта "Деканат"
Создание сайта "Деканат"
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное образовательное учреждение высшего профессионального образования "Чувашский государственный университет им. И.Н. Ульянова" Факультет информатики и вычислительной техники Кафедра "Информационно-вычислительных систем" Дисциплина "Базы данных" Пояснительная записка к курсовой работе Выполнил: студент гр. ИВТ 11-06 Замков А.А. Проверил: Буланкина Е.Ю. Чебоксары - 2009 Содержание 1. Задание 2. Анализ. Предметная область 2.1 Описание предметной области (уточненной у преподавателя). Перечень и описание функций приложения обработки базы данных 2.2 Перечень и описание сущностей и атрибутов базы данных 2.3 Перечень и описание всех атрибутов базы данных. 3. Проектирование. Нормализация базы данных. Схема данных 3.1 Пошаговое описание нормализации базы данных (методом ER-диаграмм) 3.2 Схема данных 3.3 Перечень и описание таблиц и их полей (с указанием типов данных и ограничений) в сводной таблице 4. Программная часть. Руководство программиста 4.1 Входные и выходные данные 5. Сопровождение. Руководство пользователя 6. Список использованной литературы 7. Приложение 1. Задание Деканат В деканате храниться информация о студентах, специальностях, предметах факультета и преподавателях, ведущих эти предметы, а также данные об успеваемости студентов, с целью формирования списков должников и отчисленных. Необходимо производить статистику успеваемости по группам, специальностям, преподавателям и всему факультету в целом. Нужно также распечатывать ведомости и прочие деканатские бумаги. Студенты проходят практику на фирмах и предприятиях. О выпускниках по возможности нужно хранить сведения о трудоустройстве и проводить статистику по всему деканату и по специальностям в отдельности на предмет трудоустройства выпускников 2. Анализ. Предметная область 2.1 Описание предметной области. Перечень и описание функций приложения обработки базы данных 1. Хранение информации о студентах, группах, предметах, преподавателях, ведущих соответствующие предметы. 2. Хранение и редактирование информации об учебном плане, и расписании занятий. 3. Занесение и хранение информации о прохождении студентами практики на предприятиях. 4. Ведение журнала успеваемости студентов в рамках установленного учебного плана 5. Формирование списков должников. 6. Простановка оценок в журнал успеваемости за определенные занятия. 2.2 Перечень и описание сущностей базы данных Студенты. Каждый студент имеет уникальный номер зачетной книжки, ФИО и обязательно числится в какой-либо группе. Группы. Экземпляр сущности определяется уникальным номером и соответствует определенной специальности. Предметы. За каждым предметом закреплен соответствующий код и название. Специальности. Имеют уникальный код и наименование. Преподаватели. Хранится Уникальный номер преподавателя и ФИО. Виды занятий. Атрибуты - уникальный код и наименование вида занятия. Может существовать несколько занятий одного вида. Для решения этой проблемы после нормализации введем в искусственный атрибут Номер вида занятия в отношения, в которых это необходимо. Предприятия. О предприятиях в базе хранится название и уникальный номер. 2.3 Перечень и описание всех атрибутов базы данных |
1 | StudID | Номер зачетной книжки студента | | 2 | GroupNum | Номер группы | | 3 | StudName | ФИО студента | | 4 | EntID | Номер предприятия | | 5 | EntName | Название предприятия | | 6 | SpecCode | Код специальности | | 7 | SpecName | Название специальности | | 8 | TchID | Уникальный номер преподавателя | | 9 | TchName | ФИО преподавателя | | 10 | SubjID | Уникальный код дисциплины | | 11 | SubjName | Название дисциплины | | 12 | LTypeID | Код вида занятия | | 13 | LTypeName | Название вида занятия | | 14 | LNumb | Номер определенного вида занятия | | 15 | Mark | Оценка | | |
3. Проектирование. Нормализация базы данных. Схема данных 3.1 Пошаговое описание нормализации базы данных (методом ER-диаграмм) Нормализуем каждую связь используя соответствующие правила нормализации ER-диаграмм. При нормализации связи "получать оценки" и связи соответствия Видов занятий Предметам добавим в отношение искусственный атрибут LNumb (номер занятия определенного вида) и Mark (оценка в журнале). В результате получим готовую схему данных. 3.2. Схема данных Students(StudID, GroupNum, StudName, PractEntID,) Groups(GroupNum, SpecCode) Specializations(SpecCode, SpecName) Enterprises(EntID, EntName) Teachers(TchID, TchName) Subjects(SubjID, SubjName) LessTypes(LTypeID, LTypeName) Work(EntID, StudID) TimeTable(SubjID, TchID, GroupNum, LTypeID) Plan(SubjID, LTypeID, LNumb) MarkJournal(SubjID, LTypeID, LNumb, StudID, Mark) 3.3 Перечень и описание таблиц и их полей в сводной таблице |
Students | | StudID | Номер зачетной книжки студента | int | | GroupNum | Номер группы | Int | | StudName | ФИО студента | Varchar(30) | | PractEntID | Номер предприятия прохождения практики | Int | | Groups | | | GroupNum | Номер группы | Int | | SpecCode | Код специальности | Int | | Specializations | | | SpecCode | Код специальности | Int | | SpecName | Название специальности | Varchar(30) | | Enterprises | | | EntID | Номер предприятия | Int | | EntName | Название предприятия | Varchar(30) | | Teachers | | | TchID | Уникальный номер преподавателя | Int | | TchName | ФИО преподавателя | Varchar(30) | | Subjects | | | SubjID | Уникальный код дисциплины | int | | SubjName | Название дисциплины | Varchar(30) | | LessTypes | | | LTypeID | Код вида занятия | int | | LTypeName | Название вида занятия | Varchar(30) | | Work | | | EntID | Номер предприятия | int | | StudID | Номер зачетной книжки студента | Varchar(30) | | TimeTable | | | SubjID | Уникальный код дисциплины | int | | TchID | Уникальный номер преподавателя | int | | GroupNum | Номер группы | int | | LTypeID | Код вида занятия | int | | Plan | | | SubjID | Уникальный код дисциплины | int | | LTypeID | Код вида занятия | int | | LNumb | Номер определенного вида занятия | int | | MarkJournal | | | SubjID | Уникальный код дисциплины | int | | LTypeID | Код вида занятия | int | | LNumb | Номер определенного вида занятия | int | | StudID | Номер зачетной книжки студента | int | | Mark | Оценка | int | | |
4. Программная часть. Руководство программиста 4.1 Входные и выходные данные Словесное описание Стартовая страница содержит ряд ссылок, открывающих соответствующие страницы <a href="index.php">На главную </a> | <a href="studlist.php"> Список студентов </a> | <a href="speclist.php"> Специальности </a> | <a href="subj-tch.php"> Дисциплины </a> | <a href="plan.php"> Учебный план </a> Страница "Список студентов" (studlist.php) отображает список студентов, внесенных в базу: <?php require("connect.php"); $result = mysql_query("SELECT * FROM Students ORDER BY StudID",$db); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1 align=center >\n"; echo "<tr><td><strong>Номер</strong></td><td><strong>ФИО</strong></td><td><strong>Группа</strong></td></tr>\n"; do { printf("<tr><td>%d</td><td>%s</td><td>%d</td></tr>\n", $myrow["StudID"], $myrow["StudName"], $myrow["GroupNum"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } else { echo "Sorry, no records were found!"; } mysql_close($db); ?> На странице также реализована возможность занесения новых записей. Кнопка "Добавить студента" <FORM name=mean action=studlist.php method=post> <br><INPUT type=submit value="Добавить студента" name=new1><BR><BR></FORM> вызывает форму с полями для введения новой записи <FORM name="mean" method="post" action=studlist.php> <br> ФИО:<input type="text" name = "stname"> <br> Номер:<input type="text" name = "stnum"> <br> Группа:<input type="text" name = "grnum"> <br> <input type="submit" name = "stnew" value="Добавить"><br> </FORM> Обработчик кнопки "добавить" вносит изменения в базу: <?php } if (@$stnew) { require("connect.php"); mysql_query("INSERT INTO Students (StudID,StudName,GroupNum) VALUES ('$stnum','$stname','$grnum')"); mysql_query("INSERT INTO MarkJournal(SubjID, LTypeID, StudID, LNumb) SELECT SubjID, LTypeID, StudID, LNumb FROM Plan JOIN Students WHERE StudID = '$stnum' "); $result = mysql_query("SELECT * FROM Students WHERE StudName LIKE '%$stname%'"); ?> <div align=center><H4>Добавлена запись:</H4></div><br> <div align=center><table border = 1> <tr><td> Номер </td> <td> ФИО </td> <td> Группа </td> </tr> <?php while ($myrow = mysql_fetch_array($result)) { //tr-строка,td-ячейка,H1-1-й уровень printf("<tr><td><H7>%d",$myrow["StudID"],"</h7></td></tr>"); printf("<td>%s",$myrow["StudName"],"</tr>"); printf("<td>%s",$myrow["GroupNum"],"</tr>"); } } ?> </table> Страница "Учебный план" (plan.php) отображает список работ предусмотренных учебным планом используя соединение таблицы Plan с необходимыми справочниками. <? require("connect.php"); $result = mysql_query("select SubjName, LTypeName, LNumb from (Plan join Subjects on Plan.SubjID = Subjects.SubjID) join LessTypes on Plan.LTypeID = LessTypes.LTypeID",$db); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1 align=center>\n"; echo "<tr><td><strong>Предметы</strong></td><td><strong>Вид занятия</strong></td><td><strong>Номер</strong></td></tr>\n"; do { printf("<tr><td>%s</td><td>%s</td><td>%d</td></tr>\n", $myrow["SubjName"], $myrow["LTypeName"], $myrow["LNumb"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } else { echo "Sorry, no records were found!"; } mysql_close($db); ?> Кнопка "внести изменения" <FORM name=mean action=plan.php method=post> <br> <INPUT type="submit" value="Внести изменения" name=newwrk></FORM> вызывает форму с полями для внесения добавляемых/удаляемых полей которая содержит 2 кнопки для соответствующих действий Добавление: if (@$addwrk) { require("connect.php"); $result = mysql_query("SELECT SubjID FROM Subjects WHERE SubjName LIKE '$sbjname'"); $tmpsubj = mysql_fetch_array($result); $tmpsubjid = $tmpsubj["SubjID"]; $result = mysql_query("SELECT LTypeID FROM LessTypes WHERE LTypeName LIKE '$lsn'"); $tmplsn = mysql_fetch_array($result); $tmplsnid = $tmplsn["LTypeID"]; mysql_query("INSERT INTO Plan (SubjID, LTypeID, LNumb) VALUES ('$tmpsubjid', '$tmplsnid', '$lnum')"); mysql_close($db); require("connect.php"); mysql_query("INSERT INTO MarkJournal (SubjID, LTypeID, StudID, LNumb) SELECT SubjID, LTypeID, StudID, LNumb FROM Plan JOIN Students WHERE SubjID = $tmpsubjid AND LTypeID = $tmplsnid AND LNumb = $lnum "); mysql_close($db); } Удаление: if (@$delwrk) { require("connect.php"); $result = mysql_query("SELECT SubjID FROM Subjects WHERE SubjName LIKE '$sbjname'"); $tmpsubj = mysql_fetch_array($result); $tmpsubjid = $tmpsubj["SubjID"]; $result = mysql_query("SELECT LTypeID FROM LessTypes WHERE LTypeName LIKE '$lsn'"); $tmplsn = mysql_fetch_array($result); $tmplsnid = $tmplsn["LTypeID"]; mysql_query("DELETE FROM MarkJournal WHERE SubjID = $tmpsubjid AND LTypeID = $tmplsnid AND LNumb = $lnum"); mysql_query("DELETE FROM Plan WHERE SubjID = $tmpsubjid AND LTypeID = $tmplsnid AND LNumb = $lnum"); mysql_close($db); } Страница "дисциплины" (файл subj-tch.php) отображает список предметов и соответственно преподавателей который их ведут путем соединения таблицы TimeTable с необходимыми справочниками. require("connect.php"); $result = mysql_query("SELECT DISTINCT Subjects.SubjName, Teachers.TchName FROM (Teachers JOIN TimeTable ON Teachers.TchID = TimeTable.TchID ) JOIN Subjects ON Subjects.SubjID=TimeTable.SubjID",$db); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1 align=center>\n"; echo "<tr><td><strong>Предметы</strong></td><td><strong>Преподаватели</strong></td></tr>\n"; do { printf("<tr><td>%s</td><td>%s</td></tr>\n", $myrow["SubjName"], $myrow["TchName"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } Страница "Специальности" (speclist.php) отображает список специальностей факультета путём простого запроса на выборку из соответствующей таблицы. require(connect.php); $result = mysql_query("SELECT * FROM Specializations",$db); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1 align=center>\n"; echo "<tr><td>Код</td><td>Наименование</td></tr>\n"; do { printf("<tr><td>%d</td><td>%s</td></tr>\n", $myrow["SpecID"], $myrow["SpecName"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } else { echo "Sorry, no records were found!"; } mysql_close($db); Перечисленные страницы связаны между собой одинаковым набором ссылок, позволяющих просматривать их в любом порядке. Ссылка <a href="index.php"> На главную </a> возвращает на стартовую страницу. Далее стартовая страница содержит 4 формы, реализующие требуемые функции. При нажатии на кнопку "Просмотр журнала" вызывается страница выбора журнала по отдельному предмету (jrnlst.php) <form name="mean" action="jrnlst.php" method="post"> <br> <br> <br> <div align="center"> <input type="submit" name="jrn" value="Просмотр журнала"> </div> </form> При нажатии кнопки "Успеваемость студента" открывается страница выбора студента studtabchs.php <form name="mean" action="studtabchs.php" method="post"> <br> <div align="center"> <input type="submit" name="tbl" value="Успеваемость студента"> </div> </form> При нажатии кнопки "Список неуспевающих" выводится страница worst.php <form name="mean" action="worst.php" method="post"> <br> <div align="center"> <input type="submit" name="wrst" value="Список неуспевающих"> </div> </form> "Направление на практику" - вызов страницы просмотра назначения студентам предприятий для прохождения практики. <form name="mean" action="practice.php" method="post"> <br> <div align="center"> <input type="submit" name="prct" value="Направление на практику"> </div> </form "Просмотр журнала" (jrnlst.php) Выводится таблица дисциплин содержащая ссылки для выбора предмета: require("connect.php"); $result = mysql_query("select * FROM Subjects"); $link_edit = "jrnsubj.php"; print ("<div align=center><H3>Список журналов по предметам:</H3></div><br>"); print ("<div align=center><table border = 1>"); print ("<tr><td><strong>Номер</strong></td><td><strong>Предмет</strong></td></tr>\n"); if ($myrow = mysql_fetch_array($result)) { do { printf("<tr><td>%d</td><td><a href=\"%s?SubjID=%d\">%s </a></td></tr>\n",$myrow["SubjID"], $link_edit, $myrow["SubjID"], $myrow["SubjName"],"</div>"); } while ($myrow = mysql_fetch_array($result)); } Через ссылки происходит обращение к странице jrnsubj.php. Конструкция <a href=\"%s?SubjID=%d\">%s </a> Передает параметр SubjID который определяет содержимое вызываемой страницы. jrnsubj.php. Выводится список работ по выбранному предмету в соответствии с учебным планом. Список организован в виде ссылок на журнал оценок по определенной работе. require("connect.php"); $result = mysql_query ("SELECT * FROM Plan JOIN LessTypes ON Plan.LTypeID = LessTypes.LTypeID WHERE Plan.SubjID = $SubjID",$db); $link_edit="journal.php"; print ("<div align=center><H3>Список работ:</H3></div><br>"); print ("<div align=center><table border = 1>"); print ("<tr><td>Работа</td></tr>\n"); if ($myrow = mysql_fetch_array($result)) { do { printf("<tr><td><a href=\"%s?SubjID=%d<ypeID=%d&LNumb=%d\">%s %d</a></td></tr>\n", $link_edit, $myrow["SubjID"], $myrow["LTypeID"], $myrow["LNumb"], $myrow["LTypeName"], $myrow["LNumb"], "</div>"); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } mysql_close($db); При открытии ссылки странице journal.php передается 3 параметра <a href=\"%s?SubjID=%d<ypeID=%d&LNumb=%d\">%s %d</a> это необходимо для выборки нужной информации из журнала. Journal.php В зависимости от переданных параметров отображается лист журнала по определенной работе: require("connect.php"); $result = mysql_query("SELECT StudName, Mark FROM MarkJournal JOIN Students ON MarkJournal.StudID = Students.StudID WHERE SubjID = $SubjID AND LTypeID = $LTypeID AND LNumb = $LNumb"); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1 align=center >\n"; echo "<tr><td><strong>ФИО</strong></td><td><strong>Оценка</strong></td></tr>\n"; do { printf("<tr><td>%s</td><td>%d</td></tr>\n", $myrow["StudName"], $myrow["Mark"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } mysql_close($db); Здесь же происходит занесение оценок в журнал. <div align="center"> <form name="mean" action=<?php echo 'journal.php?SubjID='; echo $SubjID; echo'<ypeID='; echo $LTypeID; echo '&LNumb='; echo $LNumb; ?> method="post"> <input type="submit" name="setmrk" value="Поставить оценку"> </form> </div> <?php if (@$setmrk) { ?> <div align="center"> <FORM name="mean" method="post" action=<?php echo 'journal.php?SubjID='; echo $SubjID; echo'<ypeID='; echo $LTypeID; echo '&LNumb='; echo $LNumb; ?> > <br> ФИО:<input type="text" name = "stname"> <br> Оценка:<input type="text" name = "mark"> <br> <input type="submit" name = "newmrk" value="Внести в журнал"><br> </FORM> </div> <?php } if (@$newmrk) { require("connect.php"); $result = mysql_query("SELECT StudID FROM Students WHERE StudName LIKE '%$stname%' "); $tmpstud = mysql_fetch_array($result); $tmpstudid = $tmpstud["StudID"]; mysql_query("UPDATE MarkJournal SET Mark = $mark WHERE SubjID = $hidsbjid AND LTypeID = $hidltpid AND StudID = $tmpstudid AND LNumb = $hidlnum"); } ?> Страница "Успеваемость студента" (файл studtabchs.php) Отображается список студентов организованный в виде ссылок. При выборе ссылки происходит передача соответствующего параметра на страницу studtab.php require("connect.php"); $result = mysql_query("SELECT * FROM Students"); $link_edit = "studtab.php"; print ("<div align=center><H3>Список студентов:</H3></div><br>"); print ("<div align=center><table border = 1>"); print ("<tr><td><strong>Номер</strong></td><td><strong>ФИО</strong></td><td><strong>Группа</strong></td></tr>\n"); if ($myrow = mysql_fetch_array($result)) { do { printf("<tr><td>%d</td><td><a href=\"%s?StudID=%d\">%s </a></td><td>%d</td></tr>\n",$myrow["StudID"], $link_edit, $myrow["StudID"], $myrow["StudName"], $myrow["GroupNum"],"</div>"); } while ($myrow = mysql_fetch_array($result)); } В зависимости от переданного параметра, на странице "Общая успеваемость студента" (studtab.php) отображается выборка из журнала, содержащая все оценки выбранного студента. require("connect.php"); $result = mysql_query("SELECT SubjName, LTypeName, LNumb, Mark FROM ((MarkJournal JOIN Students ON MarkJournal.StudID = Students.StudID) JOIN Subjects ON MarkJournal.SubjID = Subjects.SubjID) JOIN LessTypes ON MarkJournal.LTypeID = LessTypes.LTypeID WHERE Students.StudID = $StudID",$db); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1 align=center >\n"; echo "<tr><td><strong>Предмет</strong></td><td><strong>Работа</strong></td><td><strong>Номер</strong></td><td><strong>Оценка</strong></td></tr>\n"; do { printf("<tr><td>%s</td><td>%s</td><td>%d</td><td>%d</td></tr>\n", $myrow["SubjName"], $myrow["LTypeName"], $myrow["LNumb"], $myrow["Mark"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } mysql_close($db); Страница "Практика" (practice.php). Выведение информации из соединения таблиц "практика" и "студенты". require("connect.php"); $result = mysql_query("SELECT StudID, StudName, GroupNum, EntName FROM Students LEFT OUTER JOIN Enterprises ON Students.PractEntID = Enterprises.EntID",$db); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1 align=center >\n"; echo "<tr><td><strong>Номер</strong></td><td><strong>ФИО</strong></td><td><strong>Группа</strong></td><td><strong>Практика</strong></td></tr>\n"; do { printf("<tr><td>%d</td><td>%s</td><td>%d</td><td>%s</td></tr>\n", $myrow["StudID"], $myrow["StudName"], $myrow["GroupNum"], $myrow["EntName"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } else { echo "Sorry, no records were found!"; } mysql_close($db); Модификация таблицы "практика" (Назначение студенту предприятия) <div align="center"> <FORM name=mean action=practice.php method=post> <br><INPUT type=submit value="Назначить предприятие" name=new2><BR><BR></FORM> </div> </div> <div align=center> <?php if (@$new2) { ?> <FORM name="mean" method="post" action=practice.php> <br> ФИО:<input type="text" name = "stname"> <br> Предприятие:<input type="text" name = "ent"> <br> <input type="submit" name = "entedit" value="Назначить"><br> </FORM> </div> <?php } if (@$entedit) { require("connect.php"); $sql = mysql_query("SELECT EntID FROM Enterprises WHERE EntName LIKE '%$ent%'"); $entid = mysql_fetch_array($sql); $tmp = $entid["EntID"]; mysql_query("UPDATE Students SET PractEntID = $tmp WHERE StudName LIKE '%$stname%' "); $result = mysql_query("SELECT StudID, StudName, GroupNum, EntName FROM Students LEFT OUTER JOIN Enterprises ON Students.PractEntID = Enterprises.EntID WHERE StudName LIKE '%$stname%'"); ?> Описание функций mysql_connect - подключение к MySQL; mysql_select_db - выбор базы данных; require("connect.php") - подключение к файлу; print() - вывод информации на экран; mysql_query () - возвращение результата запроса; mysql_fetch_array () - получение результата запроса; echo - вывод информации; 5. Сопровождение. Руководство пользователя Описание Чтобы ознакомиться с некоторыми исходными данными или внести в них изменения следует воспользоваться ссылками в верхней части страницы. Ссылка "На главную" присутствует на каждой странице для возвращения к стартовой странице. Чтобы ознакомиться со списком занесенных в базу студентов необходимо выбрать ссылку "Список студентов" для перехода к соответствующей странице. Для редактирования списка нажмите кнопку , после чего будет предложена форма для внесения новой записи. При успешном добавлении новой записи будет выведена строка, добавленная в таблицу. Страница "Дисциплины" отображает список имеющихся в базе данных дисциплин и преподавателей, которые их ведут. Страница "Специальности" отображает список специальностей. Страница "Учебный план" выводит на экран список работ, предусмотренных учебным планом по каждой дисциплине. Имеется возможность внесения изменений в текущий план. Для редактирования необходимо нажать кнопку , после чего будет предложена форма для указания записи, подлежащей внесению в базу или удалению из нее: Подтверждение необходимого действия производится соответствующей кнопкой. Изменения отражаются также в журнале успеваемости. Для просмотра журнала по предмету необходимо нажать кнопку на главной странице. Будет выведена таблица доступных предметов, в которой нужно выбрать требуемую ссылку. Далее будет предложен список работ по выбранному предмету в соответствии с учебным планом, организованный в виде ссылок. Для просмотра журнала по какой-либо из работ следует выбрать соответствующую ссылку. Для простановки оценок следует нажать кнопку , после чего будет предложена форма для введения данных. Для подтверждения указанной оценки нажать кнопку "Внести в журнал" Для просмотра общей успеваемости отдельного студента необходимо обратиться к списку студентов, нажав на кнопку . Далее выбрать из списка студента, нажав на соответствующую ссылку. Будет выведена таблица успеваемости выбранного студента. При нажатии кнопки на стартовой странице будет выведен список студентов, не сдавших ни одной работы. Для просмотра и редактирования сведений о прохождении студентами практики необходимо нажать кнопку на стартовой странице. Будет выведена таблица, отражающая текущие сведения о практике. Для редактирования таблицы нажмите кнопку , после чего в предложенной форме укажите ФИО студента и назначаемое предприятие. 6. Список использованной литературы 1. Андрей Шкрыль. Программируем для web-сайта. "БХВ-Петербург", Санкт-Петербург, 2006. 2. Т.Карпова. Базы данных. Модели, разработка, реализация. "Питер", Санкт-Петербург, 2002. 3. Алексей Гончаров. Самоучитель HTML. 4. А. Качанов, В. Ткаченко, А. Головин. Букварь по PHP и MySQL Версия 1.1 (от 16.05.2000) 7. Приложение connect.php <?php $db = mysql_connect("localhost","root",""); mysql_select_db("Dekanat",$db); ?> index.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title> Деканат </title> </head> <body bgcolor="#DAE3EB"> <a href="index.php">На главную </a> | <a href="studlist.php"> Список студентов </a> | <a href="speclist.php"> Специальности </a> | <a href="subj-tch.php"> Дисциплины </a> | <a href="plan.php"> Учебный план </a> <hr> <h1 align="center"> Вас приветствует система учета успеваемости студентов </h1> <hr> <h3 align="center">Выберите необходимое действие</h3> <form name="mean" action="jrnlst.php" method="post"> <br> <br> <br> <div align="center"> <input type="submit" name="jrn" value="Просмотр журнала"> </div> </form> <form name="mean" action="studtabchs.php" method="post"> <br> <div align="center"> <input type="submit" name="tbl" value="Успеваемость студента"> </div> </form> <form name="mean" action="worst.php" method="post"> <br> <div align="center"> <input type="submit" name="wrst" value="Список неуспевающих"> </div> </form> <form name="mean" action="practice.php" method="post"> <br> <div align="center"> <input type="submit" name="prct" value="Направление на практику"> </div> </form> </body> </html> studlist.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Список студентов</title> </head> <body bgcolor="#DAE3EB"> <a href="index.php"> На главную </a> | <a href="studlist.php"> Список студентов </a> | <a href="speclist.php"> Специальности </a> | <a href="subj-tch.php"> Дисциплины </a> | <a href="plan.php"> Учебный план </a> <hr> <h1 align="center" > Список студентов </h1> <hr> <br> <?php require("connect.php"); $result = mysql_query("SELECT * FROM Students ORDER BY StudID",$db); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1 align=center >\n"; echo "<tr><td><strong>Номер</strong></td><td><strong>ФИО</strong></td><td><strong>Группа</strong></td></tr>\n"; do { printf("<tr><td>%d</td><td>%s</td><td>%d</td></tr>\n", $myrow["StudID"], $myrow["StudName"], $myrow["GroupNum"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } else { echo "Sorry, no records were found!"; } mysql_close($db); ?> <div align="center"> <FORM name=mean action=studlist.php method=post> <br><INPUT type=submit value="Добавить студента" name=new1><BR><BR></FORM> </div> <div align=center> <?php if (@$new1) { ?> <FORM name="mean" method="post" action=studlist.php> <br> ФИО:<input type="text" name = "stname"> <br> Номер:<input type="text" name = "stnum"> <br> Группа:<input type="text" name = "grnum"> <br> <input type="submit" name = "stnew" value="Добавить"><br> </FORM> </div> <?php } if (@$stnew) { require("connect.php"); mysql_query("INSERT INTO Students (StudID,StudName,GroupNum) VALUES ('$stnum','$stname','$grnum')"); mysql_query("INSERT INTO MarkJournal(SubjID, LTypeID, StudID, LNumb) SELECT SubjID, LTypeID, StudID, LNumb FROM Plan JOIN Students WHERE StudID = '$stnum' "); $result = mysql_query("SELECT * FROM Students WHERE StudName LIKE '%$stname%'"); ?> <br> <br> <div align=center><H4>Добавлена запись:</H4></div><br> <div align=center><table border = 1> <tr><td> Номер </td> <td> ФИО </td> <td> Группа </td> </tr> <?php while ($myrow = mysql_fetch_array($result)) { //tr-строка,td-ячейка,H1-1-й уровень printf("<tr><td><H7>%d",$myrow["StudID"],"</h7></td></tr>"); printf("<td>%s",$myrow["StudName"],"</tr>"); printf("<td>%s",$myrow["GroupNum"],"</tr>"); } } ?> </table> </div> </body> </html> speclist.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Специальности</title> </head> <body bgcolor="#DAE3EB"> <a href="index.php"> На главную </a> | <a href="studlist.php"> Список студентов </a> | <a href="speclist.php"> Специальности </a> | <a href="subj-tch.php"> Дисциплины </a> | <a href="plan.php"> Учебный план </a> <hr> <h1 align="center"> Список специальностей </h1> <hr> <br> <? require("connect.php"); $result = mysql_query("SELECT * FROM Specializations",$db); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1 align=center>\n"; echo "<tr><td>Код</td><td>Наименование</td></tr>\n"; do { printf("<tr><td>%d</td><td>%s</td></tr>\n", $myrow["SpecID"], $myrow["SpecName"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } else { echo "Sorry, no records were found!"; } mysql_close($db); ?> </body> </html> subj-tch.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Дисциплины</title> </head> <body bgcolor="#DAE3EB"> <a href="index.php"> На главную </a> | <a href="studlist.php"> Список студентов </a> | <a href="speclist.php"> Специальности </a> | <a href="subj-tch.php"> Дисциплины </a> | <a href="plan.php"> Учебный план </a> <hr> <h1 align="center"> Дисциплины </h1> <hr> <br> <? require("connect.php"); $result = mysql_query("SELECT DISTINCT Subjects.SubjName, Teachers.TchName FROM (Teachers JOIN TimeTable ON Teachers.TchID = TimeTable.TchID ) JOIN Subjects ON Subjects.SubjID=TimeTable.SubjID",$db); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1 align=center>\n"; echo "<tr><td><strong>Предметы</strong></td><td><strong>Преподаватели</strong></td></tr>\n"; do { printf("<tr><td>%s</td><td>%s</td></tr>\n", $myrow["SubjName"], $myrow["TchName"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } else { echo "Sorry, no records were found!"; } mysql_close($db); ?> </body> </html> plan.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Учебный план</title> </head> <body bgcolor="#DAE3EB"> <a href="index.php"> На главную </a> | <a href="studlist.php"> Список студентов </a> | <a href="speclist.php"> Специальности </a> | <a href="subj-tch.php"> Дисциплины </a> | <a href="plan.php"> Учебный план </a> <hr> <h1 align="center"> Учебный план </h1> <hr> <br> <? require("connect.php"); $result = mysql_query("select SubjName, LTypeName, LNumb from (Plan join Subjects on Plan.SubjID = Subjects.SubjID) join LessTypes on Plan.LTypeID = LessTypes.LTypeID",$db); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1 align=center>\n"; echo "<tr><td><strong>Предметы</strong></td><td><strong>Вид занятия</strong></td><td><strong>Номер</strong></td></tr>\n"; do { printf("<tr><td>%s</td><td>%s</td><td>%d</td></tr>\n", $myrow["SubjName"], $myrow["LTypeName"], $myrow["LNumb"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } else { echo "Sorry, no records were found!"; } mysql_close($db); ?> <div align="center"> <FORM name=mean action=plan.php method=post> <br> <INPUT type="submit" value="Внести изменения" name=newwrk></FORM> </div> <div align=center> <?php if (@$newwrk) { ?> <FORM name="mean" method="post" action=plan.php> <br> Предмет:<input type="text" name = "sbjname"> <br> Занятие:<input type="text" name = "lsn"> <br> Номер:<input type="text" name = "lnum"> <br> <input type="submit" name = "addwrk" value="Добавить"> <INPUT type="submit" value="Удалить" name="delwrk"> <br> </FORM> </div> <?php } if (@$addwrk) { require("connect.php"); $result = mysql_query("SELECT SubjID FROM Subjects WHERE SubjName LIKE '$sbjname'"); $tmpsubj = mysql_fetch_array($result); $tmpsubjid = $tmpsubj["SubjID"]; $result = mysql_query("SELECT LTypeID FROM LessTypes WHERE LTypeName LIKE '$lsn'"); $tmplsn = mysql_fetch_array($result); $tmplsnid = $tmplsn["LTypeID"]; mysql_query("INSERT INTO Plan (SubjID, LTypeID, LNumb) VALUES ('$tmpsubjid', '$tmplsnid', '$lnum')"); mysql_close($db); require("connect.php"); mysql_query("INSERT INTO MarkJournal (SubjID, LTypeID, StudID, LNumb) SELECT SubjID, LTypeID, StudID, LNumb FROM Plan JOIN Students WHERE SubjID = $tmpsubjid AND LTypeID = $tmplsnid AND LNumb = $lnum "); mysql_close($db); } if (@$delwrk) { require("connect.php"); $result = mysql_query("SELECT SubjID FROM Subjects WHERE SubjName LIKE '$sbjname'"); $tmpsubj = mysql_fetch_array($result); $tmpsubjid = $tmpsubj["SubjID"]; $result = mysql_query("SELECT LTypeID FROM LessTypes WHERE LTypeName LIKE '$lsn'"); $tmplsn = mysql_fetch_array($result); $tmplsnid = $tmplsn["LTypeID"]; mysql_query("DELETE FROM MarkJournal WHERE SubjID = $tmpsubjid AND LTypeID = $tmplsnid AND LNumb = $lnum"); mysql_query("DELETE FROM Plan WHERE SubjID = $tmpsubjid AND LTypeID = $tmplsnid AND LNumb = $lnum"); mysql_close($db); } ?> </body> </html> jrnlst.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Журнал: выбор страницы</title> </head> <body bgcolor="#DAE3EB"> <a href="index.php"> На главную </a> <hr> <h1 align="center"> Журнал </h1> <hr> <br> <h3>Выберите страницу</h3> <br> <?php require("connect.php"); $result = mysql_query("select * FROM Subjects"); $link_edit = "jrnsubj.php"; print ("<div align=center><H3>Список журналов по предметам:</H3></div><br>"); print ("<div align=center><table border = 1>"); print ("<tr><td><strong>Номер</strong></td><td><strong>Предмет</strong></td></tr>\n"); if ($myrow = mysql_fetch_array($result)) { do { printf("<tr><td>%d</td><td><a href=\"%s?SubjID=%d\">%s </a></td></tr>\n",$myrow["SubjID"], $link_edit, $myrow["SubjID"], $myrow["SubjName"],"</div>"); } while ($myrow = mysql_fetch_array($result)); } ?> </body> </html> jrnsubj.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Журнал: занятия по предмету</title> </head> <body bgcolor="#DAE3EB"> <a href="index.php"> На главную </a> | <a href="jrnlst.php"> Назад </a> <hr> <?php require("connect.php"); $result = mysql_query("SELECT SubjName FROM Subjects WHERE SubjID = $SubjID"); $tmp1 = mysql_fetch_array($result); $currnam = $tmp1["SubjName"]; ?> <h1>Журнал занятий по предмету <?php echo $currnam ?></h1> <hr> <br> <?php require("connect.php"); $result = mysql_query ("SELECT * FROM Plan JOIN LessTypes ON Plan.LTypeID = LessTypes.LTypeID WHERE Plan.SubjID = $SubjID",$db); $link_edit="journal.php"; print ("<div align=center><H3>Список работ:</H3></div><br>"); print ("<div align=center><table border = 1>"); print ("<tr><td>Работа</td></tr>\n"); if ($myrow = mysql_fetch_array($result)) { do { printf("<tr><td><a href=\"%s?SubjID=%d<ypeID=%d&LNumb=%d\">%s %d</a></td></tr>\n", $link_edit, $myrow["SubjID"], $myrow["LTypeID"], $myrow["LNumb"], $myrow["LTypeName"], $myrow["LNumb"], "</div>"); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } mysql_close($db); ?> </body> </html> journal.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Журнал Занятия</title> </head> <body bgcolor="#DAE3EB"> <a href="index.php"> На главную </a> | <a href=<?php echo 'jrnsubj.php?SubjID='; echo $SubjID; echo'<ypeID='; echo $LTypeID; echo '&LNumb='; echo $LNumb; ?>> Назад </a> <hr> <?php require("connect.php"); $result = mysql_query("SELECT SubjName FROM Subjects WHERE SubjID = $SubjID "); $tmp1 = mysql_fetch_array($result); $currnam = $tmp1["SubjName"]; $result = mysql_query("SELECT LTypeName FROM LessTypes WHERE LTypeID = $LTypeID "); $tmp2 = mysql_fetch_array($result); $currnam1 = $tmp2["LTypeName"]; mysql_close($db); ?> <h1> <?php echo $currnam; echo ": "; echo $currnam1; echo " "; echo $LNumb;?> </h1> <hr> <?php require("connect.php"); $result = mysql_query("SELECT StudName, Mark FROM MarkJournal JOIN Students ON MarkJournal.StudID = Students.StudID WHERE SubjID = $SubjID AND LTypeID = $LTypeID AND LNumb = $LNumb"); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1 align=center >\n"; echo "<tr><td><strong>ФИО</strong></td><td><strong>Оценка</strong></td></tr>\n"; do { printf("<tr><td>%s</td><td>%d</td></tr>\n", $myrow["StudName"], $myrow["Mark"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } mysql_close($db); ?> <div align="center"> <form name="mean" action=<?php echo 'journal.php?SubjID='; echo $SubjID; echo'<ypeID='; echo $LTypeID; echo '&LNumb='; echo $LNumb; ?> method="post"> <input type="submit" name="setmrk" value="Поставить оценку"> </form> </div> <?php if (@$setmrk) { ?> <div align="center"> <FORM name="mean" method="post" action=<?php echo 'journal.php?SubjID='; echo $SubjID; echo'<ypeID='; echo $LTypeID; echo '&LNumb='; echo $LNumb; ?> > <br> ФИО:<input type="text" name = "stname"> <br> Оценка:<input type="text" name = "mark"> <br> <input type="submit" name = "newmrk" value="Внести в журнал"><br> </FORM> </div> <?php } if (@$newmrk) { require("connect.php"); $result = mysql_query("SELECT StudID FROM Students WHERE StudName LIKE '%$stname%' "); $tmpstud = mysql_fetch_array($result); $tmpstudid = $tmpstud["StudID"]; mysql_query("UPDATE MarkJournal SET Mark = $mark WHERE SubjID = $SubjID AND LTypeID = $LTypeID AND StudID = $tmpstudid AND LNumb = $LNumb"); } ?> </body> </html> studtabchs.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Успеваемость</title> </head> <body bgcolor="#DAE3EB"> <a href="index.php"> На главную </a> <hr> <h1 align="center"> Выберите студента </h1> <hr> <br> <?php require("connect.php"); $result = mysql_query("SELECT * FROM Students"); $link_edit = "studtab.php"; print ("<div align=center><H3>Список студентов:</H3></div><br>"); print ("<div align=center><table border = 1>"); print ("<tr><td><strong>Номер</strong></td><td><strong>ФИО</strong></td><td><strong>Группа</strong></td></tr>\n"); if ($myrow = mysql_fetch_array($result)) { do { printf("<tr><td>%d</td><td><a href=\"%s?StudID=%d\">%s </a></td><td>%d</td></tr>\n",$myrow["StudID"], $link_edit, $myrow["StudID"], $myrow["StudName"], $myrow["GroupNum"],"</div>"); } while ($myrow = mysql_fetch_array($result)); } ?> </body> </html> studtab.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Общая успеваемость студента</title> </head> <body bgcolor="#DAE3EB"> <a href="index.php"> На главую </a> | <a href="studtabchs.php"> Назад </a> <hr> <?php require("connect.php"); $result = mysql_query("SELECT StudName FROM Students WHERE StudID = $StudID"); $tmp1 = mysql_fetch_array($result); $currnam = $tmp1["StudName"]; ?> <h1 align="center"><?php echo $currnam ?> : Общая успеваемость</h1> <hr> <br> <?php require("connect.php"); $result = mysql_query("SELECT SubjName, LTypeName, LNumb, Mark FROM ((MarkJournal JOIN Students ON MarkJournal.StudID = Students.StudID) JOIN Subjects ON MarkJournal.SubjID = Subjects.SubjID) JOIN LessTypes ON MarkJournal.LTypeID = LessTypes.LTypeID WHERE Students.StudID = $StudID",$db); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1 align=center >\n"; echo "<tr><td><strong>Предмет</strong></td><td><strong>Работа</strong></td><td><strong>Номер</strong></td><td><strong>Оценка</strong></td></tr>\n"; do { printf("<tr><td>%s</td><td>%s</td><td>%d</td><td>%d</td></tr>\n", $myrow["SubjName"], $myrow["LTypeName"], $myrow["LNumb"], $myrow["Mark"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } mysql_close($db); ?> </body> </html> worst.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Неуспевающие</title> </head> <body bgcolor="#DAE3EB"> <a href="index.php"> На главную </a> <hr> <h1 align="center"> Неуспевающие </h1> <hr> <br> <?php require("connect.php"); $result = mysql_query("SELECT StudID, StudName, GroupNum FROM Students WHERE StudID NOT IN (SELECT StudID FROM MarkJournal WHERE Mark IS NOT NULL)",$db); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1 align=center >\n"; echo "<tr><td><strong>Номер</strong></td><td><strong>ФИО</strong></td><td><strong>Группа</strong></td></tr>\n"; do { printf("<tr><td>%d</td><td>%s</td><td>%d</td></tr>\n", $myrow["StudID"], $myrow["StudName"], $myrow["GroupNum"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } else { echo "Sorry, no records were found!"; } mysql_close($db); ?> </body> </html> practice.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Практика</title> </head> <body bgcolor="#DAE3EB"> <a href="index.php"> На главную</a> <hr> <h1 align="center"> Практика </h1> <hr> <br> <?php require("connect.php"); $result = mysql_query("SELECT StudID, StudName, GroupNum, EntName FROM Students LEFT OUTER JOIN Enterprises ON Students.PractEntID = Enterprises.EntID",$db); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1 align=center >\n"; echo "<tr><td><strong>Номер</strong></td><td><strong>ФИО</strong></td><td><strong>Группа</strong></td><td><strong>Практика</strong></td></tr>\n"; do { printf("<tr><td>%d</td><td>%s</td><td>%d</td><td>%s</td></tr>\n", $myrow["StudID"], $myrow["StudName"], $myrow["GroupNum"], $myrow["EntName"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>\n"; } else { echo "Sorry, no records were found!"; } mysql_close($db); ?> <div align="center"> <FORM name=mean action=practice.php method=post> <br><INPUT type=submit value="Назначить предприятие" name=new2><BR><BR></FORM> </div> </div> <div align=center> <?php if (@$new2) { ?> <FORM name="mean" method="post" action=practice.php> <br> ФИО:<input type="text" name = "stname"> <br> Предприятие:<input type="text" name = "ent"> <br> <input type="submit" name = "entedit" value="Назначить"><br> </FORM> </div> <?php } if (@$entedit) { require("connect.php"); $sql = mysql_query("SELECT EntID FROM Enterprises WHERE EntName LIKE '%$ent%'"); $entid = mysql_fetch_array($sql); $tmp = $entid["EntID"]; mysql_query("UPDATE Students SET PractEntID = $tmp WHERE StudName LIKE '%$stname%' "); $result = mysql_query("SELECT StudID, StudName, GroupNum, EntName FROM Students LEFT OUTER JOIN Enterprises ON Students.PractEntID = Enterprises.EntID WHERE StudName LIKE '%$stname%'"); ?> <br> <div align=center><H4>Отредактировано:</H4></div><br> <div align=center><table border = 1> <tr><td> Номер </td> <td> ФИО </td> <td> Группа </td> <td> Предприятие </td> </tr> <?php while ($myrow = mysql_fetch_array($result)) { printf("<tr><td>%d",$myrow["StudID"],"</td>"); printf("<td>%s",$myrow["StudName"],"</td>"); printf("<td>%d",$myrow["GroupNum"],"</td>"); printf("<td>%s",$myrow["EntName"],"</td></tr>"); } } ?> </table> </div> </body> </html>
|