Praktikum 1. Kassasüsteemi tutvustus.



ÜLESANDED KLASSIS

Tühi demorakendus (endale tutvumiseks - mitte esitada)

Et lihtsustada tutvumist Ant'i ja log4j'ga, on soovitatav vaadata tühja rakenduse skeletti, kus Java koodi on lihtsuse huvides minimaalselt. Selle saab alla laadida siit. See peaks andma ettekujutuse maksimaalselt lihtsast projektist, kus on korrektselt konfigureeritud Ant ja log4j ilma igasuguste "kellade ja viledeta".

  • Proovida rakendust käivitada (rakenduse juurkataloogis käsk ant run).
  • Tutvuda rakenduse sisuga:
    • Ant ehitusskriptiga (build.xml).
    • Log4j konfi-failiga (etc/log4j.xml).
    • Java koodiga.



Kassasüsteem

On loodud väikene ja poolik kassasüsteem. Use case asub siin. Realisatsiooni saab alla laadida siit.

  1. Muuta projekti konfikataloogi nimi (praegu ./etc/) ära nimeks conf. Jälgida, et log4j logimine jääks pärast muudatust endiselt töötama.
  2. Lisada logimisele logiteadete väljastamine faili
    • Muuta log4j konfiguratsioonifaili ./conf/log4j.xml
    • Lisada appender, mille klassiks on org.apache.log4j.FileAppender:
        <appender name="fileAppender" class="org.apache.log4j.FileAppender">
          <param name="File" value="templateApp.log"/>
          <param name="Append" value="false"/>
          <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %p - %m%n"/>
          </layout>
        </appender>
      
  3. Muuta logimise tähtsus levelile DEBUG ja veenduda, et debug laused jõuavad logisse.
  4. Lisada INFO tähtsusega logimislause, kui programm pannakse kasutaja poolt kinni.
  5. Muuta Ant'i ehitusskripti (build.xml) nii, et ..
    1. .. targeti build käivitamisel kompileeritavad .class-failid paigutatakse kataloogi ./build/compile.
    2. .. targeti javadoc käivitamisel suunatakse genereeritav dokumentatsioon kataloogi ./build/javadoc.
    3. .. targeti dist käivitamisel suunataks distributsiooni loomine ümber kataloogi ./build/dist.
    4. Distributsiooni käivitatava .jar-faili nimi oleks SalesSystem2011.jar.
  6. Hetkel kui lisada ostukorvi sama triipkoodiga kaupa mitu korda, siis tabelisse tuleb mitu kirjet. Teha vajalik muudatus klassi PurchaseInfoTableModel meetodisse addItem(final SoldItem item), et suurendataks olemasoleva rea kogust lisatava koguse võrra.

Kes ei jõua praktikumis lahendatavaid ülesandeid kohapeal valmis, peab kodus lõpetama. Ka need tuleb esitada koos esimese praktikumi lahendusega ning neid arvestatakse kodutöö hindamisel.



ÜLESANDED KODUS

Ülesanne 1. Kassasüsteem.

  1. Muuta ostu sooritamise kasutajaliidest nii, et kauba ID tekstina sisestamise asemel oleks võimalik kaupu valida rippmenüüst, kus näidatakse kõikide kauba-artiklite nimesid. Muu käitumine peab jääma samaks, s.t. kui kasutaja valib rippmenüüst mingi kauba-artikli välja, siis täidetakse automaatselt õigete andmetega ära väljad "Bar code" ja "Price". (Vihje: kasutada komponenti JComboBox).
  2. Ostukorvi koostamise täiendamine
    1. Lisada ostukorvi koostamisel "Shopping cart" tabelisse täiendav veerg "Sum", kus arvutatakse antud rea koguhind (Price * Amount ehk antud kauba ühikhind * ostetav kogus).
    2. Keelata toote lisamist, kui laos ei ole soovitud kogust ja kuvada kasutajale selle kohane teade.
  3. Maksmine
    1. Kui kasutaja on kaubad ostukorvi välja valinud ja vajutab nuppu ostu sooritamiseks, siis kuvada aken, kus on kalkuleeritud ostu kogusumma.
    2. Saab sisestada makstav summa.
    3. Süsteem näitab tagastusraha summat.
    4. Kasutaja saab valida kas nõustuda või keelduda. Nõustumise korral ost sooritatakse, keeldumise korral dialoogiaken peidetakse/suletakse ja ostukorvi koostamine jätkub samast seisust kus enne pooleli jäi.
  4. Ostu salvestamine ja ajalugu
    1. Täiendada süsteemi nii, et kui ost sooritatakse, siis tekib ka kirje "Ajalugu" paani. Selleks lisada JTabel ajalugu paani. Kuvada seal ostude kirjeid. Tabelis peaksid olema väljad ostu sooritamise kuupäev/kellaaeg, koguhind. Kui vajutatakse ostu peale, avaneb tabel, kus on kõik ostetud kaubad koos nime, koguse, ühikhinna ja rea summaga (analoogselt ostukorvi sisu tabeliga Point-of-sale tab'is).
    2. Kindlasti pärast ostu sooritamist vähendada vastavate koguste võrra laoseisu.
  5. Ladu
    1. Täiendada vaadet "Laoseis" võimalusega lisada lattu uusi tooteid. Peaks saama määrata kõiki tabelis olevaid välju.

Kõikide ülesannete puhul jälgida ka veatöötlust (kassasüsteem ei tohi lubada sisestada vigaseid andmeid).

NB! Esimeses praktikumis esitatavas töös peavad olema tehtud ka kõik klassis tegemiseks mõeldud ülesanded!


Lisanõuded:

SVN repositooriumi struktuur:

  • teamname/ <-- team svn repo level
    • SalesSystem/
      • branches/
      • tags/
        • lab1/
        • lab2/
        • lab3/
      • trunk/
        • src/
        • docs/
        • ...
    • SalesSystem2/
      • branches/
      • trunk/
        • ..
      • tags/
        • lab4/
        • lab5/
        • lab6/
        • lab7/
    • various/
      • ..

Lisanõuded ja selgitused:

  • Repositooriumis hoitakse kogu projekti, v.a. genereeritud failid (kassasüsteemi puhul tähendab see peamiselt iga kord uuesti ehitatavaid .class faile).
  • Ka kõik kursuse jooksul koostatavad dokumendid peavad jõudma repositooriumisse. Kui nad on seotud kassasüsteemiga, panna nad vastavalt SalesSystem alla doc kausta. Kui on tegemist kassasüsteemiga mitteseotud dokumendiga, panna see kausta various.
  • Esimeses praktikumis teile antud kassasüsteemi algkood läheb algselt lahtipakituna kataloogi SalesSystem\trunk. Sinna kausta commit'ide esimese kolme praktikumi jooksul pidevalt kõik oma jooksvad muudatused.
  • Kui vastav praktikum saab valmis, teete trunk-i hetkeseisust koopia tags alla (nt kui saab valmis esimene praktikum, siis kopeerite jooksva seisu tags/lab1 alla). Pärast tagimist ja esitamist tagitud koodi enam muuta ei tohi!
  • Alates neljandast praktikumist saate kassasüsteemi koodist uue versiooni oluliste täiendustega. Selguse mõttes laadida uus versioon uude projekti SalesSystem2\trunk. Edasi jätkub töö samamoodi nagu eelnevalt kirjeldatud.

TRAC:

Ülesanded tuleb jagada rühmaliikmete vahel väiksemateks alamülesanneteks, sisestada need Trac-i ning kasutada ülesannete manageerimiseks Tracki võimalusi.


Abimaterjalid


VIITED



Sidebar
Page edit