Sukupuu -ohjelma. Ossi Väre (013759021) Joni Virtanen (013760641)



Samankaltaiset tiedostot
Kuvien siirto-ohjelman käyttöohje Huom! Tämä ohjelmisto on käytössä vain yrityksillä, joilla ei ole käytössä Java Runtime 1.4 -sovellusta.

Testausdokumentti. Sivu: 1 / 10. Ohjelmistotuotantoprojekti Sheeple Helsingin yliopisto. Versiohistoria

Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 IT Juha Nalli

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Käyttäjän käsikirja. LIB 500 ja LIB 510 v Releasettelutyökalu Yleistä. ,NNXQDMRNDLOPRLWWDDHWWlNRKGHRQSlLYLWHWWlYl

ADMIN. Käyttöopas 08Q4

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

BUSINESS ONLINE TRADE FINANCE KOTI- JA ULKOMAISET PANKKITAKAUKSET

Goalkeeper Game Statistics (v12) käyttöohjeet

EMVHost Online SUBJECT: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT COMPANY: EMVHost Online Client sovelluksen käyttöohje AUTHOR: DATE:

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Ohjelmoinnin perusteet Y Python

SPSS-pikaohje. Jukka Jauhiainen OAMK / Tekniikan yksikkö

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

VIS Online 2.0 version uudistukset

RATKI 1.0 Käyttäjän ohje

3.3 Kurssin palauttaminen

Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Testivetoinen ohjelmistokehitys

Oy Oticon Ab. Korvakappale.fi. Käyttöohje

Luku 7 Uusien Mallien Tiedostot

Hakemistojen sisällöt säilötään linkitetyille listalle.

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

RockID-varastonhallintajärjestelmän käyttöohje. v. 1.0

Kuksa -jäsenrekisterin käyttöohje ryhmänjohtajille

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Dynaaminen muisti Rakenteiset tietotyypit

Sähköinen tiedonkeruuportaali. Käyttöohje

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Autentikoivan lähtevän postin palvelimen asetukset

Ohjelmoinnin perusteet Y Python

Visma Fivaldi -käsikirja Tehtävienhallinta- ohje käyttäjälle

Ohjelmoinnin jatkokurssi, kurssikoe

Multimaker7 ohjelmalla tuotettujen ohjelmien julkaisusta

Projektityö: Mobiiliajopäiväkirja. Mikko Suomalainen

SISÄLLYS KIRJAUTUMINEN... 2 YLEISESITTELY... 2 JÄSENHALLINTAAN LIITTYVIÄ RAPORTTEJA... 3 RAPORTTI MAKSAMATTOMISTA JÄSENISTÄ... 4 RAPORTIT...

4.6 Kurssin palauttaminen

TAPAHTUMAT Päivitetty: Viikko: 34

Diacor Turku extranet

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Luentaohjelma M-Bus mittareille Versio 1.77 ja uudemmat

Ohjeistus yhdistysten internetpäivittäjille

Omapalvelu. Omapalvelussa voit

Sähköpostitilin käyttöönotto. Versio 2.0

Toimeentulotuen sähköinen asiointi - Käyttöohje

Muuttujien määrittely

ohjeita kirjautumiseen ja käyttöön

Sisäänkirjautuminen Tallennus/raportit (YAP) Tallennusohjelma

Opera Hotel Edition. Arvonlisäverokantojen muutos Operaan Finland. Toukokuu 2010 MICROS-Fidelio Finland Oy, Hotel Systems HelpDesk

Dynaaminen muisti. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät 2017.

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

Käyttöohje. Energent MagiCAD plugin

Tietorakenteet ja algoritmit - syksy


A TIETORAKENTEET JA ALGORITMIT

Ohjeita Siemens Step7, Omron CX Programmer käyttöön

Ohjelmoinnin perusteet Y Python

Lujabetonin projektipankkiohje

Ohjelmoinnin perusteet Y Python

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Kangasniemen yrityshakemisto KÄYTTÖOHJE YRITTÄJÄLLE. KANGASNIEMEN KUNTA yrityshakemisto.kangasniemi.fi

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

HumakPro-uudistuksia ja -parannuksia / kevät 2013:

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

VSP webmail palvelun ka yttö öhje

Mylly: Uusi tapa ka sitella teksti- ja puheaineistoa helposti ja tehokkaasti. Mietta Lennes ja Jussi Piitulainen FIN-CLARIN, Helsingin yliopisto

GENUS Senior. Ohjekirja versiolle 2.23

a. Tavallisesti

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

2017/11/21 17:28 1/2 Tilitapahtumat. Tilitapahtumat... 1 Käyttö:... 1 Asiakirjan kentät:... 1

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

zotero

Tapahtumakalenteri & Jäsentietojärjestelmä Ylläpito

DXL Library ja DXL-kielen olemus. Pekka Mäkinen SoftQA Oy http/

Www-tallennuksen käyttöohje

DIGITAALISEN TARINAN TUOTTAMINEN MICROSOFT PHOTO STORY 3- OHJELMAN AVULLA VAIHEINEEN

1. Uuden Ilmon käytön eroavaisuudet vanhasta Ilmosta lyhyesti

XEROXIN TURVATIEDOTE XRX Http-palvelimen haavoittuvuus ESS:ssä/verkko-ohjaimessa saattaa mahdollistaa järjestelmän luvattoman käytön.

Harjoitustyö 3 - Millosemeni

LUKKARIN KÄYTTÖOHJE Sisällys

Katalogin luominen Coupan toimittajaportaalissa

Johdatus ohjelmointiin

Joomla Pikaohje

Loppukurssin järjestelyt

UUDEN NETTIJÄSENREKISTERIN OHJEET. Kirjaudu sisään antamalla käyttäjätunnus ja salasana

Ohjelmoinnin perusteet Y Python

MultiSave - käyttö ja käyttöönotto

STANDARD TALOUSHALLINNON KÄYTTÖOPAS

Pikaohje eläintenpitäjille Lammas- ja vuohirekisterisovellus

Ohjelmoinnin perusteet Y Python

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

MultiBoot Käyttöopas

Toimittajaportaalin pikaohje

Ohjelmoinnin peruskurssi Y1

Maali Esiehdot Toimijat Testitapauksen suoritus ja hyväksytyt lopputilat. Käyttäjä. Käyttäjä. Käyttäjä

Tiedonsiirto helposti navetta-automaation ja tuotosseurannan välillä

Omapalvelu. Omapalvelu - ohje Päivityspaketti 1/ Tieto Corporation

Transkriptio:

Sukupuu -ohjelma Ossi Väre (013759021) Joni Virtanen (013760641) 7.11.2011

1 Johdanto Toteutimme C -kielellä sukupuuohjelman, johon käyttäjä voi lisätä ja poistaa henkilöitä ja määrittää henkilöiden välisiä suhteita. Sukupuun sisältämät tiedot voidaan myös tallettaa JSON -muotoiseen tiedostoon, josta ne voidaan ohjelman käynnistyksen yhteydessä myös lukea. Ohjelma lienee kasvanut liian suureksi tavoitteeseen verrattuna. 1

2 Ohjelman rakenne 2.1 FamilyTree (Sukupuu) Sukupuu on talletettu ohjelmassa dynaamisena taulukkona, jossa henkilöt pidetään nimen mukaan aakkosjärjestyksessä ja haetaan binäärihaulla. 2.2 Person (Henkilö) Henkilöt sisältävät tiedon henkilön nimestä, sukupuolesta ja syntymä- ja kuolinpäivistä. Henkilöiden väliset relaatiot on tallennettu dynaamisena taulukkona. 2.3 Relation (Suhde) Suhteeseen talletetaan henkilöt person1 ja person2, sekä suhteen tyyppi. Suunnatuissa suhteissa (vanhempi-lapsi -suhde) suhteen suunta on aina person1 person2. Kun henkilölle lisätään suhde toiseen henkilöön, lisätään viite samaan suhteeseen toiselle henkilölle. Jos suhteen kumpi tahansa osapuoli poistetaan sukupuusta, poistetaan samalla myös suhde. 2.4 Date (Päivämäärä) Päivämäärä sisältää päivän, kuukauden sekä vuoden. 2

2.5 Aputiedostot 2.5.1 jsonparser.c JSON parseri osaa lukea sukupuun tiedot JSON -tyyppisestä tiedostosta. Tiedot talletetaan JSON tiedostoihin sisäkkäisinä hash table ja array rakenteina. 2.5.2 leio.c Tässä tiedostossa on funktiot JSON -parserin palauttaman hashtaulun muuttamiseen henkilöiksi ja suhteiksi, jotka talletetaan sukupuuhun. Myös sukupuun talletusfunktio on tässä tiedostossa. 2.5.3 hashtable.c Hash tablea käytetään avuksi tiedostoa luettaessa. 2.5.4 dynarray.c Dynaaminen void*-tyyppinen taulukko, jota käytetään useassa kohtaa ohjelmaa. Sisältää mm. binäärihaun ja funktion, jolla voidaan lisätä dataa taulukkoon niin, että se pysyy järjestyksessä. 2.5.5 colours.c Sisältää käyttöliittymän toteutuksessa käytettäviä funktioita. 3

3 Käyttöohje 3.1 Komentoriviparametrit Ohjelmalle voi ajaessa antaa JSON-tiedoston jossa on aiemmin luotu sukupuu. Tämä tapahtuu antamalla ohjelmalle parameitreina -f <tiedostonimi>. Lisäksi voit katsoa ohjeet antamalla parametrina -h 3.2 Ohjelman käyttö Ohjelma avautuu 80x24 kokoiseen käyttöliittymään jossa on lista käytettävistä toiminnoista. Toimintoja käytetään kirjaimilla jotka ovat listan kohtien edellä (esim a, b, c jne.) 3.2.1 Päävalikon toiminnot a. Lisää Henkilö Voit lisätä uuden henkilön `yksinäisenä' ihmisenä sukupuuhun.(huom! jos haluat lisätä ihmisen jonkun lapseksi katso päälistan kohtien jälkeen: Yhden henkilön tietojen muutto tai tarkastelu: kohta c). Valinnan jälkeen syötät uuden henkilön tiedot, jonka jälkeen henkilö on lisätty. b. Poista Henkilö Voit poistaa henkilön sukupuusta valitsemalla sen listasta. c. Listaa Henkilöt Tällä listataan sukupuun henkilöt aakkosjärjestyksessä listaan, jonka jälkeen voit tarkastella (tai muuttaa) yhden henkilön tietoja tarkemmin valitsemalla henkilön sen edessä olevalla numerolla. Pääset pois listasta antamalla komennon q jolla pääset takaisin alun valikkoon. d. Tallenna tiedostoon Voit tallentaa jo tehdyn sukupuun valitsemaasi tiedostoon (jos et anna tiedostonimeä tiedosto tallentuu FamilyTree.json tiedostoon). Tämänkään jälkeen muutokset eivät tallennu automaattisesti, joten on muistettava tallentaa uudelleen. q. Lopeta Poistuu ohjelmasta. 4

3.2.2 Yhden henkilön tietojen muutto tai tarkastelu Henkilöiden listauksesta pääsee tarkastelemaan ja muuttamaan yksittäisen henkilön tietoja: a. Muuta syntymäpäivää Muuttaa henkilön syntymäpäivää. b. Muuta kuolinpäivää Lisää tai muuttaa henkilön kuolinpäivää c. Lisää lapsi Lisää lapsen valitulle henkilölle. Toinen vanhempi valitaan lapsen tietojen syötön jälkeen. Voit lisätä lapsen yksinhuoltajalle valitsemalla 'q' toista vanhempaa valittaessa. d. Lisää suhde Lisää suhteen (avo- tai aviopari) valitun henkilön ja toisen listasta valitun henkilön välille. e. Näytä jälkeläiset Listaa kaikki henkilön jälkeläiset. f. Näytä esivanhemmat Listaa kaikki henkilön esivanhemmat. g. Näytä puoliso(t) Listaa henkilön puolison(/t) h. Näytä avoliitot Listaa kaikki henkilön avoliitot. 5

4 Testaus Ohjelma testattiin CUnit -kirjaston avulla toteutetuilla yksikkötesteillä. Valitettavasti aika ei riittänyt ottaman selvää, miten CUnit kirjasto saataisiin järkevästi pakattua projektin mukaan, joten testien tulosteet löytyvät liitteestä 1. Jos CUnit kirjasto kuitenkin löytyy, voidaan testit suorittaa komennolla make build-tests ja tämän jälkeen make test. Käyttöliittymään ja tiedostojen käsittelyyn liittyvää koodia ei testattu yksikötesteillä. Myöskään funktioita, jotka vain kutsutvat toista funktiota tai luovat uuden olion 'ei testattu. FamilyTree -tiedoston funktiot tulevat implisiittisesti testatuksi muissa testitiedostoissa, joten näillekään ei ole omaa testiä. Ohjelmaa testattiin myös manuaalisesti koko kehitysprosessin ajan ajamalla se valgrind -komennon läpi, ja ohjelmassa ei pitäisi esiintyä muistin vuotoa tai laittomia muistiviittauksia. 6

5 Liitteet 5.1 Liite 1 - Yksikkötestien tulokset Tuloksien ulkonäköä on muokattu luettavuuden parantamiseksi. CUnit - A Unit testing framework for C - Version 2.1-0 http://cunit.sourceforge.net/ --Run Summary: Type Total Ran Passed Failed datetest.c: tests 3 3 3 0 asserts 7 7 7 0 dynarraytest.c: tests 4 4 4 0 asserts 95 95 95 0 hashtabletest.c: tests 1 1 1 0 asserts 4 4 4 0 persontest.c: tests 13 13 13 0 asserts 48 48 48 0 relationtest.c: tests 3 3 3 0 asserts 13 13 13 0 7