Классификация ювелирных изделий

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 16.05.2017
Размер файла 575,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

2

Размещено на http://www.allbest.ru/

Министерство образования РФ

Рязанский государственный радиотехнический университет

Кафедра вычислительной и прикладной математики.

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе по дисциплине:

"Объектно-ориентированное программирование"

на тему: "Классификация ювелирных изделий"

Выполнил:

студент группы 4414

Ивченко А.Д.

Проверил:

доцент кафедры ВПМ

Лаврентьев С.И.

Рязань 2016 г.

Оглавление

Введение

1. Анализ предметной области

2. Разработка программы

2.1 Разработка и обоснование иерархии классов

2.2 Описание классов

2.3 Выбор средства разработки

3. Тестирование и отладка

4. Системные требования

5. Руководство пользователя

6. Руководство администратора

Заключение

Приложение

Введение

приложение информация ювелирный данные

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

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

1. Анализ предметной области

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

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

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

Таким образом, иерархия классов выглядит слудующим образом (Рис.1):

Рис.1.Иерархия классов.

2. Разработка программы

2.1 Разработка и обоснование иерархии классов

Сначала разрабатываются абстрактные классы Sub (Изделие) и JewelSub (Ювелирное изделиле). Класс Sub будет базовым для всех остальных классов, и содержать информацию свойственную любому объекту, а именно название, стоимость и производитель. Класс JewelSub является наследником класса Sub. В данном классе полями являются материал, из которого сделано украшение (метал и камни), вес и описание изделия.

1. Изделие

· название (тип - строка)

· цена (тип - вещественный)

· производитель (тип - строка).

2. Ювелирное изделие

· металл (тип - строка)

· вес (тип - вещественный)

· камни (тип - строка)

· описание (тип - строка)

Так как существует основное разделение украшений (украшения для человека (DecForObj) и украшения для одежды (DecForPip)), то будем придерживаться этого разделения. Для украшения одежды можно определить такие свойства, как тип украшения и предназначение украшения. Многие украшения для человека могут идти в комплекте, например, серьги и ожерелье. Следовательно, полем этого класса будет метка, которая обозначает, идет ли это крашение в комплекте.

3. Украшение для человека

· комплект (тип - логический)

· подкласс (тип - строка).

4. Украшение для одежды

· предназначение (тип - строка)

· тип (тип - строка).

Далее создается классификация украшений для человека.

Класс Hair (украшения для волос), наследуется от DecForPip. Содержит тип украшения, например, заколка или шляпка, и метку - является ли изделие средством для декорирования.

Класс Neck (украшения для шеи), наследуется от DecForPip. Содержит тип украшения, например, кулон или ожерелье, и метку - идет ли цепочка в комплекте.

Класс Cep (цепочки), наследуется от DecForPip. Содержит значения длины цепочки и тип плетения.

Класс Serg (серьги), наследуется от DecForPip. Содержит значения длины сережек, типа замочка и самого типа сережек, например, кольца или гвоздики.

Класс Ring (кольца), наследуется от DecForPip. Содержит значения типа колец, например, печатки или обручальные, размера кольца и ширины ободка кольца.

Класс Brac (браслеты), наследуется от DecForPip. Содержит значения длины и ширины браслета и метку - где носится браслет: на руке или на ноге.

5. Для волос

· тип (тип - строка)

· для декорирования (тип - логический).

6. На шею

· тип (тип - строка)

· цепочка (тип - логический).

7. Цепочка

· длина (тип - вещественный)

· плетение (тип - строка).

8. Серьги

· замочек (тип - строка)

· тип (тип - строка)

· длина (тип - вещественный).

9. Кольца

· размер (тип - вещественный)

· ширина (тип - вещественный).

· тип (тип - строка)

10. Браслеты

· для руки/ноги (тип - логический)

· длина (тип - вещественный)

· ширина (тип - вещественный).

К каждому классу, с которым будем работать, а именно DecForObj, Hair, Neck, Cep, Serg, Ring, Brac, опишем конструкторы, процедуры записи в файл и вывода полной информации об изделии.

Данные классы полностью описывают выбранную классификацию ювелирных украшений.

2.2 Описание классов

class Sub // класс изделие

{public:

long number; //номер элемента

AnsiString name; // название

float cast; // стоимость

AnsiString proiz; // производитель

Sub(long num,AnsiString n,float c,AnsiString pr);

};

//****************************************************************

class JewelSub: public Sub // класс ювелирное изделие

{public:

AnsiString metall; //металл

float weight; //вес

AnsiString stoun; //камни

AnsiString disc; // описание

AnsiString typejew; // тип украшения

JewelSub(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t);

};

//****************************************************************

class DecForObj: public JewelSub // класс украшения для одежды

{public:

AnsiString forobj; // тип украшения одежды

AnsiString typeobj; // предназначение

DecForObj(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

AnsiString f,AnsiString ty);

void PrintObj(int izm);

void VeiwObj(TListView *lv);

};

//****************************************************************

class DecForPip: public JewelSub // класс украшения для человека

{public:

char coll; //предмет из коллекции

AnsiString typepip; // тип украшения

DecForPip(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

char col, AnsiString ty);

};

//****************************************************************

class Hair: public DecForPip // класс украшения для волос

{public:

AnsiString typehair; // тип украшеия для волос

char decor; // служит для декорирования

Hair(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

char col, AnsiString ty,

AnsiString typ,char dec);

void PrintHair(int izm);

void VeiwHair(TListView *lv);

};

//****************************************************************

class Neck: public DecForPip // класс украения на шею

{public:

AnsiString typeneck; // тип украшения на шею

char cep; // цепочка в комплекте

Neck(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

char col, AnsiString ty,

AnsiString typ,char cep);

void PrintNeck(int izm);

void VeiwNeck(TListView *lv);

};

//****************************************************************

class Cep: public DecForPip // класс цепочки

{public:

AnsiString plet; // плетение

float longcep; // длина цепоски

Cep(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

char col, AnsiString ty,

AnsiString pl,float l);

void PrintCep(int izm);

void VeiwCep(TListView *lv);

};

//****************************************************************

class Serg: public DecForPip // класс серьги

{public:

AnsiString zam; // замочек

AnsiString typeserg; // тип

float longserg; // длина

Serg(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

char col, AnsiString ty,

AnsiString z,AnsiString typ,float ll);

void PrintSerg(int izm);

void VeiwSerg(TListView *lv);

};

//****************************************************************

class Ring: public DecForPip // класс кольца

{public:

AnsiString typering; // тип кольца

float size; // размер кольца

float wightring; // ширина кольца

Ring(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

bool col, AnsiString ty,

AnsiString typ,float si,float wi);

void PrintRing(int izm);

void VeiwRing(TListView *lv);

};

//****************************************************************

class Brac: public DecForPip // класс браслеты

{public:

char hl; // для руки или ноги

float longbrac; // длин абраслета

float wightbrac; // ширина браслета

Brac(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

char col, AnsiString ty,

char h,float l,float wi);

void PrintBrac(int izm);

void VeiwBrac(TListView *lv);

};

//****************************************************************

//______________________________КОНСТРУКТОРЫ___________________

//________________________________________________________________

//----------------------------------------------------------------

Sub::Sub(long num,AnsiString n,float c,AnsiString pr)

{

number=num;

name =n;

proiz=pr;

cast =c;

}

//----------------------------------------------------------------

JewelSub::JewelSub(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t):

Sub(num,n,c,pr)

{

metall=m;

weight=w;

stoun=s;

disc=d;

typejew=t;

}

//----------------------------------------------------------------

DecForObj::DecForObj(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

AnsiString f,AnsiString ty):

JewelSub(num,n,c,pr,m,w,s,d,t)

{

forobj=f;

typeobj=ty;

} ;

//----------------------------------------------------------------

DecForPip::DecForPip(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

char col, AnsiString ty):

JewelSub(num,n,c,pr,m,w,s,d,t)

{

coll=col;

typepip=ty;

}

//----------------------------------------------------------------

Hair::Hair(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

char col, AnsiString ty,

AnsiString typ,char dec):

DecForPip(num,n,c,pr,m,w,s,d,t,col,ty)

{

typehair=typ;

decor=dec;

}

//----------------------------------------------------------------

Neck::Neck(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

char col, AnsiString ty,

AnsiString typ,char cep):

DecForPip(num,n,c,pr,m,w,s,d,t,col,ty)

{

typeneck=typ;

cep=cep;

}

//----------------------------------------------------------------

Cep::Cep(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

char col, AnsiString ty,

AnsiString pl,float l):

DecForPip(num,n,c,pr,m,w,s,d,t,col,ty)

{

plet=pl;

longcep=l;

}

//----------------------------------------------------------------

Serg::Serg(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

char col, AnsiString ty,

AnsiString z,AnsiString typ,float l):

DecForPip(num,n,c,pr,m,w,s,d,t,col,ty)

{

zam=z;

typeserg=typ;

longserg=l;

}

//----------------------------------------------------------------

Ring::Ring(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

bool col, AnsiString ty,

AnsiString typ,float si,float wi):

DecForPip(num,n,c,pr,m,w,s,d,t,col,ty)

{

typering=typ;

size=si;

wightring=wi;

}

//----------------------------------------------------------------

Brac::Brac(long num,AnsiString n,float c,AnsiString pr,

AnsiString m,float w,AnsiString s,AnsiString d,AnsiString t,

char col, AnsiString ty,

char h,float l,float wi):

DecForPip(num,n,c,pr,m,w,s,d,t,col,ty)

{

hl=h;

longbrac=l;

wightbrac=wi;

}

//----------------------------------------------------------------

2.3 Выбор средства разработки

Для разработки приложения, демонстрирующего работу с классами, подходит среда разработки Borland C++ Builder 6.

Основные её достоинства:

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

2. Инкрементная компиляция и компоновка исполняемого модуля.

3. Совместимость с ОС Windows.

4. Объединение объектных библиотек (STL, VCL, CLX, MFC).

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

3. Тестирование и отладка

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

По завершению создания приложения необходимо заново протестировать программу, а именно следующие функции

1. Открытие файла записей.

2. Сохранение записей в файл.

3. Добавление, изменение и удаление записей.

4. Нахождение записей.

Тестирование

Содержание

Ожидаемые результаты

Статус

ТС 1

Тестирование открытия файла записей.

Добавление записей в список на форме.

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

Работает

ТС 2

Тестирование сохранения в файл записей.

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

Работает

ТС 3

Добавление новых записей.

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

Работает

ТС 4

Изменение существующих записей

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

После сохранения запись изменяется.

Работает

ТС 5

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

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

Работает

ТС 6

Нахождение записи по названию.

Перейти на соответствующую вкладку на основной форме, ввести критерий поиска, найденные записи появятся списке.

Работает

ТС 7

Нахождение записей по типу украшения в ценовом диапазоне.

Перейти на соответствующую вкладку на основной форме, ввести критерий поиска, найденные записи появятся в списке.

Работает

4. Системные требования

Системные требования программы:

· Процессор: Intel Pentium 2

· ОС:Windows XP/7/8/8.1

· ОЗУ: 1,5 МВ RAM

Изначально папка с программой занимает 26МВ. Далее ее размер будет увеличиваться вместе с ростом числа записей. Для 7 записей требуется 4 КВ, но размер каждой записи может изменяться в зависимости от количества информации об изделии.

5. Руководство пользователя

Разработанная программа запускается с помощью ярлыка " Jewel.ехе". При этом открывается основное окно программы окно (Рис.2). Чтобы начать работу необходимо открыть уже существующий файл или сразу начать заполнять форму абсолютно новыми данными.

Рис.2. Основное окно.

Чтобы открыть созданный файл необходимо в главном меню выбрать пункт "Открыть" (Рис.3) или нажать комбинацию клавиш Ctrl+O. На открывшейся форме (Рис.4) выбрать интересующий файл и нажать "Открыть". Текущая форма автоматически закроется, и на основной форме отобразится список всех записей, содержащихся в файле. Чтобы сохранить созданный файл необходимо в главном меню выбрать пункт "Сохранить" (Рис.3) или нажать комбинацию клавиш Ctrl+S. На открывшейся форме (Рис.4) выбрать интересующий файл и нажать "Сохранить".

Рис.3. Основное окно программы, пункт "Файл".

Рис.4. Открытие файла записей (Аналогично окну сохранения).

Чтобы изменить какой-либо объект в списке, необходимо сначала левой кнопкой мыши щелкнуть по нему, чтобы атрибуты показались на правой части окна, а затем щелкнуть по нему правой кнопкой мыши, чтобы показалось контекстное меню (Рис.5). В показавшемся меню выбрать "Изменить". После этого откроется вкладка "Добавить " (Рис.6) с уже заполненными атрибутами полями выбранного объекта. После нажатия на кнопку "Изменить", появится сообщение (Рис.7).

Чтобы удалить какой-либо объект в списке, необходимо сначала левой кнопкой мыши щелкнуть по нему, чтобы атрибуты показались на правой части окна, а затем щелкнуть по нему правой кнопкой мыши, чтобы показалось контекстное меню (Рис.5). В открывшемся меню выбрать "Удалить->Удалить 1 запись". Запись исчезнет из списка записей на основном окне.

Чтобы добавить какой-либо объект в список, надо открыть на основном окне вкладку "Добавить" (Рис.6), поля которой будут пусты и готовы для заполнения. После заполнения всех интересующих полей нажать на кнопку "Добавить", и появится сообщение (Рис.8).

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

Рис.5. Открытый файл в основном окне (Аналогично списку измененных записей).

Рис.6. Окно добавление и изменение данных.

Рис.7. Сообщение об изменении.

Рис.8. Сообщение о добавлении.

Если необходимо найти объекты по определенным критериям, то можно открыть на основном окне вкладку "Поиск" (Рис.10). Выбрав один из вариантов критерия. После ввода параметров поиска и нажатия кнопки "Поиск" в соответствующей рамке, автоматически покажется список объектов, удовлетворяющих введенным параметрам (Рис.11).

Рис.10. Окно нахождения записей.

Рис.11. Список найденных записей.

Чтобы выйти из программы необходимо в главном меню выбрать пункт "Выход" (Рис.3). Если хоть одна запись была изменена или добавлена, то появится сообщение (Рис.12).

Рис.12. Выход из программы

6. Руководство администратора

Программа предназначена для демонстрации работы с иерархией классов Sub, JewelSub, DecForObj, DecForPip, Hair, Neck, Cep, Serg, Ring, Brac. Для этого были реализованы следующие функции:

1. Создание объектов класса DecForObj, Hair, Neck, Cep, Serg, Ring, Brac в процессе выполнения программы.

2. Для классов DecForObj, DecForPip, Hair, Neck, Cep, Serg, Ring, Brac были реальзованы процедуры содания объектов, записи в файл и показ всей инфрормации об объекте.

3. Отображение списка объектов и их атрибутов на форме.

4. Удаление выбранного объекта из списка.

5. Изменение выбранного объекта из списка.

6. Сохранение объектов в файл.

7. Инициализация объектов из файла.

8. Поиск объектов по заданному критерию.

Заключение

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

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

Приложение

Глобальные переменные

int row=1, //строка в списке

cout=0, // число записей

izm=0, // было ли изменение

del=0, // была ли запись удалена

ROW=1, // номер строки

upd=0, // была ли запись изменена

save=0; // было ли изменение

AnsiString filename; //путь к исходному файлу

Закрытие приложения

if (save==0)

f_ocnov->Close();

else

if (MessageBox(NULL,"Файл не сохранен.\nВы действительно хотитее выйти?","Выход",MB_YESNO)==IDYES)

f_ocnov->Close();

Открытие файла с записями

FILE *f;

char ss[255];

od->Title = "Open File";

od->Filter = "Text files (*.txt)|*.TXT";

if (od->Execute())

{ filename=od->FileName;

f=fopen(od->FileName.c_str(),"r");

fscanf (f,"%s",&ss);

while (!feof(f))

{

AnsiString s="";

fscanf (f,"%s",&ss);

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

sg_all->Cells[1][sg_all->RowCount-1]=s;

s="";

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

sg_all->Cells[2][sg_all->RowCount-1]=s;

sg_all->Cells[0][sg_all->RowCount-1]=IntToStr(sg_all->RowCount-1);

sg_all->RowCount=sg_all->RowCount+1;

do

fscanf (f,"%s",&ss);

while ((!feof(f))&&(AnsiString(ss)!="t0")&&

(AnsiString(ss)!="t1")&&(AnsiString(ss)!="t2")&&

(AnsiString(ss)!="t3")&&(AnsiString(ss)!="t4")&&

(AnsiString(ss)!="t5")&&(AnsiString(ss)!="t6"));

}

fclose(f);

}

pc->ActivePageIndex=0;

cout=sg_all->RowCount-1;

Сохранение файла записей

FILE *f; FILE *fs;FILE *fd;FILE *fu;FILE *fa;

int num;

char str[255];

char ss[255];

AnsiString s="",s1="";

char *estr;

f=fopen("jewel_save","w");

fclose(f);

sd->Title = "Save File"; // заголовок окна

sd->Filter = "Text files (*.txt)|*.TXT"; //шаблон имени файла

if (sd->Execute())

if (FileExists (sd->FileName))

{

fs=fopen("jewel_save","w");

f=fopen(filename.c_str(),"r");

do

{

estr = fgets (str,sizeof(str),f);

if (estr!=NULL)

fprintf(fs,str);

} while (!feof(f));

fclose(f);

fclose(fs);

f=fopen(sd->FileName.c_str(),"w");

fs=fopen("jewel_save","r");

fa=fopen("jewel_add","r");

fscanf (fs,"%s",&ss);

while (!feof(fs))

{

if (ss[0]!='t'){ fscanf (fs,"%s",&ss);fscanf (fs,"%s",&ss);}

s1=AnsiString(ss);

fscanf (fs,"%d",&num);

fd=fopen("jewel_delete","r");

int de=0;

while (!feof(fd))

{ int n=0;

fscanf (fd,"%d",&n);

if (n==num)

{de++; break;}

}

if (de!=0)

{de=0;

int kk=0;

do

{

fscanf (fs,"%s",&ss);

if (AnsiString(ss)=="#$") kk++;

}

while ((kk<9)&&(!feof(fs)));

fscanf (fs,"%s",&ss);

}

else

{

int up=0;

fu=fopen("jewel_update","r");

while (!feof(fu))

{

fscanf (fu,"%s",&ss);

if (ss[0]!='t'){ fscanf (fu,"%s",&ss);fscanf (fu,"%s",&ss);}

s=AnsiString(ss);

fscanf (fu,"%s",&ss);

if (AnsiString(ss)==num)

{

up=1;

fprintf(f,s1.c_str()); fprintf(f," ");

s=AnsiString(ss);

fprintf(f,s.c_str());

int kk=0; s="";

do

{

fscanf (fu,"%s",&ss);

s=s+AnsiString(ss)+" ";

if (AnsiString(ss)=="#$") kk++;

}

while ((kk<9)&&(!feof(fu)));

fprintf(f,s.c_str());

fscanf (fu,"%s",&ss); s="";

/* if ((ss[0]=='#'))

{

s=s+AnsiString(ss)+" ";

fscanf (fu,"%s",&ss);

s=s+AnsiString(ss);

fscanf (fu,"%s",&ss);

fprintf(f,s.c_str());

} */fprintf(f,"\n");

}

}

fclose(fu);

if (up!=0)

{ up=0;

int kk=0;

do

{

fscanf (fs,"%s",&ss);

if (AnsiString(ss)=="#$") kk++;

}

while ((kk<9)&&(!feof(fs)));

fscanf (fs,"%s",&ss);

}

else

{

fprintf(f,s1.c_str()); fprintf(f," ");

fprintf(f,IntToStr(num).c_str()); fprintf(f," ");

int kk=0;s="";

do

{

fscanf (fs,"%s",&ss);

s=s+AnsiString(ss)+" ";

if (AnsiString(ss)=="#$") kk++;

}

while ((kk<9)&&(!feof(fs)));

fprintf(f,s.c_str()); fprintf(f," ");

s="";

fscanf (fs,"%s",&ss);

if (ss[0]!='t')

{

s=s+AnsiString(ss)+" ";

fscanf (fs,"%s",&ss);

s=s+AnsiString(ss);

fscanf (fs,"%s",&ss);

fprintf(f,s.c_str());

} fprintf(f,"\n");

}

}

fclose(fd);

}

fclose(fs);

fa=fopen("jewel_add","r");

do

{

estr = fgets (str,sizeof(str),fa);

if (estr!=NULL)

fprintf(f,str);

} while (!feof(fa));

fclose(fa);

fclose(f);

}

save=0;

Показать атрибуты объекта (на примере одного из объектов)

ROW=ARow;

row=StrToInt(sg_all->Cells[0][ARow]);

AnsiString t;

AnsiString n,p; float c;

AnsiString m,k,o,tj; float v;

lv_date->Clear();

FILE *f;

char ss[255];

AnsiString s="";

f=fopen("jewel_update","r");

while (!feof(f))

{

fscanf (f,"%s",&ss);

if (ss[0]!='t'){ fscanf (f,"%s",&ss);fscanf (f,"%s",&ss);}

fscanf (f,"%s",&ss);

if (AnsiString(ss)==sg_all->Cells[0][row])

{

upd=1;break;

}

int kk=0;

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)=="#$") kk++;

}

while ((kk<9)&&(!feof(f)));

}

fclose(f);

if (upd==1)

f=fopen("jewel_update","r");

else if (row>=cout)

f=fopen("jewel_add","r");

else f=fopen(filename.c_str(),"r");

fscanf (f,"%s",&ss);

while (!feof(f))

{

AnsiString s="";

int num;

t=AnsiString(ss);

fscanf (f,"%d",&num);

if (num==row)

{

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

s="";

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

n=s; s="";

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

p=s; s="";

fscanf (f,"%s",&ss);

if (AnsiString(ss)=="#$") break;

c=StrToFloat(ss);

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

m=s; s="";

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

k=s; s="";

fscanf (f,"%s",&ss);

v=StrToFloat(ss);

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

tj=s; s="";

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

o=s; s="";

if (t=="t0")

{

AnsiString typ,pr;

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

typ=s; s="";

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

pr=s; s="";

DecForObj obj(num,n,c,p,m,v,k,o,tj,pr,typ);

obj.VeiwObj(lv_date);

}

if (t=="t1")

{

AnsiString t; char d;char col;

fscanf (f,"%s",&ss);

col=ss[0];

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

t=s; s="";

fscanf (f,"%s",&ss);

d=StrToInt(ss);

Hair hair(num,n,c,p,m,v,k,o,tj,col,"Для волос",t,d);

hair.VeiwHair(lv_date);

fscanf (f,"%s",&ss);

fscanf (f,"%s",&ss);

}

if (t=="t2")

{

AnsiString t; char d;char col;

fscanf (f,"%s",&ss);

col=ss[0];

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

t=s; s="";

fscanf (f,"%s",&ss);

d=StrToInt(ss);

Neck neck(num,n,c,p,m,v,k,o,tj,col,"На шею",t,d);

neck.VeiwNeck(lv_date);

fscanf (f,"%s",&ss);

fscanf (f,"%s",&ss);

}

if (t=="t3")

{

AnsiString t; char d;char col;

fscanf (f,"%s",&ss);

col=ss[0];

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

t=s; s="";

fscanf (f,"%s",&ss);

d=StrToInt(ss);

Cep cep(num,n,c,p,m,v,k,o,tj,col,"Цепочки",t,d);

cep.VeiwCep(lv_date);

fscanf (f,"%s",&ss);

fscanf (f,"%s",&ss);

}

if (t=="t4")

{

float l,d;char col,h;

fscanf (f,"%s",&ss);

col=ss[0];

fscanf (f,"%s",&ss);

l=StrToFloat(ss);

fscanf (f,"%s",&ss);

fscanf (f,"%s",&ss);

d=StrToFloat(ss);

fscanf (f,"%s",&ss);

fscanf (f,"%s",&ss);

h=ss[0];

Brac brac(num,n,c,p,m,v,k,o,tj,col,"Браслеты",l,d,h);

brac.VeiwBrac(lv_date);

fscanf (f,"%s",&ss);

fscanf (f,"%s",&ss);

}

if (t=="t5")

{

AnsiString t,z; float d;char col;

fscanf (f,"%s",&ss);

col=ss[0];

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

t=s; s="";

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

z=s; s="";

fscanf (f,"%s",&ss);

d=StrToFloat(ss);

Serg serg(num,n,c,p,m,v,k,o,tj,col,"Серьги",z,t,d);

serg.VeiwSerg(lv_date);

fscanf (f,"%s",&ss);

fscanf (f,"%s",&ss);

}

if (t=="t6")

{

AnsiString t; float d,r;char col;

fscanf (f,"%s",&ss);

col=ss[0];

do

{

fscanf (f,"%s",&ss);

if (AnsiString(ss)!="#$")

s=s+AnsiString(ss)+" ";

}

while (AnsiString(ss)!="#$");

t=s; s="";

fscanf (f,"%s",&ss);

r=StrToFloat(ss);

fscanf (f,"%s",&ss);

fscanf (f,"%s",&ss);

d=StrToFloat(ss);

Ring ring(num,n,c,p,m,v,k,o,tj,col,"Кольца",t,r,d);

ring.VeiwRing(lv_date);

fscanf (f,"%s",&ss);

fscanf (f,"%s",&ss);

}

}

else

do

fscanf (f,"%s",&ss);

while ((!feof(f))&&(AnsiString(ss)!="t0")&&

(AnsiString(ss)!="t1")&&(AnsiString(ss)!="t2")&&

(AnsiString(ss)!="t3")&&(AnsiString(ss)!="t4")&&

(AnsiString(ss)!="t5")&&(AnsiString(ss)!="t6"));

}

fclose(f); upd=0;

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

int i;

AnsiString n,p; float c;

AnsiString m,k,o; float v;

// проверка ввода данных

if(e_name->Text=="")

{

MessageBox(NULL,"Введите название изделия.","",MB_OK);

e_name->SetFocus();

return;

}

if(e_pr->Text=="")

{

MessageBox(NULL,"Введите название производителя изделия.","",MB_OK);

e_pr->SetFocus();

return;

}

if(e_cast->Text=="")

{

MessageBox(NULL,"Введите цену изделия.","",MB_OK);

e_cast->SetFocus();

return;

}

if(e_metall->Text=="")

{

MessageBox(NULL,"Введите название металла, из которого изготовлено изделие.","",MB_OK);

e_metall->SetFocus();

return;

}

if(e_stoun->Text=="")

{

MessageBox(NULL,"Введите названия камней в изделии.\nЕсли камней нет поставьте знак \"-\".","",MB_OK);

e_stoun->SetFocus();

return;

}

if(e_weight->Text=="")

{

MessageBox(NULL,"Введите вес изделия.","",MB_OK);

e_weight->SetFocus();

return;

}

if (rb_obj->Checked )

if(e_typeobj->Text=="")

{

MessageBox(NULL,"Введите тип изделия.","",MB_OK);

e_typeobj->SetFocus();

return;

}

if (rb_pip->Checked )

{

if((cb_hair->Checked==false)&&(cb_neck->Checked==false)&&(cb_cep->Checked==false)&&

(cb_serg->Checked==false)&&(cb_ring->Checked==false)&&(cb_brac->Checked==false))

{

MessageBox(NULL,"Введите тип изделия.\nНапример, кольца.","",MB_OK);

return;

}

if(cb_hair->Checked)

{

if(e_typehair->Text=="")

{

MessageBox(NULL,"Введите тип украшения для волос.","",MB_OK);

e_typehair->SetFocus();

return;

}

}

if(cb_neck->Checked)

{

if(e_typeneck->Text=="")

{

MessageBox(NULL,"Введите тип украшения на шею.","",MB_OK);

e_typeneck->SetFocus();

return;

}

}

if(cb_cep->Checked)

{

if(e_longcep->Text=="")

{

MessageBox(NULL,"Введите длину цепочки.","",MB_OK);

e_longcep->SetFocus();

return;

}

if(e_plet->Text=="")

{

MessageBox(NULL,"Введите тип плетения цепочки.","",MB_OK);

e_plet->SetFocus();

return;

}

}

if(cb_brac->Checked)

{

if(e_longbrac->Text=="")

{

MessageBox(NULL,"Введите длину браслета.","",MB_OK);

e_longbrac->SetFocus();

return;

}

if(e_wigthbrac->Text=="")

{

MessageBox(NULL,"Введите ширину браслета.","",MB_OK);

e_wigthbrac->SetFocus();

return;

}

}

if(cb_serg->Checked)

{

if(e_typeserg->Text=="")

{

MessageBox(NULL,"Введите тип сережек.","",MB_OK);

e_typeserg->SetFocus();

return;

}

if(e_longserg->Text=="")

{

MessageBox(NULL,"Введите длину сережек.","",MB_OK);

e_longserg->SetFocus();

return;

}

if(e_zam->Text=="")

{

MessageBox(NULL,"Введите тип замочка на сережках.","",MB_OK);

e_zam->SetFocus();

return;

}

}

if(cb_ring->Checked)

{

if(e_typering->Text=="")

{

MessageBox(NULL,"Введите тип кольца.","",MB_OK);

e_typering->SetFocus();

return;

}

if(e_size->Text=="")

{

MessageBox(NULL,"Введите размер кольца.","",MB_OK);

e_size->SetFocus();

return;

}

if(e_wigthring->Text=="")

{

MessageBox(NULL,"Введите ширину кольца.","",MB_OK);

e_wigthring->SetFocus();

return;

}

}

}

// значений в переменные

n=e_name->Text;

p=e_pr->Text;

c=StrToFloat(e_cast->Text);

m=e_metall->Text;

k=e_stoun->Text;

v=StrToFloat(e_weight->Text);

o="";

for (i=0;i<m_dic->Lines->Count;i++)

o=o+m_dic->Lines->Strings[i];

if (rb_obj->Checked )

{

AnsiString t,pr;

t=e_typeobj->Text;

pr="";

for (i=0;i<m_pred->Lines->Count;i++)

pr=pr+m_pred->Lines->Strings[i];

DecForObj obj(sg_all->RowCount-1,n,c,p,m,v,k,o,"Для одежды",pr,t);

obj.PrintObj(izm);

sg_all->Cells[0][sg_all->RowCount-1]=IntToStr(sg_all->RowCount-1);

sg_all->Cells[1][sg_all->RowCount-1]=obj.typeobj;

sg_all->Cells[2][sg_all->RowCount-1]=obj.name;

sg_all->RowCount=sg_all->RowCount+1;

}

if (rb_pip->Checked )

{ int collect=0;

if(cb_hair->Checked)

collect++;

if(cb_neck->Checked)

collect++;

if(cb_cep->Checked)

collect++;

if(cb_serg->Checked)

collect++;

if(cb_ring->Checked)

collect++;

if(cb_brac->Checked)

collect++;

if(cb_hair->Checked)

{

AnsiString t; char d;

t=e_typehair->Text;

if (cb_decor->Checked)

d='1';

else d='0';

Hair hair(sg_all->RowCount-1,n,c,p,m,v,k,o,"Для человека",collect,"Для волос",t,d);

hair.PrintHair(izm);

sg_all->Cells[0][sg_all->RowCount-1]=IntToStr(sg_all->RowCount-1);

sg_all->Cells[1][sg_all->RowCount-1]=hair.typehair;

sg_all->Cells[2][sg_all->RowCount-1]=hair.name;

sg_all->RowCount=sg_all->RowCount+1;

}

if(cb_neck->Checked)

{

AnsiString t; bool d;

t=e_typeneck->Text;

if (cb_col->Checked)

d=1;

else d=0;

Neck neck(sg_all->RowCount-1,n,c,p,m,v,k,o,"Для человека",collect,"На шею",t,d);

neck.PrintNeck(izm);

sg_all->Cells[0][sg_all->RowCount-1]=IntToStr(sg_all->RowCount-1);

sg_all->Cells[1][sg_all->RowCount-1]=neck.typeneck;

sg_all->Cells[2][sg_all->RowCount-1]=neck.name;

sg_all->RowCount=sg_all->RowCount+1;

}

if(cb_cep->Checked)

{

AnsiString pl; float l;

pl=e_plet->Text;

l=StrToFloat(e_longcep->Text);

Cep cep(sg_all->RowCount-1,n,c,p,m,v,k,o,"Для человека",collect,"Цепочки",pl,l);

cep.PrintCep(izm);

sg_all->Cells[0][sg_all->RowCount-1]=IntToStr(sg_all->RowCount-1);

sg_all->Cells[1][sg_all->RowCount-1]=cep.typepip;

sg_all->Cells[2][sg_all->RowCount-1]=cep.name;

sg_all->RowCount=sg_all->RowCount+1;

}

if(cb_brac->Checked)

{

float l,w; char h;

l=StrToFloat(e_longbrac->Text);

w=StrToFloat(e_wigthbrac->Text);

if (rb_hand->Checked)

h=1;

else h=0;

Brac brac(sg_all->RowCount-1,n,c,p,m,v,k,o,"Для человека",collect,"Браслеты",h,l,w);

brac.PrintBrac(izm);

sg_all->Cells[0][sg_all->RowCount-1]=IntToStr(sg_all->RowCount-1);

sg_all->Cells[1][sg_all->RowCount-1]=brac.typepip;

sg_all->Cells[2][sg_all->RowCount-1]=brac.name;

sg_all->RowCount=sg_all->RowCount+1;

}

if(cb_serg->Checked)

{

AnsiString t,z; float l;

t=e_typeserg->Text;

z=e_zam->Text;

l=StrToFloat(e_longserg->Text);

Serg serg(sg_all->RowCount-1,n,c,p,m,v,k,o,"Для человека",collect,"Серьги",z,t,l);

serg.PrintSerg(izm);

sg_all->Cells[0][sg_all->RowCount-1]=IntToStr(sg_all->RowCount-1);

sg_all->Cells[1][sg_all->RowCount-1]=serg.typepip;

sg_all->Cells[2][sg_all->RowCount-1]=serg.name;

sg_all->RowCount=sg_all->RowCount+1;

}

if(cb_ring->Checked)

{

AnsiString t; float r,w;

t=e_typering->Text;

r=StrToFloat(e_size->Text);

w=StrToFloat(e_wigthring->Text);

Ring ring(sg_all->RowCount-1,n,c,p,m,v,k,o,"Для человека",collect,"Кольцо",t,r,w);

ring.PrintRing(izm);

sg_all->Cells[0][sg_all->RowCount-1]=IntToStr(sg_all->RowCount-1);

sg_all->Cells[1][sg_all->RowCount-1]=ring.typepip;

sg_all->Cells[2][sg_all->RowCount-1]=ring.name;

sg_all->RowCount=sg_all->RowCount+1;

}

}

MessageBox(NULL,"Запись добавлена.","",MB_OK);

e_name->Text="";

e_pr->Text="";

e_cast->Text="";

e_metall->Text="";

e_stoun->Text="";

e_weight->Text="";

m_dic->Clear();

m_dic->Lines->Strings[0]="";

rb_pip->Checked=false ;

rb_obj->Checked=true ;

cb_hair->Checked=false ;

cb_neck->Checked=false ;

cb_cep->Checked=false ;

cb_serg->Checked=false ;

cb_ring->Checked=false ;

cb_brac->Checked=false ;

e_typehair->Text="";

cb_decor->Checked=false ;

e_typeneck->Text="";

cb_col->Checked=false ;

e_plet->Text="";

e_longcep->Text="" ;

e_longbrac->Text="";

e_wigthbrac->Text="";

rb_hand->Checked=false ;

e_typeserg->Text="";

e_zam->Text="";

e_longserg->Text="";

e_typeserg->Text="";

e_zam->Text="";

e_longserg->Text="";

e_typeobj->Text="";

m_pred->Clear();

m_pred->Lines->Strings[0]="";

izm=0; save++;

Нахождение записей

for (int i=1;i<=f_found->sg_sort->RowCount-1;i++)

f_found->sg_sort->Rows[i]->Clear();

f_found->sg_sort->RowCount=2;

for (int i=1;i<=sg_all->RowCount-2;i++)

{

if (sg_all->Cells[2][i]==cb_nam->Items->Strings[cb_nam->ItemIndex])

{

f_found->sg_sort->Cells[0][f_found->sg_sort->RowCount-1]=sg_all->Cells[0][i];

f_found->sg_sort->Cells[1][f_found->sg_sort->RowCount-1]=sg_all->Cells[1][i];

f_found->sg_sort->Cells[2][f_found->sg_sort->RowCount-1]=sg_all->Cells[2][i];

f_found->sg_sort->RowCount=f_found->sg_sort->RowCount+1;

}

}

f_found->ShowModal();

Размещено на Allbest.ru


Подобные документы

  • Разработка информационной системы для предметной области с использованием заданных структур данных. Создание и проверка базы данных, которая позволяет вводить информацию, хранить её в файле, осуществлять поиск, модификацию, сортировку и удаление данных.

    курсовая работа [240,0 K], добавлен 29.03.2016

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

    курсовая работа [467,8 K], добавлен 14.12.2012

  • Проектирование программы на языке Turbo Pascal, позволяющей просматривать информацию, осуществлять поиск по определённым параметрам, позволять редактировать данные, а также удалять ненужные записи и добавлять новые. Алгоритм и листинг программы.

    курсовая работа [46,4 K], добавлен 26.08.2012

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

    курсовая работа [907,1 K], добавлен 10.01.2015

  • Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.

    курсовая работа [867,9 K], добавлен 16.07.2013

  • Особенности разработки приложений с помощью СУБД FoxPro 9.0. Проектирование физической структуры базы данных для оценки долга цеха. Организация ввода данных, создание запросов и получение отчетов. Реализация, тестирование и отладка программной подсистемы.

    курсовая работа [1,2 M], добавлен 15.06.2013

  • Разработка комплекса алгоритмов. Кодирование и компиляция. Тестирование, отладка, испытание и сдача программы. Минимальные системные требования для использования Delphi 7. Написание программы с использованием инструментального языка высокого уровня.

    курсовая работа [2,7 M], добавлен 21.02.2011

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

    курсовая работа [663,8 K], добавлен 23.09.2014

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

    курсовая работа [3,3 M], добавлен 23.07.2012

  • Обоснование выбора средств разработки. Алгоритм загрузки изображения на сервер. Модуль авторизации в административной панели сайта. Хранение данных в базе данных. Работа с локальными и удалёнными файлами. Тестирование работы программного средства.

    курсовая работа [1,3 M], добавлен 18.04.2018

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.