Автор: Пользователь скрыл имя, 20 Января 2012 в 20:42, курсовая работа
Модули представляют собой инструмент для разработки библиотек прикладных программ и мощное средство модельного программирования.
Задача курсового проекта: разработать программу, представляющую собой информационно-справочную систему на языке программирования Turbo Pascal.
Введение 3
1 Двусвязные списки и основные операции над ними 4
1.1 Двунаправленные списки 4
1.2 Циклические списки 4
1.3 Свойства двунаправленных списков: 7
2 Разработка информационно-поисковой системы «Зачисление Абитуриентов» на языке программирования Паскаль 9
2.1 Постановка задачи 9
2.2 Описание алгоритма 11
2.3 Практическая часть выполнения задачи «Зачисление абитуриентов» на языке программирования 14
2.4 Результат работы программы 30
Заключение 34
Cписок используемых источников 35
Приложения 36
Данная задача содержит следующую информацию:
-
фамилия, имя, отчество
-место прописки учащегося (тип строковый);
-набранные баллы на вступительных экзаменах (тип вещественный);
-наличие льгот (тип строковый);
-готовность учиться на договорной основе (тип строковый).
С данной задачей можно выполнять следующие действия:
-ввод информации;
-вывод информации;
-сортировка (по фамилии имени отчества (ФИО), по прописке, по набранным баллам на вступительных экзаменах, по наличию льгот, по готовности учиться на договорной основе);
-выборка данных по указанному полю;
-удаление строки;
-добавление строки;
-подсчет количества набранных баллов на вступительных экзаменах;
-корректировка информации.
Данные водятся с клавиатуры, при этом пользователь может использовать не только кириллицу, но и другие языки ввода.
Информация, заносимая пользователем, хранится в типизированном файле в виде таблицы. При этом пользователь может записывать данные в файл, хранить, использовать и распечатывать данные.
Для того, чтобы было легче работать с базой задача разделена на 8 процедур:
Для того, чтобы работать с меню и выполнять определенные действия необходимо нажимать соответствующие клавиши.
При запуске программы запускается рекурсивная процедура меню, которая предлагает пользователю создать новою базу.
В процедуре ввода пользователь вводит информацию, которая необходима для заполнения. Вначале запрашивается количество записей, затем для каждой записи пользователь вводит: ФИО, прописку, набранные баллы на вступительных экзаменах (1-ый экзамен, 2-ой экзамен, средний балл аттестата), наличие льгот, готовность учиться на договорной основе. Блок схема процедуры ввода прилагается (приложение 1).
В процедуре вывода программа выводит созданную нами базу данных в виде таблицы, заполненной той информация, которую вводил пользователь. Блок схема процедуры вывода прилагается (приложение 2).
Процедура сортировки предлагает пользователю сделать выбор поля, по которому необходимо упорядочить информацию. Для того, чтобы отсортировать данные, нужно выбрать по какому полю сортировать, затем выбрать способ сортировки по возрастанию или по убыванию.
Самым простым методом сортировки является так называемый метод "пузырька"[5,c.623]. Чтобы уяснить его идею, представьте , что массив (таблица) расположен вертикально. Элементы с большим значением всплывают вверх наподобие больших пузырьков. При первом проходе вдоль массива, начиная проход "снизу", берется первый элемент и поочередно сравнивается с последующими. При этом:
В результате наибольший элемент оказывается в самом верху массива.
Во время второго прохода вдоль массива находится второй по величине элемент, который помещается под элементом, найденным при первом проходе, т.е на вторую сверху позицию, и т.д.
Процедура поиска позволяет вывести записи по указанным критериям. Пользователю предлагается выбор:
ФИО, место прописки, набранные
баллы на вступительных
В процедуре удаления [2,c.395] пользователь может ввести номер строки, которую необходимо удалить, но если же такой строки нет, то будет выведено сообщение такой строки нет, введите другую.
В процедуре добавления [3,c. 256] пользователю предлагается дополнить набор данных новыми записями. Необходимо заполнить все поля: Фио, место прописки, набранные баллы, наличие льгот, готовность учиться на договорной основе. Блок схема процедуры добавления прилагается (приложение 3).
В
процедуре корректировка
В процедуре подсчета количества набранных баллов на вступительных экзаменах программой предлагается ввести определенное количество баллов, которое может быть набрано абитуриентом, выводится информация о тех абитуриентах, у которых набранные баллы больше, меньше либо равны нормы, затем подсчитываются количество записей.
uses crt;
type abiturienti=record
familia:string[30];
mesto:string;
ball:real;
lgoti:string;
osnova:string;
end;
var
qwerty:abiturienti;
abiturient,abit,a:array[
f:file of abiturienti;
i,j,k,p,m,w,s,c,b,n,t,z:
fio:string;
s1,s2,s3:real;
qwe,lam:integer;
{Процедура ввода}
procedure vvod;
begin
clrscr;
textcolor(10);
Writeln
('Введите количество учащихся'
Readln (n);
assign(f,fio);
rewrite(f);
for i:=1 to n do
with abiturient[i] do
begin
writeln('Введите ФИО');
readln(familia);
writeln('Введите прописку');
readln(mesto);
writeln('Введите
набранные баллы на
writeln('Введите балл по первому экзамену');
readln(s1);
writeln('Введите балл по второму экзамену');
readln(s2);
writeln('Введите средний балл атестата');
readln(s3);
ball:=s1+s2+s3;
writeln('Есть ли наличие льгот?(есть/нет)');
Writeln('1 - Есть');
Writeln('2 - Нет');
readln(qwe);
case qwe of
1:begin lgoti:='есть' end;
2:begin lgoti:='нет' end;
end;
writeln('Готов
учиться на договорной основе?(
Writeln('1 - Готов');
Writeln('2 - Не готов');
readln(qwe);
case qwe of
1:begin osnova:='готов' end;
2:begin osnova:='не готов' end;
end;
clrscr;
write(f,abiturient[i]);
end;
close(f);
end;
{Процедура вывода}
procedure vivod;
begin
clrscr;
assign(f,fio);
reset(f);
textcolor(12);
writeln('Зачисление абитуриентов');
textcolor(14);
writeln('|_______________
writeln('|',' ФИО | Место прописки | Баллы | Льготы | Основа |');
writeln('|_______________
lam:=1;
While not eof (f) do
with abiturient[i] do
begin
read(f,abiturient[i]);
write('|',lam,')',
writeln(ball:4:1,'|',
lam:=lam+1;
i:=i+1;
end;
writeln('|_______________
close(f);
end;
{Процедура сортировки}
procedure sortirovka;
var d:integer;
begin
assign(f,fio);
textcolor(10);
Writeln ('Выберите сортировку');
Writeln ('1 - ФИО');
Writeln ('2 - Прописка');
Writeln ('3 - Набранные баллы');
Writeln ('4 - Наличие льгот');
Writeln ('5 - Договорная основа');
Readln(d);
writeln('1 - по возрастанию, 2 - по убыванию');
readln(t);
reset(f);
for i:=1 to n do
read(f,abiturient[i]);
close(f);
case d of
1: begin
if t=1 then
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if
abiturient[i].familia>
begin
qwerty:=abiturient[i];
abiturient[i]:=
abiturient[j]:=qwerty;
end;
rewrite(f);
for i:=1 to n do
write(f,abiturient[i]);
close(f);
vivod;
end;
if t=2 then
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if
abiturient[i].familia<
begin
qwerty:=abiturient[i];
abiturient[i]:=
abiturient[j]:=qwerty;
end;
rewrite(f);
for i:=1 to n do
write(f,abiturient[i]);
close(f);
vivod;
end;
end;
2: begin if t=1 then
begin
for i:=1 to n-1 do
for j:=i+1 to n do