Автоматизация рабочего места менеджера магазина специального оснащения
Создание программного обеспечения и разработка программ автоматизации процессов. Считывание товаров из файла. Группировка товаров по категориям. Вывод на экран всех товаров в заданной категории. Изменение полей товара и запись изменений в файл.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 29.12.2014 |
Размер файла | 312,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования Республики Беларусь
Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники»
Факультет компьютерных технологий
Кафедра информационных систем и технологий
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе
на тему
АРМ МЕНЕДЖЕРА МАГАЗИНА СПЕЦИАЛЬНОГО ОСНАЩЕНИЯ
Студент: гр. 380961
Довнар. А.О.
Руководитель: ст. преп.
Коренская И. Н.
Минск 2014
Учреждение образования
«Белорусский государственный университет информатики и радиоэлектроники»
Факультет компьютерных технологий
УТВЕРЖДАЮ
Заведующий кафедрой
------------------------
(подпись)
------------------2014 г.
ЗАДАНИЕ
по курсовому проекту
Студенту Довнару Александру Олегивичу
1. Тема проекта Автоматизация Рабочего Места Менеджера магазина специального оснащения
2. Срок сдачи студентом законченного проекта-----11 декабря 2014 г.
3. Исходные данные к проекту Файл товаров ------------------------------------------------------ -----
4. Содержание расчетно-пояснительной записки (перечень вопросов, которые подлежат разработке)
Введение. 1. Постановка задачи. 1.1. Формулировка задания. 1.2. Описание исходных данных. 1.3. Описание результатов 2. Описание методов решения задачи. 3. Описание блок-схемы алгоритма. 4. Описание программы. 5. Анализ результатов работы программы. Заключение. Список использованных источников.
5. Перечень графического материала (с точным обозначением обязательных чертежей и графиков)
--Блок-схема алгоритма.
6. Консультант по проекту (с обозначением разделов проекта) И. Н. Коренская
7. Дата выдачи задания -----04 сентября 2014 г.----------------- -
8. Календарный график работы над проектом на весь период проектирования (с обозначением сроков выполнения и трудоемкости отдельных этапов):
Разделы1,2к18.09- 20%;
раздел 3 к 02.10 - 20 %;
разделы 4,5 к 31.10 - 40 %;
оформление пояснительной записки и графического материала к 27.11 - 20 % Защита курсового проекта с 11.12 по 24.12
РУКОВОДИТЕЛЬ-- И. Н. Коренская__
(подпись)
Задание принял к исполнению -- _____________ А. О. Довнар_____
(дата и подпись студента)
СОДЕРЖАНИЕ
Введение
1. Постановка задачи
1.1 Формулировка задания
1.2 Описание исходных данных
1.3 Описание результатов
2. Описание методов решения задачи
3. Описание блок-схемы алгоритма
4. Описание программы
5. Анализ результатов работы программы
Заключение
Список использованных источников
Приложение 1
Приложение 2
ВВЕДЕНИЕ
Целью курсового проекта является отработка навыка работы с классами на С++,динамическими массивами, файлами и потоками ввода/вывода.
Объектно-ориентированное программирование представляет собой метод программирования, который весьма близко напоминает наше поведение. Оно является естественной эволюцией более ранних нововведений в разработке языков программирования. Объектно-ориентированное программирование является более структурным, чем все предыдущие разработки, касающиеся структурного программирования. Оно также является более модульным и более абстрактным, чем предыдущие попытки абстрагирования данных и переноса деталей программирования на внутренний уровень. Объектно-ориентированный язык программирования характеризуется тремя основными свойствами:
1. Инкапсуляция. Комбинирование записей с процедурами и функциями, манипулирующими полями этих записей, формирует новый тип данных - объект.
2. Наследование. Определение объекта и его дальнейшее использование для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта, относящегося к иерархии, доступа к коду и данным всех порождающих объектов.
3. Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, именно ему подходящим.
Языковые расширения C++ предоставляют вам все средства объектно-ориентированного программирования: большую структурированность и модульность, большую абстрактность и встроенную непосредственно в язык возможность повторного использования. Все эти характеристики соответствуют коду, который является более структурированным, более гибким и более легким для обслуживания.
1. ПОСТАНОВКА ЗАДАЧИ
1.1 Формулировка задания
Темой курсового проекта является приложение для автоматизации рабочего места менеджера магазина по продаже специального оснащения.
Следует организовать такие возможности как:
- Считывание товаров из файла;
- Анализ полученные данных, т.е. группировка товаров по категориям;
- Вывод на экран всех товаров;
- Вывод на экран всех товаров в заданной категории;
- Вывод конкретного товара;
- Запись изменений в файл.
Предусмотреть следующие возможности манипуляции с товаром:
- Удаление товара;
- Изменение полей товара;
- Добавление товара;
- Копирование текущего товара и помещение копии в конец списка товаров;
1.2 Исходные данные
Исходными являются данные из файла товаров, хранящегося, в корневом каталоге программы.
Файл товаров «lib.S-Team» имеет следующую структуру
- Идентификационный номер товара;
- Категория товара;
- Наименование товара;
- Краткое описание товара;
- Производитель товара;
- Стоимость товара.
Каждая позиция отделяется от другой символом переноса строки и имеет длину не превышающую 255 символов.
1.3 Выходные данные
В программе выходными данными являются группированные по категории товары.
Результатом выполнения программы будут товары записываемые в конец существующего файла с такой же структурой, как и исходный файл.
2. ОПИСАНИЕ МЕТОДОВ РЕШЕНИЯ ЗАДАЧИ
При запуске программы, первоочередной задачей является считывание данных из файла. Но, для выполнения главной функции «группировка товаров по категориям» этого не достаточно. Для этого необходимо сформировать массив строк определяющих категорию товара.
Можно формировать динамический массив в который будут записываться значения всех строк. Однако целесообразнее будет создать массив классов со структурой, такой же как у файла, и в процессе выполнения манипулировать отдельными экземплярами класса.
Таким образом выполнение последующих операций «Удаление», «Изменение», «Добавление», «Копирование» над блоками данных товара, сводится к простейшей работе над массивом классов.
Операция «Удаление» выполняется как, исключение выделенного элемента из массива.
Операция «Изменение» выполняется как, изменение полей выделенного экземпляра класса.
Операция «Добавление» выполняется как, создание нового экземпляра класса и включения его в массив.
Операция «Копирования» выполняется как, создание нового экземпляра класса и присвоение значению его полей, значений полей выделенного класса, с последующим включением этого экземпляра в массив.
3. Описание блок-схемы алгоритма
В Приложении 1 приведена блок схема работы алгоритма программы. Глядя на блок схему, мы видим, что при начале работы программы, алгоритм считывает данные из файла с товарами(2), и переписывает их в пользовательские классы. Затем начинает выполняться рекурсивный вызов функции вывода пользовательского меню. В функции происходят такие действия как:
? группировка товаров по категориям;
? вывод на экран результатов группировки;
? предоставление вариантов действия;
После того как функция завершила свою работу, указатель длинны массива экземпляра классов передаётся в функцию, перезаписывающую файл.
4. Описание программы
При запуске программы происходит поиск файла с товарами. Если файл обнаружен, он считывается и данные из файла, разбитые на сроки, в соответствии со структурой самого файла. Блоки данных записываются в динамический массив пользовательских классов, имеющий длину равную количеству блоков данных в файле.
После формирования массива пользовательских классов, происходит группировка товаров по категориям и вывод пользовательского меню с вариантами манипулирования экземплярами класса. При выходе из пользовательского меню, в основную программу передаётся количество элементов в массиве классов. И происходит перезапись файла товаров.
Курсовая работа выполнена в виде трех классов и главной функции:
1) IOCore - класс работы с файлами. Содержит в себе следующие методы:
-openFile() - открывает файл для чтения;
-closeFile() - закрывает файл;
-GetBlockSize() - определить размер блока в строках;
-SetPath() - установить путь к файлу;
-GetPath() - узнать путь к файлу;
-CheckBlockCount() - узнать количество блоков в файле;
-SetBlockCount() - задать количество блоков;
-GetBlockCount() - считать количество блоков;
-ReadBlock() - считать блок.
2) Item - класс товара, содержащий в себе поля для описания каждой строки в блоке данных Содержит в себе метод, PrintBlock()- отображает на экран все поля класса.
3) Schedule - класс для работы с массивом классов Item. Содержит в себе методы:
-fillKateg() - служит для группировки элементом по категориям;
-PrintKateg() - вывод на экран категорий;
-PrintMenu() - вывод пользовательского меню.
Кроме того содержит методы для инициализации данных класса, приема и передачи массива классов, установка количества символов в строке.
5. Анализ результатов работы программы
Полученная в ходе выполнения курсового проекта программа выполняет заданные условия. Позволяет манипулировать данными и организовывает считывание и запись данных в исходный файл.
Программа реализована в виде трёх классов и главной функции.
При дальнейшем усовершенствовании можно добавить ряд возможностей для более детального анализа работы магазина, а так же функций упрощающих и расширяющих возможности программы.
Заключение
Полученная программа демонстрирует основные возможности языка программирования С++ в области создания программного обеспечения, а также в области разработки программ автоматизации процессов. Была достигнута поставленная задача и программа, позволяющая манипулировать товарами в магазине. Во время написания проекта использовались полученные знания по созданию и работе с классами на курсе КПиЯП. Продемонстрированы таки навыки как создание классов, работа с динамическими массивами, а так же работа в методами ввода/вывода.
Для данных программы в дальнейшем планируется усовершенствование, а именно доработать меню, сделать просмотр данных работников магазина с группировкой по должности, Осуществление учета поступлений товара и прочее.
программный автоматизация файл изменение
Список использованных источников
1. Лафоре, Р. Объектно-ориентированное программирование в С++.
2. Паппас, К. Х., Мюррей, У. Х. Отладка в C++. Руководство для разработчиков;
3. Кузнецов, С.Д. Методы сортировки и поиска, ИСП РАН, Центр Информационных Технологий;
4. Страуструп, Б. Язык программирования С++;
5. Банди Б. Методы оптимизации;
6. Сухарев, А.Г., Тимохов, А.В Курс методов оптимизации;
7. Химмельблау, Д. Прикладное нелинейное программирование М.:Мир, 1989;
8. Т.А. Павловская, Ю.А. Щупак - С и С++ Структурное программирование;
9. Джесс Либерти: Освой самостоятельно C++ за 21 день;
10. Герб Саттер - Новые сложные задачи на C++.
ПРИЛОЖЕНИЕ 1
Блок-схема алгоритма
ПРИЛОЖЕНИЕ 2
Код программы
Класс Schedule
#pragma once
#include "stdafx.h"
#include "IOCore.h"
#include "Item.h"
#include <iostream>
#include <fstream>
#include <iomanip>
#include <Windows.h>
#include <conio.h>
class Schedule
{
Item* im;
int** kateg;
int blockCount;
int charInLine;
int debug;
public:
Schedule(void);
~Schedule(void);
void SetDebug(int);
void SetCharInLine(int);
int GetCharInLine();
void initKateg(int);
void getItemMas(Item*);
Item* returnItemMas();
void SetBlockCount(int);
int GetBlockCount();
void fillKateg();
void PrintKateg(char*, int);
void PrintMenu (int level);
};
#include "stdafx.h"
#include "Schedule.h"
Schedule::Schedule(void)
{
}
Schedule::~Schedule(void)
{
}
void Schedule::SetCharInLine(int a)
{
charInLine=a;
}
int Schedule::GetCharInLine()
{
return charInLine;
}
void Schedule::SetBlockCount(int a)
{
blockCount=a-1;
}
int Schedule::GetBlockCount()
{
return blockCount;
}
void Schedule::getItemMas(Item* a)
{
im=a;
}
Item* Schedule::returnItemMas()
{
return im;
}
void Schedule::SetDebug(int a)
{
debug=a;
}
void Schedule::initKateg(int rowsCount)
{
kateg=new int*[rowsCount];
cout<<"ok"<<endl;
for(int i=0;i<rowsCount;i++)
{
kateg[i]=new int[blockCount];
}
cout<<"Строки выделены"<<endl;
for (int i=0;i<rowsCount;i++)
{
for(int j=0;j<blockCount+1;j++)
{
kateg[i][j]=-1;
}
}
cout<<"Строки инициализированы"<<endl;
}
void Schedule::fillKateg()
{
int z=0;
char b[256];
for(int i=1;i<blockCount+1;i++)
{
if(debug==1){cout<<"fillKateg::1::ok::"<<i<<endl;}
strcpy_s(b,im[i].GetKategory());
if(debug==1){cout<<"fillKateg::2::ok::"<<i<<endl;}
if (b[0]=='Б' && b[1]=='о' && b[2]=='т')
{
z=0;
}
else if (b[0]=='Ф' && b[1]=='л' && b[2]=='и')
{
z=1;
}
else if (b[0]=='Ф' && b[1]=='о' && b[2]=='н')
{
z=2;
}
else
{
z=3;
}
kateg[z][i-1]=i;
if(debug==1){cout<<"fillKateg::3::ok::"<<i<<"::"<<blockCount<<endl;}
//cout<<i<<"::"<<b<<endl;
//cout<<"Категория["<<z<<"]["<<i<<"]"<<kateg[z][i]<<endl;
}
}
void Schedule::PrintKateg(char* name, int line)
{
int newline=0;
cout<<"В категории <"<<name<<"> входят элементы под номерами :"<<"\n";
for(int j=0;j<blockCount+1;j++)
{
if(kateg[line][j]>0)
{
newline++;
cout<<setw(4)<<j+1<<" |";
if(newline%charInLine==0 && newline!=0){cout<<endl;}
}
}
cout<<endl;
}
void Schedule::PrintMenu (int level)
{
if(debug==1){cout<<"PrintMenu::1::ok"<<endl;}
fillKateg();
if(debug==1){cout<<"PrintMenu::2::ok"<<endl;}
//system("cls");
//cout<<"пользовательское меню "<<level<<" уровня\n выберите действие:"<<endl;
if (level==1)
{
int a,b,c,g;
if(debug==1){cout<<"PrintMenu::3::ok"<<endl;}
char f[256];
PrintKateg("0::Ботинки",0);
if(debug==1){cout<<"PrintMenu::4::ok"<<endl;}
PrintKateg("1::Флис ",1);
if(debug==1){cout<<"PrintMenu::5::ok"<<endl;}
PrintKateg("2::Фонари ",2);
if(debug==1){cout<<"PrintMenu::6::ok"<<endl;}
PrintKateg("3::Прочее ",3);
if(debug==1){cout<<"PrintMenu::7::ok"<<endl;}
cout<<"Чтобы показать товары в категории <#>, нажмите 1 и Enter"<<endl;
cout<<"чтобы показать товар по номером <#>, нажмите 2 и Enter"<<endl;
cout<<"чтобы все товары нажмите 3 и Enter"<<endl;
cout<<"чтобы выйти, нажмите 4 и Enter"<<endl;
if(debug==1){cout<<"PrintMenu::8::ok"<<endl;}
cin>>a;
if(a==1)
{
cout<<"введите номер категории (номер категории указан как <номер::название> )"<<endl;
cin>>b;
if(b>=0 && b<=2)
{
for(int i=1;i<blockCount+1;i++)
{
if(kateg[b][i]>=0)
{
im[i].PrintBlock();
}
}
}
}
if( a==2)
{
cout<<"введите номер элемента"<<endl;
cin>>b;
if(b>=0 && b<blockCount)
{
im[b].PrintBlock();
}
cout<<"Нажмите 1, чтобы изменить элемент"<<endl;
cout<<"Нажмите 2 для удаления элемента"<<endl;
cout<<"Нажмите 3 для добавления нового элемента"<<endl;
cout<<"Нажмите 4 для копирования элемента"<<endl;
cout<<"Нажмите 5 в меню"<<endl;
cin>>g;
if(g==1)
{
system("cls");
cout<<"::Изменение элемента::"<<endl;
cout<<"\nНазвание "<<im[b-1].GetName()<<"| новое название >>";
cin>>f;
im[b-1].SetName(f);
cout<<"\nОписание"<<im[b-1].GetDescr()<<"| новое описание >>";
cin>>f;
im[b-1].SetDescr(f);
cout<<"\nПроизводитель"<<im[b-1].GetProizv()<<"| новый производитель >>";
cin>>f;
im[b-1].SetProizv(f);
cout<<"\nСтоимость"<<im[b-1].GetPrice()<<"| новая стоимость>>";
cin>>f;
im[b-1].SetPrice(f);
}
if(g==2)
{
for(int i=b;i<blockCount+1;i++)
{
Item temp=im[i];
im[i-1]=temp;
temp.~Item();
}
blockCount--;
}
if(g==3)
{
Item* tempo=new Item[blockCount+1];
Item temp;
system("cls");
cout<<"::Добавление элемента::"<<endl;
cout<<"\nИД Номер >>";
cin>>f;
temp.SetID(f);
cout<<"\nКатегория >>";
cin>>f;
temp.SetKategory(f);
cout<<"\nНазвание >>";
cin>>f;
temp.SetName(f);
cout<<"\nОписание >>";
cin>>f;
temp.SetDescr(f);
cout<<"\nПроизводитель >>";
cin>>f;
temp.SetProizv(f);
cout<<"\nСтоимость >>";
cin>>f;
temp.SetPrice(f);
for(int i=1;i<blockCount+1;i++) //переписать динамический массив товаров во временный массив того же типа
{
tempo[i]=im[i];
}
im=new Item[blockCount+2]; //выделение памяти по новый массив +1 элемент
getItemMas(im);
for(int i=1;i<blockCount+1;i++) //переписываем временный массив в новый массив
{
im[i]=tempo[i];
}
im[blockCount+1]=temp; //добавление в новый массив ещё одгоно элемента
blockCount++; //увеличение указателя на количество блоков
}
if(g==4)
{
Item* tempo=new Item[blockCount+1];
Item temp=im[b];
for(int i=1;i<blockCount+1;i++) //переписать динамический массив товаров во временный массив того же типа
{
tempo[i]=im[i];
}
im=new Item[blockCount+2]; //выделение памяти по новый массив +1 элемент
getItemMas(im);
for(int i=1;i<blockCount+1;i++) //переписываем временный массив в новый массив
{
im[i]=tempo[i];
}
im[blockCount+1]=temp; //добавление в новый массив ещё одгоно элемента
blockCount++; //увеличение указателя на количество блоков
}
}
if(a==3)
{
for(int i=1;i<blockCount+1;i++)
{
im[i].PrintBlock();
}
}
if (a==4){}
cout<<"Для отображения меню нажмите 1 и Enter"<<endl;
cout<<"Для выхода из программы нажмите 2 и дважды Enter"<<endl;
cin>>c;
if (c==1)
{
PrintMenu(level);
}
}
};
Класс Item
#pragma once
class Item
{
char id[30];
char kategory[50];
char name[256];
char descr[256];
char proizv[256];
int price;
public:
Item(void);
Item(Item &);
~Item(void);
void SetID(char* idd);
char* GetID();
void SetKategory(char * k);
char* GetKategory();
void SetName(char* nm);
char* GetName();
void SetDescr (char* dsc);
char* GetDescr ();
void SetProizv (char* pr);
char* GetProizv ();
void SetPrice (char* pr);
int GetPrice();
void PrintBlock();
void SetSimbolsInLine(int, char*);
};
#include "stdafx.h"
#include "Item.h"
#include <iostream>
#include <iomanip>
using namespace std;
Item::Item(void)
{
}
Item::Item(Item &i)
{
strcpy_s(id,i.id);
strcpy_s(kategory,i.kategory);
strcpy_s(name,i.name);
strcpy_s(descr,i.descr);
strcpy_s(proizv,i.proizv);
price=i.price;
}
Item::~Item(void)
{
}
void Item::SetID(char* idd)
{
strcpy_s(id,idd);
}
char* Item::GetID()
{
return id;
}
void Item::SetKategory(char * k)
{
strcpy_s(kategory,k);
}
char* Item::GetKategory()
{
return kategory;
}
void Item::SetName(char* nm)
{
strcpy_s(name,nm);
}
char* Item::GetName()
{
return name;
}
void Item::SetDescr (char* dsc)
{
strcpy_s(descr,dsc);
}
char* Item::GetDescr ()
{
return descr;
}
void Item::SetProizv (char* pr)
{
strcpy_s(proizv,pr);
}
char* Item::GetProizv ()
{
return proizv;
}
void Item::SetPrice (char* pr)
{
price=atoi(pr);
}
int Item::GetPrice()
{
return price;
}
void Item::PrintBlock()
{
cout<<setfill('-')<<setw(44)<<"\n";
cout<<setfill(' ');
cout<<"ИД номер: "<<setw(30)<<GetID()<<endl;
cout<<"Категория: "<<setw(30)<<GetKategory()<<endl;
cout<<"Наименование:"<<setw(30)<<GetName()<<endl;
//cout<<cout.widen(30)<<GetDescr()<<endl;
cout<<"Описание: "<<endl;
SetSimbolsInLine(42,GetDescr());
cout<<"Производитель"<<setw(30)<<GetProizv()<<endl;
cout<<"Стоимость "<<setw(30)<<GetPrice()<<endl;
cout<<setfill('-')<<setw(44)<<"\n";
cout<<setfill(' ');
}
void Item::SetSimbolsInLine(int a,char* b)
{
int d=0,h=0;
for (int i=0;i<256;i++)
{
d++;
if(b[i]!='ю' && b[i+1]!='ю')
{
cout<<b[i];
if(d>a)
{
d=0;
cout<<setw(30)<<"\n";
}
}
}
cout<<"\n";
}
Класс IOCore
#pragma once
#include <string.h>
#include <iostream>
#include <fstream>
using namespace std;
class IOCore
{
fstream FReader,FWriter;
char* path;
int blockSize;
int blockCount;
public:
IOCore(void);
IOCore(char* filename);
~IOCore(void);
void openFile();
void closeFile();
void GetBlockSize(int);
void incBlockCount();
void SetPath(char*);
char* GetPath();
void CheckBlockCount();
void SetBlockCount(int);
int GetBlockCount();
int BlockCount();
void ReadBlock(char*,char*,char*,char*,char*,char*);
};
#include "stdafx.h"
#include "IOCore.h"
#include <iostream>
#include <fstream>
IOCore::IOCore(void)
{
blockSize=6;
}
IOCore::IOCore(char* filename)
{
FReader.open(filename);
if (!FReader){cout<<"файл не обнаружен...";}
else{cout<<"файл найден..."<<endl;}
}
IOCore::~IOCore(void)
{
std::cout<<"destroyed"<<endl;
}
void IOCore::openFile()
{
if (path!="" )
{
FReader.open(path);
if (!FReader)
{
cout<<"файл не обнаружен...";
}
else
{
cout<<"файл найден..."<<endl;
}
}
else
{
std::cout<<"параметр path не указан"<<endl;
}
}
void IOCore::closeFile()
{
FReader.close();
}
void IOCore::SetPath(char* s)
{
path=s;
}
void IOCore::GetBlockSize(int size)
{
if(size>0)
{
blockSize=size;
}
else
{
std::cout<<"Error ::BlockSize < 0::"<<endl;
}
}
void IOCore::CheckBlockCount()
{
blockCount=0;char g[256];
while(!FReader.eof())
{
blockCount++;
FReader.getline(g,256);
}
blockCount=blockCount/blockSize;
cout<<"blockCount= "<<blockCount<<endl;
FReader.seekg(0);
}
int IOCore::BlockCount()
{
return blockCount;
}
void IOCore::incBlockCount()
{
blockCount+=1;
}
void IOCore::SetBlockCount(int a)
{
blockCount=a;
}
int IOCore::GetBlockCount()
{
return blockCount;
}
void IOCore::ReadBlock(char* first,char* second,char* theerd,char* fourth,char* five,char* six)
{
FReader.getline(first,20);
FReader.getline(second,256);
FReader.getline(theerd,256);
FReader.getline(fourth,256);
FReader.getline(five,256);
FReader.getline(six,256);
}
Главная функция
// АРМ_менеджера_магазина_спец оснащения.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "IOCore.h"
#include "Item.h"
#include <iostream>
#include <fstream>
#include <iomanip>
#include <Windows.h>
#include <conio.h>
#include "Schedule.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода
SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода
IOCore iocore;
Item* im;
Schedule s;
int i,alp=0,il=0,z=0;
char a[256],b[256],c[256],d[256],e[256],g[256],k[256],p[256],Test[256];
iocore.SetPath("lib.txt");
iocore.openFile();
iocore.CheckBlockCount();
im=new Item[iocore.BlockCount()];
_getch();
s.getItemMas(im);
s.SetCharInLine(10);
s.SetBlockCount(iocore.GetBlockCount());
s.initKateg(4);
s.SetDebug(0);
for(i=1;i<iocore.BlockCount();i++)
{
iocore.ReadBlock(a,b,c,d,e,g);
im[i].SetID(a);
im[i].SetKategory(b);
im[i].SetName(c);
im[i].SetDescr(d);
im[i].SetProizv(e);
im[i].SetPrice(g);
alp++;
}
s.PrintMenu(1);
cout<<s.GetBlockCount()<<endl;
int itemslist=s.GetBlockCount()+1;
cout<<itemslist<<endl;
i=1;
im=s.returnItemMas();
fstream f;
f.open("lib.txt",ios::out);
f<<im[i].GetID()<<"\n";
f<<im[i].GetKategory()<<"\n";
f<<im[i].GetName()<<"\n";
f<<im[i].GetDescr()<<"\n";
f<<im[i].GetProizv()<<"\n";
f<<im[i].GetPrice()<<"\n";
for(i=1;i<itemslist;i++)
{
cout<<i<<endl;
f<<im[i].GetID()<<"\n";
f<<im[i].GetKategory()<<"\n";
f<<im[i].GetName()<<"\n";
f<<im[i].GetDescr()<<"\n";
f<<im[i].GetProizv()<<"\n";
f<<im[i].GetPrice()<<"\n";
im[i].PrintBlock();
}
system("pause");
}
ПРИЛОЖЕНИЕ 3
Диаграмма классов
Размещено на Allbest.ru
Подобные документы
Предпроектный анализ объекта автоматизации. Описание потоков данных и бизнес процессов. Обзор и анализ существующих проектных решений, их достоинства и недостатки. Разработка концепции архитектуры построения. Основные рекомендации по рисованию программ.
курсовая работа [2,8 M], добавлен 13.03.2015Описание объекта автоматизации. Разработка элементов математического и программного обеспечения задачи "Учет поставок товаров" ИС магазина электроники. Оформление поставок, формирование официальной документации и отчетов. Выходные и входные сообщения.
курсовая работа [2,3 M], добавлен 15.02.2017Создание программного продукта на языке Pascal в визуальной среде программирования Borland Developer Studio в консольном приложении. Разработка типизированного файла для записи данных и их вывод на экран, добавление данных в конец файла, поиск информации.
курсовая работа [1,0 M], добавлен 04.12.2011Разработка программного обеспечения для предпринимателя, владельца магазинов, которое позволит ему вести учёт продажи товаров в каждом из них, используя язык программирования высокого уровня. Вывод сообщений об ошибках при введения неверных команд.
курсовая работа [309,9 K], добавлен 02.02.2011Описание предметной области автоматизации предприятия по покупке и продаже товаров на заказ по каталогу. Заключение договора с клиентами на единовременную поставку товара. Инфологическая модель и интерфейс программы для работы с базой данных магазина.
курсовая работа [862,5 K], добавлен 10.02.2015Описание программного, информационного обеспечения спортивного магазина "Мегаспорт". Пути совершенствования действующей системы обработки данных. Разработка программы по учету товаров. Экономическая эффективность внедрения проекта и промышленная экология.
дипломная работа [2,4 M], добавлен 24.03.2014Методика автоматизации учета товаров и денежных средств, получаемых от реализации товаров и услуг предприятием "Computer Master". Разработка концепции информационной системы, обоснование выбранного варианта. Выбор и подготовка программного обеспечения.
курсовая работа [656,1 K], добавлен 22.04.2010Разработка алгоритма автоматизации работы компьютерного магазина, изменив и доработав имеющиеся модули в системе "1С" в соответствии с заявленными требованиями. Состав выполняемых функций. Требования к составу и параметрам технических средств приложения.
дипломная работа [1,2 M], добавлен 26.09.2014Среда разработки SWI-Prolog. Создание базы данных продуктового магазина с запросами: добавление новых моделей, вывод списка товаров в категориях, изменение стоимости. Результаты ручного выполнения запросов и руководство по сборке и запуску программ.
курсовая работа [470,3 K], добавлен 26.04.2014Автоматизация ведения учета товаров в программе "1С: Предприятие". Учет товаров для фирмы, занимающейся куплей-продажей продовольственных товаров. Ввод сведений об организации. Настройка параметров учета. Оформление поступления в организацию товаров.
дипломная работа [2,0 M], добавлен 02.07.2014