Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef MATERIALVERWALTUNG_H
- #define MATERIALVERWALTUNG_H
- #include <vector>
- #include "material.h"
- #include "handelsmaterial.h"
- #include "komponente.h"
- #include "fertigprodukt.h"
- using namespace std;
- class Materialverwaltung
- {
- public:
- Materialverwaltung();
- virtual ~Materialverwaltung(){}
- void materialAufnehmen(Material* mat, int fertigpronr);
- Material* findeMaterial(int matNr);
- int lieferFrist(int matNr);
- int getVectorSize();
- vector<Material*> getmaterialien();
- private:
- vector<Material*> materialien;
- void dateiEinlesen();
- };
- #endif // MATERIALVERWALTUNG_H
- #include "materialverwaltung.h"
- #include <fstream>
- #include <sstream>
- #include <QDebug>
- Materialverwaltung::Materialverwaltung()
- {
- dateiEinlesen();
- }
- void Materialverwaltung::materialAufnehmen(Material* mat, int fertigpronr){
- materialien.push_back(mat);
- if (fertigpronr!=0){
- for(uint i=0;i<materialien.size();i++){
- Fertigprodukt* ferptr=dynamic_cast<Fertigprodukt*>(materialien[i]);
- if(ferptr){
- if(ferptr->getMatNr()==fertigpronr){
- Komponente* kompptr=dynamic_cast<Komponente*>(mat);
- if(!kompptr)qDebug()<<QString("Error");
- ferptr->komponenteAufnehmen(kompptr);
- }
- }
- }
- }
- }
- void Materialverwaltung::dateiEinlesen(){
- ifstream datei;
- datei.open("C:/Qt/Tools/QtCreator/bin/PAD2_Probeklausur/materialien.txt");
- if(!datei){
- qDebug()<<QString("Konnte Datei nicht oeffnen");
- }
- vector<string> lines;
- string line;
- while(getline(datei,line)){
- lines.push_back(line);
- }
- for(uint i=0;i<lines.size();i++){
- int pos=0;
- vector<string>daten;
- daten.clear();
- string temp;
- temp.clear();
- do{
- if(lines[i][pos]!='|'){
- temp=temp+lines[i][pos];
- pos++;
- }else{
- daten.push_back(temp);
- temp.clear();
- pos++;
- }
- }while(lines[i][pos]!='&');
- daten.push_back(temp);
- int matNr;
- istringstream ss(daten[1]);
- ss>>matNr;
- int dauer;
- istringstream ss2(daten[3]);
- ss2>>dauer;
- Material* mat=0;
- if(daten[0]=="H"){
- mat=new Handelsmaterial(matNr, daten[2], dauer);
- materialAufnehmen(mat,0);
- }
- if(daten[0]=="F"){
- mat=new Fertigprodukt(matNr, daten[2], dauer);
- materialAufnehmen(mat,0);
- }
- if(daten[0]=="K"){
- mat=new Komponente(matNr, daten[2], dauer);
- int ferpronr;
- istringstream ss3(daten[4]);
- ss3>>ferpronr;
- materialAufnehmen(mat,ferpronr);
- }
- }
- }
- int Materialverwaltung::getVectorSize(){
- return materialien.size();
- }
- Material* Materialverwaltung::findeMaterial(int matNr){
- for(uint i=0; i<materialien.size();i++){
- if(matNr==materialien[i]->getMatNr()){
- return materialien[i];
- }
- }
- return NULL;
- }
- vector<Material*> Materialverwaltung::getmaterialien(){
- return materialien;
- }
Advertisement
Add Comment
Please, Sign In to add comment