/>/>Реферат
Представляемыйдокумент содержит:
35 страництекста, четыре рисунка, три используемых источника.
Переченьключевых слов: база данных, учет товаров, программы для магазинов.
Объектомисследования является база данных компьютерного магазина.
Цель работы состоитв создании программного комплекса, обеспечивающего использованиеструктурированной базы данных для компьютерного магазина. Методы, используемыепри разработке – язык программирования высокого уровня C++. Созданныйпрограммный продукт обеспечивает выполнение всех требований техническогозадания.
Содержание
Введение
1. Техническоезадание
1.1 Основаниедля разработки
1.2 Назначениеразработки
1.3 Требованийпользователя к программному изделию
1.4 Требования кпрограмме или программному изделию
1.4.1Входные данные
1.4.2Процессы обработки
1.4.3Выходные данные
1.4.4Результирующие компоненты изделия
1.4.5Носители информации
1.4.6Требования к составу и параметрам технических средств
1.5 Требования кпрограммной документации
1.6 Стадии иэтапы разработки
2 Рабочий проект
2.1 Описаниепрограммы
2.1.1Тип входных данных
2.1.2Выходные данные
2.2.1Форма
2.3.1Компонентына форме
2.4.1Функциональные тесты
Заключение
Списокиспользованных источников
Приложение А
/>
Введение
Цель даннойкурсовой работы разработать программный продукт, предназначенный для учёта,реализации товаров в компьютерного магазине.
Областьприменения программного продукта. Программный продукт может быть использовандля широкого потребления среди пользователей. До внедрения первых ЭВМ вторговую отрасль вести учёт за товарами, которые находятся в наличии и которыетолько поступают в продажу было крайне трудно. Когда на производстве появилисьпервые ЭВМ, то одновременно появились и программы систематизирующие иускоряющие работу и учёт магазинов. Эти программы представляют собой базыданных в которых хранятся все данные о товарах. Современное программноеобеспечение позволяет пользователям хранить огромные объёмы информации опродукции, вводить в базу данных значения введённые с клавиатуры, удалятьлюбую строку по желанию пользователя, просматривать все записи, хранящиеся вбазе данных, выводить количество всех записей на экран, легко и быстро находитьнужный товар по необходимым параметрам, без сложной работы с документамипроизводить быструю надбавку в процентном соотношении на нужный товар. Подобныйпрограммный продукт широко используется в большинстве современных сетей крупныхмагазинов и торговых центров.
Практическоезначение.Программный продукт позволяет сократить время и автоматизировать учёт,реализацию товаров.
Актуальностьразработки программного продукта состоит значительном упрощении и автоматизацииучёта, приёма, продажи товаров в каком-либо техническом учреждении. Программный продукт долженбыть разработан на языке программирования высокого уровня C++,использовать принципы объектно-ориентированного программирования и структурный подходк решению поставленных задач.Результатами выполнения дипломной работ долженстать готовый программный продукт, обеспечивающий всем требованиям техническогозадания.
/>/>1. Техническое задание
/>/>/>/>1.1Основание для разработки
Задача дана на основании курсовойработы. База данных для продуктового магазина./>/>/>/>1.2Назначение разработки
Программныйпродукт разрабатывается с целью создания упорядоченной структуры данных, чтопозволяет существенно экономить используемое для работы время./>/>/>1.3Требования пользователя кпрограммному изделию
Необходимо реализоватьпрограммный продукт, позволяющий использовать структурированную базу данных. 1.4 Требования к программе или программному изделию
/>/> />/>/>/>1.4.1 Входные данные
Входными даннымидля программного продукта являются данные, вводимые пользователем с клавиатуры,такие как:
— Наименованиетовара;
— Код товара;
— Датапоступления;
— Цена товара;
— Количество;
— Имеющийся вналичии файл базы данных «Salon.txt».
Ячейки ссоответствующими значениями будут использоваться для создания таблицы базыданных. Все вводимые значения являются переменными строкового типа. />/>/>/>1.4.2 Процессы обработки
С помощью кнопки «Добавить»значения, введенные пользователем во входных данных записываются в таблицу в соответствующие ячейки. После этого происходит очистка полей для вводазначений.
С помощью кнопки «Сохранить»таблицу со всеми добавленными в нее значениями сохранить в файл «Salon.txt», создающийся в каталоге с программой, илидобавить значения в уже имеющийся файл. Полученный файл можно будет впоследствиииспользовать, не прибегая к работе программы. Кнопка «Удалить» предназначенадля удаления любой по выбору пользователя строки из уже добавленных в базуданных. В ходе этой операции последняя строка таблицы записывается на местоудаленной, а количество строк таблицы соответственно уменьшается. Кнопка«Количество» выводит на экран общее количество строк в таблице. С помощьюкнопки «Поиск» пользователь может определить, есть или в базе данных продукт,который удовлетворяет каким-либо критериям, интересующими пользователя. В ходеэтого процесса все совпадающие значения будут выведены в поисковую таблицу. Вслучае не нахождения подобных значений в базе данных будет выведена пустаятаблица. С помощью кнопки «Накрутка» и значения, введенного пользователем всоответствующее поле можно регулировать выходную цену продукта. Цена будетизменяться в процентном отношении с ранее введенной. Счет идет до двух чиселпосле запятой./>/>/>/>1.4.3 Выходные данные
Выходными данными дляпрограммного продукта являются значения, выводимые программой пользователю наэкран или полученные в процессе обработки данных, такие как:
— файл базы данных «Salon.txt»;
— таблица, созданнаяпользователем в результате работы программы;
— таблица поиска с выведенными наэкран табличными значениями и значениями, введенными пользователем;
— количество всех записей в базеданных.
/>/>/>/>1.4.4 Результирующие компонентыизделия
Заказчикупредоставляются исполняемые файлы и отчёт о проделанной работе./>/>/>/>/>1.4.5Носители информации
Продукт долженразмещаться в виде файлов на CD дисках. В процессе работы могутиспользоваться Flash, CD-R/-RW, DVD-R/RW или другиеносители информации./>1.4.6 />Требования к составу и параметрам технических средств
Программныйкомплекс должен корректно работать на компьютере со следующими техническимихарактеристиками:
− процессорPentium III 1000 МГц;
− оперативнаяпамять объемом 256 Мб;
− жесткийдиск объемом 30 Гб;
− видеоадаптерSVGA;
− клавиатура;
− манипулятортипа “мышь”;
устройствоудаленного доступа к сети: модем или сетевая карта./>/>1.5 />Требованияк программной документации
Программнаядокументация должна включать следующие документы:
· техническоезадание;
· рабочийпроект;
· дискс приложением.
В приложении кдокументу «Рабочий проект» должен быть приведен листинг исходныхтекстов программного изделия.1.6 Стадии и этапы разработки
Выполнениеразработки должно осуществляться в три этапа:
· техническоезадание;
· рабочийпроект.
На стадии«Техническое задание» проводится:
· постановказадачи;
· разработкатребований к программному изделию;
· изучениелитературы по задаче.
На стадии«Рабочий проект» проводится:
· разработкасхем алгоритмов;
· физическоепроектирование программного изделия;
· тестированиеи отладка программного изделия;
· оформлениеработы.
2. Рабочий проект/>/>/>/>/>2.1 Описание программы:
Данная программа состоит из двухчастей:
— Внешний вид форм;
— Компоненты на форме.
2.1.1 Типвходных данных
Входные данные,введенные пользователем с клавиатуры:
— Наименованиетовара (Edit1, тип AnsiString);
— Код товара(Edit3, типAnsiString);
— Датапоступления (Edit2, тип AnsiString);
— Цена товара(Edit4, типAnsiString);
— Количество(Edit5,типAnsiString);
— Надбавка(Edit6,типfloat).
Имеющийся файлбазы данных «Salon.txt».
2.1.2 Выходныеданные
Выходными данными дляпрограммного продукта являются значения, выводимые программой пользователю наэкран или полученные в процессе обработки данных, такие как:
— файл базы данных «Salon.txt»;
— таблица, созданнаяпользователем в результате работы программы (DataGrid1);
— таблица поиска с выведенными наэкран табличными значениями и значениями, введенными пользователем(SearchGrid1);
— количество всех записей в базеданных (Label6, тип Int);
— сообщение об удалении всехзаписей из базы данных (ShowMessage(«Таблица пуста»).
2.2.1 Форма
2.2.1Стандартная форма
/>
Рисунок 1 -- Стандартная форма программы
2.2.1.2 Форма свыведенным на экран количеством записей в базе данных и примером введеннойтаблицы
/>
Рисунок 2 – Формас выведенным на экран количеством записей в базе данных.
2.2.1.3 Форма свыведенной на экран таблицей поиска и совпадением критерия поиска пользователяи уже имеющейся в базе данных записи
/>
Рисунок 3 — Форма с выведенной на экран таблицей поиска.
2.2.1.4 Форма свыводом сообщения об удалении всех строк в базе данных
/>
Рисунок 4 — Форма с выводом сообщения об удалении всех строк в базе данных
2.3.1 Компонентына форме
2.3.1.1 Add
Add – эта кнопкапредназначена для добавления в базу данных введенных с клавиатуры значений,таких как: наименование товара, код товара, дата поступления, дата окончаниясрока годности, цена товара, количество. Кнопка использует две функции.
2.3.1.1.1 add()
Функция add() используетсядля передачи значений полей для ввода в таблицу DataGrid1. Входными данными дляфункции являются значения полей для ввода данных (Edit1, Edit3, Edit2,Edit4, Edit5), выходными данными являются значения соответствующих ячеектаблицы DataGrid1.
2.3.1.1.2 Clear()
Функция Clear() предназначенадля очищения значений после ввода их с клавиатуры в базу данных. Не используетвходных и выходных данных.
2.3.1.2 Save
Save – эта кнопкапредназначена для сохранения готовой базы данных в файл с именем Salon.txt в каталоге спрограммой. Кнопка вызывает одну функцию.
2.3.1.2.1form_save()
Функцияform_save() предназначена для открытия или создания файла с именем Salon.txt, записи в неговсех значений базы данных и закрытии файла.
Входными даннымидля функции являются значения соответствующих ячеек таблицы DataGrid1, выходнымданным является файл с записанными в него этими значениями.
2.3.1.3 Delete
Delete – эта кнопкапредназначена для удаления выбранной пользователем строки из базы данных.Кнопка вызывает одну функцию.
2.3.1.3.1delet()
Функция delet()предназначена для вывода сообщения «Таблица пуста» в случае, если в базе данныхне окажется записей, и для удаления выбранной пользователем строки в базеданных путем записи в эту строку последней строки в базе данных и уменьшениибазы данных по размеру. Входными данными для функции являются свойство RowCountтаблицы DataGrid1 и значение указателя на строку rowtab, выходным даннымявляется измененная таблица DataGrid1.
2.3.1.4 Number
Number – эта кнопкапредназначена для вывода на экран количества всех записей в базе данных.Использует одну функцию.
2.3.1.4.1 all()
Функция All() предназначенадля подсчета записей в базе данных и вывода на форму сообщения «Количествозаписей в базе ». Входное данное для функции – переменная row (количествострок таблицы DataGrid1), выходным данным является метка на форме Label6,выводящая целые значения.
2.3.1.5 Search
Search – эта кнопкапредназначена для сравнения значений, таких как: наименование товара, кодтовара, дата поступления, дата окончания срока годности, цена товара,количество, введенных с клавиатуры, с уже имеющимися соответствующимизначениями в базе данных и вывода их на экран на отдельной таблице. Используетдве функции.
2.3.1.5.1 search()
Функция search() предназначенадля поиска совпадений в исходной базе данных и значениями, введеннымипользователем с клавиатуры по любым критериям поиска и выводом возможныхсовпадений на экран. Входными данными для функции являются значения полей дляввода данных (Edit1, Edit3, Edit2,Edit4, Edit5), переменная row (количество строк таблицы DataGrid1),значения соответствующих ячеек таблицы DataGrid1, выходным данным являетсятаблица поиска SearchGrid1.
2.3.1.5.2 Clear()
Функция былаописана в 2.3.1.1.2
2.3.1.6 plus
Plus – эта кнопкаслужит для расчета дополнительной стоимости продукта и вывода его в базу всоответствующей ячейке. Использует одну функцию.
2.3.1.6.1 plus()
Функция plus() предназначенадля расчета и прибавления к стоимости продукта определенного значения,определяемого пользователем.
Входными даннымидля функции являются: переменная row (количество строк таблицыDataGrid1) и вещественная переменная к, вводимая пользователем в Edit6,выходными данными являются значения колонки «Цена» таблицы DataGrid1.
2.3.1.7sozdanie_form()
Функцияsozdanie_form() предназначена для записи заголовочных колонок в таблицу, созданиялибо открытия уже имеющегося файла. Входными данными являются файл базы данных" Salon.txt",переменная row (количествострок таблицы DataGrid1), выходными данными являются значения ячеек таблицыDataGrid1.
2.4.1 Функциональныетесты
2.4.1.1 Привводе корректных данных в поля для ввода и нажатии на кнопку «Добавить»происходит запись этих данных в соответствующие ячейки в таблицу данных
2.4.1.2 Если вуже имеющейся таблице выбрать строку, кроме строки с названиями колонок инажать на кнопку «Удалить», то произойдет удаление выбранной строки, а на ееместо в таблицу будет записана строка, которая была в таблице последней. Приудалении всех строк в таблице будет выдаваться сообщение «Таблицапуста».
2.4.1.3 Если впроцессе работы требуется вывести на экран количество всех записей в базеданных, то достаточно нажать на кнопку «Количество». Если таблица не пустая, тобудет выведено количество строк таблицы, если же она пустая, то будет выведен0.
2.4.1.4 Впроцессе работы может возникнуть потребность в поиске записей в базе данных поразличным критериям. Для решения этой проблемы надо ввести соответствующиезначения в поля для ввода (поиск может проходить как по одному критерию, так ипо нескольким) и нажать кнопку «Поиск». После нажатия кнопки открываетсяпоисковая таблица, в которую будут выведены все найденные совпадения покритериям поиска между пользовательскими значениями и значениями из базыданных. Если же совпадений найдено не будет, то таблица поиска останетсяпустой.
2.4.1.5 Привведении в поле Edit6 вещественного значения (процентная накрутка кпервоначальной стоимости товара) и нажатии на кнопку «Накрутка» происходитзамена значений колонки «Цена» в главной таблице новыми значениями. Новыезначения также являются денежными, т.е. после запятой в числе только две цифры.
2.4.1.6 Длясохранения изменений в базе данных надо нажать кнопку «Сохранить». При этомпроисходит создание или перезапись файла «Salon.txt» вкаталоге с программой. Файл может быть использован впоследствии отдельно отосновной программы и открывается любым текстовым редактором.
Заключение
Разработанныйпрограммный продукт обеспечивает выполнение всех требований, предъявленных кнему в техническом задании.
Программныйпродукт рекомендован к использованию для широкого круга пользователей.Использование программного продукта позволяет существенно сократитьиспользуемое место на жестком диске и время, проводимое за компьютером, чтоочень актуально в наши дни.
Списокиспользованных источников
1 Архангельский,А.Я., Тагин, М.А. Программирование в C++Builder 6 и 2006[Текст] / М..: ООО “Бином-Пресс”, 2002. – 1184 с.
2 Архангельский,А.Я. Компоненты общего назначения библиотеки Delphi 5.0 [Текст] /А.Я. Архангельский – М.: Бином, 2001. – 416 с.
3 Архангельский,А.Я. Программирование в Delphi 6 [Текст] / А.Я. Архангельский –С.-П.: Бином, 2002. – 1120 с.
/>/>ПриложениеА
Текст программы
//---------------------------------------------------------------------------
#include
#pragmahdrstop
#include«Unit1.h»
#include«stdio.h»
//---------------------------------------------------------------------------
#pragmapackage(smart_init)
#pragmaresource "*.dfm"
TForm1*Form1;
//---------------------------------------------------------------------------
__fastcallTForm1::TForm1(TComponent* Owner)
:TForm(Owner)
{
}
//---------------------------------------------------------------------------
int row = 1;
int rowtab = -1;
classTa
{
public:
AnsiString Naimenovanie, Date1, Kod, Price, Quantity;
FILE *f;
void input(AnsiString, AnsiString, AnsiString, AnsiString, AnsiString);
void sozdanie_form();
void add();
void clear();
void delet();
voidclose();
void form_save();
void all();
void search();
void plus();
};
voidTa::input(AnsiString Naimenovanie, AnsiString Date, AnsiString Kod, AnsiStringPrice, AnsiString Quantity)
{
this->Naimenovanie = Naimenovanie ;
this->Date1 = Date1 ;
this->Kod = Kod;
this->Price = Price;
this->Quantity = Quantity;
}
voidTa::sozdanie_form()
{
Form1->DataGrid1->RowCount = 1;
Form1->DataGrid1->Cells[0][0] ="Íàèìåíîâàíèå";
Form1->DataGrid1->Cells[1][0] = "Äàòàïîñòóïëåíèÿ";
Form1->DataGrid1->Cells[2][0] = "Êîäòîâàðà";
Form1->DataGrid1->Cells[3][0] ="Öåíà";
Form1->DataGrid1->Cells[4][0] ="Êîëè÷åñòâî";
char a1[50];
char b1[50];
char c1[50];
char d1[50];
char e1[50];
if((this->f = fopen(«salon.txt»,«rb»)) != NULL)
{
f = fopen(«salon.txt»,«rb»);
while(!(feof(this->f)))
{
fread(a1,sizeof(char),50,this->f);
fread(b1,sizeof(char),50,this->f);
fread(c1,sizeof(char),50,this->f);
fread(d1,sizeof(char),50,this->f);
fread(e1,sizeof(char),50,this->f);
this->Naimenovanie = a1;
this->Date1 = b1;
this->Kod = c1;
this->Price = d1;
this->Quantity = e1;
if (!(feof(this->f)))
{
row++;
Form1->DataGrid1->RowCount = row;
Form1->DataGrid1->Cells[0][row — 1] = this->Naimenovanie;
Form1->DataGrid1->Cells[1][row — 1] = this->Date1;
Form1->DataGrid1->Cells[2][row — 1] = this->Kod;
Form1->DataGrid1->Cells[3][row — 1] = this->Price;
Form1->DataGrid1->Cells[4][row — 1] = this->Quantity;
}
}
}
else {this->f = fopen(«salon.txt»,«wb»);};
fclose(this->f);
}
voidTa::add()
{
Form1->DataGrid1->Cells[0][Form1->DataGrid1->RowCount] =Form1->Edit1->Text;
Form1->DataGrid1->Cells[1][Form1->DataGrid1->RowCount] =Form1->Edit2->Text;
Form1->DataGrid1->Cells[2][Form1->DataGrid1->RowCount] =Form1->Edit3->Text;
Form1->DataGrid1->Cells[3][Form1->DataGrid1->RowCount] =Form1->Edit4->Text;
Form1->DataGrid1->Cells[4][Form1->DataGrid1->RowCount] =Form1->Edit5->Text;
row++;
Form1->DataGrid1->RowCount = row;
Form1->Edit1->Clear();
Form1->Edit2->Clear();
Form1->Edit3->Clear();
Form1->Edit4->Clear();
Form1->Edit5->Clear();
}
voidTa::form_save()
{
this->f = fopen(«salon.txt», «w+b»);
char one[50];
char two[50];
char three[50];
char four[50];
char five[50];
for(int i = 1; i
{
AnsiString a1 = Form1->DataGrid1->Cells[0][i];
AnsiStringa2 = Form1->DataGrid1->Cells[1][i];
AnsiString a3 = Form1->DataGrid1->Cells[2][i];
AnsiString a4 = Form1->DataGrid1->Cells[3][i];
AnsiString a5 = Form1->DataGrid1->Cells[4][i];
strncpy(one,a1.c_str(),50);
strncpy(two,a2.c_str(),50);
strncpy(three,a3.c_str(),50);
strncpy(four,a4.c_str(),50);
strncpy(five,a5.c_str(),50);
fwrite(one,sizeof(char),50,this->f);
fwrite(two,sizeof(char),50,this->f);
fwrite(three,sizeof(char),50,this->f);
fwrite(four,sizeof(char),50,this->f);
fwrite(five,sizeof(char),50,this->f);
}
fclose(this->f);
}
voidTa::delet()
{
int k = 0;
for(int i = 1; i
k++;
if (Form1->DataGrid1->RowCount == 1)ShowMessage("Òàáëèöàïóñòà" );
else
{
Form1->DataGrid1->Cells[0][rowtab] = Form1->DataGrid1->Cells[0][k];
Form1->DataGrid1->Cells[1][rowtab] = Form1->DataGrid1->Cells[1][k];
Form1->DataGrid1->Cells[2][rowtab] = Form1->DataGrid1->Cells[2][k];
Form1->DataGrid1->Cells[3][rowtab] = Form1->DataGrid1->Cells[3][k];
Form1->DataGrid1->Cells[4][rowtab] = Form1->DataGrid1->Cells[4][k];
Form1->DataGrid1->Cells[5][rowtab] = Form1->DataGrid1->Cells[5][k];
Form1->DataGrid1->RowCount--;
}
}
voidTa::all()
{
int k = 0;
for(int i = 1; i
k++;
Form1->Label6->Caption ="Êîëè÷åñòâîçàïèñåé âáàçå " + IntToStr(k);
}
voidTa::search()
{
int k = 0;
for (int i = 1; i
{
if ((Form1->DataGrid1->Cells[0][i] ==Form1->Edit1->Text)||(Form1->DataGrid1->Cells[1][i] ==Form1->Edit2->Text)||(Form1->DataGrid1->Cells[2][i] == Form1->Edit3->Text)||(Form1->DataGrid1->Cells[3][i]== Form1->Edit4->Text)||(Form1->DataGrid1->Cells[4][i] ==Form1->Edit5->Text))
{
Form1->SearchGrid1->Cells[0][k] = Form1->DataGrid1->Cells[0][i];
Form1->SearchGrid1->Cells[1][k] = Form1->DataGrid1->Cells[1][i];
Form1->SearchGrid1->Cells[2][k] = Form1->DataGrid1->Cells[2][i];
Form1->SearchGrid1->Cells[3][k] = Form1->DataGrid1->Cells[3][i];
Form1->SearchGrid1->Cells[4][k] = Form1->DataGrid1->Cells[4][i];
Form1->SearchGrid1->Cells[5][k] = Form1->DataGrid1->Cells[5][i];
k++;
Form1->SearchGrid1->RowCount = k;
}
Form1->SearchGrid1->Visible = True;
}
Form1->Edit1->Clear();
Form1->Edit2->Clear();
Form1->Edit3->Clear();
Form1->Edit4->Clear();
Form1->Edit5->Clear();
}
voidTa::plus()
{
float k = StrToFloat(Form1->Edit6->Text);
k= k/100;
for (int i = 1; i
Form1->DataGrid1->Cells[3][i] =((float)((int)((Form1->DataGrid1->Cells[3][i]*(1 + k))*100))/100);
}
void__fastcall TForm1::AddClick(TObject *Sender)
{
Ta a;
a.add();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::SaveClick(TObject *Sender)
{
Ta a;
a.form_save();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::FormCreate(TObject *Sender)
{
Ta a;
a.sozdanie_form();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::DeleteClick(TObject *Sender)
{
Ta a;
a.delet();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::SearchClick(TObject *Sender)
{
Ta a;
a.search();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::NumberClick(TObject *Sender)
{
Ta a;
a.all();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::plusClick(TObject *Sender)
{
Ta a;
a.plus();
}
//---------------------------------------------------------------------------
void__fastcall TForm1::DataGrid1SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{
rowtab = ARow;
}
//---------------------------------------------------------------------------