Создание базы данных для аптечного киоска

Автор работы: Пользователь скрыл имя, 15 Мая 2013 в 20:55, курсовая работа

Краткое описание

В курсовой работе необходимо разработать программу на языке C++ для обработки данных типа структура под названием «Аптечный киоск», содержащей поля: наименование товара, отпускается по рецепту или нет, срок годности, цена.
Обеспечить выполнение следующих операций:
• Создание нового массива;
• Организация меню, состоящее из двух пунктов: Вывод имеющегося товара и Выход;

Содержание

Введение 3
1. Описание программы 6
2. Описание функциональности программы 13
Выводы 19
Список литературы 20
Приложения 21

Вложенные файлы: 1 файл

Готовая курсовая Аптечный киоск2.doc

— 410.50 Кб (Скачать файл)

 

 

 

 

 

 

 

 

 

 

Титульный лист

 

Содержание

 

 

 

 

Введение

 

Язык Си, созданный  Денисом Ритчи в начале 70-х  годов в Bell Laboratory американской корпорации AT&T, является одним из универсальных  языков программирования. Язык Си считается  языком системного программирования, хотя он удобен и для написания  прикладных программ

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

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

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

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

Разрешается вкладывать структуры одна на другую. Для лучшего  восприятия структуры используем русские  буквы в идентификаторах, в языке  СИ этого делать нельзя.

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

В курсовой работе необходимо разработать программу на языке C++ для обработки данных типа структура под названием «Аптечный киоск», содержащей поля: наименование товара, отпускается по рецепту или нет, срок годности, цена.

Обеспечить выполнение следующих  операций:

    • Создание нового массива;
    • Организация меню, состоящее из двух пунктов: Вывод имеющегося товара и Выход;
    • Вывод на экран всех элементов списка;
    • Добавление и удаление элементов из списка;
    • Поиск в списке по заданному ключу;
    • Выборка из списка количества товара, цена которого не превосходит определенной величины.

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

  1. В ходе работы необходимо объявить структуру, содержащую четыре поля: название лекарственного средства, отпускается по рецепту или нет, срок годности и цена. Массив должен содержать 20 таких структур.
  2. Организовать меню, состоящее из двух пунктов: Вывод всех лекарств и Выход.
  3. Добавить пункт меню Выбор определенного лекарства. Пользователь должен ввести название лекарства, а программа должна выводить все лекарства имеющих такое название.
  4. Добавить пункт меню Запись информации в файл. Пользователь должен ввести имя файла, и программа запишет содержимое массива в этот файл.
  5. Добавить пункт меню Сортировка лекарств по заданному полю. Пользователь сообщает поле, по которому отсортировать лекарства (по названию, по необходимости рецепта, по сроку годности или по цене), и после этого программа выполняет сортировку.
  6. Добавить пункт меню Распродажа. Пользователь вводит число процентов, на которое нужно уценить все лекарства, и программа снижает цену у всех товаров на эту величину.
  7. Добавить пункт меню Количество лекарств, цена которых превосходит … . Пользователь вводит цену, а программа выводит все товары, цена которых превосходит введенное значение.

 

 

  1. Описание программы

 

Для разработки программ в среде Microsoft Visual Studio и Microsoft Visual Studio Express следует создать так называемый проект или решение.

Кроме базовых  типов переменных, поддерживаемых Си (например, int, float, char и т.п.)  программисту предоставляется возможность самостоятельно формировать пользовательские форматы данных. Наиболее распространенными являются составные, структурные типы, объединяющие в себе несколько базовых компонентов данных. Используя структуры, программист получает возможность группировать данные различных типов и работать с такими группами как с одной информационной единицей.

Пусть требуется  составить перечень товаров, продающихся  в аптечном киоске. Достаточной для  поиска товара в базе является следующая информация:

– название товара;

– отпускается по рецепту или нет;

– срок годности;

– цена.

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

 

 

 

 

Таблица 1

Имя элемента

Соответствующий тип данных

Название товара

Количество товара

Цена

Срок годности

Символьный  массив неизвестного размера (char *)

Целочисленная переменная (int)

Переменная  с плавающей запятой (float)

Символьный  массив (char [8])


 

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

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

 

struct <имя_структурного_типа>

{

      определение элементов ;

  } <имена  переменных >;

 

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

 

struct Drugstore_items

{

              char * title;

              int num_drug;

              float price;

              char shelf_life [8];

          } drug1, drug2, drug3;

 

Определенный структурный тип имеет имя - Drugstore_items, он содержит четыре члена структуры title, num_drug, price и shelf_life. Здесь же объявлены три переменные - drug1, drug2, drug3 формата Drugstore_items.

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

Как и при работе с обычными переменными  после объявления структуры необходимо заполнить её данными. Самый простой  способ заключается в одновременном  декларировании и инициализации структуры.

 

struct Drugstore_items

{

              char title [14];

              int recipe;

              float price;

              int shelf_life;

          } DRUG1 = { "Анальгин", "да", 6.55, "11122014" };

 

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

 

const int n=20;

Drugstore_items drugs[n] = {

  {"Анаферон взрослый", "да", 11012014, 135.00},

  {"Эссливер форте", "нет", 11102013, 298.00},

  {"АЦЦ ЛОНГ", "да", 11062013, 403.50},

  {"Магне В6", "нет", 13062013, 549.00},

  {"Линекс", "да", 24062013, 569.00},

  {"Тера Флю взрослый", "нет", 16062013, 354.00},

  {"Тера Флю детский", "нет", 16082013, 254.00},

  {"Но-шпа", "да", 16092013, 112.00},

  {"Найз", "нет", 16092013, 147.50},

  {"Тигацил", "да", 11062013, 1403.50},

  {"Макмирор", "нет", 26102013, 550.00},

  {"Сафоцид", "да", 24062013, 541.00},

  {"Тержинан", "нет", 16062013, 441.00},

  {"Эрселюферил", "да", 16072013, 433.50},

  {"Розекс", "нет", 16082013, 414.00},

  {"Аскорбиновая кислота", "да", 16092013, 18.00},

  {"Шалфей", "нет", 16062013, 83.00},

  {"Боярышник плоды", "нет", 16062013, 58.00},

  {"Сбор грудной", "нет", 16062013, 59.50},

  {"Лазолван", "нет", 15062013, 444.00}

};

 

Часто данные, предназначенные  для хранения в структуре, заранее неизвестны и поэтому большинство программистов организовывают их заполнение в ходе выполнения программы. Инициализация элементов структуры в этом случае осуществляется с помощью специального оператора – точки (.). Этот оператор специально предназначен для обращения к компонентам структуры как к самостоятельным, неструктурированным переменным. Формат обращения следующий:

имя_структурной_переменной . имя_элемента_структуры

Другим, альтернативным, обращением к полям структуры является использование оператора "->". Этот оператор используется в том случае, когда программист располагает указателем на структуру

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

 

void printDrugs() {

  printf("%-25s %-20s %-15s %-10s\n", "Название",

    "Отпуск по рецепту", "Срок годности", "Цена");

for (int i=0; i<20; i++) {

printf("%-25s %-20s %-15d %-10.2f\n",

drugs[i].title, drugs[i].recipe,

                    drugs[i].shelf_life, drugs[i].price);

}

}

Программа заполняет  структурную переменную с именем Drugstore_items и выводит значения её полей  на экран.

Алгоритмы сортировки применимы к любым объектам, в  том числе и к структурам. Рассмотрим особенности, которые нужно учитывать  при сортировке массива структур.

Во-первых, структуры  сортируются по какому-то полю, поэтому  сравнение нужно указывать это  поле:

If (b1.price > b2.price) { }

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

    Drugstore_items temp = drugs[max];

    drugs[max] = drugs[i];

    drugs[i] = temp;

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

1. Интерфейс  программы

Для удобства работы было создано примитивное консольное меню, позволяющее быстро задействовать ту или иную процедуру. С условием того что пользователь знает правильный порядок выполнения процедур. Общая структура меню состоит из процедуры switch() внутри которой расположены все возможные варианты меню, которые вызывают те или иные функции.

2. Загрузка и  вывод базы данных

Для загрузки базы данных разработана процедура void Read(), в которой производится считывание записей типа struct Drugstore_items («Аптечный киоск»). Здесь же предусмотрена проверка на наличие файла, откуда выполняется считывание. Данная процедура вызывается независимо от желания пользователя, в то время как остальные он может выбрать посредствам меню.

За вывод  элементов считанной базы данных отвечает процедура void printDrugs ().

3.Вспомогательные  функции и процедуры для сортировки данных

Для сортировки данных используется процедура void isGreater(Drugstore_items b1, Drugstore_items b2, int field). Доступ к записям базы данных осуществляется через индексный массив, для сортировки по разным полям. Здесь же используется процедура сравнения двух строк, например b1.price > b2.price.

4. Кодирование  данных

Кодирование базы данных начинается с процедуры void ShennonCode (FILE *f, char file_in[], char file_out[]) которая одновременно считает вероятности встречающихся символов и общее их количество, а также заносит информацию в индексные массивы. После сортировки через дополнительную функцию сортировки MergeSort снова меняет информацию в индексах и выводит символы, их вероятности, длины кодовых слов и сами кодовые слова на монитор. Также вычисляются энтропия и средняя длина кодового слова.

 

 

 

 

 

  1. Описание функциональности программы

 

Запускаем программу, нажав комбинацию клавиш Ctrl+F5 или кнопку с зеленым треугольником (как «Play» на музыкальном проигрывателе), и на экране монитора появится окно приложения.

Запустив программу, мы видим меню, которое состоит  из 10 пунктов (скриншот №1).

Скриншот №1

Каждый из пунктов  выполняет определенную задачу. На скриншоте №2 мы видим Вывод всех лекарств (пункт 1).

 

Скриншот №2

Далее мы выбираем пункт 2 и решили найти препарат АЦЦ  ЛОНГ (Скриншот №3).

 

Скриншот №3

Далее мы выбрали  пункт 4 и отсортировали названия лекарств по алфавиту, чтобы увидеть  конечный результант снова выводим  список всех лекарств, где видим  произведенную ранее сортировку (Скриншот №4).

Информация о работе Создание базы данных для аптечного киоска