Программа для учета товаров в книжном магазине

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

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

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

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

Размещено на http://www.allbest.ru/

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное автономное образовательное

учреждение высшего образования

«КРЫМСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ

им. В.И. Вернадского»

(ФГАОУ ВО «КФУ им. В.И. Вернадского)

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

Технология разработки программного обеспечения

Программа для учета товаров в книжном магазине

Специальность 09.02.03 «Программирование в компьютерных системах»

Исполнитель, студент гр. 3ПКС

Дудко А.А.

Руководитель

Преподаватель Железняк А.В.

2015

ВВЕДЕНИЕ

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

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

Задачей моего курсового проектирования является создание программы, в которой имеются:

· База данных книг;

· Архив;

· Все необходимые функции, позволяющие отображать, добавлять, изменять и удалять книги в базе;

· Система авторизации пользователей;

· Возможность печати книг из базы данных;

· Удобный интерфейс;

1. Постановка задач

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

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

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

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

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

И я установил такие программы, как Borland Delphi 7 и Microsoft Office Access 2007.

Далее непосредственно написание программы:

· Добавление компонентов для работы с базой данных;

· Создание и заполнение базы данных;

· Подключение компонентов к базе данных;

· Добавление и подключение таблицы;

· Добавление модуля поиска и сортировки;

· Создание модуля добавления записей в базу данных;

· Создание модуля изменения записей в базе данных;

· Создание таблицы для архива;

· Создание модуля покупки - переноса в архив и удаления;

· Создание системы авторизации пользователей в программе;

· Создание модуля печати из таблицы.

2. Требования к программе

интерфейс язык база данные

2.1 Требования к функциональности

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

· Отображение таблицы, которая содержит перечень книг;

· Возможность добавлять и изменять записи в таблице;

· Возможность сортировать книги по удобному параметру, а также

быстрый поиск нужной книги из списка;

· Возможность удалять книги, а также перемещать их в архив;

· Возможность распечатки книг из таблицы;

2.2 Требования к надежности

Для повышения надежности я решил сделать удаление в два уровня:

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

- Удаление записи непосредственно из архива.

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

А также я сделал систему авторизации (Рис. 2.1), которая позволит контролировать и документировать, какой продавец продал ту или иную книгу:

Рис. 2.1 - Система авторизации

2.3 Требования к составу и параметрам технических средств

Минимальные системные требования:

· Процессор: Intel Pentium 233 МГц и выше;

· Операционная система: Microsoft Windows XP и новее;

· Оперативная память: 64 Мбайт;

· Пространство на жестком диске: 8 МБ;

· Монитор: SVGA или выше;

· Другое аппаратное обеспечение: клавиатура, мышь;

Рекомендуемые системные требования:

· Процессор: Intel Pentium 233 МГц и выше;

· Операционная система: Microsoft Windows XP и новее;

· Оперативная память: 128 Мбайт;

· Пространство на жестком диске: 16 МБ;

· Монитор: SVGA или выше;

· Другое аппаратное обеспечение: клавиатура, мышь, принтер;

2.4 Требования к программной совместимости

Операционная система, которую я использовал - Microsoft Windows 8.1 Корпоративная. Программа написана на языке Delphi в среде программирования Borland Delphi 7. Для создания и работы с базой данных я использовал Microsoft Office Access 2007. А также требуется Microsoft Office Word для осуществления распечатки содержимого таблицы.

3. Проектирование

3.1 Выбор языка программирования

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

Для реализации программы я выбрал систему программирования Delphi версии 7 фирмы Enterprise (Borland), так как она предоставляет наиболее широкие возможности для программирования приложений ОС Windows.

Delphi - это продукт Borland International для быстрого создания приложений. Высокопроизводительный инструмент визуального построения приложений включает в себя настоящий компилятор кода и предоставляет средства визуального программирования, несколько похожие на те, что можно обнаружить в Microsoft Visual Basic или в других инструментах визуального проектирования. В основе Delphi лежит язык Object Pascal, который является расширением объектно-ориентированного языка Pascal. В Delphi также входят локальный SQL-сервер, генераторы отчетов, библиотеки визуальных компонентов, и многое другое, необходимое для того, чтобы чувствовать себя совершенно уверенным при профессиональной разработке информационных систем или просто программ для Windows-среды.

Преимущества Delphi по сравнению с аналогичными программными продуктами.

- быстрота разработки приложения;

- высокая производительность разработанного приложения;

- низкие требования разработанного приложения к ресурсам компьютера;

- наращиваемость за счет встраивания новых компонент и инструментов в среду Delphi;

- возможность разработки новых компонент и инструментов собственными средствами Delphi (существующие компоненты и инструменты доступны в исходных кодах);

- удачная проработка иерархии объектов.

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

3.2 Структурная схема программного продукта

Рис. 3.1 - Структурная схема программы

3.3 Алгоритм представления задачи

В начале программы отображается окно авторизации, если пользователь уже зарегистрирован - он вводит свои данные, если нет, то по нажатию кнопки «Регистрация» появляется окно, где он сможет создать себе новый профайл. После авторизации появляется главное окно программы, в котором есть кнопки, таблица и поиск по таблице. По нажатию на кнопку «Добавить», появляется окно добавления. По нажатию кнопки «Изменить», появляется окно изменения выделенной записи. По нажатию кнопки «Купить» или «Удалить» (В зависимости от того, какая таблица отображена: книги - купить; архив - удалить), появляется окно подтверждения удаления/покупки книги. По нажатию кнопки «Печать», открывается новый документ Microsoft Office Word, в котором присутствует таблица, которая имеется в программе.

3.4 Проектирование пользовательского интерфейса

3.4.1 Выбор типа пользовательского интерфейса

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

3.4.2 Разработка форм ввода-вывода информации

Вывод информации из базы данных осуществляется компонентом Delphi 7 - DBGrid. DBGrid подключен к компоненту DataSource. DataSource, в свою очередь, подключен к ADOQuery, к которому подключен компонент ADOConnection, в котором и осуществляется подключение к базе данных, а точнее формирование строки подключения. Нагляднее это можно увидеть на рисунке 3.2.

Рисунок 3.2 - Расстановка компонентов подключения в проекте.

Также по нажатию кнопки «Печать» произойдет вывод таблицы в печатной форме в документ Microsoft Office Word (Рис. 3.3).

Рисунок 3.3. - Печать таблицы

По нажатию кнопки «Добавить» появляется окно для ввода всех нужных параметров книги, таких как: название, автор, ISBN, жанр, год выпуска, цена, количество страниц и количество книг в наличии (Рис. 3.4).

Рис.3.4 - Добавление новой книги

ЗАКЛЮЧЕНИЕ

В процессе достижения цели я использовал знания, полученные из книги Александра Чиртика «Программирование в Delphi. Трюки и эффекты», просмотра ознакомительных видеоуроков по Delphi 7 от Антона Макрушина, а также консультируясь с преподавателем дисциплины «Программирование в компьютерных системах».

Я использовал такие программы, как:

· Microsoft Office Access - для создания базы данных и таблиц в ней;

· Borland Delphi 7 Enterprise - для разработки программы;

· Adobe Photoshop CS6 - для обработки картинок для кнопок.

Результатом проделанной работы стало написание программы, готовой для использования в книжном магазине. Программа обладает приятным, а главное простым и интуитивно понятным интерфейсом. С программой легко разобраться и без документаций и руководств, в связи с отсутствием лишних деталей в интерфейсе. Однако это не означает, что пришлось уступить функционалом - он такой, как и был запланирован. Все нужные задачи были решены, а планы воплощены в действие. Программа, как и предусматривалось, имеет следующие функции:

Ш Отображение таблицы, которая содержит перечень книг;

Ш Возможность добавлять и изменять записи в таблице;

Ш Возможность сортировать книги по удобному параметру, а также быстрый поиск нужной книги из списка;

Ш Возможность удалять книги, а также перемещать их в архив;

Ш Возможность распечатки книг из таблицы;

СПИСОК ИСТОЧНИКОВ

1. Александр Чиртик: «Программирование в компьютерных системах» Издательство «Питер» , 2010 год.

ПРИЛОЖЕНИЯ

ПРИЛОЖЕНИЕ 1

Рисунок П.1 - Общий вид программы при входе.

ПРИЛОЖЕНИЕ 2

Код главной формы программы

unit start;

interface

uses

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

Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls, Spin, ExtCtrls, Buttons, comobj,

Menus;

var

Tablizza, BookSQL : String; // Объявление переменных "Tablizza" и "BookSQL" типа String

type

TForm1 = class(TForm)

ADOConnection1: TADOConnection;

DBGrid1: TDBGrid;

DataSource1: TDataSource;

ADOQuery1: TADOQuery;

Edit1: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit3: TEdit;

ADOQuery2: TADOQuery;

ADOTable1: TADOTable;

ComboBox1: TComboBox;

Label4: TLabel;

Edit2: TEdit;

Label5: TLabel;

Edit4: TEdit;

SpinEdit1: TSpinEdit;

SpinEdit2: TSpinEdit;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

ADOQuery3: TADOQuery;

BitBtn5: TBitBtn;

btn1: TBitBtn;

lbl1: TLabel;

btn2: TBitBtn;

pm1: TPopupMenu;

N1: TMenuItem;

N2: TMenuItem;

lbl2: TLabel;

lbl3: TLabel;

lbl4: TLabel;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure Btn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn4Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure DBGrid1TitleClick(Column: TColumn);

procedure BitBtn5Click(Sender: TObject);

procedure ADOQuery1AfterOpen(DataSet: TDataSet);

procedure btn1Click(Sender: TObject);

procedure DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure N1Click(Sender: TObject);

procedure N2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit2, Unit4, Unit5;

{$R *.dfm}

var proverka:Integer; // Объявление переменной "proverka" типа Integer

var SortAZ : BOOL; // Объявление переменной "SortAZ" типа BOOL

procedure TForm1.FormCreate(Sender: TObject);

begin // При старте формы:

Tablizza:='книги'; // Указываем, что при старте подгружается основная таблица "книги" в переменной "Tablizza"

BookSQL:= 'select * from книги'; // Присваиваем переменной "BookSQL" SQL запрос

proverka:=0; // Присваиваем переменной proverka 0

SortAZ:=True; // Указываем, что изначально сортировка от А до Я

ADOQuery2.Active:=True; // Активируем компонент ADOQuery2

ADOQuery2.Recordset.MoveFirst; // Перемещаем указатель рекордсета на первую позицию

while not ADOQuery2.Recordset.EOF do // Объявлем цикл "Пока не закончились записи в рекордсете"

begin

ComboBox1.Items.Add(ADOQuery2.Recordset.Fields[0].Value); // Присваиваем ComboBox'а соответствующую запись в рекордсете

ADOQuery2.Recordset.MoveNext; // Перемещаем указатель на следующую запись рекордсета

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

ADOQuery1.SQL.Text:=BookSQL; // Присваиваем SQL-запросу переменную запроса

ADOQuery1.Active:=True; // Активируем компонент ADOQuery1

end;

var Poisk : string; // Объявление переменной "Poisk" типа string

var IfPoiskActive : integer; // Объявление переменной "IfPoiskActive" типа integer

procedure TForm1.BitBtn2Click(Sender: TObject);

begin //Блок поиска

IfPoiskActive :=0; // Указываем, что изначально поиск не активен

if Edit1.Text<>'' then // Если поле Edit1.Text было измененно

begin

if IfPoiskActive=0 then // Если поиск еще не активен, то

begin

Poisk := BookSQL +' where автор LIKE'+chr(39)+'%'+edit1.Text+'%'+chr(39); // Присваиваем переменной "Poisk" соответствующеий SQL-запрос

IfPoiskActive:=1; // Указываем в переменной, что поиск теперь активен

end

else // Если поиск уже активен, то:

begin

Poisk:=Poisk + ' AND автор LIKE'+chr(39)+'%'+edit1.Text+'%'+chr(39); // Присваиваем переменной "Poisk" соответствующеий SQL-запрос

end;

end;

if Edit2.Text<>'' then // Если поле Edit2.Text было измененно

begin

if IfPoiskActive=0 then // Если поиск еще не активен, то

begin

Poisk := BookSQL +' where название LIKE'+chr(39)+'%'+edit2.Text+'%'+chr(39); // Присваиваем переменной "Poisk" соответствующеий SQL-запрос

IfPoiskActive:=1; // Указываем в переменной, что поиск теперь активен

end

else // Если поиск уже активен, то:

begin

Poisk:=Poisk + ' AND название LIKE'+chr(39)+'%'+edit2.Text+'%'+chr(39); // Присваиваем переменной "Poisk" соответствующеий SQL-запрос

end;

end;

if Edit3.Text<>'' then // Если поле Edit3.Text было изменено

begin

if IfPoiskActive=0 then // Если поиск еще не активен, то

begin

Poisk := BookSQL +' where ISBN LIKE'+chr(39)+'%'+edit3.Text+'%'+chr(39); // Присваиваем переменной "Poisk" соответствующеий SQL-запрос

IfPoiskActive:=1; // Указываем в переменной, что поиск теперь активен

end

else // Если поиск уже активен, то:

begin

Poisk:=Poisk + ' AND ISBN LIKE'+chr(39)+'%'+edit3.Text+'%'+chr(39); // Присваиваем переменной "Poisk" соответствующеий SQL-запрос

end;

end;

if Edit4.Text<>'' then // Если поле Edit4.Text было изменено

begin

if IfPoiskActive=0 then // Если поиск еще не активен, то

begin

Poisk := BookSQL +' where год LIKE'+chr(39)+'%'+edit4.Text+'%'+chr(39); // Присваиваем переменной "Poisk" соответствующеий SQL-запрос

IfPoiskActive:=1; // Указываем в переменной, что поиск теперь активен

end

else // Если поиск уже активен, то:

begin

Poisk:=Poisk + ' AND год LIKE'+chr(39)+'%'+edit4.Text+'%'+chr(39); // Присваиваем переменной "Poisk" соответствующеий SQL-запрос

end;

end;

if ComboBox1.Text <> '-' then // Если поле ComboBox1.Text было измененно

begin

if IfPoiskActive=0 then // Если поиск еще не активен, то

begin

Poisk := BookSQL +' where жанр LIKE '+chr(39)+'%'+ComboBox1.Text+'%'+chr(39); // Присваиваем переменной "Poisk" соответствующеий SQL-запрос

IfPoiskActive:=1; // Указываем в переменной, что поиск теперь активен

end

else // Если поиск уже активен, то:

begin

Poisk := Poisk + 'AND жанр LIKE ' +chr(39)+ComboBox1.Text+chr(39); // Присваиваем переменной "Poisk" соответствующеий SQL-запрос

end;

end;

if IfPoiskActive=0 then // Если поиск еще не активен, то

begin

Poisk := BookSQL +' where цена BETWEEN '+IntToStr(SpinEdit1.Value)+' AND '+IntToStr(SpinEdit2.Value); // Присваиваем переменной "Poisk" соответствующеий SQL-запрос

IfPoiskActive:=1; // Указываем в переменной, что поиск теперь активен

end

else // Если поиск уже активен, то:

begin

Poisk := Poisk + 'AND цена BETWEEN '+IntToStr(SpinEdit1.Value)+' AND '+IntToStr(SpinEdit2.Value); // Присваиваем переменной "Poisk" соответствующеий SQL-запрос

end;

if IfPoiskActive<>0 then // Если поиск активен, то :

begin

ADOQuery1.SQL.Text:=Poisk; // Присваиваем SQL-запросу текст из переменной Poisk

end

else // Если нет, то :

begin

ADOQuery1.SQL.Text:=BookSQL; // Возвращаем "чистый" запрос на таблицу

end;

ADOQuery1.Active:=True; // Активируем компонент ADOQuery1

end;

procedure TForm1.BitBtn3Click(Sender: TObject);

begin //Описываем действие при нажатии кнопки "Все книги"

Tablizza:='книги'; // Присваиваем переменной "Tablizza" значение "книги"

BookSQL:='select * from книги'; // Присваиваем переменной "BookSQL" запрос на вывод книг, которые сейчас в наличии

ADOQuery1.SQL.Text:=BookSQL; // Присваиваем SQL-запросу текст из переменной "BookSQL"

ADOQuery1.Active:=True; // Активируем компонент ADOQuery1

BitBtn4.Caption:='Купить '; // Меняем надпись на кнопке

lbl2.Caption:='Все книги:'; // Меняем метку, которая указывает название активной таблицы

BitBtn4.Glyph.LoadFromFile('buy.bmp'); // Меняем иконку на кнопке "Купить"

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Form2.Tag:=1; //

// Форма №2 откроется с тегом 1

Form2.ShowModal; //

end;

procedure TForm1.Btn2Click(Sender: TObject);

begin

Form2.Tag:=2; //

// Форма №2 откроется с тегом 2

Form2.ShowModal; //

end;

procedure TForm1.BitBtn4Click(Sender: TObject);

begin

if Tablizza = 'книги' then // Если сейчас выведена таблица "книги", то:

begin

Form4.Tag:=1; // Тег формы №4 = 1

end

else // Если нет, то:

begin

Form4.Tag:=2; // Тег формы №4 = 2

end;

Form4.ShowModal;// Модальное открытие формы №4

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Form5.ShowModal; // Модальное открытие формы №5

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

if proverka<>1 then

begin

Form5.ShowModal;// Модальное открытие формы №5

proverka:=1; // Присваиваем переменной "Проверка" значение 1

end;

end;

procedure TForm1.DBGrid1TitleClick(Column: TColumn);

var StrokaSortirovki,Zapros : string; // Объявление переменных "StrokaSortirovki" , "Zapros" типа string

begin //Блок сортировки записей в таблице по одной из колонок

if SortAZ=True then // Если мы сортируем по алфавиту от А до Я, то

begin

StrokaSortirovki:= Column.FieldName; // Переменная "StrokaSortirovki" будет содержать название (титл) колонки

SortAZ:=false; // Сортировка от А до Я выключена, т.е сортировка будет от Я до А

end

else

begin

SortAZ:=True; // Включаем сортировку по алфавиту от А до Я

StrokaSortirovki:= Column.FieldName+ ' DESC'; // Переменная "StrokaSortirovki" будет содержать название (титл) колонки и параметр "DESC", что обеспечит сортировку в обратном порядке

end;

Zapros:=ADOQuery1.SQL[0]; // Переменная "Zapros" будет содержать верхнюю запись SQL-запроса

with ADOQuery1 do //Следующие действия будут проходить с компонентом "ADOQuery1"

begin

Close; // Закрыть

SQL.Clear; // Очистить запрос

SQL.Add(Zapros); // Добавить в запрос текст из переменной "Zapros"

SQL.Add('ORDER BY '+StrokaSortirovki); // Добавить в запрос "ORDER BY " и текст из переменной "StrokaSortirovki"

Open; //Открыть

end;

end;

procedure TForm1.BitBtn5Click(Sender: TObject);

var num_rows, num_columns , i, j: Integer; // Объявление переменных "num_rows" , "num_columns" , "i", "j" типа Integer

var table, word, doc: OleVariant; // Объявление переменных "table", "word", "doc" типа OleVariant

begin

ADOQuery1.Active:=False; //

// Перезапускаем компонент ADOQuery1

ADOQuery1.Active:=True; //

num_rows:=DBGrid1.DataSource.DataSet.RecordCount; // Присваиваем переменной "num_rows" количество записей в выведенной таблице

num_columns:=DBGrid1.DataSource.DataSet.FieldCount; // Присваиваем переменной "num_columns" количество полей в выведенной таблице

try

word := CreateOleObject('Word.Application'); // Создаем OleObject - приложение MS Word и присваиваем это переменной "word"

except

ShowMessage('Не возможно открыть MS Word!'+#13#10+'Проверьте, установлен ли он!'); // При невозможности открытия MS Word будет выведена ошибка, которая это сообщает

end;

word.Documents.Add; // Создание нового документа MS Word

doc:=word.Documents.Item(1); // doc - обращение к первому элементу документа

doc.Tables.Add(doc.Range, NumRows:=num_rows+1,NumColumns:=num_columns); // Добавляем новую таблицу

doc.Tables.Item(1).Style:='Сетка таблицы'; // Указываем стиль таблицы

table:=word.activedocument.tables.item(1); // table - активный элемент таблицы

for j:=0 to num_columns-1 do // Цикл создания названий колонок в таблице

begin

table.cell(0, j+1).range.text:=DBGrid1.Columns[j].Title.caption;

table.cell(0, j+1).range.Font.Bold:=1;

end;

table.cell(0, 0).range.text:='Код';

table.cell(0, 0).range.Font.Bold:=1;

i:=2;

table:=word.activedocument.tables.item(1); // table - активный элемент таблицы

while not (DBGrid1.DataSource.DataSet.eof) do // Цикл добавления записей в таблицу

begin

for j:=0 to num_columns-1 do

begin

table.cell(i, j+1).range.text:=DBGrid1.DataSource.DataSet.Fields[j].asstring;

end;

DBGrid1.DataSource.DataSet.next;

inc(i);

end;

table.Columns.Item(1).SetWidth(30,'wdAdjustNone'); //

table.Columns.Item(2).SetWidth(105,'wdAdjustNone'); // Задаем

table.Columns.Item(3).SetWidth(80,'wdAdjustNone'); // каждому

table.Columns.Item(4).SetWidth(98,'wdAdjustNone'); // столбцу

table.Columns.Item(5).SetWidth(35,'wdAdjustNone'); // нужную

table.Columns.Item(6).SetWidth(47,'wdAdjustNone'); // ширину

table.Columns.Item(7).SetWidth(100,'wdAdjustNone'); // полей

table.Columns.Item(8).SetWidth(43,'wdAdjustNone'); //

table.Columns.Item(9).SetWidth(35,'wdAdjustNone'); //

word.activedocument.Pagesetup.LeftMargin:=20; // Задаем отступ слева - 20 pt

word.Visible:=True; // Делаем документ видимым

end;

procedure TForm1.ADOQuery1AfterOpen(DataSet: TDataSet);

begin

DBGrid1.Columns[0].Width:=22; //

DBGrid1.Columns[4].Width:=35; //

DBGrid1.Columns[5].Width:=45; // После открытия ADOQuery1 задаем ширину колонок

DBGrid1.Columns[7].Width:=36; //

DBGrid1.Columns[8].Width:=28; //

end;

procedure TForm1.btn1Click(Sender: TObject);

begin

Tablizza:='архив'; // Указываем в переменной "Tablizza", что сейчас активна таблица "архив"

BookSQL:='select * from архив'; // Помещаем в переменную "BookSQL" SQL-запрос на вывод таблицы архива

ADOQuery1.SQL.Text:=BookSQL; // Присваиваем SQL-запросу текст из переменной "BookSQL"

ADOQuery1.Active:=True; // Активируем компонент ADOQuery1

BitBtn4.Caption:='Удалить '; // Изменяем надпись на кнопке

lbl2.Caption:='Архив:'; // Меняем метку, которая указывает название активной таблицы

BitBtn4.Glyph.LoadFromFile('del.bmp'); // Меняем иконку на кнопке "Удалить"

DBGrid1.Columns[8].Width:=76; //

DBGrid1.Columns[9].Width:=52; // Задаем ширину колонок

DBGrid1.Columns[10].Width:=36; //

DBGrid1.Columns[3].Width:=150; //

end;

procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var P: TPoint; // Объявление переменной "P" типа TPoint (точка)

begin // Блок, отвечающий за открытие PopupMenu по нажатию на запись в таблице

P:=GetClientOrigin;

if Button = mbRight then

pm1.Popup(X+P.X+DBGrid1.Left, Y+P.Y+DBGrid1.Top);

end;

procedure TForm1.N1Click(Sender: TObject);

begin

btn2.Click; // Задаем кнопку, которая нажимается по нажатию компонента в PopupMenu

end;

procedure TForm1.N2Click(Sender: TObject);

begin

BitBtn4.Click; // Задаем кнопку, которая нажимается по нажатию компонента в PopupMenu

end;

end. // Завершение программы

ПРИЛОЖЕНИЕ 3

Код формы Добавления/Изменения

unit Unit2;

interface

uses

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

Dialogs, StdCtrls, Buttons, start, Mask, DBCtrls, Spin, Unit3;

type

TForm2 = class(TForm)

BitBtn2: TBitBtn;

Edit1: TEdit;

ComboBox1: TComboBox;

Edit2: TEdit;

SpinEdit1: TSpinEdit;

SpinEdit2: TSpinEdit;

Edit3: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

DBEdit1: TDBEdit;

DBEdit2: TDBEdit;

DBEdit3: TDBEdit;

DBEdit4: TDBEdit;

DBEdit5: TDBEdit;

DBEdit6: TDBEdit;

BitBtn1: TBitBtn;

DBEdit7: TDBEdit;

Label7: TLabel;

SpinEdit3: TSpinEdit;

se1: TSpinEdit;

lbl1: TLabel;

dbedt1: TDBEdit;

procedure FormCreate(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure FormShow(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);

begin

Form1.ADOQuery2.Active:=True; // Активация рекордсета для

Form1.ADOQuery2.Recordset.MoveFirst; // заполнения списка жанров

while not Form1.ADOQuery2.Recordset.EOF do //

begin //

ComboBox1.Items.Add(Form1.ADOQuery2.Recordset.Fields[0].Value); // Заполнение списка жанров

Form1.ADOQuery2.Recordset.MoveNext; // из базы данных

end; //

ComboBox1.ItemIndex:=0; // Установка первого компонента в списке жанров

end;

procedure TForm2.BitBtn2Click(Sender: TObject);

begin

if (Edit1.Text <> '') and (Edit2.Text <> '') and (Edit3.Text <> '') then // Если нужные поля заполнены, то:

begin

if Tag=1 then // Если Тег формы = 1 , то добавление

begin

Form1.ADOQuery1.Insert; // Подача команды добавления в базу данных

DBEdit1.Text:=Edit1.Text; //

DBEdit3.Text:=Edit2.Text; //

DBEdit5.Text:=Edit3.Text; //

DBEdit2.Text:=ComboBox1.Text; // Заполнение полей базы данных

DBEdit4.Text:=SpinEdit1.Text; // из полей для ввода

DBEdit6.Text:=SpinEdit2.Text; //

DBEdit7.Text:=SpinEdit3.Text; //

dbedt1.Text:=se1.Text; //

Form1.ADOQuery1.Post; // Отправка новой записи в базу данных

end else // Если Тег формы не равен 1 , то редактирование

begin

Form1.ADOQuery1.Edit; // Подача команды добавления в базу данных

DBEdit1.Text:=Edit1.Text; //

DBEdit3.Text:=Edit2.Text; //

DBEdit5.Text:=Edit3.Text; //

DBEdit2.Text:=ComboBox1.Text; // Заполнение полей базы данных

DBEdit4.Text:=SpinEdit1.Text; // из полей для ввода

DBEdit6.Text:=SpinEdit2.Text; //

DBEdit7.Text:=SpinEdit3.Text; //

dbedt1.Text:=se1.Text; //

Form1.ADOQuery1.Post; // Отправка отредактированной записи в базу данных

Form2.Close;

end;

end else

ShowMessage('Одно или несколько полей не заполнено!'); // Если возникает ошибка, то выводится оповещение о ней

end;

procedure TForm2.BitBtn1Click(Sender: TObject);

begin

Form3.ShowModal; // По нажатию кнопки "Добавление жанра" - модальное открытие окна добавления жанра

end;

procedure TForm2.FormShow(Sender: TObject); // При появлении окна добавления/изменения

begin

if Tag=1 then // Если Тег формы = 1 , то:

begin

BitBtn2.Caption:='Добавить'; // Меняем текст на кнопках и

Form2.Caption:='Добавление новой книги'; // название формы на "Добавление".

Edit1.Text:=''; // Опустошаем все поля

Edit2.Text:=''; //

Edit3.Text:=''; //

ComboBox1.Text:='-'; //

SpinEdit1.Text:='2015'; //

SpinEdit2.Text:='1'; //

SpinEdit3.Text:='1'; //

end;

if Tag=2 then // Если Тег формы = 2 , то:

begin

BitBtn2.Caption:='Изменить'; // Меняем текст на кнопках и

Form2.Caption:='Изменение книги'; // название формы на "Изменение".

Edit1.Text:=DBEdit1.Text; //

Edit2.Text:=DBEdit3.Text; //

Edit3.Text:=DBEdit5.Text; // Заполняем все поля

ComboBox1.Text:=DBEdit2.Text; // данными об записи,

SpinEdit1.Text:=DBEdit4.Text; // которую собираемся

SpinEdit2.Text:=DBEdit6.Text; // изменить

SpinEdit3.Text:=DBEdit7.Text; //

se1.Text:=dbedt1.Text; //

end;

end;

end.

ПРИЛОЖЕНИЕ 4

Код формы авторизации

unit Unit5;

interface

uses

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

Dialogs, start, ADODB, DB, StdCtrls;

type

TForm5 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Edit1: TEdit;

Edit2: TEdit;

ADOQuery1: TADOQuery;

ADOTable1: TADOTable;

Button2: TButton;

ds1: TDataSource;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormShow(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Edit2KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

private

{ Private declarations }

public

{ Public declarations }

end;

var Login, Password: string;

var

Form5: TForm5;

implementation

uses Unit7;

{$R *.dfm}

var proverka: Integer;

procedure TForm5.Button1Click(Sender: TObject);

begin

Login:=Edit1.Text; // Помещаем потенциальный логин

Password:=Edit2.Text; // и пароль в соответствующие переменные

ADOQuery1.Recordset.MoveFirst; // Устанавливаем указатель рекордсета на первую позицию

while not ADOQuery1.Recordset.EOF do

begin

if (Login=ADOQuery1.Recordset.Fields[0].Value) and (Password=ADOQuery1.Recordset.Fields[1].Value) then

begin // Если логин и пароль правильные,

proverka:=1; // указываем, что проверка прошла

Form1.lbl1.Caption:='Здравствуй, '+Login+'!'; // меняем текст на метке с приветствием.

end; //

ADOQuery1.Recordset.MoveNext; // Устанавливаем указатель рекордсета на следующую позицию

end;

if proverka=1 then // Если проверка прошло, то:

begin

Form5.Close; // Форма закрывается

end

else // иначе:

begin

ShowMessage('Неправильный логин и/или пароли'); // Выводится ошибка

end;

end;

procedure TForm5.FormCreate(Sender: TObject);

begin

proverka:=0;

ADOQuery1.Active:=True;

end;

procedure TForm5.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if proverka<>1 then // Если проверка не пройденна, а окно авторизации закрыто, то

begin //

Form1.Close; // закрываем и главное окно

end;

end;

procedure TForm5.FormShow(Sender: TObject);

begin

proverka:=0; // Проверка изначально не пройденна

end;

procedure TForm5.Button2Click(Sender: TObject);

begin

Form7.ShowModal; // Выводим форму регистрации

end;

procedure TForm5.Edit2KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if Key=13 then // При нажатии кнопки ENTER

begin // в поле ввода пароля

Button1.Click; // нажимается кнопка "Вход"

end;

end;

end.

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


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

  • Требования к программе, составу и параметрам технических средств. Основные элементы языка программирования. Инструкция на выполнение программы учета клиентов: вызов и загрузка, входные и выходные данные. Расчет себестоимости программного продукта.

    дипломная работа [3,9 M], добавлен 29.06.2012

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

    курсовая работа [793,5 K], добавлен 31.01.2016

  • Разработка базы данных книжного магазина в среде программирования Delphi. Создание таблиц и их заполнение. Требования к составу и параметрам технических средств. База данных как набор файлов, содержащих информацию. Этапы создания приложения в Delphi.

    курсовая работа [803,6 K], добавлен 04.11.2012

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

    курсовая работа [1,0 M], добавлен 04.02.2013

  • Разработка программного обеспечения для корпоративного портала Череповецкого Государственного Университета. Выбор технологии, среды и языка программирования. Требования к составу и параметрам технических средств. Построение функциональных диаграмм.

    дипломная работа [1,7 M], добавлен 09.11.2016

  • Создание программного комплекса, обеспечивающего использование структурированной базы данных для компьютерного магазина. Использование языка программирования высокого уровня C++. Требования к составу и параметрам технических средств, стадии разработки.

    курсовая работа [308,3 K], добавлен 13.02.2010

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

    дипломная работа [3,4 M], добавлен 02.04.2013

  • Создание программного комплекса, обеспечивающего использование структурированной базы данных для компьютерного магазина. Язык программирования высокого уровня C++. Требования к составу и параметрам технических средств, к программной документации.

    курсовая работа [314,8 K], добавлен 17.02.2010

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

    дипломная работа [7,5 M], добавлен 16.08.2015

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

    реферат [403,8 K], добавлен 02.02.2014

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