Реферат по предмету "Информатика, программирование"


Разработка программы с помощью языка программирования Delphi

КУРСОВАЯ РАБОТА

НА ТЕМУ:
«Разработкапрограммы с помощью языка программирования 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 этапа:
1) Разработкавизуального интерфейса пользователя, на основе экранных форм среды Delphi ивизуальных компонент, предназначенных для ввода исходных данных, запускадействий по обработке исходных данных, вывода результата обработки, выводарезультатов на экранную форму. Еще можно предусмотреть вывод информацииразработчике и задании курсового проекта.
2) Разработкаобработчиков событий от элементов экранных форм, разработка алгоритмов ипрограммных кодов действий обработки текстового файла согласно заданию.
3) Подготовкатестовых исходных данных и отладка программы.
На первом этапецелесообразно выполнить разработку интерфейса таким образом, чтобы в началетестирования учащийся вводил своё имя и фамилию, а также задавал шифр группы.Затем учащийся приступает к тестированию. По окончании тестирования выводитсяитоговая оценка, которая равна максимальной, если все ответы были правильными. Еслиимеются ошибки, то должен выводится балл, пропорциональный количествуправильных ответов. Также должен вестись протокол ответов, вводимых тестируемыми потом записываться на жесткий диск.
Для корректноститестирования целесообразно предусмотреть механизм перемешивания вопросов, чтобыпри различных запусках программы порядок следования вопросов изменялся.
При выполнении второгоэтапа следует использовать модульный принцип построения программы, то есть разбитьпрограмму на отдельные части, каждая из которых выполняет какую-то законченнуюзадачу, либо ее малую часть. Роль таких частей будут выполнять процедуры ифункции. Программы, состоящие из процедур и функций, называются модульными.
Процедуры и функции всвою очередь могут вызывать процедуры и функции более низкого уровня и такдалее. Таким образом, каждая модульная программа имеет иерархическую структуру.Следует заметить, что обработчики событий от объектов экранных форм тожереализуются как процедуры.
На третьем этапе приотладке приложения обязательно должна анализироваться правильность работы на исходныхтестовых образцах. На этом этапе нужно проверить соответствие разработаннойпрограммы исходному заданию, а также проверить ее на отсутствие ошибок.
Подытожив всевышесказанное, можно сформулировать требования к разрабатываемому программномуобеспечению и выполнить постановку задания на проектирование.
Программа должна бытьреализована с графическим интерфейсом пользователя в среде Borland Delphi идолжна выполнять следующие функции:
– запрашивать фамилию, имя и группуучащегося;
– выводить поочередно вопросы из базы;
– принимать ответы учащегося;
– анализировать правильность ответов ирассчитывать итоговый балл пропорционально количеству правильных ответов;
– вести протоколирование ответов изаписывать их в файле на жестком диске;
– по окончании тестирования выводитьправильную оценку;
– предусмотреть перемешивание вопросов,чтобы при повторных запусках порядок следования вопросов был различным.
Последующие разделы будут посвящены решениюпоставленных задач и разработке приложения с вышеперечисленными функциями.

2. Разработка экранныхформ и алгоритма программы
В предыдущемразделе было сказано, что процесс решения поставленной задачи разбивается на 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. Запуститьэкранную форму авторизации FormAvto
2. Принажатии на кнопку «Начать» следует выполнить действия:
2.1 Сгенерироватьбазу вопросов, и перемешать их случайным образом;
2.2 Сформироватьимя файла из имени студента и его группы и открыть файл для записи;
2.3 Обнулитьколичество правильных ответов;
2.4 Установитьномер текущего вопроса на первый вопрос;
2.5 Скрытьформу FormAvto и показать форму с тестами FormTest;
2.6 Показатьпервый вопрос и варианты его ответов на форме FormTest;
2.7 Ожидатьнажатия на кнопку «Принять ответ».
3. Принажатии на кнопку «Принять ответ» следует выполнить действия:
3.1 Проанализироватьвыбранный вариант ответа и сравнить его с правильным, и если ответ правильный,то нарастить количество правильных ответов на 1;
3.2 Записатьв файл протокола текущий вопрос и вариант, который выбрал пользователь вкачестве ответа;
3.3 Еслиномер текущего вопроса меньше общего количества вопросов в базе, то нараститьномер на 1, вывести очередной вопрос на форму и перейти к началу пункта 3.
3.4 Еслиномер текущего вопроса равен количеству вопросов в базе, то:
3.4.1. подсчитать оценку пропорциональноколичеству правильных ответов;
3.4.2. показать сообщение с оценкой;
3.4.3. сделать кнопку «Начать заново» видимой
4. Принажатии кнопки «Начать заново» закрыть форму с тестами FormTest и показатьформу авторизации FormAvto.
Анализируя требования к функциям разрабатываемогоприложения под разработанные экранные формы и словесный алгоритм, можновыделить следующие программные модули:
1) Генерациябазы вопросов;
2) Перемешиваниебазы вопросов случайным образом;
3) Анализтекущего ответа и переход на следующий вопрос, если вопрос не последний либовывод результатов тестирования при достижении последнего вопроса;
4) Модулиперехода между экранными формами авторизации и тестирования.
Каждый из вышеприведенных модулей реализуем припомощи процедуры. Модуль 1 целесообразно запускать один раз при создании формыс тестами. Модуль 2 следует запускать каждый раз при начале нового теста, тоесть при активизации формы с тестами. Модель 3 должен запускаться каждый разпри нажатии на кнопку «Принять ответ». Модули 4 должны быть обработчикаминажатий на кнопку «Начать» экранной формы авторизации и кнопку «Начать заново»экранной формы тестирования.
Составим алгоритм приложения, который представленв приложении на рисунке A.1. На алгоритме приведены основные события экранныхформ. В этом алгоритме:
Блок №4 реализован процедурой FormAvto, BitBtnStartClick,
блок №5 – процедурой FormTest. FormCreate,
блок №6 – процедурой FormTest. FormActivate,
блок №7 – процедурой FormTest BNewTestClick,
блок №8 реализован процедурой FormTest.BitBtn1Click.
Детальное описание разработанной программы,алгоритмов и их программной реализации приведено в последующих разделах.

3. Описаниепрограммных модулей 3.1 Описание переменных и объектов
В программе используется переменнаяFormAvto,которая представляет собой экранную форму. Объекты экранной формы былиприведены в таблице 2.1. У формы имеется лишь один обработчик нажатия на кнопкуBitBtnStart. Текст обработчика приведен в строках 26–32 листинга из приложенияБ. В теле обработчика происходит считывание введенных имени и фамилии учащегосяи его группы в переменные, после чего исходная форма скрывается иактивизируется форма тестирования.
ПеременнаяFormTest, представляет собойэкранную форму, объекты которой приведены в таблице 2.2.
В разделе var опишем переменные, приведенные втаблице 3.1
Таблица 3.1 – Переменные программыНаименование Тип Назначение SFam, SGr String хранение фамилии и группы учащегося fName String имя текстового файла для записи протокола f TextFile переменная для работы с текстовым файлом BasaV CVoprosi класс, хранящий базу вопросов и ответы CurN byte номер текущего вопроса из базы Ratio byte количество правильных ответов
Для хранения базы вопросов разработаемпользовательский класс CVoprosi. В классе содержится одно поле и два метода.Поле test – это динамический массив, в котором хранятся вопросы иответы. При это каждый тест храниться в виде записи типа TTest соследующими полями:
- Vopr: string – содержит вопростеста;
- ans: array [0..3] of string– содержит 4 варианта ответов;
- korans: byte – содержит вариантправильного ответа (его номер в массиве ans).
Для формирования базы ответов создан методAddTest (_vopr, _ans0, _ans1, _ans2, _ans3:string; _korans:byte),которому в качестве параметров передаются вопрос, четыре варианта ответов иномер правильного ответа, а в теле метода происходит увеличение длины массива стестами на единицу и текущий тест записывается в конец массива.
Второй метод класса CVoprosi. Mix предназначен дляперемешивания базы вопросов. В нём организован цикл, в теле которогогенерируются два произвольных числа i1 и i2 в интервале от 0 до количествавопросов в базе каждое. После чего вопросы с номерами i1 и i2 меняются местами.
В разработанной программе содержится описаниепользовательских процедур и обработчиков событий, которые приведены в таблице3.2.
Таблица 3.2. Пользовательские процедуры иобработчики событийНаименование Обр-к Назначение Строки BitBtnStartClick + переход на форму тестов после нажатия «НАЧАТЬ» 26–32 FormCreate + формирование базы вопросов при создании фомры тестирования 108–156 FormActivate + инициализация тестирования (перемешивание, сброс количества ответов и номера текущего вопроса, вывод первого вопроса) при активизации формы тестирования 157–182 BitBtn1Click + анализ введенного ответа и вывод очередного вопроса или итоговой оценки 183–228 BNewTestClick + закрытие формы тестов и переход на форму авторизации при нажатии на «Начать заново» 229–235 AddTest
  добавление нового теста в базу 78–90 Mix перемешивание базы тестов случайным образом 91–107
3.2 Описание процедуры BitBtn1Click
Процедура BitBtn1Click предназначена для анализаответа и вывода очередного вопроса или итоговой оценки. Алгоритм выполненияпроцедуры приведен на рисунке А.2 приложения А.
В теле процедуры выполняются следующие действия:Если текущий номер вопроса меньше общего количества вопросов, то формируетсястрока S c вопросом и выбранным ответом и записывается в файл протоколов f. Сравниваетсявыбранный номер ответа (RGroup1. ItemIndex) с номером правильного ответа(BasaV.test[curN].Korans) и, если он совпадает, то наращивается количествоправильных ответов Ratio. Наращивается номер текущего вопроса curN. И очереднойвопрос с вариантами ответов выводится на форму.
Если все вопросы были заданы (curN равноколичеству вопросов), то рассчитывается итоговая оценка как (Ratio*12)/(общееколичество вопросов) и записывается в файл протокола, а также выводитсясообщение в виде диалогового окна с оценкой. Также становится видимой кнопкаBNewtest c надписью «Начать заново», позволяющая перейти на форму авторизации. Воизбежание подбора ответов выводится только последняя итоговая оценка безуказания в каких вопросах были сделаны ошибки.

4. Инструкцияоператору
Разработанная программа представляет собойисполняемый файл 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. ВалентинОзеров «Советы по Delphi», 1999
2. Зуев Е.А. Программированиена языке Turbo Pascal 6. 0,7.0. – М.: Радио и связь, Веста, 1993.
3. Фаронов В.В. Turbo Pascal 7.0. Начальный курс. – М.:Нолидж, 2000.
4. Фаронов В.В.«DELPHI. Программирование на языке высокого уровня». – Питер, 2005.
5. Дятченко Д.А. Методическиеуказания к выполнению курсовой работы по дисциплине «Программирование иалгоритмическе языки» – Северодонецк, 2005.
  Приложение А
Алгоритм программы
 
/>
Рисунок А.1 –Обработка событий экранных форм программы

/>
Рисунок А.2 – Алгоритмпроцедуры BitBtn1Click

Приложение Б
Модуль формы авторизации
1. unit Unit2;
2. interface
3. uses
4. Windows, Messages, SysUtils,Variants, Classes, Graphics,
5. Controls, Forms, Dialogs,StdCtrls, Buttons;
6. type
7. TFormAvto = class(TForm)
8. Label1: TLabel;
9. Label2: TLabel;
10. Label3: TLabel;
11. EFam: TEdit;
12. EGroup: TEdit;
13. BitBtnStart: TBitBtn;
14. procedure BitBtnStartClick (Sender: TObject);
15. private
16. {Private declarations}
17. public
18. {Public declarations}
19. end;
20. var
21. FormAvto: TFormAvto;
22. 
23. implementation
24. uses Unit1;
25. {$R *.dfm}
26. procedure TFormAvto. BitBtnStartClick(Sender: TObject);
27. begin
28. SFam:=EFam. Text+ ' ';
29. SGr:=EGroup. Text;
30. hide;
31. FormTest. Show;
32. end;
33. end.
Модуль формы тестирования
34. unit Unit1;
35. interface
36. uses
37. Windows, Messages, SysUtils,Variants, Classes, Graphics,
38. Controls, Forms, Dialogs,StdCtrls, ExtCtrls, Buttons;
39. type
40. TFormTest = class(TForm)
41. BitBtn1: TBitBtn;
42. Label1: TLabel;
43. LbNom: TLabel;
44. StaticText1: TStaticText;
45. RGroup1: TRadioGroup;
46. BNewTest: TButton;
47. procedure FormCreate (Sender: TObject);
48. procedure BitBtn1Click (Sender: TObject);
49. procedure BNewTestClick (Sender: TObject);
50. procedure FormClose (Sender:TObject; var Action: TCloseAction);
51. procedure FormActivate (Sender: TObject);
52. private
53. {Private declarations}
54. public
55. {Public declarations}
56. end;
57. TTest = record
58. vopr:string; // вопрос
59. ans:array [0..3] of string; // ответы
60. korans:byte; // номер правильного ответа
61. end;
62. CVoprosi = class
63. test: array of TTest;
64. procedure AddTest (_vopr,_ans0,_ans1,_ans2,_ans3:string;_korans:byte);
65. procedure Mix;
66. end;
67. var
68. SFam, Sgr:string; // фамилия и группа учащегося
69. fName:string;
70. f: TEXTFILE;
71. FormTest: TFormTest;
72. BasaV:CVoprosi;
73. CurN:byte; // номер текущего вопроса
74. Ratio:byte; // количество правильных ответов
75. implementation
76. uses Unit2;
77. {$R *.dfm}
78.  // метод для добавления нового теста в базу
79. Procedure CVoprosi. AddTest(_vopr,_ans0,_ans1,_ans2,_ans3:string; _korans:byte);
80. var ln:integer;
81. begin
82. ln:=Length(test);
83. SetLength (test, ln+1);
84. test[ln].vopr:= _vopr;
85. test[ln].ans[0]:= _ans0;
86. test[ln].ans[1]:= _ans1;
87. test[ln].ans[2]:= _ans2;
88. test[ln].ans[3]:= _ans3;
89. test[ln].korans:= _korans;
90. end;
91.  // перемешивание базы вопросов
92. Procedure CVoprosi. Mix;
93. var
94. i, i1, i2, ln:byte;
95. TestTmp:TTest;
96. begin
97. ln:=Length(test);
98. for i:=1 to 20 do
99. begin
100. i1:=Random(ln); // случайный №1
101. i2:=Random(ln); // случайный №2
102.  // меняем местами вопросы №1 и №2
103. TestTmp:=test[i1];
104. test[i1]:=test[i2];
105. test[i2]:=TestTmp;
106. end;
107. end;
108. procedure TFormTest. FormCreate(Sender: TObject);
109. begin
110.  // формирование базы вопросов
111. BasaV:=CVoprosi. Create;
112. BasaV. AddTest ('Что выведет следующая программа?'+#10+#13+'var i,sum:sіnglе;'+#10+#13+
113. 'bеgin'+#10+'sum:=1;'+#10+
114. ' for і:=2 to 10 dо sum:=sum+i;'+#10+
115. ' WrіtеLn(sum);'+#10+'еnd.',
116. '10', '55', '9', 'произойдет ошибка компиляции', 3);
117. BasaV. AddTest ('Какое значение вернет выражение?'+#10+' chr(ord(«A»)+3)',
118. 'A3', '68', ' «D» ', ' «C»', 2);
119. BasaV. AddTest ('С чего не может начинаться идентификатор?',
120. 'с малой латинской буквы', 'с большой латинской буквы', 'сподчеркивания', 'с цифры', 3);
121. BasaV. AddTest ('Что из нижеперечисленного может быть использованокак идентификатор?',
122. 'ord', 'for1', 'cardinal', 'C#21',1);
123. BasaV. AddTest ('Какой из приведенных типов целочисленный?',
124. 'real', 'byte', 'double', 'single', 1);
125. BasaV. AddTest ('Какой из приведенных типов можно использовать дляхранения дробных чисел?',
126. 'byte', 'word', 'double', 'integer', 2);
127. BasaV. AddTest ('Какая из приведенных инструкций является циклом сзаданным числом повторений?',
128. 'while do ', 'for do ', 'repeat until ', 'if then ', 1);
129. BasaV. AddTest ('Какая из приведенных инструкций является циклом спредусловием?',
130. 'for do ', 'while do ', 'repeat until ', 'if then ', 1);
131. BasaV. AddTest ('Какая из приведенных инструкций является циклом спостусловием?',
132. 'for do ', 'while do ', 'repeat until ', 'if then ', 2);
133. BasaV. AddTest ('Какая из приведенных инструкций являетсяинструкцией ветвления?',
134. 'for do ', 'while do ', 'repeat until ', 'if then ', 3);
135. BasaV. AddTest ('Какая из приведенных инструкций целочисленногоделения?',
136. 'MOD', 'DIV', '/', 'ODD', 1);
137. BasaV. AddTest ('Какая из приведенных инструкций – остаток отделения?',
138. 'MOD', 'DIV', '/', 'ODD', 0);
139. BasaV. AddTest ('Какая из приведенных инструкций вещественногоделения?',
140. 'MOD', 'DIV', '/', 'ODD', 2);
141. BasaV. AddTest ('Какая из приведенных инструкций проверка начетность?',
142. 'MOD', 'DIV', '/', 'ODD', 3);
143. BasaV. AddTest ('Укажите функцию округления по правиламарифметики:',
144. 'TRUNC()', 'FRAC()', 'ROUND()','INT()', 2);
145. BasaV. AddTest ('Укажите функцию выделения дробной части числа:',
146. 'TRUNC()', 'FRAC()', 'ROUND()','INT()', 1);
147. BasaV. AddTest ('Укажите функцию округления к нулю с целочисленнымрезультатом:',
148. 'TRUNC()', 'FRAC()', 'ROUND()','INT()', 0);
149. BasaV. AddTest ('Укажите функцию округления к нулю с вещественнымрезультатом:',
150. 'TRUNC()', 'FRAC()', 'ROUND()','INT()', 3);
151. BasaV. AddTest ('Укажите функцию открытия существующего файла:',
152. 'ASSIGNFILE()', 'REWRITE()','RESET()', 'CLOSEFILE()', 2);
153. BasaV. AddTest ('Укажите функцию создания нового файла и открытияего для записи:',
154. 'ASSIGNFILE()', 'REWRITE()','RESET()', 'CLOSEFILE()', 1);
155. randomize;
156. end;
157.  // ***************************
158.  // активизация формы с тестами
159.  // ***************************
160. procedure TFormTest. FormActivate(Sender: TObject);
161. var ln:integer;
162. begin
163. fName:=SFam+' ('+SGr+')'+'.txt';
164. assignfile (f, fName);
165. rewrite(f);
166. BNewTest. Visible:=false;
167.  // перемешивание базы вопросов
168. BasaV. Mix;
169.  // количество правильных ответов
170. Ratio:=0;
171.  // текущий вопрос 0
172. curN:=0;
173.  // отображаем первый вопрос на форме
174. StaticText1. Caption:=BasaV.test[curN].vopr;
175. RGroup1. Items[0]:=BasaV.test[curN].ans[0];
176. RGroup1. Items[1]:=BasaV.test[curN].ans[1];
177. RGroup1. Items[2]:=BasaV.test[curN].ans[2];
178. RGroup1. Items[3]:=BasaV.test[curN].ans[3];
179. RGroup1. ItemIndex:=0;
180. Ln:=Length (BasaV.test);
181. LbNom. Caption:= IntToStr(curN+1) + ' из ' + IntToStr(Ln);
182. end;
183.  // ***************************
184.  // обработчик нажатия на кнопку «Принять ответ»
185.  // ***************************
186. procedure TFormTest. BitBtn1Click(Sender: TObject);
187. var
188. sRes, S:string;
189. ln:byte;
190. begin
191.  // проверка ответа
192. Ln:=Length (BasaV.test);
193. if (CurN
194. begin
195.  // записываем лог ответов в файл
196. S:= BasaV.test[curN].vopr + '(ответил: – '+
197. BasaV.test[curN].ans[RGroup1. ItemIndex]+')';
198. writeln (f, S);
199.  // проверяем, правильно ли был сделан ответ
200. if (RGroup1. ItemIndex =BasaV.test[curN].Korans) then
201. Ratio:= Ratio +1;
202. CurN:=CurN+1;
203. if CurN=ln then // была последняя запись
204. begin
205.  // сообщение с результатом
206. sRes:= 'Итоговая оценка: '+FloatToStr (Ratio*12/ln);
207.  // запись результа в файл
208. writeln (f, Sfam+Sgr);
209. writeln (f, sRes);
210. CloseFile(f);
211. end;
212. end;
213. if CurN>=ln then
214. begin
215. sRes:= 'Итоговая оценка: '+FloatToStr (Ratio*12/ln);
216. Application. MessageBox(PAnsiChar(sRes), PAnsiChar (SFam+Sgr));
217. BNewtest. Visible:=true;
218. exit;
219. end;
220.  // отображаем следующий вопрос на форме
221. StaticText1. Caption:=BasaV.test[curN].vopr;
222. RGroup1. Items[0]:=BasaV.test[curN].ans[0];
223. RGroup1. Items[1]:=BasaV.test[curN].ans[1];
224. RGroup1. Items[2]:=BasaV.test[curN].ans[2];
225. RGroup1. Items[3]:=BasaV.test[curN].ans[3];
226. RGroup1. ItemIndex:=0;
227. LbNom. Caption:= IntToStr (curN+1)+ ' из ' + IntToStr(Ln);
228. end;
229.  // ***************************
230.  // закрыте формы с тестами
231.  // ***************************
232. procedureTFormTest.BNewTestClick (Sender: TObject);
233. begin
234. Close;
235. end;
236.  // ***************************
237.  // активизация формы с авторизации
238.  // ***************************
239. procedure TFormTest. FormClose(Sender: TObject; var Action: TCloseAction);
240. begin
241. FormAvto. Show;
242. end;
243. 
244. end.

Приложение В
Моя программавыполняет тестирование студентов по программированию. При открытии программыпоявляется окно (рис В.1), тестирования в котором нужно вести Фамилию Имя иГруппу. Тестирование состоит из 20 вопросов, в каждом вопросе четыре вариантаответа необходимо выбрать один правильный (рис В.2). В конце тестированияпоявляется окно в котором выводится бал за количество ответов по 12 бальнойсистеме (рис В.3).
/>
Рисунок В.1 – Окноавторизации
/>
Рисунок В.2 – Внешний видформы FormTest

/>
Рисунок В.3 – Итог


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.