- •К дипломному проекту
- •Специальность 230105
- •Задание для дипломного проектирования
- •Разработка справочной системы «Стандартные функции Turbo Pascal»
- •Содержание
- •Раздел 1. Специальная часть 7
- •Раздел 2. Охрана труда 32
- •Введение
- •1.1 Постановка задачи.
- •1.2 Модель задачи.
- •Раздел 1. Специальная часть
- •1.3 Выбор языка программирования
- •1 .4 Блок схема
- •1.5 Листинг программы
- •1.6 Руководство пользователя
- •1.7 Тестирование
- •Раздел 2. Охрана труда
- •2.1. Требования безопасности перед началом работы на персональном компьютере.
- •2.2. Требования безопасности во время работы на персональном компьютере.
- •2.3. Требования безопасности после окончания работы на персональном компьютере.
- •Расчет трудоемкости разработки программы
- •Расчет цеховых, общехозяйственных и внепроизводственных расходов
- •Расчет отпускной цены
- •Расчет показателей экономической эффективности программного продукта
- •Экономическая эффективность от продукции одной программы
- •Экономическая эффективность от продукции двух программы
Раздел 1. Специальная часть
1.1 Постановка задачи.
Темой моего дипломного проектирования является разработка справочного пособия по стандартным функциям Turbo Pascal.
Описание алгоритма. Прежде всего необходимо создать форму, так как она явлется контейнером для всех остальных элементов управления. У меня в приложении существует одно главное окно, и два вспомогательных, одно из которых я использую вроде справки о программе, а другое включает в себя текстовое окно, в котором я записал справку о пользовании программой. После создания формы, а также инициаллизаци компонентов управления, которые располагаются на форме, мы видим полностью готовое окно программы. Для выбора интересующей нас функции используется компонет список, в котором хранятся заголовки всех доступных функций. Для выбора справки по какой либо функции необходимо выбрать данный список и оттуда выбрать нужную функцию. Собственно, сгенерировав данное событие по выбору функции, мы должны где то видеть её описание. Здесь я поступил просто и использовал компонент поле для текста, куда собственно и выводится описание нужной функции. Сами описания всех функций у меня хранятся в папке на диске в текстовых файлах – каждая функция в своем текстовом файле. Компонет список связан с данными файлами, так как на основе выбранного заголовка функции мы загружаем информацию из нужного текстового файла и отображаем её в поле для вывода описания функции. И так, при каждом изменении активного элемента из списка мы получаем описание соответствующей функции в окно вывода текста. Далее, у меня в программе присутствует возможность экспорта нужной функции в текстовый файл. Мне показалась данная возможность очень удобной, так как позволяет сохранить на диск описание конкретной функции для последующего использования.
При
экспорте нужной функции происходит
сохранение текста из окна для вывода
описания в текстовый файл , имя которому
дает сам пользователь в окне сохранения
файла. Окно о программе появлется при
нажатие кнопки “О программе” и служит
для отображения автора программы.
Алгорит работы справочной системы :
Создание формы, инициаллизация компонентов управления
Выбор нужной функции из списка выбора
Загрузка описания нужной функции из текстового файла на диске в окно вывода информации
Если какой либо функции нет, или файл испорчен, то срабатывает защита и загрузка не происходит, а на экран выходит уведомление о причине отказа в загрузке
1.2 Модель задачи.
Основой всего является форма приложения, так как она является родителем для всех остальных компонентов.
type
Tspravka = class(TForm)
cbx: TComboBox;
but: TButton;
GroupBox1: TGroupBox;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
opis: TMemo;
sv: TSaveDialog;
procedure Button3Click(Sender: TObject);
procedure cbxChange(Sender: TObject);
procedure butClick(Sender: TObject);
procedure
opisChange(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
spravka: Tspravka;
В данном коде идет описание формы и компонентов, которые на ней присутствуют. Как известно, класс имеет свойства, события и методы. В данном случае у нас создается класс формы, где роль полей играют компоненты, а события это обработчики.
var
spravka: Tspravka; Описание глобальной переменной формы
Компонент combobox позволяет нам выбирать заголовок интересующей нас функции .
Данный компонет имеет много различных свойств, методов и событий. Мне же очень пригодилось свойство Items, которое представляет собой редактор строк. В него я записал заголовки функций.
Получается что то вроде массива строк. Но, как только я записал сюда заголовки всех функций, мне необходимо каким то образом загружать описание нужной функции на основании выбранного элемента из списка в окно описания функции. Я отлично знаю, что у компонента combbobox есть такое свойство ItemIndex. Данное свойство отвечает за текущий выбранный компонент, иначе говоря за индекс выбранной строи. Следует помнить, что нумерация строк в combobox идет начиная с ноля! Для загрузки нужного описания функции я использовал событие combobox.Change, которое срабатывает каждый раз при изменении текста в списке. Данный обработчик я реализовал следующим образом:
procedure Tspravka.cbxChange(Sender: TObject);
begin
case cbx.ItemIndex of
0:
begin
if FileExists('resurs\pris.txt') then
opis.Lines.LoadFromFile('resurs\pris.txt') else ShowMessage('Нет нужного описания!');
end;
1:
begin
if FileExists('resurs\begs.txt') then
opis.Lines.LoadFromFile('resurs\begs.txt') else
ShowMessage('Нет нужного описания!');
end;
2:
begin
if FileExists('resurs\ifs.txt') then
opis.Lines.LoadFromFile('resurs\ifs.txt') else ShowMessage('Нет нужного описания!');
end;
3:
begin
if FileExists('resurs\cs.txt') then
opis.Lines.LoadFromFile('resurs\cs.txt') else
ShowMessage('Нет нужного описания!');
end;
4:
begin
if FileExists('resurs\whs.txt') then
opis.Lines.LoadFromFile('resurs\whs.txt') else
ShowMessage('Нет нужного описания!');
end;
5:
begin
if FileExists('resurs\reps.txt') then
opis.Lines.LoadFromFile('resurs\reps.txt') else
ShowMessage('Нет нужного описания!');
end;
6:
begin
if FileExists('resurs\fos.txt') then
opis.Lines.LoadFromFile('resurs\fos.txt') else
ShowMessage('Нет нужного описания!');
end;
7:
begin
if FileExists('resurs\gts.txt') then
opis.Lines.LoadFromFile('resurs\gts.txt') else
ShowMessage('Нет нужного описания!');
end;
8:
begin
if FileExists('resurs\wth.txt') then
opis.Lines.LoadFromFile('resurs\wth.txt') else
ShowMessage('Нет нужного описания!');
end;
9:
begin
if FileExists('resurs\ins.txt') then
opis.Lines.LoadFromFile('resurs\ins.txt') else
ShowMessage('Нет нужного описания!');
end;
10:
begin
if FileExists('resurs\preds.txt') then
opis.Lines.LoadFromFile('resurs\preds.txt') else
ShowMessage('Нет нужного описания!');
end;
11:
begin
if FileExists('resurs\hth.txt') then
opis.Lines.LoadFromFile('resurs\hth.txt') else
ShowMessage('Нет нужного описания!');
end;
12:
begin
if FileExists('resurs\ords.txt') then
opis.Lines.LoadFromFile('resurs\ords.txt') else
ShowMessage('Нет нужного описания!');
end;
13:
begin
if FileExists('resurs\ups.txt') then
opis.Lines.LoadFromFile('resurs\ups.txt') else
ShowMessage('Нет нужного описания!');
end;
14:
begin
if FileExists('resurs\cons.txt') then
opis.Lines.LoadFromFile('resurs\cons.txt') else
ShowMessage('Нет нужного описания!');
end;
15:
begin
if FileExists('resurs\cops.txt') then
opis.Lines.LoadFromFile('resurs\cops.txt') else
ShowMessage('Нет нужного описания!');
end;
16:
begin
if FileExists('resurs\pss.txt') then
opis.Lines.LoadFromFile('resurs\pss.txt') else
ShowMessage('Нет нужного описания!');
end;
17:
begin
if FileExists('resurs\lenss.txt') then
opis.Lines.LoadFromFile('resurs\lenss.txt') else
ShowMessage('Нет нужного описания!');
end;
end;
end;
Здесь я использовал оператор выбора case x of .. end; где x у меня текущий выбранный компонент из списка, а так как строки в свойстве items нумеруются с ноля, то значит и сами заголовки у меня получат индексы начиная с ноля, одним словом по порядку.Я этим воспользовался, и на основании текущего выделенного элемента, у которого есть свойство ItemIndex у меня происходит сравнение с константами выбора, и при совпадении загружается содержимое текстового файла в окно описания функции. Это реализуется методом LoadFromFiles свойства Lines, который загружает нужный текстовый файл. В случае, если нужного файла на диске не будет, то произойдет исключительная ситуация. Для этого я предусмотрел защиту в виде проверке файла на существование :
if FileExists('resurs\ords.txt') then
opis.Lines.LoadFromFile('resurs\ords.txt') else
ShowMessage('Нет нужного описания!');
Функция
FileExists(‘путь
к файлу’) проверяет, существует ли файл
, указанный в качестве параметра, и если
существует то возвращает true.
Процедура ShowMessage(‘Текст’)
просто выводит текст в окно. Для экспорта
описания нужной функции я использовал
компонент сохранения файла SaveDialog.
При нажатии на кнопку “Экспорт в текстовый файл” я создал следующий обработчик :
if sv.Execute then
opis.Lines.SaveToFile(sv.FileName) else
ShowMessage('Не задан путь!');
Компонент SaveDialog имеет свойство Execute , которое имеет булевый тип и показывает, открыл ли диалог пользователь программы или отказался от сохранения файла, и если он не отказался то здесь происходит сохранение текстового содержимого из окна описания данных функции в файл на диск. Делает это метод SaveToFile(‘Имя файла’), в качестве аргумента которому передаётся имя файла. У диалога SaveDialog имеется свойство FileName, где хранится текущее имя, его я и передаю в качестве параметра. При нажатии кнопки о программе запускается дополнительное окно :
procedure Tspravka.Button2Click(Sender: TObject);
begin
abouts.ShowModal;
end;
При нажатие кнопки выход происходит завершение работы программы.
procedure Tspravka.Button3Click(Sender: TObject);
begin
Application.Terminate;
end;
