База данных «Завуч школы»


Введение

Целью данного  курсового проекта является реализация программы «База данных «Завуч школы», в которой организуется ввод следующих данных: фамилия, имя ученика, название улицы, номер дома, номер телефона; записывает их в массиве записей и обеспечивает поиск номера телефона по фамилии и имени оператора.

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

Программа «База данных завуча школы» будет реализована на языке программирования Turbo Pascal.

 

 

 

 

 

 

 

 

 

 

 


Постановка цели и задачи

 

Составить программу - база данных «Завуча школы» в Turbo Pascal, которая организует ввод следующих данных: фамилия, имя ученика, название улицы, номер дома, номер телефона, класс; записывает их в массиве записей и обеспечивает поиск даты дежурства по фамилии и имени оператора.

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

Задачи:

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Структура программы  на языке Turbo Pascal

Структура программы  на языке Turbo Pascal в общем случае выглядит следующим образом:

  • Заголовок программы;
  • Описательная часть;
  • Операторная часть.

Программа начинается с заголовка, который имеет следующий вид:

PROGRAM < имя программы > ;

Слово program является зарезервированным, то есть служебным словом, которое используется только для объявления имени программы.

Имя программы, так же как имена используемых в программе констант, переменных, процедур, функций и т. д., называется идентификатором (по-английски − identifier). Идентификаторы задаются программистом, при этом используются следующие правила:

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

Как и любой  оператор в языке Turbo Pascal, заголовок  оканчивается точкой с запятой. Заголовок  программы является необязательным, и его можно опускать.

Описательная  часть программы может содержать несколько разделов:

  1. раздел меток;
  2. раздел констант;
  3. раздел типов;
  4. раздел переменных;
  5. раздел процедур и функций.


Раздел описаний содержит описание всех констант, переменных, типов данных, процедур, функций.

Описание  констант:

Сonst  < имя константы > = < значение константы > ;

Описание  переменных:

Var  < имя переменной > : < тип переменной > ;

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

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

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


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

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

Описание процедуры:

Заголовок процедуры:

Procedure < имя процедуры > ( < описание формальных параметров > ) ; < директивы > ;

Раздел описаний (описание локальных констант, переменных, типов, процедур и функций низшего  уровня)

Раздел операторов

Begin

End;

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

Описание  функции:

Заголовок функции:

Function < имя функции > ( < описание формальных параметров > ) : <тип результата > ;

Раздел описаний (описание локальных констант, переменных, типов, процедур и функций низшего уровня)

Раздел операторов

begin

...

end.


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

<имя функции> := <вычисленное значение>;

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

Описание  типа запись:

 

type <имя типа> = record

<имя поля>: <тип поля>;

<имя поля>: <тип поля>;

...

<имя поля>: <тип поля>

end;

Средства языка Turbo Pascal позволяют работать с файлами, что облегчает обработку данных: например, программа может обращаться к файлам, содержащим необходимые данные, а также записывать в файлы результаты обработки данных. Под файлом понимается именованная область памяти компьютера (жесткого диска, дискеты), либо логическое устройство − потенциальный источник или приемник информации. Длина файла ограничена только объемом памяти компьютера. Программа может обращаться к нескольким файлам одновременно.

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

  1. Типизированные файлы − содержат компоненты указанного типа,

например, действительные числа.

 

Описание типизированного файла:

 

type < имя типа > = file of < тип компонентов > ;

 

  1. Текстовые файлы − определяются типом text.

Описание  текстового файла:

 

type  < имя типа > = text ;


 

  1. Нетипизированные файлы − определяются типом file.

 

Описание  нетипизированного файла:

 

type < имя типа > = file ;

 

Операторная часть – основное тело программы и заключается в операторные скобки BEGIN END. Она содержит операторы, необходимые для выполнения последовательности действий для решения поставленной задачи. Разделителем между разделами описательной части и операторами служит точка с запятой. В конце программы должна стоять точка. Язык Turbo Pascal является языком свободного формата, что позволяет размещать в строке как один, так и несколько операторов.

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

  Оператор присваивания:

<имя переменной>:= <значение переменной / результат вычисления выражения>;

 

Простейшие  операторы языка Pascal – это write/writeln и read/readln.

Оператор write/writeln выводит на экран значение константы, переменной или выражения. Действие оператора writeln отличается от оператора write тем, что оператор writeln после вывода информации без аргументов переводит курсор на следующую строку.

Для ввода информации с  клавиатуры используется оператор read/readln.  Как и в случае оператора writeln, оператор readln после ввода информации переводит курсор на следующую строку. Оператор readln без аргументов переводит систему в состояние ожидания, − работа программы прерывается и компьютер ждет нажатия клавиши ENTER. После этого программа продолжает работу.

 

 


Описание программы

Для описаний сведений об ученике, его даты рождения, номера телефона, в разделе типов вводим 3 разных записи: personname, dannye, person, так как они представляют собой данные разных типов.

Тип personname содержит сведения о фамилии и имени ученика. Это запись вида:

personname = record

familiyauchenika: string[15];

imyauchenika: string[15]

end;

где:  familiyauchenika – поле для записи фамилии ученика (строка до 15       символов);

imyauchenika – поле для записи имени (строка до 15 символов).

Для описания сведений о названии улицы, номера дома, класса в разделе типов введем тип dannye – запись следующей структуры:

dannye = record

nazvanie ylicy: string[20];

nomer doma: byte;

          phone: longint;

klass: word;

end;

где:    nazvanie ylicy  - поле для записи названия улицы;

nomer doma - поле для записи номера дома;

phone – поле для записи номера телефона;

klass - поле для записи номера класса.

Тип person - содержит поле personname, само являющееся записью, поле dannye, и номер телефона оператора:


 person = record

pname: personname;

paddr: address;

phone: longint;

klass: word.

end;

Для удобства мы создаем типизированный файл и опишем в разделе описаний переменную f типа file записей person, для доступа к полям записи опишем переменные p,q типа person.

var

p, q: person;

f: file of person;

Действие программы  «База данных завуча школы», можно записать в виде четырех процедур:

  1. Создание файла и ввод данных о ученике, места жительства, номера телефона, класс;
  2. Процедура внесения в файл очередной записи;
  3. Чтение данных с файла и вывод введенной информации;
  4. Поиск необходимых данных по фамилии и имени ученика.

Для ввода данных о ученике, места жительства, номера телефона, класс, запишем процедуру WriteRecord, в которой выводятся запросы на ввод данных и считываются значения этих данных в соответствующие поля записи.

В разделе описаний запишем  переменные:

- fu типа string и максимальной длиной 15 символов, которая будет принимать значение фамилии ученика;

- n типа string и длиной не более 15 символов, которая будет принимать значение имени ученика;


- st типа string и длиной не более 20 символов, которая будет принимать значение названия улицы;

- nm типа byte, которые будут принимать значение вида письма, полученных оператором;

- ph типа longint, принимающее значение номера телефона ученика;

- k типа word, принимает значение номер класса ученика.

То есть раздел описаний выглядит так:

var

fu: string[15];

n: string[15];

st: string[20];

nm: byte;

ph: longint;

k: word.

Раздел операторов начинается зарезервированным  словом begin. Далее с помощью процедуры ввода writeln выводим запрос о вводе следующих данных: фамилия, имя ученика, название улицы, номер дома, телефон ученика, класс.

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

Для обращения  к полям записи мы используем оператор присоединения with:

with <имя переменной>

do <имя поля> := <значение>;

with p

do begin

with pname

do begin


familiyauchenika:= fu;

imyauchenika := n

end;

with paddr

do begin

street := st;

number :=nm;

end;

phone := ph;

          klass := k

end;

write(f, p)

Для создания файла  и ввода в него необходимой  операции запишем процедуру CreateFile.

В разделе описаний введем переменную n типа string (строка до 8 символов) для имени файла, переменной a присваиваем значения от 0 до 1:

var

n: string[8];

a: 0..1;

В разделе операторов мы выводи запрос с именем файла  не более 8 символов (переменная n). Для того чтобы файлы стали доступны программе, необходимо выполнить особую процедуру открытия файла – assign. Эта процедура должна всегда предшествовать другим процедурам работы с файлами, так как в соответствие конкретному файлу переменную языка, к которой впоследствии будут обращаться все другие файловые процедуры.

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


 begin

write('vvedite imya faila ');

write('(ne bolee 8 simvilov): ');

readln(n);

assign(f, n);

rewrite(f);

С помощью оператора  повтора repeat … until мы вводим данные об ученике, после введения которых, необходимо ответить на вопрос – будут ли вводиться новые данные, если будут вводиться – нужно нажать 1, если нет – 0. Цикл repeat оканчивается, если вводится 0. Далее процедура close закрывает файл, обеспечивая сохранения в файле всех новых записей. Связь файловой переменной с именем файла, установленная ранее процедурой assign, сохраняется, поэтому файл можно повторно открыть без дополнительного использования процедуры assign.

repeat

WriteRecord;

write('vy budete vvodit sleduyuchuyu ');

write('zapis? 1 - da, 0 - net ');

readln(a);

until a = 0;

writeln;

close(f)

          Процедура чтения данных из файла и вывода информации на экран происходит с помощью Procedure ReadData, сразу начинающаяся с раздела операторов, где с помощью процедуры reset файл открывается для чтения.

reset(f);

write('fail dannych sodergit ');


writeln('sleduyuchuyu informaciyu:');

Операцию вывода содержимого текстового файла на экран запишем с применением  оператора повтора while … do. Условием продолжения цикла запишем недостижение конца файла not eof(f). Процедурой read(f, p) организуем считывание данных из файла по строкам, а процедура write будет построчно выводить данные на экран.

while not eof(f)

do begin

read(f, p);

write('familiyauchenika: ');

writeln(p.pname.familiyauchenika);

write('imyauchenika: ');

writeln(p.pname.imyauchenika);

write('nazvanie ulicy: ');

writeln(p.paddr.street);

write('nomer doma: ');

writeln(p.paddr.numder);

write('telefon uchenika: ');

writeln(p.paddr.phone);

write('nomer klassa: ');

writeln(p.klass);

writeln;

end;

close(f)

end;

Процедура close закрывает файл.


          Процедура Procedure SearchData – процедура поиска информации по фамилии и имени ученика.

Вводим в  разделе описаний следующие переменные:

- fu типа string и максимальной длиной 15 символов, которая будет принимать значение фамилии ученика;

- n типа string и длиной не более 15 символов,  принимающее значение имени ученика;

- flag типа boolean, которая будет принимать значения true или false в зависимости от результатов поиска.

var

fn: string[15];

n: string[15];

flag: boolean;

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

begin

reset(f);

write('poisk adresa uchenika nomera telefona, klass ');

writeln('po imeni i familii uchenika');

write('vvedite familiyuchenika');

readln(fu);

write('vvadite imyauchenika: ');

readln(n);

Перед поиском  присвоим переменной flag значение true.

Просмотр всех записей файла данных при поиске запишем, используя оператор повтора while … do. Условие завершения поиска – not eof (f)  (недостижение конца файла) и false.


 flag := true;

while not eof(f) and flag

do begin

read(f, p);

  При помощи условного оператора if, запишем при каких значениях переменной flag (true и false) выводится информация о завершении поиска. Если переменная flag принимает значение false, то выводятся данные об ученику, названии улицы, номер дома, номер телефона, класс. Если flag не принимает значение false, тогда выводится сообщение: «Запись о таком музыканте отсутствует».

if (fu = p.pname.familiyauchenika)

and (n = p.pname.imyauchenika)

then begin

write('address: ');

writeln(p.paddr.street);

write('nomer doma');

writeln(p.paddr.number);

          write(‘telefon uchenika:’);

writeln(p.phone);

write(‘klass:’);

writeln(p.klass);

flag := false

end

end;

if flag

then writeln('zapis o takom ychenike otsutstvuet');

writeln;


end;


В разделе операторов основной программы мы прописываем названия процедур:

begin

CreateFile; {вызов процедуры создания данных и ввода в него   

    необходимой информации}

ReadData; {вызов процедуры чтения данных из файла и вывода

информации на экран}

SearchData {вызов процедуры поиска данных по фамилии и

имени ученика}

end.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Заключение

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

База данных в Turbo Pascal значительно повысит качество и скорость работы завуча школы при поиске необходимой информации.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


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

  1. Попов В.Б. Turbo Pascal: Учеб. Пособие. – М.: Финансы и статистика, 2000. – 528 с.: ил.
  2. Лабораторный практикум по программированию на языке Паскаль: Учебное пособие – 3-е изд. доп. и перераб. – Улан-Удэ: Изд-во ВСГТУ, 2004, - 176 с.
  3. Шестакова Т. П. Методические указания по курсу "Программирование и вычислительная физика" -  Ростов-на-Дону, УПЛ РГУ, 2003.
  4. Грогоно П. Программирование на языке Паскаль: Пер. с англ. - М.: Мир 1997. – 382 с.

 

 


База данных «Завуч школы»