Смекни!
smekni.com

Содержание


В
ведение

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

Сейчас компьютерявляется неотъемлемойчастью работылюдей. Компьютерыиспользуютсяв школах иуниверситетах.Они помогаютсистематизацииполученныеданных как врабочих целях,так и в учебных.

Данномкурсовом проектерассмотренпрограммныйпродукт “Методикамногофакторногоисследованияличности Р.Кеттелла”. Онпредставляетсобой опросникиз 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. Поэтомув программенеобходимопредусмотретьобработку этогоисключения.Например:

varA: integer;

try

A :=StrToInt(Edit1.Text);

...{операторы, использующиепеременнуюА}

excepton EConvertError do

ShowMessage('Вы ввели ошибочное число;

повторите ввод');

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

ifnot (Keyin['0'..'9', ',']) thenKey := #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.Минимальныйсостав оборудования

  • Процессор– не ниже Pentium166;

  • Операционнаясистема – Windows95, 98, 2000, XP;

  • Оперативнаяпамять – 16 Мб;

  • Минимальноетребуемоеместо на жесткомдиске – 5 Мб.


З
аключение

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

С
ПИСОКИСПОЛЬЗУЕМОЙЛИТЕРАТУРЫ

  1. БобровскийС. Delphi 5 – М.: Питер,2002.

  2. ГаевскийА.Разработкапрограммныхприложенийна Delphi 6 – М.:Киев, 2000.

  3. ДжонМатчо, ДэвидР.Фолкнер. «Delphi»- пер. с англ. –М.:Бином, 1998г.

  4. ЕпанишниковА. М., ЕпанишниковВ. А. Программированиев среде Turbo Pascal 7.0. М.:Диалог МИФИ,1998.

  5. ЗуевВ. А..Turbo Pascal 6.0, 7.0. М.: Веста;Радио и связь,1998.

  6. КоцюбинскийА.О., Грошев С.В.Язык программированияDelphi 5 – М.: «ИздательствоТриумф», 1999.

  7. ЛеонтьевВ. Delphi 5 – М.: Москва«Олма-Пресс»,1999.

  8. МоисеевА. Object Pascal – М.:Москва,2000.

  9. НемнюгинС.А. Программирование– М.: Питер, 2000.

  10. Программированиепод ред. В.В.Старлова– М: Питер, 1999

  11. РемизовН. Delphi – М.: Питер,2000.

  12. СванТ. Основы программированияв среде дляWindows 95. Киев, 1996.

  13. Справочнаясистема Delphi 5.0 Help.

  14. Т.А.Ильина. Программированиена Delphi 6 – М.:Питер, 2000.

  15. ФароновВ. В. Delphi 4. Учебныйкурс. М.: Нолидж,1999.

  16. ФедоровА. Г. СозданиеWindows-приложенийв среде Delphi. М.: ТОО«КомпьютерПресс», 1999.

  17. ХендерсонК. Руководстворазработчикабаз данных вDelphi 2. Киев: Диалектика,1998.

  18. Ч.Куписевич.Программированияна Delphi. – М:Киев, 1986

  19. ШапошниковИ. Delphi 5 – М.:Санкт-Петербург,2001.

  20. ШумаковП. В. Delphi 3 и разработкаприложенийМ.: Нолидж, 1999.


1Приложение

unitfmain;


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;

procedureButton1Click(Sender: TObject);

procedureButton2Click(Sender: TObject);

procedureFormCloseQuery(Sender: TObject; var CanClose: Boolean);

private

{ Privatedeclarations }

public

{ Publicdeclarations }

end;


var

Formmain: TFormmain;


implementation


uses ftest;


{$R *.dfm}


procedureTFormmain.Button1Click(Sender: TObject);

var error:Boolean;

begin

nomer:=0;

if edit1.Text='' then

beginmessagedlg('Введитефамилию',mterror,[mbok],0);

error:=true; end elseerror:=false;

if edit2.Text='' then

beginmessagedlg('Введитеимя',mterror,[mbok],0);

error:=true; end elseerror:=false;

ifComboSex.ItemIndex0 then

ifComboSex.ItemIndex1 then

begin messagedlg('Введитепол',mterror,[mbok],0);

error:=true; end else error:=false;

ifComboAge.ItemIndex0 then

ifComboAge.ItemIndex1 then

ifComboAge.ItemIndex2 then

begin messagedlg('Введитевозраст',mterror,[mbok],0);

error:=true; end else error:=false;

if error=false thenbegin

Formmain.hide;

formtest.Show;

end;

end;


procedureTFormmain.Button2Click(Sender: TObject);

begin

close;

end;


procedureTFormmain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

if messagedlg('Выдействительнохотитевыйти?',mtcustom,[mbyes,mbno],0)=mrnothen

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;

procedurebuttonnextClick(Sender: TObject);

procedureFormCreate(Sender: TObject);

procedurebuttonPreviosClick(Sender: TObject);

procedureFormClose(Sender: TObject; var Action: TCloseAction);

procedureFormCloseQuery(Sender: TObject; var CanClose: Boolean);

procedureBFinishClick(Sender: TObject);

procedureFormHide(Sender: TObject);

procedureFormDblClick(Sender: TObject);

private

{ Privatedeclarations }

public

{ Publicdeclarations }

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

caseFormTest.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;

{подсчётвсех факторов}

caseformmain.ComboAge.ItemIndex of{от 16 до 18лет}

0:begin

ifformmain.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;

{Отображениерезультата}

casea 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

ifnomer

ifFormTest.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

end;

end;

end;


procedureTFormTest.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=188then

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;


procedureTFormTest.FormCreate(Sender: TObject);

begin

nomer:=0;

end;


procedureTFormTest.buttonPreviosClick(Sender: TObject);

begin

nomer:=nomer-1;

addtest;

end;


procedureTFormTest.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Formmain.Edit1.Clear;

Formmain.Edit2.Clear;

Formmain.ComboSex.ItemIndex:=-1;

Formmain.ComboAge.ItemIndex:=-1;

formmain.Show;

end;


procedureTFormTest.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

if nomer

ifmessagedlg('Прекратитьтестирование?',mtcustom,[mbyes,mbno],0)=mrnothen

canclose:=false;

end;


procedureTFormTest.BFinishClick(Sender: TObject);

begin

close;

end;


procedureTFormTest.FormHide(Sender: TObject);

begin

memo1.Lines.LoadFromFile('memo\main.txt');

RadioGroup1.Visible:=false;

end;


end.


ТЮМЕНСКИЙГОСУДАРСВЕННЫЙКОЛЛЕДЖ СВЯЗИ,

ИНФОРМАТИКИИ УПРАВЛЕНИЯ


РАЗРАБОТКАПРИЛОЖЕНИЯ«МЕТОДИКАМНОГОФАКТОРНОГОИССЛЕДОВАНИЯЛИЧНОСТИ Р.КЕТТЕЛЛА»


Курсовойпроект


Тюмень 2003

ТЮМЕНСКИЙГОСУДАРСВЕННЫЙКОЛЛЕДЖ СВЯЗИ,

ИНФОРМАТИКИИ УПРАВЛЕНИЯ


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


РАЗРАБОТКАПРИЛОЖЕНИЯ«МЕТОДИКАМНОГОФАКТОРНОГОИССЛЕДОВАНИЯЛИЧНОСТИ Р.КЕТТЕЛЛА»


Курсовойпроект


Выполнил:

Руководитель:

Зав. Отделения

Дата допускак защите

«__» __________ 2003


Тюмень 2003