Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
34
КУРСОВАЯ РАБОТА
НА ТЕМУ:
"Разработка программы с помощью языка программирования Delphi"
Цель работы: разработать программу проверки знаний для тестирования студентов по программированию с кодом на языке Delphi, для ввода и вывода данных использовать компоненты Delphi.
В первом разделе курсовой работы выполнен анализ технического задания, выделены функции, которыми должно обладать разрабатываемое приложение, а также сформулированы требования к нему, произведена постановка задачи на проектирование. Во втором разделе выполняется анализ задачи проектирования, анализируется вид исходных данных, в зависимости от чего проектируется визуальный интерфейс и приводится словесный алгоритм работы программы. В третьем разделе рассматриваются алгоритмы разработанных процедур и функций, а также приводятся их описания. К реализованной программе разработана инструкция пользователя, которая приведена в четвертом разделе.
программа алгоритм delphi знание студент тестирование
Данный курсовой проект был разработан в среде Delphi. Среди множества языков Pascal является наиболее универсальным и легко изучаемым языком. При этом его удобно использовать для создания сложных приложений, базами данных, приложения масштаба предприятия. Delphi так же прост в обучении, как и Visual Basic, но при этом средства языка программирования Pascal позволяет использовать все современные возможности объектно-ориентированного программирования.
Delphi это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.
Delphi прост и логичен. Основные конструкции языка четко выделяются в программе, что способствует хорошему восприятию написанного кода. Графический интерфейс Delphi отлично продуман, среда разработки предоставляет доступ только к тем участкам кода, с которыми необходимо работать, скрывая основную часть программы, которая создается автоматически самой разработкой.
Для выполнения данной курсовой работы необходимо разработать алгоритм решения поставленного задания, правильно указав последовательное выполнение соответствующих команд для получения необходимых результатов.
Цель работы заключается в том, чтобы правильно составить алгоритм поставленной задачи по разработке программы тестирования студентов по программированию, разработать и отладить программу, реализующую разработанный алгоритм.
1. Анализ технического задания и постановка задачи проектирования
Согласно заданию необходимо разработать программу проверки знаний для тестирования студентов по программированию, по окончании тестирования выводить оценку.
Для удобства анализа результатов и ответов будет полезно отслеживать каждый из ответов тестируемого и сохранять лог ответов в текстовый файл на жестком диске.
Дадим определение понятиям, которые используются в данной работе. Определим следующие понятия: строка, файл, массив, запись.
Тип STRING (строка) в «Borland Delphi» широко используется для обработки текстов. Он во многом похож на одномерный массив символов ARRAY [0..N] OF CHAR, однако, в отличие от последнего, количество символов в строкепеременной может меняться от 0 до N, где N максимальное количество символов в строке.
Под файлом понимается либо именованная область внешней памяти ПК (жесткого диска, гибкой дискеты, электронного «виртуального» диска), либо логическое устройство потенциальный источник или приемник информации.
Запись представляет собой совокупность компонент различных типов.
«Borland Delphi» может использовать объекты, содержащее множество однотипных элементов, которые называются массивами. Массив это формальное обледенение нескольких однотипных объектов (чисел, символов, строк и т.п.), рассматриваемое как единое целое. Для хранения содержимого типизированного файла и обработки удобно использовать массивы с элементами типа запись. Удобство массивов заключается в том, что можно обращаться к отдельному элементу массива по номеру. Дополнительное удобство привносят динамические массивы, отличительной особенностью которых является возможность динамического изменения размерности массива, то есть динамическое выделение или освобождение памяти под требуемое в данный момент количество элементов массива.
Поскольку данная программа является приложением Windows, то для ее реализации будем использовать стандартный подход при написании программ под Windows с использованием графического интерфейса. Так отдельно создадим форму с визуальными компонентами, для различных визуальных компонент сопоставляем процедуры обработчики. Далее, как только происходит событие на каком-то из визуальных компонент, (щелчок мыши, нажатие на кнопку или пункт меню), операционная система посылает приложению соответствующее сообщение, и запускается соответствующий обработчик именно для этого события. Тогда решение задачи можно разбить на 3 этапа:
На первом этапе целесообразно выполнить разработку интерфейса таким образом, чтобы в начале тестирования учащийся вводил своё имя и фамилию, а также задавал шифр группы. Затем учащийся приступает к тестированию. По окончании тестирования выводится итоговая оценка, которая равна максимальной, если все ответы были правильными. Если имеются ошибки, то должен выводится балл, пропорциональный количеству правильных ответов. Также должен вестись протокол ответов, вводимых тестируемым и потом записываться на жесткий диск.
Для корректности тестирования целесообразно предусмотреть механизм перемешивания вопросов, чтобы при различных запусках программы порядок следования вопросов изменялся.
При выполнении второго этапа следует использовать модульный принцип построения программы, то есть разбить программу на отдельные части, каждая из которых выполняет какую-то законченную задачу, либо ее малую часть. Роль таких частей будут выполнять процедуры и функции. Программы, состоящие из процедур и функций, называются модульными.
Процедуры и функции в свою очередь могут вызывать процедуры и функции более низкого уровня и так далее. Таким образом, каждая модульная программа имеет иерархическую структуру. Следует заметить, что обработчики событий от объектов экранных форм тоже реализуются как процедуры.
На третьем этапе при отладке приложения обязательно должна анализироваться правильность работы на исходных тестовых образцах. На этом этапе нужно проверить соответствие разработанной программы исходному заданию, а также проверить ее на отсутствие ошибок.
Подытожив все вышесказанное, можно сформулировать требования к разрабатываемому программному обеспечению и выполнить постановку задания на проектирование.
Программа должна быть реализована с графическим интерфейсом пользователя в среде Borland Delphi и должна выполнять следующие функции:
запрашивать фамилию, имя и группу учащегося;
выводить поочередно вопросы из базы;
принимать ответы учащегося;
анализировать правильность ответов и рассчитывать итоговый балл пропорционально количеству правильных ответов;
вести протоколирование ответов и записывать их в файле на жестком диске;
по окончании тестирования выводить правильную оценку;
предусмотреть перемешивание вопросов, чтобы при повторных запусках порядок следования вопросов был различным.
Последующие разделы будут посвящены решению поставленных задач и разработке приложения с вышеперечисленными функциями.
В предыдущем разделе было сказано, что процесс решения поставленной задачи разбивается на 3 этапа, первый из которых заключается в построении интерфейса с пользователем на основе экранных форм и визуальных объектов проектирования.
По сформулированной в предыдущем задании постановке должна иметься возможность авторизации тестируемого учащегося ввода его фамилии и группы. Для этого предусмотрим отдельную форму авторизации FormAvto. Для возможности ввода данных об учащемся поместим на форме поля ввода типа TEdit и соответствующие метки описания к ним. Список объектов экранной формы приведен в таблице 2.1
Таблица 2.1 Объекты экранной формы FormAvto
Имя |
Тип |
Назначение |
Label1 |
TLabel |
надпись «Задайте фамилию, инициалы и группу учащегося» |
Label2 |
TLabel |
надпись «Фамилия» |
Label3 |
TLabel |
надпись «Имя» |
Efam |
TEdit |
поле для вода фамилии учащегося |
EGroup |
TEdit |
поле для ввода группы учащегося |
BitBtnStart |
TBitBtn |
кнопка для начала теста с надписью «НАЧАТЬ» |
Для начала теста предусмотрена кнопка типа TBitBtn, который в отличие от обычных кнопок типа TButton позволяет задавать не только текст, но и изображение. В обработчике нажатия на эту кнопку должна выводиться форма с вопросами. Внешний вид спроектированной формы приведен на рисунке 2.1
Рисунок 2.1 Внешний вид формы FormAvto
Для вывода вопросов, ввода ответов пользователя предусмотрим отдельную форму FormTest. Список объектов, используемых в форме приведен в таблице 2.2, а внешний вид приведен на рисунке 2.2.
Таблица 2.2 Объекты экранной формы FormTest
Имя |
Тип |
Назначение |
Label1 |
TLabel |
надпись «Текущий вопрос» |
LbNom |
TLabel |
надпись, в которой будет выводиться номер текущего вопроса |
StaticText1 |
TStaticText |
поле, в котором будет выводиться очередной вопрос |
RGroup1 |
TRadioGroup |
поля для вывода вариантов ответов и их указания студентом |
BitBtn1 |
TBitBtn |
кнопка «Принять ответ» для анализа ответа и перехода к следующему вопросу |
BNewTest |
TButton |
кнопка для закрытия формы тестов и перехода на форму авторизации (для новой попытки тестирования) |
При построении формы предполагалось, что база вопросов будет построєна таким образом, чтобы ответ предполагал выбор только одного из перечисленных четырех вариантов ответов. То есть, база не должна содержать вопросов с множественным выбором, либо вариантов без правильного ответа. Также не должно быть вопросов, требующих ввода ответа в текстовом виде (например, ответ вычисленной формулы или правильное написание ключевого слова).
Рисунок 2.2 Внешний вид формы FormTest
Во избежание кратковременного завершения теста скроем системное меню окна, установив параметр формы FormTest. BorderIcons biSystemMenu равным false. Также в алгоритме следует предусмотреть, что в начале тестирования кнопка с надписью «Начать заново» должна быть невидимой, и должна появляться только после ответа на все вопросы и вывода итоговой оценки.
Анализируя все вышеизложенные предположения и разработанные формы, можем составить словесные алгоритмы приложения.
Анализируя требования к функциям разрабатываемого приложения под разработанные экранные формы и словесный алгоритм, можно выделить следующие программные модули:
Каждый из вышеприведенных модулей реализуем при помощи процедуры. Модуль 1 целесообразно запускать один раз при создании формы с тестами. Модуль 2 следует запускать каждый раз при начале нового теста, то есть при активизации формы с тестами. Модель 3 должен запускаться каждый раз при нажатии на кнопку «Принять ответ». Модули 4 должны быть обработчиками нажатий на кнопку «Начать» экранной формы авторизации и кнопку «Начать заново» экранной формы тестирования.
Составим алгоритм приложения, который представлен в приложении на рисунке A.1. На алгоритме приведены основные события экранных форм. В этом алгоритме:
Блок №4 реализован процедурой FormAvto, BitBtnStartClick,
блок №5 процедурой FormTest. FormCreate,
блок №6 процедурой FormTest. FormActivate,
блок №7 процедурой FormTest BNewTestClick,
блок №8 реализован процедурой FormTest. BitBtn1Click.
Детальное описание разработанной программы, алгоритмов и их программной реализации приведено в последующих разделах.
В программе используется переменная FormAvto, которая представляет собой экранную форму. Объекты экранной формы были приведены в таблице 2.1. У формы имеется лишь один обработчик нажатия на кнопку BitBtnStart. Текст обработчика приведен в строках 262 листинга из приложения Б. В теле обработчика происходит считывание введенных имени и фамилии учащегося и его группы в переменные, после чего исходная форма скрывается и активизируется форма тестирования.
Переменная FormTest, представляет собой экранную форму, объекты которой приведены в таблице 2.2.
В разделе var опишем переменные, приведенные в таблице 3.1
Таблица 3.1 Переменные программы
Наименование |
Тип |
Назначение |
SFam, SGr |
String |
хранение фамилии и группы учащегося |
fName |
String |
имя текстового файла для записи протокола |
f |
TextFile |
переменная для работы с текстовым файлом |
BasaV |
CVoprosi |
класс, хранящий базу вопросов и ответы |
CurN |
byte |
номер текущего вопроса из базы |
Ratio |
byte |
количество правильных ответов |
Для хранения базы вопросов разработаем пользовательский класс CVoprosi. В классе содержится одно поле и два метода. Поле test это динамический массив, в котором хранятся вопросы и ответы. При это каждый тест храниться в виде записи типа TTest со следующими полями:
Для формирования базы ответов создан метод AddTest (_vopr, _ans0, _ans1, _ans2, _ans3:string; _korans:byte), которому в качестве параметров передаются вопрос, четыре варианта ответов и номер правильного ответа, а в теле метода происходит увеличение длины массива с тестами на единицу и текущий тест записывается в конец массива.
Второй метод класса CVoprosi. Mix предназначен для перемешивания базы вопросов. В нём организован цикл, в теле которого генерируются два произвольных числа i1 и i2 в интервале от 0 до количества вопросов в базе каждое. После чего вопросы с номерами i1 и i2 меняются местами.
В разработанной программе содержится описание пользовательских процедур и обработчиков событий, которые приведены в таблице 3.2.
Таблица 3.2. Пользовательские процедуры и обработчики событий
Наименование |
Обр-к |
Назначение |
Строки |
BitBtnStartClick |
+ |
переход на форму тестов после нажатия «НАЧАТЬ» |
262 |
FormCreate |
+ |
формирование базы вопросов при создании фомры тестирования |
10856 |
FormActivate |
+ |
инициализация тестирования (перемешивание, сброс количества ответов и номера текущего вопроса, вывод первого вопроса) при активизации формы тестирования |
15782 |
BitBtn1Click |
+ |
анализ введенного ответа и вывод очередного вопроса или итоговой оценки |
18328 |
BNewTestClick |
+ |
закрытие формы тестов и переход на форму авторизации при нажатии на «Начать заново» |
22935 |
AddTest |
добавление нового теста в базу |
780 |
|
Mix |
перемешивание базы тестов случайным образом |
9107 |
Процедура BitBtn1Click предназначена для анализа ответа и вывода очередного вопроса или итоговой оценки. Алгоритм выполнения процедуры приведен на рисунке А.2 приложения А.
В теле процедуры выполняются следующие действия: Если текущий номер вопроса меньше общего количества вопросов, то формируется строка S c вопросом и выбранным ответом и записывается в файл протоколов f. Сравнивается выбранный номер ответа (RGroup1. ItemIndex) с номером правильного ответа (BasaV.test[curN].Korans) и, если он совпадает, то наращивается количество правильных ответов Ratio. Наращивается номер текущего вопроса curN. И очередной вопрос с вариантами ответов выводится на форму.
Если все вопросы были заданы (curN равно количеству вопросов), то рассчитывается итоговая оценка как (Ratio*12)/(общее количество вопросов) и записывается в файл протокола, а также выводится сообщение в виде диалогового окна с оценкой. Также становится видимой кнопка BNewtest c надписью «Начать заново», позволяющая перейти на форму авторизации. Во избежание подбора ответов выводится только последняя итоговая оценка без указания в каких вопросах были сделаны ошибки.
Разработанная программа представляет собой исполняемый файл Tester.exe размером 422912 байт. В программе выполняется тестирование пользователя основам языка Pascal.
После запуска программы появляется окно, изображенное на рисунке 4.1.
Рисунок 4.1 Окно авторизации
В этом окне учащийся должен задать свою фамилию и группу, после чего нажать на кнопку с надписью «НАЧАТЬ». После этого появится вторая форма с тестовыми вопросами, изображенная на рисунке 4.2. Заметим, что порядок вопросов при каждом новом запуске случайный, поэтому содержание поля вопроса и ответом может быть иным.
Рисунок 4.2 Окно тестирования
Пользователь должен выбрать только один из четырех предложенных вариантов ответа, щелкнув по соответствующей метке с вариантом ответа, при этом напротив варианта ответа в кружочке должна появиться отметка .
После этого следует нажать на кнопку .
Появится новый вопрос, ответ на который реализуется аналогичным способом. Если были пройдены все вопросы, выводится сообщение с оценкой, которая пропорциональна количеству правильных ответов. Все ответы правильные оценка равна 12. Все ответы неправильные оценка равна 0. Пример окна с сообщением об оценке приведено на рисунке 4.3.
Рисунок 4.3
После этого можно вернуться на окно авторизации, чтобы пройти тест заново, нажав на кнопку .
Протокол с вариантами ответов, которые были введены учащимся заносятся в текстовый файл на жестком диске с именем «<фамилия>+<группа>.txt» в том же каталоге, где находится исполняемый файл. Пример протокола с правильными вариантами ответов приведен в приложении В.
Данный курсовой проект был выполнен в полном соответствии поставленному заданию и отлажен в среде DELPHI 7.0. В ходе выполнения курсовой работы была разработана программа для тестирования студентов по программированию с графическим интерфейсом. База содержит 20 вопросов по основам языка Pascal. Программа может бать использована в образовательных целях.
В качестве дальнейшего развития возможна доработка программы с целью поддержки множественных вариантов ответа, поддержкой текстового ввода в качестве ответа (без указания альтернатив), организации таймера и ограничения времени решения на каждый из вопросов, возможности пропустить некоторые вопросы, чтобы вернуться к ним и ответить на них в случае наличия времени и др.
В результате выполнения данной курсовой работы, я убедилась в широких возможностях языка программирования Delphi 7.
Приложение А
Алгоритм программы
Рисунок А.1 Обработка событий экранных форм программы
Рисунок А.2 Алгоритм процедуры BitBtn1Click
Модуль формы авторизации
Модуль формы тестирования
Моя программа выполняет тестирование студентов по программированию. При открытии программы появляется окно (рис В.1), тестирования в котором нужно вести Фамилию Имя и Группу. Тестирование состоит из 20 вопросов, в каждом вопросе четыре варианта ответа необходимо выбрать один правильный (рис В.2). В конце тестирования появляется окно в котором выводится бал за количество ответов по 12 бальной системе (рис В.3).
Рисунок В.1 Окно авторизации
Рисунок В.2 Внешний вид формы FormTest
Рисунок В.3 Итог
Размещено на Allbest.ru