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.

Приложение Б

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


 

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

72365. Обладнання нафтогазової галузі і умови його експлуатації: Лабораторний практикум 5.71 MB
  Нафтогазове обладнання на даному етапі це високотехнологічні конструкції, які працюють в умовах значних і складних навантажень, що призводить до зношування окремих його деталей та інструменту. Загальне ознайомлення з вказаним обладнанням розширить знання студентів...
72366. Логика: Учебно-практическое пособие 1.08 MB
  Цель курса логики в системе образования наряду с вышеотмеченной мировоззренческой состоит в том чтобы полученные знания позволили: 1 лучше ориентироваться в функциях выполняемых различными элементами разговорного и научного языка в различных коммуникативно-познавательных ситуациях...
72367. ПРОГРАММИРОВАНИЕ НА АЛГОРИТМИЧЕСКОМ ЯЗЫКЕ БЕЙСИК С ЛАБОРАТОРНЫМ ПРАКТИКУМОМ 352 KB
  Большие и маленькие буквы в именах и операторах воспринимаются компьютером одинаково т. Операторы языка Оператор является основной единицей программы и выполняет какое-то элементарное действие. Во многих версиях Бейсика операторы в программе нумеруются.
72368. Теоретическая информатика. Архитектура ЭВМ 1.56 MB
  Настоящее время характеризуется всё возрастающим процессом информатизации общества –- созданием развитием и всеобщим применением информационных технологий –- совокупности технических средств и методов компьютерной обработки хранения передачи и использования информации.
72369. Друга іноземна (французька) мова: Методичні рекомендації 824 KB
  Мета методичних рекомендацій до самостійної та індивідуальної роботи - допомогти студентам, які почали вивчати французьку мову, раціонально розподілити програмний навчальний матеріал, правильно організувати самостійну роботу, ефективно застосовувати набуті знання й навички під час виконання індивідуальних завдань творчого характеру.
72370. Цифровая обработка сигналов: Лабораторный практикум 3.88 MB
  Информативным параметром сигнала может быть частота сигнала центральная частота и ширина полосы сигнала если сигнал широкополосный период повторения сигналов и т. Обработка зашумленного сигнала имеет целью обнаружение сигнала и определение информативных параметров.
72371. Психология и педагогика: Учебно-методический комплекс 1.24 MB
  Ознакомление с основными направлениями развития психологической и педагогической науки; овладение понятийным аппаратом, описывающим познавательную, эмоционально-волевую, мотивационную и регуляторную сферы психического, проблемы личности, мышления, общения и деятельности, образования и саморазвития...
72372. Общая социология 5.8 MB
  Наряду с хрестоматийным ставшим уже классическим материалом в учебнике представлена трактовка наиболее актуальных вопросов социологии дано их авторское видение в полемике с иными точками зрения. Однако логика структура и содержание учебника являются результатом авторского видения предмета социологии и ее специфики.
72373. Основи діловодства: Навчально-методичний посібник 512 KB
  На практичному занятті розширюються, поглиблюються й деталізуються знання, отримані студентами на лекції та в процесі самостійної роботи, і спрямовуються на підвищення рівня засвоєння навчального матеріалу, прищеплення умінь і навичок, розвиток логічного мислення та усного мовлення студентів.