Разработка информационной системы библиотеки
Переменные типа 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