49744

Информационная система библиотека

Курсовая

Информатика, кибернетика и программирование

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

Русский

2014-01-07

117.06 KB

4 чел.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ «ПОЛОЦКИЙ ГОСУДАРСТВЕННЫЙ

УНИВЕРСИТЕТ»

Факультет информационных технологий

Кафедра технологий программирования

КУРСОВАЯ РАБОТА

По дисциплине «Основы алгоритмизации и программирования»

Тема: «Информационная система библиотека »

Проверил

ассистент

__________________И.В. Шульга

Автор работы

студент гр. 09-ИТ-3

_________________ Е.И. Мартуль

Новополоцк 2010



Содержание

Введение                                 4

  1.  Анализ задания и постановка задачи.
  2.  Теоретические сведения………...5
  3.   Проектирование программы                                     7

3 Проектирование программы                                    9

4 Реализация и тестирование программы                                  15

Выводы                                     18

Список использованных источников                                 19

Приложение А. Листинг программы                               22


Введение

Система Pascal ABC основана на языке Delphi Pascal и призвана осуществить постепенный переход от простейших программ к модульному, объектно-ориентированному, событийному и компонентному программированию. Некоторые языковые конструкции в Pascal ABC допускают, наряду с основным, упрощенное использование, что позволяет использовать их на ранних этапах обучения.

Создание и  редактирование документов с помощью компьютера становится в информационном обществе социально необходимым умением — достаточно просмотреть объявления о приеме на работу. Современные информационные технологии позволяют включать в состав документа любые мультимедийные объекты (графику, звук, анимацию, видео). Умение работать с мультимедиа информацией, создавать компьютерные презентации становится также очень важным. В современном информационном обществе вряд ли необходимы навыки традиционного черчения на ватмане. Вместо этого полезно получить первоначальное представление о назначении и возможностях компьютерных систем автоматизированного проектирования (САПР), которые, например, позволяют быстро рассмотреть различные варианты размещения мебели в квартире. Важнейшей составной частью информационной культуры современного человека является коммуникативная культура с использованием современных информационных технологий. Развитие сетевых информационных технологий сделало информационные ресурсы глобальной компьютерной сети Интернет потенциально доступными большинству человечества. Умение получать необходимую информацию из сети становится неотъемлемой частью информационной культуры человека.

Цель моей работы заключается в создании программы в которой можно: создавать новую базу данных, открывать базу из файла, сохранение базы в файл, добавление записей, удаление записей, поиск записей по одному из полей, вывод базы данных на экранб, сортировка и вывод на экран. Решения моей задачи будет описан на языке Pascal.В процессе создания программного продукта я использовал такие модули, как CRT и GraphABC языка программирования PascalABC.
1 Анализ задания и постановка задачи.

Исходя из целей постонавления задач, мне необхадимо создать.

База данных, которая будет содержать всю информацию:

1) номер цеха.

2) фамилии рабочих.

3) среднемесячный заработок.

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

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

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

2 Теоретические сведения

Любая программа, написанная на любом языке программирования, по большому счету предназначена для обработки данных. В качестве данных могут выступать числа, тексты, графика, звук и др. Одни данные являются исходными, другие – результатом, который получается путем обработки исходных данных программой.

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

Переменные описываются до основного кода программы. Для них указываются ее имя и тип хранимых данных.

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

Тип переменной определяется тем, с какими данными она связана.

Переменные типа integer могут быть связаны только с целыми значениями обычно в диапазоне от -32768 до 32767. В Pascal есть другие целочисленные типы.

Переменные типа real хранят вещественные (дробные) числа.

Переменная булевского (логического) типа может принимать только два значения - true (1, правда) или false (0, ложь).

Символьный тип (char) может принимать значения из определенной упорядоченной последовательности символов.

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

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

Все вышеописанное – это простые типы данных. Но бывают и более сложные, структурированные, которые базируются на простых типах.

Массив – это структура, занимающая в памяти единую область и состоящая из фиксированного числа компонентов одного типа.

Строки представляет собой последовательность символов. Причем количество этих символов не может быть больше 255 включительно. Такое ограничение характерная черта Pascal.

Запись – это структура, состоящая из фиксированного числа компонент, называемых полями. В разных полях данные могут иметь разный тип.

Множества представляют собой совокупность любого числа элементов, но одного и того же перечисляемого типа.

Файлы для Pascal представляют собой последовательности однотипных данных, которые хранятся на устройствах внешней памяти .

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

Список – динамическая структура данных, состоящая из конечного числа связанных между собой элементов, каждый из которых характеризуется двумя наборами значений:

  1.  информационный набор (содержательная часть элемента списка; определяется характером информации);
  2.  организационный набор данных (определяет порядок следования элементов в списке; для простых списков это указатель на следующий элемент списка).

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


2. Проектирование программы

После запуска программы будет предложено создание новой БД возле исходной программы. Далее после создания БД текстового файла нужно внести имя данного текстового файла, который находиться возле исходной программы. После внесения данных проверок будет показано меню, в котором будет произведены дальнейшие операции:

1) При выборе первого пункта будет произведено создание записей в данном         текстовом файле.

2) Второй пункт выводит на экран созданные записи.

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

4) В четвёртом пункте производиться поиск по полям.

5)В пятом пункте:вывод БД на эткран и удаление записей.

6)В шестом создание новой БД.

7)Седьмой пункт работа  с другой БД.

8)Восьмой пункт вывод и сортировка по полям.

9)Девятый пунк выход из программы.

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

4 Реализация и тестирование программы  

4.1 Реализация программы.

procedure sort – процедура сортировки фамилий простыми вставками.

procedure sortcex - процедура сортировки цехов простыми вставками.

procedure sortzar - процедура сортировки среднемесячной зарплаты           простыми вставками.

procedure perelist – процедура перелистывания.

procedure perelistpoiska – процедура перелистывания поиска.

procedure ppois – процедура вывода на экран меню поиска.

procedure vivod – процедуа вывод БД на экран.

procedure vivodpol – процедура вывод отсортированных полей БД на экран.

procedure del2 – процедура вывода на экран БД и удаление с неё.

procedure poisk – процедура поиска по полям БД.

procedure vivodcexa – процедура вывода цеха задаваемого пользователем и создавания нового файла возле исходной программы.

procedure sozdbd – создание текстового файла (базы данных) в котором находиться весь заполненный список.

Procedure menu – процедура для вывода на экран главного меню.

Procedure Pmenu – процедура для выбора в меню.

Полный листинг программы представлен в приложении Б.


4.2 Тестирование программы

После запуска будет предложено «Если есть у вас БД для этой программы нажмите Y, если нету нажмите N. При нажатии N будет произведено создание новой БД. (рис. 1).

Рисунок 1. – Выбор БД.

Далее нужно внести имя файла БД который у вас существует возле исходной программы.(рис. 2)

Рисунок 2. – Внесение имени БД.

Появляеться меню в котором можно выбрать любое действие при нажатии на кривиши «↑» и «↓».(рис. 3)

Рисунок 3. – Меню.

Для выбора нужного пункта требуеться нажать на клавишу «».

В «создание записей» производиться создание записи которая будет добавлена в файл и можно будет работать в программе с этой записью (рис. 4).

Рисунок 4. – Создание БД.

В «вывод на экран БД» выводит на существующие запили в данной БД, которые были созданы ранее  (рис.5).

Рисунок 5.- Вывод на экран БД.

Выводы

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

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


Список использованных источников

1. Диалог-МИФИ - Turbo Pascal 7.0. Самоучитель для начинающих.1999

2. К. Йенсен, Н.Вирт Паскаль Руководство для пользователя.

3. С.М. Окулов, Программирование в алгоритмах.

4. Основы программирования (Окулов С.М.).

5. http://pas1.ru/data (Язык Pascal. Программирование для начинающих)


ПРИЛОЖЕНИЕ А. БЛОК-СХЕМА АЛГОРИТМА

Начало

Подпрограмма sozdbd

Введите имя файла

Read(txtfile1)

if CanCreateFile(txtfile1) = true then begin

             да

Вы создали БД под именем:

                                                                нет

assign(bd,txtfile1);

rewrite(bd);

Такая БД существует

Конец

Приложение Б

Листинг программы

Program bdcex;

Uses Crt,GraphABC;

label 8,9,10,22;

Type people = record

     cex:integer;    //№ цеха

     fam:string[40]; //фамилии

     zar:integer; //ср заработок

end;

bdArray = array [1..1000] of people;

var

 buff:^people;

 l,l1,n,x:^integer;

 i,j,k,n1,iskip:integer;

  a:^bdArray;

  b:^bdArray;

  c:^bdArray;

 bd,bd2:text;

 y:string;

 z:byte;

 txtfile,txtfile1:string;

 v,poz:integer;

 massm:^array [1..9] of string;

 key:char;

procedure menu;

begin

massm^[1]:='1: создание записей              ';

massm^[2]:='2: вывод на экран бд             ';

massm^[3]:='3: Вывод нужного цеха работников ';

massm^[4]:='4: Поиск по полям бд             ';

massm^[5]:='5: Удаление записей из бд        ';

massm^[6]:='6: Создание новой БД             ';

massm^[7]:='7: Работа с другой Бд            ';

massm^[8]:='8: Вывод и сортировка по полям   ';

massm^[9]:='9: выход                         ';

end;

procedure ppoisk(var elem:integer; var kol:integer);

begin

  repeat

   key:=readkey;

   case key of

     #72:

         if (poz>1) and (poz<=kol) then begin

         dec(poz);

         dec(elem);

         end;

     #80:if poz<=kol-1  then  begin

         inc(poz);

         inc(elem);

         end;end;

until key=#27;

end;

procedure pmenu;

begin

clrscr;

for i:=1 to 9 do begin

if  poz=i then  begin

textbackground(3);

writeln(massm^[i]);

textbackground(15);

end

else

writeln(massm^[i]);

end;

for i:=1 to 14 do

writeln;

 textcolor(4);

writeln('Для выбора в меню нажмите правую стрелку ->');

 textcolor(0);

end;

procedure ppois;

begin

clrscr;

Writeln('Выберите цифры по которым будет осуществляться поис по полям');

for i:=1 to 3 do begin

if  poz=i then  begin

textbackground(3);

writeln(massm^[i]);

textbackground(15);

end

else

writeln(massm^[i]);

end;

for i:=1 to 18 do

writeln;

 textcolor(4);

writeln('Для выбора в меню нажмите правую стрелку ->');

 textcolor(0);

end;

procedure perelistpoiska(var kol:integer);

var key:char;

begin

  repeat

   key:=readkey;

   case key of

     #72:

         if (poz>1) and (poz<=kol) then begin

         dec(poz);

         ppois;

         end;

     #80:if poz<=kol-1  then  begin

         poz:=poz+1;

         ppois;

         end;end;

until key=#75;

end;

procedure perelist(var kol:integer);

var key:char;

begin

  repeat

   key:=readkey;

   case key of

     #72:

         if (poz>1) and (poz<=kol) then begin

         dec(poz);

         pmenu;

         end;

     #80:if poz<=kol-1  then  begin

         poz:=poz+1;

         pmenu;

         end;end;

until key=#75;

end;

procedure sort(var mass:bdArray);

var x:people;

begin

for i:=2 to k-1 do

 if mass[i-1].fam>mass[i].fam then

 begin

   x:=mass[i];

   j:=i-1;

   while (j>0) and (mass[j].fam>x.fam) do

   begin

     mass[j+1]:=mass[j];

     j:=j-1;

   end;

   mass[j+1]:=x;

 end;end;

  procedure sortcex(var mass:bdArray);

var x:people;

begin

for i:=2 to k-1 do

 if mass[i-1].cex>mass[i].cex then

 begin

   x:=mass[i];

   j:=i-1;

   while (j>0) and (mass[j].cex>x.cex) do

   begin

     mass[j+1]:=mass[j];

     j:=j-1;

   end;

   mass[j+1]:=x;

 end;end;

  procedure sortzar(var mass:bdArray);

var x:people;

begin

for i:=2 to k-1 do

 if mass[i-1].zar>mass[i].zar then

 begin

   x:=mass[i];

   j:=i-1;

   while (j>0) and (mass[j].zar>x.zar) do

   begin

     mass[j+1]:=mass[j];

     j:=j-1;

   end;

   mass[j+1]:=x;

 end;end;

procedure sozdzap;

begin

 assign(bd,txtfile);

 reset(bd);

 clrscr;

 Writeln('Сколько записей хотите добавить?');

 read(n^);

 for i:=n^ downto 1 do begin

  with buff^ do begin

   append(bd);

   clrscr;

   Writeln('Введите № цеха данного человека           ');

   read(cex);

   Writeln('Введите фамилию работника                 ');

   read(fam);

   Writeln('Введите средный заработок данного человека');

   read(zar);

   a^[i].cex:=cex;

   a^[i].fam:=fam;

   a^[i].zar:=zar;

  end;end;

  for i:=1 to n^ do begin

  writeln(bd,a^[i].cex); writeln(bd,a^[i].fam);writeln(bd,a^[i].zar);

  end;

  close(bd);

end;

procedure vivod;

var key:char;  k1:integer;

begin

assign(bd,txtfile);

reset(bd);

poz:=1;

k:=1;

v:=1;

i:=0;

n1:=10;

k1:=0;

while not eof(bd) do with buff^ do begin

 readln (bd,a^[k].cex); readln(bd,a^[k].fam); readln(bd,a^[k].zar);

 k:=k+1;

 v:=v+1;

end;

clrscr;

repeat

clrscr;

writeln ('==============================================================================');

writeln (' |№ Цеха||                            Фамилия||                  Ср.Заработок|');

writeln ('==============================================================================');

k:=k1;

 while k<n1 do

  with buff^ do begin

   k:=k+1;

    if  poz=k then begin

    if a^[k].cex<>0 then begin

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

     write ('',k,'');

     write ('|',a^[k].cex:6,'|');

     write ('|',a^[k].fam:35,'|');

     write ('|',a^[k].zar:30,'|');

     writeln;

   end; end

   else

    if a^[k].cex<>0 then begin

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

   writeln ('',k,'','|',a^[k].cex:6,'|','|',a^[k].fam:35,'|','|',a^[k].zar:30,'|');

   end;

   end;

 key:=readkey;

   case key of

     #72:

         if (poz>1) and (poz<=n1) then begin

         dec(poz);

         dec(k1);

         dec(n1);

         end;

     #80:if poz<=n1-1 then begin

         if a^[k+1].cex<>0 then begin

         inc(k1);

         inc(poz);

         inc(n1);

         end; end; end;

until key=#27;

close (bd);

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

end;

procedure vivodpol;

var n2:integer;

begin

assign(bd,txtfile);

reset(bd);

 massm^[1]:='1:№ цеха                             ';

massm^[2]:='2:Фамилии работников                 ';

massm^[3]:='3:среднюю заработную плану работников';

 k:=1;

v:=1;

while not eof(bd) do with buff^ do begin

 readln (bd,a^[v].cex); readln(bd,a^[v].fam); readln(bd,a^[v].zar);

 k:=k+1;

 v:=v+1;

end;

poz:=1;

v:=3;

ppois;

perelistpoiska(v);

clrscr;

v:=poz;

If v=1 then begin

sortcex(a^);

k:=10;

n2:=0;

i:=0;

repeat

n1:=n2;

clrscr;

writeln ('==========================================================');

writeln ('|№ Цеха||               Фамилия||             Ср.Заработок|');

writeln ('==========================================================');

while n1<k do begin

n1:=n1+1;

if a^[n1].cex <> 0 then begin

   write ('|',a^[n1].cex:6,'|');

   write ('|',a^[n1].fam:22,'|');

   write ('|',a^[n1].zar:24,'|');

   writeln;

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

end;end;

 key:=readkey;

   case key of

     #72:

         if (poz>1) and (poz<=k) then begin

         dec(n2);

         dec(poz);

         dec(k);

         end;

     #80:

     if poz<k  then begin

     if a^[n1+1].cex<>0 then begin

         inc(n2);

         inc(poz);

         inc(k);

         end;end;end;

until key=#27;

end;

If v=2 then begin

sort(a^);

poz:=1;

 k:=10;

n2:=0;

i:=0;

repeat

n1:=n2;

clrscr;

writeln ('==========================================================');

writeln ('|№ Цеха||               Фамилия||             Ср.Заработок|');

writeln ('==========================================================');

while n1<k do begin

n1:=n1+1;

if a^[n1].cex <> 0 then begin

   write ('|',a^[n1].cex:6,'|');

   write ('|',a^[n1].fam:22,'|');

   write ('|',a^[n1].zar:24,'|');

   writeln;

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

    end;end;

key:=readkey;

   case key of

     #72:

         if (poz>1) and (poz<k) then begin

         dec(n2);

         dec(poz);

         dec(k);

         end;

     #80:

     if poz<k  then begin

     if a^[n1+1].cex<>0 then begin

         inc(n2);

         inc(poz);

         inc(k);

         end;end;end;

until key=#27;

end;

If v=3 then begin

sortzar(a^);

poz:=1;

 k:=10;

n2:=0;

i:=0;

repeat

n1:=n2;

clrscr;

writeln ('==========================================================');

writeln ('|№ Цеха||               Фамилия||             Ср.Заработок|');

writeln ('==========================================================');

while n1<k do begin

n1:=n1+1;

if a^[n1].cex <> 0 then begin

   write ('|',a^[n1].cex:6,'|');

   write ('|',a^[n1].fam:22,'|');

   write ('|',a^[n1].zar:24,'|');

   writeln;

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

    end;end;

key:=readkey;

   case key of

     #72:

         if (poz>1) and (poz<k) then begin

         dec(n2);

         dec(poz);

         dec(k);

         end;

     #80:

     if poz<k  then begin

     if a^[n1+1].cex<>0 then begin

         inc(n2);

         inc(poz);

         inc(k);

         end;end;end;

until key=#27;

end;

close(bd);

end;

procedure del2;

var k1:integer;

label 11;

begin

 clrscr;

 assign(bd,txtfile);

 11:

 reset(bd);

poz:=1;

k:=1;

v:=1;

i:=0;

n1:=10;

k1:=0;

while not eof(bd) do with buff^ do begin

 readln (bd,a^[k].cex); readln(bd,a^[k].fam); readln(bd,a^[k].zar);

 k:=k+1;

 v:=v+1;

end;

clrscr;

repeat

clrscr;

writeln ('==============================================================================');

writeln (' |№ Цеха||                            Фамилия||                  Ср.Заработок|');

writeln ('==============================================================================');

k:=k1;

 while k<n1 do

  with buff^ do begin

   k:=k+1;

    if  poz=k then begin

    if a^[k].cex<>0 then begin

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

     textbackground(3);

     write ('',k,'');

     write ('|',a^[k].cex:6,'|');

     write ('|',a^[k].fam:35,'|');

     write ('|',a^[k].zar:30,'|');

     writeln;

     textbackground(15);

   end; end

   else

    if a^[k].cex<>0 then begin

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

   writeln ('',k,'','|',a^[k].cex:6,'|','|',a^[k].fam:35,'|','|',a^[k].zar:30,'|');

   end;

   end;

 key:=readkey;

   case key of

     #72:

         if (poz>1) and (poz<=n1) and (poz>k1+1) then begin

         dec(poz);

         end

         else

         if poz>1 then  begin

         dec(poz);

         dec(k1);

         dec(n1);

         end;

     #80:if poz<=n1-1 then

         inc(poz)

         else

         if a^[k+1].cex<>0 then begin

         inc(k1);

         inc(poz);

         inc(n1);

         end;

      #83:Begin

          clrscr;

          x^:=0;

          Textcolor(4);

          Writeln('Вы точно хотите удалить эту строку?Y\N');

          Textcolor(0);

          readln(y);

          if (y='y') or (Y='Y') then begin

           a^[poz].cex:=x^;

           a^[poz].fam:='';

           a^[poz].zar:=0;

             k:=0;

             rewrite(bd);

              for i:=1 to 20 do

                if a^[i].cex<>0  then begin

                 k:=k+1;

                  b^[k]:=a^[i];

                    writeln(bd,b^[k].cex);

                      writeln(bd,b^[k].fam);

                      writeln(bd,b^[k].zar);

                end;

                a^[k+1].cex:=x^;

                a^[k+1].fam:='';

                a^[k+1].zar:=0;

            goto 11;

         end;end;end;

until key=#27;

close (bd);

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

end;

procedure poisk;

var n2:integer;

begin

clrscr;

assign(bd,txtfile);

reset(bd);

massm^[1]:='1:№ цеха                             ';

 massm^[2]:='2:Фамилии работников                 ';

massm^[3]:='3:среднюю заработную плану работников';

 k:=1;

v:=1;

while not eof(bd) do with buff^ do begin

 readln (bd,a^[v].cex); readln(bd,a^[v].fam); readln(bd,a^[v].zar);

 k:=k+1;

 v:=v+1;

end;

sort(a^);

n1:=0;

poz:=1;

k:=3;

ppois;

perelistpoiska(k);

clrscr;

k:=poz;

poz:=1;

If k=1 then begin

 n2:=0;

i:=0;

k:=0;

Writeln('Введите № цеха который хотите вывести на экран');

 readln(z);

for i:=1 to 500 do begin

 if a^[i].cex=z then begin

  k:=k+1;

  c^[k]:=a^[i];

 end; end;

  k:=10;

repeat

n1:=n2;

clrscr;

writeln ('==========================================================');

writeln ('|№ Цеха||               Фамилия||             Ср.Заработок|');

writeln ('==========================================================');

while n1<k do begin

n1:=n1+1;

 if c^[n1].cex=z then begin

   write ('|',c^[n1].cex:6,'|');

   write ('|',c^[n1].fam:22,'|');

   write ('|',c^[n1].zar:24,'|');

   writeln;

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

 end ;end;

  key:=readkey;

   case key of

     #72:

         if (poz>1) and (poz<=k) then begin

         dec(n2);

         dec(poz);

         dec(k);

         end;

     #80:

     if poz<k  then begin

     if c^[n1+1].cex=z then begin

         inc(n2);

         inc(poz);

         inc(k);

         end;end;end;

until key=#27;

 end;

if k=2 then begin

n2:=0;

 k:=0;

Writeln('Введите первую букву фамилии работника по которым будет осуществляться поиск');

 readln(y[1]);

for i:=1 to 500 do begin

 if a^[i].fam[1]=y[1] then begin

  k:=k+1;

  c^[k]:=a^[i];

 end; end;

  k:=10;

repeat

n1:=n2;

clrscr;

writeln ('==========================================================');

writeln ('|№ Цеха||               Фамилия||             Ср.Заработок|');

writeln ('==========================================================');

while n1<k do begin

n1:=n1+1;

 if c^[n1].fam[1]=y[1] then begin

   write ('|',c^[n1].cex:6,'|');

   write ('|',c^[n1].fam:22,'|');

   write ('|',c^[n1].zar:24,'|');

   writeln;

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

   end ; end;

key:=readkey;

   case key of

     #72:

         if (poz>1) and (poz<=k) then begin

         dec(n2);

         dec(poz);

         dec(k);

         end;

     #80:

     if poz<k  then begin

     if c^[n1+1].fam[1]=y then begin

         inc(n2);

         inc(poz);

         inc(k);

         end;end;end;

until key=#27;

end;

if k=3 then begin

k:=0;

 n2:=0;

Writeln('Введите среднюю заработную плату работника(ов)');

 readln(j);

for i:=1 to 500 do begin

 if a^[i].zar=j then begin

  k:=k+1;

  c^[k]:=a^[i];

 end; end;

 k:=10;

repeat

clrscr;

writeln ('==========================================================');

writeln ('|№ Цеха||               Фамилия||             Ср.Заработок|');

writeln ('==========================================================');

n1:=n2;

while n1<k do begin

n1:=n1+1;

 if c^[n1].zar=j then begin

   write ('|',c^[n1].cex:6,'|');

   write ('|',c^[n1].fam:22,'|');

   write ('|',c^[n1].zar:24,'|');

   writeln;

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

   end ;

     end;

 key:=readkey;

   case key of

     #72:

         if (poz>1) and (poz<=k) then begin

         dec(n2);

         dec(poz);

         dec(k);

         end;

     #80:

     if poz<k  then begin

     if c^[n1+1].zar=j then begin

         inc(n2);

         inc(poz);

         inc(k);

         end;end;end;

until key=#27;

end;

close(bd);

end;

procedure vivodcexa;

var numbcex:string;

a:array [1..1000] of people;

b:^array [1..1000] of people;

n,l1,l:integer;

 begin

 new(b);

 clrscr;

 writeln('Введите название файла куда хотите поместить работников по цеху');

 read(numbcex); numbcex:=numbcex+'.txt';

 assign(bd,txtfile);

 assign(bd2,numbcex);

 reset(bd);

 i:=1;

 Writeln('Введите № цеха который будет выведен на экран');

 read(n);

 Writeln('Введите зарплату рабочих от');

 read(l);

 Writeln('До');

 read(l1);

  while not eof(bd) do with buff^ do begin

  readln (bd,a[i].cex); readln(bd,a[i].fam); readln(bd,a[i].zar);

  i:=i+1;

  end;

  k:=1;

  for i:=1 to 1000 do

   if (a[i].cex=n) and (a[i].zar>=l) and (a[i].zar<=l1)  then begin

     b^[k]:=a[i];

     k:=k+1;

    end;

    sort(b^);

    close(bd);

    rewrite(bd2);

writeln ('==============================================================================');

writeln (' |№ Цеха||                            Фамилия||                  Ср.Заработок|');

writeln ('==============================================================================');

   for i:=1 to k-1 do begin //vvod v bd2 i vivod na ekran

    write(bd2,b^[i].cex:2);

    write(bd2,b^[i].fam:15);

    write(bd2,b^[i].zar:25);

    writeln(bd2);

    writeln(i,b^[i].cex:6,b^[i].fam:37,b^[i].zar:32);

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

   end;

   close(bd2);

   write('Нажмите Enter для продолжения');

   readln();

  end;

procedure sozdbd;

begin

clrscr;

writeln('Введите имя файла новой бд');

read(txtfile1);

txtfile1:=txtfile1+'.txt';

if CanCreateFile(txtfile1) = true then begin

writeln('Вы создали "БД" под именем ',txtfile1,' ');

assign(bd,txtfile1);

rewrite(bd);

close(bd);

end

else

Writeln('Такая БД уже существует на вашем компьютере');

Writeln('Для продолжения нажмите Enter');

Readln();

end;

begin

 SetWindowCaption('курсовая работа по ОАиП "БД цеха"');

 CenterWindow;

 new(n);   new(buff);   new(a); new(l); new(l1); new(x); new(b); new(massm); new(c);

poz:=1;

8:

Writeln('Если у вас есть БД для этой программый Y,если нету нажмите N');

readln(y);

if (y='y') or (Y='Y') then begin

9:

clrscr;

Writeln('Введите имя файла для работы с БД');

readln(txtfile);

txtfile:=txtfile+'.txt';

if FileExists(txtfile)=true then begin

10:

poz:=1;

menu;

clrscr;

HideCursor;

pmenu;

v:=9;

perelist(v);

case poz of

 1: sozdzap;

 2: vivod;

 3: vivodcexa;

 4: poisk;

 5: del2;

 6: sozdbd;

 7: goto 9;

 8: vivodpol;

 9: goto 22;

 end; goto 10;

end

else

writeln('Такой БД не существует');

writeln('Нажмите Enter для продолжения');

readln();

clrscr; goto 8;

end

else

sozdbd;

goto 8;

22:

dispose(n); dispose(buff); dispose(a); dispose(x); dispose(b); dispose(l);

dispose(l1); dispose(c);

CloseWindow;

end.

Приложение Б

Диск с программой.


 

А также другие работы, которые могут Вас заинтересовать

65216. Місцеве самоврядування як чинник розвитку сільських територій 173 KB
  Закріплене в Конституції України положення про визнання та підтримку державою місцевого самоврядування як права територіальної громади самостійно вирішувати питання місцевого значення створює сприятливі умови для активізації діяльності його органів щодо забезпечення розвитку сільських територій.
65217. Нерівноважна термодинаміка мартенситних перетворень в сплавах з термічно та магнітоіндукованим ефектами пам’яті форми 1.24 MB
  Окрім бездифузійності та жорстких орієнаційних співвідношень було відмічено ще низку особливостей цього типу фазових перетворень: Пертворення розповсюджується на широку область температур верхня межа якої була названа мартенситною точкою...
65218. Технологія харчового шроту з безлушпинного ядра насіння соняшнику 535.5 KB
  Сучасна технологія видобування соняшникової олії не передбачає отримання поряд з олією харчового шроту з високим вмістом білків що рівноцінні тваринним. Таким чином розробка технології комплексної переробки безлушпинного ядра насіння соняшнику з метою вилучення...
65219. Розробка основ ресурсозберігаючого процесу сумісного безфільєрного та фільєрного волочіння сталевої низьковуглецевої катанки 278.5 KB
  Основними тенденціями метизної галузі України за останні 20 років є децентралізація виробництва з розширенням асортименту сорторозмірів і перехід на механічне видалення окалини з поверхні катанки в роликових окалиноламачах.
65220. Формування продуктивності сої залежно від технологічних прийомів вирощування в умовах північної частини Степу України 228.5 KB
  Однак врожаї цієї важливої культури ще невисокі що обумовлено як правило недосконалістю елементів технології її вирощування і в першу чергу способів основного обробітку ґрунту та рівня мінерального живлення.
65221. Розроблення основ технології оксидаційного знесірчування дизельних фракцій 286.5 KB
  Єдина на сьогодні широковживана промислова технологія очищування нафтової сировини від сполук сірки гідроочищування ГО має низку недоліків головними з яких є: необхідність використання складного обладнання та дорогого чистого водню...
65222. Особливості перебігу ішемічно-реперфузійного пошкодження структур головного мозку при експериментальному цукровому діабеті в самців-щурів 276.5 KB
  Особливу увагу привертають ішемічні пошкодження головного мозку які складають більшу частку цереброваскулярної патології що зумовлює медикосоціальне значення ішемії мозку Т.Черевко 2003 підкреслює важливість глибокого знання патогенезу...
65223. ПРОЕКТУВАННЯ СУДНОВИХ КОНСТРУКЦІЙ ІЗ ВРАХУВАННЯМ КОНЦЕНТРАЦІЙ НАПРУЖЕНЬ ТА МІСЦЕВИХ ПІДКРІПЛЕНЬ 5.58 MB
  Проблема вдосконалення корпусних конструкцій багато в чому залежить від раціонального використання полегшуючих вирізів з однієї сторони й заходів щодо їхнього підкріплення з іншої.
65224. Удосконалення процесу проектування спеціального одягу для перукарів 203.5 KB
  Сьогодні вітчизняні та іноземні підприємства які займаються виготовленням спеціального одягу для працівників сфери послуг пропонують досить широкий асортимент виробів для перукарів однак ця продукція не задовольняє їх потреби через те що не повною мірою відповідає...