Vraag : Hoe cre�ër ik een klasse die dossier I/O voor een de reserveprogramma van de autohuur behandelt?

Fundamenteel, wil ik een klasse toevoegen die al dossier input-output van het onderstaande programma behandelt. Het programma in bijlage is wat wij tot dusver hebben in een poging om een gebruikershuur te laten een auto (als het niet reeds gereserveerd) is, een reserve te controleren en een reserve te annuleren. Het mist nog sommige delen maar ik ben betrokken bij het creëren van een nieuwe dossier behandelende klasse. Ik ken wij want
-a vector die slechts tien auto's met alle variabelen bewaard aan een eenvoudig .txt dossier MET INBEGRIP VAN vector/>-A aannemer reservations.
-Simple accessorfuncties voor auto objects
-Function laden die als parameter vector veranderlijk en resave al info aan file.

Basically zal goedkeuren, deze manier steek houdt? En als zo, hoe kan ik over het doen van het gaan?

I am een newbie bij C++ en aan dit forum zodat verontschuldig ik me als om het even wat gek klinkt. (ik ben ook op codage 40 uren van afgelopen 48! geweest) Dank vooraf aan iedereen wie de tijd vergt te helpen!
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
" notpretty "
//.cpp
#include 
#include 
#include 


#include „car.h“
#include „customer.h“
#include „res.h“

het gebruiken van namespace norm;

time_t convTime (int.dag, int.maand, int.jaar)
{
   time_t rawtime;
   struct tm * timeinfo;
   tijd (&rawtime);
   timeinfo = localtime (&rawtime);
   timeinfo->tm_year = jaar - 1900;
   timeinfo->tm_mon = maand - 1;
   timeinfo->tm_mday = dag;
   terugkeer mktime (timeinfo);
}

time_t askForTime ()
{
    int. dag, maand, jaar;
    cout gelieve te gaan << „alle gebieden als aantallen in.“ << endl;
    cout „Dag <<: “;
    cin dag >>;
    cout „Maand <<: “;
    cin maand >>;
    cout „Jaar <<: “;
    cin jaar >>;
    terugkeer convTime (dag, maand, jaar);
}

Klant createCust ()
{
	koord cName, cAddress, cccNumber, cccType, cEmail;
    cout<< " te gaan gelieve uw naam in en te druk dan binnengaan. „<> cName;
	
	cout<< " te gaan gelieve uw adres in en te druk dan binnengaan. „<> cAddress;
	
	cout<< " te gaan gelieve uw creditcardaantal in en te druk dan binnengaan. „<> cccNumber;
	
	cout<< " te gaan gelieve uw creditcardtype in en te druk dan binnengaan. „<> cccType;
	
	cout<< " te gaan gelieve uw e-mailadres in en te druk dan binnengaan. „<> cEmail;
	
	terugkeer Klant (cName, cAddress, cccNumber, cccType, cEmail);
}

(nietige) int.leiding
{
    vector klanten;
	carArray auto [10] = {
	    Auto (1, „Medio Grootte“, valse 50.00,),
		Auto (2, „Medio Grootte“, ware 55.00,),
		Auto (3, „Compact“, valse 40.00,),
		Auto (4, „Compact“, ware 45.00,),
		Auto (5, „Hoogtepunt - grootte“, valse 55.00,),
		Auto (6, „Hoogtepunt - grootte“, ware 60.00,),
		Auto (7, „Minivan“, 55.00, vals),
		Auto (8, „Minivan“, 60.00, waar),
		Auto (9, „SUV“, 60.00, vals),
		Auto (10, „SUV“, 65.00, waar),
    };

	int. selectie;
	Klant * currentCust;
	bool notDone = waar;

	cout gelieve te maken << „een Selectie: “ << endl;
	cout << „1. Ik ben een nieuwe klant. “ << endl;
	cout << „2. Ik ben een bestaande klant. “ << endl;
	cout << „1 of 2: “;
	cin selectie >>;
	als (selectie == 1)
	{
         customers.push_back (createCust ());
         currentCust = &customers [customers.size () - 1];
    }
    als anders (selectie == 2)
    {
         cout << „die de klant u?“ is << endl;
         voor (int. i = 0; i < customers.size (); i++)
             cout << (i+1) << „. “ klanten << [I] .getName () << endl;
         cout << „? “;
         cin selectie >>;
         currentCust = &customers [selectie];
    }
  terwijl (notDone) {
    cout << endl << endl;
    cout gelieve te maken << „een Selectie: “ << endl;     
    cout << „1.  Maak een Reserve“ << endl;
	cout << „2.  Het Programma“ << van de Reserve van de mening endl; 
	cout << „3.  Uitgang“ << endl;
    cout << „? “;
	cin selectie >>;

	als (selectie == 1) 
    {
  		cout gelieve te gaan << „de Update van de Oogst in.“ << endl;
		time_t outD = askForTime ();
		cout gelieve te gaan << „de Datum van de Terugkeer in.“ << endl;
		time_t Ind. = askForTime ();
		cout gelieve te voeren << „het Aantal van identiteitskaart van de Auto (in 1-10): “;
		int. idNum;
        cin idNum >>;
        Reserve r = Reserve (outD, Ind., idNum, currentCust);
        cout << „Uw reserve is bevestigd. “;
    }
    als anders (selectie == 3)
         notDone = vals;
  }

	terugkeer 0;
}

// customer.h

#ifndef H_CUSTOMER
#define H_CUSTOMER

#include

het gebruiken van namespace norm;

klassen Klant
{
publiek:
	nietige druk () const;
	koord getName ();
	koord getAddress ();
	koord getccNumber ();
	koord getccType ();
	koord getEmail ();
	Klant (koord _name, koord _address, koord _ccNumber, koord _ccType, koord _email);

privé:
	koord naam;
	koord adres;
	koord ccNumber;
	koord ccType;
	koord e-mail;
};

nietige Klant:: druk () const
{
	cout<< naam <
#include 
#include 

#include „res.h“

het gebruiken van namespace norm;

klassen Auto
{
privé:
       int. idNumber;
       het koord cSize;
       dubbele pricePerDay;
       bool het roken;
       vector reserves;
publiek:
       Auto (int. idN, koord s, dubbel p, bool sm);
       bool makeReservation (Reserve *res);              
       nietige cancelReservation (Reserve *res);
};

Auto:: Auto (int. idN, koord s, dubbel p, bool sm)
{
     idNumber = idN;
     cSize = s;
     pricePerDay = p;
     het roken = sm;
}

/*

In afwachting van:

        vector auto:: reserves;

        bool reserve:: conflict ();

*/

bool Auto:: makeReservation (Reserve *res)
{
    voor (int. i=0; i < reservations.size (); i++)
    {
        als (reserves [I] .conflict (onderzoek))  // het conflict keert waar terug als de data strijdig zijn. NOG NIET GESCHREVEN
      // werpt (de „Reservedata zijn met een andere reserve strijdig. “);
     // vangst (klusjesbericht [])
        {
              cout << het „Conflict van reservedata met een andere reserve.“ << endl;
              valse terugkeer;
        }
    }

    //now dat wij de datum niet strijdig is hebben geweten. behoefte enkel om het toe te voegen
    reservations.push_back (*res);
/*
    //now update het reservedossier
    cout << die „“ << FILENAME << proberen te openen endl;
    ifstream inp (FILENAME, ifstream:: in); 

    als (! inp.good ())
       werp („Er was een probleem die het reservedossier openen. “);
    vangst (klusjesbericht [])
    {
        cout <<- bericht << endl;
        valse terugkeer;
    }

    terwijl (inp.good ())
    {
          //read de reserves

    }
    */
    ware terugkeer;
}

nietige Auto:: cancelReservation (Reserve * onderzoek)
{
     voor (int. i=0; i < reservations.size (); i++)
         als (res->getidNumber () == idNumber)
              reservations.erase (reservations.begin () + I);
}

#endif

// res.h

#ifndef H_RESERVATION
#define H_RESERVATION

#include 
#include „car.h“
#include „customer.h“

het gebruiken van namespace norm;

klassen Reserve
{
privé:
    time_t dateOut;
    time_t dateIn;
	int. carID;
    custInfo van de klant *;
    int. reservationNumber;
    
    
publiek:
    Reserve (time_t dOut, time_t DIN, int. _carID, Klant * custI);
    
    bool conflict (Reserve *r);
    
    int. getidNumber ();
    time_t getDateOut ();
    time_t getDateIn ();
    int. getCarReserved ();
    getCustInfo van Customer* ();
    
};

int. Reserve:: getidNumber ()
{
    terugkeer reservationNumber;
}

time_t Reserve:: getDateOut ()
{
       terugkeer dateOut;
}

time_t Reserve:: getDateIn ()
{
       terugkeer dateIn;
}

int. Reserve:: getCarReserved ()
{
    terugkeer carID;
}

De Reserve van Customer*:: getCustInfo ()
{
         terugkeer custInfo;
}

bool Reserve:: conflict (Reserve *r)
{
     als ((r->getDateIn () < dateOut) || (r->getDateOut () > dateIn))
        valse terugkeer;
     ware terugkeer;
}     

Reserve:: Reserve (time_t dOut, time_t DIN, int. _carID, Klant * custI)
{
   dateOut = dOut;
   dateIn = DIN;
   carID = _carID;
   custInfo = custI;
   
}                             

#endif

Antwoord : Hoe cre�ër ik een klasse die dossier I/O voor een de reserveprogramma van de autohuur behandelt?

Ik heb een gevoel dat u deze projecttype kwestie van ontwerp en implementatie in veelvoudige vragen kunt moeten breken over een zoals-nodig basis. Maar ik zal proberen om de bal rollend met sommige suggesties te krijgen. Maar voor het geval dat uw vraag dossier het schrijven technieken behandelt, zou ik u een blik willen nemen bij deze verbinding, en zien of zullen de ideeën u daar een begin geven.
         http://w.e-e.com/SiwPQt

Er is één I/O kwestie dat u zich van bewust zou moeten zijn alvorens op dossiers zich te bewegen. Wanneer u om het adres van de klant vraagt, gebruikt u
      cin >> cAddress;
Maar als het adres ruimten daarin heeft, dan neemt dit slechts het eerste woord op. U zou de volgende verbinding over getline moeten lezen om dit probleem op te lossen:
    http://www.cplusplus.com/reference/iostream/istream/getline/


===========================
Het bewegen zich op…
>>  de vector zal slechts tien auto's met alle variabelen bewaard aan een eenvoudig .txt dossier MET INBEGRIP VAN vectorreserves houden.

Kijkt als u creëren uw eigen gegevensbestand. U kunt de volgende ideeën nemen en beslissen wat u werkelijk voor uw taak moet doen. Zo, na enkele db ontwerpbenadering, denk na creërend niet één, maar verscheidene .txt dossiers:

- lijstenklanten door klantenidentiteitskaart worden gesorteerd (een één-omhooggaand aantal dat)
- maakt een lijst van de autoinventaris die door autoidentiteitskaart wordt gesorteerd (een één-omhooggaand aantal)
- maakt een lijst van de autostatus die door autoidentiteitskaart wordt gesorteerd (d.w.z., is het in de partij; of als niet, omvat klantenidentiteitskaart en wanneer is het gepast terug te keren)
- maakt een lijst van reserves gebruikend een soortcriteria (waarschijnlijk car_id met secundaire index van reserve is de begindatum niet slechte)
- lijstengeschiedenis van het facturerings informatie

Wanneer een klant een huur neemt, wordt de reserveingang verwijderd, en de het facturerings en autostatusdossiers worden bijgewerkt.
===========================

re: uw dossierklasse
Bent u gemoeten een dossierklasse hebben; of kon u I/O verrichtingen in uw individuele klassen - Auto, Klant, en Reserve inbedden? In elke één, kon u aannemer overeenkomstige filename omvatten en het overeenkomstige dossier openen.
Andere oplossingen  
 
programming4us programming4us