База данных "Студенты"

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Введение

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

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

Для реализации алгоритмов я выбрал язык программирования Turbo Pascal. Выбор обусловлен тем, что возможностей этого языка достаточно для достижения поставленной цели моей курсовой работы.

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

1. Turbo Pascal

1.1 История

Turbo Pascal — это среда разработки для языка программирования Паскаль. Используемый в Turbo Pascal диалект базировался на более раннем UCSD Pascal, получившем распространение, в первую очередь, на компьютерах серии Apple II. Компилирующая компонента Turbo Pascal была основана на компиляторе Blue Label Pascal, первоначально созданном в 1981 году Андерсом Хейлсбергом для операционной системы NasSys микрокомпьютера Nascom. Позднее он был переписан как Compass Pascal для операционной системы CP/M, затем как Turbo Pascal для DOS и CP/M. Одна из версий Turbo Pascal была доступна под Apple Macintosh примерно с 1986 года, но её разработка прекратилась примерно в 1992 году.

В 1982 году Филипп Кан приобрёл компилятор у Андерса Хейлсберга и перебрался из Парижа в Калифорнию, где основал компанию Borland.

Когда в 1983 году появилась первая версия Turbo Pascal, такой тип среды разработки был относительно новым. Во время дебюта на американском рынке, Turbo Pascal продавался по цене в $ 49. 99. Помимо привлекательной цены, встроенный компилятор Паскаля также был очень высокого качества. Приставка «Turbo» намекала как на скорость компиляции, так и на скорость производимого им исполняемого кода. Turbo Pascal создавал машинный код за один проход, без шага компоновки.

После рекламной кампании за первый месяц поступило заказов на 150 тыс. долларов — так много, что местные банки отказывались оплачивать чеки и кредитные карточки, подозревая мошенничество.

За первые два года было продано не менее 300 тысяч копий компилятора, что превзошло объём продаж всех прочих языков для микрокомпьютеров.

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

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

Помимо всего этого, имелось средство профилирования. Книги, включённые в поставку Borland Pascal, давали детальное описание языка ассемблера Intel вплоть до указания количества тактовых циклов, необходимых для выполнения каждой инструкции. В общем и целом, система давала превосходные возможности для оптимизации кода; пользователю не требовалось пользоваться чем-либо кроме среды разработки. Всё было сделано так идеально, что даже школьник мог этим пользоваться. Эти качества позволили версии Паскаля от Borland стать стандартом языка Паскаль де-факто.

Turbo Pascal часто используется в школе. С начала 1990-х TP/BP используется в университетах для изучения фундаментальных концепций программирования.

Вероятно, разработка Microsoft Pascal была прекращена из-за конкуренции с высоким качеством и небольшой ценой Turbo Pascal. Другая версия гласит, что Borland заключил соглашение с Microsoft на прекращение разработки Turbo BASIC (среды разработки для BASIC, ответвившейся от Turbo Pascal), если Microsoft прекратит разработку Microsoft Pascal. Некоторое время Microsoft выпускал QuickPascal, который был почти 100%-совместим с Turbo Pascal.

В течение нескольких лет Borland улучшал не только среду разработки, но и язык. В версии 5.5 в него были введены передовые возможности объектно-ориентированного программирования. Последней выпущенной версией была версия 7. Borland Pascal 7 включал в себя среду разработки и компиляторы для создания программ под DOS, под DOS с расширителем DOS и Windows 3. x, в то время как Turbo Pascal 7 мог создавать только обычные DOS-программы.

С 1995 года в Borland прекратили разработку Turbo Pascal и предложили в качестве замены среду разработки Delphi. Новая версия языка подверглась изменению (в особенности ООП), и языку вернулось изначальное название, закреплённое разработчиками Apple Object Pascal. Старая объектная модель Turbo Pascal и соответствующий синтаксис поддерживался как устаревший, использование обеих объектных моделей одновременно в одной и той же программе не поддерживается.

1. 2 Этапы

Turbo Pascal 1. 0, 1983 год. Компилирует непосредственно в машинный код. Требует 32 килобайта оперативной памяти. Стоит меньше 50 долларов. Имеет интегрированный компилятор / редактор, высокую скорость компиляции. Позволяет размещать динамические данные в куче (heap) — динамической области памяти.

Turbo Pascal 2. 0, 1984 год. Увеличен размер создаваемой программы — позволяет использовать до 64 килобайт для кода, стека и данных. Версия для DOS поддерживает арифметический сопроцессор и двоично-десятичную арифметику (Binary-coded decimal (англ.), BCD).

Turbo Pascal 3. 0, 1985 год. Поддержка оверлейной структуры. Поддержка графических режимов. Специальные подпрограммы формирования изображений для IBM PC-совместимых компьютеров, включая «черепаховую» графику. Инструментальные пакеты.

Turbo Pascal 4. 0, 1987 год. Раздельная компиляция модулей. Размер программы ограничен только объёмом оперативной памяти. Управляемая с помощью меню интегрированная среда разработки (англ. Integrated Development Environment, IDE). Интеллектуальная компоновка модулей. Автономный компилятор командной строки. Убрана поддержка оверлеев. Контекстно-чувствительная система помощи.

Turbo Pascal 5. 0, 1988 год. Восстановлена поддержка оверлейных структур. Встроенный отладчик. Отдельный отладчик (Turbo Debugger). Эмуляция арифметического сопроцессора. Поддержка графических драйверов BGI (Borland Graphics Interface).

Turbo Pascal 5. 5, 1989 год. Объектно-ориентированное программирование. Возможность копирования в программу примеров из справочной системы. Электронный учебник на диске. Turbo Profiler — профилировщик, позволяющий оптимизировать код программы.

Turbo Pascal 6. 0, 1990 год. Библиотека Turbo Vision. Новая IDE, переписанная с использованием Turbo Vision, поддерживающая мышь и редактирование нескольких файлов одновременно в разных окнах. Возможность задания во встроенном отладчике условных и по количеству проходов точек останова. Встроенный ассемблер BASM позволяющий в исходном тексте программы делать ассемблерные вставки. Protected поля и методы для объектов. Работающий в защищённом режиме компилятор командной строки.

Turbo Pascal for Windows. Создание 16-разрядных программ под Windows. Библиотека объектов Objects Windows Library (OWL), сходная по идеологии с Turbo Vision. Графическая IDE, работающая под Windows.

Borland Pascal 7. 0, 1992 год. Выпущен Borland Pascal 7. 0, включающий в себя более дешёвый и менее мощный Turbo Pascal 7. 0, который поставлялся также отдельно. BP 7.0 позволял создавать программы под реальный и защищённый 16-битный режим DOS и Windows. Была введена поддержка открытых массивов, добавлено новое ключевое слово «public» для доступных полей и методов объекта. Открыты исходные тексты системных библиотек и функций времени выполнения (RTL).

1. 3 Достоинства и недостатки Турбо Паскаля

Достоинства

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

· Контекстная справочная система, по которой можно изучать язык без обращения к сторонним источникам.

· Высокая скорость компиляции, высокая скорость выполнения откомпилированных программ.

· Встроенная возможность использовать вставки на языке ассемблера.

Недостатки

Компилятор рассчитан на реальный режим DOS, применение которого сходит на нет. Однако в последних версиях компилятора и среды введена поддержка защищённого режима вместе с соответствующим отладчиком (TD).

В модуле CRT имеется ошибка (некорректный подсчёт количества циклов для функции delay, не рассчитанный на быстрые процессоры, процессоры с переменной частотой и многозадачные среды), из-за которой при запуске программы на компьютерах с тактовой частотой более 200 MHz сразу происходило аварийное завершение с сообщением «Runtime error 200 at…». Существуют разные варианты исправления модуля CRT. В варианте Клауса Хартнегга ошибка 200 не возникает, но длительность Delay на быстрых компьютерах меньше желаемой, и эта проблема по незнанию иногда тоже считается недостатком Turbo Pascal.

Интересные факты

В Turbo/Borland Pascal 7.0 встроено пасхальное яйцо: если в интегрированной среде через меню «Help» открыть панель «About» и нажать сочетание клавиш Alt + I, то в панели будут прокручиваться имена разработчиков.

Алгоритм раскраски во встроенном редакторе немного отличается от того, как понимает синтаксис компилятор. А именно, конструкция (*) воспринимается редактором как законченный комментарий, а компилятором — как начало комментария. Это может использоваться, чтобы внутри комментариев вставлять синтаксически раскрашенные участки, например, демонстрация способа использования. Или, например, существуют Паскаль-вирусы, которые записывают своё тело после 80-й колонки, используя (*), чтобы старый текст выглядел без изменений. Область распространения ограничена местами, где запускаются программы на Turbo Pascal, зато в самих этих местах бороться с Паскаль-вирусами было нетривиально. Антивирусы тех времён были бессильны против этих первых представителей макровирусов.

Используя (*), можно добиться и обратного: заставить код выглядеть как комментарий или как ассемблерный код:

program HelloWorld; (*) (*)

begin (*) asm (*)

WriteLn ('Hello, World!'); (*) end (*)

ReadLn; (*) (*)

end. (*) (*)

Будучи набранным в интегрированной среде, поставляемой с Turbo Pascal, этот код будет разноцветным.

2. База данных «Студенты»

2. 1 Функции

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

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

3. Пополнение списка поступившими абитуриентами. В начале каждого учебного года в базу данных должны заноситься студенты из числа абитуриентов поступивших в текущем году.

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

5. Предоставление А/О и возврат из А/О. В течении обучения студенту может быть предоставлен академический отпуск на один год по его окончанию студент продолжает обучение. В течение этого времени информация о студенте должна храниться в архиве, чтобы быть востребованной при восстановлении. Кроме того иногда требуется информация о дате ухода студента в академический отпуск и номере приказа по которому академический отпуск был предоставлен. Информация об этом может быть записана в раздел «Примечания».

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

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

2. 2 Постановка задачи, работа с программой

Для создания базы данных и пользовательского интерфейса достаточно возможностей Turbo Pascal.

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

— зачислить;

— отчислить;

— изменить;

— запрос;

— конец.

После выбора пункта меню и реализации соответствующей функции необходим возврат в главное меню (кроме функции «конец», т.к. ее предназначение — выход из базы данных «Студенты»).

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

Исходный файл программы называется STUDBASE. PAS. И предназначен для редактирования в Turbo Pascal. Также в архиве имеется исполняемый файл STUDBASE. EXE. Это и есть сама рабочая программа. Файл базы данных о студентах называется base и имеет расширение. txt.

Вход в программу защищен паролем, от несанкционированного доступа посторонних лиц. Пароль для входа — «0».

Также в самом начале работы, программа, после ввода пароля, попросит нас указать путь к файлу базе данных со студентами, в формате: диск: Папкаbase. txt. В нашем случае, этот файл называется base. txt. Сначала необходимо указать диск, на котором в данный момент находится база данных. Затем через символы обратного слэша ««, указать каталоги расположения, а затем имя и расширение самого файла. Например: F: TPbase. txt.

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

Моя программа, написанная на языке Turbo Pascal имеет следующий исходный вид:

program databse;

uses graph, crt;

const

directory = «;

type

stdname = string[40];

searcharray = array [1. 1000] of integer;

student = record

name: stdname;

stdnum: real;

semester: real;

gpa: real;

end;

stdarray = array [1. 1000] of student;

var

unchangeable: integer;

class: stdarray;

choice: char;

i, driver, mode: integer;

path3: string;

indata1, backup: text;

search1: searcharray;

label 1, 2, 3;

procedure decryptor (var decstring: stdname);

var

loop: integer;

begin

for loop:= 1 to length (decstring) do

decstring[loop]:= chr (ord (decstring[loop]) — 121);

end;

procedure intdecrypt (var num: real);

begin

num:= num — 27;

num:= num / 2;

end;

procedure gpadecrypt (var num: real);

begin

num:= num + 0. 26;

num:= num * 3. 29;

num:= num / 2. 69;

end;

procedure encryptor (var encstring: stdname);

var

loop: integer;

begin

for loop:= 1 to length (encstring) do

encstring[loop]:= chr (ord (encstring[loop]) + 121);

end;

procedure gpaencrypt (var num: real);

begin

num:= num * 2. 69;

num:= num / 3. 29;

num:= num — 0. 26;

end;

procedure intencrypt (var num: real);

begin

num:= num * 2;

num:= num + 27;

end;

procedure emptier;

var

i: integer;

begin

for i:= 1 to 1000 do

begin

class[i]. stdnum:= 0;

class[i]. semester:= 0;

class[i]. gpa:= 0;

class[i]. name:= «;

search1 [i]:= 0;

end;

end;

procedure searcher;

var

b, x, m: integer;

choice, seperator: char;

search: real;

label 1, 2, 3, 4;

begin

2: write ('Vvedite nomer studenta dlya poiska ');

readln (search);

intencrypt (search);

reset (indata1);

x:= 1;

while not eof (indata1) do

begin;

readln (indata1, search1 [x]);

if (search = search1 [x]) then

goto 1;

x:= x + 1;

if eof (indata1) then

begin

writeln ('Nomer studenta ne naiden! ');

4: write ('Vy hotite nayti bol`she? ');

readln (choice);

if (choice = 'y') or (choice = 'Y') then

begin

for b:= 1 to 50 do

begin

writeln ('')

end;

goto 2

end

else

goto 3;

end;

end;

1: for m:= 1 to 50 do

writeln ('');

writeln ('Net rezultatov poiska! ');

writeln ('');

reset (indata1);

writeln ('');

for m:= 1 to x do

begin

read (indata1, class[m]. stdnum);

read (indata1, class[m]. semester);

read (indata1, class[m]. gpa);

read (indata1, seperator);

readln (indata1, class[m]. name);

end;

intdecrypt (class[x]. stdnum);

writeln ('Student Number ', class[x]. stdnum:4:0);

decryptor (class[x]. name);

writeln ('Name ', class[x]. name);

intdecrypt (class[x]. semester);

writeln ('Semester ', class[x]. semester:1:0);

gpadecrypt (class[x]. gpa);

writeln ('GPA ', class[x]. gpa:1:2);

writeln ('');

writeln ('');

goto 4;

3: end;

procedure save;

begin

append (indata1);

intencrypt (class[i]. stdnum);

write (indata1, class[i]. stdnum:1:0, ' ');

intencrypt (class[i]. semester);

write (indata1, class[i]. semester:1:0, ' ');

gpaencrypt (class[i]. gpa);

write (indata1, class[i]. gpa:1:2, ' ');

encryptor (class[i]. name);

writeln (indata1, class[i]. name);

close (indata1);

end;

procedure newrecord;

var

t, h: integer;

n: real;

choice1, choices: char;

label 1, 2, 3, 4, 5, 6;

begin

1: for t:= 1 to 50 do

writeln ('');

writeln ('Vvedite v sootvetstvii s ukazaniyami');

write ('Student #: ');

readln (class[i]. stdnum);

write ('Student Imya: ');

readln (class[i]. name);

write ('Kurs: ');

readln (class[i]. semester);

write ('GPA: ');

readln (class[i]. gpa);

5: reset (indata1);

if not eof (indata1) then

begin

repeat

readln (indata1, n);

intdecrypt (n);

if n = class[i]. stdnum then

begin

writeln ('Dublikat nomera Studenta zapreshen! ');

write ('Vvedite drugoi nomer studenta: ');

readln (class[i]. stdnum);

goto 5;

end;

until eof (indata1);

end;

if eof (indata1) then

goto 3;

3: if (class[i]. semester > 8) or (class[i]. semester < 1) then

begin

for h:= 1 to 50 do

writeln ('');

write ('Oshibka… Vvedite Kurs zanovo: ');

readln (class[i]. semester);

goto 3;

end;

4: if (class[i]. gpa > 5. 0) or (class[i]. gpa < 1. 0) then

begin

write ('Oshibka… Vvedite GPA zanovo: ');

readln (class[i]. gpa);

goto 4;

end;

save;

i:= i + 1;

writeln ('');

2: write ('Primechaniya: ');

read (choice1);

writeln ('');

if (choice1 = 'y') or (choice1 = 'Y') then

goto 1;

write ('Are You Sure… ');

readln (choices);

if (choices = 'N') or (choices = 'n') then

goto 2

else

end;

procedure delrec;

label 1, 2;

var

h1, h2, h3, f1, d: integer;

delstd: real;

begin

d:= i;

i:= 1;

emptier;

reset (indata1);

write ('Vvedite nomer studenta, chtoby ego udalit`! ');

readln (delstd);

for i:= 1 to 1000 do

begin

read (indata1, class[i]. stdnum);

intdecrypt (class[i]. stdnum);

read (indata1, class[i]. semester);

intdecrypt (class[i]. semester);

read (indata1, class[i]. gpa);

gpadecrypt (class[i]. gpa);

readln (indata1, class[i]. name);

decryptor (class[i]. name);

if eof (indata1) then

begin

h2:= i;

goto 1;

end;

end;

1: close (indata1);

for h1:= 1 to h2 do

if (class[h1]. stdnum = delstd) then

begin

h3:= h1 — 1;

writeln (h3);

rewrite (indata1);

for f1:= 1 to h3 do

begin

intencrypt (class[f1]. stdnum);

write (indata1, class[f1]. stdnum:4:0,' ');

intencrypt (class[f1]. semester);

write (indata1, class[f1]. semester:1:0, ' ');

gpaencrypt (class[f1]. gpa);

write (indata1, class[f1]. gpa:1:2);

encryptor (class[f1]. name);

writeln (indata1, class[f1]. name);

end;

h3:= h1 + 1;

for f1:= h3 to h2 do

begin

intencrypt (class[f1]. stdnum);

write (indata1, class[f1]. stdnum:4:0, ' ');

intencrypt (class[f1]. semester);

write (indata1, class[f1]. semester:1:0, ' ');

gpaencrypt (class[f1]. gpa);

write (indata1, class[f1]. gpa:1:2);

encryptor (class[f1]. name);

writeln (indata1, class[f1]. name);

end;

goto 2;

end;

2: i:= d;

emptier;

end;

procedure password;

var

c: string;

e: integer;

label 1;

begin

e:= 0;

clrscr;

1: write ('Pojaluista, vvedite parol: ');

repeat

e:= e + 1;

c[e]:= readkey;

if ord (c[e]) = 13 then

else

write ('*');

until (ord (c[e]) = 13);

writeln ('');

if (c[1] = '0') then

begin

write ('Parol prinyat… Najmite lyubuyu klavishu chtoby prodoljit. ');

readkey;

end

else

begin

writeln ('PAROL` HE BEPEH!');

e:= 0;

writeln ('');

Write ('Vy hotite prodoljit… Y-da, N-net ');

readln (choice);

clrscr;

if (choice = 'y') or (choice = 'Y') then

goto 1

else

choice:= 'n';

end;

end;

procedure listrecord;

var

name1: stdname;

j, h: integer;

seperator, seperator2, seperator3, keys1: char;

gpa1, stdnum1, semester1: real;

label 1, 2;

begin

for j:= 1 to 50 do

writeln ('');

writeln ('Eto spisok vseh zapisey v base dannyh. ');

reset (indata1);

while not eof (indata1) do

begin

readln (indata1, stdnum1, seperator, semester1, seperator2, gpa1, seperator3, name1);

decryptor (name1);

intdecrypt (stdnum1);

intdecrypt (semester1);

gpadecrypt (gpa1);

writeln ('Student # ', stdnum1: 1:0);

writeln ('Student Name ', name1);

writeln ('Semester ', semester1: 1:0);

writeln ('GPA ', gpa1: 1:2);

writeln ('');

writeln ('Jmite lyubuyu klavishu… ili < x> dlya vyhoda');

keys1:= readkey;

if (keys1 = 'x') or (keys1 ='X') then

goto 1;

for h:= 1 to 50 do

writeln ('');

end;

1: writeln ('ending');

end;

procedure editrecord;

var

delstd, n: real;

seperator: char;

h1, h2, h3, f1, d, h4, h: integer;

label 1, 2, 3, 4,5;

begin

d:= i;

i:= 1;

emptier;

reset (indata1);

write ('Vvedite nomer studenta dlya redaktirovaniya: ');

readln (delstd);

for i:= 1 to 1000 do

begin

read (indata1, class[i]. stdnum);

intdecrypt (class[i]. stdnum);

read (indata1, class[i]. semester);

intdecrypt (class[i]. semester);

read (indata1, class[i]. gpa);

gpadecrypt (class[i]. gpa);

read (indata1, seperator);

readln (indata1, class[i]. name);

decryptor (class[i]. name);

if eof (indata1) then

begin

h2:= i;

goto 1;

end;

end;

1: close (indata1);

for h1:= 1 to h2 do

if (class[h1]. stdnum = delstd) then

begin

h4:= h1;

h3:= h1 — 1;

writeln (h3);

rewrite (indata1);

for f1:= 1 to h3 do

begin

intencrypt (class[f1]. stdnum);

write (indata1, class[f1]. stdnum:4:0,' ');

intencrypt (class[f1]. semester);

write (indata1, class[f1]. semester:1:0, ' ');

gpaencrypt (class[f1]. gpa);

write (indata1, class[f1]. gpa:1:2, ' ');

encryptor (class[f1]. name);

writeln (indata1, class[f1]. name);

end;

h3:= h1 + 1;

for f1:= h3 to h2 do

begin

append (indata1);

intencrypt (class[f1]. stdnum);

intencrypt (class[f1]. semester);

gpaencrypt (class[f1]. gpa);

encryptor (class[f1]. name);

write (indata1, class[f1]. stdnum:4:0, ' ');

write (indata1, class[f1]. semester:1:0, ' ');

write (indata1, class[f1]. gpa:1:2, ' ');

writeln (indata1, class[f1]. name);

end;

close (indata1);

end;

clrscr;

writeln ('Student #: ', class[h4]. stdnum:1:0);

writeln ('Student Imya: ', class[h4]. name);

writeln ('Kurs: ', class[h4]. semester:1:0);

writeln ('GPA: ', class[h4]. gpa:1:2);

writeln ('');

i:= 1;

writeln ('Vvedite znachenie zanovo! ');

write ('Student #: ');

readln (class[i]. stdnum);

write ('Student Imya: ');

readln (class[i]. name);

write ('Kurs: ');

readln (class[i]. semester);

write ('GPA: ');

readln (class[i]. gpa);

5: reset (indata1);

if not eof (indata1) then

begin

repeat

readln (indata1, n);

if n = class[i]. stdnum then

begin

writeln ('Odinakovye nomera studentov zapresheny! ');

write ('Vvedite drugoi nomer studenta: ');

readln (class[i]. stdnum);

goto 5;

end;

until eof (indata1);

end;

if eof (indata1) then

goto 3;

3: if (class[i]. semester > 8) or (class[i]. semester < 1) then

begin

for h:= 1 to 50 do

writeln ('');

write ('Oshibka… Vvedite Kurs zanovo: ');

readln (class[i]. semester);

goto 3;

end;

4: if (class[i]. gpa > 4. 0) or (class[i]. gpa < 1. 0) then

begin

write ('Oshibka… Vvedite zanovo GPA: ');

readln (class[i]. gpa);

goto 4;

end;

save;

goto 2;

2: i:= d;

emptier;

end;

procedure deleterecord;

var

t: integer;

choice: char;

begin

for t:= 1 to 50 do

writeln ('');

writeln ('VNIMANIE — Eto privedet k udeleniyu vseh zapisei v base dahhyh!');

write ('Do yo want to continue ');

readln (choice);

if (choice = 'y') or (choice = 'Y') then

begin

rewrite (indata1);

close (indata1);

writeln ('Baza dannyh byla uspesho udalena! ');

end;

end;

procedure databaser;

var

name1: stdname;

begin

clrscr;

write ('Vvedite put` k failu bazy studentov (. base. txt): ');

readln (path3);

assign (indata1, path3);

end;

procedure backup1;

var

name1: stdname;

begin

clrscr;

writeln ('Sozdanie rezervnoi kopii dannyh. ');

writeln ('Please enter the path of the databse text file to backup data ');

write ('> >> ');

readln (name1);

assign (backup, name1);

name1:= «;

rewrite (backup);

reset (indata1);

while not eof (indata1) do

begin

readln (indata1, name1);

writeln (backup, name1);

end;

writeln ('');

writeln ('');

writeln ('Rezervnoe kopirovanie uspeshno zaversheno! ');

close (indata1);

close (backup);

writeln ('Jmite lyubuyu klavishu dlya prodoljeniya: ');

readkey;

end;

procedure starter;

var

data: char;

begin

initgraph (driver, mode, directory);

rectangle (10,10, getmaxx — 10, 165);

outtextxy (140,15, '6 A 3 A D A H H bI X C T Y D E H T bI. ');

outtextxy (135,45,'BbI6EPITE nyHKT, HA) I (ATuEM COOTBETCTBYI-0LLLEu K/ABuLLIy');

outtextxy (12, 75, '[N] - Novaya Zapis [E] - Redaktirovanie [L] - Spisok [D] - Udalit zapis [S] - Poisk');

outtextxy (12,110,' [C] - Udalenie bazy [H] - Izmenenie Basy [B] - Rezervnoe kopirovanie [X] - EXIT');

outtextxy (17, 135, 'ABTOP: Kovriga Yuriy, KEBP-KEUK, gr. IS-33. Karaganda-2011 ');

data:= readkey;

if (data = 'n') or (data = 'N') then

begin

clrscr;

closegraph;

newrecord;

end;

if (data = 'h') or (data = 'H') then

begin

clrscr;

closegraph;

databaser;

end;

if (data = 'e') or (data = 'E') then

begin

clrscr;

closegraph;

editrecord;

end;

if (data = 'l') or (data = 'L') then

begin

clrscr;

closegraph;

listrecord;

end;

if (data = 'c') or (data = 'C') then

begin

clrscr;

closegraph;

deleterecord;

end;

if (data = 's') or (data = 'S') then

begin

clrscr;

closegraph;

searcher;

end;

if (data = 'x') or (data = 'X') then

begin

unchangeable:= 0;

end;

if (data = 'd') or (data = 'D') then

begin

clrscr;

closegraph;

delrec;

end;

if (data = 'b') or (data = 'B') then

begin

clrscr;

closegraph;

backup1;

end;

end;

begin

password;

if (choice = 'n') then

goto 3;

databaser;

emptier;

i:= 1;

unchangeable:= 1;

while unchangeable >= 1 do

begin

starter;

end;

3: writeln ('');

end.

Заключение

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

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

Для реализации алгоритмов выбран язык программирования Turbo Pascal. Выбор обусловлен тем, что возможностей этого языка достаточно для достижения поставленной цели курсовой работы.

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

Список источников

студент база программа алгоритм

1. С. Симонович, Г. Евсеев, А. Алексеев. Специальная информатика: Учебное пособие. — М.: АСТ-ПРЕСС: Инфорком-Пресс, 1998.

2. Фаронов В. В. Turbo Pascal: Учебное пособие. Издательство: Питер. 2007.

3. Фаронов В. В. Turbo Pascal Наиболее полное руководство в подлиннике. Издательство «ОМД Групп» 2003.

4. Мельников С. В. Delphi и Turbo Pascal на занимательных примерах. Издательство: BHV-Санкт-Петербург. 2006.

5. Сухарев М. Turbo Pascal 7.0. Теория и практика программирования. Издание 3. Издательство: Наука и техника. 2007.

6. Шпак Ю. А. Turbo Pascal 7.0 на примерах. Издательство «Юниор», 2003.

7. Потопахин В. В. Turbo Pascal: решение сложных задач. Издательство «БХВ-Петербург», 2006.

8. Основы информатики и вычислительной техники: Проб. учеб. пособие для сред. учеб. заведений. В 2 ч. Ч. 2 / А. П. Ершов, В. М. Монахов.А. Кузнецов и др. — М.: Просвещение, 1986. -143 с. Вирт Н. Алгоритмы + структуры данных = программы./ Н. Вирт — М.: 10 мир, 1985.

ПоказатьСвернуть
Заполнить форму текущей работой