Содержание
В ведение
Внедрение
электронно-вычислительных
машин, современных
средств переработки
и передачи
информации
послужило
началом нового
процесса, называемым
информатизацией
общества. Широкое
распространение
получил научно-технический
прогресс. В
настоящее время
одним из направлений
научно-технического
прогресса
является
компьютеризация
практически
всех сфер
человеческой
деятельности.
Сейчас компьютер
является неотъемлемой
частью работы
людей. Компьютеры
используются
в школах и
университетах.
Они помогают
систематизации
полученные
данных как в
рабочих целях,
так и в учебных.
Данном
курсовом проекте
рассмотрен
программный
продукт “Методика
многофакторного
исследования
личности Р.
Кеттелла”. Он
представляет
собой опросник
из 187 вопросов,
определяющий
шестнадцать
факторов личности
и дает многогранную
информацию
о личностных
чертах, которые
называют
конституционными
факторами,
предложен Р.
Кеттеллом.
Глава 1.А налитический
обзор
1.1.Компоненты
Создавая
данную программу
я использовал
различные
компоненты,
такие как button,
combobox, edit,
label, radiogroup,
statictext, memo.
1.1.1.Button
Простейшей
и, пожалуй, наиболее
часто используемой
кнопкой является
кнопка Button (см.
на рис. 5.1 в верхнем
левом углу
формы), расположенная
на странице
библиотеки
Standard.
Основное
с точки зрения
внешнего вида
свойство кнопки
— Caption (надпись).
В надписях
кнопок можно
предусматривать
использование
клавиш ускоренного
доступа, выделяя
для этого один
из символов
надписи. Перед
символом, который
должен соответствовать
клавише ускоренного
доступа, ставится
символ амперсанта
«&». Этот символ
не появляется
в надписи, а
следующий за
ним символ
оказывается
подчеркнутым.
Тогда пользователь
может вместо
щелчка на кнопке
нажать в любой
момент клавишу
Alt
совместно с
клавишей выделенного
символа.
Основное
событие любой
кнопки — OnClick,
возникающее
при щелчке на
ней. Именно в
обработчике
этого события
записываются
операторы,
которые должны
выполняться
при щелчке
пользователя
на кнопке. Помимо
этого есть еще
ряд событий,
связанных с
различными
манипуляциями
клавишами и
кнопками мыши.
Свойство
Cancel, если его
установить
в true, определяет,
что нажатие
пользователем
клавиши Esc
будет эквивалентно
нажатию на
данную кнопку.
Это свойство
целесообразно
задавать равным
true для кнопок
«Отменить»
в различных
диалоговых
окнах, чтобы
можно было
выйти из диалога,
нажав на эту
кнопку или
нажав клавишу
Esc.
Свойство Default,
если его установить
в true, определяет,
что нажатие
пользователем
клавиши ввода
Enter
будет эквивалентно
нажатию на
данную кнопку,
даже если данная
кнопка в этот
момент не находится
в фокусе. Правда,
если в момент
нажатия Enter
в фокусе находится
другая кнопка,
то все-таки
сработает
именно кнопка
в фокусе.
Из
методов, присущих
кнопкам, имеет
смысл отметить
один — Click. Выполнение
этого метода
эквивалентно
щелчку на кнопке,
т.е. вызывает
событие кнопки
OnClick. Этим можно
воспользоваться,
чтобы продублировать
какими-то другими
действиями
пользователя
щелчок на кнопке.
Пусть, например,
вы хотите, чтобы
при нажатии
пользователем
клавиши с символом
«С»
или «с»
в любой момент
работы с приложением
выполнялись
операции,
предусмотренные
в обработчике
события OnClick
кнопки Button1. Поскольку
неизвестно,
какой компонент
будет находиться
в фокусе в момент
этого события,
надо перехватить
его на уровне
формы. Такой
перехват
осуществляется,
если установить
свойство формы
KeyPreview в true. Тогда
в обработчике
события формы
OnKeyPress можно написать
оператор
if
(key='C' or key='c') then Button1.Click;
Если
пользователь
ввел символ
«С» или «с», то
в результате
будет выполнен
обработчик
щелчка кнопки
Button1.
1.1.2. ComboBox
Стиль
изображения
этого компонента
определяется
свойством
Style, которое может
принимать
следующие
основные значения:
csDropDown
- Выпадающий
список со строками
одинаковой
высоты и с окном
редактирования,
позволяющим
пользователю
вводить или
редактировать
текст;
csSimple
- Развернутый
список со строками
одинаковой
высоты и с окном
редактирования,
позволяющим
пользователю
вводить или
редактировать
текст;
csDropDownList
- Выпадающий
список со строками
одинаковой
высоты, не содержащий
окна редактирования.
Выбор
пользователя
или введенный
им текст можно
определить
по значению
свойства Text.
Если же надо
определить
индекс выбранного
пользователем
элемента списка,
то можно воспользоваться
свойством
ItemIndex. Если начальное
значение не
задано, то в
момент запуска
приложения
пользователь
не увидит в
окне компонента
одно из возможных
значений списка
и, вероятнее
всего, не очень
поймет, что с
этим окном надо
делать.
Если
в окне проводилось
редактирование
данных, то ItemIndex
= -1. По этому признаку
можно определить,
что редактирование
проводилось.
Свойство
MaxLength определяет
максимальное
число символов,
которые пользователь
может ввести
в окно редактирования.
Если
MaxLength = 0, то число
вводимых символов
не ограничено.
1.1.3.Edit
В
компоненте
Edit вводимый
и выводимый
текст содержится
в свойстве
Text. Это свойство
можно устанавливать
в процессе
проектирования
или задавать
программно.
Выравнивание
текста, как это
имело место
в метках и панелях,
невозможно.
Перенос строк
тоже невозможен.
Текст, не помещающийся
по длине в окно,
просто сдвигается
и пользователь
может перемещаться
по нему с помощью
курсора. Свойство
AutoSize в окнах
редактирования
имеет смысл,
отличный от
смысла аналогичного
свойства меток:
автоматически
подстраивается
под размер
текста только
высота, но не
ширина окна.
Окна
редактирования
снабжены многими
функциями,
свойственными
большинству
редакторов.
Например, в них
предусмотрены
типичные комбинации
«горячих»
клавиш: Ctrl-C
— копирование
выделенного
текста в буфер
обмена Clipboard (команда
Copy), Ctrl-X
— вырезание
выделенного
текста в буфер
Clipboard (команда Cut),
Ctrl-V
— вставка текста
из буфера Clipboard в
позицию курсора
(команда Paste), Ctrl-Z
— отмена последней
команды редактирования.
Edit
можно использовать
и просто как
компоненты
отображения
текста. Для
этого надо
установить
в true его свойство
ReadOnly и целесообразно
установить
AutoSelect в false. В этом
случае пользователь
не сможет изменять
отображаемый
текст и окно
редактирования
становится
подобным меткам.
При использовании
окон редактирования
для вывода,
ввода и редактирования
чисел необходимо
использовать
функции взаимного
преобразования
строк и чисел.
Для вывода это
описанные при
рассмотрении
меток функции
FloatToStr и IntToStr. При
вводе это функции
StrToFloat — преобразование
строки в значение
с плавающей
запятой, и StrToInt
— преобразование
строки в целое
значение. Если
вводимый текст
не соответствует
числу (например,
содержит недопустимые
символы), то
функции преобразования
генерируют
исключение
EConvertError. Поэтому
в программе
необходимо
предусмотреть
обработку этого
исключения.
Например:
var
A: integer;
try
A :=
StrToInt(Edit1.Text);
...{операторы,
использующие
переменную
А}
excepton EConvertError do
ShowMessage('Вы ввели
ошибочное
число;
повторите
ввод');
Этот
код обеспечивает
сообщение
пользователю
об ошибке ввода
и предотвращает
ошибочные
вычисления.
Впрочем, это
не лучший вариант
предотвратить
ошибочный ввод,
поскольку
пользователь
узнает о своей
ошибке только
после того, как
программа
пытается использовать
введенные
данные. Лучше,
если пользователь
просто не сможет
ввести неправильные
символы. Например,
если вы хотите,
чтобы пользователь
мог вводить
в окно редактирования
Edit только цифры
и символ точки,
вы можете в
обработчик
события OnKeyPress
этого компонента
вставить оператор:
ifnot (Key
in
['0'..'9', ',']) then
Key := #0;
Этот
оператор подменит
все символы,
кроме цифр и
запятой, нулевым
символом, который
не занесется
в текст окна
Edit.
Свойство
MaxLength определяет
максимальную
длину вводимого
текста. Если
MaxLength = 0, то длина
текста не ограничена.
В противном
случае значение
MaxLength указывает
максимальное
число символов,
которое может
ввести пользователь.
Свойство
PasswordChar позволяет
превращать
окно редактирования
в окно ввода
пароля. По умолчанию
значение PasswordChar
равно #0 — нулевому
символу. В этом
случае это
обычное окно
редактирования.
Но если в свойстве
указать иной
символ (например,
символ звездочки
«*»), то при вводе
пользователем
текста в окне
будут появляться
именно эти
символы, а не
те, которые
вводит пользователь
(см. рис. 3.5). Тем
самым обеспечивается
секретность
ввода пароля.
1.1.4.Label, StaticText
Для
отображения
различных
надписей на
форме используются
в основном
компоненты
Label, StaticText (появившийся
только в Delphi 3) и
Panel. Первые два
из этих компонентов
— метки, специально
предназначенные
для отображения
текстов.
Тексты,
отображаемые
в перечисленных
компонентах,
определяются
значением их
свойства Caption.
Его можно
устанавливать
в процессе
проектирования
или задавать
и изменять
программно
во время выполнения
приложения.
Например:
Label1.Caption
:= 'Новый текст';
Если
требуется
отобразить
числовую информацию,
можно воспользоваться
функциями
FloatToStr и IntToStr, переводящими
соответственно
числа с плавающей
запятой и целые
в строку. Для
формирования
текста, состоящего
из нескольких
фрагментов,
можно использовать
операцию «+»,
которая для
строк означает
их склеивание
(конкатенацию).
Например, если
в программе
имеется целая
переменная
I, отображающая
число сотрудников
некоторой
организации,
то вывести в
метку Label1 информацию
об этом можно
оператором:
Label1.Caption
:= 'Число сотрудников:
'+IntToStr(I);
Во
всех компонентах
цвет фона
определяется
свойством
Color, а цвет надписи
— подсвойством
Color свойства
Font.
Для
метки Label цвет
и шрифт — единственно
доступные
элементы оформления
надписи. Компонент
StaticText имеет кроме
того свойство
BorderStyle, определяющее
рамку текста
— бордюр.
Размер
меток Label и StaticText
определяется
также свойством
AutoSize. Если это
свойство установлено
в true, то вертикальный
и горизонтальный
размеры компонента
определяются
размером надписи.
Если же AutoSize равно
false, то выравнивание
текста внутри
компонента
определяется
свойством
Alignment, которое
позволяет
выравнивать
текст по левому
краю, правому
краю или центру
клиентской
области метки.
В
метке Label имеется
свойство Wordwrap
— допустимость
переноса слов
длинной надписи,
превышающей
длину компонента,
на новую строчку.
Чтобы такой
перенос мог
осуществляться,
надо установить
свойство WordWrap
в true, свойство
AutoSize в false (чтобы
размер компонента
не определялся
размером надписи)
и сделать высоту
компонента
такой, чтобы
в нем могло
поместиться
несколько
строк.
В
метке StaticText перенос
длинного текста
осуществляется
автоматически,
если значение
AutoSize установлено
в false и размер
компонента
достаточен
для размещения
нескольких
строк. Для того,
чтобы в StaticText
осуществлялся
перенос при
изменении
пользователем
размеров окна,
надо осуществлять
описанную выше
перерисовку
компонента
методом Repaint в
обработчике
события формы
OnResize.
1.1.5.RadioGroup
Радиокнопки
образуют группы
взаимосвязанных
индикаторов,
из которых
может быть
выбран только
один. Они используются
для выбора
пользователем
одной из нескольких
взаимоисключающих
альтернатив,
например, отдела,
в котором работает
сотрудник, или
пола сотрудника.
Впрочем, радиокнопки
могут использоваться
и для отображения
аналогичных
данных. В этом
случае управление
кнопками
осуществляется
программно.
RadioGroup
– это панель,
которая может
содержать
регулярно
расположенные
столбцами и
строками радиокнопки.
Надпись в левом
верхнем углу
панели определяется
свойством
Caption. А надписи
кнопок и их
количество
определяются
свойством
Items, имеющим тип
TStrings. Щелкнув на
кнопке с многоточием
около этого
свойства в окне
Инспектора
Объектов, вы
попадете в
редактор списков
строк. В нем вы
можете занести
надписи, которые
хотите видеть
около кнопок,
по одной в строке.
Сколько строчек
вы запишете
— столько и
будет кнопок.
Кнопки,
появившиеся
в панели после
задания значений
Items, можно разместить
в несколько
столбцов (не
более 17), задав
свойство Columns.
По умолчанию
Columns = 1, т.е. кнопки
размещаются
друг под другом.
Определить,
какую из кнопок
выбрал пользователь,
можно по свойству
ItemIndex, которое
показывает
индекс выбранной
кнопки. Индексы,
как всегда в
Delphi, начинаются
с 0. По умолчанию
ItemIndex = -1, что означает
отсутствие
выбранной
кнопки. Если
вы хотите, чтобы
в момент начала
выполнения
приложения
какая-то из
кнопок была
выбрана (это
практически
всегда необходимо),
то надо установить
соответствующее
значение ItemIndex
во время проектирования.
Если вы используете
радиокнопки
не для ввода,
а для отображения
данных, устанавливать
значение ItemIndex
можно программно
во время выполнения
приложения.
Компонент
RadioGroup очень удобен,
но не свободен
от некоторых
недостатков.
Его хорошо
использовать,
если надписи
кнопок имеют
примерно одинаковую
длину и если
число кнопок
в каждом столбце
(при размещении
их в нескольких
столбцах) одинаково.
1.1.6.Memo
В
компоненте
Memo формат (шрифт,
его атрибуты,
выравнивание)
одинаков для
всего текста
и определяется
свойством Font.
Если вы сохраните
в файле текст,
введенный или
отредактированный
пользователем,
то будет создан
текстовый файл,
содержащий
только символы
и не содержащий
элементов
форматирования.
При последующем
чтении этого
файла в Memo формат
будет определяться
текущим состоянием
свойства Font
компонента
Memo, а не тем, в
каком формате
ранее вводился
текст.
Свойства
Alignment и WordWrap имеют
тот же смысл,
что, например,
в метках, и
определяют
выравнивание
текста и допустимость
переноса длинных
строк. Установка
свойства ReadOnly
в true задает текст
только для
чтения. Свойство
MaxLength определяет
максимальную
длину вводимого
текста. Если
MaxLength = 0, то длина
текста не ограничена.
Свойства WantReturns
и WantTab определяют
допустимость
ввода пользователем
в текст символов
перевода строки
и табуляции.
Свойство
ScrollBars определяет
наличие полос
прокрутка
текста в окне.
По умолчанию
ScrollBars = ssNone, что означает
их отсутствие.
Пользователь
может в этом
случае перемещаться
по тексту только
с помощью курсора.
Можно задать
свойству ScrollBars
значения
ssHorizontal, ssVertical или ssBoth,
что будет
соответственно
означать наличие
горизонтальной,
вертикальной
или обеих полос
прокрутки.
Свойства
TabCount и Tab имеют
смысл при вводе
текста только
при значении
свойства компонента
WantTabs = true. Это свойство
разрешает
пользователю
вводить в текст
символ табуляции.
Если WantTabs = false, то
нажатие пользователем
клавиши табуляции
просто переключит
фокус на очередной
компонент и
символ табуляции
в текст не введется.
Основное
свойство окна
memo – Lines,
содержащее
текст окна в
виде списка
строк и имеющее
тип TStrings. Начальное
значение текста
можно установить
в процессе
проектирования,
нажав кнопку
с многоточием
около свойства
Lines в окне Инспектора
Объектов. Перед
вами откроется
окно редактирования
списков строк.
Вы можете
редактировать
или вводить
текст непосредственно
в этом окне,
или нажать
кнопку CodeEditor и
работать в
обычном окне
Редактора Кода.
В этом случае,
завершив работу
с текстом, выберите
из контекстного
меню, всплывающего
при щелчке
правой кнопкой
мыши, команду
Close Page и ответьте
утвердительно
на вопрос, хотите
ли вы сохранить
текст в соответствующем
свойстве окна
редактирования.
Во
время выполнения
приложения
вы можете заносить
текст в окно
редактирования
с помощью методов
свойства Lines
типа TStrings. Этот
тип широко
используется
в свойствах
многих компонентов
и его описание
вы можете найти
в во встроенной
справке Delphi. Здесь
коротко укажем
только на его
основные свойства
и методы, используемые
в свойстве
Lines.
Весь
текст, представленный
одной строкой
типа String, внутри
которой используются
разделители
типа символов
возврата каретки
и перевода
строки, содержится
в свойстве
Text.
Доступ
к отдельной
строке текста
вы можете получить
с помощью свойства
Strings[Index: Integer]. Индексы,
как и везде в
Delphi, начинаются
с 0. Так что
Memo1.Lines.Strings[0] — это текст
первой строки.
Учтите, что
если окно
редактирования
изменяется
в размерах при
работе с приложением
и свойство
WordWrap = true, то индексы
строк будут
изменяться
при переносах
строк, так что
в этих случаях
индекс мало
о чем говорит.
Свойство
только для
чтения Count указывает
число строк
в тексте.
Для
очистки текста
в окне надо
выполнить
процедуру
Clear. Этот метод
относится к
самому окну,
а не к его свойству
Lines.
Для
занесения новой
строки в конец
текста окна
редактирования
можно воспользоваться
методами Add
или Append свойства
Lines. Для загрузки
текста из файла
применяется
метод LoadFromFile. Сохранение
текста в фале
осуществляется
методом SaveToFile.
Пусть,
например, в
вашем приложении
имеется окно
редактирования
Edit1, в котором
пользователь
вводит имя
сотрудника,
и есть кнопка,
при щелчке на
которой в окно
Memo1 должна занестись
шапка характеристики
этого сотрудника,
после чего
пользователь
может заполнить
текст характеристики.
Обработчик
щелчка на кнопке
может иметь
вид:
Memo1.Clear;
Memo1.Lines.Add
('Х А Р А К Т Е Р И
С Т И К А');
Memo1.Lines.Add('Сотрудник
'+Edit1.Text) ;.
Memo1.SetFocus;
Загрузка
в окно Memo1 текста
из файла (например,
хранящейся
в файле характеристики
сотрудника)
может осуществляться
командой
Memo1.Lines.LoadFromFile
('text.txt');
Сохранение
текста в файле
может осуществляться
командой
Memo1.Lines.SaveToFile('text.txt');
1.2.Новые методы
решения
При
создании теста,
можно использовать
многостраничный
компонент
NotePad, он даст
возможность
на каждый вопрос
применять
отличное от
других вопросов
оформление
и тем самым
придаст тесту
более красочный
вид.
1.3.Этапы разработки
программы
Определение
требований
к программе
– один из важнейших
этапов. На этом
этапе подробно
описывается
исходная информация
и формулируются
требования
к результату.
Кроме того,
описывается
поведение
программы в
особых случаях.
При
разработке
программы,
предназначенной
для работы в
Windows, требования
к ней могут
включать пункты
о желаемом виде
диалоговых
окон программы.
На
этапе разработки
алгоритма
необходимо
определить
последовательность
действий, которые
надо выполнить
для достижения
поставленной
цели, получения
результата.
Если задача
может быть
решена различными
способами, и,
следовательно,
возможны различные
варианты алгоритма
решения, то,
программист,
используя
некоторый
критерий, выбирает
наиболее подходящее
решение. Затем
составляется
подробное
составление
алгоритма.
При
программировании
в Delphi основная
работа программиста
заключается
в разработке
подпрограмм.
Задачу организации
взаимодействия
разработанных
подпрограмм
берет на себя
Delphi . Также
Delphi удобна
для создания
программ с
визуальными
компонентами,
которые уже
созданы в ней
и имеют стандартный
набор команд.
Глава 2.Р азработка
программы
2.1.Постановка
задачи
Поставленная
задача заключалась
в следующем.
Необходимо
создать программу
которая бы
проводила
тестирование
на основе опросника
Р.Кеттелла и
сохраняла
результат
опроса для
дальнейшего
анализа. Программа
должна помочь
психологам
в проведении
тестирования
студентов.
2.2.Язык программирования
Delphi
Среда разработки
Delphi ориентирована,
прежде всего,
на создание
программ для
семейства
операционных
систем Windows.
При этом большое
внимание уделяется
возможности
визуальной
разработки
приложений
с помощью большого
набора готовых
компонентов,
а в стандартную
поставку Delphi
входят основные
объекты, которые
образуют удачно
подобранную
иерархию из
270 базовых классов,
позволяющих
избежать ручного
кодирования.
Эти компоненты
охватывают
практически
все аспекты
применения
современных
информационных
технологий.
В процессе
построения
приложения
необходимо
выбирать из
палитры компоненты,
на основе которых
будет строиться
проект. Еще до
компиляции
видно результаты
своей работы.
В этом смысле
проектирование
в Delphi мало чем
отличается
от проектирования
в интерпретирующей
среде, однако
после выполнения
компиляции
получаем код,
который исполняется
в 10-20 раз быстрее,
чем то же, самое,
сделанное при
помощи интерпретатора.
Cреда Delphi включает
в себя полный
набор визуальных
инструментов
для скоростной
разработки
приложений
(RAD - rapid application development), поддерживающей
разработку
пользовательского
интерфейса.
2.3.Пользовательский
интерфейс
При
запуске опросника,
программа
попросит вести
личные данные,
такие как: Фамилия,
имя, пол и возраст.

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

При
нажатии кнопки
“Далее >>>” на
форме отобразится
вопрос и три
варианта ответа,
выбор варианта
ответа производится
кликом мыши.
Продолжение
тестирования
производится
кнопкой “Далее
>>>” при этом
на форме будут
отображаться
новые вопросы
и три варианта
ответа.
При
окончание
теста, программа
подсчитает
количество
набранных
баллов и отобразит
характерные
черты личности
тестируемого.
При
закрытие все
факторы сохраняются
в файл с расширением
.txt и именем
файла аналогичным
с фамилией
тестируемого,
папка в которой
буду находится
все эти файлы,
называется
tested м находится
в папке программы.
2.4.Структура
программы
Организационная
структура
реализации
алгоритма
разработки
программы
схематически
изображена
на рисунке 1.
  
2.5.Минимальный
состав оборудования
Процессор
– не ниже Pentium
166;
Операционная
система – Windows
95, 98, 2000, XP;
Оперативная
память – 16 Мб;
Минимальное
требуемое
место на жестком
диске – 5 Мб.
З аключение
В
настоящее время
широко в нашу
жизнь внедряются
информационные
технологии.
На сегодняшний
день, наверное,
не осталось
никакой области,
где–бы они не
применялись.
Одной из сфер
деятельности,
в которой
информационные
технологии
получили широкое
распространение,
являются игры
и досуг.
С ПИСОК
ИСПОЛЬЗУЕМОЙ
ЛИТЕРАТУРЫ
Бобровский
С. Delphi 5 – М.: Питер,
2002.
Гаевский
А.Разработка
программных
приложений
на Delphi 6 – М.:
Киев, 2000.
Джон
Матчо, Дэвид
Р.Фолкнер. «Delphi»
- пер. с англ. –
М.:Бином, 1998г.
Епанишников
А. М., Епанишников
В. А. Программирование
в среде Turbo Pascal 7.0. М.:
Диалог МИФИ,
1998.
Зуев
В. А..
Turbo Pascal 6.0, 7.0. М.: Веста;
Радио и связь,
1998.
Коцюбинский
А.О., Грошев С.В.
Язык программирования
Delphi 5 – М.: «Издательство
Триумф», 1999.
Леонтьев
В. Delphi 5 – М.: Москва
«Олма-Пресс»,
1999.
Моисеев
А. Object Pascal – М.:
Москва,
2000.
Немнюгин
С.А. Программирование
– М.: Питер, 2000.
Программирование
под ред. В.В.Старлова
– М: Питер, 1999
Ремизов
Н. Delphi – М.: Питер,
2000.
Сван
Т. Основы программирования
в среде для
Windows 95. Киев, 1996.
Справочная
система Delphi 5.0 Help.
Т.А.
Ильина. Программирование
на Delphi 6 – М.:
Питер, 2000.
Фаронов
В. В. Delphi 4. Учебный
курс. М.: Нолидж,
1999.
Федоров
А. Г. Создание
Windows-приложений
в среде Delphi. М.: ТОО
«Компьютер
Пресс», 1999.
Хендерсон
К. Руководство
разработчика
баз данных в
Delphi 2. Киев: Диалектика,
1998.
Ч.
Куписевич.
Программирования
на Delphi. – М:
Киев, 1986
Шапошников
И. Delphi 5 – М.:
Санкт-Петербург,
2001.
Шумаков
П. В. Delphi 3 и разработка
приложений
М.: Нолидж, 1999.
1Приложение
unit
fmain;
interface
uses
Windows, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TFormmain =
class(TForm)
Edit1: TEdit;
StaticText1:
TStaticText;
Edit2: TEdit;
StaticText2: TStaticText;
ComboSex:
TComboBox;
StaticText3:
TStaticText;
StaticText4:
TStaticText;
ComboAge:
TComboBox;
Button1: TButton;
Button2: TButton;
procedure
Button1Click(Sender: TObject);
procedure
Button2Click(Sender: TObject);
procedure
FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private
declarations }
public
{ Public
declarations }
end;
var
Formmain: TFormmain;
implementation
uses ftest;
{$R *.dfm}
procedure
TFormmain.Button1Click(Sender: TObject);
var error:Boolean;
begin
nomer:=0;
if edit1.Text='' then
begin
messagedlg('Введите
фамилию',mterror,[mbok],0);
error:=true; end else
error:=false;
if edit2.Text='' then
begin
messagedlg('Введите
имя',mterror,[mbok],0);
error:=true; end else
error:=false;
if
ComboSex.ItemIndex<>0 then
if
ComboSex.ItemIndex<>1 then
begin messagedlg('Введите
пол',mterror,[mbok],0);
error:=true; end else error:=false;
if
ComboAge.ItemIndex<>0 then
if
ComboAge.ItemIndex<>1 then
if
ComboAge.ItemIndex<>2 then
begin messagedlg('Введите
возраст',mterror,[mbok],0);
error:=true; end else error:=false;
if error=false then
begin
Formmain.hide;
formtest.Show;
end;
end;
procedure
TFormmain.Button2Click(Sender: TObject);
begin
close;
end;
procedure
TFormmain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if messagedlg('Вы
действительно
хотите
выйти?',mtcustom,[mbyes,mbno],0)=mrno
then
canclose:=false;
end;
end.
unit ftest;
interface
uses
Windows, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls,
StdCtrls, Spin, ComCtrls;
type
TFormTest =
class(TForm)
buttonnext:
TButton;
Memo1: TMemo;
RadioGroup1:
TRadioGroup;
Label1: TLabel;
Label3: TLabel;
BFinish: TButton;
procedure
buttonnextClick(Sender: TObject);
procedure
FormCreate(Sender: TObject);
procedure
buttonPreviosClick(Sender: TObject);
procedure
FormClose(Sender: TObject; var Action: TCloseAction);
procedure
FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure
BFinishClick(Sender: TObject);
procedure
FormHide(Sender: TObject);
procedure
FormDblClick(Sender: TObject);
private
{ Private
declarations }
public
{ Public
declarations }
end;
var
FormTest: TFormTest;
nomer:Byte; {номер
вопроса}
a,b,c,d,e,f,g,h,i,l,m,n,o,q1,q2,q3,q4:byte;{Факторы}
aa,bb,cc,dd,ee,ff,gg,hh,ii,ll,mm,nn,oo,qq1,qq2,qq34:byte;{Стены}
implementation
uses fmain;
{$R *.dfm}
{Очистка
формы}
procedure clear;
begin
FormTest.Memo1.Lines.Clear;
FormTest.RadioGroup1.Items.Clear;
end;
procedure pballov;
begin
if nomer=3 then
begin
case
FormTest.RadioGroup1.ItemIndex of
0:begin Aa:=aa+2;bb:=bb+2;end;
1:begin aa:=aa+1;bb:=bb+1;end;
2:begin aa:=aa+2;bb:=bb+2;end;
end;
end;
case nomer of
{AA}
27,52,76,101,126,151,176:begin
case FormTest.RadioGroup1.ItemIndex of
0:Aa:=aa+2;
1:aa:=aa+1;
2:aa:=aa+2;
end;
end;
{BB}
28,54,78,103,128,153,178:begin
case FormTest.RadioGroup1.ItemIndex of
0:bb:=bb+2;
1:bb:=bb+1;
2:bb:=bb+2;
end;
end;
...
{QQ3
и QQ4} 24,48,73,98,123,148,173:begin
case FormTest.RadioGroup1.ItemIndex of
0:qq34:=qq34+2;
1:qq34:=qq34+1;
2:qq34:=qq34+2;
end;
end;
end;
FormTest.RadioGroup1.ItemIndex:=-1;
end;
{Подсчёт
вывод и сохранение
результата
}
procedure whoru;
begin
clear;
{подсчёт
всех факторов}
case
formmain.ComboAge.ItemIndex of{от 16 до 18
лет}
0:begin
if
formmain.ComboSex.ItemIndex=0 then {Ж.}
begin
case aa of
0..6:a:=1;
7..8:a:=3;
9..10:a:=4;
11:a:=5;
12..13:a:=6;
14..15:a:=7;
16:a:=8;
17..18:a:=9;
19..20:a:=10;
end;
case bb of
0..1:b:=1;
8,9:b:=8;
11,12:b:=10;
else b:=bb;
end;
…
end;
end;
end;
end;
{Отображение
результата}
case
a of {Фактор
А}
1..5:begin
FormTest.Memo1.Lines.Add('"Шизотермия"');
…
end;
end;
end;
{добавление
вопросов в
Memo}
procedure addtest;
begin
if nomer=1 then
begin
nomer:=nomer+1;
clear;
FormTest.memo1.Lines.Add('1. Я хорошо
понял инструкцию,
которую только
что прочитал:');
FormTest.RadioGroup1.Items.Add('а)
Да;');
FormTest.RadioGroup1.Items.Add('в)
не уверен;');
FormTest.RadioGroup1.Items.Add('с)
нет.');
end
else
begin
if
nomer<188 then
if
FormTest.RadioGroup1.ItemIndex=-1 then
messagedlg('Не
пропускайте
ничего, обязательно
отвечайте на
все вопросы
подряд',mtinformation,[mbok],0)
else
begin
case nomer-1 of
3..186:pballov;
end;
clear;
{Вопросы}
case nomer of
1:begin
FormTest.memo1.Lines.Add('1. Я хорошо
понял инструкцию,
которую только
что прочитал:');
FormTest.RadioGroup1.Items.Add('а)
Да;');
FormTest.RadioGroup1.Items.Add('в)
не уверен;');
FormTest.RadioGroup1.Items.Add('с)
нет.');
end;
2:begin
…
188:begin
whoru;
end;
end;
if nomer<189 then
nomer:=nomer+1;
end;
end;
end;
procedure
TFormTest.buttonnextClick(Sender: TObject);
begin
if nomer=0 then
begin
nomer:=nomer+1;
memo1.ScrollBars:=ssNone;
end;
if nomer=1 then
begin
RadioGroup1.Visible:=true;
label1.Visible:=false;
label3.Visible:=true;
end
else
if nomer=188
then
begin
radiogroup1.Visible:=false;
memo1.ScrollBars:=ssVertical;
buttonnext.Caption:='Завершить';
buttonnext.Visible:=false;
BFinish.Visible:=true;
Label1.Visible:=false;
Label3.Visible:=false;
end;
addtest;
{if n>0 then
begin
case n of
3:pballov;
end;
end;}
end;
procedure
TFormTest.FormCreate(Sender: TObject);
begin
nomer:=0;
end;
procedure
TFormTest.buttonPreviosClick(Sender: TObject);
begin
nomer:=nomer-1;
addtest;
end;
procedure
TFormTest.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Formmain.Edit1.Clear;
Formmain.Edit2.Clear;
Formmain.ComboSex.ItemIndex:=-1;
Formmain.ComboAge.ItemIndex:=-1;
formmain.Show;
end;
procedure
TFormTest.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if nomer<188 then
if
messagedlg('Прекратить
тестирование?',mtcustom,[mbyes,mbno],0)=mrno
then
canclose:=false;
end;
procedure
TFormTest.BFinishClick(Sender: TObject);
begin
close;
end;
procedure
TFormTest.FormHide(Sender: TObject);
begin
memo1.Lines.LoadFromFile('memo\main.txt');
RadioGroup1.Visible:=false;
end;
end.
ТЮМЕНСКИЙ
ГОСУДАРСВЕННЫЙ
КОЛЛЕДЖ СВЯЗИ,
ИНФОРМАТИКИ
И УПРАВЛЕНИЯ
РАЗРАБОТКА
ПРИЛОЖЕНИЯ
«МЕТОДИКА
МНОГОФАКТОРНОГО
ИССЛЕДОВАНИЯ
ЛИЧНОСТИ Р.
КЕТТЕЛЛА»
Курсовой
проект
Тюмень 2003
ТЮМЕНСКИЙ
ГОСУДАРСВЕННЫЙ
КОЛЛЕДЖ СВЯЗИ,
ИНФОРМАТИКИ
И УПРАВЛЕНИЯ
отделение:
информатики
и вычислительной
техники
РАЗРАБОТКА
ПРИЛОЖЕНИЯ
«МЕТОДИКА
МНОГОФАКТОРНОГО
ИССЛЕДОВАНИЯ
ЛИЧНОСТИ Р.
КЕТТЕЛЛА»
Курсовой
проект
Выполнил:
Руководитель:
Зав. Отделения
Дата допуска
к защите
«__» __________ 2003
Тюмень 2003
|