Asko Ikävalko, k0201291 22.2.2004 TP02S-D Ohjelmointi (C-kieli) Projektityö Työn valvoja: Olli Hämäläinen
Asko Ikävalko LOPPURAPORTTI 1(11) Ratkaisun kuvaus Käytetyt tiedostot Tietuerakenteet Onnistuin mielestäni melko hyvin toteuttamaan projektin juuri niin, kuin olen projektisuunnitelmassani kuvannut. Suuria lipsumisia suunnitelmasta en joutunut tekemään. Ohjelman rajoitukset on eritelty käyttöohjeen kohdassa havaitut puutteet. Ohjelma käyttää kahta tiedostoa: datafile.dat ja ryh_list.dat, jotka molemmat ovat binäärisiä. Datafile tiedosto sisältää peräkkäin tallennettuja linkkitietueita ja ryh_list tiedosto sisältää vain yhden tietueen, jossa on listattuna kaikkien 30 ryhmän nimet. Linkkitietue sisältää yksittäisen linkin tiedot, jotka koostuvat neljästä kentästä: nimi, URL, kuvaus ja ryhmakoodi. Ryhmäkoodille varattu kenttä on tyyppiä int, muut kentät ovat string-tyyppiä. Ryhmätietue sisältää yhden kentän, joka on tyypiltään string-taulukko. Taulukossa on 31 solua, joissa kussakin voi olla 20 merkkiä pitkä merkkijono kuvaamassa ryhmän nimeä. Soluihin viitataan käyttämällä indeksinä linkkitietueen kenttää ryhmakoodi. Käyttöohje Alla on listaus tiedoston kaytto-ohje.txt sisällöstä: BOOKMARK MANAGER v1.0 -käyttöohje ********************************* Julkaistu 22.2.2004, (c) Asko Ikävalko OHJELMAN KÄYTTÖTARKOITUS ------------------------ Ohjelma on tehty Espoon - Vantaan teknillisen ammattikorkeakoulun C-ohjelmoinnin peruskurssin harjoitustyönä. Ohjelman avulla voi hallita internet-linkkejä samaan tapaan kuin esim. Internet Explorerin Favorites-valikossa. Kullekin linkille voi nimen ja URL-osoitteen lisäksi tallentaa 256 merkkiä pitkän kuvauksen sekä ryhmäkoodin väliltä 1-30. Linkkejä voidaan selata yksitellen, poistaa, siirtää toiseen ryhmään sekä lisäksi tulostaa näytölle, tekstitiedostoon tai HTML-tiedostoon. Lisäksi ohjelmasta löytyy ryhmien hallitsemiseen tarvittavat toiminnot.
Asko Ikävalko LOPPURAPORTTI 2(11) VALIKKOTOIMINNOT ---------------- Alla on kerrottu kunkin päävalikosta löytyvän toiminnon käyttö ja listattu toimintoon liittyvät alivalikot. Tulostaa näytölle listan ryhmien nimistä ja kysyy mihin ryhmään halutaan uusi linkki tallentaa. Mikäli ohjelma käynnistetään ensimmäistä kertaa, tai ryh_list.dat tiedosto on jostain syystä poistettu, kysyy ohjelma ennen ryhmälistan tulostamista "Luodaanko uusi? (k/e)", johon täytyy vastata (K)yllä. Kun linkille on valittu sopiva ryhmä, kysyy ohjelma linkin muut tiedot seuraavassa järjestyksessä: Nimi, URL-osoite, Kuvaus. (E)dellinen (S)euraava (P)oista (L)opetus E ja S selaavat linkkejä eteen-/taaksepäin. Jos yrität ensimmäisen linkin kohdalla selata taaksepäin, ilmoittaa ohjelma "Ei voida mennä enempää taaksepäin!". Kun viimeisen linkin jälkeen painat S, palaa ohjelma suoraan päävalikkoon. P poistaa näkyvissä olevan linkin tietokannasta lopullisesti. Jos jatkat selaamista eteen- ja taaksepäin, näkyy linkin tiedot kuitenkin vielä niin kauan, kunnes kyseinen selailukerta päättyy. HUOM. Jos olet jo kertaalleen ohittanut poistettavaksi haluamasi linkin valitsemalla (S)euraava, et voi enää palata (E)dellinen -valinnalla poistamaan linkkiä, koska ohjelma on jo tallentanut sen väliaikaistiedostoonsa. Sinun lopetettava selailu valitsemalla (L)opetus ja palattava uudelleen saman linkin kohdalle poistaaksesi sen. 1) Näytölle. 2) Tekstitiedostoon. 3) HTML-tiedostoon. 4) Paluu päävalikkoon. Listaustoiminnossa käyttäjä valitsee ensin listattavan ryhmän (0 = kaikki ryhmät), minkä jälkeen valitaan listausformaatti: Näytölle, tekstitiedostoon tai HTML-tiedostoon. Valittaessa "1) Näytölle", ohjelma tulostaa valitun ryhmän ruutu (n. 25 riviä) kerrallaan. Jos listattavaksi valittiin kaikki ryhmät, lajitellaan linkit ryhmittäin tulostuksen yhteydessä. Valittaessa "2) Tekstitiedostoon", ohjelma kysyy nimeä, jolla tiedosto tallennetaan samaan hakemistoon, jossa BManagDOS.exe sijaitsee.
Asko Ikävalko LOPPURAPORTTI 3(11) Valittaessa "3) HTML-tiedostoon", ohjelma kysyy jälleen tiedostonimeä ja tallentaa linkit HTML formaatissa samaan hakemistoon.exe-tiedoston kanssa. HTML-tiedoston muotoilu on pyritty tekemään samankaltaiseksi Mozilla 1.5 / Export Bookmarks toiminnon luoman.html-tiedoston kanssa. Näin ollen, ohjelman tulostaman HTML-listauksen voi suoraan siirtää yleisimpiin selainohjelmiin Import-toiminnon avulla. 1) Ryhmän nimeäminen. 2) Linkin siirto toiseen ryhmään. 3) Koko ryhmän siirto toiseen ryhmään. 4) Paluu päävalikkoon. Valittaessa päävalikosta "Ryhmien hallinta" tulostaa ohjelma ensiksi listan ryhmien nykyisistä nimistä. Mikäli ohjelma käynnistetään ensimmäistä kertaa, tai ryh_list.dat tiedosto on jostain syystä poistettu, kysyy ohjelma ennen ryhmälistan tulostamista "Luodaanko uusi? (k/e)", johon täytyy vastata (K)yllä. Valittaessa "1) Ryhmän nimeäminen", ohjelma tulostaa uudelleen listan ryhmien nimistä ja kysyy "Minkä ryhmän haluat nimetä uudelleen?". Valittuasi ryhmän, kysyy ohjelma uutta nimeä kyseiselle ryhmälle, tallentaa nimen ryh_list.dat tiedostoon ja palaa päävalikkoon. Valittaessa "2) Linkin siirto toiseen ryhmään", ohjelma avaa "Linkkien selaus / poisto" -toiminnosta tutun käyttöliittymän, jossa tällä kertaa "(P)oista" valinnan tilalla on "(V)aihda ryhmää", jonka valitsemalla tulostuu lista ryh_list.dat sisältämistä ryhmistä ja ohjelma pyytää uutta ryhmäkoodia kyseiselle linkille. Annettuasi kelvollisen ryhmäkoodin, ohjelma tallentaa koodin linkin yhteyteen ja palaa selailutoimintoon. HUOM. Toimintoa "(V)aihda ryhmää" koskevat samat rajoitukset, kuin toimintoa (P)oista. Eli, jos olet jo ohittanut linkin valitsemalla (S)euraava, sinun täytyy sulkea selailutoiminto ja palata uudelleen vaihtaaksesi linkin ryhmäkoodia. Lisäksi, uusi ryhmäkoodi näkyy oikein vasta kyseisen selailukerran jälkeen. Valittaessa "3) Koko ryhmän siirto toiseen ryhmään", ohjelma kysyy siirrettävän ryhmän nimeä sekä uutta ryhmäkoodia, joka siirrettävän ryhmän linkeille annetaan. Siirron jälkeen ohjelma palaa päävalikkoon. Ohjelma palaa DOS-kehoitteeseen. HAVAITUT PUUTTEET ----------------- "Linkkien selaus / poisto" ja "Linkin siirto toiseen ryhmään" Muutokset ei onnistu, jos on jo painettu (S)euraava. Ongelman kiertämiseksi on lopetettava auki oleva selailu ja palattava uudelleen saman linkin kohdalle. Ohjelmakin osaa opastaa käyttäjää eteenpäin tällaisen tilanteen sattuessa.
Asko Ikävalko LOPPURAPORTTI 4(11) Alkuperäisen projektisuunnitelman mukaan "Linkkien selaus / poisto" -toiminnossa käyttäjän tulisi ensin saada valita ryhmä jota selataan. Tässä ohjelmaversiossa selaustoiminnossa näkyvät kuitenkin kaikkien ryhmien linkit siinä järjestyksessä kuin ne on tietokantaan syötetty. "Tulosta näytölle" tulostaa siististi sivu (n. 25 riviä) kerrallaan, jottei käyttäjän tarvitse erikseen kelata ikkunaa ylöspäin (mikä ei edes oikeassa DOSsissa ole mahdollista). Mutta, palstoitus ei toimi kunnolla, jos URL osoite tai linkin kuvaus on yli 50 merkkiä pitkä. En kuitenkaan halunnut rajoittaa kenttien pituutta 256 merkkiä lyhyemmäksi, koska esim. HTML-tulosteessa ei palstoitusongelmaa ilmene. Tietokannasta voi, projektisuunnitelmani mukaisesti, poistaa linkkejä vain yksitellen. Seuraavassa ohjelmaversiossa pyrin lisäämään ohjelmaan toiminnon, jolla voi poistaa kokonaisen linkkiryhmän kerralla. Yhteenveto Käyttöesimerkit Ohjelma on mielestäni hyvin toimiva kokonaisuus, eikä suurempia puutteitakaan ole. Käytettävyys ei ehkä ole aivan yhtä hyvä, kuin selaimien suosikit-toiminnoissa, mutta ohjelmaa voi halutessaan melko helposti laajentaa omia tarpeitaan vastaavaksi. Alla on käyttöesimerkki ohjelman toiminnasta: X:\Ohjelmointi\Lopputyo>BManagDOS.exe ******************************************** * * * B O O K M A R K M A N A G E R v1.0 * * * * (c) Asko Ikävalko 2004 * * * ******************************************** Tämä ohjelma auttaa Internet-linkkien hallitsemista. Linkit voidaan ryhmitellä aihealueisiin, joille kullekin voi antaa aihepiiriä kuvaavan nimen. Yksittäisille linkeille voi antaa 50 merkkiä pitkän nimen, sekä 256 merkkiä pitkän kuvauksen. Ryhmän nimi voi olla pituudeltaan 20 merkkiä. Ohjelmaan talletetut linkit voi tulostaa teksti- tai HTMLtiedostoon joko kaikki kerralla, tai ryhmä kerrallaan. Lisätietoja ohjelman toiminnoista saat kaytto-ohje.txt tiedostosta. Jatkaaksesi, paina näppäintä...
Asko Ikävalko LOPPURAPORTTI 5(11) Syötä valintasi ja paina enter: 1 1. Sekalaiset 11. NIMETÖN 21. NIMETÖN 2. Koulujutut 12. NIMETÖN 22. NIMETÖN 3. Yleishyödylliset 13. NIMETÖN 23. NIMETÖN 4. Henkilöitä 14. NIMETÖN 24. NIMETÖN 5. NIMETÖN 15. NIMETÖN 25. NIMETÖN 6. NIMETÖN 16. NIMETÖN 26. NIMETÖN 7. NIMETÖN 17. NIMETÖN 27. NIMETÖN 8. NIMETÖN 18. NIMETÖN 28. NIMETÖN 9. NIMETÖN 19. NIMETÖN 29. NIMETÖN 10. NIMETÖN 20. Uusi nimi 30. NIMETÖN Mihin ryhmään (1-30) tallennetaan: 1 Linkin nimi (max 50 merkkiä): Esimerkki http://www.esimerkki.net Lyhyt kuvaus linkistä (max 256 merkkiä): Esimerkkilinkki raporttia varten. Tietojen tallentaminen onnistui. Jatkaaksesi, paina näppäintä... Syötä valintasi ja paina enter: 2 Linkin nimi: Omat http://www.dlc.fi/~ikavalko Kuvaus: Asko Ikävalkon kotisivut Ryhmä: Henkilöitä
Asko Ikävalko LOPPURAPORTTI 6(11) Linkin nimi: Koulukansio http://www.evtek.fi/~k0201291/koulu/ Kuvaus: Koulujuttujani Tamagochilla Ryhmä: Koulujutut Linkin nimi: TP02S-D Yhteystiedot http://cgi.evtek.fi/~k0201228/index.cgi?p=luokka Kuvaus: Luokkamme yhteystietolista Ryhmä: Koulujutut Linkin nimi: YTV reittiopas http://www.ytv.fi/reittiopas Kuvaus: Joukkoliikenteen reitit ja aikataulut Ryhmä: Yleishyödylliset Linkin nimi: Ruokalista http://www.sodexho.fi/cgi-bin/lounaslista.cfm?id=115&kieli=1 Kuvaus: Koulumme Sodexin ruokalista Ryhmä: Yleishyödylliset Linkin nimi: Olli Hämäläinen http://users.evtek.fi/~ollih Kuvaus: Ohjelmoinnin opettajan kotisivut. Ryhmä: Henkilöitä Linkin nimi: Esimerkki http://www.esimerkki.net Kuvaus: Esimerkkilinkki raporttia varten. Ryhmä: Sekalaiset MERKITTIIN POISTETUKSI! Linkki poistuu näkyvistä vasta tämän selailukerran jälkeen. Jatkaaksesi, paina näppäintä... Tämä oli viimeinen selattava linkki. Jatkaaksesi, paina näppäintä...
Asko Ikävalko LOPPURAPORTTI 7(11) Syötä valintasi ja paina enter: 3 Valitse ryhmä, jonka haluat listata: 1. Sekalaiset 11. NIMETÖN 21. NIMETÖN 2. Koulujutut 12. NIMETÖN 22. NIMETÖN 3. Yleishyödylliset 13. NIMETÖN 23. NIMETÖN 4. Henkilöitä 14. NIMETÖN 24. NIMETÖN 5. NIMETÖN 15. NIMETÖN 25. NIMETÖN 6. NIMETÖN 16. NIMETÖN 26. NIMETÖN 7. NIMETÖN 17. NIMETÖN 27. NIMETÖN 8. NIMETÖN 18. NIMETÖN 28. NIMETÖN 9. NIMETÖN 19. NIMETÖN 29. NIMETÖN 10. NIMETÖN 20. NIMETÖN 30. NIMETÖN Valitsemalla ryhmäksi 0, listataan kaikki tietokannan linkit! Valitse listattava ryhmä: 3 Tulostetaanko linkit: 1) Näytölle. 2) Tekstitiedostoon. 3) HTML-tiedostoon. 4) Paluu päävalikkoon. Syötä valintasi ja paina enter: 1 Yleishyödylliset -ryhmän linkit: ************************************ Linkin nimi: YTV reittiopas http://www.ytv.fi/reittiopas Kuvaus: Joukkoliikenteen reitit ja aikataulut Linkin nimi: Ruokalista http://www.sodexho.fi/cgi-bin/lounaslista.cfm?id=115&kieli=1 Kuvaus: Koulumme Sodexin ruokalista Kaikki linkit listattu. Palataksesi päävalikkoon, paina näppäintä...
Asko Ikävalko LOPPURAPORTTI 8(11) Syötä valintasi ja paina enter: 3 Valitse ryhmä, jonka haluat listata: 1. Sekalaiset 11. NIMETÖN 21. NIMETÖN 2. Koulujutut 12. NIMETÖN 22. NIMETÖN 3. Yleishyödylliset 13. NIMETÖN 23. NIMETÖN 4. Henkilöitä 14. NIMETÖN 24. NIMETÖN 5. NIMETÖN 15. NIMETÖN 25. NIMETÖN 6. NIMETÖN 16. NIMETÖN 26. NIMETÖN 7. NIMETÖN 17. NIMETÖN 27. NIMETÖN 8. NIMETÖN 18. NIMETÖN 28. NIMETÖN 9. NIMETÖN 19. NIMETÖN 29. NIMETÖN 10. NIMETÖN 20. NIMETÖN 30. NIMETÖN Valitsemalla ryhmäksi 0, listataan kaikki tietokannan linkit! Valitse listattava ryhmä: 0 Tulostetaanko linkit: 1) Näytölle. 2) Tekstitiedostoon. 3) HTML-tiedostoon. 4) Paluu päävalikkoon. Syötä valintasi ja paina enter: 3 Anna luotavan HTML-tiedoston nimi: linkit.html Listattiin linkit tiedostoon 'linkit.html' ja korjattiin 10 erikoismerkkiä. Palataksesi päävalikkoon, paina näppäintä... Syötä valintasi ja paina enter: 4
Asko Ikävalko LOPPURAPORTTI 9(11) 1. Sekalaiset 11. NIMETÖN 21. NIMETÖN 2. Koulujutut 12. NIMETÖN 22. NIMETÖN 3. Yleishyödylliset 13. NIMETÖN 23. NIMETÖN 4. Henkilöitä 14. NIMETÖN 24. NIMETÖN 5. NIMETÖN 15. NIMETÖN 25. NIMETÖN 6. NIMETÖN 16. NIMETÖN 26. NIMETÖN 7. NIMETÖN 17. NIMETÖN 27. NIMETÖN 8. NIMETÖN 18. NIMETÖN 28. NIMETÖN 9. NIMETÖN 19. NIMETÖN 29. NIMETÖN 10. NIMETÖN 20. NIMETÖN 30. NIMETÖN Ryhmien hallinta: 1) Ryhmän nimeäminen. 2) Linkin siirto toiseen ryhmään. 3) Koko ryhmän siirto toiseen ryhmään. 4) Paluu päävalikkoon. Syötä valintasi ja paina enter: 1 1. Sekalaiset 11. NIMETÖN 21. NIMETÖN 2. Koulujutut 12. NIMETÖN 22. NIMETÖN 3. Yleishyödylliset 13. NIMETÖN 23. NIMETÖN 4. Henkilöitä 14. NIMETÖN 24. NIMETÖN 5. NIMETÖN 15. NIMETÖN 25. NIMETÖN 6. NIMETÖN 16. NIMETÖN 26. NIMETÖN 7. NIMETÖN 17. NIMETÖN 27. NIMETÖN 8. NIMETÖN 18. NIMETÖN 28. NIMETÖN 9. NIMETÖN 19. NIMETÖN 29. NIMETÖN 10. NIMETÖN 20. NIMETÖN 30. NIMETÖN Minkä ryhmän haluat nimetä uudelleen? 20 Syötä uusi nimi ryhmälle 20) 'NIMETÖN': Uusi nimi Tallentaminen onnistui. Jatkaaksesi, paina näppäintä... Syötä valintasi ja paina enter: 4
Asko Ikävalko LOPPURAPORTTI 10(11) 1. Sekalaiset 11. NIMETÖN 21. NIMETÖN 2. Koulujutut 12. NIMETÖN 22. NIMETÖN 3. Yleishyödylliset 13. NIMETÖN 23. NIMETÖN 4. Henkilöitä 14. NIMETÖN 24. NIMETÖN 5. NIMETÖN 15. NIMETÖN 25. NIMETÖN 6. NIMETÖN 16. NIMETÖN 26. NIMETÖN 7. NIMETÖN 17. NIMETÖN 27. NIMETÖN 8. NIMETÖN 18. NIMETÖN 28. NIMETÖN 9. NIMETÖN 19. NIMETÖN 29. NIMETÖN 10. NIMETÖN 20. Uusi nimi 30. NIMETÖN Ryhmien hallinta: 1) Ryhmän nimeäminen. 2) Linkin siirto toiseen ryhmään. 3) Koko ryhmän siirto toiseen ryhmään. 4) Paluu päävalikkoon. Syötä valintasi ja paina enter: 4 Syötä valintasi ja paina enter: 5 X: \Ohjelmointi\Lopputyo> Ohjelmalistaus Ohjelman lähdekoodia en tähän viitsi kopioida, koska sen pituus on noin 10 sivua ja sisennykset menevät pieleen, jos kopioin lähdekoodin C-kääntäjästä Wordiin. Lähdekoodi löytyy osoitteesta: http://users.evtek.fi/~k0201291/koulu/ohjelmointi/lopputyo/bmanagdos.c
Asko Ikävalko LOPPURAPORTTI 11(11) Työaikaraportti Työajan seuranta, ohjelmoinnin projektityö Ennuste Toteuma Suunnitelman laatiminen 2 2 Tietuemäärittelyt ja menu-valikot 2 1 Uuden linkin lisäys 2 2 Linkkien selaus / poisto 6 12 Linkkien tulostaminen 8 10 Ryhmän nimeäminen 5 2 Linkin siirto toiseen ryhmään 4 3 Koko ryhmän siirto toiseen ryhmään 5 2 Betatestaus 2 6 Virheiden korjaaminen 8 5 Käyttöliittymän viimeistely 5 3 Ohjelmakoodin viimeistely 3 1 Lopputestaus 1 2 Työaikakirjanpito raporttia varten 1 1 Loppuraportin laatiminen 6 3 Yhteensä 60 55