Разработка автоматизированной информационной системы "Компьютерный склад" на примере отдела технической поддержки ОАО "ГСКБ "Алмаз-Антей"

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 23.06.2015
Размер файла 1,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Рисунок 21 - Информация о разработчике программы.

Небольшая форма, указывающая на автора этой программы и на ссылку сайта страницы пользователя (Рисунок 21).

Рисунок 22 -Система авторизации.

Т.к в ГСКБ «Алмаз-Антей» используются вычислительные машины с использованием «Active directory» (Локального домена), программе не нужно реализовывать сложную структуру шифрования служебных данных т.к. этим всем обладает сервер локального домена, и все данные хранятся внутри корпоративной локальной вычислительной сети (КЛВС), но защиту «от дурака» сделать необходимо. Для этого используется встроенная система авторизации (Рисунок 22). Система позволяет исключить несанкционированное изменение данных в информационной системе при случайном (или специальном) запуске программы. В данном примере используется только одна связка «Логин-пароль», в дальнейшем ее можно будет изменить на авторизацию через локальный домен.

2.9 Полное руководство пользователя.

Пользователь запускает программу и авторизуется.

Пользователь выбирает необходимую категорию. (Например «Заявки»)

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

Если необходимо ввести/исправить необходимые данные:

Ищем необходимые записи в таблице, если записей много можно воспользоваться функцией «Поисковик» в нижней части окна программы. (Про многофункциональный и обычный поиск см. «Поиск записей»)

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

Поиск записей.

Если нам необходимо найти запись среди множества данных в таблице базы данных нужно:

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

Выбрать функцию «Обычный поиск» (Для поиска одной или нескольких записей по одному столбцу таблицы), либо выбрать функцию «Многофункциональный поиск» (Для открытия дополнительных функций поиска данных по нескольким столбцам, и более точным поиском записей.)

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

«Обычный поиск»

После выбора типа поиска в первую строку «Поисковика» вводится необходимая нам запись (Например, имя «Иван»).

Далее выбирается категория, по которой необходимо найти запись. (Например «Имя»)

После выбора категории нажимаем «Поиск».

«Многофункциональный поиск»

Для многофункционального поиска выполняются все те же действия, что и в «Обычном поиске», но данный поиск можно выполнять с дополнительными требованиями, для этого:

Выполняем пункты 3, 4 «Обычного поиска»

Нажимаем And (если необходимо уточнить поиск дополнительными критериями), либо Or (для поиска дополнительных записей с разными критериями поиска).

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

Аналогичен 5 пункту «Обычного поиска».

тобы очистить записи в строке поиска, необходимо нажать кнопки «Очистить» в любом из типов поиска.

Для отмены поиска используется кнопка «Отмена поиска».

Для завершения работы необходимо нажать кнопки «Главное меню» и «Выход». (Либо можно просто закрыть все окна приложения, программа сама сохранит все данные в базе)

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

3. Экономическая часть

3.1 Организационно-экономическое обоснование проекта

Данное приложение создано для внутреннего пользования специалистов отдела технической поддержки ОАО «ГСКБ «Алмаз-Антей» и круг потребителей достаточно узок для экономического анализа, но оно увеличивает эффективность труда всего отдела в целом, и экономит на офисных расходных ресурсах (бумага, чернила и т.д.).

3.2 Расчет себестоимости

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

3.2.1 Расчет трудоемкости

Таблица 2 - Трудоемкость проекта

п/п

Виды работ

Трудоемкость,

дн.

1

Получение ТЗ

5

2

Сбор информации и ознакомление с предметной областью

5

3

Выбор объектного построения программы

5

4

Разработка общей методики создания продукта

10

5

Разработка основного алгоритма

10

6

Создание интерфейса

5

7

Отладка

15

8

Подготовка технической документации

3

9

Сдача продукта

2

Итого

60

3.2.2 Расчет затрат на электроэнергию и амортизацию оборудования

Таблица 3 - Затраты на электроэнергию и амортизацию оборудования.

п/п

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

Кол-во

Цена ед.

Сумма,

Руб.

1

Электропотребление ЭВМ

200 КВт

4.91р

981р

2

Износ жесткого диска

1 шт.

3000р

3000р

3

Зачистка систем охлаждения ЭВМ

1500р

1500р

4

Поддержание работоспособности КЛВС

3000р

3000р

Итого:

8481р

3.2.3 Расчет затрат на материалы

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

№ п/п

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

Кол-во, шт.

Цена ед., руб.

Сумма, руб.

1

Бумага

10

200

2000

2

Ручки

15

10

150

3

Колер для принтера

1

800

800

Итого

2950

3.2.4 Расчет начислений на заработную плату

Исходя из месячной зарплаты в 30000руб. и трудоемкости проект начисления на заработную плату, в зависимости от категории плательщика, указанных в ФЗ № 212-ФЗ, рассчитываются по следующим ставкам (табл. 5):

Таблица 5 - Начисления на заработную плату

Начисления на заработную плату

Процент, %

Сумма, руб.

Пенсионный фонд (ПФ):

- страховая часть

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

16

6

14400

5400

Фонд социального страхования (ФСС)

2,9

2600

Федеральный фонд обязательного медицинского страхования (ФФОМС)

5,1

4590

Итого

30

26990

3.2.5 Расчет себестоимости и цены разработки программного продукта

Таблица 4 - Смета всех затрат.

№ п/п

Наименование статей затрат

Сумма, руб.

1

Заработная плата программиста

90000

2

Расходы на электроэнергию и амортизацию оборудования

8481

3

Затраты на материалы

2950

4

Начисления на заработную плату

26990

Итого:

128421

ЗАКЛЮЧЕНИЕ

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

1) Данная программа действительно упрощает работу специалистам отдела технической поддержки (Нет необходимости сохранять лишние копии документов.)

2) Можно полностью переходить на цифровой метод хранения данных.

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

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

5) Запрещено неумышленное изменение/повторение уникальных данных по комплектующим. (Программа не позволяет делать лишние ошибки)

6) Возможно изменение/расширение функционала программы.(Программу можно в любой момент изменить, исправить недоработки, поменять тематику, расширить функциональные возможности всех пунктов меню, добавить новые.)

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

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Гребенюк Е.И.: Технические средства информатизации. - М.: Академия, 2011

2. Михеева Е.В.: Информационные технологии в профессиональной деятельности. - М.: Академия, 2011

3. Голенищев Э.П.: Информационное обеспечение систем управления. - Ростов н/

4. Кузовкин А.В.: Управление данными. - М.: Академия, 2010

5. Михеева Е.В.: Информационные технологии в профессиональной деятельности. - М.: Академия, 2010

6. под ред. С.В. Симоновича ; рец.: Каф. Московского гос. технического ун-та им. Н.Э. Баумана, С.В. Калин: Информатика. - СПб.: Питер, 2010

7. Уткин В.Б.: Информационные системы в экономике. - М.: Академия, 2010

8. [отв. ред. И.В. Коробко]: Программы для ЭВМ . - М.: ФГУ ФИПС, 2009

9. [отв. ред. И.В. Коробко]: Программы для ЭВМ . - М.: ФГУ ФИПС, 2009

10. Могилев А.В.: Информатика. - М.: Академия, 2009

11. Моосмюллер Г.: Маркетинговые исследования с SPSS. - М.: ИНФРА-М, 2009

12. под ред. С.В. Симоновича ; рец.: Кафедра САПР Московского гос. технического ун-та им. Н.Э. Баумана, С.В. Калин: Информатика. - СПб.: Питер, 2009

13. Филимонова Е.В.: Информационные технологии в профессиональной деятельности. - Ростов н/Д: Феникс, 2009

14. Алешин Л.И.: Информационные технологии . - М.: Литера, 2008

15. Гиляревский Р.С.: Рубрикатор как инструмент информационной навигации. - СПб.: Профессия, 2008

16. Днепров А.Г.: Видеосамоучитель. Microsoft Access 2007. - СПб.: Питер, 2008

17. Избачков Ю.С.: Информационные системы. - СПб.: Питер, 2008

18. Могилев А.В.: Информатика. - М.: Академия, 2008

19. под общ. ред. д-ра экон. наук, профессора П.В. Акинина : Информационные системы в экономике: Практикум. - М.: КНОРУС, 2008

20. под общ. ред. П.В. Акинина ; сост.: Е.Л. Торопцев и др. ; рец.: Р.Г. Закинян, А.Н. Байдаков: Информационные системы в экономике. - М.: КноРус, 2008

21. под ред. проф. А.Н. Романова, проф. Б.Е. Одинцова: Информационные системы в экономике . - М.: Вузовский учебник, 2008

22. Рец.: П.Л. Салманов и др. ; В.И. Чернов и др.: Информатика. - М.: Дрофа, 2008

23. Родигин Л.А.: Базы данных для карманного персонального компьютера Pocket PC. - М.: КноРус, 2008

24. Сергеев А.В.: Access 2007. Новые возможности. - СПб.: Питер, 2008

25. М. Эллис, Б. Строуструп. Справочное руководство по языку C++ с комментариями: Пер. с англ. - Москва: Мир, 1992. 445с.

26. Стенли, Б. Липпман. C++ для начинающих: Пер. с англ. 2тт. - Москва: Унитех; Рязань: Гэлион, 1992, 304-345сс.

27. Бруно Бабэ. Просто и ясно о Borland C++: Пер. с англ. - Москва: БИНОМ, 1994. 400с.

28. В.В. Подбельский. Язык C++: Учебное пособие. - Москва: Финансы и статистика, 1995. 560с.

29. Ирэ Пол. Объектно-ориентированное программирование с использованием C++: Пер. с англ. - Киев: НИИПФ ДиаСофт Лтд, 1995. 480с.

30. Т. Фейсон. Объектно-ориентированное программирование на Borland C++ 4.5: Пер. с англ. - Киев: Диалектика, 1996. 544с.

31. Т. Сван. Освоение Borland C++ 4.5: Пер. с англ. - Киев: Диалектика, 1996. 544с.

32. Г. Шилдт. Самоучитель C++: Пер. с англ. - Санкт-Петербург: BHV-Санкт-Петербург, 1998. 620с.

33. У. Сэвитч. C++ в примерах: Пер. с англ. - Москва: ЭКОМ, 1997. 736с.

34. К. Джамса. Учимся программировать на языке C++: Пер. с англ. - Москва: Мир, 1997. 320с.

35. В.А. Скляров. Язык C++ и объектно-ориентированное программирование: Справочное издание. - Минск: Вышэйшая школа, 1997. 480с.

36. Х. Дейтел, П. Дейтел. Как программировать на C++: Пер. с англ. - Москва: ЗАО "Издательство БИНОМ", 1998. 1024с.

ПРИЛОЖЕНИЯ

Приложение А

Программный код

Файл Unit1.h

//---------------------------------------------------------------------------

#ifndef Unit1H

#define Unit1H

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Menus.hpp>

#include <ExtCtrls.hpp>

#include <jpeg.hpp>

#include <Unit2.h>

#include <Unit3.h>

#include <Unit4.h>

#include <Unit5.h>

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published: // IDE-managed Components

TMainMenu *MainMenu1;

TMenuItem *N1;

TMenuItem *N2;

TMenuItem *N3;

TMenuItem *N4;

TLabel *Label1;

TButton *Button1;

TButton *Button3;

TButton *Button4;

TImage *Image1;

TLabel *Label2;

TEdit *Edit1;

TEdit *Edit2;

TButton *Button2;

TLabel *Label3;

TLabel *Label4;

TLabel *Label5;

TLabel *Label6;

void __fastcall N4Click(TObject *Sender);

void __fastcall Button1Click(TObject *Sender);

void __fastcall Button3Click(TObject *Sender);

void __fastcall Button4Click(TObject *Sender);

void __fastcall N2Click(TObject *Sender);

void __fastcall N3Click(TObject *Sender);

void __fastcall Button2Click(TObject *Sender);

void __fastcall FormCreate(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

Файл Unit2.h.

//---------------------------------------------------------------------------

#ifndef Unit2H

#define Unit2H

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Menus.hpp>

#include <ADODB.hpp>

#include <DB.hpp>

#include <DBCtrls.hpp>

#include <DBGrids.hpp>

#include <Dialogs.hpp>

#include <ExtCtrls.hpp>

#include <ExtDlgs.hpp>

#include <Grids.hpp>

#include <MPlayer.hpp>

//---------------------------------------------------------------------------

class TForm2 : public TForm

{

__published: // IDE-managed Components

TLabel *Label1;

TLabel *Label2;

TMainMenu *MainMenu1;

TMenuItem *N1;

TMenuItem *N2;

TMenuItem *N3;

TMenuItem *N4;

TMenuItem *N5;

TDataSource *DataSource1;

TDBGrid *DBGrid1;

TDBNavigator *DBNavigator1;

TADOConnection *ADOConnection1;

TADOTable *ADOTable1;

TButton *Button1;

TButton *Button2;

TComboBox *ComboBox1;

TEdit *Edit1;

TEdit *Edit2;

TButton *Button3;

TButton *Button4;

TButton *Button5;

TButton *Button6;

TLabel *Label3;

TRadioButton *RadioButton1;

TRadioButton *RadioButton2;

void __fastcall N5Click(TObject *Sender);

void __fastcall N4Click(TObject *Sender);

void __fastcall FormCreate(TObject *Sender);

void __fastcall Button1Click(TObject *Sender);

void __fastcall Button2Click(TObject *Sender);

void __fastcall ComboBox1Change(TObject *Sender);

void __fastcall Button3Click(TObject *Sender);

void __fastcall Button4Click(TObject *Sender);

void __fastcall Button5Click(TObject *Sender);

void __fastcall Button6Click(TObject *Sender);

void __fastcall N3Click(TObject *Sender);

void __fastcall N2Click(TObject *Sender);

void __fastcall RadioButton2Click(TObject *Sender);

void __fastcall RadioButton1Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm2(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm2 *Form2;

//---------------------------------------------------------------------------

#endif

Файл Unit3.h.

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit3.h"

#include "Unit4.h"

#include "Unit7.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm3 *Form3;

//---------------------------------------------------------------------------

__fastcall TForm3::TForm3(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm3::N5Click(TObject *Sender)

{

Form3->Visible=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::N4Click(TObject *Sender)

{

Form3->Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm3::FormCreate(TObject *Sender)

{

Form3->Position = poScreenCenter;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::ComboBox1Change(TObject *Sender)

{

if( ComboBox1->ItemIndex == 0)

Edit2->Text = Edit2->Text + "Kod_zayavki" + "='" + Edit1->Text + "'";

if( ComboBox1->ItemIndex == 1)

Edit2->Text = Edit2->Text + "Inventaeniy_nomer" + "='" + Edit1->Text + "'";

if( ComboBox1->ItemIndex == 2)

Edit2->Text = Edit2->Text + "data_podachi_zayavki" + "='" + Edit1->Text + "'";

if( ComboBox1->ItemIndex == 3)

Edit2->Text = Edit2->Text + "kod_sotrudnika" + "='" + Edit1->Text + "'";

if( ComboBox1->ItemIndex == 4)

Edit2->Text = Edit2->Text + "status" + "='" + Edit1->Text + "'";

if( ComboBox1->ItemIndex == 5)

Edit2->Text = Edit2->Text + "data_ispolneniya" + "='" + Edit1->Text + "'";

}

//---------------------------------------------------------------------------

void __fastcall TForm3::Button3Click(TObject *Sender)

{

Edit1->Clear();

}

//---------------------------------------------------------------------------

void __fastcall TForm3::Button4Click(TObject *Sender)

{

Edit2->Clear();

}

//---------------------------------------------------------------------------

void __fastcall TForm3::Button1Click(TObject *Sender)

{

Form3->ADOTable1->Filter = Edit2->Text;

Form3->ADOTable1->Filtered = true;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::Button2Click(TObject *Sender)

{

ADOTable1->Filtered = false;

Edit2->Clear();

Edit1->Clear();

}

//---------------------------------------------------------------------------

void __fastcall TForm3::Button5Click(TObject *Sender)

{

Edit2->Text = Edit2->Text + " AND ";

}

//---------------------------------------------------------------------------

void __fastcall TForm3::Button6Click(TObject *Sender)

{

Edit2->Text = Edit2->Text + " OR ";

}

//---------------------------------------------------------------------------

void __fastcall TForm3::Button7Click(TObject *Sender)

{

Edit2->Text = Edit2->Text + " < ";

}

//---------------------------------------------------------------------------

void __fastcall TForm3::Button8Click(TObject *Sender)

{

Edit2->Text = Edit2->Text + " > ";

}

//---------------------------------------------------------------------------

void __fastcall TForm3::N3Click(TObject *Sender)

{

Form7->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm3::N2Click(TObject *Sender)

{

Form4->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm3::RadioButton2Click(TObject *Sender)

{

Button4->Visible=false;

Edit2->Visible=false;

Button5->Visible=false;

Button6->Visible=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::RadioButton1Click(TObject *Sender)

{

Button4->Visible=true;

Edit2->Visible=true;

Button5->Visible=true;

Button6->Visible=true;

}

//---------------------------------------------------------------------------

Файл Unit5.h.

//---------------------------------------------------------------------------

#ifndef Unit5H

#define Unit5H

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Menus.hpp>

#include <ADODB.hpp>

#include <DB.hpp>

#include <DBCtrls.hpp>

#include <DBGrids.hpp>

#include <ExtCtrls.hpp>

#include <Grids.hpp>

//---------------------------------------------------------------------------

class TForm5 : public TForm

{

__published: // IDE-managed Components

TLabel *Label2;

TLabel *Label1;

TMainMenu *MainMenu1;

TMenuItem *N1;

TMenuItem *N2;

TMenuItem *N3;

TMenuItem *N4;

TMenuItem *N5;

TADOConnection *ADOConnection1;

TADOTable *ADOTable1;

TDataSource *DataSource1;

TDBGrid *DBGrid1;

TDBNavigator *DBNavigator1;

TLabel *Label3;

TButton *Button1;

TButton *Button2;

TComboBox *ComboBox1;

TEdit *Edit1;

TEdit *Edit2;

TButton *Button3;

TButton *Button4;

TButton *Button5;

TButton *Button6;

TRadioButton *RadioButton1;

TRadioButton *RadioButton2;

void __fastcall N5Click(TObject *Sender);

void __fastcall N4Click(TObject *Sender);

void __fastcall FormCreate(TObject *Sender);

void __fastcall Button3Click(TObject *Sender);

void __fastcall ComboBox1Change(TObject *Sender);

void __fastcall Button4Click(TObject *Sender);

void __fastcall Button1Click(TObject *Sender);

void __fastcall Button2Click(TObject *Sender);

void __fastcall Button5Click(TObject *Sender);

void __fastcall Button6Click(TObject *Sender);

void __fastcall N3Click(TObject *Sender);

void __fastcall N2Click(TObject *Sender);

void __fastcall RadioButton1Click(TObject *Sender);

void __fastcall RadioButton2Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm5(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm5 *Form5;

//---------------------------------------------------------------------------

#endif

Файл Unit6.h.

//---------------------------------------------------------------------------

#ifndef Unit6H

#define Unit6H

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

//---------------------------------------------------------------------------

class TFrame6 : public TFrame

{

__published: // IDE-managed Components

private: // User declarations

public: // User declarations

__fastcall TFrame6(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TFrame6 *Frame6;

//---------------------------------------------------------------------------

#endif

Файл Unit7.h.

//---------------------------------------------------------------------------

#ifndef Unit7H

#define Unit7H

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

//---------------------------------------------------------------------------

class TForm7 : public TForm

{

__published: // IDE-managed Components

TButton *Button1;

TLabel *Label1;

TLabel *Label2;

TLabel *Label3;

TLabel *Label4;

TLabel *Label5;

void __fastcall FormCreate(TObject *Sender);

void __fastcall Button1Click(TObject *Sender);

void __fastcall Label3Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm7(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm7 *Form7;

//---------------------------------------------------------------------------

#endif

Файл JPEG.hpp.

// Borland C++ Builder

// Copyright (c) 1995, 2002 by Borland Software Corporation

// All rights reserved

// (DO NOT EDIT: machine generated header) 'jpeg.pas' rev: 6.00

#ifndef jpegHPP

#define jpegHPP

#pragma delphiheader begin

#pragma option push -w-

#pragma option push -Vx

#include <Graphics.hpp> // Pascal unit

#include <Classes.hpp> // Pascal unit

#include <SysUtils.hpp> // Pascal unit

#include <Windows.hpp> // Pascal unit

#include <SysInit.hpp> // Pascal unit

#include <System.hpp> // Pascal unit

//-- user supplied -----------------------------------------------------------

#pragma link "jpeg.obj"

namespace Jpeg

{

//-- type declarations -------------------------------------------------------

class DELPHICLASS TJPEGData;

class PASCALIMPLEMENTATION TJPEGData : public Graphics::TSharedImage

{

typedef Graphics::TSharedImage inherited;

private:

Classes::TCustomMemoryStream* FData;

int FHeight;

int FWidth;

bool FGrayscale;

protected:

virtual void __fastcall FreeHandle(void);

public:

__fastcall virtual ~TJPEGData(void);

public:

#pragma option push -w-inl

/* TObject.Create */ inline __fastcall TJPEGData(void) : Graphics::TSharedImage() { }

#pragma option pop

};

typedef Shortint TJPEGQualityRange;

#pragma option push -b-

enum TJPEGPerformance { jpBestQuality, jpBestSpeed };

#pragma option pop

#pragma option push -b-

enum TJPEGScale { jsFullSize, jsHalf, jsQuarter, jsEighth };

#pragma option pop

#pragma option push -b-

enum TJPEGPixelFormat { jf24Bit, jf8Bit };

#pragma option pop

class DELPHICLASS TJPEGImage;

class PASCALIMPLEMENTATION TJPEGImage : public Graphics::TGraphic

{

typedef Graphics::TGraphic inherited;

private:

TJPEGData* FImage;

Graphics::TBitmap* FBitmap;

int FScaledWidth;

int FScaledHeight;

HPALETTE FTempPal;

bool FSmoothing;

bool FGrayScale;

TJPEGPixelFormat FPixelFormat;

TJPEGQualityRange FQuality;

bool FProgressiveDisplay;

bool FProgressiveEncoding;

TJPEGPerformance FPerformance;

TJPEGScale FScale;

bool FNeedRecalc;

void __fastcall CalcOutputDimensions(void);

Graphics::TBitmap* __fastcall GetBitmap(void);

bool __fastcall GetGrayscale(void);

void __fastcall SetGrayscale(bool Value);

void __fastcall SetPerformance(TJPEGPerformance Value);

void __fastcall SetPixelFormat(TJPEGPixelFormat Value);

void __fastcall SetScale(TJPEGScale Value);

void __fastcall SetSmoothing(bool Value);

protected:

virtual void __fastcall AssignTo(Classes::TPersistent* Dest);

virtual void __fastcall Changed(System::TObject* Sender);

virtual void __fastcall Draw(Graphics::TCanvas* ACanvas, const Types::TRect &Rect);

virtual bool __fastcall Equals(Graphics::TGraphic* Graphic);

void __fastcall FreeBitmap(void);

virtual bool __fastcall GetEmpty(void);

virtual int __fastcall GetHeight(void);

virtual HPALETTE __fastcall GetPalette(void);

virtual int __fastcall GetWidth(void);

void __fastcall NewBitmap(void);

void __fastcall NewImage(void);

virtual void __fastcall ReadData(Classes::TStream* Stream);

void __fastcall ReadStream(int Size, Classes::TStream* Stream);

virtual void __fastcall SetHeight(int Value);

virtual void __fastcall SetPalette(HPALETTE Value);

virtual void __fastcall SetWidth(int Value);

virtual void __fastcall WriteData(Classes::TStream* Stream);

__property Graphics::TBitmap* Bitmap = {read=GetBitmap};

public:

__fastcall virtual TJPEGImage(void);

__fastcall virtual ~TJPEGImage(void);

void __fastcall Compress(void);

void __fastcall DIBNeeded(void);

void __fastcall JPEGNeeded(void);

virtual void __fastcall Assign(Classes::TPersistent* Source);

virtual void __fastcall LoadFromStream(Classes::TStream* Stream);

virtual void __fastcall SaveToStream(Classes::TStream* Stream);

virtual void __fastcall LoadFromClipboardFormat(Word AFormat, unsigned AData, HPALETTE APalette);

virtual void __fastcall SaveToClipboardFormat(Word &AFormat, unsigned &AData, HPALETTE &APalette);

__property bool Grayscale = {read=GetGrayscale, write=SetGrayscale, nodefault};

__property bool ProgressiveEncoding = {read=FProgressiveEncoding, write=FProgressiveEncoding, nodefault};

__property TJPEGQualityRange CompressionQuality = {read=FQuality, write=FQuality, nodefault};

__property TJPEGPixelFormat PixelFormat = {read=FPixelFormat, write=SetPixelFormat, nodefault};

__property bool ProgressiveDisplay = {read=FProgressiveDisplay, write=FProgressiveDisplay, nodefault};

__property TJPEGPerformance Performance = {read=FPerformance, write=SetPerformance, nodefault};

__property TJPEGScale Scale = {read=FScale, write=SetScale, nodefault};

__property bool Smoothing = {read=FSmoothing, write=SetSmoothing, nodefault};

};

#pragma pack(push, 1)

struct TJPEGDefaults

{

TJPEGQualityRange CompressionQuality;

bool Grayscale;

TJPEGPerformance Performance;

TJPEGPixelFormat PixelFormat;

bool ProgressiveDisplay;

bool ProgressiveEncoding;

TJPEGScale Scale;

bool Smoothing;

} ;

#pragma pack(pop)

//-- var, const, procedure ---------------------------------------------------

extern PACKAGE TJPEGDefaults JPEGDefaults;

} /* namespace Jpeg */

using namespace Jpeg;

#pragma option pop // -w-

#pragma option pop // -Vx

#pragma delphiheader end.

//-- end unit ----------------------------------------------------------------

#endif // jpeg

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.