Разработка информационной системы библиотеки

Переменные типа integer, real, их функции. Общее понятие о массиве, файлы для Pascal. Информационный и информанизационный набор списка. Реализация и тестирование программы. Выбор базы данных, внесение имени, меню. Блок-схема алгоритма, листинг программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 04.02.2013
Размер файла 306,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Введение

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

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

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

1. Анализ задания и постановка задачи

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

информационный набор (содержательная часть элемента списка; определяется характером информации);

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

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

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

программа pascal листинг массив

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

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

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

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

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

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

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

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

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

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

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

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

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

Рис. 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 - процедура для выбора в меню.

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

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

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

Рис. 2 - Выбор БД.

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

Рис. 3 - Внесение имени БД

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

Рис. 4 - Меню

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

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

Рис. 5 - Создание БД

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

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

Выводы

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

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

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

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

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

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

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

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

Приложение А

Блок-схема алгоритма

Приложение Б

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

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

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.

Размещено на Allbest.ru


Подобные документы

  • Разработка программы на языке Turbo Pascal, обеспечивающей работу пользователя в диалоговом режиме с возможностью выбора функций с помощью одноуровневого меню вертикального типа. Блок-схема и листинг программы, описание руководства пользователя.

    курсовая работа [1,5 M], добавлен 17.03.2014

  • Разработка программы на языке Pascal. Описание переменных. Действия, которые должна выполнить программа согласно выбранного алгоритма. Детализация графической части программы. Листинг и тестирование программы. Вывод массива данных на экран монитора.

    контрольная работа [360,4 K], добавлен 13.06.2012

  • История создания и развитие языка программирования Pascal, его версии. Особенности и порядок построения графика функции на языке Turbo Pascal с использованием декартовой системы координат. Блок схема алгоритма процедур, листинг и тестирование программы.

    курсовая работа [102,7 K], добавлен 23.12.2011

  • Запись в файл и чтение в С++. Общее понятие о структуре. Многомерные и двумерные массивы. Логика работы программы. Схема алгоритма функции Main. Определение суммарного заработка, сотрудника с наибольшей зарплатой. Создание новой базы, листинг программы.

    курсовая работа [275,7 K], добавлен 07.10.2012

  • Понятие информационной безопасности. История развития криптографии. Функции информационных моделей. Переменные, используемые при разработке прикладной программы для шифрования и дешифрования сообщений с помощью шифра Цезаря. Блок-схема общего алгоритма.

    курсовая работа [975,5 K], добавлен 11.06.2014

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

    контрольная работа [150,4 K], добавлен 03.05.2014

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

    реферат [687,5 K], добавлен 28.10.2011

  • Оптимальный алгоритм деления чисел в нормализованной форме для получения нормализованного произведения чисел с помощью TP Pascal. Работа со строковыми данными и типами Real и Integer. Описание метода решения. Блок-схема работы программы, ее листинг.

    курсовая работа [111,8 K], добавлен 28.07.2009

  • Описание алгоритма решения задачи по вычислению суммы элементов строк матрицы с использованием графического способа. Детализация укрупненной схемы алгоритма и разработка программы для решения задачи в среде Turbo Pascal. Листинг и тестирование программы.

    курсовая работа [446,0 K], добавлен 19.06.2014

  • Выбор и обоснование выбора среды разработки. Разработка алгоритма работы программы, проектирование системы меню. Общее описание программы: назначение и область применения, интерфейс, требования к аппаратным и программным ресурсам, тестирование и листинг.

    курсовая работа [543,2 K], добавлен 20.05.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.