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

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

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

Содержание

Введение

1. Постановка задачи

2. Анализ современных систем программирования

3. Требование к техническим средствам

4. Анализ входных и выходных данных

5. Модель задачи        

6. Алгоритм решения

6.1 Обобщенный алгоритм основной программы

6.2 Алгоритм процедуры newkniga

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

8. Описание работы программы

Заключение

Введение

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

Использование различных программных средств повсеместно, говорит об удобстве и простоте работы с ними. Для создания подобных программ используются современные языки программирования высокого уровня. Примером таких языков являются Delphi, Pascal, C, C++ и многие другие.

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


1. Постановка задачи

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

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

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

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

Каждая книга характеризуется параметрами:

Уникальный номер (Шифр)

Название

Автор

Издательство

Год издания

Жанр

Количество страниц

Есть в наличии (Два варианта: Да, Нет)

Если книг в наличии нет появляются два новых поля

Уникальный номер читателя

Срок сдачи

Читатели характеризуется:

Уникальный номер читателя

ФИО

Домашний телефон

Домашний адрес

Возраст

Библиотекари характеризуется:

ФИО

Должность


2. Анализ современных систем программирования

Существует множество инструментов для создания программ, в частности баз данных. Это и Pascal, C++, Java и многие другие. Это языки высокого уровня, для написания программы используются алгоритмические конструкции, которые описываются не машинными командами, а языком максимально приближенном к человеческому пониманию. Все они позволяют работать как с графикой, так и с мощным математическим аппаратом.

Ниже я рассмотрел краткие характеристики основных языков программирования:

Си

Главный инструмент системного программиста на сегодняшний день. Си имеет очень приятный набор операторов и неудачный конструктор типов. Серьезный недостаток (для языка системного программирования) - почти полное отсутствие механизмов раздельной компиляции. Поскольку Си доминирует на американском рынке средств разработки ПО, ему гарантирована долгая жизнь, несмотря на многочисленные попытки модернизировать его (например, такие, как С++ или Java).

С++

Наиболее популярный клон С, в котором реализован наиболее полный механизм объектно-ориентированного программирования. При создании языка делались так же попытки модернизировать С, введя в его состав такие современные конструкции, как скалярный тип (enum), передача параметра по ссылке (&) или логический тип (bool). К сожалению, последовательными эти попытки назвать нельзя. Получился очень объемный и очень несистемный язык программирования, где наряду с суперсовременными понятиями класса соседствует адресная арифметика, доставшаяся в наследство от С.

Самый “молодой” из включенных в анализ языков программирования и основной инструмент программирования для Internet. Создатели Java безжалостно удалили из С все несовременные конструкции, и в то же время сумели удержаться от излишнего “раздувания” языка включением в него новых теоретических разработок. В результате получился не очень объемный, но стройный, “крепко сбитый” язык программирования с ярко выраженной идеологией. К сожалению, ориентация на Internet не дает возможности использовать Java как язык системного программирования, однако это хороший пример реформы С. Клоном С он является только внешне. Идеологически это хороший пример европейской языковой школы (к которой можно отнести клоны Pascal). .

В языке реализован классический набор операторов и идеальный конструктор типов. Языку очень вредит отсутствие стандартных механизмов раздельной компиляции. В отличие от своего сверстника и конкурента С, PASCAL создавался одномоментно, что и предопределило его малые размеры и идеологическую стройность. С появлением различных модификаций, созданных на его основе, Pascal можно считать устаревшим языком, однако консервативность программного обеспечения, а также простота его освоения не позволяет считать такой вывод окончательным.

ВЫВОД.

Главный вывод, который можно сделать на основе изложенного материала - несомненное сходство языков программирования в основных компонентах, таких, как набор операторов, конструктор типов, механизм процедур и Объектно-Ориентированного Программирования. Различия проявляются только в деталях, семантически современные языки программирования практически идентичны.

Свой выбор языка программирования я объясняю некоторыми знаниями этого языка и его относительную простоту.

3. Требование к техническим средствам

Минимальные:

Intel 2x86 процессор

1 mb ОЗУ

Операционная система Dos

Рекомендуемые:

Celeron 400 Mhz и выше

8 mb ОЗУ и выше

Операционная системы поколения Windows любой версии

4. Анализ входных и выходных данных

Входные данные: Для решения задачи необходимо создать 4 файла: файл содержащий данные по всем книгам, файл с данными выдаче книг, файл с данными о библиотекарях и файл с данными о читателях. Файлы организуются как файлы с записями.

Файл “данные по книгам” имеет следующие поля:

Уникальный номер

Название

Автор

Год издания

Жанр

Есть в наличии

Если нет ->

Срок возврата (день, месяц, год)

Уникальный номер читателя взявшего книгу

Файл “Читатели” имеет следующие поля:

Уникальный номер читателя

Имя

Фамилия

Отчество

Место жительства

Домашний телефон

Возраст

Файл “библиотекари ” имеет следующие поля:

Имя

Фамилия

Отчество

Должность

Кроме исходных файлов используется переменная ch типа char для считывания с клавиатуры данных, введённых пользователем для выполнения запросов.

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

Промежуточные данные: В ходе решения задачи использовались целочисленные переменные i,j,k,l,m,n и другие в качестве счётчиков для определения длины циклов, для операций выбора и других операций.


5. Модель задачи

Математическое описание: Математические функции используются только для вычисления суммы и счетчиков операций в запросах.

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

6. Алгоритм решения

6.1 Обобщенный алгоритм основной программы


6.2 Алгоритм процедуры newkniga


 


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

biblioqw; {Курсовая работа: «Библиотека: Книги, Читатели, Библиотекари}

{Автор: Зыков Николай }crt;=$7; {Цвет невыделенного пункта}=$2; {Цвет выделенного пункта }=20; {Количество команд меню}knigi=record {Запись с данными о книгах}

nomk,god,kol,nomch,godsv: integer;,auth,izd,zhanr,nal: string;

densv:1..31;:1..12;;reader=record {Запись с данными о читателях}

name,lname,fname,tel,adress,naruk:string;,nomk,voz,godsv:integer;:1..31;:1..12;;biblio=record {Запись с данными о библиотекарях},lname,fname,dolzh:string;;spknig: file of knigi;: file of reader;: file of biblio;:integer;: array [1..k] of string[35]; {Массив с перечнем команд меню}

punkt:integer; {Переменные для управления меню }

ch:char;,y:integer;

{------------------------Рисование линии------------------------------}ris(a:integer);i:integer;i:=1 to a do Write('-');;

{------------------------Добавление книги -----------------------------}newkniga;st:knigi;:char;(spknig,'knigi.txt');(spknig);(spknig,filesize(spknig)); {Переходим в конец файла для добавления записи };(35);write('Новая книга');ris(34);

writeln(' Заполните данные о новой книге ');('Уникальный номер: '); readln(st.nomk);

write('Название: '); readln(st.naz);('Автор: ' ); readln(st.auth);

write('Издательство: '); readln(st.izd);('Год издания: '); readln(st.god);('Жанр: '); readln(st.zhanr);('Количество страниц: '); readln(st.kol);

st.nal:='Да';(spknig,st);

ris(80);writeln('');('Хотите добавить ещё одну книгу? (Д\Н)');readln(k);;(k='н') or (k='Н');(spknig);;

{--------------------------------Удаление книги --------------------------}Clearkn;st:knigi;: integer;: file of knigi;:char;: integer;(spknig,'knigi.txt');(spknig);(fo,'newfile.txt');(fo);;:='g';(33);write('Удаление книги');ris(32);writeln('');

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

readln(udal);:=0;not EoF(spknig) do(spknig,st);st.nomk=udal then tt:=1;;tt<>1 then begin writeln(‘Книги с таким номером нет!’);readln;end else(spknig);reset(spknig);

Writeln('Вы точно хотите удалить книгу с номером ',udal,' (Д\Н)');

readln(otv);(otv='д')or(otv='Д') thennot eof(spknig) do(spknig,st);st.nomk<>udal then write(fo,st);;(spknig);(fo);(spknig);(fo,'knigi.txt');;;;

{---------------------------------Просмотр списка книг---------------------}seekknigi;st:knigi;:char;(spknig,'knigi.txt');(spknig);(spknig,st);;(34);write('Просмотр списка книг');ris(26); writeln('');

writeln(' Уникальный номер: ',st.nomk);(' Название: ',st.naz);

writeln(' Автор: ',st.auth);

writeln(' Издательство: ',st.izd);(' Год издания: ',st.god);

writeln(' Жанр: ',st.zhanr);

writeln(' Количество страниц: ',st.kol);(' Есть в наличии: ',st.nal);

If (st.nal='Нет') then

writeln(' Уникальный номер читателя взявшего книгу: ',st.nomch);(' Срок возврата: ',st.densv,' ',st.messv,' ',st.godsv);;(80);(' Введите "Esc" для окончания ');

otv:=readkey;(EoF(spknig)) or (otv=#27);(spknig);;

{---------------------------------Взятие возврат книг---------------------}vvkniga;:knigi;:integer;,god2,kol2,nomch2,godsv2: integer;,auth2,izd2,zhanr2,nal2: string;,lname2,fname2,tel2,adress2,naruk2:string;:integer;:1..31;:1..12;:reader;,nomchh,x,n:integer;:string;:char;(spknig,'knigi.txt');(spknig);;:=0;:=0;(30);write('Взятие, возврат книг'); ris(30);writeln('');st do

begin write('Введите уникальный номер книги, данные о которой вы хотели бы изменить: ');readln(str);

while not eof(spknig) do(spknig,st);str=st.nomk then x:=1;;x=0 then begin writeln('Книги с таким номером нет!'); readln; end

else('Фамилия читателя берущего\возвращающего книгу: '); readln(famchh);

assign(spreader,'read.txt');(spreader);:=0;not eof(spreader) do(spreader,sk);famchh=sk.lname then x:=x+1;;x=0 then begin writeln('Читателя с такой фамилией нет!'); readln; end(spreader);reset(spreader);(spknig);reset(spknig);:=0;:='q';(x<>200) do(spreader,sk);famchh=sk.lname thenx=1 then begin nomchh:=sk.nomch; x:=200;end else('Имя: ',sk.name);('Фамилия: ',sk.lname);('Отчество: ',sk.fname);

Writeln('Это данный читатель?(Д\Н)?');

readln(qwe);;; (qwe='Д')or(qwe='д') then begin nomchh:=sk.nomch; x:=200;end;;(spreader);reset(spreader);not eof(spknig) do(spknig,st);st.nomk=str then

begin('Введите 1, если хотите выдать книгу, или 2, если читатель вернул книгу: ');readln(qw);

If (qw<>1) and (qw<>2)

Until (qw=1) or (qw=2);qw=1 then st.nal:='Нет' else st.nal:='Да';(st.nal='Нет').nomch:=nomchh;('‘Срок возврата (Пример: 01 04 2008): '); readln(st.densv,st.messv,st.godsv);st do:=0;not eof(spreader) do(spreader,sk);sk.nomch=st.nomch then.naruk:='Да';.densv:=st.densv;.messv:=st.messv;.godsv:=st.godsv;.nomk:=st.nomk;:=sk.name;:=sk.lname;:=sk.fname;:=sk.tel;:=sk.adress;(spreader,filepos(spreader)-1);(spreader,sk);;;(spreader,'read.txt');(spreader);st donot eof(spreader) do(spreader,sk);sk.nomch=st.nomch then.naruk:='Нет';:=sk.name;:=sk.lname;:=sk.fname;:=sk.tel;:=sk.adress;(spreader,filepos(spreader)-1);(spreader,sk);;;(spreader);;;:=nomk; god2:=god; kol2:=kol; nomch2:=nomch;:=godsv; naz2:=naz; auth2:=auth; izd2:=izd;:=zhanr; nal2:=nal; densv2:=densv; messv2:=messv;(spknig,filepos(spknig)-1);(spknig,st); x:=1;; end; end; end;(spknig);

end;

{------------------------------Поиск книги по жанру -------------------------}

procedure poiskknigizh;st:knigi;:string;:char;:integer;(spknig,'knigi.txt');(spknig);;(30);write('Поиск книги по жанру'); ris(30);writeln('');

Write('Введите критерий поиска : ');

readln(pp);:=0;:='0';(spknig,st);st.zhanr=pp then;:=1;(33);write('Поиск по жанру'); ris(33);writeln('');

writeln('Уникальный номер: ',st.nomk);('Название: ',st.naz);

writeln('Автор: ',st.auth);

writeln('Издательство: ',st.izd);('Год издания: ',st.god);

writeln('Жанр: ',st.zhanr);

writeln('Количество страниц: ',st.kol);('Есть в наличии: ',st.nal);

If (st.nal='Нет')

writeln('Уникальный номер читателя: ',st.nomch);('Срок возврата: ',st.densv,' ',st.messv,' ',st.godsv);;(80);(' Введите "Esc" для окончания ');

k:=readkey;;(EoF(spknig)) or (k=#27);r=0 then begin writeln('Книги такого жанра нет в библиотеке');readln;end;

close(spknig);;

{------------------------------Поиск книги по автору-------------------------}

procedure poiskknigiau;st:knigi;:string;:char;:integer;(spknig,'knigi.txt');(spknig);;(30);write('Поиск книги по автору');ris(30);writeln('');

Write('Введите критерий поиска : ');

readln(pp);:=0;(spknig,st);st.auth=pp then;:=1;(33);write('Поиск по автору'); ris(33);writeln('');

writeln('Уникальный номер: ',st.nomk);('Название: ',st.naz);

writeln('Автор: ',st.auth);

writeln('Издательство: ',st.izd);('Год издания: ',st.god);

writeln('Жанр: ',st.zhanr);

writeln('Количество страниц: ',st.kol);('Есть в наличии: ',st.nal);

If (st.nal='Нет')

writeln('Уникальный номер читателя: ',st.nomch);('Срок возврата: ',st.densv,' ',st.messv,' ',st.godsv);;(80);(' Введите "Esc" для окончания ');

k:=readkey;;(EoF(spknig)) or (k=#27);r=0 then begin writeln('Книги такого автора нет в библиотеке');readln;end;

close(spknig);;

{------------------------------Поиск книги по названию---------------------}

procedure poiskkniginaz;st:knigi;:string;:char;:integer;(spknig,'knigi.txt');(spknig);;(29); write('Поиск книги по названию'); ris(29);writeln('');

Write('Введите критерий поиска : ');

readln(pp);:=0;(spknig,st);st.naz=pp then;:=1;(33);write('Поиск по названию'); ris(33);writeln('');

writeln('Уникальный номер: ',st.nomk);('Название: ',st.naz);

writeln('Автор: ',st.auth);

writeln('Издательство: ',st.izd);('Год издания: ',st.god);

writeln('Жанр: ',st.zhanr);

writeln('Количество страниц: ',st.kol);('Есть в наличии: ',st.nal);

If (st.nal='Нет')

writeln('Уникальный номер читателя: ',st.nomch);('Срок возврата: ',st.densv,' ',st.messv,' ',st.godsv);;(80);(' Введите "Esc" для окончания ');

k:=readkey;;(EoF(spknig)) or (k=#27);

If r=0 then begin writeln('Книги с таким названием нет в библиотеке');readln;end;(spknig);;

{--------------------Поиск книги по году издания--------------------------}

procedure novknigi;st:knigi;:char;:integer;:integer;(spknig,'knigi.txt');(spknig);;(27);write('Вывод списка книг за год'); ris(29);Writeln('');

Write('Введите год издания: ');Readln(pp);

r:=0;(spknig,st);st.god=pp;:=1;(33);write('Вывод списка книг за’,k,' год'); ris(33);writeln('');

writeln('Уникальный номер: ',st.nomk);('Название: ',st.naz);

writeln('Автор: ',st.auth);

writeln('Издательство: ',st.izd);('Год издания: ',st.god);

writeln('Жанр: ',st.zhanr);

writeln('Количество страниц: ',st.kol);('Есть в наличии: ',st.nal);

If (st.nal='Нет')

writeln('Уникальный номер читателя: ',st.nomch);('Срок возврата: ',st.densv,' ',st.messv,' ',st.godsv);;(80);(' Введите "Esc" для окончания ');

k:=readkey;;(EoF(spknig)) or (k=#27);

If r=0 then begin writeln('В библиотеке нет книг с данным годом издания');readln;end;(spknig);;

{--------------------Вывод читателей задерживающих книгу--------------------}

procedure zadreader;sk:reader;:1..31;:1..12;:integer;:char;(spreader,'read.txt');(spreader);;(19);write('Вывод списка читателей задерживающих книгу');ris(19);writeln('');;

Write('Введите сегодняшнюю дату (Пример: 01 01 2008): ');

readln(datas,mess,gods);;not eof(spreader) do(spreader,sk);(sk.naruk='Да') or (sk.naruk='дА') or (sk.naruk='ДА') or (sk.naruk='да')(gods<sk.godsv) then

{этот день ещё не прошёл}

elsegods=sk.godsv thenmess<sk.messv then

{этот день ещё не прошёл}

elsemess=sk.messv thendatas<sk.densv then

{этот день ещё не прошёл}

elsedatas=sk.densv then

{этот день сегодня}

{Этот день прошёл, год, месяц одинаковые, но день больше};(26);write('Вывод читателей задерживающих книгу');ris(26);writeln('');('Уникальный номер: ',sk.nomch);

writeln(‘Имя: ',sk.name);('Фамилия: ',sk.lname);('Отчество: ',sk.fname);

writeln('Домашний телефон: ',sk.tel);('Домашний адрес: ',sk.adress);('Возраст: ',sk.voz);('Уникальный номер книги на руках: ',sk.nomk);('Когда должен был вернуть книгу: ',sk.densv,' ',sk.messv,' ',sk.godsv);('Для продолжения нажмите <Enter>');;;

{этот день прошёл, текущий год равен, но месяц больше};(26);write('Вывод читателей задерживающих книгу');ris(26);writeln('');('Уникальный номер: ',sk.nomch);

writeln(‘Имя: ',sk.name);('Фамилия: ',sk.lname);('Отчество: ',sk.fname);

{Этот день прошёл, текущий год больше};(26);write('Вывод читателей задерживающих книгу');ris(26);writeln('');('Уникальный номер: ',sk.nomch);

writeln(‘Имя: ',sk.name);('Фамилия: ',sk.lname);('Отчество: ',sk.fname);

writeln('Домашний телефон: ',sk.tel);('Домашний адрес: ',sk.adress);('Возраст: ',sk.voz);('Уникальный номер книги на руках: ',sk.nomk);('Когда должен был вернуть книгу: ',sk.densv,' ',sk.messv,' ',sk.godsv);('Для продолжения нажмите <Enter>');

readln;;;;(spreader);

end;

{---------------------------------Добавить нового читателя-----------------}newreader;

var sk:reader;:char;(spreader,'read.txt');(spreader);(spreader,filesize(spreader));;(31);write('Добавление читателя'); ris(30);writeln('');

writeln('Заполните данные о новом читателе: ');('Уникальный номер: '); readln(sk.nomch);

write('Имя: '); readln(sk.name);('Фамилия: '); readln(sk.lname);('Отчество: '); readln(sk.fname);

write('Домашний телефон: '); readln(sk.tel);('Домашний адрес: '); readln(sk.adress);('Возраст: '); readln(sk.voz);

sk.naruk:='Нет';(spreader,sk);

write('Хотите добавить ещё одного читателя? (Д\Н)');readln(k);;(k='н') or(k='Н');(spreader);;

{--------------------------------Удаление читателя-------------------------}Clearreader;sk:reader;: string;: file of reader;,n,nomchh:integer;:char;:char;(spreader,'read.txt');(spreader);(fo,'newfile.txt');(fo);;(31);write('Удаление читателя'); ris(31);writeln('');

writeln('Введите фамилию читателя, которого вы хотите удалить из базы:');

readln(udal);:=0;not eof(spreader) do(spreader,sk);udal=sk.lname then x:=1;;x=0 then begin writeln('Читателя с такой фамилией нет!'); readln; end(spreader);reset(spreader);:=0;:='q';(x<>2) do(spreader,sk);udal=sk.lname then('Имя: ',sk.name);('Фамилия: ',sk.lname);('Отчество: ',sk.fname);

Writeln('Это данный читатель (Д\Н)?');

readln(qwe);;(qwe='д')or(qwe='Д') then begin nomchh:=sk.nomch; x:=2;end;;(spreader);reset(spreader);

x:=0;:='q';('Вы точно хотите удалить читателя с фамилией ',udal,' (Д\Н)');

readln(otv);(otv='Д') or (otv='д') thennot eof(spreader) do(spreader,sk);sk.nomch<>nomchh then write(fo,sk);;(spreader);(fo);(spreader);(fo,'read.txt');

end;end;;

{---------------------------------Просмотр списка читателей----------------}

procedure seekreader;sk:reader;:char;(spreader,'read.txt');(spreader);(spreader,sk);;(28);write(Просмотр списка читателей''); ris(27);writeln('');

writeln('Уникальный номер читателя: ',sk.nomch);

writeln('Имя: ',sk.name);('Фамилия: ',sk.lname);('Отчество: ',sk.fname);

writeln('Домашний телефон: ',sk.tel);('Домашний адрес: ',sk.adress);('Возраст: ',sk.voz);

If (sk.naruk='Да') or (sk.naruk='ДА') or (sk.naruk='дА') or (sk.naruk='да')

then('Уникальный номер книги на руках ',sk.nomk);('‘Срок возврата: ',sk.densv,' ',sk.messv,' ',sk.godsv);;(80);(' Нажмите "Esc" для окончания ');:=readkey;

Until (EoF(spreader)) or (k=#27);

close(spreader);;

{--------------------------Редактирование данных о читателе----------------}

procedure redreader;:reader;:integer;,lname2,fname2,tel2,adress2,naruk2:string;,nomk2,voz2,godsv2:integer;:1..31;:1..12;:integer;:string;:char;:integer;(spreader,'read.txt');(spreader);;(24);write('Редактирование данных о читателе');ris(24);writeln('');

with sk do('Введите фамилию читателя данные о котором вы хотите изменить:');

readln(famchh);:=0;not eof(spreader) do(spreader,sk);famchh=sk.lname then x:=1;;x=0 then begin writeln('Читателя с такой фамилией нет!'); readln; end(spreader);reset(spreader);:=0;:='q';(x<>2) do(spreader,sk);famchh=sk.lname then('Имя: ',sk.name);('Фамилия: ',sk.lname);('Отчество: ',sk.fname);

Writeln('Это данный читатель (Д\Н)?');

readln(qwe);;(qwe='д')or(qwe='Д') then begin nomchh:=sk.nomch; x:=2;end;;(spreader);reset(spreader);not eof(spreader) do(spreader,sk);sk.nomch=nomchh then

begin('Заполните данные для изменения: ');

write('Имя: '); readln(sk.name);('Фамилия: '); readln(sk.lname);('Отчество: '); readln(sk.fname);

write('Домашний телефон: '); readln(sk.tel);

write('Домашний адрес: '); readln(sk.adress);('Возраст: '); readln(sk.voz);

name2:=name;:=lname;:=fname;:=tel;:=adress;:=naruk;:=nomch;:=nomk;:=voz;:=godsv;:=densv;:=messv;(spreader,filepos(spreader)-1);(spreader,sk);; end; end;(spreader);

end;;

{---------------------------------Добавление нового библиотекаря-----------------}

procedure newbibl;sb:biblio;:char;(spbiblio,'bibl.txt');(spbiblio);(spbiblio,filesize(spbiblio));;(24);write('Добавление нового библиотекаря');ris(24);writeln('');

writeln('Заполните данные о новом библиотекаре: ');

write('Имя: '); readln(sb.name);('Фамилия: '); readln(sb.lname);('Отчество: '); readln(sb.fname);('Должность: '); readln(sb.dolzh);

write(spbiblio,sb);('Хотите добавить ещё одного библиотекаря? (Д\Н)>');readln(k);;(k='н') or (k='Н');(spbiblio);;

{--------------------------------Удаление библиотекаря----------------------}Clearbibl;sb:biblio;: string;: file of biblio;,n,nomchh:integer;:char;:char;(spbiblio,'bibl.txt');(spbiblio);(fo,'newfile.txt');(fo);;(24);write('Удаление данных о библиотекаре');ris(24);writeln('');

writeln('Введите фамилию библиотекаря данные о котором вы хотите удалить:');

readln(udal);:=0;not eof(spbiblio) do(spbiblio,sb);udal=sb.lname then x:=1;;x=0 then begin writeln('Библиотекаря с такой фамилией нет!'); readln; end(spbiblio);reset(spbiblio);

writeln('Вы точно хотите удалить библиотекаря по фамилии ',udal,'(Д\Н)');

readln(otv);(otv='Д') or (otv='д') thennot eof(spbiblio) do(spbiblio,sb);sb.lname<>udal then write(fo,sb);;(spbiblio);(fo);(spbiblio);(fo,'bibl.txt');

end;end;;

{---------------------------------Просмотр списка библиотекарей----------------}

procedure seekbibl;sb:biblio;:char;(spbiblio,'bibl.txt');(spbiblio);(spbiblio,sb);;(25);write('Просмотр списка библиотекарей');ris(25);writeln('');('Имя: ',sb.name);('Фамилия: ',sb.lname);('Отчество: ',sb.fname);('Должность: ',sb.dolzh);

ris(80);(' Для выхода нажмите <Esc>');

k:=readkey;(EoF(spbiblio)) or(k=#27);(spbiblio);;

{---------------------------------Меню-------------------------------------}MenuToScr;i:integer;;i:=1 to k do(x,y+i-1);i=1 then begin gotoXY(2,y-1);writeln(' МЕНЮ'); gotoXY(x,y+i-1);end;(menu[i]);;:=sel;(x,y+punkt-1);(menu[punkt]);

TextAttr:=norm;;

{---------------------------------Основная программа-----------------------}

Begin(spknig,'knigi.txt');(spreader,'read.txt');(spbiblio,'bibl.txt'); {Проверка файлов на существование}

{$I-}(spknig);

{$I+}IOResult<>0 then begin rewrite(spknig);reset(spknig);end;(spknig);

{$I-}(spreader);

{$I+}IOResult<>0 then begin rewrite(spreader);reset(spreader);end;(spreader);

{$I-}(spbiblio);

{$I+}IOResult<>0 then begin rewrite(spbiblio);reset(spbiblio);end;

close(spbiblio); [1]:='Работа со списком книг:';[2]:=' - Просмотр списка ';[3]:=' - Добавление новой';[4]:=' - Учёт выдачи\приёма ';[5]:=' - Удаление';[6]:=' - Поиск по писателю';[7]:=' - Поиск по названию';[8]:=' - Поиск по жанру';[9]:=' - Поиск по году издания';[10]:='Работа со списком читателей:';[11]:=' - Просмотр списка ';[12]:=' - Добавление нового';[13]:=' - Удаление';[14]:=' - Просмотр списка должников';[15]:=' - Редактирование данных';[16]:='Работа со списком библиотекарей:';[17]:=' - Просмотр списка ';[18]:=' - Добавление нового';[19]:=' - Удаление';[20]:=' - Выход (Esc)';

punkt:=2;:=3;y:=3;:=norm;;:=readkey;ch=char(0):=readkey;ch of(80):punkt<k then(x,y+punkt-1);(menu[punkt]);:=punkt+1;(punkt=1) or (punkt=10) or (punkt=16) then punkt:=punkt+1;:=sel;(x,y+punkt-1);(menu[punkt]);:=norm;;(72):punkt>1 then(x,y+punkt-1);(menu[punkt]);:=punkt-1;(punkt=10) or (punkt=16) then punkt:=punkt-1;punkt=1 then punkt:=2;:=sel;(x,y+punkt-1);(menu[punkt]);:=norm;;;ch=chr(13)punkt of

: seekknigi;

: newkniga;

: Clearkn;

: poiskknigiau;

: poiskkniginaz;

: poiskknigizh;

: novknigi;

: seekreader;

: newreader;

: Clearreader;

: zadreader;

: redreader;

: seekbibl;

: newbibl;

: Clearbibl;

: ch:=chr(27);;;;ch=chr(27);.

8. Описание работы программы

Основная программа реализована в виде условных операторов, которые позволяют выполнить один из предложенных пунктов. Для многократного выполнения тело программы заключено в оператор цикла REPEAT.

Заполнение файлов с данными: - книги; - читатели;- работники.

Просмотр содержимого файлов с данными: - книги; - читатели;- работники.

Выполнение запросов, указанных в задании, выполняется с помощью процедур:- выдача/возврат книг; - удаление книги; - поиск книги по автору; - поиск книги по названию; - поиск книги по жанру; - поиск книги по году издания; - удаление книги; - редактирование записи о читателе; - удаление записи о библиотекаре.

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

Имена файлов на диске: knigi.txt, read.txt и bibl.txt.

Заключение

Была поставлена задача: Разработать программу для работы со списками читателей, книг и работников библиотеки. Я смог практически в полном объеме решить эту задачу, используя язык высокого уровня Turbo Pascal 7.0. Программа обладает удобным интерфейсом, и во всём соответствует начальным требованиям. В программе задействована функция чтения и записи в файл, а так же добавление новых записей.

Входные данные получены из исходных файлов.

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

1.     

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

 

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