Разработка информационно-поисковой системы «Зачисление абитуриентов» на языке программирования Паскаль

Автор: Пользователь скрыл имя, 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

Работа содержит 1 файл

Теория по курсачу, Романюк М.Н., ПО-22.doc

— 244.50 Кб (Скачать)

     Данная  задача содержит следующую информацию:

     - фамилия, имя, отчество учащегося (тип строковый);

     -место прописки учащегося (тип строковый);

     -набранные баллы на вступительных экзаменах (тип вещественный);

     -наличие  льгот (тип строковый);

     -готовность учиться на договорной основе (тип строковый).

     С данной задачей можно выполнять  следующие действия:

     -ввод  информации;

     -вывод  информации;

     -сортировка (по фамилии имени отчества (ФИО), по прописке, по набранным баллам на вступительных экзаменах, по наличию льгот, по готовности учиться на договорной основе);

     -выборка  данных по указанному полю;

     -удаление  строки;

     -добавление строки;

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

     -корректировка  информации.

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

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

 

2.2 Описание алгоритма

     Для того, чтобы было  легче работать с базой задача разделена на 8 процедур:

  1. процедура ввода данных;
  2. процедура вывода данных;
  3. процедура поиска;
  4. процедура сортировки;
  5. процедура удаления;
  6. процедура добавления;
  7. процедура подсчета количества набранных баллов на вступительных экзаменах;
  8. процедура корректировки;
  9. процедура выхода.

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

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

     В процедуре ввода пользователь вводит информацию, которая необходима для  заполнения. Вначале запрашивается количество записей, затем для каждой записи пользователь вводит: ФИО, прописку, набранные баллы на вступительных экзаменах (1-ый экзамен, 2-ой экзамен, средний балл аттестата), наличие льгот, готовность учиться на договорной основе. Блок схема процедуры ввода прилагается (приложение 1).

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

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

     Самым простым методом сортировки является так называемый метод "пузырька"[5,c.623]. Чтобы уяснить его идею, представьте , что массив (таблица) расположен вертикально. Элементы с большим значением всплывают вверх наподобие больших пузырьков. При первом проходе вдоль массива, начиная проход "снизу", берется первый элемент и поочередно сравнивается с последующими. При этом:

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

В результате наибольший элемент оказывается в самом верху массива.

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

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

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

     В процедуре удаления [2,c.395] пользователь может ввести номер строки, которую необходимо удалить, но если же такой строки нет, то будет выведено сообщение такой строки нет, введите другую.

     В процедуре добавления [3,c. 256] пользователю предлагается дополнить набор данных новыми записями. Необходимо заполнить все поля: Фио, место прописки, набранные баллы, наличие льгот, готовность учиться на договорной основе.  Блок схема процедуры добавления прилагается (приложение 3).

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

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

 

      2.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[1..25] of abiturienti;

     f:file  of abiturienti;

     i,j,k,p,m,w,s,c,b,n,t,z:integer;

     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,')',familia:15,'|',mesto:16,'|   ');

     writeln(ball:4:1,'|',lgoti:8,'|',osnova:8,'|');

     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>abiturient[j].familia then

     begin

     qwerty:=abiturient[i];

     abiturient[i]:=abiturient[j];

     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<abiturient[j].familia then

     begin

     qwerty:=abiturient[i];

     abiturient[i]:=abiturient[j];

     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

Информация о работе Разработка информационно-поисковой системы «Зачисление абитуриентов» на языке программирования Паскаль