Мегаобучалка Главная | О нас | Обратная связь


Текст программы «Учебная база данных» на исходном языке



2019-12-29 167 Обсуждений (0)
Текст программы «Учебная база данных» на исходном языке 0.00 из 5.00 0 оценок




 

uses crt;

type pupil=record {переменная типа запись для хранения данных об ученике}

 fam, name: string[30]; {фамилия, имя}

 pol: boolean; {пол, мужской = true}

 data, ves, rost: integer; {год рождения, вес, рост}

 end;

 var p: pupil;

f: file of pupil; {файл записей об учениках}

knc: boolean; {флаг окончания программы}

v: integer; {переменная для хранения выбора пункта меню}

procedure add; {процедура добавления новой записи в файл}

var u: pupil;

s: string;

n: integer;

pl, ok :boolean;

c: char;

begin

clrscr; {очистка экрана}

writeln('---Добавление записи---'); {вывод информационных надписей на экран}

writeln('Введите фамилию ученика');

readln(s) {считывание введенной пользователем информации}

u.fam := s; {занесение введенной пользователем фамилии ученика в переменную типа запись}

writeln('Введите имя ученика');

readln(s);   

u.name := s;

writeln('Укажите пол ученика, если мужской - введите букву "м", если женский - "ж"');

readln(c);

if (c = 'м') or (c = 'ж') then ok := true else ok := false; {проверка корректности введенных данным о поле ученика}

while not ok do        {выполняем до тех пор, пока пол не будет верно указан}

begin

writeln('Некорректный ввод данных');

writeln('Вводите строчные русские буквы!');

writeln('Укажите пол ученика, если мужской - введите букву "м", если женский - "ж"');

readln(c);

if (c = 'м') or (c = 'ж') then ok := true else ok := false;

end;

if c = 'м' then pl := true else pl := false;

u.pol := pl;

writeln('Введите год рождения ученика');

readln(n);

u.data := n;

writeln('Введите вес ученика');

readln(n);

u.ves := n;

writeln('Введите рост ученика');

readln(n);

u.rost := n;

reset(f); {открываем файл для чтения}

seek(f, filesize(f)); {устанавливаем указатель на последнюю запись файла}

write(f,u); {дописываем в конец файла запись об ученике}

close(f); {закрываем файл}

writeln('Запись добавлена, нажмите любую клавишу для продолжения');

repeat until keypressed; {ждем, пока не нажата какая-нибудь клавиша}

c := readkey;

end;

procedure edit; {процедура редактирования записи в файле}

var u: pupil;

s: string;

n, i, k: integer;

pl, ok, next: boolean;

c: char;

begin

reset(f); {открываем файл для чтения}

k := 0; {устанавливаем начальное значение счетчика}

while k < filesize(f) do {выполняем пока счетчик меньше количества записей в файле}

begin

seek(f,k); {ищем запись с номером, совпадающим со счетчиком}

clrscr; {очищаем экран}

writeln('---Редактирование записи---');

writeln('Фамилия':15, 'Имя':15, 'Пол':10, 'Год рождения':17, 'Вес':6, 'Рост':6);{выводим заголовки для полей записи}

read(f, u);{считываем запись из файла}

if u.pol then s := 'Мужской' else s := 'Женский'; {переводим логическое обозачение пола в строку}

writeln(u.fam:15, u.name:15, s:10, u.data:17, u.ves:6, u.rost:6);{выводим данные из записи}

writeln;

writeln('Enter - редактирование текущей записи, Esc - выход в меню');

writeln('любая другая клавиша - переход к следующей записи');

repeat until keypressed;{ждем, пока не нажата какая-нибудь клавиша}

c := readkey;

if ord(c) = 27 then exit; {если нажата клавиша ESC, то выходим из процедуры}

next := true;

if ord(c) = 13 then {если нажата клавиша Enter, то выполняем следующее}

begin

writeln;

writeln('Выберите поле для редактирования');{выводим информацию о выборе поля для редактирования}

writeln('1 - Фамилия');

writeln('2 - Имя');

writeln('3 - Пол');

writeln('4 - Год рождения');

writeln('5 - Вес');

writeln('6 - Рост');

writeln('0 - Отмена редактирования и переход к следующей записи');

readln(i); {считываем выбор пользователя}

case i of {в зависимости от выбора пользователя выполняем}

1: begin {если пользователь ввел "1", то редактируем фамилию}

writeln('Старое значение поля "Фамилия" - ', u.fam); {выводим на экран фамилию, указанную в записи}

write('Введите новое значение: '); {выводим запрос для ввода измененной фамилии}

readln(s); {считываем введенное пользователем значение}

u.fam := s; {заносим значение введенное пользователем в запись}

seek(f,k); {ищем запись с номером счетчика в файле}

write(f,u); {записываем измененную запись в файл}

next := false; {устанавливаем признак того, что на следующую запись после редактирования переходить не нужно}

end;

2: begin {если пользователь ввел "2", то редактируем имя}

writeln('Старое значение поля "Имя" - ', u.name);

write('Введите новое значение: ');

readln(s);

u.name := s;

seek(f,k);

write(f,u);

next := false;

end;

3: begin {если пользователь ввел "3", то редактируем пол}

if u.pol then s := 'Мужской' else s := 'Женский'; {переводим логическое обозачение пола в строку}

writeln('Старое значение поля "Пол" - ', s);

writeln('Введите новое значение');

writeln('Укажите пол ученика, если мужской - введите букву "м", если женский - "ж"');

readln(c);

if (c = 'м') or (c = 'ж') then ok := true else ok := false; {если пользователь ввел некорректное значение обозначения пола, то устанавливаем ложное значение логического переключателя}

while not ok do {пока логический переключатель не будет равен истине выполняем цикл}

begin

writeln('Некорректный ввод данных'); {выводим сообщение об ошибке}

writeln('Вводите строчные русские буквы!');

writeln('Укажите пол ученика, если мужской - введите букву "м", если женский - "ж"');

readln(c); {считываем новое введенное пользователем значение}

if (c = 'м') or (c = 'ж') then ok := true else ok := false;

end;

if c = 'м' then pl := true else pl := false; {переводим символьное обозначение пола в логическое}

u.pol := pl; {заносим логическое значение пола в запись}

seek(f,k); {ищем запись с номером счетчика в файле}

write(f,u); {записываем измененную запись в файл}

next := false; {устанавливаем признак того, что на следующую запись после редактирования переходить не нужно}

end;

4: begin {если пользователь ввел "4", то редактируем год рождения}

writeln('Старое значение поля "Год рождения" - ', u.data);

write('Введите новое значение: ');

readln(n);

u.data := n;

seek(f,k);

write(f,u);

next := false;

end;

5: begin {если пользователь ввел "5", то редактируем вес}

writeln('Старое значение поля "Вес" - ', u.ves);

write('Введите новое значение: ');

readln(n);

u.ves := n;

seek(f,k);

write(f,u);

next := false;

end;

6: begin {если пользователь ввел "6", то редактируем рост}

writeln('Старое значение поля "Рост" - ', u.rost);

write('Введите новое значение: ');

readln(n);

u.rost := n;

seek(f,k);

write(f,u);

next := false;

end;

0: next := true;{если пользователь ввел "0", то устанавливем признак того, что нужно перейти на следующую запись в файле}

end;{case i of}

end; {if ord(c) = 13 then}

if next then inc(k); {если установлен признак перехода, то увеличиваем значение счетчика}

end; {while k <= filesize(f)}

writeln('Вся база данных просмотрена, для возврата в меню нажмите любую клавишу'); {выводим информацию на экран}

repeat until keypressed; {ждем, пока не нажата какая-нибудь клавиша}

close(f);

end;

procedure del; {процедура удаления записи}

var u: pupil;

i, k: integer;

next: boolean;

c: char;

s: string;

begin

reset(f); {открываем файл для чтения}

k := 0; {устанавливаем начальное значение счетчика}

while k < filesize(f) do {выполняем пока счетчик меньше количества записей в файле}

begin

seek(f,k); {ищем запись с номером, совпадающим со счетчиком}

clrscr; {очищаем экран}

writeln('---Удаление записи---');

writeln('Фамилия':15, 'Имя':15, 'Пол':10, 'Год рождения':17, 'Вес':6, 'Рост':6);{выводим заголовки для полей записи}

read(f, u); {считываем запись из файла}

if u.pol then s := 'Мужской' else s := 'Женский'; {переводим логическое обозачение пола в строку}

writeln(u.fam:15, u.name:15, s:10, u.data:17, u.ves:6, u.rost:6); {выводим данные из записи}

writeln;

writeln('Enter - удаление текущей записи, Esc - выход в меню');

writeln('любая другая клавиша - переход к следующей записи');

repeat until keypressed; {ждем, пока не нажата какая-нибудь клавиша}

c := readkey;

if ord(c) = 27 then exit; {если нажата клавиша ESC, то выходим из процедуры}

next := true; {устанавливем признак того, что нужно перейти на следующую запись в файле}

if ord(c) = 13 then {если нажата клавиша Enter, то выполняем следующее}

begin

for i := k to filesize(f) - 2 do {от текущей записи до предпоследней записи файла выполняем}

begin

seek(f, i+1); {ищем следующую за текущей запись в файле}

read(f, u); {считываем найденную запись}

seek(f, i); {ищем текущую запись}

write(f, u); {записываем на её место считанную ранее последующую запись}

end;

if k = filesize(f) - 1 then clrscr; {если значение счетчика равно последней записи, то очищаем экран}

seek(f, filesize(f) - 1); {ищем последнюю запись в файле}

truncate(f); {отсекаем часть файла, начиная с текущей записи}

next := false; {устанавливаем признак того, что на следующую запись переходить не нужно}

end; {if ord(c) = 13}

if next then inc(k); {если установлен признак перехода, то увеличиваем значение счетчика}

end; {while k < filesize(f) do}

writeln('Вся база данных просмотрена, для возврата в меню нажмите любую клавишу');

repeat until keypressed;{ждем, пока не нажата какая-нибудь клавиша}

close(f);

end;

procedure sort; {процедура сортировки файла}

var u1, u2: pupil;

i, j, sort_type, p1, p2: integer;

s: string;

c: char;

begin

clrscr; {очищаем экран}

reset(f);{открываем файл для чтения}

writeln('---Сортировка данных---');

writeln('Выберите критерий сортировки');{выводим информацию о выборе критерия сортировки}

writeln('1 - сортировка по росту');

writeln('2 - сортировка по весу');

readln(sort_type);{считываем выбор пользователя}

for j := 1 to filesize(f) do {начинаем пузырьковую сортировку}

for i := 0 to filesize(f) - 2 do {количество повторений цикла на 1 меньше размера файла}

begin

seek(f, i); {ищем i-ю запись в файле}

read(f, u1); {считываем найденную запись из файла}

seek(f, i + 1); {ищем следующую за i-й запись в файле}

read(f, u2); {считываем найденную запись из файла}

if sort_type = 1 then {в зависимости от выбранного критерия сортировки устанавливаем значения переменных, которые будем сравнивать}

begin

p1 := u1.rost; {выбрана сортировка по росту, устанавливаем в переменные значения из поля рост}

p2 := u2.rost;

end

else

begin

p1 := u1.ves; {выбрана сортировка по весу, устанавливаем в переменные значения из поля вес}

p2 := u2.ves;

end;

if p1 > p2 then {сравниваем между собой значения переменных по которым идет сортировка. в случае, если первое больше второго, то меняем местами записи в файле}

begin

seek(f, i + 1);

write(f, u1);

seek(f, i);

write(f, u2);

end;

end;

clrscr; {очищаем экран}

writeln('---Список учеников, занесенных в базу данных---');

if sort_type = 1 then writeln('сортировка по росту') else writeln('сортировка по весу'); {в зависимости от выбранного вида сортировки выводим заголовок}

writeln('Фамилия':15, 'Имя':15, 'Пол':10, 'Год рождения':17, 'Вес':6, 'Рост':6);{выводим заголовки для полей записи}

for i := 0 to filesize(f) - 1 do {повторяем цикл столько раз, сколько записей содержится в файле}

begin

seek(f, i); {ищем i-ю запись в файле}

read(f, u1);{считываем найденную запись из файла}

if u1.pol then s := 'Мужской' else s := 'Женский'; {переводим логическое обозачение пола в строку}

writeln(u1.fam:15, u1.name:15, s:10, u1.data:17, u1.ves:6, u1.rost:6);{выводим данные из записи}

end;

writeln('Для выхода в главное меню нажмите любую клавишу');

repeat until keypressed;{ждем, пока не нажата какая-нибудь клавиша}

c := readkey;

close(f);

end;

begin

clrscr; {очищаем экран}

assign(f, 'data.txt'); {связываем имя файла данных с файловой переменной}

knc := false; {устанавливаем признак окончания программы в ложное значение}

repeat {повторяем, пока признак окончания программы не станет истинным}

writeln('---База данных "Ученики"---'); {выводим наименование программы и меню}

writeln('Выберите действия:');

writeln('1 - Добавление данных в базу');

writeln('2 - Редактирование данных');

writeln('3 - Удаление записей');

writeln('4 - Сортировка');

writeln('0 - Завершение работы');

write('Ваш выбор: ');

readln(v); {считываем выбор пользователя}

case v of {в зависимости от выбора пользователя выполняем}

1: add; {если пользователь ввел "1", то вызываем процедуру добавления записи}

2: edit; {если пользователь ввел "2", то вызываем процедуру редактирования записи}

3: del; {если пользователь ввел "3", то вызываем процедуру удаления записи}

4: sort; {если пользователь ввел "4", то вызываем процедуру сортировки файла} 0: knc := true; {если пользователь ввел "0", то устанавливаем признак окончания программы в значение истина}

end;

clrscr;{очищаем экран}

until knc;

end.

 


заключение

 

В представленном программном документе, в разделе «Назначение программы» указаны сведения о назначении программы и информация, достаточная для понимания функций программы и ее эксплуатации.

В разделе «Условия выполнения программы» указаны условия, необходимые для выполнения программы (минимальный состав аппаратных и программных средств и т.п.).

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

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

Документация подготовлена согласно ГОСТ 7.32-2001 «Система стандартов по информации, библиотечному и издательскому делу. Отчет о научно-исследовательской работе. Структура и правила оформления», ГОСТ ЕСПД 19.402-78 «Описание программы».

 

 



2019-12-29 167 Обсуждений (0)
Текст программы «Учебная база данных» на исходном языке 0.00 из 5.00 0 оценок









Обсуждение в статье: Текст программы «Учебная база данных» на исходном языке

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (167)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)