Средства разработки клиентских программ
Содержание:
ВВЕДЕНИЕ
В рамках курсовой работы решается задача разработки программного продукта, работающего в операционной системе Windows, и выполняющего проверку является ли задаваемый пользователем двумерный массив целых чисел «Магическим квадратом». «Магическим квадратом» называется квадрат, у которого суммы по всем строкам и столбцам, а также суммы по двум диагоналям совпадают.
Исходя из постановки задачи курсовой работы, требуется разработать алгоритм проверки исходных данных на корректность (принадлежность к группе целых чисел, а также проверка, что исходный двумерный массив является квадратом), а также разработать алгоритм проверки соответствия заданного двумерного массива целых числе определению «Магический квадрат».
Для решения задачи был выбран язык программирования Object Pascal и среда программирования Delphi фирмы Borland Enterprise, так как она наиболее широкие возможности для программирования приложений под операционные системы семейства Windows. Среда программирования Delphi является средством быстрой разработки приложений (Rapid Application Development – RAD). Такие среды программирования часто называют визуальными средами разработки: вид рабочих и диалоговых окон во время проектирования, программирования и выполнения программы является одинаковым. В Delphi входят множество библиотек визуальных компонентов, необходимых для профессиональной разработки программных продуктов для операционной системы Windows с минимальными затратами на написание программного кода.
Компилятор Delphi производит небольшие по размерам и высокоэффективные по скорости исполняемые модули. Это означает, что требования к клиентским компьютерам существенно снижаются.
Преимущества Delphi по сравнению с аналогичными программными продуктами:
- быстрота разработки приложения (RAD);
- высокая производительность разработанного приложения;
- низкие требования разработанного приложения к ресурсам компьютера;
- наращиваемость за счет встраивания новых компонент и инструментов в среду Delphi;
- возможность разработки новых компонентов и инструментов собственными средствами Delphi (существующие компоненты и инструменты доступны в исходных кодах);
- удачная проработка иерархии объектов.
Таким образом, среда визуального проектирования Delphi способная взять на себя значительные объемы рутинной работы по подготовке приложений, что увеличивает скорость и качество разработки программ.
Глава 1 Основные аспекты разработки клиентских программ
1.1 Назначение и область применения, технические характеристики
Программа, разрабатываемая в рамках курсовой работы, предназначена для проверки двумерного массива целых чисел, заданного в текстовом файле, на соответствие определению «магический квадрат».
Область применения: учебный процесс. Автоматизация проверки заданий студентов на кафедре математики.
Разработать программу для проверки соответствия задаваемого двумерного массива целых чисел определению «магический квадрат». В магическом квадрате суммы чисел по всем вертикалям, всем горизонталям и двум диагоналям одинаковы.
Входными данными является тестовый файл со значениями ячеек квадрата. При этом столбцы в строке разделяются пробелами, а строки отделяются друг от друга новой строкой. В качестве значений ячеек допускаются целые числа. Программа должна предоставлять возможность как ввода исходных данных вручную в поле ввода, так и загрузку ранее созданных матриц числе из текстового файла.
Выходными данными является сообщение о соответствии входных данных определению магический квадрат, либо сообщение о неправильных входных данных.
Перед проверкой соответствия заданного двумерного массива определению «магический квадрат» необходимо проверить корректность исходных данных:
- проверка, что заданный двумерный массив является непустым квадратом;
- проверка, что в ячейках квадрата записаны целые числа;
Проверка, что заданный двумерный массив является квадратом, осуществляется путем подсчета столбцов в строках исходной матрицы. В каждой строке должно быть одинаковое количество столбцов. Также число столбцов и число строк должно совпадать, а также быть больше нуля.
Проверка, что в ячейках квадрата записаны целые числа, осуществляется способом конвертации значения ячейки в целое число средствами Delphi. В случае возникновения ошибки конвертации считается, что число записано неправильно.
1.2 Описание алгоритма
В программе решаются три независимые друг от друга подзадачи:
- Проверка исходных данных на равное количество строк и столбцов.
- Проверка исходных данных на правильную запись чисел в ячейках матрицы.
- Проверка соответствия исходных данных определению «магический квадрат».
Алгоритм подзадачи проверки исходных данных на равное количество строк и столбцов представлен на рисунке 1. Данные считаются правильными, если после выполнения алгоритма флаг rectOk остался в значении истинно (true). Ключевым моментом алгоритма является разбивка строки на подстроки с помощью встроенной функции Delphi ExactStrings.
Алгоритм проверки исходных данных на правильную запись целых чисел представлен на рисунке 2. Данные считаются правильными, если флаг digitsOk остался в значении истинно (true) после выполнения алгоритма. Ключевым моментом работы алгоритма является преобразование строки в число с помощью функции StrToInt. Если во время преобразования данных не возникло исключительной ситуации (ошибки), то данные считаются правильными и заносятся в массив входных значений M.
Алгоритм проверки соответствия исходных данных определению «магический квадрат» представлен на рис.3. Исходная матрица считается магическим квадратом, если флаг magicOk остался в значении истинно (true) после выполнения алгоритма.
Рис.1 Алгоритм проверки равного количества строк и столбцов у исходных данных.
Рис.2 Алгоритм проверки правильности ввода целых чисел в ячейки.
Рис.3 Алгоритм определения магического квадрата.
1.3 Организация входных и выходных данных
В качестве входных данных рассматривается текстовый файл, в котором записывается двумерный массив целых чисел. Строки разделяются переводом строки, а столбцы – пробелом. Существует возможность редактирования загруженных входных данных непосредственно в программе.
В качестве выходных данных рассматривается сообщение о соответствии исходного двумерного массива определению «магический квадрат». Также в качестве выходных данных могут быть сообщения об ошибках: неравное количество строк и столбцов, пустой входной массив или наличие нечисловых значений в ячейках входной матрицы.
1.4 Выбор состава технических и программных средств
Для решения задачи был выбран язык программирования Object Pascal и среда программирования Delphi фирмы Borland Enterprise, так как она наиболее широкие возможности для программирования приложений под операционные системы семейства Windows. Преимущества Delphi по сравнению с аналогичными программными продуктами:
- быстрота разработки приложения (RAD);
- высокая производительность разработанного приложения;
- низкие требования разработанного приложения к ресурсам компьютера;
Среда разработки Delphi работает на операционных системах начиная от Windows XP, со свободным дисковым пространством от 512 мегабайт и оперативной памятью от 1 Гигабайта.
ГЛАВА 2 Разработка рабочего проекта
2.1 Разработка программы
Для разработки приложения «Магический квадрат» используется среда визуального программирования Delphi. Проект программы содержит 2 окна:
- Form1 – ввод исходных данных и определение магического квадрата;
- Form2 – вывод информации о программе
Окно Form1 «Магический квадрат представлено на рисунке 4.
Рис.4 Окно «Магический квадрат»
Компонент Form1.
Свойства:
Caption – Магический квадрат;
ClientHeight – 408;
ClientWidth – 573;
События – нет;
0 – компонент TButton
Свойства:
Caption – Загрузить из файла;
События:
btn1Click – обработка клика по кнопке;
- – Компонент TButton
Свойства:
Caption – Проверка;
События:
btn2Click – обработка клика по кнопке;
- – Компонент TMemo
Свойства:
Название – mmo1;
3 – компонент TButton
Свойства:
Caption – О программе;
События:
btn3Click – обработка клика по кнопке;
- – невизуальный компонент TOpenDialog
Свойства:
Название: dlgOpen1
Filter: Text files|*.txt;
Окно Form2 “О программе” представлено на рисунке 5.
Компонент Form2.
Свойства:
Caption – О программе;
События – нет;
Рис.5 Окно «О программе»
Окно содержит единственный компонент TLabel:
Свойства:
Caption – содержит текст, представленный на рисунке 5
Align: alClient;
Alignment: taCenter;
Обработчик события btn1Click служит для загрузки содержимого файла в поле ввода.
Обработчик события btn2Click служит для определения магического квадрата по исходным данным, находящимся в поле ввода. Алгоритм проверки корректности данных и определения магического квадрата представлены ранее на рис.1 – 3.
Обработчик события btn3Click служит для отображения окна информации о программе.
Исходные коды с комментариями представлены в разделе 3.3.
2.2 Спецификация программы
Исполняемый файл программы «Магический квадрат» имеет название magicrect.exe и расположен в каталоге magicrect/magicrect.exe.
Таблица 1 - Обозначения
Наименование |
Обозначение |
Примечание |
Sample.txt |
Файл с примером двумерного массива |
|
magicrect.dof |
Файл параметров проекта |
Содержит текущие настройки компилятора и компоновщика |
magicrect.dpr |
Файл проекта |
Связывает все файлы, из которых состоит приложение |
magicrect.dsk |
Файл, содержащий Desktop – настройки проекта |
Содержит информацию об открытых окнах и их размещении |
magicrect.Res |
Файл ресурсов |
Содержит пиктограммы, графические изображения |
Unit1.Pas |
Файл программного модуля для формы № 1 |
Определяет функциональность формы № 1 |
Unit2.Pas |
Файл программного модуля для формы № 2 |
Определяет функциональность формы № 2 |
Unit1.Dfm |
Файл формы № 1 |
Содержит список свойств компонентов формы № 1 |
Unit2.Dfm |
Файл формы № 2 |
Содержит список свойств всех компонентов формы № 2 |
Unit1.Dcu |
Объектный файл для Unit1.Pas |
Откомпилированная версия Unit1.Pas |
Unit2.Dcu |
Объектный файл для Unit2.Pas |
Откомпилированная версия Unit2.Pas |
2.3 Текст программы
Модуль Unit1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2;
type
TForm1 = class(TForm)
btn1: TButton; {кнопка загрузки}
btn2: TButton; {кнопка проверки}
mmo1: TMemo; {поле ввода значений ячеек квадрата}
dlgOpen1: TOpenDialog;
btn3: TButton; {диалог открытия файла}
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
begin
{выбрать файл на диске}
if dlgOpen1.Execute then
begin
mmo1.Lines.Clear; {очистить поле ввода}
mmo1.Lines.LoadFromFile(dlgOpen1.FileName); {загрузить в поле ввода содержимое файла }
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
var
baseSum,curSum,i,j,rows,cols,ncols: Integer;
s:string;
List: TStrings;
rectOk,digitsOk,magicOk: Boolean;
M: array of array of Integer;
begin
rectOk:=true; {квадрат имеет одинаковое количество строк и столбцов}
digitsOk:=True; {в ячейках квадрата записаны только целые числа }
ncols:=0; {счетчик колонок}
rows:=mmo1.Lines.Count; {количество строк в поле ввода }
{1. Расчет размеров кдварата }
for i:=1 to rows do
begin
{1.1. Разбить текущую строку на ячейки, разделитель - пробел }
s:=mmo1.Lines[i-1];
List := TStringList.Create;
try
ExtractStrings([' '], [], PChar(s), List);
{1.2. посчитать количество колонок }
cols:=List.Count;
{1.3. В случае несовпадения количества колонок в разных строках -
выдать флаг, что квадрат записан не правильно}
if (ncols=0) then ncols:=cols
else if (cols<>ncols) then rectOk:=false;
finally
List.Free;
end;
end;
{ при несовпадении количества строк и колонок выдать предупреждение,
что квадрат неправильный }
if (rows<>ncols) then rectOk:=false;
if (not rectOk) then MessageDlg('Не совпадает количество строк и столбцов',mtError,[mbCancel], 0)
else
begin
{ 2. Считывание ячеек квадрата }
{2.1. Выделение памяти под массив }
SetLength(M,rows,ncols);
{2.2. Считывание значений }
for i:=1 to rows do
begin
s:=mmo1.Lines[i-1];
List := TStringList.Create;
try
ExtractStrings([' '], [], PChar(s), List);
cols:=List.Count;
for j:=1 to cols do
begin
try
M[i-1,j-1] := StrToInt(List[j-1]);
except
on Exception : EConvertError do
{ если не удалось сконвертировать строку - выдать флаг,
что в ячейках квадрата присутствуют нечисловые данные }
digitsOk:=false;
end;
end;
finally
List.Free;
end;
end;
if (not digitsOk) then MessageDlg('Неправильный формат чисел в ячейках',mtError,[mbCancel], 0)
else
begin
if (rows=0) then MessageDlg('Не заданы входные данные',mtError,[mbCancel], 0)
else
begin
{расчет суммы по первой строке }
baseSum:=0;
for i:=1 to ncols do baseSum:= baseSum + M[0,i-1];
magicOk:=true;
{ расчет сумм по строкам и столбцам, если сумма не равна базовой,
то выдлать флаг, что квадрат не магический }
for i:=1 to ncols do
begin
curSum:=0;
for j:=1 to rows do
begin
curSum:=curSum + M[j-1,i-1];
end;
if (curSum<>baseSum) then magicOk:=false;
curSum:=0;
for j:=1 to rows do
begin
curSum:=curSum + M[i-1,j-1];
end;
if (curSum<>baseSum) then magicOk:=false;
end;
{ расчет суммы по диагонале слева направо }
curSum:=0;
for j:=1 to rows do
begin
curSum:=curSum + M[j-1,j-1];
end;
if (curSum<>baseSum) then magicOk:=false;
{расчет суммы по диагонали справа налево }
curSum:=0;
for j:=1 to rows do
begin
curSum:=curSum + M[j-1,ncols - j];
end;
if (curSum<>baseSum) then magicOk:=false;
{выдача результата}
if (magicOk) then MessageDlg('Это магический квадрат',mtInformation,[mbOK], 0)
else MessageDlg('Это не магический квадрат',mtInformation,[mbOK], 0);
end;
end;
M:=NIL; {освобождение памяти }
end;
end;
procedure TForm1.btn3Click(Sender: TObject);
var
dlg: TForm2;
begin
{показать окно о программе}
dlg:=TForm2.Create(self);
dlg.ShowModal;
dlg.Free;
end;
end.
2.4 Тестирование программы
Для тестирования работы программы требуется запустить исполняемый файл magicrect.exe и загрузить тестовый пример sample.txt для анализа (путем нажатия на кнопку «Загрузить из файла». Вид окна после загрузки примера представлен на рисунке 6.
Рис.6 Вид окна после загрузки тестового примера.
После нажатия на кнопку «Проверка» должно появится сообщение «Это магический квадрат»:
Рис.7 Результат обработки тестового примера.
Если изменить первую цифру на букву «а», то результат будет представлять собой сообщение об ошибке:
Рис.8 Сообщение об ошибке при неправильных входных данных.
Теперь если заменить букву «а» на цифру «0», то результат будет представлять собой сообщение о том, что исходные данные не являются магическим квадратом.
Рис.9 Сообщение о том, что исходные данные не являются магическим квадратом
ЗАКЛЮЧЕНИЕ
В ходе курсовой работы получены навыки в составлении алгоритмов, реализации их во время программирования программного продукта, а также в отладке разработанной программы. Также закреплены навыки работы среде визуального проектирования программ Delphi с использованием языка программирования Object Pascal.
Цели и задачи курсовой работы выполнены полностью.
Список использованных источников
- Архангельский А. Я. Программирование в Delphi для Windows. Версии 2006, 2007, Turbo Delphi (+ CD-ROM); Бином-Пресс - Москва, 2018. - 308 c.
- Хомоненко Анатолий , Гофман Владимир , Мещеряков Евгений Delphi 7; БХВ-Петербург - Москва, 2015. - 938 c.
- Осипов Д. Базы данных и Delphi. Теория и практика. — СПб.: БХВ-Петербург, 2016. — С. 752. — ISBN 978-5-9775-0659-5
- Осипов Д. Delphi. Программирование для Windows, OS X, iOS и Android.- СПб.: БХВ-Петербург, 2014.- С.464.- 978-5-9775-3289-1
- Кнут Д. Э. Искусство программирования. Т. 1 : пер. с англ. / Дональд Э. Кнут ; под общ. ред. Ю. В. Козаченко. - М. [и др.], 2017. - 712 с. : ил.
- Вирт Н. Алгоритмы и структуры данных : с примерами на Паскале / Никлаус Вирт ; [пер. с англ. Д.Б. Подшивалова]. - СПб., 2017. - 350, [1] с. : ил.
- www.delphiexpert.ru/
- www.delphi.int.ru/
- www.edelphi.ru/
- www.delphisources.ru/
А |
- Разработка регламента выполнения процесса «Управление документооборотом» (1 Построение бизнес-процессов «как есть»)
- Информация в материальном мире. Теоретические аспекты изучения информации
- Разработка регламента выполнения процесса «Управление документооборотом
- Языки гипертекстовой разметки
- Разработка регламента выполнения процесса «Складской учет»
- История развития средств вычислительной техники .
- Учетные регистры, их классификация и способы записи в них
- Перевод реалий
- Нулевой артикул в английском языке
- Разработка клиентского и серверного приложения по организации чата с применением протокола TCP на платформе WIN 32
- Предпринимательское право
- Возмещения морального вреда