Разработка программы для создания кроссвордов
Разработка программы, позволяющей автоматизировать процесс разгадывания кроссворда. Обоснование языка программирования, руководство системного программиста. Характеристика и специфика требований, предъявляемых к программе или программному изделию.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 04.11.2016 |
Размер файла | 179,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Кроссворд - одно из любимых время препровождения многих людей. Многие издания прессы содержат различные варианты кроссвордов. Процесс разгадывания кроссворда сложное и интересное занятие. В процессе разгадывания человек тренирует логическое мышление и память, узнает новую информацию. Кроссворд, как и многие игры, не имеет строгих правил и жёстких ограничений, но есть традиции, которых придерживается большинство «кроссвордных» изданий. Обычно, когда упоминаются «правила кроссворда», имеется в виду именно этот негласный стандарт, и уточняются только отклонения от него.
Актуальность выбранной темы связанна с тем, что кроссворд увлекательное занятие, решение кроссвордов, помогает разогнать скуку, скоротать время в транспорте или время любого утомительного ожидания. С помощью кроссвордов можно самым лучшим образом провести время в компании своих друзей. Причем разгадывание кроссвордов значительно расширяет кругозор человека, стимулирует мышление, развивает логику, улучшает сообразительность, оттачивает умение доводить все начинания до логического завершения.
Целью данного курсового проекта является: разработка программы для создания кроссвордов.
Задачи курсового проекта: необходимо реализовать программу, позволяющую автоматизировать процесс создания кроссворда.
1. Теоретическая часть
1.1 Анализ требований
В данном проекте необходимо реализовать программу, позволяющую автоматизировать процесс разгадывания кроссворда.
Исходными данными являются:
конфигурация кроссворда;
список слов, которые можно использовать для разгадывания.
Под конфигурацией кроссворда понимается некий набор пустых и заполненных квадратов.
1.2 Обоснование языка программирования
Для реализации поставленной задачи решено использовать среду быстрой разработки программ Delphi 7. Данная система является удачной комбинацией простого языка программирования Pascal, вернее его потомка Object Pascal, с самыми современными технологиями в мире программирования.
С помощью Delphi можно быстро и эффективно разрабатывать пользовательский интерфейс, отвечающим самым высоким требованиям.
Delphi - это продукт Borland International для быстрого создания приложений. Высокопроизводительный инструмент визуального построения приложений включает в себя настоящий компилятор кода и предоставляет средства визуального программирования, несколько похожие на те, что можно обнаружить в Microsoft Visual Basic или в других инструментах визуального проектирования.
Delphi 7 предоставляет программисту встроенные шаблоны форм и приложений, которые можно использовать для того, чтобы быстро начать разработку собственных прикладных программ. В систему также включены часто используемые диалоговые панели. Delphi 7 является самым быстрым в мире инструментом разработки приложений баз данных. Простые программы Delphi 7 могут поставляться в виде единственного исполняемого модуля без дополнительных библиотек DLL, необходимых при использовании иных сред разработки.
1.3 Назначение разработки
Программа предназначена для личного использования дома или во время релаксационных пауз на предприятии. Программа позволяет автоматизировать разгадывание кроссвордов на основе хранимых схемы кроссворда и словаря слов.
1.4 Требования к программе или программному изделию
Требования к функциональным характеристикам
Программа должна обеспечивать возможность выполнения следующих функций:
- открытие схемы кроссворда;
- открытие пользовательского словаря слов;
- разгадывания кроссворда;
- выдача промежуточных вариантов заполнения.
Исходные данные:
- схема расположения слов в кроссворде;
- список слов в пользовательском словаре.
Требования к составу и параметрам технических средств
Система должна работать на IBM совместимых персональных компьютерах.
Минимальная конфигурация:
- тип процессора Pentium 100 и выше;
- объем оперативного запоминающего устройства 64 Мб и более.
Требования к информационной и программной совместимости
Система должна работать под управлением семейства операционных систем Win 32 (Windows 95, Windows 98, Windows 2000, Windows NT и т. п.).
2. Практическая часть
2.1 Проектирование
Проектирование системы необходимо начать с разработки метода организации данных.
Для хранения конфигурации кроссворда целесообразно использовать внешний файл. В качестве базового типа файла будем использовать ini-файл. Формат ini-файлов очень прост. ini-файл представляет собой текстовый файл. Секциями называется группа параметров. В тексте название секции выделяется квадратными скобками. Данные хранятся в виде строки: «<Имя ключа>=<Значение>». Для доступа к значению ключа вызывается функция, параметрами которой передаются имя секции и имя ключа.
Исторически ini-файлы появились еще в windows 3.1 и использовались там для хранения системной информации. Позже для этих целей использовался системный реестр, позволяющий представлять любую древовидную структуру. В данном проекте используется ini-файл из-за легкой переносимости и простой возможности редактировать данные с помощью любого текстового редактора.
В файле, хранящем информацию о конфигурации кроссворда необходима следующая информация:
ширина кроссворда в буквах;
высота кроссворда в буквах;
количество слов;
матрица шаблона (схемы);
информация о координатах каждого слова.
Для хранения списка слов можно использовать обычный текстовый файл, в котором каждое слово хранится в отдельной строке.
Программа в процессе работы должна позволять пользователю открывать различные схемы кроссворда, а также различные файлы словарей.
Для реализации основной функции подбора вариантов необходимо разработать алгоритм рекурсивного подбора вариантов с промежуточным выводом вариантов.
Пользовательский интерфейс - первое, с чем сталкивается пользователь при запуске программы. Первое впечатление о любой программе у пользователя складывается в первые мгновения работы с ней. И здесь дружелюбность пользовательского интерфейса чрезвычайно важна. Весь человеко-машинный интерфейс при работе с компьютером является интерфейсами операционной системы и программ, с которыми пользователь работает.
Понятие дружелюбного пользовательского интерфейса включает в себя всю совокупность удобства, информативности и интуитивной понятности пользовательского интерфейса. Косвенно, хороший дружественный интерфейс свидетельствует о хорошем уровне программы. Наличие удобного интерфейса ускоряет работу с программой, уменьшает время на обучение персонала работе с ней.
Информативность представления информации жизненно важна во многих прикладных областях, например управление технологическим процессом на ответственных участках производства. По тому насколько быстро оператор увидит выход какой-либо величины за заданные границы, тем быстрее он среагирует на эту исключительную ситуацию, тем меньшие последствия будут. Кроме того, его реакция на подобную ситуацию опять же должна использовать некие органы управления технологическим процессом, находящиеся перед ним, другими словами - это также пользовательский интерфейс.
Даже если не брать столь ответственные области применения компьютерной техники, роль пользовательского интерфейса нельзя недооценивать. Представим себе программу, с которой ежедневно работают миллионы людей во всем мире, например текстовый редактор Word. Возьмем, к примеру, операцию поиска. Если представить, что такая операция в новой версии будет экономить при работе одну десятую секунды времени, а за час один человек будет прибегать к такой операции хотя бы один раз, то за рабочий день (8 часов) один миллион человек сэкономит 222 часа рабочего времени! А из-за чего может получиться разница в 0,1 секунду? Да практически из-за ничего - разное положение кнопок, например.
Таким образом, важность пользовательского интерфейса ни в коем случае не стоит приуменьшать.
2.2 Кодирование
В Delphi 7 имеется специальный класс tIniFile, максимально упрощающий программистам работу с файлами такого формата. При создании данного класса необходимо указать имя файла. По умолчанию, если не указывать путь к файлу, подставляется путь к системной директории windows. Данный класс предоставляет набор операций по чтению и записи параметров, максимально упрощая работу программиста. Значения параметров могут записываться и считываться в формате строки, целого, дробного или логического значения. Также допустима интерпретация как дата и время, но данный подход снижает показатели переносимости из-за возможных различных форматов даты времени на различных компьютерах. Программисту также предоставляются методы по работе с секциями в целом, а также по проверке существования значений и секций.
Файлы с конфигурацией кроссворда будем называть файлом схемы (*.scm). В таблице 1 представлены секции и ключи этого файла.
Таблица 1 - Секции и ключи
Секция |
Ключ |
Пример |
Описание |
|
[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);
var i:integer;
begin
if endOfFind then exit; //выход если юзер не хочет больше
if CurWord=MaxWords+1 then //все слова вставлены
begin
inc(FindCount);
OutKrossw(used); // можно выводить
exit; // да и нечего больше вставлять
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;
На рисунке 1 представлена блок схема алгоритмов этой процедуры
Рисунок 1 - «алгоритмы процедуры»
автоматизация кроссворд программирование
2.3 Спецификация программы
В таблице 2 представлены файла проекта.
Таблица 2 - файлы проекта.
Имя файла |
Тип файла |
Описание |
|
endf.dfm |
Файл формы |
Форма запроса продолжения поиска вариантов |
|
endf.pas |
Файл программного модуля |
Модуль запроса продолжения поиска вариантов |
|
KrwCrt.dof |
Файл параметров проекта |
||
KrwCrt.dpr |
Файл проекта |
||
KrwCrt.dsk |
Файл конфигурации проекта |
||
KrwCrt.exe |
Исполняемый файл |
||
KrwCrt.res |
Файл ресурсов |
||
main.dfm |
Файл формы |
Главная форма |
|
main.pas |
Файл программного модуля |
Главный модуль |
|
main.wds |
Файл пользовательского словаря |
Тестовый словарь |
|
1.scm |
Файл схемы кроссворда |
Тестовая схема |
2.4 Руководство системного программиста.
Система состоит из исполняемого файла "KrwCrt.exe" и набора конфигурационных файлов.
Для установки не требуется изменять установки ОС. Рекомендуется поместить ярлык на рабочий стол (Desktop)
Файлы ".scm" представляют собой конфигурационные файлы кроссвордов, в них хранится информация о расположении слов в кроссворде. На расположение этих файлов ограничений не накладывается.
Файлы ".wds" представляют собой пользовательские словари. Файлы представляют собой текстовые файлы, в которых в каждой строке находится одно слово в именительном падеже. На расположение этих файлов ограничений не накладывается.
2.5 Руководство пользователя
Для запуска программы необходимо активизировать исполняемый файл "KrwCrt.exe" или ассоциированный с ним ярлык.
Главное окно программы состоит из следующих частей.
Верхнее меню программы представляет собой стандартное меню и содержит пункты, позволяющие работать с программой.
Панель инструментов содержит кнопки дублирующие пункты главные меню.
Таблица данных представляет собой таблицу, содержащую кроссворд.
Для выбора файла кроссворда необходимо нажать кнопку "Схема" или пункт меню "Открыть схему". В открывшемся диалоговом окне выбрать нужный файл схемы.
Для выбора пользовательского словаря необходимо нажать кнопку "Словарь" или пункт меню "Открыть Словарь". В открывшемся диалоговом окне выбрать нужный файл словаря.
Для запуска процедуры поиска вариантов заполнения необходимо нажать кнопку "Запуск" или пункт меню "Составить". Если программой не было обнаружено ни одного варианта заполнения, будет выдано сообщение " Нет вариантов. Смените схему или увеличьте словарь слов". Если есть хотя бы один вариант заполнения, то он будет выведен. Послы вывода пользователю предлагается закончить процедуру поиска или попытаться найти еще один вариант заполнения.
2.6 Тестирование
Тестирование - это процесс выполнения ПО системы или компонента в условиях анализа или записи получаемых результатов с целью проверки (оценки) некоторых свойств тестируемого объекта.
Тестирование программы производилось методом покрытия переходов.
В процессе тестирования не выявлено ошибок. Программа выполняет все требуемые функции. На основании полученных результатов можно сделать вывод о правильности работы программы. Тестирование не повышает качества ПО - оно указывает на качество программы, но не влияет на него.
«Главное окно программы»
«Запрос продолжение или завершение»
Заключение
В процессе выполнения данного проекта был проведен анализ требований к программе. Была разработана схема хранения данных, выделены основные функции системы. При кодировании программы были изучены возможности среды программирования и классы доступные пользователю. Были запрограммированы и протестированы все функции системы.
Были выполнены все поставленные задачи. Разработанная программа может быть использована для составления кроссвордов в любых организациях (газетах, журналах и т.д.).
При разработке программы был пройден полный цикл проектирования программы от постановки задачи до сдачи её в эксплуатацию.
Можно сделать вывод о том, что разработка программы «Составитель кроссвордов» является целесообразной и будет приносить реальную пользу при использовании в различных организациях.
Список использованной литературы
Лэнгсам Й., Огенстайн М., Тененбаум А. Структуры данных для персональных ЭВМ. - М.: Мир, 2009
Дайитбегов Д.М., Черноусов Е.А. Основы алгоритмизации и алгоритмические языки (второе издание). - М.: Финансы и статистика, 2008
Анатолий, Владимир Гофман, Евгений Мещеряков, Владимир Никифоров Delphi 7. Наиболее полное руководство. СПб, БХВ, 2008
В.В.Фаронов Delphi 7. Руководство программиста. - М., «Нолидж», 2001
Йодан Э. Структурное проектирование и конструирование программ. -, Мир, 2009
А.Я.Архангельский Delphi 7. - М., ЗАО «Издательство «Бином», 2004
А.Я.Архангельский Delphi 7. Справочное пособие. - М., ЗАО «Издательство «Бином», 2004
С.Бобровский Delphi 7. Учебный курс. - СПб, Изд. «Питер», 2008.
Хайдемария Гюнтер, Марк Фервай, Роб Баас. Delphi 7 для Киев: BHV 2013.
Фаронов В.В. Turbo Pascal 7.0. Учебное пособие. М., Нолидж, 2008
Фаронов В.В.Delphi 7. Учебный курс. М.,Нолидж,2000
Приложения
Листинг программы
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
inifiles, Menus, Buttons, Grids, ComCtrls, ExtCtrls, StdCtrls;
type
TFrmMain = class(TForm)
Panel1: TPanel;
StatusBar1: TStatusBar;
sg: TStringGrid;
MainMenu1: TMainMenu;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
BitBtn1: TBitBtn;
OpenDialog: TOpenDialog;
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure sgDrawCell(Sender: TObject; Col, Row: Integer; Rect: TRect;
State: TGridDrawState);
procedure Start(Sender: TObject);
procedure ChShem(Sender: TObject);
procedure ChWords(Sender: TObject);
procedure N5Click(Sender: TObject);
private
{ Private declarations }
public
procedure ShowShem;
procedure LoadMatrix;
procedure OutKrossw(used:tStringList);
function valid(l:tStringList):boolean;
procedure interior(used:tStringList;CurWord:integer);
{ Public declarations }
end;
const MaxRasmer = 20; //максимальная размерность N*N
var
FrmMain: TFrmMain;
ini:tinifile; //ини-шник схемы
words,matrix:tStringList; //словарь и матрица схемы
_W,_H,maxwords:integer; //ширина, высота, всего слов
endOfFind:boolean=false; //хватит искать
shName:string='1.scm'; //схема по умолчанию
wdName:string='main.wds'; //словарь по умолчанию
FindCount:integer; //найдено вариантов
implementation
uses endf;
{$R *.DFM}
//делит строку на две через разделитель
function Split(var s: String; c: Char): String;
var i:Integer;
begin
i:=pos(c,s);
if i=0 then
begin
result:=s;
s:='';
end
else begin
result:=copy(s,1,i-1);
delete(s,1,i);
end;
end;
//инициализация всего
procedure TFrmMain.FormCreate(Sender: TObject);
begin
ini:=tinifile.create(extractFilePath(ParamStr(0))+'1.scm');
words:=tStringList.create;
matrix:=tStringList.create;
if FileExists(extractFilePath(ParamStr(0))+'main.wds') then
words.LoadFromFile(extractFilePath(ParamStr(0))+'main.wds');
LoadMatrix;
ShowShem;
end;
//Отображение схемы на экране
procedure TFrmMain.ShowShem;
var i,j:integer;
s:string[1];
begin
i:=ini.ReadInteger('main','width',6);
sg.ColCount := i;
sg.DefaultColWidth := (sg.Width div i)-2;
i:=ini.ReadInteger('main','height',6);
sg.RowCount := i;
sg.DefaultRowHeight := (sg.height div i)-2;
MaxWords:=ini.ReadInteger('main','words',6);
for i:=0 to matrix.Count-1 do
begin
for j:=1 to length(matrix[i]) do
begin
s:=matrix[i][j];
if s='1' then s:='';
sg.Cells[j-1,i]:=s
end;
end;
end;
//загрузка матрицы из ини-шника
procedure TFrmMain.LoadMatrix;
var i:integer;
begin
matrix.clear;
for i:=1 to ini.ReadInteger('main','height',6) do
begin
matrix.Add(ini.ReadString('matrix',IntToStr(i),'111111'));
end;
_W:=length(matrix[0]);
_H:=matrix.Count;
end;
//изменение размера формы
procedure TFrmMain.FormResize(Sender: TObject);
begin
ShowShem
end;
//прорисовка ячейки кроссворда
procedure TFrmMain.sgDrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
var s:string;
i:integer;
begin
if sg.Cells[col,row]='0' then
begin
sg.Canvas.brush.Color:=clGray;
sg.Canvas.FillRect(Rect);
exit;
end;
sg.Canvas.brush.Color:=clWhite;
sg.Canvas.FillRect(Rect);
if sg.Cells[col,row]='1' then exit;
s:=sg.Cells[col,row];
sg.Canvas.Font.size:=100;
repeat
sg.Canvas.Font.size:= sg.Canvas.Font.size-1;
until (sg.Canvas.TextHeight(S)<SG.DefaultRowHeight)
and (sg.Canvas.TextWidth(S)<SG.DefaultColWidth);
sg.Canvas.TextOut(rect.left,rect.top,sg.Cells[col,row])
end;
//проверка списка используемых слов на то, что их можно вписать
//в выбранные позиции
function TFrmMain.valid(l:tStringList):boolean;
var a:array[1..MaxRasmer,1..MaxRasmer] of char; //матрица в виде массива
i,j:integer;
str,s2:string;
var t,fi,fj,di,dj:integer;
procedure insWord(s:string;words:integer); //вставка слова в массив
var t:integer;
begin
str:=ini.readstring('words',IntToStr(words),'1,1,v'); //загрузка описания слова
fi:=StrToInt(Split(str,',')); //х,у и направление
fj:=StrToInt(Split(str,','));
di:=0;dj:=0;
if str='v' then dj:=1 else di:=1;
for t:=0 to length(s)-1 do
begin
a[fi+di*t,fj+dj*t]:=s[t+1];
end;
end;
begin
for i:=0 to matrix.Count-1 do //копирование из списка в массив
for j:=1 to length(matrix[i]) do
a[i+1,j] := matrix[i][j];
for i:=l.Count-1 downto 1 do
begin
InsWord(l[i],integer(l.objects[i])); //вставка кроме 0-го без проверки (ранее проверено)
end;
result:=false;
str:=ini.readstring('words',IntToStr(integer(l.objects[0])),'1,1,v'); //теперь с проверкой
fi:=StrToInt(Split(str,','));
fj:=StrToInt(Split(str,','));
di:=0;dj:=0;
if str='v' then dj:=1 else di:=1;
for t:=0 to length(l[0])-1 do
begin
if fi+di*t>_H then exit; //выход за границы кроссворда
if 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; //еще не занято
if a[fi+di*t,fj+dj*t]<>l[0][t+1] then exit; //занято но совпадает
end;
result := true; //если мы здесь значит все Ок
end;
//Вывод составленного кроссворда (похоже на предыдущие)
procedure TFrmMain.OutKrossw(used:tStringList);
var i,j,t,fi,fj,di,dj:integer;
str:string;
a:array[1..6,1..6] of char;
procedure insWord(s:string;words:integer);
var t:integer;
begin
str:=ini.readstring('words',IntToStr(words),'1,1,v');
fi:=StrToInt(Split(str,','));
fj:=StrToInt(Split(str,','));
di:=0;dj:=0;
if str='v' then dj:=1 else di:=1;
for t:=0 to length(s)-1 do
begin
a[fi+di*t,fj+dj*t]:=s[t+1];
end;
end;
begin
for i:=0 to matrix.Count-1 do //копирование в матрицу
for j:=1 to length(matrix[i]) do
a[i+1,j] := matrix[i][j];
for t:=0 to used.Count-1 do
begin
InsWord(used[t],integer(used.objects[t])); //вставка ВСЕХ слов без проверки
end;
for i:=0 to matrix.Count-1 do
for j:=1 to length(matrix[i]) do
sg.cells[i,j-1]:=a[i+1,j]; //теперь все на экран
sg.refresh;
if not assigned(FrmOk) then Application.CreateForm(TFrmOk, FrmOk);
if FrmOk.ShowModal=MrOk then //хочет ли юзер еще варианты
endOfFind:=true; //если не хочет
end;
//основная процедура рекурсивного перебора вариантов
//на входе список уже вставленных слов
//и номер вставляемого слова
procedure TFrmMain.interior(used:tStringList;CurWord:integer);
var i:integer;
begin
if endOfFind then exit; //выход если юзер не хочет больше
if CurWord=MaxWords+1 then //все слова вставлены
begin
inc(FindCount);
OutKrossw(used); //можно выводить
exit; // да и нечего больше вставлять
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;
procedure TFrmMain.Start(Sender: TObject); //запуск подбора
var l:tStringList;
begin
FindCount := 0; //количество найденных вариантов
l:=tStringList.Create; //временный список
interior(l,1); //поехали
endOfFind:=false;
if FindCount=0 then showMessage('Нет вариантов'#13'Смените схему или увеличьте словарь слов');
l.Free; //память надо освобождать
end;
//смена схемы
procedure TFrmMain.ChShem(Sender: TObject);
begin
OpenDialog.Filter := 'Файлы схем (*.scm)|*.scm';
OpenDialog.Title:='Выберите схему';
OpenDialog.fileName:='';
if not OpenDialog.Execute then exit;
shName := OpenDialog.fileName;
ini.free;
ini:=tinifile.create(shName);
LoadMatrix;
ShowShem;
end;
//смена словаря
procedure TFrmMain.ChWords(Sender: TObject);
begin
OpenDialog.Filter := 'Файлы словарей (*.wds)|*.wds';
OpenDialog.Title:='Выберите словарь';
OpenDialog.fileName:='';
if not OpenDialog.Execute then exit;
wdName := OpenDialog.FileName;
words.LoadFromFile(wdName);
ShowShem;
end;
//выход
procedure TFrmMain.N5Click(Sender: TObject);
begin
close;
end;
end.
Результат работы программы
Рисунок Б.1 - Главное окно программы.
Рисунок Б.2 - Запрос продолжение поиска.
Размещено на Allbest.ru
...Подобные документы
Разработка игровой программы "разгадывания кроссворда". Создание схемы хранения данных, изучение возможности среды программирования. Требования к функциональным характеристикам, составу и параметрам технических средств, информационной совместимости.
курсовая работа [403,9 K], добавлен 26.03.2015Обзор существующих решений и обоснование выбора языка программирования. Разработка структурной схемы, интерфейса программного продукта. Технические требования к оборудованию, тест программного продукта, руководство системного программиста и оператора.
дипломная работа [2,0 M], добавлен 10.07.2012Разработка программного обеспечения, которое позволит автоматизировать работу менеджера с клиентами и поставщиками. Определение требований, тестирование, описание программы. Руководство системного программиста. Создание СУБД в DELPHI для менеджера.
дипломная работа [775,0 K], добавлен 16.06.2014Требования к программе или программному продукту. Условия эксплуатации и требования к параметрам технических средств. Программное обеспечение, рекомендуемое для функционирования программы. Руководство системного программиста и настройка программы.
отчет по практике [1,1 M], добавлен 22.07.2012Разработка программы, позволяющей приобрести навыки быстрой печати на клавиатуре. Обзор существующих аналогов. Обоснование технических приемов программирования. Тестирование, анализ полученных результатов. Руководство пользователя, листинг программы.
курсовая работа [1,3 M], добавлен 03.04.2015Изучение особенностей растровых и векторных графических редакторов. Создание графического редактора: выбор языка программирования, разработка структуры программы и алгоритма работы. Описание интерфейса программы. Руководство программиста и пользователя.
курсовая работа [1,3 M], добавлен 28.07.2013Разработка программы, реализующей построение объемной гистограммы с использованием свойств языка программирования Java. Возможность графически отобразить статистические данные урожайности как основное требование к программе. Реализация кода программы.
курсовая работа [333,5 K], добавлен 21.01.2013Исследование методов интерполяции функции и разработка программного продукта для автоматизации расчётов, выполняемых в данных методах. Обоснование выбора языка программирования. Требования к программе и программному изделию. Организация работы с ПЭВМ.
дипломная работа [2,1 M], добавлен 16.06.2017Особенности объектно-ориентированного программирования. Основные возможности языка программирования Java, классификация платформ. Создание программы, обеспечивающей вычисление арифметических выражений. Руководство пользователя и характеристика функций.
курсовая работа [1,2 M], добавлен 07.07.2012Обоснование необходимости разработки программы для игры "Тетрис". Математическая и графическая части алгоритма. Выбор языка и среды программирования. Отладка текста программы, разработка интерфейса пользователя. Тестирование, руководство пользователя.
курсовая работа [1,5 M], добавлен 17.01.2011Характеристика системы программирования. Главные составные части Delphi. Интерфейс программного приложения. Результаты работы программы. Руководство системного программиста и оператора. Язык программирования Delphi, среда компилятора Borland 7.0.
курсовая работа [1,6 M], добавлен 29.05.2013История развития, характеристика, предназначение и особенности языка программирования Delphi. Разработка проекта создания кроссворда на объектно-ориентированном языке Delphi, который состоит из 19 вопросов по горизонтали и 16 вопросов по вертикали.
курсовая работа [970,5 K], добавлен 15.05.2014Описание возможностей языка программирования Turbo Pascal. Написание программы создания файлов с прямым доступом, которая также будет обрабатывать наборы данных с определенными полями и ограничениями. Контрольный пример работы поисковой программы.
курсовая работа [563,6 K], добавлен 22.01.2016Техническое задание на разработку программного продукта и требования к программе. Написание алгоритма работы и разработка интерфейса программы. Руководство системного программиста и оператора. Основные методы и принципы тестирования базы данных.
дипломная работа [2,7 M], добавлен 27.01.2013Разработка программы на языке Visual Basic. Спецификация на программный модуль. Ввод, изменение и удаление данных по определенным требованиям. Руководство системного программиста, программиста и оператора. Ведение базы данных в виде таблицы Excel.
курсовая работа [272,5 K], добавлен 21.04.2014Разработка структурной схемы и интерфейса программного комплекса управления сайтом. Выбор языка программирования. Принципы тестирования программы. Разработка руководства оператора и системного программиста. Расчет сметы затрат на программный продукт.
дипломная работа [4,1 M], добавлен 11.06.2012Разработка программы FileInfo, выдающей полную информацию о заданном файле с применением языка программирования С++, используя API функции Win 32. Использование пространств имён .NetFramework. Руководство пользователя и системные требования программы.
курсовая работа [1,2 M], добавлен 25.04.2012Разработка структурной схемы организации данных в информационной системе с описанием всех полей. Анализ требований к программному изделию, к параметрам технических средств, документации. Исследование методов сортировки данных, руководства программиста.
курсовая работа [5,4 M], добавлен 03.04.2012Разработка программы для поиска пути в лабиринте с возможностью задания входа и выхода, наглядное представление решений. Использование языка логического программирования Prolog. Данные и методы решения. Пользовательский интерфейс, листинг программы.
реферат [14,3 K], добавлен 15.10.2012Математическое описание операций преобразования плоских фигур. Выбор и обоснование языка программирования и среды разработки. Задание базовой фигуры. Разработка алгоритма работы программы. Проверка корректности работы программы в различных режимах.
курсовая работа [567,6 K], добавлен 13.10.2014