- •Расчетно-пояснительная записка
- •Содержание
- •1. Постановочная часть 4
- •2. Разработочная часть 9
- •3. Результативная часть 15
- •Аннотация.
- •1. Постановочная часть
- •Теоретическое введение
- •Анализ технического задания
- •1.3 Входные данные. Форма представления результатов.
- •2. Разработочная часть
- •2.1. Обоснование структуры программы.
- •2.2. Структура модулей программы
- •2.3. Спецификация на программные модули.
- •2.4. Ограничения на программу
- •Результативная часть
- •Результаты тестирования
- •Описание пользовательского интерфейса
- •3.3 Заключение и выводы
Описание пользовательского интерфейса
Пользовательский интерфейс представляет собой меню, которое отвечает функциям по работе с данными в таблице, а также несколько экранных форм, в которых осуществляется ввод и вывод данных. Формы наглядны и удобны для работы.
Меню программы состоит из пяти пунктов:
О программе;
Ввод (с клавиатуры, из файла);
Поиск книги;
Список книг;
Поиск книг по году издания
выход.
При работе с программой необходимо нажимать клавиши в соответствии с необходимым нам меню.
Рассмотрим все пункты меню в соответствии с их порядком, указанном на рисунке (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.