Создание программы на языке Delphi 70

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

СЄВЄРОДОНЕЦЬКЕ ВИЩЕ ПРОФЕСІЙНЕ УЧИЛИЩЕ

Спеціальність: 5.091504"Обслуговування комп’ютерних та інтелектуальних систем та мереж"



















ПОЯСНЮВАЛЬНА ЗАПИСКА ДО КУРСОВОЇ РОБОТИ

З ПРЕДМЕТУ "ПРОГРАМУВАННЯ ТА АЛГОРИТМИЧНІ МОВИ"

НА ТЕМУ: "РОЗРОБКА ПРОГРАМИ ЗА ДОПОМОГОЮ МОВИ ПРОГРАМУВАННЯ DELPHI"







Студент групи № Т-09-4 Лучшев Олександр Валерійович

Керівник роботи Руднєв Максим Миколайович







Сєвєродонецьк 2010


МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

СЄВЄРОДОНЕЦЬКЕ ВИЩЕ ПРОФЕСІЙНЕ УЧИЛИЩЕ

ЗАТВЕРДЖУЮ:

Заступник директора з УВР

_____________ О.П. Лимар

"___" ______ 2010 р.



ЗАВДАННЯ

НА КУРСОВУ РОБОТУ СТУДЕНТА ГРУПИ № Т-08-4

Лучшев Олександр Валерійович

Спеціальність: 5.091504 "Обслуговування комп’ютерних та інтелектуальних систем та мереж"

1. Тема роботи "Розробка програми за допомогою мови програмування Delphi"

2. Термін подання студентом закінченої роботи. .2010 р.

3. Вихідні данні до дипломної кваліфікаційної роботи: методичний посібник з дисципліни

4. Зміст пояснювальної записки (перелік питань, які підлягають розробці ): 1.Постановка задачі 2. Математичний опис задачі 3.Розробка алгоритму 4.Структура програми 5.Описання початкових даних, на які розрахована програма 6.Інструкція оператора 7.Описання отриманих результатів

5. Перелік додатків: 1. Блок-схема алгоритму. 2. Лістинг програми. 3. Результати роботи програми

6. Дата видачі завдання . .2010 р.

Керівник роботи

Завдання прийняв до виконання




МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

СЄВЄРОДОНЕЦЬКЕ ВИЩЕ ПРОФЕСІЙНЕ УЧИЛИЩЕ

ЗАТВЕРДЖУЮ:

Заступник директора з УВР

_____________ О.П. Лимар

"____" 2010 р.









КАЛЕНДАРНИЙ ПЛАН

НА КУРСОВУ РОБОТУ СТУДЕНТА ГРУПИ № Т-09-4

Лучшев Олександр Валерійович

Спеціальність: 5.091504 "Обслуговування комп’ютерних та інтелектуальних систем та мереж"



№ п/п

Найменування етапів дипломної кваліфікаційної роботи

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

Примітка

1

Постановка задачі





2

Математичний опис задачі





3

Розробка алгоритму програми





4

Структура програми, опис її структурних компонентів





5

Описання початкових даних, на які розрахована програма





6

Розробка інструкції оператору





7

Тестування програми та її оптимізація





8

Оформлення пояснювальної записки до курсової роботи







Випускник

Керівник роботи




МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

СЄВЄРОДОНЕЦЬКЕ ВИЩЕ ПРОФЕСІЙНЕ УЧИЛИЩЕ

















ВІДГУК

НА КУРСОВУ РОБОТУ СТУДЕНТА ГРУПИ № Т-09-4

Лучшев Олександр Валерійович

Спеціальність: 5.091504 "Обслуговування комп’ютерних та інтелектуальних систем та мереж"

		Тема роботи "Розробка програми за допомогою мови програмування Delphi"

		Керівник роботи Руднєв Максим Миколайович___

		Загальна характеристика курсової роботи:

		Попередня оцінка:

		Робота захищена з оцінкою:

Керівник роботи М. М. Руднєв

"____"___________2010 р.




СОДЕРЖАНИЕ



РЕФЕРАТ

ВВЕДЕНИЕ

1. Анализ технического задания и постановка задачи проектирования

2. Разработка алгоритма программы

3. ОПИСАНИЕ СТРУКТУРЫ ПРОГРАММЫ

4. ОПИСАНИЕ ВХОДНЫХ ДАННЫХ

5. ОПИСАНИЕ ВЫХОДНЫХ ДАННЫХ

6. ИНСТРУКЦИЯ ОПЕРАТОРУ

ВЫВОДЫ

Перечень ссылок

ПРИЛОЖЕНИЕ А

ПРИЛОЖЕНИЕ Б

ПРИЛОЖЕНИЕ В

	


РЕФЕРАТ



Пояснительная записка к курсовой работе содержит:

страниц - 23;

рисунков - 6;

таблиц – 1 ;

приложений – 3.

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

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

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

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

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

Алгоритмы процедур приведены в приложении А.

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

Результат тестового запуска приведен в приложении В.

Программа разработана с использованием языка Delphi.

ТЕКСТОВЫЙ ФАЙЛ, ПРОВЕРКА НАПИСАНИЯ, ДИАЛОГОВОЕ ОКНО, МНОЖЕСТВА СИМВОЛОВ, ЦИКЛИЧЕСКИЕ КОНСТРУКЦИИ




ВВЕДЕНИЕ



Данный курсовой проект был разработан в среде Delphi 7 с базовым языком программирования Delphi. Среди множества языков Delphi является наиболее универсальным и легко изучаемым языком. На сегодня Delphi поддерживает все современные возможности объектно-ориентированного программирования в такой мощной системе проектирования как Delphi 7.

Цель курсовой работы – закрепление и демонстрация знаний, полученных при изучении курса.

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

Согласно заданию дан текстовый файл, в котором находятся заглавные буквы.

В ходе выполнения курсового проекта не обходимо выполнить следующие этапы:

- анализ технического задания и постановка задачи проектирования;

- выделение функций, которые выполнять разрабатываемая программа;

- разработка алгоритма программы, предназначенной для выполнения функций, сформированных на предыдущем этапе;

- составление программы согласно разработанным алгоритмам на языке Delphi;

- отладка программы на тестовых наборах;

- составление и оформление пояснительной записки.

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






1. Анализ технического задания и постановка задачи проектирования



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

Как видим, задание сводится к обработке текстовой информации. А именно, чтение текстовой информации из файла и обработка ее согласно заданию.

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

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

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

- вывод на экран информации о задании и назначении программы;

- выбор пользователем файла для проверки с помощью диалога открытия;

- выбор пользователем файла для сохранения результатов;

- проверка полученного файла, для выявления в нем заглавных символов;

- запрос к пользователю о возможном изменении заглавного символа и сохранение изменений в итоговый текстовый файл.

Последующие разделы будут посвящены решению поставленных задач и разработке приложения с вышеперечисленными функциями.




2. РАЗРАБОТКА АЛГОРИТМА ПРОГРАММЫ



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

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

Далее необходимо проверить, присутствуют ли в считанном из фала тексте заглавные символы, для этого необходимо выполнение следующих условий:

В каждой считанной из файла строке выделять слова;

В каждом слове проверять наличие заглавных символов;

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

Составим следующий алгоритм:

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

Открыть файл для чтения.

Пока курсор не станет на позицию конца файла считывать поочередно строки из файла. Если курсор станет на позицию конца файла, то переходим к пункту 7.

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

Проверить символ на сходство с символом из множества разделителей, которое заданно, пока не наступит конец считанной строки. Если наступил конец строки, то перейдем к пункту 3.

Если символ – разделитель то перейдем к алгоритму поиска заглавного символа в слове, иначе поместим этот символ в строковую переменную, которая будет хранить слово и вернемся к пункту 5.

Конец проверки по строкам

Алгоритм поверки слова:

Становимся на первый символ слова и проверяем его на сходство с множеством заглавных символов.

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

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

Если проверенный символ является последним в слове то заканчиваем проверять слово и возвращаемся в предыдущую процедуру.



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

Детальное описание разработанной программы, алгоритмов и их программной реализации приведено в последующих разделах.



3. ОПИСАНИЕ СТРУКТУРЫ ПРОГРАММЫ



Описание переменных

В разделе описаний переменных описаны переменные, назначение которых приведено в таблице 3.1.




Таблица 3.1– Описание переменных программы 

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

Тип

Назначение

FO,FS

TextFile

Переменная текстового файла исходного и результирующего

tmpstr,str,strslovo

String

Строковые переменные для чтения из файла 

i,j

integer

Переменные счетчики для циклов

count

integer

Переменная хранит количество исправленных символов

answ

Word

Используется для определения ответа пользователя на вопрос об исправлении символа

UpCh

set of char

Множество заглавных символов

ZnCh

set of char

Множество символов разделителей слов 

OFName

String

Строка, в которой хранится путь к исходному файлу

SFName

String

Строка, в которой хранится путь к результирующему файлу



Описание вспомогательной процедуры

В программе приведено описание одной вспомогательной процедуры.

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

Процедура Button1Click для отрытия исходного файла и сохранения пути к нему.

Процедура Button2Click для отрытия результирующего файла и сохранения пути к нему.

Алгоритм основной программы

Алгоритм выполнения основного тела программы приведен на рисунке А.1 в приложении А. Так в процедуре в первую очередь осуществляется привязка файла к файловой переменной и открытие текстового файла для чтения текстовой информации.

Затем производится чтение информации из файла построчно.

Затем в каждой строке выделяются слова.

Затем осуществляется поиск в выделенных словах заглавных символов.

Далее происходит запрос к пользователю об исправлении найденных символов.

Затем происходит запись в результирующий текстовый файл изменений.

В ходе выполнения работы использовались следующие операции работы с текстовыми файлами:



AssignFile (<Имя файловой переменной>,<Имя файла>);



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



Reset (<Имя файловой переменной>);



Открывается файл для чтения из него информации, ему присваивается имя, заданное процедурой Assign.

После работы с файлом он, как правило, должен быть закрыт процедурой CloseFile (<Имя файловой переменной>). Вывод информации производит оператор WRITELN(f: TextFile;S: String). После его выполнения строка S заносится в конец файла, связанного с переменной f.



4. ОПИСАНИЕ ВХОДНЫХ ДАННЫХ



Исходными данными для выполнения является файл, который содержит заглавные символы.



5. ОПИСАНИЕ ВЫХОДНЫХ ДАННЫХ



Выходными данными являются:

- сообщение о завершении проверки файла на наличие в нем заглавных символов;

- сообщение о количестве исправленных символов;

- заполненный результирующий текстовый файл.



6. ИНСТРУКЦИЯ ОПЕРАТОРУ



Разработанная программа представляет собой исполняемый файл Luchshev.exe размером 405 Кбайт. В программе реализован алгоритм проверки текстового файла на наличие в нем заглавных символов.

После запуска программы появляется окно, изображенное на рисунке 4.1.





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



После этого пользователь должен задать путь к файлу. На рисунке 4.2 показан пример диалогового окна для открытия файла.






Рисунок 4.2 – Пример отскрытия исходного файла



Пример сообщения о нахождении заглавного символа приведен на рисунке 4.3.





Рисунок 4.3– Сообщение о нахождении заглавного символа



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






Рисунок 4.4- Результирующее окно.



Результат проверки записывается в выбранный результирующий файл находящийся в выбранной директории.

Функционирование программы полностью соответствует заданию.




ВЫВОДЫ



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

В ходе выполнения курсового проекта были проведен - анализ технического задания и постановка задачи проектирования.

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

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

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

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

В ходе разработки программы были закреплены навыки работы:

- командами ввода-вывода как на экран, так и в текстовые файлы,

- использования процедур,

- команды обработки массивов,

- команды для реализации циклов с заданным числом повторений;

- команды проверки условий и реализации ветвлений.

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




Перечень ссылок



		Зуев Е.А. Программирование на языке Delphi 6.0,7.0. – М.: Радио и связь, Веста, 1993.

	Фаронов В.В. Delphi 7.0. Начальный курс. - М.: Нолидж, 2000.






ПРИЛОЖЕНИЕ А



Алгоритм программы





Рисунок А.1 – Алгоритм программы






Рисунок А.2 – Алгоритм основной процедуры программы




ПРИЛОЖЕНИЕ Б



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



unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

Button3: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Button4: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

OFName,SFName:String;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

if OpenDialog1.Execute then

OFName:=OpenDialog1.FileName;

if OFName<>'' then begin

Button1.Enabled:=False;

Button2.Visible:=True;

Label1.Caption:='Путь к файлу для проверки: '+OFName;

Label2.Visible:=True;

Label2.Caption:='Нажмите на кнопку "Сохранить" и выберите файл для хранения результатов проверки';

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

var

b:boolean;

begin

b:=false;

if SaveDialog1.Execute then

SFName:=SaveDialog1.FileName;

if Pos('.txt',SFName)=0 then SFName:=SFName+'.txt';

if SFName=OFName then

ShowMessage('Выберите другой файл для сохранения результата')

else

b:=true;

if (SFName<>'') and (b) then begin

Button2.Enabled:=False;

Label2.Caption:='Путь к результирующему файлу: '+SFName;

Button3.Visible:=True;

Label3.Visible:=True;

Label3.Caption:='Для начала проверки нажмите на кнопку "Проверить"';

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Button2.Visible:=False;

Label2.Visible:=False;

Button3.Visible:=False;

Label3.Visible:=False;

Button4.Visible:=False;

Label4.Visible:=False;

Label1.Caption:='Нажмите на кнопку "Открыть" и выберите файл для проверки';

end;

procedure TForm1.Button3Click(Sender: TObject);

var

FO,FS:TextFile;

i,j,count:integer;

str,strslovo,tmpstr:String;

ZnCh,UpCh:set of Char;

answ:Word;

begin

count:=0;

ZnCh:=['.',',','!','?'];

UpCh:=['A'..'Z','А'..'Я'];

AssignFile(FO,OFName);

AssignFile(FS,SFName);

{$I-}

Reset(FO);

{$I+}

if IOResult<>0 then begin

ShowMessage('Произошли проблемы с открытием файла. Программа будет завершена');

Exit;

end

else begin

Rewrite(FS);

while not Eof(FO) do begin

Readln(FO,str);

strslovo:='';

for i:=1 to Length(str) do begin

if (str[i] in ZnCh) or (str[i]=' ') then begin

for j:=1 to Length(strslovo) do begin

if strslovo[j] in UpCh then begin

answ:=MessageDlg('В слове "'+strslovo+'" найдена заглавная буква "'+strslovo[j]+'". Заменить ее на малую?',mtInformation,[mbYes,mbNo],0);

if answ=mrYes then begin

tmpstr:=strslovo[j];

tmpstr:=AnsiLowerCase(tmpstr);

Delete(strslovo,j,1);

Insert(tmpstr,strslovo,j);

inc(count);

end;

end;

end;

Write(FS,strslovo+str[i]);

strslovo:='';

end

else

strslovo:=strslovo+str[i];

end;

Writeln(FS,'');

end;

CloseFile(FO);

CloseFile(FS);

Label3.Caption:='Проверка файла завершена. Исправлено '+IntToStr(count)+' заглавных букв.';

Button3.Enabled:=False;

Button4.Visible:=True;

Label4.Visible:=True;

end;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

OFName:='';

SFName:='';

Button1.Enabled:=True;

Button2.Visible:=False;

Button2.Enabled:=True;

Button3.Visible:=False;

Button3.Enabled:=True;

Button4.Visible:=False;

Label2.Visible:=False;

Label3.Visible:=False;

Label4.Visible:=False;

Label1.Caption:='Нажмите на кнопку "Открыть" и выберите файл для проверки';

end;

end.



	


ПРИЛОЖЕНИЕ В



Результаты решения программы







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