Разработка web-системы для учета компьютеров в классе
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Ухтинский государственный технический университет
Факультет информационных технологий
Кафедра автоматизированных информационных систем
КУРСОВАЯ РАБОТА
по дисциплине "Web-программирование"
на тему: «Разработка web-системы для учета компьютеров в классе»
Выполнил:
студент гр. ИВТ-12
Проверил:
Ст.преподаватель кафедры АИС С.М.Мартюшев
Ухта 2013
СОДЕРЖАНИЕ
ПОСТАНОВКА ЗАДАЧИ
Разработать информационную систему приложение для учета информации, согласно выбранному варианту. Разрабатываемая система должна быть построена по 3-х звенной клиент-серверной архитектуре. В качестве клиентского приложения должен использоваться любой современный браузер. Информация хранится в базе данных на СУБД MySQL. Структура базы данных предлагается студентом и согласуется с преподавателем.
Разрабатываемая система должна выполнять следующие функции:
- Добавление компьютера. Компьютер должен содержать поля: учетный номер, код, размер диска, объем памяти, фамилия пользователя, логин для входа, пароль для входа, тип процессора.
- Добавление типа процессора. Содержит в себе одно поле – название типа процессора.
- Редактирование данных о компьютере. Изменение всех выше перечисленных полей о компьютере.
- Изменение типа процессора в справочнике.
- Удаление компьютера.
- Удаление типа процессора в справочнике.
- Представление данных в таблице «Информация о компьютерах» и справочнике «Типы процессора».
- При изменении названия типа процессора в справочнике «Типы процессора» его название должно измениться в таблице «Информация о компьютерах».
- При удалении типа процессора в справочнике «Типы процессора» данный тип процессора должен удаляться в таблице «Информация о компьютерах».
ОПИСАНИЕ СТРУКТУРЫ БАЗЫ ДАННЫХ
Таблица 1 – Соответствие полей в базе данных MySQL таблица «pk»
Название поля в базе данных |
Расшифровка |
idpk |
Первичный ключ таблицы |
nomer |
Учетный номер |
idtip |
Внешний ключ |
kod |
Код модели |
size |
Размер диска |
V |
Объем памяти |
fio |
Фамилия пользователя |
login |
Логин для входа |
password |
Пароль для входа |
Таблица 2 – Соответствие полей в базе данных MySQL таблица «tip»
Название поля в базе данных |
Расшифровка |
idtip |
Первичный ключ таблицы |
tip |
Тип процессора |
Между таблицами «pk» и «tip» установлена связь вида «один ко многим», которая осуществляется с помощью внешнего ключа «idtip» в таблице «pk».
Таблицы содержаться в базе данных, которая находится в файле iv12ivanova.sql (Приложение А).
ОПИСАНИЕ СТРУКТУРЫ ПРОЕКТА
Таблица 3– Назначение файлов
Название файла |
Назначение |
index.html |
Вывод данных. |
index.php |
Используется для просмотра базы данных о компьютерах и справочника «Типы процессора», позволяет перейти к формам и скриптам, с помощью которых можно добавить компьютер, удалить или изменить существующие записи о компьютере. |
function.php |
Обработка введенных данных. Используется для основных функций приложения: добавление, изменение, удаление. |
pkform.php |
Формы для добавления, изменения и удаления компьютера. |
pkpost.php |
Проверка на наличие введенных данных о компьютерах. |
pk.php |
Формирует таблицу и выводит в ней данные о компьютере. |
tipform.php |
Форма для добавления, удаления и изменения типов процессора в справочнике. |
tippost.php |
Проверяет на наличие введенных данных о типах процессора. |
tip.php |
Формирует таблицу и выводит справочник «Типы процессора» |
Код файлов находится в приложении Б.
ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ
Это информационная система
приложение, которое было разработано
для учета компьютеров в
После выполнения указанных выше требований:
- Открываем каталог с программой Open Server.
- В папку domains копируем папку ivt12ivanova.
- В программе dbForge Studio for MySQL открываем ivt12ivanova.sql и нажимаем кнопку выполнить. Программа создаст базу данных ivt12ivanova.
- Запускаем или перезапускаем Open Server.
- Нажав на иконку Open Server, выбираем раздел «Список сайтов» и выбираем ivt12ivanova.
Происходит запуск в вашем браузере, который установлен по умолчанию (Рисунок 1).
Рисунок 1 – База данных учета компьютеров в классе
При нажатии на кнопку «Добавить» происходит переход на следующую страницу, на которой заполняем данные в соответствующие поля и нажимаем «Сохранить» (Рисунок 2).
Рисунок 2 – Форма добавления компьютера
Если вы правильно ввели все данные, то вы возвратитесь к базе данных, но уже с добавленным компьютером (Рисунок 3).
Рисунок 3 – База данных с добеленным компьютером
Если же вы не заполнили какое-либо поле, то выдается сообщение об ошибке (Рисунок 4).
Рисунок 4 – Информация об ошибке
После вам нужно вернуться на предыдущую страницу в браузере, ввести все данные и нажать кнопку «Сохранить». После чего вы перейдете к таблице «Информация о компьютерах» (Рисунок 3).
Так же вы можете изменить информацию о каком-либо компьютере, нажав кнопку «Изменить». Вы перейдете к форме изменения данных о компьютере (Рисунок 5).
Рисунок 5 – Изменение данных о компьютере
После изменения информации о компьютере нажмите кнопку «Сохранить». После чего вы перейдете к базе данных с измененным компьютером (Рисунок 6).
Рисунок 6 – База данных с измененным компьютером
Если вы хотите удалить информацию о каком-либо компьютере, то нажмите кнопку «Удалить». После чего вы должны подтвердить удаление, нажав на кнопку «Да» (Рисунок 7), если вы не хотите удалять компьютер – вернитесь на предыдущую страницу.
Рисунок 7 – Подтверждения удаления
Нажмите на ссылку «Типы процессора» и вы перейдете к справочнику «Типы процессора» (Рисунок 8).
Рисунок 8 – Справочник «Типы процессора»
При нажатии на кнопку «Добавить» вы перейдете к форме добавления типа процессора (Рисунок 9).
Рисунок 9 – Добавление типа процессора
Введите нужный вам тип процессора и нажмите кнопку «Сохранить». Если вы ввели название процессора, то вы перейдете к справочнику «Типы процессора» (Рисунок 8).
Но если вы ничего не ввели, то появится сообщение об ошибке (Рисунок 10).
Рисунок 10 – Сообщение об ошибке
Если вы хотите изменить тип процессора, то нажмите кнопку «Изменить» в строке нужного вам типа процессора. После чего вы перейдете к форме изменения типа процессора (Рисунок 11).
Рисунок 11 – Изменение типа процессора
Введите нужный вам тип процессора и нажмите кнопку «Сохранить». После вы перейдете к справочнику «Типы процессора» с измененным типом процессора (Рисунок 12).
Рисунок 12 – Измененный справочник «Типы процессора»
Если вы хотите удалить тип процессора, нажмите кнопку «Удалить» в нужной строке типа процессора и подтвердите удаление, нажав кнопку «Да» (Рисунок 13).
Рисунок 13 – Удаление типа процессора
При изменении типа процессора в справочнике (Рисунок 14), этот тип процессора изменится и в таблице «Информация о компьютерах» (Рисунок 15).
Рисунок 14 – Изменение типа процессора
СПИСОК ИСТОЧНИКОВ И ЛИТЕРАТУРЫ
http://www.webmasterwiki.ru/ - Wiki-учебник по web-технологиям.
http://softtime.ru/bookphp/ - учебник по PHP 4
http://www.php.su/ - PHP и базы данных.
ПРИЛОЖЕНИЯ
ПРИЛОЖЕНИЕ А
1. ivt12ivanova.sql
-- ------------------------------
-- Host: openserver
-- Server version: 5.1.61-community-log - MySQL Community Server (GPL)
-- Server OS: Win32
-- HeidiSQL version: 6.0.0.4034
-- Date/time: 2013-06-02 21:20:48
-- ------------------------------
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@
/*!40101 SET NAMES utf8 */;
/*!40014 SET FOREIGN_KEY_CHECKS=0 */;
-- Dumping database structure for ivt12ivanova
DROP DATABASE IF EXISTS `ivt12ivanova`;
CREATE DATABASE IF NOT EXISTS `ivt12ivanova` /*!40100 DEFAULT CHARACTER SET cp1251 */;
USE `ivt12ivanova`;
-- Dumping structure for table ivt12ivanova.pk
DROP TABLE IF EXISTS `pk`;
CREATE TABLE IF NOT EXISTS `pk` (
`idpk` int(11) NOT NULL AUTO_INCREMENT,
`nomer` varchar(255) NOT NULL,
`idtip` int(11) DEFAULT NULL,
`kod` varchar(255) NOT NULL,
`size` varchar(255) NOT NULL,
`V` varchar(255) NOT NULL,
`fio` varchar(255) DEFAULT NULL,
`login` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
PRIMARY KEY (`idpk`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=cp1251 AVG_ROW_LENGTH=8192;
-- Dumping data for table ivt12ivanova.pk: ~6 rows (approximately)
/*!40000 ALTER TABLE `pk` DISABLE KEYS */;
INSERT INTO `pk` (`idpk`, `nomer`, `idtip`, `kod`, `size`, `V`, `fio`, `login`, `password`) VALUES
(4, '121563', 2, '567430', '500000', '7456778', 'Титов', '[email protected]', '7jg456nmf'),
(8, '121565', 5, '446565', '775476', '789654', 'Егорова', '[email protected]', '59kgf864nm'),
(19, '121564', 7, '458796', '456546', '778867', 'Котов', '[email protected]', '46hbjh785'),
(20, '121566', 7, '467853', '675433', '878864', 'Александренко', '[email protected]', '56jkhdf76'),
(21, '121567', 6, '567677', '467788', '675655', 'Иванова', '[email protected]', '2j5k9k6g76'),
(23, '121570', 7, '565879', '446789', '765787', 'Сидоров', '[email protected]', 'kjg67645kjg');
/*!40000 ALTER TABLE `pk` ENABLE KEYS */;
-- Dumping structure for table ivt12ivanova.tip
DROP TABLE IF EXISTS `tip`;
CREATE TABLE IF NOT EXISTS `tip` (
`idtip` int(11) NOT NULL AUTO_INCREMENT,
`tip` varchar(255) DEFAULT NULL,
PRIMARY KEY (`idtip`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=cp1251;
-- Dumping data for table ivt12ivanova.tip: ~5 rows (approximately)
/*!40000 ALTER TABLE `tip` DISABLE KEYS */;
INSERT INTO `tip` (`idtip`, `tip`) VALUES
(2, 'Pentium III 1000MHz'),
(4, 'Pentium M 1500MHz '),
(5, 'Pentium III 500MHz'),
(6, 'Celeron M 1500MHz'),
(7, 'Pentium IV 2400MHz');
/*!40000 ALTER TABLE `tip` ENABLE KEYS */;
/*!40014 SET FOREIGN_KEY_CHECKS=1 */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_
ПРИЛОЖЕНИЕ Б
КОД ПРОГРАММЫ
1.index.html
<html>
<head>
<title>Курсовая работа
Web - программирование Ивановой
</head>
<body>
<p>Курсовая работа студента группы ИВТ-12 Ивановой Анны Александровны
<dl>
<dt><a href="index.php">КР</a></dt>
</body>
</html>
2.index.php
<?php
$p=$_REQUEST['p'];
echo
"<html>
<head>
<meta charset='utf-8'>
<title>Информация о компьютерах</title>
</head>
<body>
<p><a href='index.php?p=1'>
if (($p==0)||($p==1))
include_once 'pk.php';
if ($p==11)
include_once 'pkform.php';
if ($p==12)
include_once 'pkpost.php';
if ($p==2)
include_once 'tip.php';
if ($p==21)
include_once 'tipform.php';
if ($p==22)
include_once 'tippost.php';
echo
"<p>© ИВТ-12 Иванова Анна<p>
</body></html>";
?>
3. function.php
<?php
function dbconnect()
{
$db = new mysqli('openserver', 'mysql', 'mysql', 'ivt12ivanova');
return $db;
}
function pk()
{
$query =
"SELECT tip.tip, pk.idpk, pk.idtip, pk.nomer, pk.kod, pk.size, pk.V, pk.fio, pk.login, pk.password
FROM pk INNER JOIN tip ON pk.idtip = tip.idtip
ORDER BY tip.tip, pk.nomer";
$handle=dbconnect();
$result = $handle->query($query);
return $result;
}
function pkid($id)
{
$query =
"SELECT idpk, nomer, idtip, kod, size, V, fio, login, password
FROM pk
WHERE idpk=$id";
$handle=dbconnect();
$result = $handle->query($query);
return $result;
}
function pkins($nomer, $idtip, $kod, $size, $V, $fio, $login, $password)
{
$query =
"INSERT INTO pk (nomer, idtip, kod, size, V, fio, login, password)
VALUES ('$nomer', $idtip, '$kod', '$size', '$V', '$fio', '$login', '$password')";
$handle=dbconnect();
$result = $handle->query($query);
return $result;
}
function pkupd($idpk, $nomer, $idtip, $kod, $size, $V, $fio, $login, $password)
{
$query =
"UPDATE pk SET nomer='$nomer', idtip=$idtip, kod='$kod', size='$size', V='$V', fio='$fio', login='$login', password='$password'
WHERE idpk=$idpk";
$handle=dbconnect();
$result = $handle->query($query);
return $result;
}
function pkdel($idpk)
{
$query =
"DELETE FROM pk WHERE idpk=$idpk";
$handle=dbconnect();
$result = $handle->query($query);
return $result;
}
function tip()
{
$query =
"SELECT idtip, tip
FROM tip
ORDER BY tip ASC";
$handle=dbconnect();
$result = $handle->query($query);
return $result;
}
function tipid($id)
{
$query =
"SELECT idtip, tip
FROM tip
WHERE idtip=$id";
$handle=dbconnect();
$result = $handle->query($query);
return $result;
}
function tipins($tip)
{
$query =
"INSERT INTO tip (tip) VALUES ('$tip')";
$handle=dbconnect();
$result = $handle->query($query);
}
function tipupd($idtip, $tip)
{
$query =
"UPDATE tip SET tip='$tip' WHERE idtip=$idtip";
$handle=dbconnect();
$result = $handle->query($query);
}
function tipdel($idtip)
{
$query =
"DELETE FROM tip WHERE idtip=$idtip";
$handle=dbconnect();
$result = $handle->query($query);
}
?>
4. pkform.php
<?php
include_once 'function.php';
$m=$_REQUEST['m'];
if ($m==1)
{
echo "<h1>Добавить компьютер</h1>
<form action='index.php' method=post>
<input type='hidden' name='m' value=1>
<input type='hidden' name='p' value=12>
<table border=0>
<tr>
<th>Учетный номер</th>
<td><input type='text' name='nomer'></td>
</tr>
<tr>
<th>Код</th>
<td><input type='text' name='kod'></td>
</tr>
<tr>
<th>Размер диска</th>
<td><input type='text' name='size'></td>
</tr>
<tr>
<th>Объем памяти</th>
<td><input type='text' name='V'></td>
</tr>
<tr>
<th>Фамилия пользователя</th>
<td><input type='text' name='fio'></td>
</tr>
<tr>
<th>Логин для входа</th>
<td><input type='text' name='login'></td>
</tr>
<tr>
<th>Пароль для входа</th>
<td><input type='text' name='password'></td>
</tr>
<th>Тип процессора</th><td>
<select name='idtip'>
<option selected value='0'>Не выбрано</option>"
$result=tip();
$numresult= tip()->num_rows;
for ($i=0;$i<$numresult;$i++)
{
$row=$result->fetch_assoc();
$idtip=$row['idtip'];
$tip=$row['tip'];
echo
"<option value='$idtip'>$tip</option>";
}
echo
"</select></td></tr>
<tr>
<td colspan=2 align=center><input type='submit' value='Сохранить'></td>
</tr>
</table>
</form>";
}
if ($m==2)
{
$idpk=$_REQUEST['id'];
$result=pkid($idpk);
$row=$result->fetch_assoc();
$nomer=$row['nomer'];
$kod=$row['kod'];
$size=$row['size'];
$V=$row['V'];
$fio=$row['fio'];
$login=$row['login'];
$password=$row['password'];
$idtipsel=$row['idtip'];
echo "<h1>Изменить компьютер</h1>
<form action='index.php' method=post>
<input type='hidden' name='m' value=2>
<input type='hidden' name='id' value=$idpk>
<input type='hidden' name='p' value=12>
<table border=0>
<tr>
<th>Учетный номер</th>
<td><input type='text' name='nomer' value='$nomer'></td>
</tr>
<tr>
<th>Код</th>
<td><input type='text' name='kod' value='$kod'></td>
</tr>
<th>Размер диска</th>
<td><input type='text' name='size' value='$size'></td>
</tr>
<tr>
<th>Объем памяти</th>
<td><input type='text' name='V' value='$V'></td>
</tr>
<tr>
<th>Фамилия пользователя</th>
<td><input type='text' name='fio' value='$fio'></td>
</tr>
<tr>
<th>Логин для входа</th>
<td><input type='text' name='login' value='$login'></td>
</tr>
<th>Пароль для входа</th>
<td><input type='text' name='password' value='$password'></td>
</tr>
<th>Тип процессора</th><td>
<select name='idtip'>
<option value='0'>Не выбрано</option>"
$result=tip();
$numresult= tip()->num_rows;
for ($i=0;$i<$numresult;$i++)
{
$row=$result->fetch_assoc();
$idtip=$row['idtip'];
$tip=$row['tip'];
if ($idtipsel==$idtip)
echo "<option value='$idtip' selected>$tip</option>";
else
echo "<option value='$idtip'>$tip</option>";
}
echo
"</select></td></tr>
<tr>
<td colspan=2 align=center><input type='submit' value='Сохранить'></td>
</tr>
</table>
</form>";
}
if ($m==3)
{
$idpk=$_REQUEST['id'];
echo "<h1>Удалить компьютер</h1>
<form action='index.php' method=post>
<input type='hidden' name='m' value=3>
<input type='hidden' name='id' value=$idpk>
<input type='hidden' name='p' value=12>
<table border=0>
<tr>
<th>Удалить данные о компьютере?</th>
</tr>
<tr>
<td align=center><input type='submit' value='Да'></td>
</tr>
</table>
</form>";
}
?>
5. pkpost.php
<?php
include_once 'function.php';
$m=$_REQUEST['m'];
if ($m==1)
{
$nomer=$_REQUEST['nomer'];
$kod=$_REQUEST['kod'];
$idtip=$_REQUEST['idtip'];
$size=$_REQUEST['size'];
$V=$_REQUEST['V'];
$fio=$_REQUEST['fio'];
$login=$_REQUEST['login'];
$password=$_REQUEST['password'
if(empty($nomer)||empty($kod)|
{
echo "<h3>Введены НЕ все данные</h3>" ;
}
else
{
pkins($nomer,$idtip, $kod, $size, $V, $fio, $login, $password);
echo "<script>location.href='index.
}
}
if ($m==2)
{
$idpk=$_REQUEST['id'];
$nomer=$_REQUEST['nomer'];
$kod=$_REQUEST['kod'];
$idtip=$_REQUEST['idtip'];
$size=$_REQUEST['size'];
$V=$_REQUEST['V'];
$fio=$_REQUEST['fio'];
$login=$_REQUEST['login'];
$password=$_REQUEST['password'
if (empty($nomer)||empty($kod)||
{
echo "<h3>Введены НЕ все данные</h3><p>" ;
}
else
{
pkupd($idpk, $nomer, $idtip, $kod, $size, $V, $fio, $login, $password);
echo "<script>location.href='index.
}
}
if ($m==3)
{
$idpk=$_REQUEST['id'];
pkdel($idpk);
echo "<script>location.href='index.
}
?>
6.pk.php
<?php
include_once 'function.php';
echo "<h1>Информация о компьютерах</h1>";
$numresult= pk()->num_rows;
echo '<p>Количество записей - '.$numresult;
echo
"<table border=2>
<th>Тип процессора</th>
<th>Учетный номер</th>
<th>Код</th>
<th>Размер диска</th>
<th>Объем памяти</th>
<th>Фамилия пользователя</th>
<th>Логин для входа</th>
<th>Пароль для входа</th>
<th colspan=2> Функции </th>";
$result=pk();
for ($i=0;$i<$numresult;$i++)
{
$row=$result->fetch_assoc();
$idpk=$row['idpk'];
$nomer=$row['nomer'];
$idtip=$row['idtip'];
$tip=$row['tip'];
$kod=$row['kod'];
$size=$row['size'];
$V=$row['V'];
$fio=$row['fio'];
$login=$row['login'];
$password=$row['password'];
$i1=$i+1;
echo
"<tr><td>$tip</td>
<td>$nomer</td>
<td>$kod</td>
<td>$size</td>
<td>$V</td>
<td>$fio</td>
<td>$login</td>
<td>$password</td>
<td><a href='index.php?p=11&id=$idpk&
<td><a href='index.php?p=11&id=$idpk&
}
echo "</table>
<p><a href='index.php?p=11&m=1'>
?>
7. tipform.php
<?php
include_once 'function.php';
$m=$_REQUEST['m'];
if ($m==1)
{
echo "<h1>Добавить тип процессора</h1>
<form action='index.php' method=post>
<input type='hidden' name='m' value=1>
<input type='hidden' name='p' value=22>
<table border=0>
<tr>
<th>Тип процессора</th>
<td><input type='text' name='tip'></td>
</tr>
<tr>
<td colspan=2 align=center><input type='submit' value='Сохранить'></td>
</tr>
</table>
</form>";
}
if ($m==2)
{
$idtip=$_REQUEST['id'];
$result=tipid($idtip);
$row=$result->fetch_assoc();
$tip=$row['tip'];
echo "<h1>Изменить тип процессора</h1>
<form action='index.php' method=post>
<input type='hidden' name='m' value=2>
<input type='hidden' name='id' value=$idtip>
<input type='hidden' name='p' value=22>
<table border=0>
<tr>
<th>Тип процессора</th>
<td><input type='text' name='tip' value='$tip'></td>
</tr>
<tr>
<td colspan=2 align=center><input type='submit' value='Сохранить'></td>
</tr>
</table>
</form>";
}
if ($m==3)
{
$idtip=$_REQUEST['id'];
echo "<h1>Удалить тип процессора</h1>
<form action='index.php' method=post>
<input type='hidden' name='m' value=3>
<input type='hidden' name='id' value=$idtip>
<input type='hidden' name='p' value=22>
<table border=0>
<tr>
<th>Удалить данные о типе процессора?</th>
</tr>
<tr>
<td align=center><input type='submit' value='Да'></td>
</tr>
</table>
</form>";
}
?>
8. tippost.php
<?php
include_once 'function.php';
$m=$_REQUEST['m'];
if ($m==1)
{
$tip=$_REQUEST['tip'];
if (empty($tip))
{
echo "<h3>Введены НЕ все данные</h3>" ;
}
else
{
tipins($tip);
echo "<script>location.href='index.
}
}
if ($m==2)
{
$idtip=$_REQUEST['id'];
$tip=$_REQUEST['tip'];
if (empty($tip))
{
echo "<h3>Введены НЕ все данные</h3>" ;
}
else
{
tipupd($idtip, $tip);
echo "<script>location.href='index.
}
}
if ($m==3)
{
$idtip=$_REQUEST['id'];
tipdel($idtip);
echo "<script>location.href='index.
}
?>
9. tip.php
<?php
include_once 'function.php';
echo "<h1>Типы процессора</h1>";
$numresult= tip()->num_rows;
echo '<p>Количество записей - '.$numresult;
echo
"<table border=1>
<th>Тип процессора</th>
<th></th>
<th></th>";
$result=tip();
for ($i=0;$i<$numresult;$i++)
{
$row=$result->fetch_assoc();
$idtip=$row['idtip'];
$tip=$row['tip'];
$i1=$i+1;
echo
"<tr><td>$tip</td>
<td><a href='index.php?p=21&m=2&id=$
<td><a href='index.php?p=21&m=3&id=$
}
echo
"</table>
<p><a href='index.php?p=21&m=1'>
?>