Курсовая на тему Создание сайта Деканат
Работа добавлена на сайт bukvasha.net: 2015-07-01Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное образовательное учреждение
высшего профессионального образования
"Чувашский государственный университет им. И.Н. Ульянова"
Факультет информатики и вычислительной техники
Кафедра "Информационно-вычислительных систем"
Дисциплина "Базы данных"
Пояснительная записка к курсовой работе
Выполнил:
студент гр. ИВТ 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. Приложение
Задание
Деканат
В деканате храниться информация о студентах, специальностях, предметах факультета и преподавателях, ведущих эти предметы, а также данные об успеваемости студентов, с целью формирования списков должников и отчисленных. Необходимо производить статистику успеваемости по группам, специальностям, преподавателям и всему факультету в целом. Нужно также распечатывать ведомости и прочие деканатские бумаги.
Студенты проходят практику на фирмах и предприятиях.
О выпускниках по возможности нужно хранить сведения о трудоустройстве и проводить статистику по всему деканату и по специальностям в отдельности на предмет трудоустройства выпускников
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. Список использованной литературы
Андрей Шкрыль. Программируем для web-сайта. "БХВ-Петербург", Санкт-Петербург, 2006.
Т.Карпова. Базы данных. Модели, разработка, реализация. "Питер", Санкт-Петербург, 2002.
Алексей Гончаров. Самоучитель HTML.
А. Качанов, В. Ткаченко, А. Головин. Букварь по 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>