База данных "Магазин по продаже дисков"
Обновлено
Реферат
База данных, запросы, сортировка и фильтрация, добавление и удаление дисков.
Целью курсовой работы является разработка автоматизированного рабочего места для продавца компакт дисков, в среде Borland C++ Builder.
Объект исследования - магазин по продажи компакт дисков.
Предмет исследования - процесс учета продукции в магазине.
Результатом моей курсовой работы является приложение c графическим интерфейсом на языке С++, реализующее работу с базой данных. Данное приложение может считаться полноценной программой со свойственными ей основными операциями. Программа позволяет сортировать, фильтровать, добавлять новые записи и удалять существующие.
Содержание
- Введение
- 1. Описание предметной области
- 1.1 Общие положения
- 1.2 Сведения из теории
- 1.2.1 Классификация баз данных
- 1.2.2 Форма - Form
- 1.2.3 Свойства компонента Edit (поле редактирования текста)
- 1.2.4 Свойства компонента Label (поле вывода текста)
- 1.2.5 Свойства компонента DBGrid
- 1.2.6 Свойства компонента CheckBox
- 1.2.7 Свойства компонента Button
- 1.3 Постановка задачи
- 1.3.1 Название и назначение разрабатываемого приложения
- 1.3.2 Спецификация входных и выходных данных
- 1.3.3 Обоснование выбора средства программирования
- 1.3.4 Требования к аппаратной части и ПО
- 2. Технология разработки приложения
- 2.1 Макет приложения
- 2.1.1 Описание экранных форм
- 2.1.2 Описание файлов проекта
- 2.2 Описание программы
- 2.3 Результаты работы программы
- 3. Руководство пользователя
- Заключение
- Список использованных источников
- Приложения
Свойство | Описание | |
Font | Шрифт, используемый «по умолчанию» компонентами, находящимися на поверхности формы. Изменение свойства Font формы приводит к автоматическому изменению свойства Font компонента, располагающегося на поверхности формы. То есть компоненты наследуют свойство Font от формы (имеется возможность запретить наследование) | |
Caption | Текст заголовка для управления формой и доступа к компонентам формы | |
ClientWidth | Ширина рабочей (клиентской) области формы, т.е. без учёта ширины левой и правой границ | |
ClientHeight | Высота рабочей (клиентской) области формы, т.е. без учёта высоты заголовка и ширины нижней границы формы | |
Icon | Значок в заголовке окна | |
BorderIcons | Кнопки управления окном. Значение свойства определяет, какие кнопки управления окном будут доступны пользователю во время работы приложения. Значение свойства задаётся путём присвоения значений уточняющим свойствам biSystemMenu, biMinimize, biMaximize, и biHelp. Свойство biSystemMenu определяет доступность кнопки системного меню, biMinimize - кнопки свернуть, biMaximize - развернуть, biHelp - кнопки вывода справочной информации | |
Color | Цвет фона. Цвет можно задать, указав название цвета и привязку к текущей цветовой схеме операционной системы. | |
Canvas | Поверхность, на которую можно вынести графику |
Таблица 1.2 - Свойства Edit
Свойство | Описание | |
Name | Имя компонента. Используется в программе для доступа к компоненту и его свойствам, в частности для доступа к тексту, введенному в поле редактирования | |
Text | Текст, находящийся в поле ввода и редактирования | |
Left | Расстояние от левой границы компонента до левой границы формы | |
Top | Расстояние от верхней границы компонента до верхней границы формы | |
Height | Высота поля | |
Width | Ширина поля | |
Font | Шрифт, используемый для отображения вводимого текста | |
ParentFont | Признак наследования компонентом характеристик шрифта формы, на которой находится компонент. Если значение свойства равно true, то при изменении свойства Font формы автоматически меняется значение свойства Font компонента | |
Enabled | Используется для ограничения возможности изменить текст в поле редактирования. Если значение свойства равно false, то текст в поле редактирования изменить нельзя | |
Visible | Позволяет скрыть компонент (false) или сделать его видимым (true) |
Таблица 1.2 - Свойства Label
Свойство | Описание | |
Name | Имя компонента. Используется в программе для доступа к компоненту и его свойствам | |
Caption | Отображаемый текст | |
Left | Расстояние от левой границы поля вывода до левой границы формы | |
Top | Расстояние от верхней границы поля вывода до верхней границы формы | |
Height | Высота поля вывода | |
Width | Ширина поля вывода | |
AutoSize | Признак того, что размер поля определяется его содержимым | |
Wordwrap | Признак того, что слова, которые не помещаются в текущей строке, автоматически переносятся на следующую строку (значение свойства AutoSize должно быть false) | |
Alignment | Задает способ выравнивания текста внутри поля. Текст может быть выровнен по левому краю (taLeftJustify), по центру (taCenter) или по правому краю (taRight Justify) | |
Font | Шрифт, используемый для отображения текста. Уточняющие свойства определяют шрифт (Name), размер (size), стиль (style) и цвет символов (Color) | |
Parent Font | Признак наследования компонентом характеристик шрифта формы, на которой находится компонент. Если значение свойства равно true, то текст выводится шрифтом, установленным для формы | |
Color | Цвет фона области вывода текста | |
Visible | Позволяет скрыть текст (false) или сделать его видимым (true) |
Таблица 1.3 - Свойства компонента DBGrid
DataSource | Источник данных (компонент Table или Query) | |
Columns | Отображаемая информация (поля записей) | |
Options.dgTitles | Разрешает вывод строки заголовка столбцов | |
Options.dglndicator | Разрешает вывод колонки индикатора. Во время работы с базой данных текущая запись помечается в колонке индикатора треугольником, новая запись -- звездочкой, редактируемая -- специальным значком | |
Options.dgColumnResize | Разрешает менять во время работы программы ширину колонок таблицы | |
Options.dgColLines | Разрешает выводить линии, разделяющие колонки таблицы | |
Options.dgRowLines | Разрешает выводить линии, разделяющие строки таблицы |
Таблица 1.4 - Свойства CheckBox
Свойство | Описание | |
Caption | Текст, который находится справа от флажка | |
Checked | Состояние, внешний вид флажка: если флажок установлен (в квадратике есть «галочка»), то значение Checked равно true; если флажок сброшен (нет «галочки»), то значение Checked равно false | |
State | Состояние флажка. В отличие от свойства Checked, позволяет различать установленное, сброшенное и промежуточное состояния. Состояние флажка определяет одна из констант: cbChecked (установлен); cbGrayed (серый, неопределённое состояние); cbUnChecked (сброшен) | |
AllowGrayed | Свойство определяет, может ли флажок быть в промежуточном состоянии: если значение AllowGrayed равно false, то флажок может быть только установленным или сброшенным; если значение AllowGrayed равно true, то допустимо промежуточное состояние | |
Font | Шрифт, используемый для отображения поясняющего текста |
Таблица 1.5 - Свойства Button
Свойство | Описание | |
Name | Имя компонента. Используется в программе для доступа к компоненту и его свойствам | |
Caption | Текст на кнопке | |
Left | Расстояние от левой границы кнопки до левой границы формы | |
Top | Расстояние от верхней границы кнопки до верхней границы формы | |
Height | Высота кнопки | |
Width | Ширина кнопки | |
Enabled | Признак доступности кнопки. Если значение свойства равно true, то кнопка доступна. Если значение свойства равно false, то кнопка недоступна например, в результате щелчка на кнопке, событие Click не возникает | |
Visible | Позволяет скрыть кнопку (false) или сделать ее видимой (true) | |
Height | Высота кнопки | |
Width | Ширина кнопки |
Свойство | Описание | |
Name | Имя, по которому можно ссылаться на страницу | |
Caption | Надпись, которая появляется на ярлычке закладки | |
PageIndex | Индекс страницы, по которому можно ссылаться на страницу | |
ImageIndex | Индекс изображения, которое может появляться на ярлычке закладки | |
Style | Определяет стиль отображения компонента | |
Images | Ссылка на компонент ImageList | |
ScrollOpposite | Определят способ перемещения закладок при размещении их в несколько рядов | |
ActivePage | Имя активной страницы | |
PageCount | Количество страниц. Свойство только для чтения |
o Наименование диска;
o Группа, к которой относятся диски;
o Количество;
o Закупочная цена;
o Цена продажи;
Выходной информацией для данной программы является
o Сортировка данных по убыванию и возрастанию;
o Добавление данных о дисках вновь поступающих в базу;
o Фильтрация данных по некоторым полям;
o Поиск и возврат дисков;
o Визуализация приложения в удобной форме
1.3.3 Обоснование выбора средства программированияЯ выбрал RAD - систему Borland C++ Builder 6.0, потому что она изучена в течение семестра, а также является удобным и мощным средством для разработки как простых консольных приложений, так и обширных комплексных приложений с графическим интерфейсом.1.3.4 Требования к аппаратной части и ПОПерсональный компьютер фирмы IBM серии PC (или совместимый с этими моделями), работающий под управлением операционной системы (ОС) Windows 98/XP/Vista, оперативная память объемом не менее 32 Мбайт, процессор с тактовой частотой не менее 133 MHz, клавиатура, мышь.2. Технология разработки приложения2.1 Макет приложения2.1.1 Описание экранных формПри запуске программы появляется форма 1При нажатии на TabSheet2 появится следующая вкладка, в которой можно будет добавить информацию о дисках.При нажатии на TabSheet3 появится следующая вкладка, в которой можно При нажатии на TabSheet4 появится следующая вкладка, в которой можно будет удалять информацию о дисках с базы предварительно отфильтровав.При нажатии кнопки “О программе” появляется форма, в которой содержится информация о программе.2.1.2 Описание файлов проектаВажно отметить, что программа состоит из следующих файлов:- файл проекта (файл с расширением . cbproj);- файл описания класса формы (файл с расширением .h);- файл исходного текста (файл с расширением .cpp);- файл с описанием окон формы (файл с расширением .dfm);В файле проекта находится информация о модулях, составляющих данный проект.Файл исходного текста - программный модуль, предназначенный для размещения текстов программ на языке С++.Проект содержит следующие файлы Project1. cbproj - файл проекта, 2 модуля Unit1.cpp, Unit2.cpp и соответствующие им 2 формы.2.2 Описание программыПрограмма состоит из 2-х модулей:Unit1void __fastcall TForm1::N1Click(TObject *Sender)// Открытия формы2 показ информации о программеvoid __fastcall TForm1::Button1Click(TObject *Sender)// Добавление информации о дисках в БД.void __fastcall TForm1::TabSheet1Show(TObject *Sender)// Отображение данных БД в DBGrid1.void __fastcall TForm1::Button2Click(TObject *Sender)// Сортировка данных по убыванию или возрастанию.void __fastcall TForm1::Button3Click(TObject *Sender)// Фильтрация данных по значениям полей базы данных.void __fastcall TForm1::Button4Click(TObject *Sender)// Поиск данных в таблице по наименованию для удаления из БД.void __fastcall TForm1::Button5Click(TObject *Sender)// Удаление записи из БД.Unit2void __fastcall TAboutBox::OKButtonClick(TObject Sender)//закрытие формы №22.3 Результаты работы программыРезультатом курсовой работы является полноценное приложение с графическим интерфейсом, которое может считаться полноценной программой. После её запуска пользователю предоставляется возможность просмотреть существующую БД компакт дисков, отсортировать её по возрастанию или убыванию со следующим параметрам: наименование, группа, количество, закупочная цена и цена продажи. Так же пользователь имеет возможность самостоятельно добавить запись в базу данных, отфильтровать и удалить указанные записи.3. Руководство пользователяУстановка приложения производится посредством копирования всех файлов в любой каталог.Внимание: Обязательно присутствие в одном и том же каталоге всех файлов!Работа программы начинается с окна запуска программы Project1.exeПосле запуска программы появляется следующая формаВ результате приложение предоставляет пользователю полный доступ к базе данных компакт дисков. Для того чтобы отсортировать данные по какому либо из признаков необходимо выбрать все указанные поля и нажать кнопку выполнить. Для того чтобы добавить информацию о дисках необходимо обязательно заполнить все указанные поля и нажать кнопку добавить, иначе будет выведено на экран сообщение об ошибке.Также приложение позволяет осуществить фильтрацию и удаление дисков из базы данных, что тоже требует определенной внимательности при заполнении существующих полей, иначе можно встретить следующие сообщения об ошибке.ЗаключениеБаза данных - это совокупность структурированных и взаимосвязанных данных и методов, обеспечивающих добавление, выборку и отображение информации.В ходе выполнения курсовой работы были выполнены все поставленные задачи и разработано работоспособное приложение “Автоматизированное рабочее место для продавца компакт дисков”. В частности, разработана и описана предметная область программы, разработан и реализован алгоритм на языке С++, проведено тестирование, которое не выявило существенных ошибок, однако это не исключает возможности их появления при проведении более глубокого и длительного тестирования.Так же в процессе выполнения работы были получены и закреплены практические навыки разработки программ с использованием SQL запросов и баз данных в написании программ в среде визуального программирования Borland C++ Builder 6.0.Список использованных источников1. Бобровский С. Самоучитель програмирования на языке C++ в среде Borland C++ Builder
2. Культин Н.Б. С++ Buider в задачах и примерах - СПб.:БХВ-Петербург, 2007. - 336с.: ил.
3. Лаптев В.В. C++. Экспресс-курс . 2004г.
4. Послед Б.С. Borland C++ Builder 6. Разработка приложений баз. 2003г. -360ст.
5. Технология разработки приложения на языке С++. Методическое указание к лабораторным работам для студентов первого курса специальности 080801.65 “Прикладная информатика” (по областям)
6. Учебник по программированию в среде С++ Builder 5, Д. Холингворт, Б. Сворт, Д. Баттерфилд 865 с.
7. Б., Эллисон Ч. Философия С++. Практическое программирование. С.Петербург 2004г. 608 с.:ил.
ПриложениеЛистинг файла - проекта Project1.cpp//---------------------------------------------------------------------------#include <vcl.h>#pragma hdrstop#include "ABOUT.h"#include "Unit1.h"#include "Unit2.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TForm1::FormCreate(TObject *Sender){ADOConnection1->Connected = false;ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source="+ExtractFileDir(Application->ExeName)+" \\ БАЗА ДАННЫХ \\ CD.mdb; Mode=Share Deny None;Extended Properties=\"\";Jet OLEDB:System database=\"\";Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False";ADOConnection1->Connected = true;PageControl1->ActivePage = TabSheet1;}//---------------------------------------------------------------------------void __fastcall TForm1::N1Click(TObject *Sender){AboutBox->Show();}//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){DataSource1->DataSet = ADOQuery1;ADOQuery1->SQL->Clear();ADOQuery1->SQL->Add("SELECT [Наименование] FROM Tab1 WHERE [Наименование] =\""+Edit1->Text+"\";");ADOQuery1->ExecSQL();ADOQuery1->Open();if(Edit1->Text!=""&&ComboBox1->Text!=" "&&Edit2->Text!=" "&Edit3->Text!=""&&Edit4->Text!=""){if(ADOQuery1->RecordCount==0){ADOQuery1->SQL->Clear();ADOQuery1->SQL->Add("INSERT INTO Tab1 ([Наименование],[Группа],[Количество],[Закупочная цена],[Цена продажи])");ADOQuery1->SQL->Add("Values("+QuotedStr(Edit1->Text)+","+QuotedStr(ComboBox1->Text)+","+Edit2->Text+","+Edit3->Text+","+Edit4->Text+");");ADOQuery1->ExecSQL();}else{MessageDlg("Такие диски уже есть!"mtInformation,TMsgDlgButtons()<<mbOK,0);}else{MessageDlg("Введены не все данные для добавления диска(-ов) в базу!"mtInformation,TMsgDlgButtons()<<mbOK,0);}Edit1->Clear();ComboBox1->Clear();Edit2->Clear();Edit3->Clear();Edit4->Clear();}//---------------------------------------------------------------------------void __fastcall TForm1::TabSheet1Show(TObject *Sender){DataSource1->DataSet = ADOQuery1;ADOQuery1->SQL->Clear();ADOQuery1->SQL->Add("SELECT * FROM Tab1;");ADOQuery1->ExecSQL();ADOQuery1->Open();}//---------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender){ADOQuery1->SQL->Clear();if(RadioButton1->Checked){ADOQuery1->SQL->Add("SELECT * FROM Tab1 ORDER BY +["+ComboBox2->Text+"] DESC;");ADOQuery1->ExecSQL();DataSource1->DataSet = ADOQuery1;ADOQuery1->Open();}else{if(RadioButton2->Checked){ADOQuery1->SQL->Add("SELECT * FROM Tab1 ORDER BY +["+ComboBox2->Text+"] ASC;");ADOQuery1->ExecSQL();DataSource1->DataSet = ADOQuery1;ADOQuery1->Open();}}}//---------------------------------------------------------------------------void __fastcall TForm1::Button3Click(TObject *Sender){if(RadioButton3->Checked){ADOQuery1->SQL->Clear();ADOQuery1->SQL->Add("SELECT * FROM Tab1 WHERE [Наименование] "+ComboBox3->Text+"\""+Edit5->Text+"\";");ADOQuery1->ExecSQL();ADOQuery1->Open();ComboBox3->Clear();Edit5->Clear();}else{if(RadioButton4->Checked){ADOQuery1->SQL->Clear();ADOQuery1->SQL->Add("SELECT * FROM Tab1 WHERE [Группа] "+ComboBox4->Text+"\""+ComboBox8->Text+"\";");ADOQuery1->ExecSQL();ADOQuery1->Open();ComboBox4->Clear();ComboBox8->Clear();}else{if(RadioButton5->Checked){ADOQuery1->SQL->Clear();ADOQuery1->SQL->Add("SELECT * FROM Tab1 WHERE [Количество] "+ComboBox5->Text+" "+Edit7->Text+";");ADOQuery1->ExecSQL();ADOQuery1->Open();ComboBox5->Clear();Edit7->Clear();}else{if(RadioButton6->Checked){ADOQuery1->SQL->Clear();ADOQuery1->SQL->Add("SELECT * FROM Tab1 WHERE [Закупочная цена] "+ComboBox6->Text+" "+Edit8->Text+";");ADOQuery1->ExecSQL();ADOQuery1->Open();ComboBox6->Clear();Edit8->Clear();}else{if(RadioButton7->Checked){ADOQuery1->SQL->Clear();ADOQuery1->SQL->Add("SELECT * FROM Tab1 WHERE [Цена продажи] "+ComboBox7->Text+" "+Edit9->Text+";");ADOQuery1->ExecSQL();ADOQuery1->Open();ComboBox7->Clear();Edit9->Clear();}else{MessageDlg("Укажите хотя бы одно поле..."mtInformation,TMsgDlgButtons()<<mbOK,0);}}}}}}//---------------------------------------------------------------------------void __fastcall TForm1::Button4Click(TObject *Sender){if(Edit10->Text!=""){//MessageDlg("Укажите не достаюшие поля..."mtInformation,TMsgDlgButtons()<<mbOK,0);}ADOQuery1->SQL->Clear();ADOQuery1->SQL->Add("SELECT * FROM Tab1 WHERE [Наименование] =\""+Edit10->Text+"\";");ADOQuery1->ExecSQL();ADOQuery1->Open();Edit10->Clear();} else{MessageDlg("Укажите не достаюшие поля..."mtInformation,TMsgDlgButtons()<<mbOK,0);}}//---------------------------------------------------------------------------void __fastcall TForm1::Button5Click(TObject *Sender){ADOQuery1->Delete();}//---------------------------------------------------------------------------