Structuur van Computerprogramma’s II: Taak 2 Dries Harnie Coen De Roover Dit document beschrijft taak 2 voor het vak “Structuur van Computerprogramma’s II”. De deadline voor deze taak is 23 november 2014 om 23:59. 1 Inleiding Als volgende stap van het “point of sale” (PoS) systeem zullen we een interface ontwikkelen om de voorraad en prijslijst te beheren. Deze moet beheerders toelaten om nieuwe artikelen toe te voegen, artikelen aan te passen of te verwijderen, of prijzen van artikelen te veranderen. 2 Functionele eisen Beheerdersinterface De beheerdersinterface krijgt de vorm van een interactief programma. Deze moet de volgende commando’s aanvaarden: • list Dit commando geeft alle artikelen in de prijslijst weer aan de gebruiker, met het aantal artikelen die nog in stock zijn. In het voorbeeld hieronder staan van links naar rechts de streepjescode, het aantal artikelen, de prijs per artikel, en de naam van het artikel. Het verwacht geen argumenten. Voorbeeld: (invoer van de gebruiker in het vetjes gedrukt) > list 5449000000996 4333465106205 9780321563842 24 10 5 1.00 0.30 17.90 Coca-Cola 33cl blik Zakdoekjes The C++ Programming Language, 4th Edition • add <streepjescode> Dit commando voegt een artikel toe aan de prijslijst. De gebruiker moet apart nog de naam van het artikel, de initiële prijs, en de initiële voorraad aangeven. Indien de gebruiker op minstens één van deze drie vragen antwoordt met een lege lijn wordt het artikel niet toegevoegd. Ook mag de prijs niet kleiner of gelijk aan nul 1 zijn. Het is niet toegelaten een artikel met een reeds bestaande streepjescode toe te voegen. Voorbeeld: > add 5410041014600 Naam? Cent wafers Prijs? 0.30 Voorraad? 5 Artikel 5410041014600 (Cent wafers) toegevoegd. > add 3662168005302 Naam? Blauwe bordstift Prijs? Artikel niet toegevoegd. • remove <streepjescode> Dit commando verwijdert een artikel uit de prijslijst. Indien het artikel niet bestaat wordt er een foutmelding afgedrukt. Voorbeeld: > remove 4333465106205 Artikel 4333465106205 (Zakdoekjes) verwijderd. • edit <streepjescode> Dit commando laat de gebruiker toe om de naam, prijs of voorraad van een artikel te wijzigen. Dezelfde bevraging als bij het add commando wordt gebruikt, maar als de gebruiker met een lege lijn antwoordt wordt de huidige waarde gewoon overgenomen. Voorbeeld: > edit 9780321563842 Naam? [The C++ Programming Language, 4th Edition] Prijs? [17.90] 15.00 Voorraad? [5] Artikel 9780321563842 (The C++ Programming Language, 4th Edition) aangepast. • stock <streepjescode> <wijziging> Dit commando wijzigt het aantal artikelen in de voorraad met de gegeven streepjescode. Het <wijziging> argument kan drie vormen aannemen: 1. +aantal: Het opgegeven aantal wordt bijgeteld bij de voorraad. 2. -aantal: Het opgegeven aantal wordt afgetrokken van de voorraad. Merk op dat de voorraad hierdoor niet onder nul mag gaan. 3. aantal: De voorraad wordt op het opgegeven aantal gezet. 2 Voorbeeld: > stock 9780321563842 +2 Stock voor 9780321563842 (The C++ Programming Language, 4th Edition) is nu 7. > stock 5449000000996 -3 Stock voor 5449000000996 (Coca-Cola 33cl blik) is nu 21. > stock 5449000000996 22 Stock voor 5449000000996 (Coca-Cola 33cl blik) is nu 22. • save Dit commando slaat alle openstaande wijzigingen op naar de schijf. • quit Dit commando sluit de interactie met de gebruiker af. Indien er nog openstaande wijzigingen zijn moet de gebruiker nog de kans krijgen deze te bewaren. De beheerdersinterface moet een aantal invarianten onderhouden: 1. Er mogen nooit twee artikelen zijn met dezelfde streepjescode; 2. Prijzen mogen nooit kleiner dan of gelijk aan nul zijn; 3. Voorraden mogen nooit onder nul gaan. Gebruik van in-memory datastructuren Bij het opstarten moet de beheerdersinterface zowel de huidige prijslijst als de stock inlezen. Aanpassingen die de gebruiker maakt mogen enkel in het geheugen plaatsvinden. Je moet dus gebruik maken van de datastructuren die C++ aanbiedt (of er zelf uitvinden). Pas als de gebruiker het save commando ingeeft mogen de wijzigingen terug naar bestanden geschreven worden. Als de gebruiker het programma afsluit met openstaande wijzigingen moet je de gebruiker nog de kans geven om deze weg te schrijven. 3 Niet-functionele eisen Maak je code overzichtelijk en probeer code-duplicatie te vermijden door middel van functies, klassen en andere technieken die we in de les gezien hebben. Je moet je project afgeven als een .tar.gz archief, met als naam taak2-<netid>.tar.gz . Dus voor mij zou dit bestand bijvoorbeeld taak2-dharnie.tar.gz heten. In dit archief moet de volgende directory-structuur zitten: taak2-<netid>/ beheer.cpp (andere .cpp of .h bestanden) 3 Indienen kan je via email: [email protected]. Veel succes! 4
© Copyright 2024 ExpyDoc