Курсовая работа: База данных "Магазин по продаже дисков"
Название: База данных "Магазин по продаже дисков" Раздел: Рефераты по информатике, программированию Тип: курсовая работа | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
База данных, запросы, сортировка и фильтрация, добавление и удаление дисков. Целью курсовой работы является разработка автоматизированного рабочего места для продавца компакт дисков, в среде 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.2.8 Свойства компонента TTabSheet1.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. Руководство пользователя Заключение Список использованных источников ВведениеСовременные информационные технологии - это методы и средства для сбора, хранения, обработки и получения информации на основе современных средств вычислительной техники. Составными частями любой информационной системы являются БД и приложение для обработки данных. Появление персональных машин класса Pentium, семейства операционных систем Windows фирмы Microsoft и различного программного обеспечения позволяют автоматизировать ручные операции, вести любые виды работ по накоплению информации, ее обработки и получению различных выходных форм. В курсовой работе ставится задача — разработать проект базы данных для накопления необходимой информацией. Разработать приложение, позволяющее вести учет и контроль за базой данных. База данных должна быть спроектирована с учетом реализации запросов различного типа по получению информации. Одной из широко используемых сред разработки является Borland C++Builder, который позволяет создавать различные приложения: от простейших однооконных приложений до программ распределения баз данных, поэтому именно с помощью его я и решил разработать своё приложение которое назвал “Автоматизированное рабочее места для продавца компакт дисков“. Объект курсовой работы – магазин по продаже компакт дисков. Предмет курсовой работы – процесс учета продукции в магазине. Целью курсовой работы является разработка автоматизированного рабочего места продавца компакт дисков в среде Borland C++ Builder. Исходя из цели работы, я определил для себя следующие задачи: 1) Разработать и описать предметную область программы; 2) Разработать алгоритм на языке С++; 3) Показать возможности применения автоматизированного рабочего менеджера (т.е. осуществить программную реализацию и протестировать разработанное приложение); Содержательная часть данной работы разделена на 3 главы: в первой главе: - обосновывается актуальность темы, формулируется объект, предмет и цель; - общие сведения по использованию БД; - название и назначение разработанного приложения; обосновывается и описывается выбор средства программирования; описывается требуемое оборудование и ПО. - последовательно описывается решение сформулированных задач и этапов работы. во второй главе: - даётся подробное описание технологии работы с разработанным приложением. в третьей главе: - сформулировано заключение, содержащее основные выводы по результатам исследования, отражающее практическую значимость работы, предложения по использованию результатов; - представлен список источников, которые были использованы в ходе курсовой работы; - представлены приложения: листинг программного продукта. 1. Описание предметной области1.1 Общие положенияПри проектировании базы данных решаются две основные проблемы: 1.Отображение объектов предметной области в абстрактные объекты модели данных таким образом, чтобы это отображение не противоречило семантике предметной области, и было по возможности лучшим (эффективным, удобным и т.д.). Часто эту проблему называют проблемой логического проектирования баз данных; 2.Обеспечение эффективного выполнения запросов к базе данных, т.е. рациональное расположение данных во внешней памяти, создание полезных дополнительных структур (например, индексов) с учетом особенностей конкретной БД. Эту проблему называют проблемой физического проектирования баз данных. Проблема проектирования реляционной базы данных состоит в обоснованном принятии решений о том, из каких отношений (таблиц) должна состоять БД и какие атрибуты (характеристики и свойства) должны быть у этих отношений. Классическим является подход, при котором весь процесс проектирования производится в терминах реляционной модели данных методом последовательных приближений к удовлетворительному набору схем отношений. Исходной точкой является представление предметной области в виде одного или нескольких отношений, и на каждом шаге проектирования производится некоторый набор схем отношений, обладающих лучшими свойствами. Процесс проектирования представляет собой процесс нормализации схем отношений, причем каждая следующая нормальная форма обладает свойствами лучшими, чем предыдущая. Объект курсовой работы – магазин по продажи компакт дисков. Предмет курсовой работы – процесс учета продукции в магазине. Целью курсовой работы является разработка автоматизированного рабочего места продавца компакт дисков в среде Borland C++ Builder. Исходя из цели работы, я определил для себя следующие задачи: 1) Разработать и описать предметную область программы; 2) Разработать алгоритм на языке С++; 3) Показать возможности применения менеджера (осуществить программную реализацию и протестировать разработанное приложение); 1.2 Сведения из теории1.2.1 Классификация Баз данныхИерархическая модель базы данных состоит из объектов с указателями от родительских объектов к потомкам, соединяя вместе связанную информацию. Иерархические базы данных могут быть представлены как дерево, состоящее из объектов различных уровней. Верхний уровень занимает один объект, второй — объекты второго уровня и т. д. Между объектами существуют связи, каждый объект может включать в себя несколько объектов более низкого уровня. Такие объекты находятся в отношении предка (объект более близкий к корню) к потомку (объект более низкого уровня), при этом возможно, когда объект-предок не имеет потомков или имеет их несколько, тогда как у объекта-потомка обязательно только один предок. Объекты, имеющие общего предка, называются близнецами. К основным понятиям сетевой модели базы данных относятся: уровень, элемент (узел), связь. Узел — это совокупность атрибутов данных, описывающих некоторый объект. На схеме иерархического дерева узлы представляются вершинами графа. В сетевой структуре каждый элемент может быть связан с любым другим элементом. Сетевые базы данных подобны иерархическим, за исключением того, что в них имеются указатели в обоих направлениях, которые соединяют родственную информацию. Несмотря на то, что эта модель решает некоторые проблемы, связанные с иерархической моделью, выполнение простых запросов остается достаточно сложным процессом. Также, поскольку логика процедуры выборки данных зависит от физической организации этих данных, то эта модель не является полностью независимой от приложения. Другими словами, если необходимо изменить структуру данных, то нужно изменить и приложение. Реляционная база данных — база данных, основанная на реляционной модели данных. Термин «реляционный» означает, что теория основана на математическом понятии отношение (relation). В качестве неформального синонима термину «отношение» часто встречается слово таблица. Необходимо помнить, что «таблица» есть понятие нестрогое и неформальное и часто означает не «отношение» как абстрактное понятие, а визуальное представление отношения на бумаге или экране. Некорректное и нестрогое использование термина «таблица» вместо термина «отношение» нередко приводит к недопониманию. Наиболее частая ошибка состоит в рассуждениях о том, что РМД имеет дело с «плоскими», или «двумерными» таблицами, тогда как таковыми могут быть только визуальные представления таблиц. Отношения же являются абстракциями, и не могут быть ни «плоскими», ни «неплоскими». Объектно-ориентированная база данных — база данных, в которой данные оформлены в виде моделей объектов, включающих прикладные программы, которые управляются внешними событиями. Результатом совмещения возможностей (особенностей) баз данных и возможностей объектно-ориентированных языков программирования являются Объектно-ориентированные системы управления базами данных (ООСУБД). ООСУБД позволяет работать с объектами баз данных также, как с объектами в программировании на ООЯП. ООСУБД расширяет языки программирования, прозрачно вводя долговременные данные, управление параллелизмом, восстановление данных, ассоциированные запросы и другие возможности. Так же к основным моделям данных относятся: Многомерные, Объектные, Объектно-реляционные и т.д. 1.2.2 Форма – FormТаблица 1.1 - Свойства формы
1.2.3 Свойства компонента Edit (поле редактирования текста)Компонент Edit используется для считывания информации, вводимой с клавиатуры. Таблица 1.2 - Свойства Edit
1.2.4 Свойства компонента Label (поле вывода текста)Данный компонент предназначен для вывода теста на поверхность формы, его свойства определяют вид и расположение текста. Таблица 1.2 - Свойства Label
1.2.5 Свойства компонента DBGridКомпонент DBGrid отображает набор данных в формате электронной таблицы. Таблица 1.3 - Свойства компонента DBGrid
1.2.6 Свойства компонента CheckBoxКомпонент CheckBox представляет собой независимую кнопку (переключатель). Таблица 1.4 – Свойства CheckBox
1.2.7 Свойства компонента ButtonКомпонент Button представляет собой кнопку, при нажатии которой будет происходить какое – либо событие. Таблица 1.5 – Свойства Button
1.2.8 Свойства компонента TTabSheet
Таблица 1.5 - Свойства TTabSheet
1.3 Постановка задачи1.3.1 Название и назначение разрабатываемого приложенияЯ назвал своё приложение “Автоматизированное рабочее место для продавца компакт дисков”. Разработанная программа предназначена для ведения учета и контроля за базой данных, спроектированной с учетом реализации запросов различного типа по получению информации. 1.3.2 Спецификация входных и выходных данныхВходной информацией для данной программы являются: 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-х модулей: Unit1 void __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)// Удаление записи из БД. Unit2 void __fastcall TAboutBox::OKButtonClick(TObject Sender)//закрытие формы №2 2.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();} //--------------------------------------------------------------------------- |