Разработка прикладного обеспечения, реализующего функции составителя кроссворда

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    143,03 Кб
  • Опубликовано:
    2015-03-14
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка прикладного обеспечения, реализующего функции составителя кроссворда















Курсовая работа

РАЗРАБОТКА ПРИКЛАДНОГО ОБЕСПЕЧЕНИЯ, РЕАЛИЗУЮЩЕГО ФУНКЦИИ СОСТАВИТЕЛЯ КРОССВОРДА

Содержание

Введение

. Теоретическая часть

.1 Анализ требований

.2 Обоснование программирования

. Практическая часть

.1 Первичные требования

.1.1 Требования к функциональным характеристикам

.1.2 Требования к составу и параметрам технических средств

.1.3 Требования к информационной и программной совместимости

.2 Прототип

.3 Модель функционирования

.4 Тестирование программного обеспечения

.4.1 Программа и методика испытаний

.4.2 План тестирования

.4.3 Отчёт о ходе тестирования

.5 Программная документация

.5.1 Техническое задание

.5.2 Описание программы

.5.3 Текст программы

.5.4 Отчёт о результатах тестирования

.6 Эксплуатационная документация

.6.1 Руководство пользователя

.6.2 Сертификация ПО

.6.3 Лицензирование программ

Заключение

Список использованных источников

Приложения

Введение


Цель: Разработать программу, реализующую функции «Составителя кроссворда».

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

Основанием для разработки игровой программы послужило задание на курсовое проектирование по дисциплине «Технология разработки программного обеспечения».

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

Игра со словами называется кроссвордом. Это самая распространенная интеллектуальная игра. Слово «кроссворд <#"784405.files/image001.gif">

Рисунок 1 - Главное окно программы

Рисунок 2 - Запрос продолжения поиска

.3 Модель функционирования

Модель функционирования представлена на рис. 3.

Рисунок 3 - Модель функционирования

.4 Тестирование программного обеспечения

.4.1 Программа и методика испытаний

Тестирование ПО - это процесс выполнения ПО в контролируемых условиях с целью получения ответа на вопрос "Ведет ли ПО себя так, как специфицировано?".

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

Модульное тестирование представляет собой процесс проверки отдельных программных процедур и подпрограмм, входящих в состав программ или программных систем. Модульное тестирование производится непосредственным разработчиком и позволяет проверять все внутренние структуры и потоки данных в каждом модуле. Этот вид тестирования является частью этапа разработки. При модульном тестировании выполняется набор тестов, определяемый разработчиком так, чтобы охват тестированием каждого модуля был не менее 70...75%.

Элементами модульного тестирование являются: синтаксическая проверка - проверка с использованием некоторого инструментального средства для выявления синтаксических ошибок в программном коде; проверка соответствия стандартам кодирования - проверка кода на соответствие стандартам кодирования компании; технический обзор программного кода.

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

.4.2 План тестирования

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

Объект испытаний: «Составитель кроссворда»

Цель испытаний: Проверка полного соответствия программного продукта требованиям заказчика.

Требования к программе: Работоспособность программы в операционных системах WindowsХР/Windows7.

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

Средства и порядок испытаний: Проектирование тестов, выполнение тестирования, анализ полученных результатов.

Структура и оформление документа устанавливается в соответствии с ГОСТ 19.105-78.

.4.3 Отчёт о ходе тестирования

На каждом проходе цикла тестирования создаются: базовая версия ПП, подлежащего тестированию; отчет о ходе тестирования. Цикл тестирования представлен на рисунке 4.

Рисунок 4 - Цикл тестирования

.5 Программная документация

2.5.1 Техническое задание

Техническое задание - исходный документ на проектирование технического объекта (изделия) (Приложение Б). ТЗ устанавливает основное назначение разрабатываемого объекта, его технические характеристики, показатели качества и технико-экономические требования, предписание по выполнению необходимых стадий создания документации (конструкторской, технологической, программной и т.д.) и её состав, а также специальные требования. Форма титульного листа ТЗ на АС представлена в Приложении В. Форма последнего листа ТЗ на АС в Приложении Г.

В соответствии с ГОСТ 19.201-78 программный документ «Техническое задание» содержит следующие разделы.

Введение.

1.      Основание для разработки.

2.      Назначение разработки.

3.      Требования к программе или программному изделию.

.        Требования к программной документации.

.        Стадии и этапы разработки.

.        Порядок контроля и приемки.

.        Приложения.

Техническое задание:

Введение

Настоящее техническое задание, оформленное в соответствии с ГОСТ 19.201-78, содержит требования к редактору, предназначенного для просмотра и редактирования информации о «тренировке логического мышления и памяти» на ПЭВМ.

Основание для разработки

- Основание для разработки

-       Основанием для разработки текстового редактора является задание на курсовой проект по дисциплине “Технология разработки программного обеспечения”.

- Исполнитель и заказчик

- Заказчиком разработки, выполняемой по-настоящему ТЗ, является Мегионский политехнический колледж.

-       Исполнителем разработки, выполняемой по-настоящему ТЗ, является студент группы П-43 Мухаметьяров Д.А.

- Наименование

- Программе, разрабатываемой по-настоящему ТЗ, присваивается наименование: "Составитель кроссворда", в дальнейшем по тексту именуемая ТП.

Назначение разработки

ТП предназначена для выполнения следующих действий на ПЭВМ:

создать программу;

Требования к программе и программному изделию

Требования к составу

Требования к функциональным характеристикам

Требования к надежности

Условия эксплуатации

Требования к составу и параметрам технических средств

ИБ должна функционировать на ПЭВМ со следующими характеристиками

- процессора Pentium 100 и выше;

- ОЗУ 64 Мб и более;

-       НЖМД не менее 10 Мб;

-       графический адаптер EGA (VGA);

-       манипулятор типа “мышь”;

Требования к информационной и программной совместимости

- В качестве языков программирования ТП должен быть использован язык программирования Delphi 7.0.

-       ТП должна функционировать на ПЭВМ с одной из операционных систем WindowsXP/7.

-       Для реализации интерфейса между ТП и пользователем должны использоваться средства графического интерфейса операционной системы.

Требования к маркировке и упаковке

Требования к транспортировке и хранению

Специальные требования

Требования не предъявляются.

Требования к программному средству

Требования к функциональным характеристикам.

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

Требования к надежности

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

Требования к условиям эксплуатации

Носитель с программой должен эксплуатироваться в условиях с температурой от -5 до 50С и влажностью воздуха 10-80%.

Требования к составу и параметрам технических средств

Наличие ПК с графическим адаптером EGA (VGA), клавиатура. Необходимое пространство на жестком диске - не менее 1 Мб.

Требования к информационно-программной совместимости

Программа рассчитана на работу в операционных системах: Windows XP/7.

Требования к программной документации

Требования к составу документации

Состав документации определяется Исполнителем на этапе разработки перечнем разрабатываемых документов и согласовывается с Заказчиком.

В комплект документации в обязательном порядке должны входить:

спецификация;

текст программы;

руководство оператора;

загрузочные модули;

программа и методика испытаний.

Требования к оформлению документации

Программная документация должна быть разработана и оформлена в соответствии с ЕСПД.

Технико-экономические требования

Трудоемкость разработки, отладки и испытаний АИСК должна быть согласована Исполнителем и Заказчиком на этапе заключения договора на выполнение работ.

Стадии и этапы разработки

Создание и отработка АИСК должно производиться по следующим основным этапам:

-й этап. Разработка программы и программной документации.

-й этап. Испытание программы.

-й этап. Подготовка и передача программы.

Порядок контроля и приемки

Приемка разработанного АИСК осуществляется на средствах вычислительной техники Заказчика в объеме, определяемом программой и методикой испытаний АИСК, и в сроки, определенные ведомостью исполнения (календарным планом) работ к соответствующему договору. Результаты приемки АИСК должны быть отражены в техническом акте.

Программа и методика испытаний АИСК выпускается исполнителем в соответствии с ГОСТ 19.301-79 («программа и методика испытаний») и должна быть согласована с Заказчиком.

Порядок внесения изменений в техническое задание


2.5.2 Описание программы

Проектирование системы необходимо начать с разработки метода организации данных.

Для хранения конфигурации кроссворда целесообразно использовать внешний файл. В качестве базового типа файла будем использовать ini-файл. Формат ini-файлов очень прост. Ini-файл представляет собой текстовый файл. Секциями называется группа параметров. В тексте название секции выделяется квадратными скобками. Данные хранятся в виде строки: «<Имя ключа>=<Значение>». Для доступа к значению ключа вызывается функция, параметрами которой передаются имя секции и имя ключа.

В файле, хранящем информацию о конфигурации кроссворда необходима следующая информация:

         ширина кроссворда в буквах;

         высота кроссворда в буквах;

         количество слов

         матрица шаблона (схемы)

         информация о координатах каждого слова

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

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

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

Файлы с конфигурацией кроссворда будем называть файлом схемы (*.scm). Секции и ключи этого файла представлены в таблице 2.

Таблица 2 - Секции и ключи файла схемы.

Секция

Ключ

Пример

Описание

[main]

width

6

Ширина кроссворда


height

6

высота


words

4

количество слов

[matrix]

1,2…N

010100

шаблон кроссворда 0 - нет буквы 1 - там должна быть буква

[words]

1

2,1,v

слова I=X,Y,N I- номер от 1 до words X,Y - координаты первого символа слова N - направление v-вертикальное h-горизонтальное


Класс tStringList представляет собой список строк и ассоциированных с каждой строкой указателя на объект. В данном случае вместо указателя хранится совместимое по типу с указателем 4-х байтного целочисленного числа Integer, значением которого в программе является количество встречаемых слов в тексте. Этот класс прост в работе. Особым его достоинством является быстрый поиск по содержимому. Поиск может осуществляться как по строкам, так и по указателю. Методы SaveToFlile и LoadFomFile позволяют соответственно сохранить и загрузить содержимое в файл.

Будем использовать этот файл для работы со словарем.

Для реализации основной функции подбора вариантов заполнения кроссворда разработана процедура interior.

//основная процедура рекурсивного перебора вариантов

//на входе список уже вставленных слов

//и номер вставляемого слова

procedure TFrmMain.interior(used:tStringList;CurWord:integer);i:integer; endOfFind then exit; //выход если юзер не хочет больше

if CurWord=MaxWords+1 then //все слова вставлены(FindCount);(used); //можно выводить; // да и нечего больше вставлять

end;

for i:=0 to words.Count-1 do //по всем словам из словаря слов

begin

if used.IndexOf(words[i])<>-1 then continue; //в одном кроссворде одно слово дважды не встречается

used.InsertObject(0,words[i],pointer(CurWord)); //вставим в начало списка используемых слов

if valid(used) then //проверка на правильность

interior(used,CurWord+1); //прошло-ищем следующее слово

if endOfFind then exit; //выход если не надо больше

used.delete(0); //теперь удалим последнее слово, т.к. на его место в следующем обороте

end; //цикла вставим новое

end;

Файлы проекта представлены в таблице 3.

Таблица 3 - Файлы проекта

Имя файла

Тип файла

Описание

endf.dfm

Файл формы

Форма запроса продолжения поиска вариантов

endf.pas

Файл программного модуля

Модуль запроса продолжения поиска вариантов

KrwCrt.dof

Файл параметров проекта


KrwCrt.dpr

Файл проекта

Файл конфигурации проекта


KrwCrt.exe

Исполняемый файл


KrwCrt.res

Файл ресурсов


main.dfm

Файл формы

Главная форма

main.pas

Файл программного модуля

Главный модуль

main.wds

Файл пользовательского словаря

Тестовый словарь

1.scm

Файл схемы кроссворда

Тестовая схема


Блок схема алгоритма этой процедуры представлена на рисунке 7.

Рисунок 5 Блок схема алгоритма

Система состоит из исполняемого файла "KrwCrt.exe" и набора конфигурационных файлов.

Для установки не требуется изменять установки ОС. Рекомендуется поместить ярлык на рабочий стол (Desktop)

Файлы ".scm" представляют собой конфигурационные файлы кроссвордов, в них хранится информация о расположении слов в кроссворде. На расположение этих файлов ограничений не накладывается.

Файлы ".wds" представляют собой пользовательские словари. Файлы представляют собой текстовые файлы, в которых в каждой строке находится одно слово в именительном падеже. На расположение этих файлов ограничений не накладывается.

.5.3 Текст программы

Листинг программы представлен в Приложении Д.

.5.4 Отчёт о результатах тестирования

Тестирование программы производилось методом покрытия переходов.

Метод покрытия решений (покрытия переходов)

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

.6 Эксплуатационная документация

.6.1 Руководство пользователя

Для запуска программы необходимо активизировать исполняемый файл "KrwCrt.exe" или ассоциированный с ним ярлык. Ярлык программы представлен на рисунке 5.

Рисунок 6 - Ярлык программы

Главное окно программы состоит из следующих частей:

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

Рисунок 7 - Верхнее меню

Панель инструментов содержит кнопки дублирующие пункты главные меню. Панель инструментов представлена на рисунке 7.

Рисунок 7 - Панель инструментов

Таблица данных представляет собой таблицу, содержащую кроссворд, представлена на рисунке 8.

Рисунок 8 - Таблица данных

Для выбора файла кроссворда необходимо нажать кнопку "Схема" или пункт меню "Открыть схему". В открывшемся диалоговом окне выбрать нужный файл схемы.

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

Для запуска процедуры поиска вариантов заполнения необходимо нажать кнопку "Запуск" или пункт меню "Составить". Если программой не было обнаружено ни одного варианта заполнения, будет выдано сообщение " Нет вариантов. Смените схему или увеличьте словарь слов". Если есть хотя бы один вариант заполнения, то он будет выведен. Послы вывода пользователю предлагается закончить процедуру поиска или попытаться найти еще один вариант заполнения. Главное окно программы представлено на рисунке Е.9. Запрос продолжение поиска представлен на рисунке Е.10.

.6.2 Сертификация ПО

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

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

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

Сертификация - подтверждение соответствия объекта сертификации предъявленным к нему требованиям. Как правило, сертификация проводится специализированными организациями (органами по сертификации).

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

При сертификации программного обеспечения в системе ГОСТ Р, могут быть подтверждены требования, установленные следующими государственными стандартами на программную продукцию:

ГОСТ 19.001-77 Общие положения <#"784405.files/image010.gif">

Рисунок 1.А - Временной график

Рисунок 2.А - Диаграмма сдачи этапов

Приложение Б

Техническое задание

 

Предметная область:

Техническое задание:

Введение

Основание для разработки

Основание для разработки

Исполнитель и заказчик

Наименование

Назначение разработки

Требования к составу

Требования к функциональным характеристикам

Требования к надежности

Условия эксплуатации

Требования к составу и параметрам технических средств

Требования к программному средству

Требования к функциональным характеристикам.

Требования к надежности

Требования к условиям эксплуатации

Требования к составу и параметрам технических средств

Требования к информационно-программной совместимости

Требования к программной документации

Технико-экономические требования

Стадии и этапы разработки

Порядок контроля и приемки

Порядок внесения изменений в техническое задание

Приложение В

Форма последнего листа ТЗ на АС

Наименование организации, предприятия

Должность исполнителя

Фамилия, имя отчество

Подпись

Дата

Мегионский политехнический колледж

Студент

Мухаметьяров Дмитрий Акрамович

Мухаметьяров

21.11.2014


Приложение Г


Листинг программы

main;, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Menus, Buttons, Grids, ComCtrls, ExtCtrls, StdCtrls;= class(TForm): TPanel;: TStatusBar;: TStringGrid;: TMainMenu;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TBitBtn;: TOpenDialog;FormCreate(Sender: TObject);FormResize(Sender: TObject);sgDrawCell(Sender: TObject; Col, Row: Integer; Rect: TRect;: TGridDrawState);Start(Sender: TObject);ChShem(Sender: TObject);ChWords(Sender: TObject);N5Click(Sender: TObject);

{ Private declarations }ShowShem;LoadMatrix;OutKrossw(used:tStringList);valid(l:tStringList):boolean;interior(used:tStringList;CurWord:integer);

{ Public declarations };MaxRasmer = 20; //максимальная размерность N*N : TFrmMain;:tinifile; //ини-шник схемы,matrix:tStringList; //словарь и матрица схемы,_H,maxwords:integer; //ширина, высота, всего слов:boolean=false; //хватит искать:string='1.scm'; //схема по умолчанию:string='main.wds'; //словарь по умолчанию:integer; //найдено вариантовendf;

{$R *.DFM}

//делит строку на две через разделитель

function Split(var s: String; c: Char): String;i:Integer;:=pos(c,s);i=0 then:=s;:='';begin:=copy(s,1,i-1);(s,1,i);;;

//инициализация всегоTFrmMain.FormCreate(Sender: TObject);:=tinifile.create(extractFilePath(ParamStr(0))+'1.scm');:=tStringList.create;:=tStringList.create;FileExists(extractFilePath(ParamStr(0))+'main.wds') then.LoadFromFile(extractFilePath(ParamStr(0))+'main.wds');;

ShowShem;

end;

//Отображение схемы на экране

procedure TFrmMain.ShowShem;i,j:integer;:string[1];:=ini.ReadInteger('main','width',6);.ColCount:= i;.DefaultColWidth:= (sg.Width div i)-2;:=ini.ReadInteger('main','height',6);.RowCount:= i;.DefaultRowHeight:= (sg.height div i)-2;:=ini.ReadInteger('main','words',6);i:=0 to matrix.Count-1 doj:=1 to length(matrix[i]) do:=matrix[i][j];s='1' then s:='';.Cells[j-1,i]:=s;

//загрузка матрицы из ини-шника

procedure TFrmMain.LoadMatrix;i:integer;.clear;i:=1 to ini.ReadInteger('main','height',6) do.Add(ini.ReadString('matrix',IntToStr(i),'111111'));;:=length(matrix[0]);:=matrix.Count;;

//изменение размера формыTFrmMain.FormResize(Sender: TObject);;

//прорисовка ячейки кроссвордаTFrmMain.sgDrawCell(Sender: TObject; Col, Row: Integer;: TRect; State: TGridDrawState);s:string;:integer;sg.Cells[col,row]='0' then.Canvas.brush.Color:=clGray;.Canvas.FillRect(Rect);;;.Canvas.brush.Color:=clWhite;.Canvas.FillRect(Rect);sg.Cells[col,row]='1' then exit;:=sg.Cells[col,row];.Canvas.Font.size:=100;.Canvas.Font.size:= sg.Canvas.Font.size-1;(sg.Canvas.TextHeight(S)<SG.DefaultRowHeight)(sg.Canvas.TextWidth(S)<SG.DefaultColWidth);.Canvas.TextOut(rect.left,rect.top,sg.Cells[col,row])

end;

//проверка списка используемых слов на то, что их можно вписать

//в выбранные позицииTFrmMain.valid(l:tStringList):boolean;a:array[1..MaxRasmer,1..MaxRasmer] of char; //матрица в виде массива,j:integer;,s2:string;t,fi,fj,di,dj:integer;insWord(s:string;words:integer); //вставка слова в массивt:integer;:=ini.readstring('words',IntToStr(words),'1,1,v'); //загрузка описания слова

fi:=StrToInt(Split(str,',')); //х,у и направление

fj:=StrToInt(Split(str,','));:=0;dj:=0;str='v' then dj:=1 else di:=1;t:=0 to length(s)-1 do[fi+di*t,fj+dj*t]:=s[t+1];;; i:=0 to matrix.Count-1 do //копирование из списка в массив

for j:=1 to length(matrix[i]) do[i+1,j]:= matrix[i][j];i:=l.Count-1 downto 1 do

begin(l[i],integer(l.objects[i])); //вставка кроме 0-го без проверки (ранее проверено)

end;:=false; str:=ini.readstring('words',IntToStr(integer(l.objects[0])),'1,1,v'); //теперь с проверкой:=StrToInt(Split(str,','));:=StrToInt(Split(str,','));:=0;dj:=0;str='v' then dj:=1 else di:=1;t:=0 to length(l[0])-1 dofi+di*t>_H then exit; //выход за границы кроссвордаfj+dj*t>_W then exit;

if a[fi+di*t,fj+dj*t]='0' then exit; //там вообще нельзя буквы ставить

if a[fi+di*t,fj+dj*t]='1' then continue; //еще не занятоa[fi+di*t,fj+dj*t]<>l[0][t+1] then exit; //занято, но совпадает

end;:= true; //если мы здесь значит все Ок;

//Вывод составленного кроссворда (похоже на предыдущ.)

procedure TFrmMain.OutKrossw(used:tStringList);i,j,t,fi,fj,di,dj:integer;:string;:array[1..6,1..6] of char;insWord(s:string;words:integer);t:integer;:=ini.readstring('words',IntToStr(words),'1,1,v');:=StrToInt(Split(str,','));:=StrToInt(Split(str,','));:=0;dj:=0;str='v' then dj:=1 else di:=1;t:=0 to length(s)-1 do[fi+di*t,fj+dj*t]:=s[t+1];;;i:=0 to matrix.Count-1 do //копирование в матрицуj:=1 to length(matrix[i]) do[i+1,j]:= matrix[i][j];t:=0 to used.Count-1 do(used[t],integer(used.objects[t])); //вставка ВСЕХ слов без проверки;i:=0 to matrix.Count-1 doj:=1 to length(matrix[i]) do

sg.cells[i,j-1]:=a[i+1,j]; //теперь все на экран

sg.refresh;not assigned(FrmOk) then Application.CreateForm(TFrmOk, FrmOk);FrmOk.ShowModal=MrOk then //хочет ли юзер еще варианты

endOfFind:=true; //если не хочет;

//основная процедура рекурсивного перебора вариантов

//на входе список уже всавленных слов

//и номер вставляемого словаTFrmMain.interior(used:tStringList;CurWord:integer);i:integer; endOfFind then exit; //выход если юзер не хочет больше

if CurWord=MaxWords+1 then //все слова вставлены(FindCount);(used); //можно выводить

exit; // да и нечего больше вставлять;i:=0 to words.Count-1 do //по всем словам из словаря словused.IndexOf(words[i])<>-1 then continue; //в одном кросворде одно слово дважды не встречается.InsertObject(0,words[i],pointer(CurWord)); //всавим в начало списка используемых словvalid(used) then //проверка на правильность(used,CurWord+1); //прошло-ищем следующее словоendOfFind then exit; //выход, если не надо больше.delete(0); //теперь удалим последнее слово, тк на его место в следующем обороте; //цикла вставим новое

end;

procedure TFrmMain.Start(Sender: TObject); //запуск подбора l:tStringList;:= 0; //количество найденных вариантов

l:=tStringList.Create; //временный список

interior(l,1); //поехали:=false; FindCount=0 then showMessage('Нет вариантов'#13'Смените схему или увеличьте словарь слов');.Free; //память надо освобождать

end;

//смена словаряTFrmMain.ChWords(Sender: TObject);.Filter:= 'Файлы словарей (*.wds)|*.wds';.Title:='Выберите словарь';.fileName:='';not OpenDialog.Execute then exit;:= OpenDialog.FileName;.LoadFromFile(wdName);;;

//выходTFrmMain.N5Click(Sender: TObject);;;.

Приложение Д

Результат работы программы

Рисунок Б.6 - Главное окно программы.

Рисунок Б.7 - Запрос продолжение поиска.

Похожие работы на - Разработка прикладного обеспечения, реализующего функции составителя кроссворда

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!