Meeskond: TTT (Trellid Teevad Tugevaks)
Meeskond ja rollid
- Kaidar Viikman - Wiki pidaja
- Joonatan Uusväli - Projektijuht
- Ave Karjus
- Oliver Tiks
Idee
Raamaturinglus. Luua rakendus, kus kasutajad loovad ise omale profiili ning sisestavad raamatute info, mida nad pakuvad teistele laenutamiseks. Samuti on võimalik laenutada teiste kasutajate sisestatud raamatuid.
Analüüs
Käesoleva projekti eesmärgiks on luua Visual Studio arenduskeskkonna võimalusi kasutades C# programmeerimiskeeles rakendus, mis võimaldab kasutajatel isiklikke raamatuid välja laenutada ning samuti ise laenutada teiste kasutajate raamatuid. See on mõeldud koduseks kasutamiseks ning sobiks hästi näiteks ühes piirkonnas elavatele inimestele, et hõlbustada ning populariseerida raamatute lugemist. Peamine idee on see, et kõik rakenduse kasutajad loovad omale kasutajakontod ning need, kes soovivad raamatuid välja laenutada, peavad lisama endale kuuluvate raamatute info andmebaasi. Kasutajad, kes soovivad raamatuid laenutada, saavad valida nende kirjete hulgast raamatuid ning alustada aktiivset laenutust.
Esimest korda rakendust avades peab kasutaja looma omale kasutajakonto. Profiili salvestatakse andmed kasutaja kohta (nimi, parool (SHA-1 räsi), emaili aadress, telefoninumber). Pärast profiili loomist on võimalik rakendusse sisse logimine, kus kasutaja saab hakata lisama endale kuuluvaid raamatuid. Täielik raamatute andmebaas on süsteemi eelnevalt sisestatud. Selleks tuleb hankida täielik bibliograafia ja seda perioodiliselt uuendada. Kasutaja sisestab endale kuuluvate raamatute info valides juba eelnevalt andmebaasis eksisteeriva raamatu kirje. Lisatavate raamatute maht ei ole piiratud. Kogumike korral on kasutajal võimalik süsteemi sisestada ka raamatus sisalduvate artiklite kirjed. Kõik kasutaja lisatud raamatud kuvatakse edaspidi rakenduses menüüpunkti “Minu raamatud” all ning samuti on peale raamatu lisamist ka teistel kasutajatel võimalik nende raamatute laenutamine.
Kasutaja, kes soovib raamatut laenutada, kasutab rakenduses otsingut kas raamatu pealkirja, autori nime või kategooria järgi. Otsingutulemustes kuvatakse välja vaid teoseid, mille kohta on aktiivne kirje teise kasutaja (raamatu omaniku) poolt loodud. Kui kasutaja leiab tulemustest sobiva raamatu, mida ta soovib laenutada, siis ta avab rakenduses selle raamatu lisainfo, kus kuvatakse kõiki kasutajate raamatuid valitud raamatu kohta ning mittelaenutatud kasutajate raamatute juures on võimalus alustada laenutamist. Laenutuse vaikimisi pikkuseks on määratud 14 päeva, mida saab vajadusel ka manuaalselt muuta. Juhul kui raamat on parasjagu juba välja laenutatud, siis kuvatakse jooksva laenutusperioodi lõpu kuupäeva koos selgitava infoga, et see konkreetne eksemplar on juba välja laenutatud. Uue laenutuse algkuupäev saab olla üks päev pärast jooksva laenutuse lõppemist. Raamatu tagastamisel märgib raamatu omanik süsteemi, et raamat on tagastatud ning võib raamatu jälle uuesti laenutamiseks valmis panna.
Esialgu realiseerime projekti WPF rakendusena, mis tähendab, et iga kasutaja peab selle oma arvutisse paigaldama. WPF rakenduse loomisel kasutame MVVM arendusmustrit, hoides üksteisest lahus andmed ja äriloogika, kasutajaliidese loogika ja presentatsiooni loogika. Andmebaasi realiseerime MS SQL tehnoloogial. Edaspidi on mõeldav ka süsteemi laiendamine veebi ja ASP.NET tehnoloogia rakendamine, et kasutajad ei peaks hankima spetsiifilist rakendust, vaid saaksid kõiki toiminguid teostada vabalt valitud veebibrauseris. Selleks tuleb programmile täiendavad osad juurde kirjutada.
Projekt teostatakse Visual Studio Online keskkonnas, kasutades Git versioonihaldustarkvara.
“Must have” funktsionaalsused:
- Kasutajate registreerimine (loob uue kirje tabelisse USER)
- Kasutajatel on võimalus sisse logida
- Kasutajatel on võimalik lisada endale kuuluvaid raamatuid
- Kasutaja saab alustada laenutust
- Kasutaja saab lõpetada laenutust
- Kasutaja näeb infot enda aktiivsete laenutuste kohta (välja antud ja sisse laenatud)
- Raamatute otsimise võimalus
- Raamatu laenutamise tähtaeg vaikimisi 14 päeva
- Laenutamise tähtaja manuaalse muutmise võimalus (pikendamine, tühistamine)
- Väljalaenutatud raamatute juures kirje laenutustähtaja kohta
“Nice to have” funktsionaalsused:
- Saab UI-st lisada raamatuid
- Kasutajaid saab hinnata
- Raamatuid saab hinnata
- Kasutaja raamatuid saab hinnata
- Kasutajaid saab kommenteerida
- Raamatuid saab kommenteerida
- Kasutaja raamatuid saab kommenteerida
- Laenutuse lõppemise hoiatuse saatmine emailile
- Madala hindega kasutaja või kasutaja raamatu puhul vastav hoiatus
- Võimalus mitte lubada laenata enda raamatuid liiga madala hinnanguga kasutajatel
- Parooli algseadistamise võimalus
- Top X raamatute (laenutuste) list viimasel kuul
- X viimati lisatud uut raamatut
- Liidestus Facebookiga / sõprade kutsumise võimalus
- Raamatute nimekirja automaatne uuendamine välistest andmebaasidest
- Kasutajate õiguste piiramine/kasutajate haldus
- Täiuslik ACL
- Raamatute graafiline materjal
Andmebaasi ülesehitus
Andmebaas koosneb kaheteistkümnest põhitabelist, mis peavad kindlasti olema tehtud, et tagada süsteemi “must have” funktsionaalsuste toimimine elementaarsel tasemel:
- USER - kasutaja andmed ja parool
- USERBOOK - kasutaja raamatukogu, kus kasutaja ID seotakse raamatu ID-ga
- BOOK - bibliograafia, kust võetakse raamatute kirjed kasutaja raamatukogu jaoks, raamatud seotakse kategooria ID-ga
- BOOKAUTHOR - raamatu ID seotakse autori ID-ga, sest raamatul võib olla mitu autorit või üldse mitte ühtegi
- ARTICLE - artiklite kirjed, mis seotakse raamatu ID-ga
- ARTICLEAUTHOR - artikli ID seotakse autori ID-ga, nagu raamatugi puhul
- AUTHOR – autori andmed
- CATEGORY - raamatute kategooriad
- RENT - laenutus, kus seotakse kasutaja (laenutaja) ID laenutatud raamatu ID-ga
- RENTSTATUS - muutused laenutuse staatuses, laenutuse ID seotakse hetkeajaga
- CONTACT - kasutaja kontaktid, kasutaja ID seotakse kontaktliigi ID-ga
- CONTACTTYPE - võimaldatavad kontaktiliigid
“Nice to have” funktsionaalsuste lisamise korral tuleb teha täiendavaid tabeleid (kommentaarid, hinded jm).
Võimalikud probleemid
- Bibliograafia leidmine, mis hõlmaks kõiki võimalikke kasutaja raamatuid
- Tegijate vähene kogemus C# programmeerimiskeelega
- Rakenduse laiendamine veebi ja sobitamine ASP.NET tehnoloogiaga
Projekti kirjeldus
Tehnoloogiad
- C#
- WPF
- MSSQL
- Entity Framework
- Microsoft Windows
- ASP.NET + IIS (kui aega üle jääb, siis laiendame projekti veebi)
Arendusmustrid
- MVVM
- võimalikud ASP.NET arendusmustrid
Versioonikontroll
Avaldatud failid
Arendusprotsess
- 29.09.2015 - grupi kokkupanek ning idee arutamine
- 20.10.2015 - wiki lehe loomine. Esialgse idee sõnastamine
- 21.10.2015 - grupiliikmete kogunemine. Idee täpsem sõnastamine. Esialgse analüüsi teostamine. Visual Studio Online konto loomine
- 01.11.2015 - põhjalikuma analüüsi koostamine ja esitamine wiki lehel
- 09.12.2015 - Wireframe loomine. Userjourney analüüs. Arhitektuuriliste küsimuste arutamine. Tehnoloogiliste võimaluste katsetamine.
- 17.12.2015 - Prototüübi valmimine ja üleslaadimine.
- 29.12.2015 - Retsensiooni kirjutamine meeskonna Premium prototüübile.
- 30.01.2016 - Valminud projekti esitamine. Retsensioon Premium tiimi lõpptootele.
Prototüüp
Prototüübi saab .rar failina alla laadida siit [1] fail uuendatud 30.12.2015 (eelmine versioon oli eksikombel vale)
Hetkeseisuga on prototüübis olemas järgmised funktsionaalsused:
- kasutajaks registreerimine
- sisse ja välja logimine
- raamatute otsimine
- raamatute laenutamine
- laenutuste pikendamine/lõpetamine
- laenutuse staatuse kuvamine
- raamatute ringlusesse lisamine
- kasutaja parooli ja kontaktide muutmine