Meeskond: Nocturne No. 20 in C-sharp Minor: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Ntingas (talk | contribs)
No edit summary
Ntingas (talk | contribs)
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Category:Programmeerimine CSharp keeles (2015)]]
[[Category:Programmeerimine CSharp keeles (2015)]]
__NOINDEX__
__NOINDEX__
== Meeskond ja rollid ==
== Meeskond ja rollid arendustegevuses ==
 


*'''10142848''' - Projektijuht
*'''10142848''' - Projektijuht
*'''10090107'''
*'''10090107''' - Disain, vaated
*'''10143193'''
*'''10143193''' - Toodete ja soodustuste haldus, tekstide toimetamine
*'''10143313'''
*'''10143313''' - Kasutajate haldus ja müük, arenduse juhtimine


== Idee ==
== Idee ==
Line 44: Line 43:
== Lõpptoode ==
== Lõpptoode ==


=== Lõpptoote kirjeldus ===
=== Üldkirjeldus ===
 
Lõpptoode on kassamüügisüsteemi, mis paigaldatakse müügikohas puutetundliku ekraaniga tahvelarvutile. Seda kasutab müügikoha töötaja, näiteks klienditeenindaja, kliendi soovide järgi toimingute tegemiseks, või administraator rakenduse kasutajate, toodete ja soodustuste haldamiseks.
 
Lõpptoote kasutusprotsess tavaliseks müügiks näeb välja alljärgnev:
* Klient siseneb müügikohta ja kasutab kaardilugejaga oma RFID- või ID-kaarti. Klienditeenindaja näeb tahvelarvuti ekraanil RFID- või ID-kaardi andmeid ja vajutab uue sessiooni alustamise nupule.
* Kui klient soovib tarbida teenuseid või osta tooteid, siis läheb ta kassa juurde ja kasutab kaardilugejaga uuesti RFID- või ID-kaarti. Klienditeenindaja näeb tahvelarvuti ekraanil RFID- või ID-kaardi andmeid ja saab kliendi arvele lisada soovitud tooteid või teenuseid.
* Müügikohast lahkudes kordab klient oma RFID- või ID-kaardiga eelkirjeldatud protseduuri. Seejärel vajutab klienditeenindaja sessiooni lõpetamise nupule, mille järgselt koostatakse kliendile arve.
 
=== Struktuur ===
 
Lõpptoode koosneb järgnevatest osadest:
* App - põhirakendus (Windows Universal App), mis paigaldatakse müügikohas näiteks puutetundliku ekraaniga tahvelarvutile ja mida kasutavad müügikoha töötajad (klienditeenindajad, administraatorid) toimingute tegemiseks.
* BL - äriloogika kiht.
* DAL - andmebaasi kiht. Andmebaasina kasutatakse SQLite'i, kuna Microsoft soovitab seda Windows Universal App'i jaoks.
* CardHelper - programm (Windows Forms) RFID või ID-kaartide lugemiseks, mille võib paigaldada eraldi arvutisse, mis on kaardilugejaga ühendatud, või samale puutetundliku ekraaniga tahvelarvutile,kus on App. Samuti võimaldab CardHelper kaarte testimiseks emuleerida. CardHelper edastab loetud kaartide info App'ile ehk põhirakendusele kasutades TCP/IP ühendust.
* Tests - ühiktestid.
 
Loetletud osade alamstruktuurid on põhiosas identsed eelpool toodud prototüübi omadele.
 
=== Kasutusjuhend ===
 
Lõpptoote kasutamiseks käivitada App ja CardHelper.
 
==== App'i sisselogimine ====
 
App'i sisenemiseks on töötajal võimalik kasutada kasutajanime ja parooli või kaardilugejaga oma ID/RFID-kaarti. Testimiseks võib kasutada ka CardHelperis erinevates rollides sisselogimist võimaldavaid nuppe (töötaja, administraator või mõlemad), mille peale saadetakse App'ile vastav kaardi info (emuleeritakse ID/RFID kaarti, vt. allolev juhend).
 
==== Müük ====
 
Müügifunktsionaalsuse kasutamine eeldab App'i kasutajalt töötaja õigusi. Müügi teostamine sisaldab kolme etappi: sessiooni alustamine, ostmine, sessiooni lõpetamine. Lisaks on võimalik vaadata aktiivsete sessioonide nimekirja.
 
Sessiooni alustamiseks:
* Klient kasutab kaardilugejaga oma ID/RFID-kaarti.
* Klienditeenindaja vajutab App'i peavaates sessiooni alustamise nupule ("play" ikoon), seejärel kuvatakse ID/RFID-kaardi andmed ning klienditeenindaja vajutab "Start session" nupule.
 
Ostmiseks:
* Klient kasutab kaardilugejaga oma ID/RFID-kaarti ja ütleb klienditeenindajale soovitud toote.
* Klienditeenindaja vajutab App'i peavaates "Shopping" nupule, seejärel kuvatakse kõik saadaolevad tooted ja teenused ning kliendi ID/RFID-kaardi andmed. Toodete arvele lisamiseks tuleb klienditeenindajal sellele vajutada. Arvelt eemaldamiseks tuleb allpool toodud nimekirjas uuesti toote nimele vajutada. Lisatud toodete kinnitamiseks tuleb vajutada "Proceed order" nupule.
 
Sessiooni lõpetamiseks:
* Klient kasutab kaardilugejaga oma ID/RFID-kaarti.
* Klienditeenindaja vajutab App'i peavaates sessiooni lõpetamise nupule ("stop" ikoon), seejärel kuvatakse kliendi tarbitud toodete ja teenuste nimekiri ning arve summa. Klienditeenindaja võtab kliendilt raha või teostab elektroonilise makse (ei ole implementeeeritud) ning vajutab nupule "Client paid", mis lõpetab sessiooni.
 
Aktiivsete sessioonide vaatamiseks:
* Klienditeenindaja vajutab App'i peavaates nupule "Clients", misjärel kuvatakse kõigi aktiivsete klientide kaardiandmed.
 
==== Administreerimine ====
 
Administreerimisfunktsiooni kasutamine eeldab App'i kasutajalt administraatori õigusi.
 
Administraatoril on võimalik kasutajaid, tooteid ja soodustusi vaadata, lisada, muuta ja kustutada.
 
Toodete vaatamine, lisamine, muutmine ja kustutamine:
* Administraator vajutab App'i peavaates "Products" nupule. Seejärel kuvatakse kõik saadaolevad tooted ja teenused.
* Toote lisamiseks on nupp "Add product".
* Toote muutmiseks on nupp "Edit product", mis eeldab, et enne tehakse toodete nimekirjas toode aktiivseks.
* Toote kustutamiseks on nupp "Delete", mis eeldab, et enne tehakse toodete nimekirjas toode aktiivseks.
 
Soodustuste vaatamine, lisamine, muutmine ja kustutamine:
* Administraator vajutab App'i peavaates "Discounts" nupule. Seejärel kuvatakse kõik olemasolevad soodustused koos vastavate toodetega, millele need rakenduvad.
* Soodustuse lisamiseks tootele on nupp "Add discount".
* Soodustuste muutmiseks on nupp "Edit discount", mis eeldab, et enne tehakse soodustuste nimekirjas soodustus aktiivseks.
* Soodustuste kustutamiseks on nupp "Delete", mis eeldab, et enne tehakse soodustuste nimekirjas soodustus aktiivseks.
 
Kasutajate vaatamine, lisamine ja muutmine:
* Administraator vajutab App'i peavaates nupule "Users". Seejärel kuvatakse kasutajate otsingu vaade.
* Kõigi kasutajate kuvamiseks jätta kõik otsinguväljad tühjaks ja vajutada nupule "Find user".
* Kasutaja andmete muutmiseks valida otsitud kasutajate nimekirjast üks kasutaja, mille peale avaneb muutmise vaade.
* Kasutajate andmete lisamiseks vajutada nupule "Add".


Lõpptoote lähtekood ZIP formaadis failina on [http://tiny.cc/23ac8x Google Drive'is].
==== CardHelper'i kasutamine ====


Lõpptoode on vormilt Windows Universal App ja selle kasutamine eeldab Windows 10 olemasolu.
CardHelper vahendab RFID ja ID-kaartide informatsiooni kaardilugeja ja App'i vahel, mis ei eelda kasutajalt peale nimetatud programmi käivitamise ühtegi toimingut. Samas on selle programmiga võimalik ka emuleerida RFID ja ID-kaarte App'i jaoks, et rakendust testida ilma kaardilugeja ja kaartideta.
 
Kaartide emuleerimiseks:
* Sisestada CardHelper'is sobivad RFID või ID-kaardi andmed ja vajutada vastavalt "Emulate RFID card" või "Emulate ID-card" nupule.
* Vastavates rollides App'i sisselogimiseks on nupud: "Login (Admin)", "Login (Admin and Worker)", "Login (Worker)", "Login (Without role)".  


=== Tehnoloogiad  ===
=== Tehnoloogiad  ===


*[https://msdn.microsoft.com/en-us/library/windows/apps/dn726767.aspx Universal App]
*[https://msdn.microsoft.com/en-us/library/windows/apps/mt592864.aspx SQLite]
*[https://msdn.microsoft.com/en-us/library/bb397926.aspx LINQ]
*[https://msdn.microsoft.com/en-us/library/bb397926.aspx LINQ]
*[https://msdn.microsoft.com/en-us/library/windows/apps/dn726767.aspx Universal app]
*[https://msdn.microsoft.com/en-us/data/ef.aspx EF]
*[https://msdn.microsoft.com/en-us/data/ef.aspx EF]


Line 62: Line 135:
*[https://www.visualstudio.com/en-us/products/what-is-visual-studio-online-vs.aspx Visual Studio Online]
*[https://www.visualstudio.com/en-us/products/what-is-visual-studio-online-vs.aspx Visual Studio Online]


=== Lõpptoote lähtekood ===
Lõpptoote lähtekood ZIP formaadis failina on [http://tiny.cc/23ac8x Google Drive'is]. Lõpptoote põhirakendus on vormilt Windows Universal App ja selle kasutamine eeldab Windows 10-ne olemasolu arvutis.


== Arendusprotsess ==
== Arendusprotsess ==

Latest revision as of 22:57, 29 January 2016


Meeskond ja rollid arendustegevuses

  • 10142848 - Projektijuht
  • 10090107 - Disain, vaated
  • 10143193 - Toodete ja soodustuste haldus, tekstide toimetamine
  • 10143313 - Kasutajate haldus ja müük, arenduse juhtimine

Idee

Nocturne App art concept

Meeskonna eesmärgiks on luua Point Of Sale System 2015 Enterprise Edition ehk lühidalt POSS 2015EE. POSS 2015EE on lihtne kassamüügisüsteem (ing. k. point of sale system), mis töötab töölaua rakendusena ja on oma tööpõhimõttelt sarnane näiteks Vapiano restoranide ketis kasutusel oleva süsteemiga.

Müügikohta sisenedes saab klient RFID toega kiipkaardi või kasutab oma olemasolevat ID-kaarti, millega registreerib POSS 2015EE-s oma külastusaja alguse ning kõik tarbitud teenused ja kaubad. Kui klient lahkub müügikohast, sisestab ta kaardi lugejasse ning juuresolevale puutetundlikule ekraanile kuvab POSS 2015EE tema külastusaja pikkuse, kõigi tarbitud kaupade ja teenuste nimekirja ning vastavad maksumused. Seejärel on kliendil võimalik pangalingi kaudu arve maksta.

Kliendid on eristatud uuteks ja püsiklientideks. Püsiklientidel on võimalik koguda punkte ja saada lisasoodustusi. POSS 2015EE-l on vaikimisi kohalik andmebaas, kuid lisavõimalusena saab kasutada ka pilves paiknevat andmebaasi, mis võimaldab POSS 2015EE-d kasutada hajussüsteemina.


Analüüs

Projekti analüüs on Google Docs'is.

Prototüüp

Prototüübi lähtekood ZIP formaadis failina on Google Drive'is.

Prototüübi struktuur:

  • App kataloog - presentatsiooni kiht.
    • Assets - pildi- ja ikoonifailid, mida kasutajaliidese kuvamisel kasutatakse.
    • Pages - lehed (XAML), millest kasutajaliides koosneb.
    • ViewModels - lehtedega seotud vaatemudelid.
    • ValueConverters - klassid, mida kasutatakse lehtedel kasutatavate väärtuste teisendamiseks.
    • Helpers - kõik ülejäänud klassid, mis teiste kataloogide alla ei sobi, nt. navigatsiooniteenus, logimine, jne.
    • App.xaml - käivitamise lähtepunkt.
    • MainPage.xaml - pealeht.
  • BL kataloog - äriloogika kiht, mis töötab sillana presentatsiooni (App) ja andmebaasi (DAL) kihi vahel.
    • DTO - andmete App'i ja BL-i kihi vahel edastamise objektid.
    • Interfaces - teenuste ja monitoride liidesed.
    • Monitors - monitori liideste implementatsioonid, nt. ID- ja RFID-kaardi jaoks.
    • Services - teenuste liideste implementatsioonid, nt. kasutajate, toodete jne. DTO-de jaoks.
    • Helpers - kõik ülejäänud klassid, mis teiste kataloogide alla ei sobi, nt. veateadete haldus.
  • DAL kataloog - hetkel ei ole seda lähtekoodi lisatud. Arendamise ja testimise lihtsustamiseks kasutavad BL-i teenused andmebaasi asemel mälus paiknevaid objekte.
  • CardHelper - eraldi väike programm ID- ja RFID-kaardi emuleerimiseks. Prototüübi kasutamiseks käivitada mõlemad programmid - põhirakendus ja emulaator. Emulaatoris saab vajutada nuppudele põhirakenduses vastavates rollides sisse logimiseks, nt. administraator või töötaja. Nupule vajutades logitakse kasutaja põhirakendusse vastavas rollis.

Lõpptoode

Üldkirjeldus

Lõpptoode on kassamüügisüsteemi, mis paigaldatakse müügikohas puutetundliku ekraaniga tahvelarvutile. Seda kasutab müügikoha töötaja, näiteks klienditeenindaja, kliendi soovide järgi toimingute tegemiseks, või administraator rakenduse kasutajate, toodete ja soodustuste haldamiseks.

Lõpptoote kasutusprotsess tavaliseks müügiks näeb välja alljärgnev:

  • Klient siseneb müügikohta ja kasutab kaardilugejaga oma RFID- või ID-kaarti. Klienditeenindaja näeb tahvelarvuti ekraanil RFID- või ID-kaardi andmeid ja vajutab uue sessiooni alustamise nupule.
  • Kui klient soovib tarbida teenuseid või osta tooteid, siis läheb ta kassa juurde ja kasutab kaardilugejaga uuesti RFID- või ID-kaarti. Klienditeenindaja näeb tahvelarvuti ekraanil RFID- või ID-kaardi andmeid ja saab kliendi arvele lisada soovitud tooteid või teenuseid.
  • Müügikohast lahkudes kordab klient oma RFID- või ID-kaardiga eelkirjeldatud protseduuri. Seejärel vajutab klienditeenindaja sessiooni lõpetamise nupule, mille järgselt koostatakse kliendile arve.

Struktuur

Lõpptoode koosneb järgnevatest osadest:

  • App - põhirakendus (Windows Universal App), mis paigaldatakse müügikohas näiteks puutetundliku ekraaniga tahvelarvutile ja mida kasutavad müügikoha töötajad (klienditeenindajad, administraatorid) toimingute tegemiseks.
  • BL - äriloogika kiht.
  • DAL - andmebaasi kiht. Andmebaasina kasutatakse SQLite'i, kuna Microsoft soovitab seda Windows Universal App'i jaoks.
  • CardHelper - programm (Windows Forms) RFID või ID-kaartide lugemiseks, mille võib paigaldada eraldi arvutisse, mis on kaardilugejaga ühendatud, või samale puutetundliku ekraaniga tahvelarvutile,kus on App. Samuti võimaldab CardHelper kaarte testimiseks emuleerida. CardHelper edastab loetud kaartide info App'ile ehk põhirakendusele kasutades TCP/IP ühendust.
  • Tests - ühiktestid.

Loetletud osade alamstruktuurid on põhiosas identsed eelpool toodud prototüübi omadele.

Kasutusjuhend

Lõpptoote kasutamiseks käivitada App ja CardHelper.

App'i sisselogimine

App'i sisenemiseks on töötajal võimalik kasutada kasutajanime ja parooli või kaardilugejaga oma ID/RFID-kaarti. Testimiseks võib kasutada ka CardHelperis erinevates rollides sisselogimist võimaldavaid nuppe (töötaja, administraator või mõlemad), mille peale saadetakse App'ile vastav kaardi info (emuleeritakse ID/RFID kaarti, vt. allolev juhend).

Müük

Müügifunktsionaalsuse kasutamine eeldab App'i kasutajalt töötaja õigusi. Müügi teostamine sisaldab kolme etappi: sessiooni alustamine, ostmine, sessiooni lõpetamine. Lisaks on võimalik vaadata aktiivsete sessioonide nimekirja.

Sessiooni alustamiseks:

  • Klient kasutab kaardilugejaga oma ID/RFID-kaarti.
  • Klienditeenindaja vajutab App'i peavaates sessiooni alustamise nupule ("play" ikoon), seejärel kuvatakse ID/RFID-kaardi andmed ning klienditeenindaja vajutab "Start session" nupule.

Ostmiseks:

  • Klient kasutab kaardilugejaga oma ID/RFID-kaarti ja ütleb klienditeenindajale soovitud toote.
  • Klienditeenindaja vajutab App'i peavaates "Shopping" nupule, seejärel kuvatakse kõik saadaolevad tooted ja teenused ning kliendi ID/RFID-kaardi andmed. Toodete arvele lisamiseks tuleb klienditeenindajal sellele vajutada. Arvelt eemaldamiseks tuleb allpool toodud nimekirjas uuesti toote nimele vajutada. Lisatud toodete kinnitamiseks tuleb vajutada "Proceed order" nupule.

Sessiooni lõpetamiseks:

  • Klient kasutab kaardilugejaga oma ID/RFID-kaarti.
  • Klienditeenindaja vajutab App'i peavaates sessiooni lõpetamise nupule ("stop" ikoon), seejärel kuvatakse kliendi tarbitud toodete ja teenuste nimekiri ning arve summa. Klienditeenindaja võtab kliendilt raha või teostab elektroonilise makse (ei ole implementeeeritud) ning vajutab nupule "Client paid", mis lõpetab sessiooni.

Aktiivsete sessioonide vaatamiseks:

  • Klienditeenindaja vajutab App'i peavaates nupule "Clients", misjärel kuvatakse kõigi aktiivsete klientide kaardiandmed.

Administreerimine

Administreerimisfunktsiooni kasutamine eeldab App'i kasutajalt administraatori õigusi.

Administraatoril on võimalik kasutajaid, tooteid ja soodustusi vaadata, lisada, muuta ja kustutada.

Toodete vaatamine, lisamine, muutmine ja kustutamine:

  • Administraator vajutab App'i peavaates "Products" nupule. Seejärel kuvatakse kõik saadaolevad tooted ja teenused.
  • Toote lisamiseks on nupp "Add product".
  • Toote muutmiseks on nupp "Edit product", mis eeldab, et enne tehakse toodete nimekirjas toode aktiivseks.
  • Toote kustutamiseks on nupp "Delete", mis eeldab, et enne tehakse toodete nimekirjas toode aktiivseks.

Soodustuste vaatamine, lisamine, muutmine ja kustutamine:

  • Administraator vajutab App'i peavaates "Discounts" nupule. Seejärel kuvatakse kõik olemasolevad soodustused koos vastavate toodetega, millele need rakenduvad.
  • Soodustuse lisamiseks tootele on nupp "Add discount".
  • Soodustuste muutmiseks on nupp "Edit discount", mis eeldab, et enne tehakse soodustuste nimekirjas soodustus aktiivseks.
  • Soodustuste kustutamiseks on nupp "Delete", mis eeldab, et enne tehakse soodustuste nimekirjas soodustus aktiivseks.

Kasutajate vaatamine, lisamine ja muutmine:

  • Administraator vajutab App'i peavaates nupule "Users". Seejärel kuvatakse kasutajate otsingu vaade.
  • Kõigi kasutajate kuvamiseks jätta kõik otsinguväljad tühjaks ja vajutada nupule "Find user".
  • Kasutaja andmete muutmiseks valida otsitud kasutajate nimekirjast üks kasutaja, mille peale avaneb muutmise vaade.
  • Kasutajate andmete lisamiseks vajutada nupule "Add".

CardHelper'i kasutamine

CardHelper vahendab RFID ja ID-kaartide informatsiooni kaardilugeja ja App'i vahel, mis ei eelda kasutajalt peale nimetatud programmi käivitamise ühtegi toimingut. Samas on selle programmiga võimalik ka emuleerida RFID ja ID-kaarte App'i jaoks, et rakendust testida ilma kaardilugeja ja kaartideta.

Kaartide emuleerimiseks:

  • Sisestada CardHelper'is sobivad RFID või ID-kaardi andmed ja vajutada vastavalt "Emulate RFID card" või "Emulate ID-card" nupule.
  • Vastavates rollides App'i sisselogimiseks on nupud: "Login (Admin)", "Login (Admin and Worker)", "Login (Worker)", "Login (Without role)".

Tehnoloogiad

Arendusmustrid

Versioonikontroll

Lõpptoote lähtekood

Lõpptoote lähtekood ZIP formaadis failina on Google Drive'is. Lõpptoote põhirakendus on vormilt Windows Universal App ja selle kasutamine eeldab Windows 10-ne olemasolu arvutis.

Arendusprotsess

  • 11.10.2015 - Loodud wiki leht.
  • 16.10.2015 - Leitud idee ning kaardistatud esialgsed kasutajalood. Grupisisese suhtlemise lihtsustamiseks võeti kasutusele kiirsuhtluskeskkond.
  • 25.10.2015 - Idee lühikirjelduse lisamine wiki leheküljele.
  • 01.11.2015 - Projekti analüüsi koostamine, ülesannete jagamine vastavalt projekti moodulitele ning ühise koodi kirjutamise algus.
  • 08.11.2015 - Meeskonna Fontastic rakenduse analüüsile retsensiooni kirjutamine.
  • 11.12.2015 - Esialgse prototüübi lähtekoodi lingi lisamine wiki leheküljele.
  • 05.01.2016-18.01.2016 - Rakenduse funktsionaalsuse lõpuni arendamine, testimine, vigade parandamine.
  • 18.01.2016-20.01.2016 - Rakenduse disaini viimistlemine.