IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> C++, STL проект
ammaximus
сообщение 19.06.2009 5:11
Сообщение #1


Ночной волк
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской

Репутация: -  1  +


Проект по STL "Компьютерный магазин".

Программа должна обрабатывать базу данных компьютеров и комплектующих. Сортировать, выводить по параметрам, ввод,вывод... Объекты класса компьютер содержат ссылки на соответстувующее железо. Удаляешь компьютер - авто удаляется и его железо. Помогите правильно организовать классы, я немного запутался на этом этапе.

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

Примерная схема задумки в приложении.


//Preprocessor//
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <conio.h>
#include <windows.h>
#include <process.h>

using namespace std;

////INTERFACE///////
//Menu

int menu(){
cls();
cout << "PUT Some key" << endl;
cout << "F1 - vvod F2 - vivod vse" << endl;
int key;
while(1){
key = getch();
switch (key){
case 59: AddHard(); break;
case 60: PrintAllHard(); break;
}
}
}


//////////////////
////OBJECTS///////
//////////////////

class apparate{
private:
string name;
float price;
float termo;
public:
virtual float optim()=0;
inline void set_name(string n){
this->name=n;
}

inline void set_price(float pr){
this->price=pr;
}
inline void set_termo(float tr){
this->termo=tr;
}
};

class hardware: public apparate{
private:
string type;
string descript;
float memory;
float freq;
public:
hardware(){
this->freq=9;
};

hardware( string t, string d, float m, float f){
this->type=t;
this->descript=d;
this->memory=m;
this->freq=f;
}


virtual float optim(){
return 0;
}
inline set_type(string t){
this->type=t;
}
inline set_desc(string d){
this->descript=d;
}
inline set_mem(float m){
this->memory=m;
}
inline set_freq(float f){
this->freq=f;
}
};

class computer: public hardware{
private:
hardware opermem;
hardware soundcard;
public:

};


///////////////////////
/////RULE CLASSES//////
///////////////////////

class ioconsole{
private:

public:
void cls(){
HANDLE hConsole;
CONSOLE_SCREEN_BUFFER_INFO csInfo;
DWORD dummy;
COORD Home={0,0};
hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsole, &csInfo);
FillConsoleOutputCharacter(hConsole,' ',csInfo.dwSize.X*csInfo.dwSize.Y,Home,&dummy);
SetConsoleCursorPosition(hConsole,Home);
printf("\nComputer Magazine\n");
printf(" \n");
}

void PrintAllHard(hardware &h){
for (int i=1; i<h.size; i++){
h[i].print();
cout << endl;
}
}

void Print(){
cout << type << " - " << descript <<" - " << memory << " - " << freq << endl;
}

void AddHard(hardware &h){

hardware temp;
string temp1;
float temp2;
cin >> temp1;
temp.set_name(temp1);
cin >> temp1;
temp.set_desc(temp1);
cin >> temp2;
temp.set_mem(temp2);
cin >> temp2;
temp.set_freq(temp2);
h.push_back(temp);
}
}

class iofile : public iofstream{

}



///////////////
/////MAIN//////
///////////////

int main(){
hardware temp("vint", "40 gb IDE RAID", 40, 34.4f);
vector<hardware> hSpisok;
vector<hardware>::iterator hIterator;

cout << hSpisok.size()<<endl;


return 0;
};



Эскизы прикрепленных изображений
Прикрепленное изображение

--------------------
Не думай о белой обезьяне.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
ammaximus
сообщение 22.06.2009 5:55
Сообщение #2


Ночной волк
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской

Репутация: -  1  +


Вопрос: как хранить всех потомков Hardware в одном векторе?


#include <iostream>
#include <vector>
#include <conio.h>
#include <string>


using namespace std;


//Ñòðóêòóðà îñíîâíûõ êëàññîâ//

//1//

class Base {
public:
string name;

void set_name(string n){
this->name=n;

}
string get_name(){
return this->name;
}

};

//2//

class Hardware: public Base {
public:
string desc;
void set_desc(string n){
this->desc=n;

}
string get_desc(){
return this->desc;
}


};

//3//

class HDD: public Hardware {
public:
float memory;
float RPM;

void set_memory(float n){
this->memory=n;

}
float get_memory(){
return this->memory;
}

void set_RPM(float n){
this->RPM=n;

}
float get_RPM(){
return this->RPM;
}

};
class Memory: public Hardware {
public:
float memory;
float CAS;


};

// 4 //

class Computer {
public:
Computer()
{
}

private:
vector<Hardware*> items; // ñïèñîê óêàçàòåëåé íà ñîñòàâëÿþùèå
};


//////////////////////
//////////////////////

//Óïðàâëÿþùèå êëàññû//

class Menu{

public:

void Start(){

vector<Hardware> hSpisok;
HDD p;
p.set_memory(20);
p.set_name("Hello");
cout<< p.get_memory();
hSpisok.push_back(p);
cout << hSpisok[1].get_name();



//LOOP//
cout << "PUT Some key" << endl;
cout << "F1 - vvod hardware F2 - vivod vse F10 - EXIT" << endl;
int key;
while(1){
key = getch();
switch (key){
case 59: ; break;
case 60: ; break;
case 68: ; exit(0);
}

}
}


};

int main(){
Menu MyMenu;
MyMenu.Start();


return 0;
}



1. Должно же хоть что-то наследоваться от Hardware, иначе какой в нем смысл

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

3. Да, пожалуй

4. Как очистить экран?

Сообщение отредактировано: ammaximus - 22.06.2009 6:15


--------------------
Не думай о белой обезьяне.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 22.06.2009 6:56
Сообщение #3


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Я извиняюсь, что вмешиваюсь.. Очень понравилось:
Цитата(ammaximus @ 22.06.2009 6:55) *
1. Должно же хоть что-то наследоваться от Hardware, иначе какой в нем смысл
Напомнило Козьму Пруткова (вольный пересказ):
"Стоя на мосту и плюя в воду, следи за расходящимися кругами - иначе твое занятие будет бессмысленным."

ammaximus, не подменяй поиск смысла еще большей бессмыслицей.. Тебе сказали: цена наследуется. Мало? smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 24.07.2025 3:39
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"