Guest User

Untitled

a guest
Feb 2nd, 2015
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.95 KB | None | 0 0
  1. #ifndef MATERIALVERWALTUNG_H
  2. #define MATERIALVERWALTUNG_H
  3.  
  4. #include <vector>
  5. #include "material.h"
  6. #include "handelsmaterial.h"
  7. #include "komponente.h"
  8. #include "fertigprodukt.h"
  9.  
  10.  
  11. using namespace std;
  12.  
  13. class Materialverwaltung
  14. {
  15. public:
  16.     Materialverwaltung();    
  17.     virtual ~Materialverwaltung(){}
  18.  
  19.     void materialAufnehmen(Material* mat, int fertigpronr);
  20.     Material* findeMaterial(int matNr);
  21.     int lieferFrist(int matNr);
  22.  
  23.     int getVectorSize();
  24.     vector<Material*> getmaterialien();
  25.  
  26. private:
  27.     vector<Material*> materialien;
  28.     void dateiEinlesen();
  29.  
  30. };
  31.  
  32. #endif // MATERIALVERWALTUNG_H
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39. #include "materialverwaltung.h"
  40. #include <fstream>
  41. #include <sstream>
  42. #include <QDebug>
  43.  
  44.  
  45. Materialverwaltung::Materialverwaltung()
  46. {
  47.     dateiEinlesen();
  48. }
  49.  
  50. void Materialverwaltung::materialAufnehmen(Material* mat, int fertigpronr){
  51.     materialien.push_back(mat);
  52.     if (fertigpronr!=0){
  53.         for(uint i=0;i<materialien.size();i++){
  54.             Fertigprodukt* ferptr=dynamic_cast<Fertigprodukt*>(materialien[i]);
  55.             if(ferptr){
  56.                 if(ferptr->getMatNr()==fertigpronr){
  57.                     Komponente* kompptr=dynamic_cast<Komponente*>(mat);
  58.                     if(!kompptr)qDebug()<<QString("Error");
  59.                     ferptr->komponenteAufnehmen(kompptr);
  60.                 }
  61.             }
  62.         }
  63.     }
  64. }
  65.  
  66. void Materialverwaltung::dateiEinlesen(){
  67. ifstream datei;
  68. datei.open("C:/Qt/Tools/QtCreator/bin/PAD2_Probeklausur/materialien.txt");
  69. if(!datei){
  70.     qDebug()<<QString("Konnte Datei nicht oeffnen");
  71. }
  72.  
  73. vector<string> lines;
  74. string line;
  75.  
  76. while(getline(datei,line)){
  77.     lines.push_back(line);
  78. }
  79.  
  80. for(uint i=0;i<lines.size();i++){
  81. int pos=0;
  82. vector<string>daten;
  83. daten.clear();
  84. string temp;
  85. temp.clear();
  86.  
  87. do{
  88.     if(lines[i][pos]!='|'){
  89.         temp=temp+lines[i][pos];
  90.         pos++;
  91.     }else{
  92.         daten.push_back(temp);
  93.         temp.clear();
  94.         pos++;
  95.     }
  96. }while(lines[i][pos]!='&');
  97. daten.push_back(temp);
  98.  
  99.  
  100. int matNr;
  101. istringstream ss(daten[1]);
  102. ss>>matNr;
  103.  
  104. int dauer;
  105. istringstream ss2(daten[3]);
  106. ss2>>dauer;
  107.  
  108.  
  109.  
  110. Material* mat=0;
  111.  
  112.  
  113. if(daten[0]=="H"){
  114.     mat=new Handelsmaterial(matNr, daten[2], dauer);
  115.     materialAufnehmen(mat,0);
  116. }
  117.  
  118. if(daten[0]=="F"){
  119.     mat=new Fertigprodukt(matNr, daten[2], dauer);
  120.     materialAufnehmen(mat,0);
  121. }
  122.  
  123. if(daten[0]=="K"){
  124.     mat=new Komponente(matNr, daten[2], dauer);
  125.     int ferpronr;
  126.     istringstream ss3(daten[4]);
  127.     ss3>>ferpronr;
  128.     materialAufnehmen(mat,ferpronr);
  129. }
  130.  
  131. }
  132. }
  133.  
  134.  
  135. int Materialverwaltung::getVectorSize(){
  136.     return materialien.size();
  137. }
  138.  
  139. Material* Materialverwaltung::findeMaterial(int matNr){
  140.     for(uint i=0; i<materialien.size();i++){
  141.         if(matNr==materialien[i]->getMatNr()){
  142.             return materialien[i];
  143.         }
  144.     }
  145.     return NULL;
  146. }
  147.  
  148. vector<Material*> Materialverwaltung::getmaterialien(){
  149.     return materialien;
  150. }
Advertisement
Add Comment
Please, Sign In to add comment