Компьютерное проектирование интерфейса пользователя

 

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

КРИВОРІЗЬКИЙ ІНСТИТУТ

ПВНЗ «Кременчуцький університет економіки, інформаційних технологій та управління»









Методичні вказівки

до виконання контрольних робіт

«Компютерне проектування інтерфейсу користувача»



для студентів денної та заочної форм навчання

спеціальності 7.0901402

Гнучкі комп'ютеризовані системи та робототехніка

Факультет - інженерний

Кафедра - технічної кібернетики








Кривий Ріг 2007

Розповсюдження і тиражування без офіційного дозволу офіційного дозволу КІ ПВНЗ КУЕІТУ та укладача заборонено.

Методичні вказівки до виконання контрольних робіт з дисципліни «Компютерне проектування інтерфейсу користувача» містять варіанти контрольних завдань, опис послідовності та техніки виконання поставленого завдання, вимоги до оформлення звітів та перелік рекомендованої літератури.

Призначені для студентів денної та заочної форм навчання інженерного факультету спеціальності 7.0901402 «Гнучкі комп'ютеризовані системи та робототехніка».

Укладач: ст. викл. Супрунова Ю.А.

Методичні вказівки розглянуті та рекомендовані до видання на засіданні кафедри технічної кібернетики

30_серпня_2007 р., протокол №_1_

Затверджено методичною радою

Криворізького інституту ПВНЗ КУЕІТУ

13 вересня 2007 р., протокол № 1

Наклад згідно замовленню

Компютерний набір: Супрунова Ю.А.

СОДЕРЖАНИЕ


Введение.

Задание №1. Тема: Создание тестирующих программ

Задание №2. Тема: Создание игровых программ.

Задание №3. Тема: Проектирование СУБД в среде DELPHI.

Список рекомендуемой литературы.

Введение


Данное методическое пособие предназначено для самостоятельной работы студентов специальности «Гибкие компьютеризированные системы и робототехника» дневной и заочной формы обучения при решении контрольных заданий по дисциплине «Компьютерное проектирование интерфейса пользователя».

Методическое пособие содержит варианты контрольных заданий, требования к их оформлению, а также примеры решения типовых заданий.

Варианты выбираются студентами согласно номеру в журнале. Варианты после 20 выбираются следующим образом 21 - 1, 22 - 2 и т.д.


Задание №1


Тема: Создание тестирующих программ

Постановка задачи:

Создать программу-тест произвольного содержания (программа может являться как средством контроля знаний, так и психологическим тестом).

Программа должна удовлетворять следующим требованиям:

1.выводить не менее 10 вопросов и предлагать на каждый из них не менее 4 вариантов ответов.

2.после завершения тестирования программа должна выводить на экран результаты тестирования, в зависимости от количества набранных баллов.


Примеры выполнения и оформления контрольного задания


Пример№1.

В качестве примера рассмотрим процесс написания тестирующей программы контроля знаний по дисциплине «Теория электрических и магнитных цепей». Программы выдает на экран 10 вариантов вопросов, на каждый из которых предлагается 5 вариантов ответов. После завершения тестирования на экран выводится сообщение о количестве правильных ответов и окно программы закрывается.

1.Создадим новое приложение и сохраним его в своей папке.

2.Зададим свойства главной формы программы следующим образом:

Captions - Теория электрических и магнитных цепей (заголовок окна).- bsSingle

(окно, размер которого пользователь не может изменять, потянув курсором за край окна, но может менять кнопками в полосе заголовка)

Исключим из числа доступных кнопок Развернуть:

BordersIcons.byMaximize - false.

3.Поместим на форму 10 компонентов Image (вкладка Aditional) и расположим их таким образом, чтобы они накладывались друг на друга. Для копирования компонентов можно воспользоваться буфером обмена. Для выравнивания компонентов необходимо их выделить и выбрать в контекстном меню Позиция - Выровнять

4.Зададим каждому из компонентов Image заранее заготовленные изображения в формате jpg. Для этого необходимо щелкнуть мышкой по свойству Picture. Откроется Редактор Картинки, в котором можно указать путь к необходимому изображению.



5.Подобным образом поместим на форму 10 компонентов Memo (вкладка Standard). Для каждого из компонентов поместим в свойство Lines тестовый вопрос. Для всех компонентов Memo установим свойство ReadOnly - True (запретим изменение текста)

6.Поместим на форму компонент RadioGroup. В свойстве Captions элемента напишем Выберите ответ. В свойстве Items компонента создадим пять пустых строк (они нам понадобятся для вывода вариантов ответа).

.В разделе var модуля опишем переменные:

kol_v,kol_pr:integer;

8.Напишем в обработчике события OnShow для Form1 код:

procedure TForm1.FormShow(Sender: TObject);

kol_v:=kol_v+1; //счетчик количества заданных вопросов

radioGroup1.ItemIndex:=-1; //флажок ответа не выбран

// делаем компоненты невидимыми

image1.Visible:=false;

….Visible:=false;.Visible:=false;

memo5.Visible:=false;kol_v of

: begin

Image1.Visible:=true;.Visible:=true;1.Items[0]:='20 B'; //варианты выводимых ответов

Radiogroup1.Items[1]:='5 B';.Items[2]:='1 B';.Items[3]:='10 B';.Items[4]:='2 B';;

: begin.Visible:=true;.Visible:=true;.Items[0]:='20 B';.Items[1]:='5 B';.Items[2]:='1 B';.Items[3]:='10 B';.Items[4]:='2 B';;

end; //конец структуры Case

if kol_v>10 then //если заданы все вопросы, на экран выводится сообщение о количестве правильных ответов и форма закрывается

begin

showmessage('Правильных ответов -'+IntToStr(kol_pr));

form1.Close;

end;

9.В обработчике события OnClick для RadioGroup1 напишем код:

procedure TForm1.RadioGroup1Click(Sender: TObject);kol_v of

: if radiogroup1.ItemIndex=0 then kol_pr:=kol_pr+1;

: if radiogroup1.ItemIndex=3 then kol_pr:=kol_pr+1;

: if radiogroup1.ItemIndex=4 then kol_pr:=kol_pr+1;

: if radiogroup1.ItemIndex=1 then kol_pr:=kol_pr+1;

: if radiogroup1.ItemIndex=0 then kol_pr:=kol_pr+1;

end;;

Здесь в зависимости от номера вопроса и выбранного флажка подсчитывается количество правильных ответов. Radiogroup1.ItemIndex=0 - номер флажка, содержащего правильный ответ (в данном случае - 1-й флажок)

10.Последний штрих программы - поместим на форму компонент BitBtn. В свойстве Caption запишем Следующий вопрос. В свойстве Glyph можно задать картинку на кнопке.

Для события OnClick кнопки выберем из списка FormShow.

Один из вариантов рабочего окна программы:



Пример №2

Рассмотрим еще один пример - тест по Информатике. В отличие от предыдущей программы, текст теста, а также номер правильного ответа будет содержаться в файле формата rtf. Файл test.rtf с текстом будет располагаться в той же папке, что и исполнимый файл, в подкаталоге text и иметь следующую структуру:


В электронной таблице знак "$" перед номером строки в обозначении ячейки указывает на:

) денежный формат;

) начало формулы;

) абсолютную адресацию;

) начало выделения блока ячеек;

) пересчет номера строки, начиная с текущего.

Элементарная единица измерения количества информации - это:

) Байт;

) Кбайт;

) Мбайт;

) Бит;

) Восемь бит.


Компакт-диск (CD) - это:

) диск малого размера;

) магнитный диск с высокой плотностью записи информации;

) оптический диск, информация с которого считывается лазером;

) диск после выполнения операции сжатия информации

) сменный магнитный диск малого размера.

Конец теста

Количество вопросов может быть любым.

. Зададим свойства форме программы как в предыдущем случае и поместим на нее следующие компоненты: RichEdit1, Memo1, BitBtn1, RadioGroup1, Label1.

Разместим компоненты на форме, как это представлено на рисунке ниже, и зададим им свойства:

RichEdit1:

Visible - false. Данный компонент предназначен для хранения текста, считанного из файла и он должен быть невидимым в процессе выполнения программы.

WordWrap - false. Перенос строк запрещен.

Memo1:

ReadOnly - true. Компонент предназначен для вывода на экран вопроса и доступен только для чтения.

RadioGroup1

В свойстве Captions элемента напишем Выберите правильный ответ. В свойстве Items компонента создадим пять пустых строк (они нам понадобятся для вывода вариантов ответа).

Label1 - очистим свойство Caption компонента.

BitBtn1 - Зададим заголовок кнопки и в свойстве Glyph разместим подходящий значок. Установим свойство Default = true, чтобы при нажатии Enter возникало событие OnClick для кнопки.



. Опишем переменные в блоке var модуля:

var: TForm1;,kol,j:integer;

3. Создадим обработчик OnShow для формы:

procedure TForm1.FormShow(Sender: TObject);AppPath:array[0..255] of char;

_file : AnsiString;(255,AppPath); //определяем директорию, где расположен исполнимый файл

_file := AppPath + '\text\test.rtf';.Lines.LoadFromFile(_file);//текст загружается в компонент RichEdit1 //в случае, если файл не найден, работа программы завершается

showmessage('Файл не найден!');

Application.Terminate;

end;

BitBtn1.Enabled:=false;//Кнопка «Дальше» не доступна, пока не будет сделан выбор

memo1.Lines.Strings[0]:=richedit1.Lines.Strings[j+0]; //в компонент Memo заносится первая строка - вопрос.

radiogroup1.Items[0]:=richedit1.Lines.Strings[j+1]; //заполняем варианты ответов.Items[1]:=richedit1.Lines.Strings[j+2];.Items[2]:=richedit1.Lines.Strings[j+3];.Items[3]:=richedit1.Lines.Strings[j+4];.Items[4]:=richedit1.Lines.Strings[j+5];

i:=StrToInt(richedit1.Lines.Strings[j+6]); //переменная і содержит номер правильного ответа

except //если не указан номер правильного ответа, работа программы прерывается

showmessage('Неверный формат теста!');

Application.Terminate;;:=j+8;;

. Создадим обработчик OnClick для BitBtn1:

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

if i=radiogroup1.ItemIndex+1 then //если дан правильный ответ

begin

label1.Font.Color:=clGreen; //цвет шрифта Label1 - зеленый1.Caption:= 'Ответ правильный!';

kol:=kol+1; //счетчик количества правильных ответов

end else if radiogroup1.ItemIndex<>-1 then.Font.Color:=clRed;1.Caption:= 'Ответ на правильный!';

end;.Lines.Clear; //очищаем компонент Memorichedit1.Lines.Strings[j+0]='Конец теста'begin.Lines.Strings[0]:='Тест закончен';1.Lines.Add('Количество правильных ответов - '+IntToStr(kol));

radiogroup1.Items[0]:='';.Items[1]:='';.Items[2]:='';.Items[3]:='';.Items[4]:='';.Enabled:=false;

else //иначе, если конец теста еще не достигнут

begin.Lines.Strings[0]:=richedit1.Lines.Strings[j+0];.Items[0]:=richedit1.Lines.Strings[j+1];.Items[1]:=richedit1.Lines.Strings[j+2];.Items[2]:=richedit1.Lines.Strings[j+3];.Items[3]:=richedit1.Lines.Strings[j+4];.Items[4]:=richedit1.Lines.Strings[j+5];:=StrToInt(richedit1.Lines.Strings[j+6]);

showmessage('Неверный формат теста!');

Application.Terminate;;:=j+8;.ItemIndex:=-1;;.Enabled:=false;;

5. Создадим обработчик OnClick для RadioGroup1:

procedure TForm1.RadioGroup1Click(Sender: TObject);

BitBtn1.Enabled:=true; //если выбор произведен, то кнопка доступна.

end;

Вид окна в рабочем режимы программы будет следующим:



Пример №3

Рассмотрим пример создания психологического теста.

Как и в предыдущем примере, вся информация будет храниться во внешнем текстовом файле (test.txt должен быть расположен в том же каталоге, что и исполнимый файл).

Структура файла должна быть следующей:

Правда ли, что благоразумие и осторожность полезны в любой ситуации? Или такие "таланты" только и способны превращать людей в премудрых пескарей, обреченных дрожать вместо того чтобы жить? Может благоразумие - всего лишь инструмент, которым каждый из нас владеет индивидуально? //это комментарий к тесту, который выводится перед его началом.

&

Выходите ли вы из себя постоянно, используя любой повод, чтобы выплеснуть на окружающих скопившуюся агрессию? //1-й вопрос

Выхожу, так как окружающие провоцируют меня своим поведением. //варианты ответов (всего 4)

//количество балов, которое дается, если выбран этот вариант

Я не ищу повода вспылить, но если что-то меня злит, мне трудно сдержаться.


Чтобы я вышел из себя и устроил скандал, нужна настоящая лавина неприятностей.


Я никогда не теряю хладнокровия и неизменно вежлив.


&

Боитесь ли вы разозлить человека, который физически сильнее вас?

Мне бы не хотелось довести до буйства тупую гору мышц, а потом искать выход из пиковой ситуации.


Стараюсь не иметь дело с теми, кто решает споры кулаками.


Если я прав(-а), то все равно стою на своем.


Если понадобится, я найду способ одолеть любого силача.


# //признак того, что вопросы закончились. Далее следуют варианты результатов. Число - это граничное количество баллов.

Вы "КАЛЬКУЛЯТОР". Вам надо все просчитать и все предусмотреть. Никаких отклонений и исключений, нарушающих нормальный ход событий, вы не терпите. Роковые совпадения и божественные откровения в расчет не принимаете. Вам кажется: подобное происходит настолько редко, что не стоит тратить время, раздумывая над вероятностью чуда. Вы не ждете разочарований, но и не рассчитываете на счастливую случайность. А между тем стоит быть поромантичней и верить в свою звезду. Пусть вам встретятся пустые иллюзии, но будут и внезапные подарки судьбы...


Вы "Птицелов". Вы точно знаете свои возможности и не пытаетесь поймать журавля в небе - для этого предпочтительнее расставить силки на земле. Вам кажется, что действовать с помощью логики сподручнее. Способ верный, но пренебрегать услугами госпожи Удачи тоже не следует. В любом случае ее благородие может внести свою удивительную лепту. А вы, если окажитесь в нужное время в нужном месте, благополучно снимите свой урожай. К тому же ваш разумный подход к жизни никто у вас ее не отнимет. Будьте более мобильны и более легкомысленны.


Вы "Арлекин". Вам нравиться жить полной жизнью - скорее бурной и эмоциональной, чем интеллектуальной и размеренной. В разных ситуациях вы действуете по-разному, не отдаете правилам и догмам первенство не зависимо от обстоятельств. В вас есть и немного сумасбродства, которое одному покажется очаровательным, а другому - невыносимым. Не обращайте внимания на "мнения отдельных критиков"! Обаяние всегда основано на оригинальности поведения, а изобретательность - на нарушении устоявшихся рамок. Всем, кто смотрит на мир по-новому, а решение принимает по-своему, приходится перешагивать через непонимание и осуждение, чтобы идти своим путем.


Вы "САЛАМАНДРА". Вы расцветаете в огне страстей. Ваше романтическое безрассудство дает о себе знать каждую минуту. И тогда, когда все и вся настроены не "против", а "за", вы можете разозлить любящую "публику" какой-нибудь несусветной выходкой. Такое происходит потому, что вам постоянно кажется, что чего-то вы от жизни недополучили. В качестве гиперкомпенсации вы любите делать резкие замечания и доставлять неприятности. Но ваша удовлетворенность мнимая. Попробуйте думать не только о своей прекрасной персоне, но и о том, каковы интересы окружающих. и жизнь станет проще и приятнее.


Принцип работы проектируемого приложения следующий. При запуске на экране отображаются комментарии к тесту.


После нажатия кнопки ОК на экране отображается первый вопрос и варианты ответов на него. При этом в заголовке окна отображается номер вопроса, а надпись на кнопке изменяется на «Дальше». Кнопка будет неактивна до тех пор, пока не будет выбран ответ.



По окончании теста на экран выводится количество набранных балов и результат тестирования. При этом заголовок окна также изменяется.



. Разместим на форме следующие компоненты :

Panel1 (Color = clBlack, Caption =), BitBtn1 (расположена на панели), RadioGroup1 (Caption=) и Label1 (WordWrap=true, AutoSize=false, ширину и высоту метки задайте примерно как показано на рисунке, поместите компонент на задний план - выберите в контекстном меню Компонент - Сделать нижним)

Свойства формы определим как в примере№1. Изменим также цвет формы на clSliver.


. Изменим также иконку приложения. Для этого надо выбрать в меню Проект - Опции, перейти на вкладку Приложение и указать путь к файлу с расширением ico.


3. Опишем глобальные переменные:AppPath:array[0..255] of char;

_file : AnsiString;:textFile; // текстовый файл,s:string;_v:integer;//номер вопроса:array[1..4] of integer;:integer;//сумма набранных балов

. Как и в предыдущем примере определим директорию, где расположен исполнимый файл. В обработчике события OnCreate для формы напишем:(255,AppPath); //определяем директорию, где расположен исполнимый файл

_file := AppPath + '\test.txt';

try(f,_file); //связываем логическое и физическое имя файла(f); //открываем файл для чтения

except('Файл не найден'); BitBtn1.Enabled:=false;

end;

. Создадим обработчик OnShow для формы:(f,s) //считываем строку из файла;

if not (s[1]='&') then buf:=buf+s;s[1] ='&';.Caption:=buf;

6. В обработчике OnClick для кнопки BitBtn1 напишем:

procedure TForm1.BitBtn1Click(Sender: TObject);k,i,j:integer;:array[1..4] of string;:=''; k:=0; RadioGroup1.Visible:=true; i:=0; j:=0;.Items.Clear; //очищаем компонент_v:=n_v+1;.Caption:='Дальше'; BitBtn1.Enabled:=false;

if not (s[1]='#') then begin //если вопросы еще не закончились

repeat(f,s);:=k+1;k of

: label1.Caption:=s; //выводим текст вопроса

2,4,6,8:Radiogroup1.Items.Add(s);//выводим варианты ответов

3,5,7,9: begin:=i+1; bal[i]:=StrToInt(s);//заполняем массив баллами

end;;(s[1]='&') or (s[1]='#');.Caption:='Вопрос № '+IntToStr(n_v); //меняем заголовок окна

end//вывод результатов тестаrepeat

readln(f,s);:=k+1;k of

,4,6,8: begin j:=j+1; st[j]:=s; end;

,5,7,9: begin:=i+1; bal[i]:=StrToInt(s);

end;;eof(f);//пока не будет достигнут конец файла

label1.Caption:='Вы набрали '+IntToStr(sum)+' баллов'+#13+#13;

if sum<bal[4] then label1.Caption:=label1.Caption+st[4] elsesum<bal[3] then label1.Caption:=label1.Caption+st[3] elsesum<bal[2] then label1.Caption:=label1.Caption+st[2] else.Caption:=label1.Caption+st[1];.Caption:='Результаты теста';.Visible:=false;;;

7. Создадим обработчик OnClick для RadioGroup1:.Enabled:=true; //если ответ выбран, то кнопка доступна:=sum+bal[RadioGroup1.ItemIndex+1]; //суммирование набранных баллов


Требования к оформлению отчета по контрольному заданию №1.


Отчет оформляется на листах формата А4 со стандартным титульным листом «Контрольная работа» и должен содержать следующие пункты:

1.Постановка задачи.

2.Описание структуры и назначения тестов (перечень вопросов с указанием правильных ответов).

.Поэтапное описание процесса создания программы с примерами «скрин-шотов» программы и фрагментов исходного кода.

Приложением к отчету является дискета, содержащая рабочую версию программы.

Задание №2


Тема: Создание игровых программ


Постановка задачи:

Создать согласно варианту игровую программу. Оценка за контрольную работу зависит от степени сложности и художественного оформления интерфейса пользователя. Обязательное требование - наличие справочной системы, в которой описываются правила игры.

Варианты контрольных заданий:


Вариант №1 Игра Прыжок кенгуру



В центре поля 5*5 позиций (можно взять поле другого нечетного размера) стартует кенгуру. Она прыгает по спирали из центра в левый нижний угол в соседнюю клетку, либо через одну (случайным образом).

После каждого прыжка кенгуру охотник может поставить ловушку, общее число - не более 3-х в течение игры. Устанавливая ловушку, охотник щелчком мышки по клетке указывает ее координаты (в нижний левый угол ставить ловушку нельзя). Если кенгуру при очередном прыжке попала в ловушку, то она поймана; если благополучно добралась до финиша, 1:0 в пользу общества охраны животных.


Вариант №2 Игра Поймай зайца



В левом верхнем углу поля 5*5 позиций (можно взять поле другого нечетного размера) стартует заяц. Он прыгает по спирали до центра. Прыгать заяц может либо в соседнюю клетку, либо через одну (случайным образом)

После каждого прыжка охотнику предлагается поставить ловушку. Всего ловушек может быть не более 3-х. Устанавливая ловушку, охотник щелчком мышки по клетке указывает ее координаты (в центр поля ставить ловушку нельзя).

Если заяц при очередном прыжке попал в ловушку, то он пойман; если благополучно добрался до центра, то охотник остался без зайца.


Вариант №3 Игра кто вперед



Два игрока стартуют в левом верхнем углу поля 9*9 и движутся к центру поля. Победит тот, кто придет первым. Положение первого игрока можно отмечать +, второго *, если оба в одной клетке - 0, а можно любыми другими обозначениями.

Игроки могут ходить на одну или две клетки по спирали к центру (игрок вводит, соответственно 1 или 2).

На пути есть 5 особых точек, расставленных программой случайным образом:

  1. Назад на 3 клетки;
  2. Вперед на две клетки;
  3. Пропустить ход;
  4. Сделать дополнительный ход;
  5. Встать в одну клетку с противником

Точки невидимы до тех пор, пока один из противников не попадет на них.


Вариант №4 Игра найти невидимку (диагональная)

На поле n*n в одной из клеток стоит невидимка, которого должен найти игрок. Игрок указывает координаты невидимки. Если угадал, то нашел невидимку. Если не угадал, то невидимка передвигается в другую позицию, а игроку сообщается, где невидимка был в момент хода.

Невидимка может передвигаться только по диагонали.


Вариант №5 Игра в кости

Играющий называет любое число в диапазоне от 2 до 12 и ставку, которую он делает в этот ход. Программа с помощью датчика случайных чисел дважды выбирает числа от 1 до 6 (бросает кубик). Если сумма выпавших цифр меньше 7 и играющий задумал число, меньшее 7, он выигрывает сделанную ставку. Если сумма выпавших цифр больше 7 и играющий задумал число больше 7, он также выигрывает сделанную ставку. Если играющий угадал сумму цифр, он получает в четыре раза больше очков, чем сделанная ставка. Ставка проиграна, если не имеет место ни одна из описанных ситуаций.

В начальный момент у играющего 100 очков.

Вариант №6 Игра "Коровы и быки" (для слов)

Два игрока загадывают по четырехсимвольному слова (вводят без отображения на экране).

Затем каждый игрок должен угадать слово противника. Игроки ходят по очереди. На каждом шаге игрок называет четырехбуквенное слово, а программа сообщает, сколько букв угадано (быки) и сколько букв угадано и стоит на своем месте (коровы).


Вариант №7 Игра " Тренировка памяти - числа" (2 игрока)

Играют два игрока. Каждому по очереди на определенное время высвечивается несколько чисел, полученных с помощью датчика случайных чисел. Размер этих чисел ограничен ( например, не более 3-х цифр).

Игроки должны воспроизвести числа. Каждому игроку дается определенному число шагов( игроки указывают это число в начале игры). Время запоминания также определяется игроками в начале игры.

Игроки могут играть в 2-х режимах:

А) просто воспроизвести числа;

Б) воспроизвести числа в том же порядке.


Вариант №8 Игра "Тренировка памяти - слова" (1 игрок)

Программа на определенное время высвечивает несколько слов- существительных. Слова выбираются и специального текстового файла случайным образом.

Игрок должен воспроизвести слова. Время для запоминания может быть различным, в программе предусматривается три временных режима

Число слов для запоминания может быть различным.

Игрок может играть в 2-х режимах:

А) просто воспроизвести слова;

Б) воспроизвести слова в заданном порядке.

Вариант №9 Игра " Подбери ключи"

Перед играющим четыре запертые двери. Открыть все двери, располагая десятью ключами, каждый из которых может открыть несколько дверей. Предоставляется 14 попыток.


Вариант №10 Игра " Ипподром"

Играющий выбирает одну из трех лошадей, состязающихся на бегах, и выигрывает, если его лошадь приходит первой. Скорость лошадей на разных этапах выбирается программой с помощью датчика случайных чисел.


Вариант №11 Игра " Угадай слово"

Ведущий вводит слово (без отображения его на экране). На экране высвечивается столько звездочек, сколько букв в слове. Роль ведущего может выполнять программа - слово выбирается произвольным образом из набора, содержащегося в текстовом файле.

Игрок отгадывает слово по одной букве. Если в слове есть эта буква, она высвечивается вместо звездочки. Игроку всегда сообщается о номере его очередного хода. В любой момент игрок может отказаться от игры.

По окончании игры сообщается, за сколько шагов игрок угадал слово или сколько шагов сделано до прерывания игры, и какое слово было загадано, если игрок отказался от игры.


Вариант №12 Игра "Обучение устному счету"

На каждом шаге играющему предлагается два числа и арифметическое действие, которое надо выполнить.

Если игрок отвечает неверно, программа сообщает правильный ответ и дает следующее задание с тем же арифметическим действием.

Размер чисел и максимальное время ответа устанавливаются по желанию игрока в начале игры.

Вариант №13 Игра "100"

Из кучки, первоначально содержащей 100 спичек, двое играющих поочередно берут по несколько спичек: не менее одной и не более десяти. Проигрывает тот игрок, кто возьмет последнюю спичку.


Вариант №14 Игра " НИМ"

Имеется три кучки спичек. Двое играющих по очереди делают ходы. Каждый ход заключается в том, что из одной какой-то кучки берется произвольное ненулевое число спичек. Выигрывает взявший последнюю спичку.


Вариант №15 "Цзяньшидзы"

Имеется две кучки камней. Двое играющих по очереди делают ходы. Каждый ход может состоять в одном из двух:

  1. Берется произвольное ненулевое число камней и какой-то одной кучки;
  2. Берется одновременно по одинаковому ненулевому числу из обеих кучек.

Выигрывает взявший последний камень.


Вариант №16 Игра "Прыгающие шарики".



Вдоль доски расположено 8 лунок, в которых лежат 4 черных и 3 белых шара так, как показано на рисунке. Передвинуть черные шары на место белых, а белые - на место черных. Шар можно передвинуть либо в соседнюю с ним пустую лунку, либо в пустую лунку, находящуюся непосредственно за ближайшим шаром. Черные шары можно передвигать только вправо, а белые только влево.

Вариант №17 Игра Морской бой (два игрока)

На поле 4*4 клетки игроки устанавливают 3 корабля по одной клетке (у каждого игрока свое поле). Программа запоминает положение кораблей и скрывает их.

Затем игроки начинают поражать корабли противника, по очереди указывая координаты предполагаемого корабля. Результат попадания (попал или мимо) отмечается на поле (например, *- попал, + - мимо или любыми другими значками).


Вариант №18 Игра Морской бой (игра с компьютером)

Программа аналогична предыдущему варианту, но в качестве одного из игроков выступает компьютер.


Вариант №19 Игра "Крестики - нолики" (два игрока)


Вариант №20 Игра аналог телевизионного шоу " Поле чудес".

Создание справочной системы.

Файл справки создадим при помощи утилиты shalomhelp.exe. Для начала необходимо ввести заголовок справочного окна (Title). В поле Header вводим название пункта справки, а затем сам текст справки.


При этом мы можем вставлять в текст графические изображения и гиперссылки на другие пункты справки.



Чтобы добавить страницу можно выбрать в меню Edit - New Page или нажать на кнопку «+» на панели инструментов. Кнопка «-» удаляет ненужный раздел.


Чтобы сгруппировать страницы по разделам необходимо нажать кнопку Page Organizer на панели инструментов или F5



Нажав на кнопку Header, мы добавляем заголовок раздела.


Чтобы изменить текст заголовка необходимо его выделить и нажать на Enter. На экране появится окно, в котором можно отредактировать текст.



Кнопками Up и Down можно изменять порядок следования страниц справки.

Для корректного отображения символов кириллицы нужно выбрать в меню Options - Project Options, перейти на вкладку Language и выбрать из списка кодировок Russian.


Для компиляции файла нажмите F9 или кнопку на панели инструментов. Перед компиляцией файл необходимо сохранить.



В итоге мы должны получить файл с расширением hlp.


Чтобы подключить справочную систему к приложению необходимо:

1.Поместить hlp-файл и файл с расширением cnt в тот же каталог, что и исполнимый файл.

2.В свойстве HelpFile формы ввести имя файла (например, help.hlp), в свойстве HelpKeyword горячую клавишу вызова справки (F1), HelpContext = 1 (номер раздела справки по умолчанию).

.Для вызова справки при помощи пункта меню необходимо написать в обработчике OnClick:

winhelp(Form1.Handle, 'help.hlp', HELP_CONTEXT, 1);

Требования к оформлению отчета по контрольному заданию №2.

Отчет оформляется на листах формата А4 со стандартным титульным листом «Контрольная работа» и должен содержать следующие пункты:

1.Постановка задачи (jписание алгоритма игры).

2.Поэтапное описание процесса реализации интерфейса пользователя с примерами «скрин-шотов» программы и фрагментов исходного кода.

.«Скрин-шоты» окон справочной системы.

Приложением к отчету является дискета, содержащая рабочую версию программы.

Задание №3


Тема: Проектирование СУБД в среде DELPHI


Пример выполнения и оформления контрольного задания.

Постановка задачи:

В военкомате ведется учет юношей допризывного и призывного возраста. Имеются следующие данные: район, фамилия, год рождения, номер личного дела, пригодность к службе ("годен" или "не годен").

Программа должна отвечать следующим требованиям:

ØРаботать в двух режимах: ввода и поиска информации

ØВ режиме поиска формировать следующие запросы:

1.вывести список юношей, призываемых на службу в заданном году (по достижении 18 лет);

2.количество годных юношей для каждого из районов;

.вывести список юношей, пригодных к службе;

.количество юношей, пригодных и непригодных к службе;

.отсортировать список по алфавиту в порядке возрастания и в порядке убывания;

.найти самого «старого» и самого молодого юношу;

.список юношей, фамилия которых начинается на заданную букву;

.создать таблицу archive аналогичной структуры, скопировать в нее все данные из основной таблицы.

.вывести в отчет отсортированный по фамилиям список юношей, пригодных к службе.

Создание и просмотр псевдонимов баз данных

Создать или изменить путь к существующим псевдонимам БД можно двумя способами.

Способ первый. Запустить утилиту BDE Administrator. Выбрать в меню Object - New. Определить название и путь к файлам БД.



Способ второй. Запустить утилиту DataBase DeskTop. Выбрать в меню Tools - Alias Manager. Нажав кнопку New можно создать новый псевдоним, или изменить путь к существующему в области окна Path.



Создание таблиц базы данных.

Для создания таблицы воспользуемся утилитой DataBase DeskTop.

1.Для создания таблицы выберем в меню программы File-New-Table.

В данной СУБД используем формат Paradox. Выберем его из списка в появившемся окне.


программа интерфейс пользователь delphi

На экране появится окно создания базы данных. В столбце Field Name вводим имя поля (не должно содержать пробелов).



В столбце Type выбираем из контекстного меню (правый щелчок мыши) тип поля. Для строковых полей необходимо указать размер (столбец Size).

Создадим таблицу следующей структуры:


Имя поляТип поляОписаниеNameAlpha[20]Район проживанияPhoneAlpha[20]Фамилия, инициалыNoteDateДата рождения

Типы полей таблиц в Paradox 7

ТипОбозначениеОписание значенияAlphaАСтрока символов. Длина не более 255 символовNumberNЧисло с плавающей точкой. Диапазон -10307 ... 10308. Точность 15 цифр мантиссыMoney$Денежная сумма. Отличается от типа Number тем, что в значении отображается денежный знак. Обозначение денежного знака зависит от установок WindowsShortSЦелое число. Диапазон -32 768 ... 32767LonglntegerIЦелое число. Диапазон -2 147 483 648 ... 2 147483647BCD#Число в двоично-десятичном форматеDateDДата. Диапазон 01.01.9999 до н. э. ... 31.12.9999TimeТВремяTimestamp@Дата и времяMemoMСтрока символов. Длина не ограничена. Первые 240 символов хранятся в файле таблицы, остальные в файле с расширением MBFormatted MemoFСтрока символов. Отличается от типа Memo тем, что строка может содержать форматированный текстТипОбозначениеОписание значенияGraphicGГрафическое изображение. Форматы BMP, PCX, TIF, GIF и EPS. При загрузке в поле изображение преобразуется к формату BMP. Для хранения изображения используется файл с расширением MBOLEОДанные в формате, который поддерживается технологией OLE. Данные хранятся в файле с расширением MB

После создания таблицы необходимо нажать кнопку SaveAs


В появившемся окне в области Alias выбрать псевдоним базы данных

Создание основного окна программы

1. Переименуем главное окно программы - изменим свойство Caption для Form1.

. Поместим на форму компонент PageControl (вкладка Win32). Установим компоненту следующие свойства:

üAlign (Выравнивание) - alClent (на все окно)


Щелкнем правой клавишей мышки по компоненту и создадим две новые страницы (TabSheet1, TabSheet2).

Переименуем страницы соответственно - Ввод информации и Поиск информации. Для этого необходимо в раскрывающемся списке Инспектора объекта выбрать объект и изменить его свойство Caption.



. Поместим на форму объект MainMenu (вкладка Standard). Щелкним по компоненту два раза и создадим пункт меню Данные, который содержит следующие подпункты: Ввод информации, Поиск данных, Копирование таблицы, Выход. Для создания разделителя в меню необходимо ввести «-» - дефис.

. Поместим на форму следующие компоненты:

üTable (вкладка BDE);

üDataSource (вкладка Data Access);

üDBGrid, DBNavigator (вкладка Data Controls).

Установим компонентам следующие свойства:

Table:

  • DatabaseName (псевдоним базы данных) - выбираем из списка свой Alias.
  • TableName - выбираем имя своей таблицы.
  • AutoRefresh (обновление структуры таблицы) - устанавливаем значение true.
  • Active - устанавливаем true - подключаем таблицу.

DataSource:

  • DataSet (источник данных) - выбираем Table1.

DBGrid, DBNavigator:

  • свойству DataSource устанавливаем значение DataSource1.
  • Align (выравнивание): DBGrid - alClient (на все окно), DBNavigator - alBottom (внизу окна).


Двойным щелчком по компоненту Table1 вызываем редактор полей. В контекстном меню (щелчок правой клавишей по редактору), выбираем пункт Добавить все поля. Если какое-нибудь поле нам видеть на экране не нужно, определим его свойство Visible - False. Для остальных полей в свойстве DisplayLabel напишем отображаемый заголовок столбца.

На данном этапе вид формы должен быть следующим:


Запустим приложение и проверим, как оно работает. Сформируем базу данных.

. Перейдем на вкладку Поиск информации. Поместим на форму следующие компоненты:

üDBGrid (Align - Top);

üQuery (вкладка BDE)

üDataSorce;

üPageControl (добавим 3 новых листа);

üRadioGroup (вкладка Standard)

Расположим компоненты следующим образом:


Установим свойству Multiline компонент PageControl2 значение True. Переименуем страницы, как это показано ниже.

Зададим свойству Captions компонента RadioGroup1 значение Сформировать список. Щелкнем по свойству Items компонента и заполним Редактор списка строк:


Установим свойству ItemIndex компонента RadioGroup значение 0, чтобы по умолчанию был выбран первый переключатель.

Поучаем следующее:



. Щелкнем по вкладке Список призывников по году. Поместим на нее компоненты Label, Edit (вкладка Standard) и BitBtn (вкладка Additional). Переименуем и разместим компоненты следующим образом:



Для того, чтобы сделать шрифт жирным, используем свойство Font компонента. Чтобы разместить на кнопке рисунок используют свойство Glyph. Стандартные заготовки Delphi расположены в папке:

c:\Program Files\Common Files\Borland Shared\Images

7. Таким же образом оформим вкладки Годные призывники по району и Список по начальной букве фамилии.



. На этом «оформительская работа» закончена. Приступаем непосредственно к программированию.

Создадим следующий обработчик события OnClick для компонента RadioGroup1:

procedure Tform1.RadioGroup1Click(Sender: Tobject);Kolp, Kolnp, I:integer;RadioGroup1.ItemIndex of

: begin {если выбран первый переключатель}1.SQL.Clear; {закрываем запрос}

query1.SQL.Add('Select *from MainTable'); {в кавычках следует SQL запрос}

query1.Open;

end;

1 : begin

query1.SQL.Clear;.SQL.Add(Select *from MainTable where goden = true);.Open;;

: begin.First;:=0;Kolnp:=0;I:=1 to Table1.RecordCount do(Table1.FieldByName(goden).AsBoolean = true) then:=Kolp + 1KolnP:=KolnP + 1;.Next;;('Количество годных = '+IntToStr(KolP)+#13+

'Количество негодных = '+IntToStr(KolnP),mtInformation,[mbOk],0);

end;

: begin

query1.SQL.Clear;.SQL.Add(Select *from MainTable order by surname ASC);.Open;;

: begin.SQL.Clear;.SQL.Add(Select *from MainTable order by surname DESC);.Open;;

: begin.SQL.Clear;.SQL.Add(Select *from MainTable where databorn = (Select min(databorn) from MainTable));.Open;;

: begin.SQL.Clear;.SQL.Add(Select *from MainTable where databorn = (Select max(databorn) from MainTable));.Open;;

end;;

Переименуем компонент DataSorce2 в QueryDataSorce (изменим свойство Name). Зададим его свойству DataSet значение Query1.

Свяжем компонент DBGrid2 с компонентом Query1 при помощи компонента QueryDataSorce (выберем его из списка в свойстве DataSorce компонента DBGrid2).

Для компонента Query1 выберем в свойстве DateBaseName свой Alias.

В свойстве SQL компонента напишем:* from maintable.db

Зададим свойству Active компонента Query1 значение True.

Двойным щелчком по компоненту Query1 вызываем редактор полей. Переименуем поля, как это делали раньше, с компонентом Table1.

Запустим программу на выполнение и посмотрим на результат.

. Для события OnClock кнопки «Составить список» вкладки «Список призывников по году» пишем обработчик:

procedure Tform1.BitBtn1Click(Sender: Tobject);sData,S:AnsiString;:=Edit1.Text;

if sData= then(Год не введен!);

exit;:=Select *from MainTable where databorn <= 01.01.+ IntToStr(StrToInt(Edit1.Text)-18)+;.SQL.Clear;.SQL.Add(S);1.Open;

end;

. Для события OnClock кнопки «Показать» вкладки «Список по начальной букве фамилии» пишем обработчик:

procedure Tform1.BitBtn3Click(Sender: Tobject);S,s1,s2 : AnsiString;:=%;:= + Edit3.Text + s2 +;:=Select *from MainTable where surname Like+s1;.SQL.Clear;.SQL.Add(S);

query1.Open;;

. Для события OnClock кнопки «Вывести количество по району» вкладки «Годные призывники по району» пишем обработчик:

procedure Tform1.BitBtn2Click(Sender: Tobject);KolP,I:integer;.First;:=0;I:=1 to Table1.RecordCount do((Table1.FieldByName(goden).AsBoolean = true) and (Table1.FieldByName(rayon).AsString = Edit2.Text)) then:=Kolp + 1;.Next;;(Количество годных по району + Edit2.Text+ = +IntToStr(KolP),mtInformation,[mbOk],0);2.Text:=;;

. Обработаем событие OnClick для пунктов меню:

Для подпункта Ввод информации:Tform1.N2Click(Sender: Tobject);.ActivePageIndex := 0;

end;

Для подпункта Поиск данных:

procedure Tform1.N3Click(Sender: Tobject);.ActivePageIndex := 1;;

Для подпункта Копирование таблицы:Tform1.N6Click(Sender: Tobject);.Close;.SQL.Clear;.SQL.Add(insert into ArhivTable select * from maintable);.ExecSQL;.Close;.SQL.Clear;.SQL.Add(select * from ArhivTable);.Open;('Архивная таблица создана!');

Для подпункта Выход:Tform1.N5Click(Sender: Tobject);;

13. В обработчике события OnCloseQuery для Form1 напишем:

procedure Tform1.FormCloseQuery(Sender: Tobject; var CanClose: Boolean);(Messagedlg(Выйти из программы?,mtConfirmation,[mbYes,mbNo],0)=mrYes) then:= trueCanClose := false;

end;

Создание отчетов

1. Создадим новую форму. Поместим на нее компонент QuickRep, который расположен на вкладке QReport.

. Поместим на форму компонент Query. Выберем в свойстве DatabaseName свой Alias. Щелкнем по свойству SQL и напишем в Редакторе списка строк следующее:

select * from MainTable where goden=true

3. Установим свойству DataSet компонента QuickRep1 значение Query1.

. Поместим на созданный отчет два компонента QRBand (все находится на вкладке QReport).

Первый из них будет заголовком отчета. Поместим на него компонент QRLabel - статический текст, который будет помешен на отчет. В его свойстве Caption напишем Список юношей, пригодных к службе. Отформатируйте заголовок, воспользовавшись свойством компонента Font, по своему усмотрению.

Для второго компонента QRBand2 изменим его свойство BandType на rbDetal.

Поместим на полосу отчета QRBand2 четы ре компонента QRDBText. В свойстве DataSet каждого из них выберем Query1. В свойстве DataField выберем название полей. Для выравнивания компонентов QRDBText выберем их все, удерживая нажатой клавишу Shift, затем щелкнем по ним правой клавишей и выберем в меню пункт Позиция - Выровнять.

В окне Выравнивание зададим параметры:



Щелкнув правой клавишей по отчету, можно выбрать пункт Preview и посмотреть, что получилось.

. Для того чтобы, в конце отчета выводилось общее число пригодных либо не пригодных к службе юношей необходимо поместить на отчет еще один компонент - QRBand3. Изменим его свойство BandType на rbSummary.

.Поместим на итоговую полосу отчета QRExpr.

Щелкнем по свойству компонента Expression и выберем в появившемся окне функцию Count


Добавьте самостоятельно на итоговую полосу надпись Общее число.

Для этого на нижнюю полосу отчета необходимо поместить компонент QRLabel и изменить соответствующим образом свойство Caption.

. Вернемся на Form1. Добавим в меню следующие пункты:



Для обработчика события OnClick пункта меню Годные напишем код:

form2.Query1.Close;

form2.Query1.SQL.Clear;.Query1.SQL.add('select * from MainTable where goden=true');.Query1.Active:=true;.QuickRep1.Preview

Для обработчика события OnClick пункта меню Не годные напишем код:

form2.Query1.Close;

form2.Query1.SQL.Clear;.Query1.SQL.add('select * from MainTable where goden=false');.Query1.Active:=true;.QuickRep1.Preview

6. Добавьте самостоятельно заголовки столбцов таблицы.

Для этого на верхнюю полосу отчета необходимо поместить компоненты QRLabel и изменить соответствующим образом свойство Caption.

Запускаем программу и наслаждаемся ее работой.


Варианты контрольных заданий:


№ вар.Задание1В каталоге студий звукозаписи имеются следующие данные: название группы, название альбома, год выпуска альбома, название студии. Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: вывести таблицу групп, выпустивших альбом в заданном году. вывести таблицу групп, выпустивших альбом на заданной студии. вывести таблицу групп, название которых начинается на заданную букву. в отдельном окне выводить таблицу названий групп и количества, выпущенных ими альбомов. Ø Обеспечить сортировку по группам и по альбомам в порядке возрастания или в порядке убывания. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в отчет отсортированный по группам, а затем по названиям альбомов список. В конце отчета должно быть указано общее количество альбомов.2В аптеке ведется учет лекарственных средств. Имеются следующие данные: название лекарства, цена упаковки, кол-во упаковок в аптеке, год выпуска, срок хранения (в годах). Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. вывести список лекарств, не годных к употреблению на заданный год, 2. суммарную стоимость всех упаковок для каждого из видов лекарств. 3. суммарную стоимость всех лекарств в аптеке. 4. найти самое дорогое лекарство. 5. вывести список лекарств, название которых начинается на заданную букву. 6. количество наименований лекарств в аптеке. Ø Обеспечить сортировку по названиям и по стоимости лекарств в порядке возрастания или в порядке убывания. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в отчет отсортированный по названиям лекарств список. В конце отчета должно быть указано общее число лекарств.3Имеется информация о ходе сессии по группам: факультет, группа, кол-во студентов, сдавших экзамены по предмету «Высшая математика» на «5», «4» и «3» (отдельные поля) . Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. вывести количество студентов на каждом из факультетов. 2. автоматически вычислять для каждой из групп количество студентов, не сдавших экзамен. 3. выводить суммарное количество студентов во всех факультетах. 4. количество групп на всех факультетах. 5. определить по среднему баллу лучшую и худшую группы. 6. вывести список тех групп, где количество двоечников превышает заданное значение. Ø Обеспечить сортировку сначала по факультетам, затем по группам по алфавиту в порядке возрастания и в порядке убывания. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в отчет отсортированный список групп, где количество «троечников» превышает суммарное количество «отличников» и «хорошистов»4На станции тех. обслуживания автомобилей ведется учет автомобилей, прошедших кап.pемонт, по следующим данным: маpка машины, серийный номер, пробег (в км.) после предыдущего ремонта, год выпуска машины. Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. составить список машин, имеющих пpобег более 100 000 км. 2. вывести марку машины, имеющей максимальный пробег 3. в отдельном окне выводить количество автомобилей каждой из марок. 4. общее количество автомобилей. 5. в отдельном окне средний пробег автомобилей каждой из марок. 6. средний пробег всех автомобилей Ø Обеспечить сортировку списка машин по маркам, затем по серийному номеру в порядке возрастания и в порядке убывания. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в отчет отсортированный по маркам общий список машин, а также указать в конце отчета общее количество машин и средний пробег после кап. ремонта.5В больнице ведется учет больных по след. данным: фамилия больного, номер палаты, дата прибытия, диагноз. Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. в отдельном окне выводить количество больных в каждой из палат. 2. список больных, лежащих в заданной палате. 3. в отдельном окне выводить список диагнозов и количество больных с таким диагнозом. 4. общее число больных. 5. список больных, чья фамилия начинается на заданную букву. 6. список больных, поступивших 13 числа. Ø Обеспечить сортировку списка больных по алфавиту. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в отчет список палат с указанием количества больных, которые в них лежат. В конце отчета указать суммарное количество больных, общее число палат и среднее количество человек в палате.6На каждого из спортсменов, заявленных на соревнования по легкой атлетике, представлена карточка со следующими данными: регистрационный код, город, фамилия и инициалы, возраст (лет), рост (см), вид соревнований. Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. в отдельных окнах вывести количество спортсменов для каждого из видов соревнований, количество спортсменов для каждого города. 2. список спортсменов, участвующих в заданном соревновании. 3. список спортсменов заданного города. 4. вывести информацию о самом рослом и самом низком спортсмене, самом молодом и самом старом. 5. средний возраст и средний рост спортсменов. 6. количество спортсменов, в том числе по интервалам возраста (до 18 лет, от 18 до 20 лет, от 20 до 25 лет, свыше 25 лет). Ø Обеспечить сортировку списка спортсменов по городам, затем по фамилиям. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в первый отчет список спортсменов отсортированный по фамилиям с указанием общего их числа. Во второй отчет - список городов с указанием числа спортсменов, которые его представляют.7Записи, содержащие информацию о книгах в библиотеке, имеют след.структуру: регистрационный номер (код) книги, автор, название книги, тематика, год издания, издательство, кол-во экземпляров. Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. вывод сведений о книгах заданного автора. 2. в отдельном окне выводить список всех авторов и количество написанных ими книг. 3. информацию о самой старой из всех книг. 4. в отдельном окне выводить количество книг по каждой из тематик. 5. вывести таблицу книг, фамилия автора которых начинается на заданную букву. 6. суммарное количество книг. Ø Обеспечить сортировку по авторам и по названиям книг по возрастанию и по убыванию Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в первый отчет отсортированный по названиям полный список книг с указанием в итоговой строке общего числа наименований и общего количества книг. Во второй отчет - тематика и количество книг по данной тематике.8В прокуратуре имеются сведения о заключенных: ФИО, номер дела, дата рождения (формат поля дата), статья УК, срок заключения (годы), год заключения. Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. информацию о самом молодом и самого старом заключенном. 2. в отдельном окне выводить список статей и количество заключенных по этим статьям. 3. в отдельном окне выводить список заключенных, освобождаемых через 1 год. 4. в отдельном окне выводить среднее значение срока заключения по каждой из статей. 5. вывести список заключенных, фамилия которых начинается на заданную букву. 6. в отдельном окне выводить список заключенных со сроком больше 3 но менее 5 лет. Ø Обеспечить сортировку списка заключенных по алфавиту. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в первый отчет список статей УК с указанием количества заключенных по этим статьям. Во второй отчет - полный отсортированный список заключенных с указанием их общего числа и среднего срока заключения.9В отделе сбыта завода имеется информация: шифр заказчика, организация заказчика, наименование товара, цена, кол-во, плановый и фактический сроки поставки (формат поля - дата). Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. сформировать список заказов, по которым задержка поставки превышает 10 дней. 2. список заказчиков с указанием общей суммы заказа. 3. список заказчиков, заказавших заданный товар. 4. в отдельном окне выводить список заказчиков с указанием общего числа заказов и полной суммы заказов. 5. цену самого дорогого и самого дешевого товара 6. общую сумму поставок. Ø Обеспечить сортировку списка по названию организации заказчика, по наименованию товара, по дате заказа в порядке возрастания и в порядке убывания. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в первый отчет отсортированный список заказчиков с указанием суммы заказа. В итоговой строке отчета должна быть приведена общая сумма заказа. Во второй отчет - отсортированный список товаров с указанием количества заказов и суммы заказов этого товара. В итоговой строке должно быть отображено общее число товаров.10Имеются следующие сведения о футбольных командах: код команды, наименование команды, город, фамилия и инициалы капитана, кол-во проведенных игр, результаты игр (кол-во побед, поражений, ничьих), кол-во забитых и пропущенных мячей. Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. подсчитать количество очков для заданной команды и отпечатать в отдельном окне данные о командах в порядке их положения в турнирной таблице. 2. определить команду с лучшей разницей забитых и пропущенных мячей. 3. в отдельном окне выводить количество команд в каждом из городов. 4. обеспечить поиск сведений о команде по заданной фамилии капитана и по названию команды. 5. вывести суммарное количество забитых всеми командами мячей. 6. вывести фамилию капитана команды с худшей разницей забитых и пропущенных мячей. Ø Обеспечить сортировку списка по названию команды и по городу в порядке возрастания и в порядке убывания. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в отчет турнирную таблицу.11В сведениях о рабочих с повременной оплатой труда указывается: номер цеха, разряд, фамилия, кол-во отработанных часов, стоимость одного часа. Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. вычислить для каждого цеха и в целом по заводу: кол-во рабочих, сумму зарплаты, суммарное и среднее кол-во отработанных часов. 2. вычислить для каждого из разрядов и вывести в отдельном окне количество рабочих и суммарное и среднее количество отработанных ними часов. 3. сумму максимальной зарплаты, максимальное количество отработанных часов. 4. вывести на экран сведения о рабочем с максимальной и минимальной зарплатой. 5. вывести список рабочих, чья зарплата превышает заданную. 6. вывести список рабочих, чья фамилия начинается на заданную букву. Ø Обеспечить сортировку по цехам, а затем по фамилиям с указанием сумм зарплаты Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в первый отчет отсортированный по фамилиям список рабочих с указанием зарплаты. В итоговой строке должны быть указаны: общая сумма выплат, общее число отработанных часов, средняя стоимость одного часа. Во второй отчет - номера цехов с указания количества рабочих этого цеха. В итоговой полосе отчета - общее число рабочих.12В справочном бюро содержатся след. сведения: ФИО, дата рождения, адрес, дом. телефон . Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. отображать сведения о гражданах по возрастным критериям (до 10 лет, 10-20 … старше 60 лет). 2. определить возраст старейшего из жителей города. 3. определить средний возраст жителей города. 4. осуществить поиск по следующим категориям: фамилия, адрес, дата рождения, телефон. 5. вычислить средний возраст жителей города. 6. вывести список граждан, чья фамилия начинается на заданную букву. Ø Обеспечить сортировку списка по фамилиям. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в отчет общий список, отсортированный по фамилиям. В итоговой строке - количество людей.13При подведении итогов pефеpендума от разных районов была получена информация: название района, общее число жителей, имеющих право голоса, число жителей, принявших участие в pефеpендуме, число жителей, голосовавших «Да» и голосовавших «Нет». Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. составить список районов, большинством голосов проголосовавших «Да»; 2. вывести список районов, в которых голосовало менее 50% жителей, имеющих право голоса список районов, в которых голосовало более 80% жителей, имеющих право голоса; 3. вывести общее процентное соотношение проголосовавших «За», «Против» и воздержавшихся; 4. автоматически вычислять количество воздержавшихся для каждого из районов и в целом. 5. название района с максимальным и минимальным числом избирателей. 6. суммарное количество избирателей и процент людей, принявших участие в голосовании. Ø Обеспечить сортировку по названиям районов в порядке возрастания и в порядке убывания. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в отчет результаты референдума (названия районов отсортированы по алфавиту). В итоговой строке - общее число избирателей, проголосовавших «За», «Против», воздержавшихся, не пришедших на выборы с указанием процентного соотношения к имеющим право голоса.14В заводском цеху ведется журнал расхода материалов по следующим данным: код материала, название материала, расход в сутки, кол-во имеющееся в цеху. Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. вывести список материалов, которые закончатся через заданное количество дней 2. код и название наименее и наиболее расходуемых материалов 3. вывести список всех материалов, имеющихся в цеху и количество дней, через которые они закончатся. 4. осуществить поиск по первой букве названия и по коду материала. 5. общее число наименований материалов. 6. наименование материалла, запас которого в цеху наибольший. Ø Обеспечить сортировку списка по названиям и по коду материалов в порядке возрастания и убывания. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в первый отчет список материалов с указанием их количества в цеху. В итоговой строке - количество наименований материалов. Во второй отчет - список материалов с указанием их количества, необходимого для работы цеха в течении месяца (31 день).15За материально ответственным лицом числятся материальные ценности, записанные в журнале: код, название предмета, количество, год приобретения, сpок службы (годы), оценочная стоимость. Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. вывести список предметов, подлежащих списанию в заданный год 2. осуществить поиск по заданному коду и названию предмета. 3. в отдельном окне вывести количество предметов, купленных в каждом году. 4. в отдельном окне вывести список предметов и количество лет, оставшихся до списания. 5. вывести список предметов, оценочная стоимость которых превышает 100 грн. 6. вывести общую оценочную стоимость и количество наименований всех материалов Ø Обеспечить сортировку по названию предметов в порядке возрастания и убывания. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в первый отчет отсортированный список материальных ценностей. В итоговой строке - суммарная стоимость предметов. Во второй отчет список предметов, подлежащих списанию через 2 года.16В заводском цеху ведется учет электpоэнеpгии, расходуемой машинами и пpибоpами. Имеются след. данные: код, название машины или пpибоpа, инвентарный номер, потребляемая мощность, кол-во единиц в цеху. Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. осуществить поиск по заданному коду и по первой букве названия машины. 2. вывести потребляемую мощность, название и инвентарный номер наиболее и наименее и наиболее энергоемкой машины. 3. в отдельном окне вывести список названий машин и суммарное значение потребляемых ими мощностей. 4. суммарную мощность, потребляемую цехом пpи всех включенных пpибоpах. 5. вывести список приборов, чья потребляемая мощность превышает заданную. 6. вывести название приборов, количество которых в цеху максимально. Ø Обеспечить сортировку списка по названию машин в порядке возрастания и убывания. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в первый отчет список наименований машин с указанием суммарной потребляемой мощности. В итоговой строке - общая потребляемая мощность по цеху. Вывести во второй отчет список наименований тех машин, потребление электроэнергии которых превышает заданную пользователем величину.17Для текущего семестра в учебной части вуза имеются сведения об изучаемых дисциплинах: наименование дисциплины, наименование кафедры, шифр специальности (4 цифры), кол-во часов (лекций, лаб.занятий, практ. занятий), вид отчетности (экзамен, зачет ). Необходимо сформировать следующие запросы: в отдельном окне вывести количество дисциплин по каждой из кафедр. автоматически вычислять общее кол-во часов аудиторной нагрузки для всех дисциплин. вычислить отдельно общее кол-во экзаменов и зачетов. вывести в отдельном окне список специальностей и количество изучаемых ими дисциплин вывести в отдельном окне список дисциплин с указанием общего числа аудиторных часов. осуществить поиск по заданной дисциплине, по заданной кафедре и по заданной специальности (название должно выбираться из списка). Ø Обеспечить сортировку по наименованием дисциплин, по кафедрам и шифру специальности. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в первый отчет - список кафедр с указаниям количества изучаемых дисциплин. Во второй отчет - список специальностей с указанием количества дисциплин. Итоговая строка для каждого из отчетов должна содержать соответственно количество кафедр и количество специальностей. В третий отчет - отсортированный список дисциплин с указанием специальности, количества часов и формы отчетности.18Даны записи о расходовании электроэнергии на заводах области. Структура таблицы: номер завода, наименование завода, фамилия и инициалы директора, фамилия и инициалы гл. энергетика, расход электроэнергии в тыс. кВт-ч (плановый и фактический - два разных поля). Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. для каждого завода подсчитать размер отклонения фактического расхода от планового с учетом знака. 2. вывести суммарное и среднее количество энергии, потребляемой заводами, а также суммарное и среднее отклонение от плана с учетом знака. 3. вывести максимальное значение перерасхода энергии (отклонения от плана). 4. в отдельном окне вывести фамилии гл. энергетиков, чьи заводы превысили плановый расход. 5. осуществить поиск по заданной фамилии директора и энергетика, а также наименованию завода. 6. вывести информацию о заводе с максимальным расходом электроэнергии. Ø Обеспечить сортировку по наименованиям заводов. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в отчет список предприятий (по алфавиту), у которых фактический расход электроэнергии превышает нормативный с указанием перерасхода для каждого из предприятий и суммарного перерасхода.19Даны сведения за месяц о пропусках занятий студентами групп. Структура базы данных: шифр группы, наименование факультета, кол-во студентов в группе, общее кол-во часов пропусков занятий, кол-во часов пропуска по уважительной причине. Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. вычислить для каждого факультета (вывести в отдельном окне) и в целом: общее кол-во студентов, суммарные значения часов пропуска, среднее кол-во часов пропуска по неуважительной причине на одного студента. 2. осуществить поиск по шифру группы и по названию факультета. 3. вывести макс. кол-во пропусков занятий по уважительной причине. 4. вывести название группы с максимальным числом пропусков по неуважительной причине. 5. вывести список групп, в которых количество пропусков по неуважительной причине превышает заданную величину. 6. вывести наименование факультета, на котором среднее число пропусков максимально. Ø Обеспечить сортировку данных по факультетам и по группам. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Вывести в первый отчет список групп с указанием числа студентов в каждой группе и общего числа студентов, во второй - список групп с указанием среднего количества пропусков на одного студента.20В кассах предварительной продажи ж/д билетов имеются следующие сведения: номер поезда, станция назначения, дата отправления, кол-во мест и кол-во проданных билетов (отдельно СВ, купейных, плацкартных и общих) Программа должна отвечать следующим требованиям: Ø Работать в двух режимах: ввода и поиска информации Ø В режиме поиска формировать следующие запросы: 1. в отдельном окне вывести список поездов с указанием общего числа мест, числа свободных мест по каждому из видов. 2. вывести список поездов по указанной дате. 3. осуществлять поиск по номеру поезда, станции прибытия и станции назначения. 4. вывести список поездов, где были проданы более чем 90% билетов. 5. вывести список поездов, где СВ-вагоны отсутствуют. 6. вывести список поездов, дата отправление которых приходится на 13 число. Ø Обеспечить сортировку данных по номеру поезда, станции прибытия и станции назначения. Ø Создать таблицу archive аналогичной структуры. Скопировать в нее все данные из основной таблицы. Ø Выводить в первый отчет - отсортированный по номеру вагона список поездов с указанием числа свободных мест по каждому из видов (в итоговой строке указать количество поездов и общее число мест в них). Во второй отчет вывести список только тех поездов, загрузка которых составляет менее 70%Требования к оформлению отчета по контрольному заданию


Отчет оформляется на листах формата А4 со стандартным титульным листом «Контрольная работа» и должен содержать следующие пункты:

1.Постановка задачи.

2.Структуру таблиц базы данных с указанием типов полей.

.Поэтапное описание процесса создания программы с примерами «скрин-шотов» программы и фрагментов исходного кода.


Приложением к отчету является дискета, содержащая рабочую версию программы и файлы базы данных.

Список рекомендуемой литературы


Borland Delphi 6. Руководство разработчикаfor Windows: Практическое руководство. Под редакцией Оспищева Д. А. Издательство АОЗ "Алевар"

Александровский А.Д. Delphi 5. Разработка корпоративных приложений. Среда визуальной разработки RAD

Алексей Архангельский. Интегрированная среда разработки Delphi (версии 1 - 5). Практическое пособие с примерами

Архангельский А.Я. Работа с локальными базами данных в Delphi 5.

Архангельский А.Я. Object Pascal в Delphi. Настольная книга программиста.

Бобровский С. И. Delphi 7. Учебный курс

Горев А., Ахаян Р., Макашарипов С. «Эффективная работа с СУБД».СПб.:Питер, 2001.

Дарахвелидзе П.Г. Программирование в Delphi 7.

Дж. Мартин., "Организация баз данных в вычислительных системах" М: Мир 1998г.

Джон Матчо, Дэвид Р.Фолкнер. «Delphi» - пер. с англ. - М.:Бином, 1999г.

Дунаев С.В. Borland-технологии. SQL-Link. Interbase. Paradox for Windows. Delphi

Епанешников А.М., "Программирование в среде Delphi 5.0"

Кириллов В.В. Структуризованный язык запросов (SQL). - СПб.: ИТМО, 2001.

Когловский М.Р., "Технология баз данных на персональных ЭВМ", Москва, 'Финансы и статистика', 1992 г.

Кожедуб О.А., Скиба С.А., Подольский С.В. Разработка интернет-приложений в Delphi

Мейер М. Теория реляционных баз данных. - М.: Мир, 1997.

Наталия Елманова. ADO в Delphi.

Попов В.Б. Паскаль и Дельфи. Самоучитель

С.М.Диго "Проектирование и использования баз данных". Москва: Финансы и статистика 2000.

Тиори Т., Фрай Дж. Проектирование структур баз данных. В 2 кн., - М.: Мир, 1995.

Фаронов В. Программирование баз данных в Delphi 6: учебный курс


МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ КРИВОРІЗЬКИЙ ІНСТИТУТ ПВНЗ «Кременчуцький університет економіки, інформаційних технологій та управління»

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ