Лабораторные работы (практикум) по HTML, CSS, PHP, MySQL. Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
1. www.studentam‐in.ru
полезная информация для учащихся
Лабораторные работы (практикум) по направлению
«Изучение HTML, CSS, PHP, MySQL»
СОДЕРЖАНИЕ:
ЛАБОРАТОРНАЯ РАБОТА № 1. ЗНАКОМСТВО С PHP, HTML, CSS. ............................................................ 2
ЛАБОРАТОРНАЯ РАБОТА № 2. ИСПОЛЬЗОВАНИЕ ПЕРЕМЕННЫХ И ЭЛЕМЕНТОВ ВВОДА. ................ 11
ЛАБОРАТОРНАЯ РАБОТА № 3. УПРАВЛЕНИЕ ПРОГРАММОЙ С ПОМОЩЬЮ УСЛОВИЙ И ФУНКЦИЙ.16
ЛАБОРАТОРНАЯ РАБОТА № 4. ЦИКЛЫ И МАССИВЫ. ................................................................................ 22
ЛАБОРАТОРНАЯ РАБОТА № 5. РАБОТА С ФАЙЛАМИ. ............................................................................... 32
ЛАБОРАТОРНАЯ РАБОТА № 6. ИСПОЛЬЗОВАНИЕ MYSQL ДЛЯ СОЗДАНИЯ БАЗ ДАННЫХ (БД). ........ 47
ЛАБОРАТОРНАЯ РАБОТА № 7. ПОДКЛЮЧЕНИЕ К БД С ПОМОЩЬЮ PHP. ............................................. 50
ЛАБОРАТОРНАЯ РАБОТА № 8. НОРМАЛИЗАЦИЯ ДАННЫХ. ..................................................................... 52
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
1
2. ЛАБОРАТОРНАЯ РАБОТА № 1. ЗНАКОМСТВО С PHP, HTML, CSS.
1. Установить локальный сервер (типа, wamp, denwer, phpTriad) и запустить его.
Подсказка:
Требуется установить конфигурацию Apache, PHP, MySQL.
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
2
3. 2. Написать программу на PHP вызывающую функцию phpInfo(); и запустить ее на своем веб-сервере.
Подсказка:
<?php
//файл program.php скопировать в папку www
//в браузере указать путь к файлу как localhost/program.php
phpInfo();
?>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
3
4. 3. Создать страницу на html для своего резюме.
Подсказка:
<html>
<head>
<title>Резюме А.В. Гора</title>
</head>
<body>
<table width="100%" align="center" border="0" >
<tr>
<td width="15%"><a href="Gora.jpg" target="_blank" title="Увеличить фотографию"><img src="Gora.jpg"
width="110"></a></td>
<td width="85%"><left><u><h3>РЕЗЮМЕ</h3> <br> <h4>ГОРА АЛЕКСАНДР ВЛАДИМИРОВИЧ</h4></u></left></td>
</tr>
</table>
height="112"
<table width="100%" border="1" cellpadding="1" cellspacing="1">
<tr>
<td>Цель</td>
<td>Соискание должности по направлению "Преподаватель".</td>
</tr>
<tr>
<td>Сведения о себе</td>
<td><u>Год и место рождения:</u> .<br>
<u>Семейное положение:</u> .<br>
<u>Адрес:</u> г. Благовещенск, ул. .
</td>
</tr>
<tr>
<td>Образование</td>
<td><u>Высшее:</u> Благовещенский государственный педагогический университет (2003-08, очно).<br>
<u>Специальность:</u> «Информатика» с дополнительной квалификацией «переводчик в сфере профессиональной
коммуникации».</td>
</tr>
<tr>
<td>Профессиональный опыт</td>
<td>Преподаватель спец. дисциплин в филиале ФГБОУ ВПО «ВГУЭС» Благовещенском технологическом техникуме (200812).<br>
Преподаю следующие учебные дисциплины:
<ol>
<li>Информатика.</li>
<li>Информационные технологии в профессиональной деятельности. </li>
</ol>
</td>
</tr>
<tr>
<td>Знания языков</td>
<td>Английский выше среднего (разговорный, письменный; хорошее владение компьютерной лексикой, свободная
ориентация на англоязычных сайтах).</td>
</tr>
<tr>
<td>Дополнительные сведения</td>
<td>Водительское удостоверение <u>категории В.</u><br></td>
</tr>
<tr>
<td>Личностная характеристика</td>
<td>Ответственен, самообучаем, коммуникабелен.</td>
</tr>
</table>
</body>
</html>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
4
6. 4. Создать страницы на HTML с применением стилей CSS (внутренних и внешних).
Подсказка:
<html>
<head>
<title>Заголовок страницы</title>
<STYLE type="text/css">
h2 { color: blue }
</STYLE>
<head>
<body>
<center>
<h1 style =
"color:red;
background-color:yellow;
border-width: 10px;
border-style: groove;
border-color: green">
Привет мир</h1>
</center>
<br>
<h2>Привет мир</h2>
</body>
</html>
<html>
<head>
<title>Заголовок страницы</title>
<LINK rel="stylesheet" href="12 внешние стили.css" type="text/css">
<head>
<body>
<center>
<h1>Привет мир</h1>
</center>
</body>
</html>
h1 {
text-align:center;
color:red;
background-color:yellow;
border-width: 10px;
border-style: groove;
border-color: green
}
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
6
7. CSS: СВОЙСТВА ШРИФТА
fontfamily
Используется для указания шрифта или шрифтового семейства, которым будет отображаться элемент.
P {font-family: Times New Roman, sans-serif;}
font-style Задает способ начертания шрифта: normal - Нормальный (по умолчанию), italic - Курсив, oblique Наклонный.
P {font-style: italic;}
fontvariant
Задает варианты начертания шрифта: normal - Нормальный (по умолчанию), small-caps - Все буквы
заглавные).
P {font-variant: small-caps;}
fontweight
Определяет степень жирности шрифта с помощью параметров: normal, bold, bolder, lighter, 100, 200,
300, 400, 500, 600, 700, 800, 900
B {font-weight: bolder;}
font-size Устанавливает размер шрифта. Параметр может указываться как в относительной (проценты), так и
абсолютной величине (пункты, пикселы, сантиметры)
H1 {font-size: 200%;}
H2 {font-size: 150px;}
H3 {font-size: 400pt;}
CSS: ЦВЕТ ЭЛЕМЕНТА И ЦВЕТ ФОНА
color
Определяет цвет элемента
I {color: green;}
backgroundcolor
Устанавливает цвет фона для элемента – именно для элемента, а не для странички. Разные
броузеры отображают это свойство по-разному: Microsoft IE отводит под фон элемента всю
доступную ширину страницы, а Netscape Navigator – лишь ширину, занимаемую этим элементом.
H4 {background-color: yellow;}
В скриптовых языках используйте object.style.backgroundColor [ = sColor ]
CSS: СВОЙСТВА ТЕКСТА
textdecoration
Устанавливает эффекты оформления шрифта, такие, как подчеркивание или зачеркнутый текст
H4 {text-decoration: underline;} - подчеркивание
A {text-decoration: none;} - стандартный текст
I {text-decoration: line-through;} - зачеркивание
B {text-decoration:overline;} - надчеркивание
texttransform
Задает преобразование регистра текста при отображении
H4 {text-transform: capitalize;} - Первая буква каждого слова преобразуется в заглавную
A {text-transform: uppercase;} - Все буквы преобразуются в заглавные
I {text-transform: lowercase;} - Все буквы преобразуются в строчные
B {text-decoration:none;} - Отменяет установленные преобразования
text-align
Определяет выравнивание элемента. Возможные значения: left, right, center, justify
P {text-align:justify}
H5 {text-align: center}
text-indent
Устанавливает отступ первой строки текста. Чаще всего используется для создания параграфов с
табулированной первой строкой.
P {text-indent: 50pt;}
line-height
Управляет интервалами между строками текста.
P {line-height: 50 %}
wordspacing
Устанавливает интервалам между словами. Можно использовать отрицательные значения
P {word-spacing: 50 %}
letterspacing
Устанавливает интервалам между буквами
P {letter-spacing: 50 pt}
vertical-align Устанавливает вертикальное положение элемента. Может принимать следующие значения: baseline
middle sub super text-top text-bottom top bottom
P {vertical-align: 50 pt}
CSS: ГРАНИЦЫ
Спецификация CSS2 описывает атрибут стиля border, который позволяет задать вид границ вокруг объектов.
Атрибут border может быть применен к любым объектам. Могут быть установлены следующие параметры
границы:
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
7
8. borderwidth
Ширина границы. Может быть задана значением в пикселях или с помощью зарезервированных слов
thin (тонкая), medium (средняя), thick (толстая).
table {border-width: 2px;}
bordercolor
Цвет границы. Может принимать значение transparent для задания невидимой, но имеющей ширину,
границы, что иногда полезно
table {border-color: green;}
borderstyle
Задает стиль рисования границы. Может принимать следующие значения: none (по умолчанию),
hidden, dotted, dashed, solid, double,groove, ridge, inset, outset
table {border-style: dashed;}
table {border-style: groove;}
Примечание
Спецификация CSS2 позволяет задать стили для каждой из сторон границы. Например: border-сторона[-атрибут].
Где сторона может принимать следующие значения: top (верхняя граница), bottom (нижняя граница), left (левая
граница) и right (правая граница). Таким образом { border-bottom-width: 1px } будет означать, что ширина нижней
границы равна 1 пикселу.
ЕДИНИЦЫ ИЗМЕРЕНИЯ
В языке HTML существует два способа задать линейные размеры элемента: пиксели и проценты. В
CSS единиц длины гораздо больше.
ЕДИНИЦЫ ИЗМЕРЕНИЯ
in - Дюймы
pt - Пункты (типограф.)
px - Пикселы
cm - Сантиметры pc - Пика
em - Вычисляется относительно размера шрифта
элемента
mm Миллиметры
% - Проценты
ex - Высота строчной буквы "x" в
шрифте
Условно единицы измерения можно разделить на три группы.
Первая группа - это величины, которые используются для измерения длин реальных предметов. К ним
относятся:
•
in - дюймы;
•
cm - сантиметры;
•
mm - миллиметры.
Ко второй группе можно отнести величины, которые пришли в CSS из типографии. То есть они
используются для установки размеров шрифта, межстрочных интервалов и прочих типографских
величин. Данная группа величин привычна полиграфистам. К ним относятся:
•
pt - типографский пункт;
•
pc - пика;
•
ex - высота строчной буквы "x" в шрифте.
Третью группу составляют величины, которые являются относительными, то есть реальный размер
элемента вычисляется относительно какой-либо иной величины. К ним относятся:
•
em - вычисляется относительно размера шрифта элемента;
•
px - пиксель. Вычисляется относительно устройства отображения;
•
% - процент. Естественно, процентные соотношения не являются единицами измерения в привычном
смысле слова. Они вычисляются относительно размеров элемента-предка.
CSS: КУРСОРЫ
Internet Explorer позволяет задавать стили для курсоров. Некоторые стили доступны только для IE 6.
all-scroll
Курсор со стрелками во все четыре стороны и точкой в центре, показывающий на возможность
скроллинга страницы в любом направлении
I {cursor: all-scroll;}
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
8
9. auto
По умолчанию. Браузер определяет самостоятельно, какой курсор требуется в данном контексте
I {cursor: auto;}
col-resize Курсор со стрелками влево-вправо и вертикальной разделяющей полоской. Используется для
индикации возможности изменения размеров по горизонтали
H4 {cursor: col-resize;}
crosshair
Курсор-крест
H4 {cursor: crosshair;}
default
Стандартный курсор, используемый системой
H4 {cursor: default;}
hand
Рука с вытянутым указательным пальцем. Используется при гиперссылке
H4 {cursor: hand;}
help
Стрелка с вопросительным знаком.
H3 {cursor: help;}
move
Курсор со 4 стрелками, показывающий возможность перемещения
H2 {cursor: move;}
no-drop
Рука с перечеркнутым кружочком. Нельзя сбросить объект в текущую позицию курсора
TD {cursor: no-drop;}
notallowed
Перечеркнутый круг. Данная операция не поддерживается
TD {cursor: not-allowed;}
pointer
Идентична стилю hand
TD {cursor: pointer;}
progress
Песочные часы, показывающие на продолжение операции
TD {cursor: progress;}
row-resize Курсор со стрелками вверх-вниз и вертикальной разделяющей полоской. Используется для индикации
возможности изменения размеров по вертикали
TD {cursor: row-resize;}
text
Текстовый курсор-каретка
TD {cursor: text;}
url(uri)
Ваш собственный курсор. Поддерживаются файлы .cur и .ani
TD {cursor:url(elogo.cur);}
verticaltext
Горизонтальная текстовая каретка для вертикального текста
TD {cursor: vertical-text;}
wait
Курсор, показывающий, что система занята и требуется подождать
TD {cursor: wait;}
*-resize
Курсоры, показывающие возможность потянуть за край окна. Вместо символа * используйте N, NE,
NW, S, SE, SW, E, или W, определяющие направление стрелок
TD {cursor: n-resize;}
CSS: ПОЛОСА ПРОКРУТКИ
Данные настройки применимы ко всем элементам, имеющим полосы прокрутки: сама страница
(элемент BODY), текстовый блок (TEXTAREA) и т.д.
scrollbar-3dlight- Определяет или устанавливает цвет верха и левой части ползунка и кнопок со стрелками на
color
полосе прокрутки
body {scrollbar-3dlight-color: green;}
scrollbar-arrowcolor
Устанавливает или определяет цвет стрелок на кнопке со стрелками
body {scrollbar-arrow-color: red;}
scrollbar-basecolor
Устанавливает или определяет цвет основных элементов ползунка: ползунка, кнопок со
стрелками, дорожки для ползунка, если не определены параметры в scrollbar-face-color
body {scrollbar-base-color: green;}
scrollbardarkshadowcolor
Устанавливает или определяет цвет тени для ползунка и кнопок со стрелками
body {scrollbar-darkshadow-color: red;}
scrollbar-facecolor
Устанавливает или определяет цвет ползунка и кнопок со стрелками. Также, если вы не задали
параметр SCROLLBAR-TRACK-COLOR, у вас изменится цвет дорожки
body {scrollbar-face-color: green;}
scrollbarhighlight-color
Устанавливает или получает цвет подсветки, создающий эффект объёмности. Это цвет,
который окаймляет освещённую часть кнопочки. Когда кнопка не нажата, то цвет заливает
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
9
10. левый верхний угол и стороны между ним, когда нажата - нижний правый угол
body {scrollbar-highlight-color: green;}
scrollbarshadow-color
Схоже с scrollbar-darkshadow-color
body {scrollbar-shadow-color: green;}
scrollbar-trackcolor
Устанавливает или получает цвет дорожки для ползунка
body {scrollbar-track-color: aqua;}
CSS: РАЗМЕР ЭЛЕМЕНТА
min-height Устанавливает или получает минимальную высоту элемента
TR {min-height: 10px;}
Данный атрибут применим к TR, TD, TH в таблице, у которой свойство table-layout имеет значение fixed
CSS: СВОЙСТВА ТАБЛИЦЫ
tablelayout
Устанавливает или получает алгоритм обработки таблицы
TABLE {table-layout: fixed;}
Имеет два значения
•
auto - По умолчанию. Браузер самостоятельно вычисляет необходимые размеры таблицы
•
fixed - Браузер не учитывает содержимое отдельных ячеек при вычислении ширины таблицы и
отдельных ячеек. Он использует значения ширины таблицы, ширины столбцов, рамок и
расстояний между ячейками. Ширина столбцов таблицы вычисляется в следующем порядке:
1. используя значение атрибута WIDTH элементов COL
2. используя значение атрибута WIDTH элементов TD первого ряда таблицы
3. если данные значения не установлены, то ширина столбцов вычисляется соответственно
контенту ячеек
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
10
11. ЛАБОРАТОРНАЯ РАБОТА № 2. ИСПОЛЬЗОВАНИЕ ПЕРЕМЕННЫХ И ЭЛЕМЕНТОВ ВВОДА.
1. Разработайте веб-страницу, которая будет спрашивать у пользователя его имя и фамилию, а потом с
помощью РНР-сценария сообщите ему, что он прошел регистрацию в системе.
Подсказка:
<html>
<body>
<h1>Программа приветствие</h1>
<form
method="post"
action="obrabotchik.php">
Пожалуйста введите имя:
<input
type="text"
name="imyaPolzovatelya"
value="Ваше имя?" />
<br>
<input
type="submit"
value="Отправить данные"/>
</form>
</body>
</html>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
11
12. <?php
print "Программа принимающее введенные пользователем данные в поле imyaPolzovatelya <br><br>";
//в ряде случаев создание переменной "на лету" запрещено администратором сервера
print "создание переменной на лету (если приветствие без указания имени пользователя, то функция отключена) <br>";
print "Привет $imyaPolzovatelya <br> <br>";
//делаем "принудительный" запрос на получение значения переменной imyaPolzovatelya
print "принудительное создание переменной <br>";
$imyaPolzovatelya = $_REQUEST["imyaPolzovatelya"];
print "Привет $imyaPolzovatelya <br>";
?>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
12
13. 2. Измените предыдущую веб-страницу чтобы в ней использовалась передача данных по методу get.
Обратите внимание на адресную строку.
Подсказка:
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
13
14. 3. Создайте веб-страницу и разместите на ней ссылки в которых бы использовалась передача данных по
методу get.
Пусть эти ссылки указывают на ваши излюбленные поисковые системы, сайты местных новостей и погоды и
другие интересные вам веб-ресурсы.
Подсказка:
http://yandex.ru/yandsearch?text=php&site=&rstr=10306&zone=all&wordforms=all&lang=en&within=1&from_day=29&from_month=9&from_year=2012&to_day=13&to_month=10&to_year=2012
&mime=html&numdoc=10&lr=10596
<a href= "адрес_ссылки_с_передачей_параметров ">открыть страницу</a>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
14
15. 3. Напишите программу, описывающую человека. Создайте соответствующую форму для ввода данных и
выведите готовый текст при помощи РНР-сценария.
Подсказка:
<html>
<body>
<h1>Укажите данные о себе</h1>
<form
method="post"
action="obrabotchik.php">
Пожалуйста введите имя человека:
<input
type="text"
name="imyaPolzovatelya"
value="Ваше имя?" />
<br>
Пожалуйста введите пароль:
<input
type="password"
name="porolPolzovatelya"
value=""/>
<br>
Пожалуйста выберите гражданство:
<input
type="radio"
name="grazhdanstvo"
value="RF"> РФ
<input
type="radio"
name="grazhdanstvo"
value="Drugoe"> Другое <br>
Пожалуйста выберите цвет глаз:
<select size="3" name="cvetGlaz">
<option value ="Karie" selected>Карие</option>
<option value ="Golubie">Голубые</option>
<option value ="Drugie">Другие</option>
</select>
<br>
<input
type="submit"
value="Отправить данные"/>
</form>
</body>
</html>
<?php
$imyaPolzovatelya = $_REQUEST["imyaPolzovatelya"];
$parolPolzovatelya = $_REQUEST["parolPolzovatelya"];
$grazhdanstvo = $_REQUEST["grazhdanstvo"];
$cvetGlaz = $_REQUEST["cvetGlaz"];
print "Привет $imyaPolzovatelya.
Вы вводили пароль $parolPolzovatelya.
Ваше гражданство $grazhdanstvo.
Вы указали $cvetGlaz цвет глаз."
?>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
15
16. ЛАБОРАТОРНАЯ РАБОТА № 3. УПРАВЛЕНИЕ ПРОГРАММОЙ С ПОМОЩЬЮ УСЛОВИЙ И
ФУНКЦИЙ.
1. Напишите программу, бросающую игральные кости с 4 и 10 гранями.
Подсказка:
<?php
$sluchChis = rand(1,3);
print "Случайное число равно $sluchChis<br>";
if ($sluchChis == 1) {
print "<imgsrc=foto$sluchChis.jpg>";
} else
if ($sluchChis == 2) {
print "<imgsrc=foto$sluchChis.jpg>";
} else
if ($sluchChis == 3) {
print "<imgsrc=foto$sluchChis.jpg>";
}
?>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
16
17. 2. Напишите программу, позволяющую пользователю решить сколько граней будет у кости используя элемент
выбора флажок.Выведите на экран случайно брошенную кость с учетом ограничения по количеству граней
(можно просто выводить цифру).
Подсказка:
<html>
<body>
<h1>Выберите максимальное число граней</h1>
<form
method="post"
action="obrabotchik.php">
<select size="3" name="chisloGranei">
<option value ="1" selected>1 грань</option>
<option value ="2">2 грани</option>
<option value ="3">3 грани</option>
</select>
<br>
<input
type="submit"
value="Отправить данные"/>
</form>
</body>
</html>
<?php
$chisloGranei = $_REQUEST["chisloGranei"];
$sluchChis = rand(1,$chisloGranei);
print "Случайноечислоравно $sluchChis<br>";
if ($sluchChis == 1) {
print "<imgsrc=foto$sluchChis.jpg>";
} else
if ($sluchChis == 2) {
print "<imgsrc=foto$sluchChis.jpg>";
} else
if ($sluchChis == 3) {
print "<imgsrc=foto$sluchChis.jpg>";
}
?>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
17
18. 3. Измените первую программу таким образом, чтобы форма и программа хранились в одном файле.
Подсказка:
<?php
$pereklychatel = $_REQUEST["pereklychatel"]; //получить значение переменной переключатель
if (empty($pereklychatel)) {
//проверить пуста ли переменная
print "<formmethod=get>";
//создать форму с отправкой данных методом get (для отслеживания)
print "<input type=text name=pereklychatel><br>";
//создатьполеввода
print "<inputtype=submitvalue=отправить>"; //создать кнопку передачи данных
print "</form>";
} else {
print "Программа запущена 2й раз";
}
?>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
18
19. 4. Создайте программу «шулерская кость», которая будет выбрасывать 1 в половине случаев и какое-либо
другое значение –в другой.
Подсказка:
<?php
$pereklychatel = $_REQUEST["pereklychatel"];
if (empty($pereklychatel)) {
print "Случайное число равно <b>1</b>";
print "<form method=get>";
print "<input type=submit value=броситьчисло>";
print "<input type=hidden name=pereklychatel value=1><br>";
print "</form>";
} else {
$sluchChis = rand(2, 100);
print "Случайноечислоравно<b>$sluchChis</b>";
print "<form method=get>";
print "<input type=submit value=броситьчисло>";
print "<input type=hidden name=pereklychatel value=><br>";
print "</form>";
}
?>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
19
20. 5. Создайте генератор веб-страниц. Подготовьте форму, в которую бы вводился заголовок страницы, цвет
фона, цвет шрифта и текст страницы. Сгенерируйте HTML-страницу с помощью этой формы.
Подсказка:
<html>
<body>
<h1>Укажите параметры веб-страницы</h1>
<form
method="post"
action="obrabotchik.php">
Введите заголовок страницы:
<input
type="text"
name="zagolovok"
value="Страница 1" />
<br>
Пожалуйста укажите цвет фона в HEX-формате:
<br>
<table border="0">
<tr>
<td>Красный:</td>
<td><input
type="text" size="2" name="R" value="FF" /><br></td>
</tr>
<tr>
<td>Зеленый:</td>
<td><input
type="text" size="2" name="G" value="00" /><br></td>
</tr>
<tr>
<td>Голубой:</td>
<td><input
type="text" size="2" name="B" value="00" /><br></td>
</tr>
</table>
Пожалуйста выберите цвет шрифта:
<select name="cvetShrifta">
<option value ="Green">Зеленый</option>
<option value ="Blue">Голубой</option>
</select>
<br>
Введитетекстстраницы: <br>
<textarea name="tekst" rows="10" cols="50">
Введите свой текст.
</textarea>
<br>
<input
type="submit"
value="Генерировать страницу"/>
</form>
</body>
</html>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
20
22. ЛАБОРАТОРНАЯ РАБОТА № 4. ЦИКЛЫ И МАССИВЫ.
1. Напишите игру «Казино».
В начале игры вы получаете 100 руб. на счет.
Ставка в каждом розыгрыше составляет 2 руб.
ПК бросает 5 костей.
Вы решаете, какую кость оставить, а какую – бросить снова.
После второго броска ПК проверяет выпавшие комбинации костей.
Вы выигрываете деньги, если выпало 2, 3, 4 или 5 одинаковых цифр или стрит (5 цифр по порядку).
ИЗМЕНИТЕ ИГРУ «ПОКЕР В КОСТИ» С ПОМОЩЬЮ CSS.
ДОБАВЬТЕ СОБСТВЕННЫЙ ФОН, ПОМЕНЯЙТЕ ИЗОБРАЖЕНИЯ КОСТЕЙ ИЛИ МОДИФИЦИРУЙТЕ
СУММЫ ВЫПЛАТ, СМЕСТИВ ИГРОВОЙ БАЛАНС ПО СВОЕМУ ЖЕЛАНИЮ.
КОД ДАННОЙ ПРОГРАММЫ РАБОТАЕТ НЕКОРРЕКТНО!!!
ИСПРАВЬТЕ ЕГО В СООТВЕТСТВИИ С УСЛОВИЕМ ЗАДАЧИ!
Подсказка:
<?php
$etoVtoroiBrosok = $_REQUEST["etoVtoroiBrosok"];
$schet = $_REQUEST["schet"];
//у тега form отсутствует атрибут action, поэтому форма обратится сама к себе
//если программа запущена впервые
if (empty($schet)) {
$schet = 100;
}
function brositKosti() {
global $kost, $etoVtoroiBrosok, $galochka;
print "<table border = 1> <td><tr>";
//если это первый бросок, то галочку необходимо вывести под каждой костью
//галочка передает значение ТОЛЬКО если она отмечена
for ($i = 0; $i < 5; $i++) {
if($galochka[$i] == ""){
$kost[$i] = rand(1,6);
} else {
$kost[$i] = $galochka[$i];
}
//необходимо сохранить в папке изображения костей 50x50 px с именем типа f1.jpg, f2.jpg и т.д.
$kartinka = "f$kost[$i].jpg";
//вывод изображения кости
print "<td><img src=$kartinka height=50 width=50><br>";
//вывести галочки только при первом броске
if ($etoVtoroiBrosok == FALSE) {
//checked=true
print "<input type=checkbox name=$galochka[$i] value=$kost[$i]> </td>";
}
} //завершение цикла for
//вывод кнопки и окончание таблицы
print "</tr></td>";
print "<tr> <td colspan=5> <input type=submit value=OK> </td> <tr>";
print "</table>";
} //завершение функции brositKosti
function podschet() {
//цель функции: каждый кон получать ставку от игрока в размере 2 рублей.
global $kost, $schet;
//обнулить сумму выигрыша
$summa = 0;
//вычесть ставку на этот кон
$schet -= 2;
//подсчет костей
//в массиве sovpadenieChisel храниться сколько раз выпало то или иное значение
//при анализе проще определить различные комбинации
//$sovpadenieChisel[1] содержит число единиц, выпавших в костях
//$sovpadenieChisel[2] отображает сколько выпало двоек и т.д.
//$sovpadenieChisel = array[6];
for ($zn = 1; $zn <6; $zn++) {
for ($chKost = 0; $chKost < 5; $chKost++) {
if ($kost[$chKost] == $zn) {
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
22
23. $sovpadenieChisel[$zn]++;
}
}
}
//выводим результаты
//for ($i = 1; $i <= 6; $i++) {
//print "$i: $znachKosti[$i] <br>";
//}
//считаем комбинации по два, три, четыре, пять
$chisloDvoek = 0;
$chisloTroek = 0;
$chisloChetverok = 0;
$chisloPyaterok = 0;
//если на костях выпало 1, 1, 5, 5, 5 то $sovpadenieChisel[1] будет равно 2
//а $sovpadenieChisel[5] будет равно 3
//после switch $chisloDvoek будет равно 1 и $chisloTroek тоже будет равно 1, а остальные переменные будут равны нулю
for ($i = 1; $i <= 6; $i++) {
switch($sovpadenieChisel[$i]){
case 2: $chisloDvoek++;
break;
case 3: $chisloTroek++;
break;
case 4: $chisloChetverok++;
break;
case 5: $chisloPyaterok++;
break;
}
}
//проверяем, есть ли две пары
if ($chisloDvoek == 2) {
print "У вас две пары <br>";
$summa = 1;
}
//проверяем, есть ли три или три плюс два
if ($chisloTroek == 1) {
if ($chisloDvoek == 1) {
//три плюс два
print "У вас full house (3+2) <br>";
$summa = 5;
} else {
print "У вас три одинаковых значения<br>";
$summa = 2;
}
}
//ищем 4 одинаковых значения
if ($chisloChetverok == 1) {
print "У вас четыре одинаковых значения<br>";
$summa = 5;
}
//ищем 5 одинаковых значения
if ($chisloPyaterok == 1) {
print "У вас пять одинаковых значений<br>";
$summa = 10;
}
//ищем стрит
if (($sovpadenieChisel[1] == 1)
&& ($sovpadenieChisel[2] == 1)
&& ($sovpadenieChisel[3] == 1)
&& ($sovpadenieChisel[4] == 1)
&& ($sovpadenieChisel[5] == 1)) {
print "У вас стрит (5 цифр по порядку)<br>";
$summa = 10;
}
if (($sovpadenieChisel[2] == 1)
&& ($sovpadenieChisel[3] == 1)
&& ($sovpadenieChisel[4] == 1)
&& ($sovpadenieChisel[5] == 1)
&& ($sovpadenieChisel[6] == 1)) {
print "У вас стрит (5 цифр по порядку)<br>";
$summa = 10;
}
print "Вы выиграли 2 руб.<br>";
print "Ваша сумма $summa руб.<br>";
$schet += $summa;
} //конец функции podschet
print "<form method=get>";
//функция бросающая кость и выводящая их на экран
brositKosti();
if ($etoVtoroiBrosok == TRUE) {
print "<br>Был совершен 2й бросок<br>";
$etoVtoroiBrosok = FALSE; //выполняется второй бросок
podschet(); //подсчитать выигрыш или проигрыш
} else {
print "<br>Компьютер бросил кости, какие кости бросить повторно? <br>";
$etoVtoroiBrosok = TRUE;
}
vivodRezultatov();
function vivodRezultatov() {
//вывод результатов
global $schet, $etoVtoroiBrosok;
print "Счет: $schet";
print "<br><b>Примечание: </b>в случае нуля совпадений, не забывайте что за бросок от общей суммы счета отнимается 2 руб.";
//сохраняем переменные в скрытых полях
print "<input type=hidden name=etoVtoroiBrosok value=$etoVtoroiBrosok>";
print "<input type=hidden name=schet value=$schet>";
} //конец vivodRezultatov
print "</form>";
?>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
23
24. <?php session_start() ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>poker dice</title>
<link rel = "stylesheet"
type = "text/css"
href = "pd.css" />
</head>
<body>
<h1>pokerDice.php</h1>
<?php
//set things up if it's the first time here, otherwise play
if (filter_has_var(INPUT_POST, "doNext")){
play();
} else {
startGame();
} // end if
function play(){
//alternate control between firstPass and secondPass
//functions based on $doNext
$doNext = filter_input(INPUT_POST, "doNext");
if ($doNext == "firstPass"){
firstPass();
} else {
secondPass();
evaluate();
} // end if
} // end play
function startGame(){
// if it's the first time here, set up initial cash,
// and do firstPass
$cash = 100;
$_SESSION["cash"] = 100;
firstPass();
} // end reset
function firstPass(){
$cash = $_SESSION["cash"];
print <<< HERE
<h2>First Pass</h2>
<form method = "post"
action = "">
<fieldset>
HERE;
for ($i = 0; $i < 5; $i++){
$die[$i] = rand(1, 6);
//print "$i: $die[$i] ";
print <<< HERE
<div class = "dieImage">
<img src = "die$die[$i].jpg"
alt = "$i" />
<input type = "checkbox"
name = "keepIt[$i]"
value = "$die[$i]" />
</div>
HERE;
} // end for
print <<< HERE
<input type = "hidden"
name = "doNext"
value = "secondPass" />
<button type = "submit">
go
</button>
<p>Cash: $cash</p>
</fieldset>
</form>
HERE;
$_SESSION["cash"] = $cash;
} // end firstPass
function secondPass(){
global $die;
//get cash from session variable
$cash = $_SESSION["cash"];
//print "cash: $cash <br />";
print <<< HERE
<h2>Second Pass</h2>
<form method = "post"
action = "">
<fieldset>
HERE;
//check to see if keepIt exists
// (which happens if any of the checkboxes is checked)
if (filter_has_var(INPUT_POST, "keepIt")){
//pull all values from form
$formVals = filter_input_array(INPUT_POST);
//extract $keepIt array (easiest way to handle array input)
$keepIt = $formVals["keepIt"];
for ($i = 0; $i < 5; $i++){
//if any values are empty, replace them with zero
if (empty($keepIt[$i])){
$keepIt[$i] = 0;
} // end if
//print "$i) $keepIt[$i] <br />";
} // end for loop
} else {
//keepIt doesn't exist, so make it with
//all zero values
$keepIt = array(0, 0, 0, 0, 0);
} // end if
for ($i = 0; $i < 5; $i++){
//replace the image if the current value
//of keepIt is non-zero
if ($keepIt[$i] == 0){
$die[$i] = rand(1, 6);
} else {
$die[$i] = $keepIt[$i];
} // end if
print <<< HERE
<div class = "dieImage">
<img src = "die$die[$i].jpg"
alt = "$i" />
</div>
HERE;
} // end for
print <<< HERE
<input type = "hidden"
name = "doNext"
value = "firstPass" />
<button type = "submit">
go
</button>
</fieldset>
</form>
HERE;
} // end secondPass
function evaluate(){
global $die;
//set up payoff
$payoff = 0;
//create $numVals
for($i = 1; $i <= 6; $i++){
$numVals[$i] = 0;
} // end for loop
//count the dice
for ($theVal = 1; $theVal <= 6; $theVal++){
for ($dieNum = 0; $dieNum < 5; $dieNum++){
if ($die[$dieNum] == $theVal){
$numVals[$theVal]++;
} // end if
} // end dieNum for loop
} // end theVal for loop
//print out results
// for ($i = 1; $i <= 6; $i++){
//
// } // end for loop
print "$i: $numVals[$i]<br />n";
//count how many pairs, threes, fours, fives
$numPairs = 0;
$numThrees = 0;
$numFours = 0;
$numFives = 0;
for ($i = 1; $i <= 6; $i++){
switch ($numVals[$i]){
case 2:
$numPairs++;
break;
case 3:
$numThrees++;
break;
case 4:
$numFours++;
break;
case 5:
$numFives++;
break;
} // end switch
} // end for loop
print "<p> n";
//check for two pairs
if ($numPairs == 2){
print "You have two pairs!<br />n";
$payoff = 1;
} // end if
//check for three of a kind and full house
if ($numThrees == 1){
if ($numPairs == 1){
//three of a kind and a pair is a full house
print "You have a full house!<br />n";
$payoff = 5;
} else {
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
24
25. print "You have three of a kind!<br />n";
$payoff = 2;
} // end 'pair' if
} // end 'three' if
//check for four of a kind
if ($numFours == 1){
print "You have four of a kind!<br />n";
$payoff = 5;
} // end if
//check for five of a kind
if ($numFives == 1){
print "You got five of a kind!<br />n";
$payoff = 10;
} // end if
//check for straights
if (($numVals[1] == 1)
&& ($numVals[2] == 1)
&& ($numVals[3] == 1)
&& ($numVals[4] == 1)
&& ($numVals[5] == 1)){
print "You have a straight!<br />n";
$payoff = 10;
} // end if
if (($numVals[2] == 1)
&& ($numVals[3] == 1)
&& ($numVals[4] == 1)
&& ($numVals[5] == 1)
&& ($numVals[6] == 1)){
print "You have a straight!<br />n";
$payoff = 10;
} // end if
$cash = $_SESSION["cash"];
//print "Cash: $cash<br />n";
//subtract some money for this roll
$cash -= 2;
print "You bet 2<br />n";
print "Payoff is $payoff<br />n";
$cash += $payoff;
print "Cash: $cash<br />n";
print "</p> n";
//store cash back to session:
$_SESSION["cash"] = $cash;
} // end evaluate
?>
</body>
</html>
2. Напишите игру «Угадай число».
Пусть компьютер создает число и дает пользователю возможность его угадать.
Сообщайте пользователю, является ли его ответ слишком большим, слишком маленьким или правильным.
После того как пользователь угадает значение, сообщите ему, сколько попыток для этого
потребовалось.
Для этой игры не нужны массивы, зато понадобится хранить данные в скрытых полях формы.
Подсказка:
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
25
26. <?php
//создаем форму ввода, а данные отправляем в файл 2.php методом get (через адресную строку)
print "<form method=get action=2.php>";
print "Угадай число от 0 до 100 <br><br>";
print "Введите свой ответ: ";
//создаем поле ввода ответа
print "<input type=text size = 3 name=otvetPolzovatelya> <br>";
//создаем кнопку отправки ответа
print "<input type=submit value=OK>";
//функция генерирует случайное число в диапазоне от 0 до 100
function zagodatChislo() {
$sluchChis = rand(0, 100);
//используем скрытое поле для сохранения значения переменной $sluchChis
print "<input type=hidden size = 3 name=sluchChis value=$sluchChis> <br>";
} //конец zagodatChislo
//вызываем функцию создания случайного числа
zagodatChislo();
print "</form>";
?>
<?php
//принимаем значения переменных из файла 1.php
$sluchChis = $_REQUEST["sluchChis"];
$otvetPolzovatelya = $_REQUEST["otvetPolzovatelya"];
//создаем форму для отправки данных самой себе
//т.к. данный файл содержит функцию проверки введенного пользователем числа
print "<form method=get action=2.php>";
//функция проверяющая совпадение ответа пользователя со сгенерированным случайным числом
function proveritChisla() {
//объявляем переменные глобальными, т.к. используются и за пределами функции
global $otvetPolzovatelya, $sluchChis;
if ($otvetPolzovatelya == $sluchChis) {
print "Вы угадали! Число равно $sluchChis.";
print "<br> <a href=1.php>Запустить игру повторно?</a>";
} else if ($otvetPolzovatelya < $sluchChis) {
print "Случайное число больше!";
} else {
print "Случайное число меньше!";
}
} //конец proveritChisla
//первый блок if требует того, чтобы пользователь ввел какое либо число
if (empty($otvetPolzovatelya)) {
print "Ошибка ввода ответа! <br>";
print "<a href=1.php>Запустить игру повторно?</a>";
print "<br> Случайное число равнялось: $sluchChis";
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
26
27. } else {
//ВЫЗЫВАЕМ ФУНКЦИЮ СРАВНЕНИЯ ОТВЕТА СО СЛУЧАЙНЫМ ЧИСЛОМ
proveritChisla();
//если введеное число больше ИЛИ меньше случайного числа
//то необходимо создать поле ввода ответа, для повторного ввода значения пользователем
if ($otvetPolzovatelya != $sluchChis) {
print "<br>Введите свой ответ: ";
print "<input type=text size = 3 name=otvetPolzovatelya> <br>";
//сохраняем введенный во второй раз ответ пользователя в скрытое поле
print "<input type=hidden size = 3 name=sluchChis value=$sluchChis> <br>";
print "<input type=submit value=OK>";
}
} //конец if
?>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
27
28. 3. Перепишите игру «Угадай число» наоборот.
Пусть пользователь загадывает случайное число от 1 до 100, а компьютер угадывает правильный ответ.
Пользователь будет выбирать из вариантов «слишком много», «слишком мало», «угадал».
Ваш алгоритм должен угадывать любое число не больше чем за семь ходов.
Подсказка:
<?php
//создаем форму ввода, а данные отправляем в файл 2.php методом get (через адресную строку)
print "<form method=get action=2.php>";
print "Компьютер попытается угадать ваше число!";
print "<br> Придумайте число от 0 до 100: ";
//создаем поле ввода ответа
print "<input type=text size=3 name=chisloPolzovatelya> <br>";
//создаем кнопку отправки ответа
print "<input type=submit value=OK>";
print "</form>";
?>
<?php
//принимаем значение переменной из файла 1.php
$chisloPolzovatelya = $_REQUEST["chisloPolzovatelya"];
//создаем форму для отправки данных самой себе
print "<form method=get action=2.php>";
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
28
29. //ПК генерирует случайное число в диапазоне от 0 до 100 и сверяет его с "придуманным" числом
function PCugadivaetChislo() {
global $chisloPolzovatelya, $sluchChis;
$sluchChis = rand(0, 100);
//используем скрытое поле для сохранения значения переменной $sluchChis
print "<input type=text size = 3 name=chisloPolzovatelya value=$chisloPolzovatelya> <br>";
print "<input type=text size = 3 name=sluchChis value=$sluchChis> <br>";
if ($chisloPolzovatelya == $sluchChis) {
print "ПК отгадал Ваше число! Число равно $sluchChis.";
print "<br> <a href=1.php>Запустить игру повторно?</a>";
} else if ($chisloPolzovatelya < $sluchChis) {
print "ПК необходимо уменьшить число!<br>";
print "<input type=submit value=OK>";
} else {
print "ПК необходимо увеличить число!<br>";
print "<input type=submit value=OK>";
}
} //конец PCugadivaetChislo
//первый блок if требует того, чтобы пользователь ввел какое-либо число
if (empty($chisloPolzovatelya)) {
print "Вы не придумали число! <br>";
print "<a href=1.php>Запустить игру повторно?</a>";
} else {
PCugadivaetChislo();
}
print "</form>";
?>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
29
30. 4. Напишите программу, случайным образом сдающую карты для игры в покер.
Она должна просто сдать пять случайных карт.
Для хранения колоды используйте массив.
Подсказка:
<?php
print "Программа выдающая (генерирующая) 5 карт (случайных чисел в диапазоне от 0 до 35) <br>";
//создаем массив значений (имен файлов с изображением карт)
$cards = array( "2c.gif", "2d.gif", "2h.gif", "2s.gif", //крести, буби, черви, пики
"3c.gif", "3d.gif", "3h.gif", "3s.gif",
"4c.gif", "4d.gif", "4h.gif", "4s.gif",
"5c.gif", "5d.gif", "5h.gif", "5s.gif",
"6c.gif", "6d.gif", "6h.gif", "6s.gif",
"7c.gif", "7d.gif", "7h.gif", "7s.gif",
"8c.gif", "8d.gif", "8h.gif", "8s.gif",
"9c.gif", "9d.gif", "9h.gif", "9s.gif",
"tc.gif", "td.gif", "th.gif", "ts.gif", //десятка
"jc.gif", "jd.gif", "jh.gif", "js.gif", //валет
"qc.gif", "qd.gif", "qh.gif", "qs.gif", //королева
"kc.gif", "kd.gif", "kh.gif", "ks.gif",
//король
"ac.gif", "ad.gif", "ah.gif", "as.gif" ); //туз
//пусть значение карт равно 1
$c1 = $c2 = $c3 = $c4 = $c5 = 1;
//пока одно из случайных чисел равно другому случайному числу требуется создавать случайные
числа
while (
($c2 == $c1)
| ($c3 == $c2) | ($c3 == $c1)
| ($c4 == $c3) | ($c4 == $c2) | ($c4 == $c1)
| ($c5 == $c4) | ($c5 == $c3) | ($c5 == $c2) | ($c5 == $c1)
){
//требуется число в диапазоне от 0 до 35 (36 чисел)
//т.к. первый элемент массива имеет индекс 0
//т.е. cards[0] = 2c.gif
$c1 = rand(0,35);
$c2 = rand(0,35);
$c3 = rand(0,35);
$c4 = rand(0,35);
$c5 = rand(0,35);
};
//пять случайных чисел создано
print "Эти случайные числа есть индексы массива cards: $c1, $c2, $c3, $c4, $c5 <br>";
print "<img src= ./papka_s_kartami/$cards[$c1]> ";
print "<img src= ./papka_s_kartami/$cards[$c2]> ";
print "<img src= ./papka_s_kartami/$cards[$c3]> ";
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
30
32. ЛАБОРАТОРНАЯ РАБОТА № 5. РАБОТА С ФАЙЛАМИ.
1. Написать программу сохраняющую файл на ПК.
Подсказка:
<?php
$moi_tekst = "Данный текст будет записан в файл.";
//открыть файл на стороне сервера, если его не существует, то создать
//в качестве имени можно указать относительную ссылку
//функция fopen возвращает целое число (дескриптор, указатель), которое используется
//для обращения в следующих функциях
//w – модификатор доступа write (содержимое перезаписывается)
//r – модификатор доступа read
//a – модификатор доступа add (запись в конец файла)
//r+w+ – чтение и запись
//файл tekst_file.txt будет размещен в папке с php-программой, например, в папке www
$zapis_chtenie = fopen("tekst_file.txt", "w");
//указываем куда записать данные и какие
fputs($zapis_chtenie, $moi_tekst);
//завершить запись в файл
fclose($zapis_chtenie);
?>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
32
33. 2. Написать программу считывающую файл и выводящую его содержимое.
Подсказка:
<?php
//если файл не существует вместо указателя получим FALSE
$zapis_chtenie = fopen("tekst_file.txt", "r");
//вывод первой строки текста из файла
$stroka = fgets($zapis_chtenie);
print "<center>$stroka</center> <br>";
//вывод оставшейся части текста
//пока не достигнут конец файла
while(!feof($zapis_chtenie)) {
//получить одну строку файла
$stroka = fgets($zapis_chtenie);
print "$stroka <br>";
}
fclose($zapis_chtenie);
?>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
33
34. 3. Написать программу выводящую список файлов jpg, gif содержащихся в заданной папке.
Подсказка:
<?php
//программа выводит картинки, хранящиеся в папке с php-программой в браузер
//а также создает файл с названиями gif-, jpg-файлов, хранящихся в папке
//указываем путь к папке с картинками
//список будет сохранен в файле spisok_kartinok.html
$imyaPapki = "C:wampwww";
$deskriptor_papki = opendir($imyaPapki);
//изменить текущий каталог на указанный в качестве параметра
//возвращает TRUE в случае успешного завершения или FALSE в случае ошибки
chdir($imyaPapki);
//записать имена всех файлов в переменную $massiv_failov
while ($tekushii_fail !== false){
$tekushii_fail = readDir($deskriptor_papki);
$massiv_failov[] = $tekushii_fail;
} // конец цикла while
//извлекаем картинки gif и jpg из массива со списком файлов
//фильтруем картинки в соответствии с заданным шаблоном
//используем регулярные выражения
// | означает ИЛИ
// $ означает КОНЕЦ СТРОКИ (дополнительно смотри операторы регулярных выражений)
$kartinki = preg_grep("/jpg$|gif$/", $massiv);
//создаем файл для сохранения списка картинок
$fp = fopen("spisok_kartinok.html", "w");
foreach ($kartinki as $tekushii_fail) {
//выводим картинку в браузер
$vivod_v_brauzer = $tekushii_fail;
print "<img src=$vivod_v_brauzer height=50 width=50> <br><br>";
//записываем имя картинки в файл
fputs ($fp, $vivod_v_brauzer);
fputs ($fp, " ");
} // конец цикла foreach
//сохраняем текстовый файл с именами картинок
fclose($fp);
?>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
34
35. ОПЕРАТОРЫ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ
ОПЕРАТОР
ОПИСАНИЕ
ПРИМЕР
ШАБЛОНА
СОВПАДЕНИЕ
НЕСОВПАДЕНИЕ
.
Любой символ кроме перевода на
новую строку
.
e
n
^
Начало строки
^a
apple
banana
$
Конец строки
a$
banana
apple
[characters]
Любой символ в скобках
[abcABC]
a
d
[char range]
Диапазон символов
[a-zA-z]
r
9
d
Любая цифра
ddd-dddd
123–4567
the-thing
b
Границы слова
btheb
the
theater
+
Одно или более вхождение
предыдущего символа
d+
1234
text
*
Ни одного или несколько вхождений
предыдущего символа
[a-zA-z]d*
{digit}
Повторить предыдущий символ
указанное число раз
d{3}-d{4}
123–4567
999-99-9999
|
Оператор ИЛИ
apple|banana
apple, banana
peach
(pattern
segment)
Сохранить результат в шаблоне
памяти, возвращенном численным
кодом
(^.).*/1
gig, blab (любое другое слово начинающееся или any other word
заканчивающееся одной и той же буквой)
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
35
36. 4. Улучшите программу тестирования. Добавьте возможность отправки результатов тестирования по
электронной почте, анализ результатов тестирования, улучшите страницу редактирования тестов или добавьте
что-нибудь свое.
QuizMachine.php
(главная страница)
editQuiz.php
(редактировать
тест)
takeQuiz.php
(вывод теста)
showLog.php
(вывод журнала
ответов)
writeQuiz.php
(сохранение
файлов теста)
gradeQuiz.php
(проверка
ответов)
QuizMachine.php – Панель управления – стартовое окно программы
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Quiz Builder</title>
<link rel = "stylesheet"
type = "text/css"
href = "quiz.css" />
</head>
<body>
<h1>Quiz Machine</h1>
<?php
getFiles();
showTest();
showEdit();
showLog();
function getFiles(){
//get list of all files for use in other routines
global $dirPtr, $theFiles;
chdir(".");
$dirPtr = openDir(".");
$currentFile = readDir($dirPtr);
while ($currentFile !== false){
$theFiles[] = $currentFile;
$currentFile = readDir($dirPtr);
} // end while
} // end getFiles
function showTest(){
//print a list of tests for user to take
global $theFiles;
//select only quiz html files
$testFiles = preg_grep("/mas$/", $theFiles);
//generate the select box first
$selQuiz = " <select name = "takeFile"> n";
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
36
37. foreach ($testFiles as $myFile){
$fileBase = substr($myFile, 0, strlen($myFile) - 4);
$selQuiz .= <<<HERE
<option value = "$fileBase">
$fileBase
</option>
HERE;
} // end foreach
$selQuiz .= " </select> n";
print <<<HERE
<form action = "takeQuiz.php"
method = "post">
<fieldset>
<h3>Take a quiz</h3>
<label>quiz password</label>
<input type = "password"
name = "password" />
<label>quiz</label>
$selQuiz
<button type = "submit">
Take quiz
</button>
</fieldset>
</form>
HERE;
} // end showTest
function showEdit(){
// let user select a master file to edit
global $theFiles;
//get only quiz master files
$testFiles = preg_grep("/mas$/", $theFiles);
//generate the select box first
$selEdit = " <select name = "editFile"> n";
foreach ($testFiles as $myFile){
$fileBase = substr($myFile, 0, strlen($myFile) - 4);
$selEdit .= <<<HERE
<option value = "$fileBase">
$fileBase
</option>
HERE;
} // end foreach
// add a 'new quiz' option
$selEdit .= <<<HERE
<option value = "new">
new quiz
</option>
HERE;
$selEdit .= "
</select> n";
//edit a quiz
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
37
38. print <<<HERE
<form action = "editQuiz.php"
method = "post">
<fieldset>
<h3>Edit a quiz</h3>
<label>admin password</label>
<input type = "password"
name = "password"
value = "absolute"/>
<label>quiz</label>
$selEdit
<button type = "submit">
Edit quiz
</button>
</fieldset>
</form>
HERE;
} // end showEdit
function showLog(){
//let user choose from a list of log files
global $theFiles;
$testFiles = preg_grep("/log$/", $theFiles);
//generate the select box first
$selLog = " <select name = "logFile"> n";
foreach ($testFiles as $myFile){
$fileBase = substr($myFile, 0, strlen($myFile) - 4);
$selLog .= <<<HERE
<option value = "$fileBase">
$fileBase
</option>
HERE;
} // end foreach
$selLog .= " </select> n";
//edit a quiz
print <<<HERE
<form action = "showLog.php"
method = "post">
<fieldset>
<h3>View a quiz log</h3>
<label>admin password</label>
<input type = "password"
name = "password"
value = "absolute" />
<label>quiz</label>
$selLog
<button type = "submit">
View log
</button>
</fieldset>
</form>
HERE;
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
38
39. } // end showLog
?>
</body>
</html>
editQuiz.php – Редактор теста – вызывается через QuizMachine.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Quiz Builder</title>
<link rel = "stylesheet"
type = "text/css"
href = "quiz.css" />
</head>
<body>
<h1>Edit a Quiz</h1>
<?php
//retrieve variables from form
$password = filter_input(INPUT_POST, "password");
$editFile = filter_input(INPUT_POST, "editFile");
if ($password != "absolute"){
print <<<HERE
<p class = "error">
Incorrect Password.<br />
You must have a password in order to edit this quiz.
</p>
</body>
</html>
HERE;
} else {
//check to see if user has chosen a form to edit
if ($editFile == "new"){
//if it's a new file, put in some dummy values
$quizName = "sample test";
$quizEmail = "root@localhost";
$quizData = "q:a:b:c:d:correct";
$quizPwd = "php";
} else {
//open up the file and get the data from it
$editFile .= ".mas";
$fp = fopen($editFile, "r");
$quizName = fgets($fp);
$quizEmail = fgets($fp);
$quizPwd = fgets($fp);
$quizData = "";
while (!feof($fp)){
$quizData .= fgets($fp);
} // end while
} // end 'new form' if
print <<<HERE
<form action = "writeQuiz.php"
method = "post">
<fieldset>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
39
40. <label>Quiz Name</label>
<input type = "text"
name = "quizName"
value = "$quizName" />
<label>Instructor Email</label>
<input type = "text"
name = "quizEmail"
value = "$quizEmail" />
<label>Password</label>
<input type = "text"
name = "quizPwd"
value = "$quizPwd" />
<textarea name = "quizData"
rows = "20"
cols = "60">
$quizData</textarea>
<button type = "submit">
save quiz
</button>
</fieldset>
</form>
HERE;
} // end if
?>
</body>
</html>
writeQuiz.php – Запись теста
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Write Quiz</title>
<link rel = "stylesheet"
type = "text/css"
href = "quiz.css" />
</head>
<body>
<?php
//given a quiz file from editQuiz,
//generates a master file and an HTML file for the quiz
//load variables from form
$quizName = filter_input(INPUT_POST, "quizName");
$quizEmail = filter_input(INPUT_POST, "quizEmail");
$quizPwd = filter_input(INPUT_POST, "quizPwd");
$quizData = filter_input(INPUT_POST, "quizData");
//open the output file
$fileBase = str_replace(" ", "_", $quizName);
$htmlFile = $fileBase . ".html";
$masFile = $fileBase . ".mas";
$htfp = fopen($htmlFile, "w");
$htData = buildHTML();
fputs($htfp, $htData);
fclose($htfp);
$msfp = fopen($masFile, "w");
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
40
41. $msData = buildMas();
fputs($msfp, $msData);
print <<<HERE
<pre>
$msData
</pre>
HERE;
fclose($msfp);
function buildMas(){
//builds the master file
global $quizName, $quizEmail, $quizPwd, $quizData;
$msData = $quizName . "n";
$msData .= $quizEmail . "n";
$msData .= $quizPwd . "n";
$msData .= $quizData;
return $msData;
} // end buildMas
function buildHTML(){
global $quizName, $quizData;
$htData = <<<HERE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>$quizName</title>
<style type = "text/css">
ol ol {
border-bottom: 1px solid black;
}
ol ol li {
list-style-type: upperAlpha;
}
</style>
</head>
<body>
HERE;
//get the quiz data
$problems = split("n", $quizData);
$htData .= <<<HERE
<h1>$quizName</h1>
<form action = "gradeQuiz.php"
method = "post">
<fieldset>
<label>Name</label>
<input type = "text"
name = "student" />
<ol>
HERE;
$questionNumber = 1;
foreach ($problems as $currentProblem){
list($question, $answerA, $answerB, $answerC, $answerD, $correct) =
explode (":", $currentProblem);
$htData .= <<<HERE
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
41
42. <li>
$question
<ol>
<li>
<input type = "radio"
name = "quest[$questionNumber]"
value = "A" />
$answerA
</li>
<li>
<input type = "radio"
name = "quest[$questionNumber]"
value = "B" />
$answerB
</li>
<li>
<input type = "radio"
name = "quest[$questionNumber]"
value = "C" />
$answerC
</li>
<li>
<input type = "radio"
name = "quest[$questionNumber]"
value = "D" />
$answerD
</li>
</ol>
</li>
HERE;
$questionNumber++;
} // end foreach
$htData .= <<<HERE
</ol>
<input type = "hidden"
name = "quizName"
value = "$quizName" />
<input type = "submit"
value = "submit quiz" />
</fieldset>
</form>
</body>
</html>
HERE;
//print $htData;
return $htData;
} // end buildHTML
?>
</body>
</html>
takeQuiz.php – Прохождение теста
<?php
//takeQuiz.php
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
42
43. //given a quiz file, prints out that quiz
//no doctype, because that's embedded in HTML
//get password and filebase from form
$takeFile = filter_input(INPUT_POST, "takeFile");
$password = filter_input(INPUT_POST, "password");
//get the password from the file
$masterFile = $takeFile . ".mas";
$fp = fopen($masterFile, "r");
//the password is the third line, so get the first two lines, but ignore them
$dummy = fgets($fp);
$dummy = fgets($fp);
$magicWord = fgets($fp);
$magicWord = rtrim($magicWord);
fclose($fp);
if ($password == $magicWord){
$htmlFile = $takeFile . ".html";
//print out the page if the user got the password right
readFile($htmlFile);
} else {
print <<<HERE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Quiz Builder</title>
<link rel = "stylesheet"
type = "text/css"
href = "quiz.css" />
</head>
<body>
<p class = "error">
Incorrect Password.<br />
You must have a password in order to take this quiz.
</p>
</body>
</html>
HERE;
} // end if
?>
gradeQuiz.php – Выставление оценки за прохождение теста
<?php
//retrieve data from form
$student = filter_input(INPUT_POST, "student");
$quizName = filter_input(INPUT_POST, "quizName");
$quest = $_REQUEST["quest"];
print <<<HERE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Grade for $quizName, $student</title>
<link rel = "stylesheet"
type = "text/css"
href = "quiz.css" />
</head>
<body>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
43
44. <h1>Grade for $quizName, $student</h1>
HERE;
//open up the correct master file for reading
$fileBase = str_replace(" ", "_", $quizName);
$masFile = $fileBase . ".mas";
$msfp = fopen($masFile, "r");
$logFile = $fileBase . ".log";
//the first three lines are name, instructor's email, and password
$quizName = fgets($msfp);
$quizEmail = fgets($msfp);
$quizPwd = fgets($msfp);
//step through the questions building an answer key
$numCorrect = 0;
$questionNumber = 1;
while (!feof($msfp)){
$currentProblem = fgets($msfp);
list($question, $answerA, $answerB, $answerC, $answerD, $correct) =
split (":", $currentProblem);
$key[$questionNumber] = $correct;
$questionNumber++;
} // end while
fclose($msfp);
//Check each answer from user
for ($questionNumber = 1; $questionNumber <= count($quest); $questionNumber++){
$guess = $quest[$questionNumber];
$correct = $key[$questionNumber];
$correct = rtrim($correct);
//print "$questionNumber, Guess = $guess, Correct = $correct.<br>n";
if ($guess == $correct){
//user got it right
$numCorrect++;
print "<p>problem # $questionNumber was correct</p> n";
} else {
print <<<HERE
<p style = "color: red">
problem # $questionNumber was incorrect
</p>
HERE;
} // end if
} // end for
$percentage = ($numCorrect /count($quest)) * 100;
print <<<HERE
<p>
you got $numCorrect right
for $percentage percent
</p>
HERE;
date_default_timezone_set("AMERICA/INDIANA/INDIANAPOLIS");
$today = date("F j, Y, g:i a");
//print "Date: $today<br>n";
$location = getenv("REMOTE_ADDR");
//print "Location: $location<br>n";
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
44
45. //add results to log file
$lgfp = fopen($logFile, "a");
$logLine = $student . "t";
$logLine .= $today . "t";
$logLine .= $location . "t";
$logLine .= $numCorrect . "t";
$logLine .= $percentage . "n";
fputs($lgfp, $logLine);
fclose($lgfp);
?>
</body>
</html>
showLog.php – Просмотр журнала под учетной записью
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Quiz Builder</title>
<link rel = "stylesheet"
type = "text/css"
href = "quiz.css" />
</head>
<body>
<?php
//showLog.php
//shows a log file
//requires admin password
$password = filter_input(INPUT_POST, "password");
$logFile = filter_input(INPUT_POST, "logFile");
$logFile .= ".log";
if ($password == "absolute"){
$lines = file($logFile);
print "<pre>n";
foreach ($lines as $theLine){
print $theLine;
} // end foreach
print "</pre>n";
} else {
print <<<HERE
<p class = "error">
Incorrect Password.<br />
You must have a password in order to view this log.
</p>
HERE;
} // end if
?>
</body>
</html>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
45
46. 5. Создайте просмотрщик исходного кода.
Программа должна по заданному имени файла считывать его и преобразовывать все экземпляры < в <,
после чего сохранять этот новый файл с другим именем.
Это позволит вам показывать свой исходный код другим людям.
6. Создайте простую гостевую книгу. Позвольте пользователю вводить информацию в форму, и когда он
нажмет на кнопку Sumbit, добавьте его комментарий в конец страницы.
Для этого вы можете использовать один или два файла.
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
46
47. ЛАБОРАТОРНАЯ РАБОТА № 6. ИСПОЛЬЗОВАНИЕ MYSQL ДЛЯ СОЗДАНИЯ БАЗ ДАННЫХ
(БД).
1. Запустите PhpMyAdmin на локальном сервере.
Измените язык интерфейса на русский.
Просмотрите список созданных БД.
Запишите назначение остальных вкладок PhpMyAdmin(SQL, Состояние, Переменные и т.д.).
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
47
48. 2. Создайте базу данных, например, «Телефонный справочник».
3. Разработайте простую таблицу для БД в тетради, например, «Список телефонов учителей».
Ключ
0
1
Имя
Александр
Алексей
Фамилия
Гора
Ниценко
Почта
gora@mail.ru
nicenko@gmail.com
Телефон
8-914-585-94-12
8-924-383-82-19
4. Напишите код для создания таблицы, например, «Список телефонов учителей».
Просмотрите структуру таблицы в PhpMyAdmin.
USE TelSprav;
CREATE TABLE Spisok (
Klych INT PRIMARY KEY,
Imya VARCHAR(15),
Familiya VARCHAR(15),
Pochta VARCHAR(20),
Telefon VARCHAR(15)
);
DESCRIBE Spisok;
5. Напишите код для заполнения таблицы данными.
Просмотрите содержимое таблицы в PhpMyAdmin.
USE TelSprav;
INSERT INTO Spisok
VALUES
(0, 'Alexander', 'Gora', 'gora@mail.ru', '8-914-585-94-12');
6. Удалите созданную базу данных.
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
48
49. 7. Установите SQLyog.
9. Создайте базу данных, например, «Телефонный справочник».
10. Разработайте простую таблицу для БДв тетради.
11. Напишите код для создания таблицы.
12. Напишите код для заполнения таблицы данными.
13. Просмотрите содержимое таблицы.
USE telsprav;
DESCRIBE spisok;
13. Ознакомьтесь самостоятельно с SQLyog.
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
49
50. ЛАБОРАТОРНАЯ РАБОТА № 7. ПОДКЛЮЧЕНИЕ К БД С ПОМОЩЬЮ PHP.
1. Написать программу, подключающуюся к БД и выводящая ее данные в виде таблицы.
<?php
//установить соединение с БД
//функция языка PHP для работы с БД
//mysql_connect требует 3 параметров: имя сервера, пользователя и пароль
$soedinenie = mysql_connect("localhost", "root", "");
//выбор базы данных
$db_selected = mysql_select_db("telsprav",$soedinenie);
//создание запроса на выборку
$zapros = "SELECT Imya, Familiya, Pochta, Telefon FROM spisok ORDER BY Familiya";
//функция отправляет БД любую команду SQL
$otpravka_zaprosa = mysql_query($zapros, $soedinenie);
//пример обращения к атрибуту поля "table" (название таблицы, которой принадлежит поле)
$atribut = mysql_fetch_field($otpravka_zaprosa);
print "Имя таблицы: " . $atribut->table . "<br>";
//создаем таблицу
print "<table border = 1>";
//создаем и заполняем через цикл первую строку таблицы
print "<tr>";
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
50
51. print "<th> Imya </th>";
//получить названия полей (столбцов) используя атрибут "name" – название поля
while ($atribut = mysql_fetch_field($otpravka_zaprosa)) {
//создаем ячейку тегом <th> сохраняем название поля
print "<th>";
print "$atribut->name";
print "</th>";
}
print "</tr>";
while ($stroka = mysql_fetch_assoc($otpravka_zaprosa)){
print "<tr>";
//просмотреть каждое поле (столбец)
foreach ($stroka as $st => $znachenie){
print "<td>$znachenie</td>";
} // конец foreach
print "<br>";
}// конец while
//конец таблицы
print "</table>";
mysql_close($soedinenie);
?>
Свойство
АТРИБУТЫ ПОЛЯ
Описание атрибута
max_length
Длина поля (важно для типа VARCHAR)
name
Название поля (столбца)
primary_key
TRUE если поле является первичным ключом
table
Название таблицы, которой принадлежит поле
type
Тип данных этого поля
2. Написать программу, позволяющую просматривать, добавлять и редактировать записи в
списке телефонов (предварительно создайте БД с таким списком телефонов).
3. Написать программу, которая запрашивает имя пользователя и выводит данные о нем из
базы данных.
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
51
52. ЛАБОРАТОРНАЯ РАБОТА № 8. НОРМАЛИЗАЦИЯ ДАННЫХ.
1. Запустите PhpMyAdmin на локальном сервере.
•
Измените язык интерфейса на русский.
2. Создайте базу данных Translation (Перевод).
База данных имеет следующие особенности:
• Переводчикам поручаются задания по ведению переговоров по всему миру.
• У каждого переводчика есть имя.
• Переводчик может знать несколько языков.
• Несколько переводчиков могут знать один и тот же язык.
• Каждый переводчик в определенный момент может выполнять только одно переводческое задание.
• Каждое переводческое задание может выполнять несколько переводчиков.
• Местоположение переводчика определяется выполняемым им переводом.
• У каждого перевода есть только одно местоположение.
CREATE DATABASE `Translation`;
3. Изучите структуру базы данных Translation (Перевод).
Запишите в тетради ответы на следующие вопросы:
А) Сколько полей в базе данных?
Б) Какие типы данных представлены в структуре, их особенности?
В) Какое поле является ключевым?
Г) Для чего служит ключевое поле?
Д) Какими языками владеют переводчики?
Е) В чем проявляется ненормализованность базы данных?
Схема НЕНОРМАЛИЗОВАННОЙ базы данных Перевод.
Поле
IDperevodchika
Imya
Yazik
Zadanie
Opisanie
Mestonahozhdenie
Тип
int(11)
varchar(30)
varchar(40)
varchar(40)
varchar(40)
varchar(20)
Ноль
YES
YES
YES
YES
YES
YES
Ключ
PRI
IDperevodchika
1
2
Imya
Rinat
Alex
Yazik
Kitaiskii
Angliiskii
3
Anton
EN
4
Anna
Ukrainskii
5
Viktor
Ukrainskii
Zadanie
Ustnii perevod
Pismennii
perevod
Sinhronnii
perevod
Pismennii
perevod
Ustnii perevod
По умолчанию
(NULL)
(NULL)
(NULL)
(NULL)
(NULL)
(NULL)
Дополнительно
AUTO_INCREMENT
Opisanie
Vstrecha gostei
Perevod bukleta
Mestonahozhdenie
Kitai
Angliya
Perevod dialoga
ministrov
Perevod bukleta
Angliya
Perevod gida
Ukraina
Rossiya
Проблемы базы данных Перевод.
1. Противоречивости данных вызвана тем, что пользователь вводящий несколько раз одни и те же данные
может использовать разное написание слов: например, для английского языка Angliiskii, English, EN и т.п.
Таким образом написание для одного и того же слова, разное.
2. Сохранения данных вызвана тем, что информация храниться в одной записи. Так, удалив переводчика
Rinat мы удалим информацию о задании Vstrecha gostei, т.к. она храниться только в записи удаляемого
переводчика.
3. Определения типа и размера полей вызвана тем, что трудно вычислить размер поля, которое
содержит несколько записей, так если талантливый переводчик владеет пятью языками, то необходимо
выделить место для хранения пяти направлений перевода для каждой записи каждого переводчика.
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем» www.studentam‐in.ru
52