База данных спортивной обуви

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    257 Кб
  • Опубликовано:
    2012-07-15
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

База данных спортивной обуви

Содержание

Введение

Язык C++

Концепция типа данных

Типы данных, использованные при создании базы данных

Структура программы

Переменные и выражения

Указатели

Теоретическое осмысление поставленной задачи

Тестирование и описание полей

Заключение

Используемая литература

Листинг программы

Введение

Моя тема курсовой работы “База данных спортивной обуви”. Выбрана она мной не случайно, т.к. я очень заинтересован развитием спорта в нашей стране. По данным информационного портала “Российская газета” в 2006 году правительством РФ была подписана Федеральная целевая программа "Развитие физической культуры и спорта в РФ на 2006-2015 годы". А в июле 2009 года правительство утвердило Стратегию развития физической культуры и спорта в Российской Федерации до 2020 года. На сегодня доля россиян занимающихся спортом составляет 15,9 процента от общего числа населения страны. К 2020 году ее планируется довести до 40 процентов. Чтобы добиться лучших результатов в спорте нужны: новые технологии, новое оборудование и, не маловажное, экипирование. Для того чтобы спортсмены улучшали свои результаты, для того чтобы не получали травмы нужна удобная и практичная спортивная обувь. Собственно, именно поэтому я и выбрал данную тему курсовой работы.

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

Программа, написанная мной, нацелена на составление базы данных спортивной обуви. В будущем я планирую расширение данного программного обеспечения и внедрения его в сферу торговли.

Язык C++

++ - универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей C++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, C++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.

Ключевым понятием C++ является класс. Класс - это тип, определяемый пользователем. Классы обеспечивают скрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. C++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline- подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В C++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем. ++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C. Из C++ программ можно использовать C библиотеки, и с C++ можно использовать большую часть инструментальных средств, поддерживающих программирование на C.

Концепция типа данных

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

Тип данных определяет:

• внутреннее представление данных в памяти компьютера;

• множество значений, которые могут принимать величины этого типа;

• операции и функции, которые можно применять к величинам этого тина.

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

Все типы языка C++ можно разделить на основные и составные. В языке C++ определено шесть основных типов данных для представления целых, вещественных, символьных и логических величин. На основе этих типов программист может вводить описание составных типов. К ним относятся массивы, перечисления, функции, структуры, ссылки, указатели, объединения и классы.

Типы данных, использованные при создании базы данных

Символьный тип (char)

Под величину символьного типа отводится количество байт, достаточное для размещения любого символа из набора символов для данного компьютера, что и обусловило название типа. Как правило, это 1 байт. Тип char, как и другие целые типы, может быть со знаком или без знака. В величинах со знаком можно хранить значения в диапазоне от -128 до 127. При использовании спецификатора unsigned значения могут находиться в пределах от О до 255. Этого достаточно для хранения любого символа из 256-символьного набора ASCH. Величины типа char применяются также для хранения целых чисел, не превышающих границы указанных диапазонов.

Тип void

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

Целый тип (int)

Размер типа int не определяется стандартом, а зависит от компьютера и компилятора. Для 16-разрядного процессора под величины этого типа отводится 2 байта, для 32-разрядного - 4 байта.

Спецификатор short перед именем типа указывает компилятору, что под число требуется отвести 2 байта независимо от разрядности процессора. Спецификатор long означает, что целая величина будет занимать 4 байта. Таким образом, на 16-разрядном компьютере эквиваленты int и short int, а на 32-разрядном - int и long int.

Внутреннее представление величины целого типа - целое число в двоичном коде. При использовании спецификатора signed старший бит числа интерпретируется как знаковый (О - положительное число, 1 - отрицательное). Спецификатор unsigned позволяет представлять только положительные числа, поскольку старший разряд рассматривается как часть кода числа. Таким образом, диапазон значений типа 1nt зависит от спецификаторов. По умолчанию все целочисленные типы считаются знаковыми, то есть спецификатор signed можно опускать.

Константам, встречающимся в программе, приписывается тот или иной тип в соответствии с их видом. Если этот тип по каким-либо причинам не устраивает программиста, он может явно указать требуемый тип с помощью суффиксов L, 1 (long) и и, U (unsigned). Например, константа 32L будет иметь тип long и занимать 4 байта. Можно использовать суффиксы L и U одновременно, например, Ox22UL или 05LU.

Класс string

Класс string предназначен, естественно, для работы со строками. Он находится в пространстве имен std b для его использования надо подключить string. Через класс string достаточно удобно - вы можете делать конкатенацию (сложение) строк с помощью обычного оператора +, можете брать символ в определенном месте строки с помощбю оператора [] (или другим способом - с помощью метода at), можете использовать привычные операторы =, ==, != для присваивания и сравнения строк. Также имеются методы для получения длины строки, для выяснения, не пустая ли это строка и др. Обратите внимание также на весьма полезный метод getline, который позволяет прочитать строку из определенного потока.

Структура программы

Программа на языке C++ состоит из функций описаний и директив препроцессора. Одна из функций должна иметь имя main. Выполнение программы начинается с первого оператора этой функции. Как правило, функция используется для вычисления какого-либо значения, поэтому перед именем функции указывается его тип. Программа может состоять из нескольких модулей (исходных файлов). Несколько предварительных замечаний о вводе/выводе. В языке C++ нет встроенных средств ввода/вывода - он осуществляется с помощью функций, типов и объектов, содержащихся в стандартных библиотеках. Используется два способа: функции, унаследованные из языка С, и объекты C++.

Переменные и выражения

В любой программе требуется производить вычисления. Для вычисления значений используются выражения, которые состоят из операндов, знаков операций и скобок. Операнды задают данные для вычислений. Операции задают действия, которые необходимо выполнить. Каждый операнд является, в свою очередь, выражением или одним из его частных случаев, например, константой или переменной. Операции выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки. Рассмотрим составные части выражений и правила их вычисления.

Переменные.

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

Выражения.

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

Указатели

Когда компилятор обрабатывает оператор определения переменной, например, int i=10:, он выделяет память в соответствии с типом (int) и инициализирует ее указанным значением (10). Все обращения в программе к переменной по ее имени (i) заменяются компилятором на адрес области памяти, в которой хранится значение переменной. Программист может определить собственные переменные для хранения адресов областей памяти. Такие переменные называются указателями. Итак, указатели предназначены для хранения адресов областей памяти. В C++ различают три вида указателей - указатели на объект, на функцию и на void, отличающиеся свойствами и набором допустимых операций. Указатель не является самостоятельным типом, он всегда связан с каким-либо другим конкретным типом.

Теоретическое осмысление поставленной задачи

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

Добавление записи

Изменение записи

Поиск записи по фирме

Поиск записи по типу обуви

Просмотр записи по ID

Просмотр всех записей

Удаление записи

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

Для создания базы данных я разбил свою работу на несколько этапов:

Концептуальное (инфологическое) проектирование.

Концептуальное (инфологическое) проектирование - построение семантической модели предметной области, то есть информационной модели наиболее высокого уровня абстракции. Такая модель создаётся без ориентации на какую-либо конкретную СУБД и модель данных

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

Начало создание базы данных было начато именно с построения ER - диаграммы, которая представлена ниже:




Логическое (даталогическое) проектирование

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

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

На этапе логического проектирования учитывается специфика конкретной модели данных, но может не учитываться специфика конкретной СУБД.

Физическое проектирование


Тестирование и описание полей

номер записи - тип int

Вид обуви - тип string

Фирма - тип string

Производитель - тип string

Модель - тип string

Размер - тип int

Цвет - тип string

Цена - тип int

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


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

Если пользователь выберет 1 пункт меню “Добавить запись”, то ему предложат по очереди внести информацию новой записи. Для завершения ввода записей достаточно нажать “Enter”.

При нажатии клавиши 2 пользователю будет предложена функция изменения любой записи по ее ID номеру.

При нажатии клавиш 3, 4 пользователю представиться возможность осуществить поиск по “Фирме” или “Типу обуви” .


При нажатии клавиш 5, 6 осуществляется просмотр файлов записанных в базе.


После нажатия клавиши 7 пользователю представляется выбор, какую именно запись ему нужно удалить.


По нажатию клавиши 8 пользователю показываются все данные сохраненные в файле “base.txt”



Заключение

В начале работы передо мной стояла цель создать функциональную, простую для понимания и использования, программу, в которой запись и считывание производится из динамической памяти и из текстового файла. Функции, описанные в теоретической части, были написаны и объединены в одну программу. Для хранения информации в программе была использована структура, а при закрытии программы производится запись в текстовый файл. В ходе написания курсовой были использованы знания, полученные на дисциплинах “Высокоуровневые методы информатики и программирования” и “Базы данных”.

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


Список использованной литературы

Информационный портал “Российская газета”/C++ Программирование на языке высокого уровня (Т. А. Павловская)

Язык программирования C++. Специальное издание (Б. Страуструп)



Листинг программы

#include <iostream>

#include <math.h>

#include <conio.h>

#include <windows.h>

#include <stdlib.h>

#include <fstream>

#include <string>

#include <locale.h>namespace std;

num = 0;

/*struct item

{id;//номер записиtype;//Вид обувиfirm;//Фирмаmfr;//Производительmodel;//Модельsize;//Размер

string color;//Цветprice;//Цена

* next;

};*/

bibl

{

int id;//номер записиtype;//Вид обувиfirm;//Фирмаmfr;//Производительmodel;//Модельsize;//Размер

string color;//Цветprice;//Цена

};item { bibl inf;

struct item* next;} * top=0;

f;add(int ID,string TYPE,string FIRM,string MFR,string COLOR,string MODEL,int PRICE,int SIZE);del(item * q);view(item * q);addMenu();viewMenu();edit(item * r);editMenu();searchMenu();viewAll();zapic();download();

* first = NULL; // Первый элемент списка

item * last = NULL; // Последний элемент списка

void add(int ID,string TYPE,string FIRM,string MFR,string COLOR,string MODEL,int PRICE,int SIZE)

{* c = new item;

>inf.id = ID;>inf.type = TYPE;>inf.firm = FIRM;>inf.mfr = MFR;>inf.color = COLOR;>inf.model = MODEL;>inf.price = PRICE;>inf.size = SIZE;>next = NULL;

//if(first == NULL)first = c;>next = last;= c;

}

del(item * q)

{(q == first){first = first->next;}

{* d = first;(d->next != q){d = d->next;}>next = q->next;(q == last)last = d;q;

}

}view(item * q)

{<<" -- "<<q->inf.id<<"\n Вид обуви: "<<q->inf.type<<". Фирма: "<<q->inf.firm<<". Производитель: "<<q->inf.mfr<<". Модель: "<<q->inf.model<<". Цвет: "<<q->inf.color<<". Цена: "<<q->inf.price<<". Размер: "<<q->inf.size<<endl;

}

addMenu()

{("cls");

ofstream fout("base.txt",ios::app);

int ID;//номер записиTYPE;//вид обувиFIRM;//фирмаMFR;//производительCOLOR;//цветMODEL;//модельPRICE;//цена

int SIZE;//размер

 cout<<"Введите номер записи: ";

cin>>ID;<<"Введите тип обуви: ";

cin>>TYPE;

cout<<"Введите фирму: ";

cin>>FIRM;<<"Введите производителя: ";>>MFR;<<"Введите цвет: ";

cin>>COLOR;<<"Введите модель: ";

cin>>MODEL;<<"Введите цену: ";>>PRICE;<<"Введите размер: ";>>SIZE;

(ID,TYPE,FIRM,MFR,COLOR,MODEL,PRICE,SIZE);("cls");<<"Запись "<<ID<<" добавлена\n";<<endl<<ID<<" "<<TYPE<<" "<<FIRM<<" "<<MFR<<" "<<COLOR<<" "<<MODEL<<" "<<PRICE<<" "<<SIZE;.close();

_getch();

//zapic();("cls");

}

viewMenu()

{("cls");ID;

cout<<"Введите номер записи: ";>>ID;

item * r = last;(r != NULL)

{(r->inf.id != ID && r->next != NULL)

{=r->next;

}(r->inf.id == ID)view(r);else cout<<"Запись не найдена в базе\n";

}

{<<"Записей нет";

}

_getch();

}

viewAll()

{

("cls");* r = last;(r != NULL)

{(r != NULL)

{(r);=r->next;

}

}

{<<"Записей нет\n";

}

_getch();

}

delMenu()

{("cls");

int ID;<<"Введите номер записи: ";

cin>>ID;* r = first;(r != NULL)

{(r->inf.id != ID && r->next != NULL)

{=r->next;

}(r->inf.id == ID)del(r);else cout<<"Запись не найдена в базе\n";

}

{<<"Записей нет";

}

_getch();

}

searchMenu()

{("cls");FIRM;<<"Введите фирму: ";>>FIRM;* r = last;(r != NULL)

{(r->inf.firm != FIRM && r->next != NULL)

{=r->next;

}(r->inf.firm == FIRM)view(r);else cout<<"Запись не найдена в базе\n";

}

{<<"Записей нет";

}

_getch();

}

searchMenu2()

{("cls");TYPE;<<"Введите тип обуви: ";>>TYPE;* r = last;(r != NULL)

{(r->inf.firm != TYPE && r->next != NULL)

{=r->next;

}(r->inf.type == TYPE)view(r);else cout<<"Запись не найдена в базе\n";

}

{<<"Записей нет";

}

_getch();

}

edit(item * r)

{("cls");ID;//номер записиTYPE;//вид обувиFIRM;//фирмаMFR;//производительCOLOR;//цветMODEL;//модельPRICE;//цена

int SIZE;//размер

cout<<"Введите номер записи: ";

cin>>TYPE;<<"Введите фирму: ";>>FIRM;

cout<<"Введите производителя: ";>>MFR;<<"Введите цвет: ";

cin>>COLOR;<<"Введите модель: ";

cin>>MODEL;<<"Введите цену: ";>>PRICE;<<"Введите размер: ";>>SIZE;

r->inf.id = ID;>inf.type = TYPE;>inf.firm = FIRM;>inf.mfr = MFR;>inf.color = COLOR;>inf.model = MODEL;>inf.price = PRICE;>inf.size = SIZE;

system("cls");<<"Запись изменена";

}

editMenu()

{("cls");ID;

cout<<"Введите номер записи: ";>>ID;

item * r = last;(r != NULL)

{(r->inf.id != ID && r->next != NULL)

{=r->next;

}(r->inf.id == ID)edit(r);else cout<<"Запись не найдена в базе\n";

}

{<<"Записей нет\n";

}

_getch();

}

download()

{ ("cls");str_file[100]; * fp = fopen("base.txt","r"); (fp != NULL)

{ i=0; ch; ((ch = getc(fp)) != EOF) _file[i++]=ch; _file[i] = '\0';

printf(str_file);

}

printf("Невозможно открыть файл на чтение.\n");

fclose(fp);

_getch();

}

zapic()

{item *r;.open("base.txt", ios_base::app | ios_base::binary);(!f.is_open())

{

cout << "Error Opening bible.dat\n";

_getch();

//return -1;

}=last;(!r)

{f.write((char*)&(r->inf),sizeof(bibl));=r->next;

}

//f.close

}

main()

{(1251);

SetConsoleOutputCP(1251);

//setlocale( LC_CTYPE, ".1251" );

menu = -1;(menu != 0)

{("cls");

cout<<"1) Добавить запись\n"

<<"2) Изменить запись\n"

<<"3) Поиск записи по фирме\n"

<<"4) Поиск записи по типу обуви\n"

<<"5) Просмотр одной записи (по номеру)\n"

<<"6) Просмотр всех записей\n"

<<"7) Удаление записи (по номеру)\n"

<<"8) Загрузка базы данных\n"

<<"0) Выход\n";

cin>>menu;(menu == 1)addMenu();(menu == 2)editMenu();(menu == 3)searchMenu();(menu == 4)searchMenu2();(menu == 5)viewMenu();(menu == 6)viewAll();(menu == 7)delMenu();(menu == 8)FromFile();;

(menu == 0){zapic();f.close();}

}

0;

}


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!