Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Р.З Ольга В№11.doc
Скачиваний:
3
Добавлен:
01.09.2019
Размер:
229.38 Кб
Скачать
    1. Описание пользовательского интерфейса

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

Меню программы состоит из пяти пунктов:

  1. О программе;

  2. Ввод (с клавиатуры, из файла);

  3. Поиск книги;

  4. Список книг;

  5. Поиск книг по году издания

  6. выход.

При работе с программой необходимо нажимать клавиши в соответствии с необходимым нам меню.

Рассмотрим все пункты меню в соответствии с их порядком, указанном на рисунке (3.1):

Рис. 3.1 Меню пользователя

«О программе»(активируется при нажатии на клавишу «1»): при этом выводится окно с информацией о программе (Рис. 3.2).

Рис. 3.2 Меню «О программе»

«Ввод (клавиатура, файл)» (активируется при нажатии на клавишу «2»): при его выборе выводится подменю (Рис 3. 3), в котором пользователю предлагается выбрать тип ввода данных в программу:

- С клавиатуры;

- Из файла.

Рис. 3.3 Меню «Ввод (клавиатура, файл)»

В соответствии с необходимым вводом нажимаемся цифровая клавиша.

При выборе «Ввод с клавиатуры» появится окошко форма ввода данных (Рис 3.4).

Рис. 3.4 Форма «Ввод с клавиатуры»

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

ENTER – для добавления записи в базу, и преступления к заполнению другой записи;

ESC – для записи данных в базу и выхода в основное меню.

При выборе «Ввод из файла» программа запросит адрес файла из которого необходимо загрузить данные.

При выборе меню «Сортировка»(нажатие клавиши «3»): проявится окно подменю в котором будет предложено следующие опции (Рис 3.5):

- «С помощью включения» выбор этого подменю приведёт к сортировки данных способом включения;

  • «Назад в меню» возврат пользователя в главное меню программы

Рис. 3.5 Окно «сортировка»

При выборе меню поиска «Поиск» (нажатие клавиши «4»): появится окно подменю (Рис 3.6), где предложат выбрать следующие варианты поиска:

- Нахождение сотрудников пенсионного возраста «Сотрудники пенсионного возраста»;

- Определение среднего стажа работы в конкретном отделе «Средний стаж работы в отделе»;

- Нахождение информации о конкретном сотруднике «Информация о конкретном сотруднике»;

- «Назад в меню».

Рис. 3.6 Окно «выбора типа поиска».

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

При выборе «Информация о конкретном сотруднике» программа предложит ввести пользователю фамилию сотрудника, а затем найдёт его.

При выборе меню выхода «Выход» (нажатие «5»): программа в случае если данные были введены с клавиатуры, или от сортированы, попросит схоронить данные и их структуру в файле ABD, либо если данные были введены из другого файла, то сохранить в него.

3.3 Заключение и выводы

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

Необходимо заметить, что создания БД, с помощь языков программирования, процесс трудоёмкий и при возможности лучше и использовать MS Office Access, или другие спец. программы.

Приложение 1.

PROGRAM Institut;

uses crt,graph;

type

rec=record

Fam,name,sona:string[30];

kold,dohod,oklad:integer;

end;

mass=array[1..100] of rec;

var

massk:mass;

VBD:file of rec;

adres:string;

seg,segra:integer;

procedure Menu; Forward;

procedure sotrud;

var

strFam:string[30];

pory,syoy:integer;

begin

clrscr;

writeln;

write( ' Ведите фамилию:');

readln(strFam);

writeln;

writeln(' ___________________________________________________________________________');

writeln(' | Фамилия | Отдел | Должность | Год.рож | Стаж.раб | Оклад |');

writeln(' ---------------------------------------------------------------------------');

syoy:=1;

for pory:=1 to seg do

if massk[pory].Fam=strFam then

begin

gotoxy(3,syoy+6);

writeln(massk[pory].Fam);

gotoxy(16,syoy+6);

writeln(massk[pory].name);

gotoxy(35,syoy+6);

writeln(massk[pory].sona);

gotoxy(52,syoy+6);

writeln(massk[pory].kold);

gotoxy(64,syoy+6);

writeln(massk[pory].dohod);

gotoxy(72,syoy+6);

writeln(massk[pory].oklad);

syoy:=syoy+1;

end;

readkey;

end;

procedure NazPo;

var

por,pens,syo:integer;

begin

clrscr;

writeln;

write(' Текущий год=');

{$I-}

readln(pens);

while IOResult<>0 do

begin

writeln;

writeln(' Не правельный ввод параметра "Текущий год"');

readkey;

clrscr;

writeln;

write(' Текущий год=');

readln(pens);

end;

{$I+}

writeln;

syo:=1;

writeln(' ___________________________________________________________________________');

writeln(' | Фамилия | Отдел | Должность | Год.рож | Стаж.раб | Оклад |');

writeln(' ---------------------------------------------------------------------------');

for por:=1 to seg do

if pens-massk[por].kold>=60 then

begin

gotoxy(3,syo+6);

writeln(massk[por].Fam);

gotoxy(16,syo+6);

writeln(massk[por].name);

gotoxy(35,syo+6);

writeln(massk[por].sona);

gotoxy(52,syo+6);

writeln(massk[por].kold);

gotoxy(64,syo+6);

writeln(massk[por].dohod);

gotoxy(72,syo+6);

writeln(massk[por].oklad);

syo:=syo+1;

end;

readkey;

end;

procedure sredsta;

var

otdel:string[30];

jok,sumzo,kolFam:integer;

sred:real;

begin

if seg<>0 then

begin

kolFam:=0;

sumzo:=0;

clrscr;

writeln;

write(' Название отдела:');

readln(otdel);

for jok:=1 to seg do if massk[jok].name=otdel then

begin

kolFam:=kolFam+1;

sumzo:=sumzo+massk[jok].dohod;

end;

clrscr;

writeln;

write(' Средний стаж: ',sumzo div KolFam,' лет');

gotoxy(2,20);

write('Нажмите любую клавишу');

readkey;

end;

end;

procedure pechat;

var

op:integer;

begin

clrscr;

writeln;

writeln(' ___________________________________________________________________________');

writeln(' | Фамилия | Отдел | Должность | Год.рож | Стаж.раб | Оклад |');

writeln(' ---------------------------------------------------------------------------');

for op:=1 to seg do

begin

gotoxy(3,op+4);

writeln(massk[op].Fam);

gotoxy(16,op+4);

writeln(massk[op].name);

gotoxy(35,op+4);

writeln(massk[op].sona);

gotoxy(52,op+4);

writeln(massk[op].kold);

gotoxy(64,op+4);

writeln(massk[op].dohod);

gotoxy(72,op+4);

writeln(massk[op].oklad);

end;

readkey;

end;

procedure SortVkluch;

label kuu;

var

repo:rec;

b,j,i,k,sab:integer;

begin

for i:=1 to seg do

begin

repo:=massk[i];

j:=1;

while repo.dohod>massk[j].dohod do j:=j+1;

for k:=i-1 downto j do massk[k+1]:=massk[k];

massk[j]:=repo;

end;

clrscr;

writeln;

writeln(' Сортировка успешно завершена');

writeln;

writeln(' ENTER- Печетать данные');

writeln;

write(' ESC- Назад в меню');

sab:=0;

while sab=0 do

case ReadKey of

#13:begin

segra:=1;

pechat;

sab:=1;

end;

#27:goto kuu;

end;{case}

kuu:

segra:=1;

end;

procedure VvodFile;

label out,povtor;

var

FLoad:File of rec;

find,me:integer;

begin

povtor:

clrscr;

writeln;

write(' введите адрес файла (Пример: "c:\raschet\ABD"):');

read(adres);

writeln;

write(' Нажмите любую клавишу');

readkey;

writeln;

{$I-}

Assign(FLoad,adres);

reset(Fload);

if IOResult<>0 then

begin

writeln(' Файл был удалён или перемещён');

writeln(' или не найден по адресу: "',adres,'"');

writeln;

writeln(' ENTER - Пробовать снова');

write(' ESC - Назад в меню');

find:=0;

while find=0 do

case ReadKey of

#13:goto povtor;

#27:goto out;

end;{case}

end;

{$I+}

for me:=0 to FileSize(Fload)-1 do

begin

seek(Fload,me);

read(Fload,massk[me+1]);

writeln(massk[me+1].fam,' ',massk[me+1].dohod);

end;

seg:=Filesize(Fload);

writeln;

writeln(' Загрузка из файла полностью завершена');

writeln;

write(' нажмите любую клавишу.');

ReadKey;

out:

close(Fload);

end;

procedure Vvod;

label U;

var F:File of rec;

re:rec;

se,kl,cods,cod,pog,kolds:integer;

begin

segra:=1;

U:Assign(F,adres);

{$I-}

reset(F);

seek(F,Filesize(F));

if IOResult<>0 then rewrite(F);

{$I+}

clrscr;

writeln;

writeln(' Фамилия:');

writeln;

writeln(' Отдел:');

writeln;

writeln(' Должность:');

writeln;

writeln;

writeln(' Год рождения:');

writeln;

writeln(' Стаж работы:');

writeln;

writeln(' Оклад:');

repeat

gotoxy(12,2);

readln(re.Fam);

Until re.fam<>'';

cods:=0;

cod:=0;

while cods<>1 do

for kl:=1 to length(re.fam) do

begin

val(re.fam[kl],pog,cod);

if cod=0 then

begin

gotoxy(2,20);

Write('Не правельный ввод параметра "Фамилия", нажмите любую клавишу');

readkey;

clrscr;

writeln;

writeln(' Фамилия:');

writeln;

writeln(' Отдел:');

writeln;

writeln(' Должность:');

writeln;

writeln;

writeln(' Год рождения:');

writeln;

writeln(' Стаж работы:');

writeln;

writeln(' Оклад:');

gotoxy(12,2);

readln(re.Fam);

cods:=0;

break;

end

else cods:=1;

end;

repeat

gotoxy(10,4);

readln(re.name);

until re.name<>'';

cods:=0;

cod:=0;

while cods<>1 do

for kl:=1 to length(re.name) do

begin

val(re.name[kl],pog,cod);

if cod=0 then

begin

gotoxy(2,20);

Write('Не правельный ввод параметра "Отдел", нажмите любую клавишу');

readkey;

clrscr;

writeln;

writeln(' Фамилия: '+re.fam);

writeln;

writeln(' Отдел:');

writeln;

writeln(' Должность:');

writeln;

writeln;

writeln(' Год рождения:');

writeln;

writeln(' Стаж работы:');

writeln;

writeln(' Оклад:');

gotoxy(10,4);

readln(re.name);

cods:=0;

break;

end

else cods:=1;

end;

repeat

gotoxy(14,6);

readln(re.sona);

until (re.sona<>'');

cods:=0;

cod:=0;

while cods<>1 do

for kl:=1 to length(re.sona) do

begin

val(re.sona[kl],pog,cod);

if cod=0 then

begin

gotoxy(2,20);

Write('Не правельный ввод параметра "Должность", нажмите любую клавишу');

readkey;

clrscr;

writeln;

writeln(' Фамилия: '+re.fam);

writeln;

writeln(' Отдел: '+re.name);

writeln;

writeln(' Должность:');

writeln;

writeln;

writeln(' Год рождения:');

writeln;

writeln(' Стаж работы:');

writeln;

writeln(' Оклад:');

gotoxy(14,6);

readln(re.sona);

cods:=0;

break;

end

else cods:=1;

end;

{$I-}

gotoxy(17,9);

readln(re.kold);

while (IOResult<>0) or (re.kold=0) do

begin

gotoxy(2,20);

Write('Не правельный ввод параметра"Год рождения", нажмите любую клавишу');

readkey;

clrscr;

writeln;

writeln(' Фамилия: '+re.fam);

writeln;

writeln(' Отдел: '+re.name);

writeln;

writeln(' Должность: '+re.sona);

writeln;

writeln;

writeln(' Год рождения:');

writeln;

writeln(' Стаж работы:');

writeln;

writeln(' Оклад:');

gotoxy(17,9);

readln(re.kold);

end;

{$I+}

gotoxy(16,11);

{$I-}

readln(re.dohod);

while (IOResult<>0) or (re.dohod=0) do

begin

gotoxy(2,20);

Write('Не правельный ввод параметра "Стаж работы", нажмите любую клавишу');

readkey;

clrscr;

writeln;

writeln(' Фамилия: '+re.fam);

writeln;

writeln(' Отдел: '+re.name);

writeln;

writeln(' Должность: '+re.sona);

writeln;

writeln;

writeln(' Год рождения: ',re.kold);

writeln;

writeln(' Стаж работы: ');

writeln;

writeln(' Оклад: ');

gotoxy(16,11);

readln(re.dohod);

end;

gotoxy(10,13);

{$I+}

{$I-}

readln(re.oklad);

while (IOResult<>0) or (re.oklad=0) do

begin

gotoxy(2,20);

Write('Не правельный ввод параметра "Оклад", нажмите любую клавишу');

readkey;

clrscr;

writeln;

writeln(' Фамилия: '+re.fam);

writeln;

writeln(' Отдел: '+re.name);

writeln;

writeln(' Должность: '+re.sona);

writeln;

writeln;

writeln(' Год рождения: ',re.kold);

writeln;

writeln(' Стаж работы: ',re.dohod);

writeln;

writeln(' Оклад: ');

gotoxy(10,13);

readln(re.oklad);

end;

{$I+}

gotoxy(2,30);

se:=0;

Writeln;

writeln(' ENTER - Добавить запись в базу и приступить к новой.');

writeln;

writeln(' ESC - Добавить запись в базу и выйти в главное меню.');

while se=0 do

case ReadKey of

#27:begin

write(F,re);

for kl:=0 to Filesize(F)-1 do

BEGIN

SEEK(F,kl);

read(F,massk[kl+1]);

end;

seg:=Filesize(F);

Close(F);

se:=1;

end;

#13:begin

write(F,re);

for kl:=0 to Filesize(F)-1 do

BEGIN

SEEK(F,kl);

read(F,massk[kl+1]);

end;

seg:=Filesize(F);

Close(F);

goto U;

end;

end;

end;

procedure Oprogr;

var

oi:integer;

begin

clrscr;

for oi:=1 to 4 do writeln;

writeln(' Расчётное задание по информатике');

writeln;

writeln(' Студентки группы ЭО1-04');

writeln;

writeln(' Смирновой О. ');

writeln;

writeln(' B-11');

for oi:=1 to 4 do writeln;

write('Назад в меню - Enter');

readln;

end;

procedure Menu;

label exit,esho;

var

Podgr:File of rec;

no,nof,segmas,r,ho:integer;

begin

segra:=0;

adres:='a:\RASCHET\ABD';

nof:=0;

{$I-}

Assign(Podgr,adres);

Reset(Podgr);

if IOResult<>0 then

begin

clrscr;

writeln;

writeln(' Файл <ABD> был перемещён или удалён');

writeln;

writeln(' Создать новый файл?');

writeln;

writeln(' ENTER - Да, создать файл и преступить к работе');

writeln;

writeln(' ESC - Нет, Выход из программы');

while nof=0 do

case ReadKey of

#13:begin

Rewrite(Podgr);

Close(Podgr);

nof:=1;

seg:=0;

end;

#27:goto exit;

end;

end

else if Filesize(podgr)<>0 then begin

for nof:=0 to Filesize(Podgr)-1 do

begin

seek(Podgr,nof);

read(Podgr,massk[nof+1]);

end;

seg:=Filesize(Podgr);

Close(Podgr);

end

else seg:=0;

{$I+1}

esho:

clrscr;

writeln;

writeln(' 1- О программе');

writeln;

writeln(' 2- Ввод(клавиатура,файл)');

writeln;

writeln(' 3- Сортировка');

writeln;

writeln(' 4- Поиск');

writeln;

writeln(' 5- Выход');

gotoxy(2,20);

write('Выберите номер меню:');

no:=0;

while no=0 do

case ReadKey of

#49:begin

Oprogr;

goto esho;

end;

#50:begin

clrscr;

writeln;

writeln(' 1- Ввод с клавиатуры');

writeln;

writeln(' 2- Ввод из файла');

writeln;

writeln(' 3- Назад в меню');

gotoxy(2,20);

write('Chos namber of menu');

nof:=0;

while nof=0 do

case ReadKey of

#49:Begin

Vvod;

goto esho;

end;

#50:Begin

VvodFile;

goto esho;

end;

#51:goto esho;

end; {case}

end;

#51:begin

clrscr;

writeln;

writeln(' 1- С помощью включения');

writeln;

writeln(' 2- Назад в меню');

gotoxy(2,20);

write('Выберите номер меню.');

nof:=0;

while nof=0 do

case ReadKey of

#49:Begin

SortVkluch;

goto esho;

end;

#50:Begin

goto esho;

end;

end; {case}

end;

#52:begin;

clrscr;

writeln;

writeln(' 1- Сотрудники пенсионного возроста');

writeln;

writeln(' 2- Средний стаж работы в отделе');

writeln;

writeln(' 3- Информация о конкретном сотруднике');

writeln;

writeln(' 4- Назад в меню');

gotoxy(2,20);

write('Выберите номер меню.');

nof:=0;

while nof=0 do

case ReadKey of

#49:Begin

NazPo;

goto esho;

end;

#50:Begin

sredsta;

goto esho;

end;

#51:begin

sotrud;

nof:=1;

goto esho;

end;

#52:begin

nof:=1;

goto esho;

end;

end; {case}

end;

#53:begin;

clrscr;

writeln;

writeln(' Структура данных была изменена');

writeln(' сохронить данные в таком виде?');

writeln;

writeln(' ENTER - Да');

writeln;

writeln(' ESC - Нет');

r:=0;

if segra=1 then

begin

while r=0 do

case readkey of

#13:begin

Assign(Podgr,adres);

rewrite(Podgr);

for ho:=1 to seg do write(Podgr,massk[ho]);

close(Podgr);

r:=1;

no:=1

end;

#27:begin

goto exit;

r:=1;

no:=1;

end;

end; {case}

end

else goto exit;

end;

end; {CASE}

exit:

end;

begin

Menu;

end.

3