Программирование на языках высокого уровня "Стипендия"

 

               Министерство образования российской федерации

 

       Рязанский  Государственный Радиотехнический  Университет 

 

              Кафедра вычислительной и прикладной математики

 

 

 

 

 

 

                                   Пояснительная записка

 

                                  к курсовой работе по курсу

 

                    «Программирование на языках  высокого уровня»

 

                                                 на тему

 

                                               «СТИПЕНДИЯ»

 

 

 

 

 

 

 

Выполнил: студент группы 040

Варенов А.А.

 

                                                          Проверила: зам.зав.каф.ВПМ,кандидат

  технических наук,доцент

Парфилова Н. И.

 

 

 

 

 

 

Рязань 2011

 

 

 

 

 

                                                            ОГЛАВЛЕНИЕ

                                                                  ВВЕДЕНИЕ.

 

Современная вычислительная техника позволяет решать большое количество различных задач. Пожалуй, наиболее важным применением ЭВМ стало хранение информации. Удобные и разнообразные  средства для этой цели предоставляют технологии баз данных и информационно-справочных систем. Целью  данной курсовой работы является приобретение опыта алгоритмизации, конструирования, практической реализации программ и широкого применения ЭВМ, на примере программирования информационно-справочной системы. В качестве языка программирования  выбран язык TURBO PASCAL, изучаемый на занятиях по дисциплине “Программирование на языках высокого уровня”.       

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

АНАЛИЗ И МАТЕМАТИЧЕСКАЯ ПОСТАНОВКА ЗАДАЧИ.

 

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

  •      Рассмотрим, каким образом программа может быть построена с математической (логической) точки зрения. Для этого определимся с теми действиями, которые должна будет выполнять программа:

  •      1. Ввод пароля.

2. Выбор пользователем  действия, совершаемого над БД.

3. Реализация выбранного  действия в зависимости от  введенного пароля.

4.Если не выбран  пункт выхода из программы,  то осуществляется переход к  пункту 2.

     До первого пункта  программа выводит заставку.

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

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

- просмотр БД

- просмотр информации  о стипендии

- поиск своей стипендии

При этом необходимо исключить  возможность изменения данных БД.

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

- добавить запись

- удалить запись

- сортировать записи  по определенному признаку

-распечатать нужную таблицу

Войдя как администратор, мы должны получить доступ ко всем пунктам  меню, т.е. должны иметь возможность  не только просматривать, искать информацию, осуществлять ведение БД, но и выполнять  основные функции по работе с БД, а именно её создание и удаление. Поэтому необходимо добавить следующие пункты меню:

- создание БД

- удаление БД

- удаление записи

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

  Поподробнее рассмотрим  некоторые  пункты меню.

 

Создание БД.

Программа должна выполнять следующие  действия:

1. Запрашивать название всех  БД, для которой создается БД, проверять его с именами уже существующих.

2. Запрашивать данные которые присуще данной таблицы, в зависимости от ее назначения (студенты, стипендия)

3. Записывать данные в БД.

  1. Если не был выбран пункт выхода в меню, то перейти в пункт 2 – продолжить ввод.

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

 

Просмотр БД.

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

  1. Запрашивает имя таблицы, БД которой должна быть просмотрена.
  2. Выводит записи/строки на экран:

3. Пользователь заканчивает просмотр  после нажатия клавиши Enter.

4. Если не выбран пункт возвращения  в систему меню, то продолжаем  просмотр, перейдя в пункт 1.

Если запрашиваемой БД не существует, то пользователю выводится

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

 

     Добавление строки/записи  в БД.

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

  1. Запрашивает уникальное имя БД, в которую должна быть добавлена строка/запись.
  2. Открывает  файл БД, и записывает строку в конец файла.
  3. Если не выбран пункт продолжении добавления строки, то выходим в систему меню.

     

      Удаление строки/записи  из БД.

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

1. Запрашивает уникальное имя  БД, из которой должна быть  удалена строка/запись.

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

3. Пользователь вводит номер, строку с которым он хочет удалить.

  1. Программа находит нужную строку.
  2. Программа удаляет строку.
  3. Если не был выбран пункт окончания удаления строк, то перейти в пункт 2.
  4. Если не выбран пункт выхода в меню, то перейти в пункт 1.

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

 

Удаление БД.

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

  1. Запрашивает уникальное имя БД, которая будет удалена.
  2. Пользователь подтверждение удаления выбранной БД.
  3. Удаление БД.
  4. Если не был выбран пункт выхода в меню, то перейти в пункт 1.

 

Сортировка по определенному  признаку.

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

1. Запрашивает уникальное  имени БД, строки которой необходимо отсортировать.

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

3. Сортировка строк.

4. Если не выбран  пункт возврата в меню, то продолжаем  сортировать строки других БД, переходя в пункт 1.

 Сортировка строк  может производится по двум направлениям: по алфавиту и против алфавита.

 

 

 

 

 

 

                КОНТРОЛЬ ХОДА ВЫПОЛНЕНИЯ РАБОТЫ.

 

Решение любой задачи с использованием ЭВМ состоит  из нескольких взаимосвязанных этапов.

 

 

№ п/п

Этапы решения задачи

Ориентированная трудоемкость, ч.

Реально затраченное  время, ч.

1

Изучение алгоритма

8

8

2

Разработка организации  данных

8

9

3

Составление схемы

12

16

4

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

8

28

5

Устранение синтаксических ошибок

4

5

6

Тестирование и отладка

24

30

7

Подготовка документации

8

12

 

Итого:

64

98


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

РАЗРАБОТКА СХЕМЫ АЛГОРИТМА  И ЕЁ ОПИСАНИЕ.

 

 

 

 

 

 

 

 

 

 

 

 

  • ОПИСАНИЕ ПРОЦЕДУР И ФУНКЦИЙ.

 

Модуль GLMENU .

 

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

  • scr -  процедура очищения экрана и закрашивания его цветом фона.
  • fon – процедура отрисовки выделяемых объектов.
  • Cursor – процедура установки видимости (невидимости) курсора. Если flag=true, то курсор видим,  если flag=false, то невидим.
  • Activ– процедура закрашивания ограниченной области цветом фона.
  • Message – процедура рисования окна стандартного размера для выдачи сообщения пользователю.

 

Модуль Zastav .

 

 Этот модуль реализует  вывод заставки и осуществляет  ввод пароля, в соответствии с  которым определяется категория  доступа вошедшего пользователя.

  • READPWD– процедура ввода пароля и отображения на экране ‘*’ вместо вводимых символов. В процедуре предусмотрена возможность отменить вход в систему во время ввода пароля и выйти из программы, нажав комбинацию клавиш Esc+Enter. Так же в процедуре есть ограничение по вводу символов (пароль может содержать не более 8 символов).
  • Zastav – процедура рисования заставки программы.

 

Модуль COZDAN.

 

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

    • Tablic1-процедура для создания таблицы о всех студентах университета.
    • Tablic2-процедура для создания таблицы о стипендии
    • DELTABLIC-удаление БД

 

 

 

 

 

 

Модуль SHAP.

 

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

      • shap1-процедура вывода шапки таблицы о студентах.
      • Shap2-процедура вывода шапки таблицы о стипендии.

 

 

Модуль PROC.

 

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

  • ADDStr-добавление строки.
  • Сreate –изменение строки
  • DelStr- удаление строки.
  • Print- процедура распечатания таблиц.
  • Search-поиск по определенному ключу
  • SORT-сортировка по определенному признаку.

              КРАТКАЯ АННОТАЦИЯ ПРОГРАММЫ.

 

Возможности программы:

  • Создание информационно-справочных таблиц
  • Просмотр информационно-спровочных таблиц
  • Добавление/удаление строки из базы данных
  • Удаление базы данных
  • Сортировка по всем критериям по возрастанию/убывании
  • Редактирование информации
  • Добавление/удаление  информации
  • Распечатка любой интересующей таблицы

 

 

Достоинства программы:

  • Вход в ситему осуществляется строго по паролю, причем количесво попыток его ввода ограничено.
  • Интуитивно понятный графический интрефейс.
  • Вспомогательные подсказки по использованию программы, появляющиеся на каждом этапе выполнения её действий.
  • Защита от неправильного или недопустимого ввода данных.
  • Система интервью, позволяющая пользователю удобно переходить  от одного действия к другому, не выходя из режима.
  • Разграничение прав доступа на три категории.
  • Уникальность названий создаваемых файлов, по которым формируется представление об их содержании.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Системные требования

  • Операционная система: Dos 6.0/ Windows 98/00/XP
  • Процессор: Pentium II 300 МГц и выше
  • ОЗУ: 1 Мб
  • Видеоадаптер: VGA
  • Монитор с поддержкой графического режима 16 цветов с разрешением 640х480 точек
  • 500 Кбайт свободного места на жёстком диске
  • Наличие START.BAT файла запуска.
  • Так же наличие некоторых файлов с расширением TPU

ИНСТРУКЦИЯ ПО ИСПОЛЬЗОВАНИЮ РАЗРАБОТАННОЙ ПРОГРАММЫ.

 

Файл разработанной  программы называется start.bat. Программа запускается под управлением операционной системы MS-DOS и требует, загруженного до нее драйвера русской раскладки клавиатуры.

Для компиляции исходного  кода в программу помимо файлов shap.pas, tablic.pas, add.pas, glmeny.pas, ps.pas, требуются также объектные файлы egavga.obj и tripfont.obj, содержащие объектный эквивалент бинарного файла egavga.bgi и файла векторного шрифта trip.chr. Кроме того для просмотра содержания имеющихся информационно-справочных таблиц необходимо наличие файлов соответствующих БД.

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

Для запуска программы необходимо запустить START.BAT. После запуска программы « СТИПЕНДИЯ » на экране появится заставка с названием программы. Заставка отключается при нажатии клавиши Enter.  После чего следует пройти процедуру входа в систему. Для этого необходимо набрать пароль в окне «Введите пароль». Пароль необходимо вводить осторожно, в случае неверного ввода программа может закрыться. Если вы являетесь бухгалтером, то необходимо ввести «123456», если вы являетесь гостем, то пароль не нужен, если вы являетесь администратором, то необходимо ввести «324657». При трехкратном неправильном вводе пароля, происходит автоматический выход из программы. При вводе неправильного пароля система информирует пользователя об ошибке и сообщает количество оставшихся попыток.

После правильного ввода пароля осуществляется вход в систему и на экран выводится главное меню со следующими пунктами:

 

  1. Файл БД. Данный пункт содержит основные действие с файлом информационно-справочных таблиц. Содержит следующие подпункты:
  2. Создание. Этот пункт предполагает создание файла БД и его заполнение. Доступен только для администратора.
  3. Просмотр БД. Доступен всем пользователям.
  4. Удаление БД. Данный подпункт доступен только для администратора.
  5. Ведение БД. Доступ к этому пункту меню имеют только администратор  и модератор. Содержание данного пункта меню:
  6. Добавить строку.
  7. Удалить строку.
  8. Сортировать по алфавиту.
  9. Сортировать против алфавита.
  10. Студенты. В этом пункте содержатся действия с файлами, содержащими информацию о студентах, а именно:
  11. Создать ИНФО. Этот подпункт доступен только для администратора и бухгалтера.
  12. Просмотреть ИНФО. Общедоступный подпункт меню.
  13. Удалить ИНФО. Этот подпункт доступен только для администратора и бухгалтера.
  14. Стипендия. В этом пункте меню содержатся все действия с файлами, содержащими дополнительную информацию о студентах, а именно:
  15. Создать ИНФО. Эта процедура доступна только для администратора.
  16. Просмотреть ИНФО.
  17. Добавить строку. Доступ к данному действию имеют администратор и  бухгалтера.
  18. Удалить строку. Доступ к данному действию также имеют администратор и бухгалтер.
  19. Распечатка. Этот пункт меню доступен всем пользователям,
  20. меню позволяет закончить работу с программой после подтверждения выхода.

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

Перемещение между пунктами подменю осуществляется по средствам нажатия клавиш «←» - влево и «→» - вправо. Перемещение между пунктами  главного меню осуществляется с помощью клавиш: «↑» - вверх и «↓» - вниз. Выбор нужного пункта меню осуществляется клавишей «ENTER». Выход из пункта меню и из программы осуществляет клавиша «ESC». Для удобства внизу экрана располагаются подсказки пользователю о функциональных клавишах.

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

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

 

 

РЕЗУЛЬТАТЫ ОТЛАДКИ.

 

В процессе написания и отладки программы появлялись следующие ошибки:

 

 

  • Unknoun identifier (Неизвестный идентификатор)
  • Type mismatch (Несоответствие типов)
  • “;” expected (Нужно указать «;»)
  • File access denied (Нет доступа к файлу)
  • File not found (Файл не найден)
  • Path not found (Путь не найден)
  • Прерывание программы при попытке открыть файл с пустым именем. Ошибка была устранена путем добавления условия ввода информации, длина которой должна содержать по меньшей мере хотя бы один значащий символ. Кроме того была предусмотрена отмена ввода информации и возможность выхода из режима.
  • Возникала проблема вывода баз данных, целиком не помещающихся на экране. В результате модернизации программы эта проблема была решена.
  • Неправильно работала процедура поиска строк при вводе недопустимых критериев поиска и при неполном наборе введенных данных. Ошибка была устранена введением ограничением на вводимую информацию, т.е необходимости её соответствия конкретным критериям поиска.
  • Переход курсора выделения в главном меню на несуществующий пункт меню. При доработке программы ошибка была устранена.
  • Неправильно работала подсветка выбранного пункта меню. После корректировки ошибка была устранена.

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

РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ ПРОГРАММЫ.

1.Главная заставка

 

 

 

 

                                                               2.Заставка с указание названия и программиста

 

 

 

3.Ввод пароля

 

      

                                                                4.Введение пароля скрытого звездочками

 

 

 

 

 

                                                               5.При случае правильного ввода пароля

 

 

 

 

                                                   6.При случае неверного ввода пароля

 

 

 

 

 

 

 

                                                                              7.Главное меню

 

 

 

 

                                                                         8.БД студенты

 

 

 

 

 

 

 

 

                                                                             

 

 

 

 

 

 

                                                                     9.Создание БД

 

 

 

 

 

 

 

                                                                           10.Создание БД Студенты

 

 

 

 

                                                   ТЕКСТ ПРОГРАММЫ

 

 

{****************************************************************************}

{*    Основная программа, которая содержит модули, нужные для работы программы     *}

{* необходимые модули :crt,graph,zastav  ,glmenu,                            *}

{*   parol,cozdan,shap,addStr,delStr,editStr,help,poiskovik,printer        *}

{*        n-переменная для работы с основным меню                                                                *}

{*        k-переменная для работы с подменю                                                                           *}

{*         pol-переменная для работы с рангом вошедшего                                                       *}

{*           x,i- переменные для работы в создании интерфейса                                                *}

{****************************************************************************}

 

Program Kyrs;

  Uses crt,graph,ps,glmenu,parol,cozdan,hat,addStr,delStr,editStr,zastavka,help,poiskovik,printer;

  Const MaxSize=8;

  Var

    s:string;

    key:char;

    n,k,x,i,pol:integer;

  Begin

   CursorOff;

   zastavka_crt;

   textbackground(11);

   InputParol(pol);

   if pol=1 then begin

   n:=1;

   while n<>5 do

     begin

       vbr(n);

       k:=1;

       if n=1

       then

         while k<>7 do

           begin

             VbrPM1(k);

             if (k=1)

             then

                 AddString(1);

             if (k=2)

             then

               EditString(1);

             if (k=3)

             then

               DelString(1);

             if (k=6)

             then

               Pechat;

             If (k=4)

             then

               p_fam;

             If (k=5)

             then Search;

           end;

       if n=2

       then

         while k<>7 do

           begin

             VbrPM2(k);

             if (k=1)

             then

                 AddString(2);

             if (k=2)

             then

               EditString(2);

             if (k=3)

             then

               DelString(2);

             if (k=6)

             then

                Pechat;

             If (k=4)

             then

                 p_fmo;

             if (k=5)

             then

                Search2;

           end;

       if n=3

       then

          AddBD;

       if n=4 then del;

   end;

   end;

   if pol=2 then begin

   n:=1;

   while n<>5 do

     begin

       vbr(n);

       k:=1;

       if n=1

       then

         while k<>7 do

           begin

             VbrPM1(k);

             if (k=1)

             then

                 AddString(1);

             if (k=2)

             then

               EditString(1);

             if (k=3)

             then

               Delstring(1);

             if (k=6)

             then

               Pechat;

             If (k=4)

             then

               p_fam;

             If (k=5)

             then  Search;

           end;

       if n=2

       then

         while k<>7 do

           begin

             VbrPM2(k);

             if (k=1)

             then

                 AddString(2);

             if (k=2)

             then

               EditString(2);

             if (k=3)

             then

               Delstring(2);

             if (k=6)

             then

                Pechat;

             If (k=4)

             then

                 p_fmo;

             if (k=5)

             then

               Search2;

           end;

       if n=3

       then

          SMS;

       if n=4

       then

          sms;

     end;

 

    end;

   if pol=3 then begin

  n:=1;

   while n<>5 do

     begin

       vbr(n);

       k:=1;

       if n=1

       THEN

          net;

       if n=2

       then

         while k<>7 do

           begin

             VbrPM2(k);

             if (k=1)

             then

                SMS;

             if (k=2)

             then

                SMS;

             if (k=3)

             then

               SMS;

             if (k=6)

             then

                Pechat;

             If (k=4)

             then

                 p_fmo;

             if (k=5)

             then

             Search2;

           end;

       if n=3

       then

          SMS;

       if n=4

       then

          SMS;

       end;

     end;

  End.

 

12

 

{****************************************************************************}

{*  Модуль  ZASTAV     реализует вывод начальной заставки в графическом режиме    *}

{*    Содержит процедуру ZASTAV                                             *}

{*    сh-переменная считывания нажатой клавиши                             *}

{*     не имеет входных и выходных параметров                                                                     *}

{****************************************************************************}

 

unit  zastav;{модуль заставка,работает с графическим режимом}

interface

  uses crt,graph;{граф-стандартный  модуль для графического режима}

  var a,b:integer;{переменные,используемые  в циклах}

  Procedure Zastava;{процедура  ,для рисования заставки}

 implementation

procedure zastava;

   var i:integer;

       col:boolean;

   begin

     SetBKcolor(14);{закраска фона желтым цветом}

     setcolor(1);{задание синего цвета для текста }

     SetTextStyle(7,0,9);{определение  стиля шрифта,расположение,размера  текста}

     outtextxy(5,20,'Стипендия');{вывод текста на определенные координаты}

     setcolor(2);{зеленый текст}

     {рисование поверхности  банкомата}

     for a:=200 to 420  do

      for b:=200 to 500   do

        line(a,b,a,b);{прорисовка линии с заданными координатами}

     bar(250,250,360,380);{прорисовка  прямоугольников с заданными размерами}

     bar(270,420,330,460);

     {прорисовка клавиатуры  банкомата}

     SeTCOLOR(1);{синий  текст}

     SeTTeXTSTYLe(1,0,1);

     OUTTeXTXY(275,420,'12345');

     OUTTeXTXY(275,440,'67890');

     OUTTeXTXY(260,210,'Банкомат');

     {анимация  падения купюр}

     SeTCOLOR(2);

     SettextStyle(1,0,1);

     outtextxy(260,260,'$   $   $   $  ');

     DeLAY(500);{задержка времени}

     outtextxy(260,280,'$   $   $   $  ');

     DeLAY(500);

     outtextxy(260,300,'$   $   $   $  ');

     DeLAY(500);

     outtextxy(260,320,'$   $   $   $  ');

     DeLAY(500);

     outtextxy(260,340,'$   $   $   $  ');

     DeLAY(500);

     outtextxy(260,360,'$   $   $   $  ');

     DeLAY(500);

     outtextxy(260,380,'$   $   $  $  ');

     DeLAY(500);

     outtextxy(260,400,'$   $   $   $  ');

     {анимация смены цвета надписи стипендия}

     repeat

       i:=random(256);{случайный  выбор цвета}

       setcolor(i);

       SetTextStyle(7,0,9);

       outtextxy(5,20,'Стипендия');

Программирование на языках высокого уровня "Стипендия"