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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    190,6 Кб
  • Опубликовано:
    2013-02-04
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

Введение

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

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

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

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

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

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

) номер цеха.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рис. 1

sort - процедура сортировки фамилий простыми вставками.sortcex - процедура сортировки цехов простыми вставками.sortzar - процедура сортировки среднемесячной зарплаты простыми вставками.perelist - процедура перелистывания.perelistpoiska - процедура перелистывания поиска.ppois - процедура вывода на экран меню поиска.vivod - процедуа вывод БД на экран.vivodpol - процедура вывод отсортированных полей БД на экран.del2 - процедура вывода на экран БД и удаление с неё.poisk - процедура поиска по полям БД.vivodcexa - процедура вывода цеха задаваемого пользователем и создавания нового файла возле исходной программы. sozdbd - создание текстового файла (базы данных) в котором находиться весь заполненный список.menu - процедура для вывода на экран главного меню.Pmenu - процедура для выбора в меню.

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

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

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

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

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

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

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

Рис. 4 - Меню

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

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

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

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

Выводы

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

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

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

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

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

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

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

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

Приложение А

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























Приложение Б

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

bdcex;

Uses Crt,GraphABC;8,9,10,22;people = record:integer; //№ цеха:string[40]; //фамилии:integer; //ср заработок;= array [1..1000] of people;:^people;,l1,n,x:^integer;,j,k,n1,iskip:integer;:^bdArray;:^bdArray;:^bdArray;,bd2:text;:string;:byte;,txtfile1:string;,poz:integer;:^array [1..9] of string;:char;menu;^[1]:='1: создание записей ';

massm^[2]:='2: вывод на экран бд ';^[3]:='3: Вывод нужного цеха работников ';^[4]:='4: Поиск по полям бд ';^[5]:='5: Удаление записей из бд ';^[6]:='6: Создание новой БД ';^[7]:='7: Работа с другой Бд ';^[8]:='8: Вывод и сортировка по полям ';

massm^[9]:='9: выход ';;ppoisk(var elem:integer; var kol:integer);:=readkey;key of

#72:(poz>1) and (poz<=kol) then begin(poz);(elem);;

#80:if poz<=kol-1 then begin(poz);(elem);;end;key=#27;;pmenu;;i:=1 to 9 do beginpoz=i then begin

textbackground(3);(massm^[i]);(15);(massm^[i]);;i:=1 to 14 do;(4);('Для выбора в меню нажмите правую стрелку ->');

textcolor(0);;ppois;;

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

for i:=1 to 3 do beginpoz=i then begin(3);(massm^[i]);(15);(massm^[i]);;i:=1 to 18 do;(4);

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

textcolor(0);;perelistpoiska(var kol:integer);key:char;:=readkey;key of

#72:(poz>1) and (poz<=kol) then begin(poz);;;

#80:if poz<=kol-1 then begin:=poz+1;;;end;key=#75;;perelist(var kol:integer);key:char;:=readkey;key of

#72:(poz>1) and (poz<=kol) then begin(poz);;

end;

#80:if poz<=kol-1 then begin:=poz+1;;;end;key=#75;;sort(var mass:bdArray);x:people;i:=2 to k-1 domass[i-1].fam>mass[i].fam then:=mass[i];:=i-1;(j>0) and (mass[j].fam>x.fam) do[j+1]:=mass[j];:=j-1;;[j+1]:=x;;end;sortcex(var mass:bdArray);x:people;i:=2 to k-1 domass[i-1].cex>mass[i].cex then:=mass[i];:=i-1;

while (j>0) and (mass[j].cex>x.cex) do[j+1]:=mass[j];:=j-1;;[j+1]:=x;;end;sortzar(var mass:bdArray);x:people;i:=2 to k-1 domass[i-1].zar>mass[i].zar then:=mass[i];:=i-1;(j>0) and (mass[j].zar>x.zar) do[j+1]:=mass[j];:=j-1;;[j+1]:=x;;end;sozdzap;(bd,txtfile);

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

read(n^);i:=n^ downto 1 do begin

with buff^ do begin(bd);

clrscr;('Введите № цеха данного человека ');(cex);('Введите фамилию работника ');(fam);('Введите средный заработок данного человека');

read(zar);^[i].cex:=cex;^[i].fam:=fam;^[i].zar:=zar;;end;i:=1 to n^ do begin(bd,a^[i].cex); writeln(bd,a^[i].fam);writeln(bd,a^[i].zar);;(bd);;vivod;key:char; k1:integer;(bd,txtfile);(bd);:=1;:=1;:=1;:=0;:=10;:=0;not eof(bd) do with buff^ do begin

readln (bd,a^[k].cex); readln(bd,a^[k].fam); readln(bd,a^[k].zar);:=k+1;:=v+1;;;;('==============================================================================');(' |№ Цеха|| Фамилия|| Ср.Заработок|');('==============================================================================');:=k1;k<n1 dobuff^ do begin:=k+1;poz=k then begina^[k].cex<>0 then begin('------------------------------------------------------------------------------');('',k,'');('|',a^[k].cex:6,'|');('|',a^[k].fam:35,'|');('|',a^[k].zar:30,'|');;; enda^[k].cex<>0 then begin('------------------------------------------------------------------------------');

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

#72:(poz>1) and (poz<=n1) then begin(poz);(k1);(n1);;

#80:if poz<=n1-1 then begina^[k+1].cex<>0 then begin(k1);(poz);(n1);; end; end;key=#27;(bd);('------------------------------------------------------------------------------');;vivodpol;n2:integer;(bd,txtfile);(bd);

massm^[1]:='1:№ цеха ';^[2]:='2:Фамилии работников ';^[3]:='3:среднюю заработную плану работников';

k:=1;

v:=1;not eof(bd) do with buff^ do begin(bd,a^[v].cex); readln(bd,a^[v].fam); readln(bd,a^[v].zar);:=k+1;:=v+1;;:=1;:=3;;(v);;:=poz;v=1 then begin(a^);:=10;:=0;:=0;:=n2;;('========================================================');('|№ Цеха|| Фамилия|| Ср.Заработок|');('========================================================');n1<k do begin:=n1+1;a^[n1].cex <> 0 then begin('|',a^[n1].cex:6,'|');('|',a^[n1].fam:22,'|');

write ('|',a^[n1].zar:24,'|');;('----------------------------------------------------------');;end;:=readkey;key of

#72:(poz>1) and (poz<=k) then begin(n2);(poz);(k);;

#80:poz<k then begina^[n1+1].cex<>0 then begin(n2);(poz);(k);;end;end;key=#27;;v=2 then begin(a^);:=1;:=10;:=0;:=0;:=n2;;

writeln ('========================================================');('|№ Цеха|| Фамилия|| Ср.Заработок|');('========================================================');n1<k do begin:=n1+1;a^[n1].cex <> 0 then begin('|',a^[n1].cex:6,'|');('|',a^[n1].fam:22,'|');('|',a^[n1].zar:24,'|');;('----------------------------------------------------------');;end;:=readkey;key of

#72:(poz>1) and (poz<k) then begin(n2);(poz);(k);;

#80:poz<k then begina^[n1+1].cex<>0 then begin(n2);(poz);(k);;end;end;key=#27;

end;v=3 then begin(a^);:=1;:=10;:=0;:=0;:=n2;;('========================================================');('|№ Цеха|| Фамилия|| Ср.Заработок|');('========================================================');n1<k do begin:=n1+1;a^[n1].cex <> 0 then begin('|',a^[n1].cex:6,'|');('|',a^[n1].fam:22,'|');('|',a^[n1].zar:24,'|');;('----------------------------------------------------------');;end;:=readkey;key of

#72:(poz>1) and (poz<k) then begin(n2);(poz);

dec(k);;

#80:poz<k then begina^[n1+1].cex<>0 then begin(n2);(poz);(k);;end;end;key=#27;;(bd);;del2;k1:integer;11;;(bd,txtfile);

:(bd);:=1;:=1;:=1;:=0;:=10;:=0;not eof(bd) do with buff^ do begin(bd,a^[k].cex); readln(bd,a^[k].fam); readln(bd,a^[k].zar);:=k+1;

v:=v+1;;;;('=============================================================================');(' |№ Цеха|| Фамилия|| Ср.Заработок|');('==============================================================================');:=k1;k<n1 dobuff^ do begin:=k+1;poz=k then begina^[k].cex<>0 then begin('------------------------------------------------------------------------------');(3);('',k,'');('|',a^[k].cex:6,'|');('|',a^[k].fam:35,'|');('|',a^[k].zar:30,'|');;(15);; enda^[k].cex<>0 then begin('------------------------------------------------------------------------------');

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

#72:(poz>1) and (poz<=n1) and (poz>k1+1) then begin(poz);poz>1 then begin(poz);(k1);(n1);;

#80:if poz<=n1-1 then(poz)a^[k+1].cex<>0 then begin(k1);(poz);(n1);;

#83:Begin

x^:=0;

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

Textcolor(0);(y);(y='y') or (Y='Y') then begin

a^[poz].cex:=x^;^[poz].fam:='';^[poz].zar:=0;:=0;(bd);i:=1 to 20 doa^[i].cex<>0 then begin:=k+1;^[k]:=a^[i];(bd,b^[k].cex);(bd,b^[k].fam);(bd,b^[k].zar);;^[k+1].cex:=x^;^[k+1].fam:='';^[k+1].zar:=0;11;;end;end;key=#27;(bd);('------------------------------------------------------------------------------');;poisk;n2:integer;;(bd,txtfile);(bd);^[1]:='1:№ цеха ';

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

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

k:=1;:=1;not eof(bd) do with buff^ do begin(bd,a^[v].cex); readln(bd,a^[v].fam); readln(bd,a^[v].zar);:=k+1;:=v+1;;(a^);:=0;:=1;:=3;;(k);;:=poz;:=1;k=1 then begin:=0;:=0;

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

readln(z);i:=1 to 500 do begina^[i].cex=z then begin:=k+1;^[k]:=a^[i];; end;:=10;

n1:=n2;;('========================================================');('|№ Цеха|| Фамилия|| Ср.Заработок|');('========================================================');n1<k do begin:=n1+1;c^[n1].cex=z then begin('|',c^[n1].cex:6,'|');('|',c^[n1].fam:22,'|');('|',c^[n1].zar:24,'|');;('----------------------------------------------------------');;end;:=readkey;key of

#72:(poz>1) and (poz<=k) then begin(n2);(poz);(k);;

end;end;end;key=#27;;k=2 then begin:=0;

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

readln(y[1]);i:=1 to 500 do begina^[i].fam[1]=y[1] then begin:=k+1;^[k]:=a^[i];; end;:=10;:=n2;;('========================================================');('|№ Цеха|| Фамилия|| Ср.Заработок|');('========================================================');n1<k do begin:=n1+1;c^[n1].fam[1]=y[1] then begin('|',c^[n1].cex:6,'|');('|',c^[n1].fam:22,'|');('|',c^[n1].zar:24,'|');;

writeln ('----------------------------------------------------------');; end;:=readkey;key of

#72:(poz>1) and (poz<=k) then begin(n2);(poz);(k);;

#80:poz<k then beginc^[n1+1].fam[1]=y then begin(n2);(poz);(k);;end;end;key=#27;;k=3 then begin:=0;

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

readln(j);i:=1 to 500 do begina^[i].zar=j then begin:=k+1;^[k]:=a^[i];; end;:=10;

repeat;('========================================================');('|№ Цеха|| Фамилия|| Ср.Заработок|');('========================================================');:=n2;n1<k do begin:=n1+1;c^[n1].zar=j then begin('|',c^[n1].cex:6,'|');('|',c^[n1].fam:22,'|');('|',c^[n1].zar:24,'|');;('----------------------------------------------------------');;;:=readkey;key of

#72:(poz>1) and (poz<=k) then begin(n2);(poz);(k);;

#80:poz<k then beginc^[n1+1].zar=j then begin(n2);

inc(poz);(k);;end;end;key=#27;;(bd);;vivodcexa;numbcex:string;:array [1..1000] of people;:^array [1..1000] of people;,l1,l:integer;(b);

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

read(numbcex); numbcex:=numbcex+'.txt';(bd,txtfile);(bd2,numbcex);

reset(bd);:=1;('Введите № цеха который будет выведен на экран');(n);('Введите зарплату рабочих от');

read(l);('До');(l1);not eof(bd) do with buff^ do begin(bd,a[i].cex); readln(bd,a[i].fam); readln(bd,a[i].zar);

i:=i+1;;:=1;i:=1 to 1000 do(a[i].cex=n) and (a[i].zar>=l) and (a[i].zar<=l1) then begin^[k]:=a[i];:=k+1;;(b^);(bd);(bd2);('==============================================================================');(' |№ Цеха|| Фамилия|| Ср.Заработок|');('==============================================================================');i:=1 to k-1 do begin //vvod v bd2 i vivod na ekran(bd2,b^[i].cex:2);(bd2,b^[i].fam:15);(bd2,b^[i].zar:25);(bd2);(i,b^[i].cex:6,b^[i].fam:37,b^[i].zar:32);('------------------------------------------------------------------------------');;(bd2);

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

readln();;

procedure sozdbd;;

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

read(txtfile1);:=txtfile1+'.txt';CanCreateFile(txtfile1) = true then begin

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

assign(bd,txtfile1);(bd);

close(bd);('Такая БД уже существует на вашем компьютере');('Для продолжения нажмите Enter');();;('курсовая работа по ОАиП "БД цеха"');

CenterWindow;

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

poz:=1;

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

readln(y);(y='y') or (Y='Y') then begin

9:;

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

readln(txtfile);:=txtfile+'.txt';FileExists(txtfile)=true then begin

::=1;;;;;:=9;(v);poz of

: sozdzap;

: vivod;

: vivodcexa;

: poisk;

: del2;

: sozdbd;

: goto 9;

: vivodpol;

: goto 22;; goto 10;

end('Такой БД не существует');('Нажмите Enter для продолжения');

readln();; goto 8;

else;8;

:(n); dispose(buff); dispose(a); dispose(x); dispose(b); dispose(l);(l1); dispose(c);

CloseWindow;

end.

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!