SlideShare a Scribd company logo
1 of 35
PELAKSANAAN LANDAS DATA SEK-
              RETARIS BOWLING MENGGUNAKAN
              DBASE III


      Bab ini berisi tiga bagian penting dari infonnasi : (1) Contoh daftar-
daftar dari empat relaSi yang membentuk landas data sekretaris bowling, karena
mereka dilaksanakan atau dijalankan dalam dBASE III. (2) Contoh-contoh
perintah-perintah dBASE         III  penggunaannya dengan relasi-relasi untuk
menjawab masalah-masalahsederhana.(3) Suatu diskusi yang mendalam tentang
kumpulan modul-modul drive menu prpgram dBASE III yang menjawab masalah-
masalah yang rumit dengan menggunakan dBASE III. Pelaksanaan database
dikembangkan pada sebuah IBM PC dengan kapasitas memori 256 kByte, dua
double side disk drive, dan sebuah monitor monochrome. Disket sistem dBASE III
selalu berada di drive A, dan modul-modul program dari file database berada di
drive B.

9.1     STUDI KASUS DATABASEDALAM DBASE III
      Sebelum melanjutkan pembicaraan tentang masalah-masalah khusus dan
bennacam-macam modul program, relasi-relasi database yang nyata akan
diselidiki. Uji data dalam database dikembangkan dibawah asumsi sebagai
berikut :
     1. Liga bowling memiliki enam tim.

                                                                           99
2. Setiap tim memiliki empat peboling.
    3. Musim kompetisi hanyaberlangsung empat minggu.
    4. Data-data selama empat minggu dengan menggunakan perintah-perintah
         EDIT dan APPEND standar dBASE III.
    5. Semua peboling memainkan semua pertandingan.
      Kemungkinan untukmerubah asumsi-asumsi ini, seperti latihan-Iatihan dalam
daftar problem pada akhir bab ini.
      Gambar 9.1 sampai 9.2 menunjukkan dua buah struktur dari ujian data yang
aktuil untuk masing-masing relasi (dalam terminologi dBASE III setiap relasi
disebut sebuah file database (.dbt).)
      Dalam melihat data relasi BOWLER pengawasan hendaknya membuat relasi
memiliki sejumlah besar tembusan pada alamat jalan dan nomor telepon. Apakah
berikut ini FD yang benar ?

                                             phone L street
                                                                      . list off
                                                              TNUMB    WEEK        LANE
                                                               ]           ]        1
                                                               2           ]        2
                                                               3           ]        4
                                                               4           ]        3
                                                               5           ]        6
                                                               6           ]        5
                                                               ]           2        4
                                                               2           2        5
                                                               3           2        2
                                                               4           2        6
                                                               5           2        ]
                                                               6           2        3
                                                               I           3        3
                                                               2           3        6
      . list structure                                         3           3        ]
      Structure for dalabase         B:sched.dbf               4           3        4
      Number of dala record          24                        5           3        5
      Date of last update            05/('1)/86                1           4        5
      Field        Field Name   Type       Width       Dec     2           4        I
              1 TNUMB           Numeric         ]              3           4        3
              2 WEEK            Numeric         ]              4           4        2
            3   LANE            Numeric         ]              5           4        4
      ** TOlal **                              4
                    w                                                     ~
                    Gambar 9.1 (a) Struktur (b) Isi dari relasi SCHED.

100
Relasi nama-nama akan berhuruf besar, keeuali bila menggunakan notasi
dBASE III yang menghubungkan dengan simbol-simbol ke relasi-relasi mereka
berada.
Contoh: bowwler L bname, ini berarti bname berada di dalam relasi BOWLER.

            use team
            . lisl SlrUClure
     Slruclure for dalabase            B    :      leam.dbf
     Number of dala records            6
     Date of lasl updale               05/10/86
     Field             Field name          Type             Widlh      Dec
              1        TNUMB               Numeric            1
              2        TNAME               Character         15
              3        CAP1N               characler         15
     ** TOlal **                                            32


                                              lisl off
                        TNUMB                 TNAME           CAP1N
              I         AlleyCalS             Ann             Jones
              2         Incosistenls          Bill            Black
              3         TenPins               Lisa            Moore
              4         HiRollers             Jill            Miller
              5         Spliuers              Roy             Lane
              6         SandBaggers           Cindy           Fox

                                            (b)

              Gambar 9.2 (a) Struktur (b) Isi dari relasi TEAM.
      Jika demikian relasi BOWLER tidak di dalam BCNF dan raneangan asli
daridatabase akan salah. Maka diputuskan bahwa usulan FD adalah salah dengan
alasan :
1. Adakemungkinan tertentu bahwadua orang dengan dua alamat yangberbeda
   mungkin tidak mempunyai telepon. Kata NONE dapat digunakan untuk nomor
   telepon dalam kasus seperti itu; Bagaimana pun, alamat jalan tidak akan
   bergantung ser fungsionil pd nomor telepon.
2. Mungkin bahwa nomor telepon digunakan di dalam database adalah sebuah
   nomor telepon yang mana peboling bisa ditemukanlebih baik daripada sebuah
   nomor telepon romah, ini mungkin juga disebabkan usulan FD di atas salah.



                                                                             101
Dibawah perkiraan - perkiraan ini, beberapa data jalan dan telepon
menggambarkan relasi BOWLER adalah tembusan, tapi tidak mubasir.


9.2      JAWABAN PERMASALAHAN SEKRETARIS DENGAN
         DBASE III
      Bagian ini bermaksud mengilustrasikan fakta bahwa masalah simpel yang
berkaitan dengan database sekretaris bowling dapat dijawab langsung dengan pe-
rintah-perintah DBASE III, tanpa mengandung perintah-perintah bahasa pemro-
graman DBASE III. Semua solusi masalah dalam bagian ini melibatkan relasi
spesifik yang diberikan pada gambar 9.1 sampai 9.4. Dalam banyak kasus, sebuah
urutan dua atau lebih pereintah-perintah basic yang diperlukan untuk menjawab
masalah. Pembaca didorong untuk meng implementasikan database, dan
melaksanakan setiap set solusi yang dibahas. Jika pembaca ingin bekerja dengan
R:base 5000, daripada dBASE III, mereka cukup membaca masalah yang
diberikan dalam chapter ini, dan mengimplementasikan database pada chapter
 10.

           . use bowler
           . list structure
      Structure for database     B : bowler.dbf
      Number of data records:    24
      Date of last update        OS/20/86

         Field      Field name       Type         Width   Dec

             1      BNAME            Character       15
             2      TNUMB            Numeric          1
             3      PHONE            Character        8
             4      STRET            Character       20
             5      STAVO            Numeric          3

      ** Total'**                                    48

                                     (a)




102
list off

BNAME            TNUMB         PHONE         STRET                 STAVG

Jean Adams             5       689-1234      10   Robin St           111
Steve Adams            5       689-1234      10   Robin St           130
Bill Black             2       689-2345      15   Bluebird Ln        149
Bonnie Black           2       689-2345      15   Bluebird Ln        120
Bo Blow                2       NONE          12   Meadowbrook Ln     143
Jo Blow                2       NONE          12   Meadowbrook Ln      95
Joe Brown              3       689-4567       18 Bluebird Ln         132
Sue Brown              3       689-4567      18   Bluebird Ln        124
Cindy Fox              6       689-5678      19   Cardinal St        103
Randy Fox              6       689-5678      19   Cardinal Ln        147
Ann Jones              1       689-4365      12   Finch Dr           105
John Jones             1       689-4365      12   Finch Dr           143
Joy Lane               5       689-6789      21   Sparrow Ct         125
Roy Lane               5       689-6789      21   Sparrow Ct         167
Jill Miller            4       689-7890      12   Robin St           108
Paul Miller            4       689-7890      12   Robin St           170
Lisa Moore             3       689-8901      11   Lark Dr            115
Mike Moore             3       689-8901      11   Lark Dr            140
Jim Smith              1       689-9012      13   Finch Dr           152
Mary Smith             1       689-9012      13   Finch Dr           115
Russel Taylor          6       689-0123      20   Cardinal St        161
Ruth Taylor            6       689-0123      20   Cardinal St        119
Dan White              4       689-2143      16   Robin St           158
Jan White              4       689-2143      16   Robin St           121

   Gambar 9.3 (a) Struktur   (b) isi dari relasi BOWLER.




                                                                       103
u.. .cor..
                   li.t .tructur.
                 Structur. for d.t.b... I BI.core..dbf
                 Numb.r of d.t. r.cords I       96
                 D.t. of l..t updAte     I O~/20/86
                 Fi.ld Field n.me Type          Width               Dec
                     1 BNAME         Ch.rActer      15
                     2 WEEK         Numeric          1
                     3 GAME 1        Numeric         3
                     4 GAME2        Numeric          3
                     ~ GAME3        Numeric          3
                 ** Tot.l **                        26
                                        (a)




        Contoh-contoh   yang diberikan pada bagian iniberasumsi       bahwa    disket sistem
dBASE     III berada pada drive A dari IBM    PC, dab relasi database         pada   drive B.
Sebelum   menjalankan dBASE       III,disket yang   digunakan       harus di set .ke B. lni
dijalankan dengan perintah

                   .SET DEFAULT TO B
MASALAH        #1: " Siapakah   kapten regu nomor empat ?"      .


        Masalah inimudah, jikasemua informasi
                                            yang diperlukan
                                                          untukmenjawab
berada pada tuple dalam suatu relasi.  Sebagai tambahan, hanya satu kondisi
diperlukan :tnumb = 4. Jawaban diperoleh dengan menjalankan.perintah :
      .USE team
        .LIST OFF captn FOR tnumb = 4
        Jawabancaptn = Jill Miller
MASALAH #2: "Cari nama bowler dengan stsrting average dibawah 100."
   Masalah ini mirip masalah #1 dan dijawab dengan sequence berikut:
   .USE bowler
        .LIST OFF bname OR stavg < 100
        Jawaban bname = Jo Blow
Masalah #3: "Carl nama dan nomor telepon seluruh anggota team tiga"
      Masalah ini mirip masalah #1 dan #2 bahwa informasi yang diperlukan berada
pada satu relasi, walaupun solusinya memberikan beberapa petunjuk output.
      .USE bowler
      .LIST OFF bname FOR tnumb = 3


104
li.t off for week <- 2                           li.t off for week >- 3
BNAME          WEEK GAMEl GAME2 GAME3             BNAME         WEEK GAMEl GAME2 GAME3
Jean Adam.        1   119   120    94             Jean Adams       3   123   134   124
Steve Adams       1   112   140   138             Steve Adams      3   134   156   135
Bill Black        1   137   1~~   1~~             Bill Black       3   1~6   16~    162
80nnie BlACk      1   120   12~   11~             Bonnie Black     3   123   119   111
Bo Blow           1   160   14~   12~             Bo Blow          3   165   121    1~8
Jo Blow           1   101     91    93            Jo Blow          3     89  120     99
Jim Smith         1   160   1~0   146             Jim Smith        3   164   16~    14~
Mary Smith        1   120   110   11~             Mary Smith       3   112   114   132
Ann Jon..         1     98  110   107             Ann Jane.        3   108   109    112
John Jane.        1   14~   1~0   134             John Jane.       3   14~   146    144
Joe Brown         1   140   127   129             Joe Brown        3   136   144    12~
Bue Brown         1   121   128   124             Sue Brown        3   124   123    119
Cindy FolC        1   119   110     83            Cindy FolC       3     99  110    107
Randy FolC        1   143   1~0   148             Randy FolC       3   1~0   161    146
Ru...l TAylor     1   167   1~0   166             Ru..el Taylor    3   189   179  . 167
Ruth Taylor       1   110   12~   122             Ruth Taylor      3   135   112    132
Joy LAne          1   126   127   122             Joy Lane         3   123   132    10~
Roy Lane          1   14~   180   176             Roy Lane         3   201   202    1~6
Jill Miller       1   111   101   112             Jill Miller      3   108   112    101
PAul Miller       1   180   196   134             Paul Miller      3   198   167    18~
Dan White         1   1~6   163   1~4             Can White        3   161   162    149
Jan Whit.         1   130   12~   108             Jan White        3   119   123    141
li.A Moore        1     99  120   111             Li.a Moore       3   121   107    104
Mike Moore        1   1~0   149   121             Mike Moore       3   148   148    1~1
Jean Adam.        2   120   12~   100             Jean Adam.       4   111   121    100
Steve AdAm.       2   130   146   140             Steve Adam.      4   131   127    132
Bill Black        2   1~4   149   148             Bill Black       4    137  169' 154
80nnie Black      2   120    130  110             Bonnie Black     4   119   121    113
80 Blow           2   1~9    13~  12~             Bo Blow          4   143    157   147
Jo Blow           2   10~     91    90            Jo Blow          4     89    99    98
Jim Smith         2    160   160   170            Jim Smith        4   1~8    163   169
Mary Smith        2    120   110    90            Mary Smith       4   116    117    97
Ann Jones         2   100    110   110            Ann Jones        4   103     68   121
John Jones        2    1~8   138   13~            John Jone.       4   148    137   1~8
Joe Brown         2    139   138   12~            Joe Brown        4   130    127   146
Sue Brown         2    126   124   110            Sue Brown        4    124   126   128
Cindy FolC        2    104    90   108            Cindy FolC       4   104    109   110
Randy FolC        2    1~0   137   163            Randy FolC       4    152   153   154
Ru..el Taylor     2    160   16~   1~0            Ru.sel Taylor    4    16~   158   202
 Ruth TAylor      2    130   123   108            Ruth Taylor      4    119   123   117
Joy Lane          2    130   11~   120            Joy Lane         4    126   130   128
 Roy Lane          2   183   179   138            Roy Lane         4    170   168   186
 Jill Miller       2   110    98   103            Jill Miller      4    110   118   10~
 Paul Miller      2. 180     174   178            Paul Miller      4    176  202    181
 Dan White         2   161   1~~   1~6            Can White        4. 156     149   1~7
 JAn White         2   124   119   130            Jan White        4    124   121   115
 lisa Moore        2   120   102   100            Li.a Moore       4    110   126   106
 Mike Moore        2   1~1 140     12~            Mike Moore       4    14~   148   162
                                           (b)




               Gambar   9.4 (a) Struktur    dan    (b) Isi dari   relasi SCORES




                                                                                      105
Jawaban
           bname                        phone
           Joe Brown                    689-4567
           Sue Brown                    689-4567
           Lisa Moore                   689-8901
           Mike Moore                   689-8901

MASALAH #4:         "Pada lane mana team lima benanding di minggu ketiga ?"
      Masalah ini hanya sedikit lebih sulit daripada sebelumnya. Tambahan
kesulitan disebabkan karena ada dua kondisi yang harus ditempatkan.
            .USE sched
            .LIST OFF lane OR tnumb = 5 .AND. week = 3
      Jawaban lane = 5.
MASALAH #5:          Cari nama bowler yang tinggal di Robin St
       Masalah ini menghendaki pencarian dalam dari setiap record pada field stret
dalam relasi BOWLER untuk melihatjika muncul urutan karakter 'Robin St'. Hal
ini diselesaikan dengan operator $.
       ~LIST OFF bname FOR 'Robin St' $(stret)
Akan menghasilkan beberapa nama:
       bname
       Jean Adams
       Steve Adams
       Jill Miller
       Paul Miller
       Dan White
       Jan White
      Jika menggunakan operator $ ataupun operator atau fungsi yang memisahkan
suatu sub rangkaian dari rangkaian karakter, pemakai harus memastikan bahwa tidak
terdapat strings didalam data yang dapat menimbulkan kesalahan data. Contoh '21
Blue Robin St' akan memberikan nilai output pada masalah terakhir, walaupun
nama jalan adalah 'Blue Robin' bukan 'Robin'. Cara yang mudah untuk me-
meriksanya adalah dengan mengembalikan nama dan alamat pada output.
MASALAH #6 : "Berapa banyak seri tiga games yang lebih dari 550 yang telah
             dibuat ?"
    Masalah ini dapat dijawab dengan perintah COUNT. Jawaban                 juga
menghendaki penjumlahan dalam permasalahan.
    .USE scores
      .OUNT FOR gamel + game2 + game3 > 550

106
Jawaban : 2 records.
      Ini menunjukkan bahwa hanya dua seri tiga games yang lebih dari 550 yang
telah dibuat.
ketiga ?"
      Tingkat keterampilan yang dibutuhkan masalah ini sedikit lebih tinggi dari-
pada untuk menjawab masalah sebelumnya; data yang didapat dari satu relasi harus
digunakan pada relasi kedua, untuk mendapat hasH yang diinginkan. Untuk
menjawab masalah ini, pertama-tama sekretaris bowling harus menggunakan hasil
masalah #4 untuk menentukan pada lane mana tim lima bertanding pada minggu ke
tiga. Jawabannya adalah lane = 5. Jika lawan bertandingpada lane yang
berdampingan, sekretaris dapat menarik kesimpulan bahwa lawan bermain pada lane
enam. Dengan informasi ini, tnumb dari lawan dari tim lima pada minggu ketiga
dapat dijawab dengan urutan berikut :
       .LIST OFF captn FOR tnumb = 2
       Jawaban keseluruhan masalah captn = Bill Black.
      Masalah #7 dapat dijawab dengan berbagai cara. Jawaban diatas mungkin yang
paling langsung dan paling mudah dimengerti oleh pemakai pemula dBASE III.
Jawaban kedua melibatkan penggunaan operator relasi JOIN.
      Bagian pertama dari jawaban kedua dari masalah #7 sarna seperti yang
diberikan sebelumnya: Lane untuk tim lima selama minggu ketiga harus ditemukan
(Lane = 5). ari sini ditentukan kembali bahwa lane lawan adalah lane enam.
Berikutnya, urutan berikut hams dilaksanakan:

            .CLEAR ALL
            .SELECf 2
            .USE team
            .SELECf I
            .USE sched
            .JOIN WITH team TO result
                 FOR lane = 6 .AND.week= 3 .AND.;
                       tnumb = team ->tnumb;
                 FIELDS team ->captn
            .USE results
            .LIST OFF
            .USE
            .ERASE result
      Perbedaan mendasar dari kedua solusi bahwa JOIN dikerjakan secara eksplisit
didalam versi kedua, sedangkan dalam versi pertama JOIN dilakukan oleh sang
sekretaris.

                                                                              107
Padajawaban kedua, perintah CLEAR ALL digunakan untuk menghindarkan
    kesalahan ALIAS, yang mungkin timbul dalam pengaturan wilayah kerja 1 dan 2
    denR!nperimahpenRRabunRRn         S~L~:CT.(k~~RIRhRfl ~kRflrimhul ji~~ TEAM
                                                            ifli
    atau SCHED sudah digunakan pada masalah sebelumnya.) Perintah USE pada
    statement next-to-Iast pada file .dbf, yang baru dibentuk, sehingga dapat di ERASE
    tanpa kesalahan karena perintah berikutnya. Sebuah .dbf file tidak dapat dihapus jika
    sedang terbuka.

    MASALAH #8 :        Berapa banyak pin (tanpa handicap) yang dicapai Bill Black
                        pada akhir minggu ketiga ?"
          Semua informasi yang dibutuhkan untuk menjawab masalah ini dapat
    ditemukan dalam relasi SCORES, walaupun jawaban akan tampak rumit karena
    perhitungan aritmatika harus dilakukan dalam dan antara tuple. Jawaban dibuat
    agak simpel dengan penggunaan fungsi SUM:
          .USE scores
          .SUM gamel + game2 + game3 TO total;
          FOR bname = 'Bill Black' .AND. week ~ 3
          .? total
          Jawaban total   = 1381
    SandBaggers"
          Masalah ini paling mudah dijawab menggunakan perintah JOIN. (Pemakai
    harus berhati-hati, dengan penggunaan JOIN, sejumlah besar tuple tidak dalam
,   proses. Pada kasus terburuk,jika relasi dengan "m" tuple di JOIN dengan relasi "n"
    tuple, akan menghasilkan m kali n tuple.) Hasil yang diinginkan dari MASALAH
    #9 dapat dihasilkan dengan :
           .CLEAR ALL
           .SELECf 2
           .USE team
           .SELECf 2
           .USE bowler
          .JOIN WITH team TO result FOR team ~ tname =
                'SandBaggers'; .AND. tnumb <> team ~ tnumb FIELDS
                bowler ~ bname
          .USE res'ult
          .LIST OFF
          .USE
          .ERASE result
    Jawabannya akan berupa dua puluh nama.


    108
MASALAH #10 : "Selama minggu ketiga, bowler mana yang lebih baik dari Lisa
                   Moore pada seri tiga game (tanpa handicap)?"
    Masalah ini akan dijawab dalam dua langkah proses:langkah pertama untuk
menentukan nilai Lisa Moore pada minggu ketiga; langkah kedua untuk men-
emukan nama orang yang melampaui nilai Lisa Moore. Solusinya adalah:
     .CLEAR ALL
     .USE scores
     LIST OFF game1 + game2 + game3 FOR bname = Lisa Moore
          .AND. week = 3
      Hasil disini nilai tiga game adalah 332
      . LIST OFF bname FOR game 1 + game2 + game3 > 332;
            .AND week = 3
Hasil Akhir adalah daftar sembiIan belas nama.


           use score
           . list structure
     Structure for database          B:scores.dbf
     Number of data records          96
     Date of last update             OS/20/86

        Field      Field name     Type         Width         Dec
                                                         I
            1      BNAME          Character         15
            2      WEEK           Numeric            1
            3      GAMEl          Numeric            3
            4      GAME2          Numeric            3
            5      GAME3          Numeric            3

                    ** Total **                     26




                                                                       109
9.3        MENU UTAMA UNTUK PRAPEMROGRAMAN SOLUSI
           PERMASALAHAN
      Pada seksi terdahulu, dijelaskan solusi untuk beberapa masalah simpel.
Diasumsikan bahwa sekretaris bowling akan memasukkan perintah perintah untuk
jenis solusi ini langsung dari terminal. Begitu permasalahan menjadi lebih rumit,
urutan perintah-perintah yang diperlukan menjadi lebih panjang dan harus dimasuk-
kan langsung oleh sekretaris. Dalam kasus ini, daftar masalah yang potensial dapat
ditempatkan di menu dan menu ditampilkan pada terminal komputer. Jika sekretaris
ingin memilih salah satu masalah, program yang ditulis dalam bahasa pemro-
graman dBASE III akan menjawab permasalahan. Bagian berikut dari bab ini
menguji beberapa menu dalam detail. Masalah-masalah khusus yang ditempatkan
pada menu yang dianggap beralasan ,tetapi daftar permasalahan tidak melelahkan,
dan dapat Menu contoh, seperti yang dilihat sekretaris ketika menjalankan
program tampak pada gambar 9.5. Jalur utama modul program yang tampak pada
menu ini, dan menerima pilihan masalah, bernama "sdbmain.prg." Modul ini
ditunjukkan pada gambar 9.6. Setiap lima pilihan menu pertama menghasilkan
pelaksanaan dari modul program yang berbeda. Beberapa dari modul tingkat kedua
memanggil modullain untuk membuat tugas tertentu. Semua modul program yang
terlibatdalam penggunaan menu utama dibahas secara rinei pada bagian berikut pada
chapter ini.
       Logic yang terkandung dalam sdbmain.prg mengulang urutan berikutsampai
diambil pilihan "6" yang mengakhiri pelaksanaan.

      1.   Display the main menu
      2.   Wait for input Choice
      3.   If the choice was valid then
                  Transfer control to the appropriate program module
           Else
                  Print out an error message; delay for about two
                  seconds; and return to 2 above.
                  MONDA Y_NIGHT _IRREGULAR_BOWLING_LEAGUE_QUERY          _MENU
                  1 - DISPLA Y STATISTIC FOR AN INDIVIDUAL BOWLER
                  2 - DISPLA Y TOTAL PINS FOR EACH TEAM
                  3 - DISPLA Y TEAM STANDINGS
                    -
                  4 . DISPLAY SCHEDULE FOR A GIVEN WEEK
                  5 - GENERATE AN END-OF-SEASON REPORT
                  6 - RETURN TO DBASE III COMMAND LEVEL
                  Enter your choice


              Gambar 9.5 Menu utama untuk database sekretaris bowling


110
* lype dsdbmain.prg
*******************MAIN PROGRAM FOR SECRETARY'S DATABASE **
* Program name is "DSDBMAIN.PRG"
* Wriuen by Glenn A. Jackson"
* Oakland Universily Rocbesler, MI 48063
* Bowling leagues may use lhis program - allheir own disk
* CLEAR
SET TALK OFF
CLOSE DATABASE
SET DEFAULT TO B
PUBLIC mac_wk, bavg, hadkp, saveil
*
* Lisllhe query mend for lhe user and accepllhe nexl query
* choise
*
DO WHILE .l.
      CLEAR
      @ 5,IOSAY 'MOND.AYNIGHTIRREGULARS BOWLING LEAGUE QUERY MENU'
      @ 6,10 SAY '================================================='
      @ 9,10 SAY' 1 - DISPLAY STATISTICS FOR AN INDIVIDUAL BOWLER'
      @ 11,10 SAY' 2 - DISPLAY TOTAL PINS FOR EACH TEAM'
      @ 13,10 SAY' 3 - DISPLAY TEAM STANDINGS'
      @ 15,10 SAY' 4 - DISPLAY SCHEDULE FOR A GIVEN WEEK'
      @ 17,10 SAY' 5 - GENERATE AN END-OF-SEASON REPORT'
       @ 19,10 SAY' 6 - RETURN TO DBASE III COMMAND LEVEL'
       @ 22,10 SAY' Enler your choice' WAIT' , TO Choice
       DO CASE
              CASEChoice= 'I'
              STORE 'SDB' TO ECS_check
              DO b:bwlrsl CASE Choice = '2'
              DO b:leampns
              CASE Choice = '3.
              DO b:leamsld
              CASE Choice = '4'
              DO b:wkschdl
              CASE Choice = '5'
              DO b:eosrpl
            CASE Choice ='6' CLEAR CLOSE DATABASES
            @ 5,10 SAY 'THE SECRETARY'S DATABASE -AS BEEN CLOSED"
            @ 6,10 SAY'YOU ARE BEING RETURNED TODBASEIIICAMMAND LEVEL'
            SET DEFAULT TO A
            SET TALK ON
            RETURN
         OTHERWICE
            @ 22,10 SAY 'YOU HE ENTEREND AN INVAL IS EN1RY II!!!'
         DO b:delay
         ENDCASE
         CLOSE DATABASES
         ENDDO

             Gambar 9.6 Modul program utama untuk database sekretaris

                                                                        111
DELAY.PRG adalah Modul program pendek yang disebut SbdMain.prg,
sewaktu dua detik penundaan (2 second delay) dibutuhkan. Salinan (copy) dari
delay.prg akan diberikan pada figure 9.7. Program ini tidak melakukan apa-apa
melainkan penambahan pada sekitar alur berantai (loop) wktu secukupnya untuk
menggunakannya kira-kira 2 detik.
Sec. 9.4 Program Module BWLRST.PRG
       * type delay.prg
       ************ two second delay module ************
       *
       * Program module name is "delay.prg"
       * Wriuen by Glenn A. Jackson
       * Oarland, University, Rochester, MI 48063
       ...
       *
       ... This module gives an appronimaLe Lwo second delay before
       * returning to the calling program
       ...


       STORE 0 TO delay _ctr
       DO WHILE delay _ctr < 50
           STOREdelaY3tr + 1 to delay_ctr
       ENDDO
       RETURN

                    Gambar 9.7 Modul two-second delay delay.prg

9. 4         MODUL PROGRAM BWLRST. PRG
       Modul ini akan dipanggil oleh "SbdMain.prg" ketika menu utama menunjukan
yaitu "1 - DISPLAY STATISTICSFOR AN INDIVIDUAL BOWLER". Pelasanaan
dari hasHperhitungan modul dan hasil statistic terhadap akhir pemain Bowling dari
 1minggu yangdiberikan dalam suatumusim. Modul membutuhkan/meminta minggu
yang diinginkan untuk data statistik yang dibutuhkan dan nama pemain Bowling.
Modul akan mengecek untuk membuat yakin bahwa nama dan minggunya ke dua
merupakan nilai yang berlaku. Logika umum dari modul diuraikan dalam figure 9.8.
dan implimintasi Dbase III dijelaskan dalam Figure 9.9. Sedangkan hasil tipe daTi
modul akan ditemukan dalam Figure 9.10 (hal 121) ke 2 point ini berhubungan
dengan Bwlist.prg membutuhkan uraian lebih lanjut, perlakuan penama dengan ke
2-.nya("IF eos_check = 'SDB''') pemyataan itu yang timbul dari modulnya.
      "Blwrst.prg" dapat dipanggil daTi2 module program yang berbeda :
      "SdbMiiin.prg" dan "eosrpt.prg"
      Sewaktu "Bwlrst.prg" dipanggil daTi "SbdMain.prg", seluruh modul dapat
dijalankan. Sewaktu "Bwlrst.prg"dipanggil dari "eosprt.prg", sebagian besar daTi
logika modul terlongkap, sehingga diketahui nama dari pemain bowling dan minggu
yang ditetapkan dalam kasus yang akan datang.


112
Sebelum "Bwlrst.prg" dipanggil dari "SdbMain.prg", nilai dalam test "eos"
menentukan terhadap "SDB", disamping itu test "eos" menetukan terhadap "cos"
sebelum "blwrsp.prg" dipanggil dari "eosrpt.prg".
      Point ke 2 dari uraian perlakuan dari dua poin ini dengan perhitungan kega-
galannya (rintangan). Rintangan dapat dipastikan 3 atau 4 perbedaan antara rata-rata
yang berlaku dan 200dengan tanpa penghapusan tingkat rintangan. Rata-rata pemain
bowling dan rintangannya adalah bilangan bulat yang ditetapkan oleh TRUNCA-
TION, jika TRANCAnON tidak digunakan lagi dalam ke dua kasusnya maka
"League Standing" akan berfungsi.
      Implementing use Bowling Secretary's Database Using Dbase III. LOGIC IF
eos_check = 'SDB' WHEN BWLRST.PRG IS EXECUTED
1. Excecute findwk.prg to find the last week for written game scores have been
    entered into the SCORES relation. The value is returned as "sdb_wk"
2. Input the week of the season for which statistic are desired as "wk," and check the
    value for validity.
3. Input the name of the bowler whose statistics are desired "name," and check the
    value for validity.
4. For mach tuple in the SCORES relation in which the bname attribute value equals
    name, and the week attribute value is less than or equal to ~k :
    a. Check game 1, game2, and game3 to see if any have higher values than the
        current hi_game score; if so, save that value as hi_game;
    b. Check the sum of game1, game2, and game3 to see if the sumis higher than
        the current hi_series value; if sb, save the sum as hi_series;
    c. Add the sum of game 1, game2, and game3 to tocpins.
5.. Calculete this bowler's average and handicap and save then as "bavg" and
    "hndkp", respectively.
6. Output the results.
LOGIC IF eos_check = 'EOS' WHENBWLRST.PRG EXECUTED        IS
      Sections 1,2,3, and 6 above are skippec. Only sections 4 and 5 are executed.
Figure 9.8. General Logic for program module bwlrst. prg.

9. 5     MODUL PROGRAM TEAMPNS. PRG
       Modul ini akan dipanggil oleh "Sdbmain.prg" sewaktu menu utama memilih
yaitu "2 - DISPLAY TOTAL PIN'S FOR EACH TEAM". Modul program ini
memanggil "Findwk.prg" untuk menetukan minggu lalu untuk data yang masuk ke
dalam Relasi 'SCORE' dan kemudian menetukan hasil dan menampilkan jumlah
nomor dari "SCRATCN" untuk setiap TEAM. Sampel hasil dari "Teampns.prg"
diterangkan 9.11. dan logika umum untuk "teampns.prg" diterangkan dalam 9.12
kemudian modul itu sendiri nampak pada Figure 9.13 (haI122).


                                                                                  113
Sewaktu membuat beberapa "Join" dalam data base program, ketelitian harus
diusahakan untuk meyakinkan bahwa hasil dari "Join" akan menjadi hubungan yang
terlalu lebar untuk penempatan ruangan yang kosong dalam disket berlungsi dalam
"Join" yang digunakan "teampns.prg", TEMP 2 akan selalu mempunyai TUPLES.
              (3 games/week) * (4 bowlers/team) * (N week bowled)
       Jika itu merupakan minggu 4 season, N=4 tiap konstruksi dari Temp 2 akan
menghasilkan generasi dari 4 Tuples. "Teampns.prg" memanggil Findwk.prg untuk
menentukan season minggu yang lalu untuk yang sekornya telah dimasukan dalam
hubungan "Score". Modul ini diterngkan dalam Figure 9.14.logika dalam modul ini
membutuhkan 1 poin pengembangan.
       Tujuan dari modul adalah untuk menempatkan nilai atribut yang terbesar dalam
1minggu dari file database yang aktif, ini artinya bahwa hubungan (.dbf) yang dicapai
pasti merupakan priod yang aktif untuk menjalankan"Findwk.prg" selama hubungan
ke duanya yaitu "SCORE" dan "SCHED" mempunyai minggu sebagai atribut field.
Jika "Score" merupakan hubungan yang aktif, nilai minggunya menunjukan yaitu
"minggu lalu scorenya telah masuk ke dalam data base" sedang jika SCHED
merupakan hubungan aktif, nilai minggunya menunjukan yaitu minggu yang lalu
merupakan Bowling Season. "Findwk.prg" biasa digunakan untuk menunjukan
kedua dari nilai minggunya.




114
* type bwlrst.prg                   .
***********************************************************
* Procedure name is "bwlrs1.prg"
* Written by Glenn A. Jackson
* Oakland University, Rochester, MI48063
*
* This procedure calculates and outputs the following
* statistcs
* on and individual bowler; Hight-series, Hight-game, Total
* pins, average and handicap. All statistics include all
* games bowled to date.
*
* Procedure is called by sdbmain.prg
*
CLEAR
*
* Initialize running sum variables and counting variables
*
STORE 0 TO hi_series,tot_pins,hi~ame
STORE 1 TO CTR
SELECT 1
USE B:SCORES
*
* Run this next section of code only if called from the * main menu.
*
IF eos_check = 'SDB'
*
* Find last week for which score have been entered - as * man_ wk
*
DO b:findwk
*
     STORE' 'TO wk
     DO WHILE .1.
     @ 7,15 SAY 'IF YOU WISH THE STATISTICS FOR THE SEASON TO DATE'
     @ 8,15 SAY 'ENTER '+STR(max_wk,2)+;
                " THE LAST WEEK FOR WHICH DATA WERE ENTERED'
     @ 9,15 SAY 'OTHERWISE, ENTER THE WEEK DESIRED'
     @ 11,15 GET wk
     READ
     IF val(wk) > max_wk .OR. val(wk) < 1
                @ 15,10 SAY 'THE WEEK INPUT IS INVALID !!!'
                DO b:delay
                STORE' , TO wk
                CLEAR
                ELSE
                CLEAR
                EXIT
                ENDIF
*
ENDDO
* Enter the bowler's name and make certain it is valid
*
STORE '             , TO name
*

       Gambar 9.9 (a) Bagian penama dari modul program bwlrst.prg.

                                                                       115
DO WHILE .t.
           @ 7,20 SAY' ENTER THE BOWLER'S NAME. e.g Joe Jones'
           @ 8,20 GET name
      READ
      COUNT FOR bname =name TO check
      IF check = 0
                @ 12,20 SAY 'THE NAME ENTERED IS NOT IN THE DATABASE'
                @ 13,20 SAY 'CHECK IT AND RE-ENTER'
                DO b:delay
      STORE'         , TO name
      CLEAR
      ELSE
      EXIT
      ENDIF
      ENDDO
      ENDIF
      *
      GOTO TOP
      DO WHILE ctr <= val(wk)
      LOCATE FOR bname = name .AND, week=ctr
      IF gamel > hi~ame
      STORE gamel TO hi~ame
      ENDIF
      IF game2 > hi~ame
      STORE game2 TO hi~ame
      ENDIF
      IF game3 > hi~ame
      STORE game3 TO hi~ame
      ENDIF
  _   STOREgamel + game2+ game3TO tot3
      STORE tot-pins + tot3 TO tot_pins
      IF tot3 > hi_series
      STORE tot3 TO hi_series
      ENDIF
      STORE ctr + 1TO ctr
      ENDDO
      *
      STORE INT(tot-pins/(val(wk)*3) TO bavg
      IF bavg < 200
      STOREINT«2oo - bavg)* 0.75) TO Imdkp
      .FO                  #
      ELSE
      STORE 0 TO lu1dkp
      ENDIF
      *
      * DO THIS SECTION ONLY IF CALLED FROM MAIN MENU
      *
      IF cos_check = 'SDB'
      CLEAR
      @ 7,20 SAY 'STATISTICS FOR' + TRIM(bname) +' THI,m WEEK' + wk
      @ 8,20 SAY '====================================='
      @ 10,20 SAY 'A VERAGE PINS PER GAME: '+ STR(bavg,3)
      @ 12,20 SAY 'TOTAL PINS - WITHOUT HANDICAP: '+STR(tot-pins,4)
      @ 14,20 SAY 'HIGH GAME SCORE TO DATE: '+STR(hi~ame,3)
      @ 16,20 SAY 'HIGH SERIES TO DATE: '+SRT(hi~ame,3)
      @ 18,20 SAY 'CURRENT HANDICAP: '+STR(hndkp,3)
      @ 22,20 SAY

116
WAIT
    CLEAR
    ENDIF
    RETURN

        Gambar 9.9 (b) Penggalan keduan dari modul program bwlrst.prg

STATISTICS FOR JEAN Adams THRU WEEK 3
    AVERAGE PINS PER GAME: 1 : 7
    TOTAL PINS - WITHOUT HANDICAP: 105
    HIGH GAME SCORE TO DATE: 134
    HIGH SERIES TO DATE: 381
    CURRENT HANDICAP: 62
      Gambar9.IO. Macam kelua~alldari pelaksanaan menu utama pilih "1"

                 TOTAL SCRATCH PINS TROUGH WEEK 4

           TEAM NO.          TEAM NAME              TOTAL PINS
                 1.          AlIeyCats                 6257
                 2.          Inconsistens              6172
                 3.          TenPins                   6147
                 4.          HiRollers                 6798
                 5.          Splitters                 6580
                 6.          SandBaggers               6534

  Gambar 9.11 Contoh keluaran dari pelaksanaan modul program teampns.prg.
1. Execute findwk.prg to determine the last week for which score have been entered
   into the SCORES relation.
2. Output the header for the data that will be output, below.
3. For each team (using the variable "err" as both team number and loop counter),
   DO the following :
   a. JOIN the SCORE and BOWLER relations, where bowler -> tnumb = the
       selected team number and bowler -> bname = score -> bname to form a new
       relation, TEMP2, keeping only the game, game2, and game3 attributes
       (FIELDs). TEMP2 will hold all the game score for one team through the cur-
       rent week in the seson.
   b. Use the TEAM relation to determins the name of the team being evaluated
      using the team number as the identifying value. Save the name as "name",
   c. Use the TEAM relation to sum the game score for this team, and output the
      total team pins.

                                                                               117
d. ERASE the temporary relation temp2.dbf from the database.
   e. Increment the team number (ctr) to the next value.
          Gambar 9.12 Logik umum untuk modul program teampns.prg
Implementing the Bowling Secretary's Database using dBASE III
   · type
        te8J11pns.prg                                                      ...
      · Procedure name is "te8J11pns.prg"
      · Written by Glenn A. Jackson
      · Oakland. University. Rochester. MI 48063
      .
      · This procedure prints out the total number of wcratcn pinsfor
      · for aan tean for the season to data.
      .
      · procedure is called by adbmaim.prg
      .
      CLEAR
      CLOSE DATABASES
      SELECT I
      USE b:bowler
      SELECT 2
      USE b:icores
      . Find last week for which scores have been entered -return as
      · max_wk
      DO b:findwk
      .
      · Print out the header for the ouput data.
      .
      @     5,20   SAY 'TOTAL SCRETCH PINS THROUGH WEEK'+ STR(max_wk.3)
      @     6,20   SAY '================================'
      @     7,20   SAY 'TEAM NO. TEAM NAME TOTAL PINS
      @     8,20   SAY
      .
      · CALCULATE       AND PRINT OUT THE DATA
      .
      STORE' , TO ctr
      DO WHILE ctr <= 6
          SELL POINTER
          JOIN WITH     scoreS TO b:temp2 FOR tnumb =etr .AND. ;
                        score = score -> bname FIELD gamel,game2,g8J11e3
      SELECT 2
      USE b:te8J11
      LOCATE FOR tnumb =ctr
      STORE tname TO name
      SELECT 4
      USE b:temp2
      SUM g8J11el, 8J11e2.
                  g      game3 TO gml, gm2, gm3
      @ 9+ctr, 20 SAY STR(ctr,4)+' '+name+' '+STR(gml+gm2+gm3)
      USE
      ERASE b:te8J11p2.dbf
      STORE etr+1 TO etr
      ENDDO
      @ 22,10 SAY' ,
      WAIT
      RETURN
                            Gambar 9.13 Modul program teampns.prg

118
type findwk.prg
************************              FINDWK.PRG     ****************************
*
*Module name is "findwk.prg"
*Written by Glenn A. Jackson
*Oakland University, Rochester,               MI 48063
*
*This module determines the largest week value that has been
*entered in the week attribute field in either the
*scores.dbf or sched.dbf relation.  The module assumes that
*either scores.dbf or sched.dbf is the active database when
*the module is executed.
*
*Called by the following modules:
* bwlrst.prg, teampns.prg, teamstd.prg,                     wkschdl.prg     and eosrpt.prg
*
*The highest         week value   is returned        as the integer        variable:   max_wk
*
@ 10,15 SAY "MAKING   SOME            CALCULATIONS     --    DON'T   GO   AWAY   !II
ma~:_wk = 0
GOTO TOP
DO WHILE  .NOT. EOF()
    IF week    > ma>:._wk
       ma>:_._wk   = week
  ENDIF
  SKIP
ENDDO
*
CLEAR
RETURN


                        Figure 9.14    The program module findwk.prg.




9. 6       MODUL PROGRAM WKSCHDL.PRG
      Modul program ini adalah sdbmain.prg pilih menu dari utama adalah 4 -
DISPLAY SCHEDULE FOR A GIVEN WEEK". Pelaksanaan dari modlil ini'
menghasilkan keluaran dari suatu tabel yang memberikan nama-nama team, danjalur
untuk setiap team yang ditugaskan, untuk minggu dalam suatu I1Jusimpenandingan.
Modul permintaan minggu yang diinginkan sebagai suatu input, simpan nilai ini
sebagai "inval," dan memperbaiki harga input adalah valid, sebelumnya.
      Satu macam keluaran dari pelaksanaan dari modul ini diberikan pada Gambar
9.15. Logikpadamoduldiberikan padaGambar9.16,dan modul sendiridi pelihatkan
pada Gambar 9.17.
      Penerapan utama adalah JOIN yang membuat relasi sementara, TEMPI.
Dalam kasus ini, relasi TEAM dan SCHED serra attribut tnumb, maka nama team
dapat digunakan dalam output, dari pada nomor team.


                                                                                          119
THE SCHEDULE     FOR WEEK NUMBER     2

 IIIIIIIIIIIIIII.IIUIIW~M'.~~..
 T-EAM                   LANE NUMBER
                         -----------
 AlleyCats                        4
 Inconsistents                    5
 TenPins                          2
 HiRollers                        6
 Spli tters                       1
 SandBagger.                      3




 Gambar 9.15 Keluaran dari modul program wkschdl.prg




1.    Execute findwk.prg to find the last week in the
      s   on. Th. la.t week v..luei. returned ... "max_wk."
      (Note th..tthe SCHED relation is pl..cedinto USE
      prior to the calling of findwk.prg, so that SCHED
      ia the rel..tionaeached by findwk.prg.)
2.    Input.. v..lue   for the week for which the .chedule is
      de.ir.d,   a. "inv..l," ..nd v.rify th..t the week
      reque.ted   i. a v..lid one. Rep...tthis process
      until the we.k is     v..lid.
3.    JOIN the TEAM ..nd SCHED relations where sch~d->week   =
      inval, and .ched-)tnumb = team-)tnumb, to form a
      new rel..tion, TEMP1, keeping only the tname and
      lane attributes.

4.    Output   the data header.

5.    Output the tname ..nd lane values from TEMP1.
6.    ERASE the TEMP1 relation from the database.



Gambar 9.16 Logik umum untuk modul program wkschdl.prg




120
.    type wkschdl.prg
******************************************************************
*
*Proc:edure name is "wkschdl.prg"
*Written by Glenn A. Jackson
*Oakland University,    Rochester,  HI 48()b3
*
*This procedure prints out the schedule far a given week.
*
*Input is the week of the season for which the schedule is *desired.
*Output is the schedule giving team name and lane aS3iqnment.
*
*Procedure is called by sdbmain.prq
*
*
CLEAR
CLOSE  DATABASES
SELECT   1
USE b:sched
STORE                 TO inval
*
*Find       last week        in the season      -- value    returned         as max_wk
*
DO      b:findwk
*
DO WHILE           . t.
       ~ 7,10 SAY 'ENTER WEEK FOR WHICH SCHEDULE IS DESIRED'
       ~ 9,10 SAY 'ONLYVALUES BETWEEN 1 AND '+ STR(max_wk,2) + ' ALLOWED'
       . 11,10 GET inval
       READ
       IF VAL(inval).> max_wk .OR. VAL(inval) ( t
          ~ 15,10 SAY 'THE WEEK INPUT IS INVALID !~,o0'
          DO b:delay
          STORE    'TO inval
          CLEAR
       ELSE
          EXIT
       ENDIF
    ENDDO
    *
    ~ 15,10 SAY           'PLEASE WAIT       CALCULATIONS         BEING   MADE!!       0'

    SELECT    2
    USE team
    SELECT    sched
    JOIN   WITH   team    TO    b:templ   FOR    week  = VAL (in val) .AND. ;
                    tnumb      = team-}tnumb      FIELDS  team-~tname,    lane
    *
    *Output    the schedule        to the    screen
    *
    CLEAR
    (i5,10 SAY                  THE SCHEDULE FOR WEEK NUMBER                 '+    inval
    . 6,10 SAY                  =============================='
             SAY                TEAM                       LANE    NUMBER'
    (jI 7,10
    @ 8,10 SAY
                                                           -----------
    *
    SELECT 3
    USE b:templ
    GOTO TOP
    STORE 9 TO linene
    DO WHILE .NOT. EOF()
        8 linene,10 SAY'                        + tname   + '                     '+ STR<lane,2)
        STORE lineno+l TO linene
        SKIP
    ENDDO
    822,10SAY'
    WAIT
     CLEAR
     CLOSE DATABASES
    ERASE bltempl.dbf
     RETURN

                          Gambar 9.17 Modul program wkschdl.prg

                                                                                                   121
9.7      MODUL PROGRAM EOSRPT.PRG
       Modul program ini adalahsdbmain.prg jika dari menu utama dipilih "5-
GENERATE AN END-OF-SEASON REPORT." Pelaksanaan dari modul ini
menghasilkan penentuan dan keluaran dari nama-nama dari pemain yaitu (1) skor
tertinggi pertandingan tunggal, (2) rangkaian 3-pertandingan, dan (3) rata-rata
tertinggi pada akhir musim pertandingan.
       Keluaran dari modul ini untuk data dalam database diberikan pada Gambar
9.18. Logik pada modul tersebut diberikan dalam Gambar 9.19, dan modulnya
sendiri diperlihatkan dalam Gambar 9.20.
       Suatu keistimewaan yang luar biasa dari eosrpt.prg adalah nama-nama dari
pemain yang 'llemiliki skor tertinggi yang sarna dan memberikan kategori yang
aman. Nama-nama dari pemain dengan skor tertinggi pada kategori yang diberikan
tersimpan dalam suatu relasi unary berhubungan dengan kategori. Nama-nama
inikhususnya dibuat relasi HIGHGAM, HIGHSER, dan HIGHAVG. Relasi-relasi
unary karena setiap relasi hanya memiliki satu atribut, bname. Setiap skor pemain
dinalisa, jika skomya ditemukan sarna dengan satu nilai yang tertinggi yaitu nama
pemein adalah relasi yang diijinkan APPEND. Jika skor pemain lebih tinggi dari
harga yang diperkirakan, relasi ZAP menghilangkan harga lama dan nama barn di
APPEND. Ketiga relasi ini harus diciptakan sebelum program dilaksanakan, tetapJ
setiap relasi selalu anggota ketika pelaksanaan dari eosrpLprg dimulai. Semua tupelo-
tupel ERASE dari tiga relasi sebelum eosrpLprg di hentikan. Setelah dihapus, isi dari
setiap relasi adalah output menggunakan suatu modul program pendek yaitu out.prg.
Suatu listing program fileouLprg dan struktur yang pasti untuk setiap relasi-relasi
khusus yang yang diberikan pada akhir bab.



                     END-OF-SEASON   REPORT


                HIGHEST SINGLE GAME SCORE OF 202
                WAS BOWLED BY THE FOLLOWING BOWLERCS).
                          Roy Lan.
                          Paul Mille,..
                          Rua..el Taylo,..

                HIGHEST THREE GAME SERIES OF ~~9
                WAS BOWLED BY THE FOLLOWING BOWLERCS)I
                          Roy Lane
                          Paul Mille,..

                 HIGHEST SEASON PER GAME AVERAGE OF 179
                 WAS BOWLED BY THE FOLLOWING BOWLERCS).
                           Paul Mill.,..




Gambar 9)8 Keluaran dari eosrpLprg untuk data pada contoh data base

122
1.    EMecute proljlr.m modul. f.i ndwk. prg to determi n. tt8 l..t
                 week in the bowlinljl      on. The l..t    week v.lue i.
                 returned    ..   "maK_wk."

           2.    Initi.lize  pertinent     v.ri.ble..
           3.    DO the followinljl 10ljlic .. long ..           there    ar.   tuple.
                 left in the BOWLER    r.l.tion.
                 a)   Save the bname value         from   the   current    bowler
                      tuple in "n.me.'1
                 b) EMecute program module bwlrst.prg        (after setting
                    variable eos_check to 'EOS') to determine the
                    high.st single game score, highest three-game
                    series scare, and the end-of-s.ason        average for
                    this one bowler.       These   values are returned in
                    vari.bles IIhi_game,1I       "hi_series," and IIbavg,1I
                    respectiv.ly.
                 c) The highest single game score f~r    all  bowlers    is
                      stored in "best_game" I thus, if hi_game>     best_game,
                      save hi_game as best_game, and ..ave the bowler's
                      name in HIGHGAM after eliminating previous names.
                      If hi_game    =
                                    b~t_game, save the bowler's name
                      in HIGHGAM.
                      The highest three game series score for all
                      bowlers is stored in "best_series";     thus
                      if hi_series>   best_series,  save hi_series as
                      b.st_seri.s,  and save the bowler's name in
                      HIGHSER after eliminating previous names.    If
                      hi_series a best_series,   save the bowler's name
                      in HIGHSER.
                      The highest av.rage for all bowlers is stored in
                      "best_avg"1 thus if bavg > best_.vg, save bavg a.
                      best_avg, and .ave the bowler's name in HIGHAVG
                      .fter eliminating previous names.   If bavg >
                      best_avg, save the bowler's name in HIGHAVG.
            4.    Output    the final    values.

           Gambar 9.19 Logik umum dari modul program eosrpt.prg

9. 8    MODUL PROGRAM TEAMSTD.PRG.
       Modul sdbmain.prgjikadipilih dari menu utama"3-DISPLAYTEAM STAND-
INGS." Pelaksanaan dari modul ini menghasilkan keluaran record menang-kalah
dari setiap team untuk satu minggu pada musim pertandingan. Modul dimulai dengan
permintaan minggu dari musim pertandingan dimana kedudukan yang diinginkan.
Setelah memastikan minggu yang di input adalah sah/valid, program menghitung
record menang-kalah untuk setiap team dan mencetak kedudukan dalam bentuk
tabular. lumlah lencana untuk setiap tern juga merupakan keluaran.
       Gambar9.21 memperlihatkan kedudukan team pada akhirminggu kedua untuk
data yang tersimpan pada contoh database. Gambar 9.22 memberikan logik umum
dari modul, ketika Gambar 9.23 memperlihatkan modul yang sebenarnya. Modul
program ini jauh lebih rumit dalam penerapan, dan membutuhkim waktu untuk
pelaksanaan. Perkiraan waktu yang dibutuhkan untuk menghitung kedudukan
minggu pertama adalah 4 menit, ketika waktu yang dibutuhkan untuk menghitung
kedudukan untuk minggu keempat adalah 12menit. Alasan untuk peningkatan pada
waktu antara minggu pertama dan minggu ke empat adalah ringkasan data tidak
disimpan satu minggu berikutnya. Maka pada suatu perintah untuk mnghitung

                                                                                         123
type .o.rpt.prg
****************************************************************
*Proc.dur. n.m. i. ".o.rpt.prg".
*Written    by al.nn   A.   Jack.an
*O.kland Univ.r.ity, Roch..t.r, MI 48063
*
*This proc.dur. c.lcul.t.. .nd print~ out the .nd-of                       on
* r.port.
*Proc.dur. i. c.ll.d by .dbm.in.prg.
*This proc.dur. c.ll. bwlr.t.prg
*
CLEAR
*80m. data will b. r.turn.d from "bwlr.t.prg" u.ing PUBLIC
* v.riabl...
PUBLIC nam., hi_..ri.., hi_g.m., b.vg, .o._ch.ck, fn.m., wk
*
. ~,10 SAY 'BE PATIENT -- THIS WILL TAKE SOME TIME-!!!!!'
*
SELECT 2
USE bl.ch.d
*
*Find la.t w..k in the                on -- v.lu. r.turn.d a. maK_wk.
*
DO blfindwk
*
SELECT :5
USE blbowl.r
aOTO TOP
STORE 0 TO b..t_..ri.., b..t_gam., b..t_avg
SET SAFETY OFF
DO WHILE .NOT. EOF()
  STORE bn.m. TO n.m.
  STORE STR(maK_wk,2) TO wk
  STORE 'EOS' TO .o._ch.ck
  DO blbwlr.t
  SELECT 4
 *
      IF hi_g.m. > b..t_g.m.
        STORE hi_game TO b..t_g.m.
        USE blhighg.m
        ZAP
        APPEND BLANK
        REPLACE bn.m. WITH n.m.
        USE
      ELSE
        IF hi_g.m. ·
        USE blhighg.m
                      b..t_g...

        APPEND BLANK
        REPLACE bn.m. WITH n.m.
        USE
        ENDIF
      ENDIF
    *
     IF hi_..ri..- > b..t_..ri..
        STORE hi_..ri.. TO b..t_..ri..
        USE blhigh..r
        ZAP
        APPEND BLANK
        REPLACE bn.m. WITH name
        USE
      ELSE

                Figure 9.10 (a) First half of program module eosrpt.prg.

124
IF hi_..ri..       - b..t_..ri..
      USE blhi;h..r
      APPEND BLANK
      REPLACE bn.m. WITH n.m.
      USE
      ENDIF
    ENDIF
*
    IF b.v;   > b..t_.v;
      STORE b.vg TO b~.t_.vg
      USE blhigh.v;
      ZAP
      APPEND BLANK
      REPLACE bn.m. WITH n.m.
      USE
    ELSE
      IF b.vg - b..t_.vg
      USE blhigh.vg
      APPEND BLANK
      REPLACE bnam. WITH name
      UBE
      END IF
    ENDIF
*
  SELECT bowler
  SKIP
ENDDO
*Print out h..d.r for .nd-of                 on output
*
(I~,2~ SAY 'END-OF-BEASON REPORT'
(I6,2~ SAy......................
(I8,20 SAY 'HIGHESTSINGLE GAME SCORE OF                     + STR(b..t_g.m.,3)
(I9,20 SAY 'WAS BOWLED BY THE FOLLOWING BOWLER(S)I
STORE "blhighg.m" TO fn.m.
                                                        .
                                                                    .
DO blflleout
*
. ROW()+2,20 SAY 'HIGHESTTHREE GAME SERIES OF
(IROW()+1,20 SAY
                                                 + STR(b..t_..ri..,3)
                                                                .

                           'WAS BOWLED BY THE FOLLOWING BDWLER(S)I             .

STORE "blhigh&er" TO fn.m.
DO blHl.out
*
. ROW()+2,20 BAY 'HIGHEST SEASON PER GAME AVERAGE OF
(I ROW () +1 ,20
             SAY
                                                        + STR(b..t_.vg,3)
                  WAS BOWLED BY THE FOLLOWING BOWLER (S).I
                           .
                                                                        .




STORE "blhigh.vg" TO fn.m.
DO blHl.out
*
(I 24,20 SAY       .

WAIT
SET SAFETY ON
RETURN

B>

                   Figure 9.10 (b) Second half of program module eosrpt.prg.

                                                                                   125
kedudukan minggu keempat, kedudukan untuk minggu pertama, kedua dan tiga hams
dihitung kembali. Kenyataan ini adalah hasillangsung dari rancangan keputusan,
dibuat pada bab 5, tidak menyimpan data pada database dapat menghitung dari atribut
yang lain dalam database. Mengingat besarnya nilai waktu yang terlibat, rancangan
keputusan hams tidak meragukan untuk dievaluasi kembali. (Dapat memakan waktu
sekitar satu jam untuk menghitung kedudukan dalam waktu 15 minggu). Beberapa
usul untuk penyusunan waktu pelaksanaan dibahas pada akhir bab ini.
       Teamstd.prg penggunaan relasi 'extra' permanen yang lain, T_STATS, bukan
bagian dari rancangan database yang sebenarnya. Telasi ini memiliki 4 atribut:
tnumb, wins, losses, dan totpins. Ketika relasi ini dibentuk, harga tnumb di set 1
sampai dengan 6,jumlah team dalam liga (persatuan), dan s~muaharga-harga atribut
lain adalah no1.Semua harga-harga atribut, kecuali tnumbdi setkembali menjadi nol
sebelum pelaksanaan program teamstd.prg dihentikan.
       T_STATS selalu memiliki 6 tupel, satu untuk setiap team dalam perkumpulan
(liga), dengan tnumb sebagai kunci primer. Perkembangan pelaksanaan dari
teamstd.prg, membuat perhitungan berdasarkan pada minggu demi satu minggu dan
team demi team. harga-harga pada T_STATS disesuaikan.




                     MONDAY   NtBHT    IRREGULARS   BOWLING   LEAGUE
                TEAM STANDINGS AT THE END OF WEEK NUMBER               2
                ===========================================

       TEAM NAME                WINS           LOSSES            TOTAL PINS
       ---------                ----           ------            ----------
      All.yCts                 :5.0                  3.0               3106
      Inconsistents            2.0                   6.0               3038
      TenPins                  1.0                   7.0               3019
      HiRollers                7.0                   1.0               3358
      Sp 11 t ters             6.5                   1.5               3225
      SndBaggers               2.5                   5.5               3181



      Gambar 9.21 Kedudukan team pada akhir minggu kedua, keluaran dari
                  teamstd.prg




126
1.   Execute findwk.prg to determine the last week for which
     scores have been entered into the SCORES relation. The
     last week value is returned as "max_wk."
2.   Input the value of the week for which standings are
     desired, as "in_wk," and verify that the week requested
     is valid. Repeat this proc.ss until a valid value of
     in_wk has been entered.
3.   For each lane (noted as In), DO the following for each
     week (noted as wk):
      a) JOIN the SCHED and BOWLER relations where
        sched-)week = wk, sched-)lane = In and
        sched-)tnumb = bowler-)tnumb,  to form a new relation,
        NAMES, keeping only the bname, tnumb, and stavg
        attributes.   (NAMES will hold the names of all bowlers
        from the team that bowled on a given lane on a given
        week in the season.)

     b) For each bowler,    whose name appears     in NAMES,   DO the
        following:
         Locate   the tuple in SCORES   for this bowler   and this week,
         Determine   this bowler's   handicap   for this weekl
         Add this bowler's individual game scores to the team
         totals for each game (including the current handicap).
         The code used here iSI BIA is the total pins for gamel
         for the team on an odd-numbered lane, while GIB is
         the total pins for gamel for the team on the opponent's
         even-numbered  lane. B2A, G3A, G2B, and G3B 'have
         similar meaning.
         REPLACE totpins in T_STATS with the old value
         of totpins plus the sum of this bowler's
         three game scores (without handicap).
         Adjust the won and lost records for the last two
         teams analyzed.    The coding here is that the team on
         the odd-numbered   lane has its identifiers ending with
         "A," 0   "a," while the team on the even-numbe ed lane'
         has identifie s that end in "B," or "b."

4.   JOIN the T_STATS and TEAM elations whe e t_stats-)tnumb
     = team-)tnumb to fo m a new elation, STATS, keeping only
     the wins, losses, tname~ and totpins att ibutes.
5.   Output the league standings f om STATS.
6.   ERASE STATS and ze o-out the app op iate att ibutes
     in T_STATS.

         Gambar 9.22 Logik umum untuk modul program teamstd.prg.




                                                                           127
9.9      STRUKTUR DARI RELASI SEMENTARA
       Modul program eosrpt.prg dan teamstd.prg menggunakan beberapa relasi yang
bukan bagian dari database yang dirancang. Relasi-relasi ini ditentukan sebagai
relasi-relasi sementara (temporary relations), karena mereka mengandung arti
hanya selama pelasanaan dari modul program yang diberikan. Isinya adalah kelanju-
tan dari pembuatan (created) dan penghilangan (destroyed), dan isinya tidak sah suatu
modul program digunakan untuk menghentikan pelaksanaan program.


           ...................................-...........-.............
           B>type     team.td.prQ

           *Pracedu... name         i.
           *Wrltten by Barbara A. HacNell
                                         IIt..matd.prg"

           *Hodlfled by Glenn A. Jackson
           *Oakland University, Rochester, HI 4BObJ
           *
           *Thl. procedure          calculate.     and print. out the leaQue .tandlnQ.
           * for any week.           The week     I. Input from the terminal.
           *
           *ProcedureI. called by .dbmaln.prQ
           *
           *Thl. procedure   u.e. several temporary   relation.               to .tore
           * Intermediate   data required  In the calculation..                 These
           * relations   ar. dl.cu...d  In Section 9....


           .
           *
           .Thl.

           CLEAR
           SELECT
                     procedure


                     1
                                    call.    blhndkp_avQ.prQ




           USE   b..cor..
           SELECT    2
           USE   blbowler
           SELECT    J
           USE b.t .tat. INDEX b.numb
           SELECT 4
           USE     b..ched
           SELECT':5
           USE blteam

           .
           -
           _Find l..t w..k for which              scor..       have b..n entered   -- ..   mAH_wk



           .
           SELECT .Cores
           DO blfindwk

           -Enter the w.ek for which the standlnQ. ar. de.Ired -- a. In_wk.
           -
           STORE'      TO in wk
           DO WHILE .t.      -
             . 7,1:5SAY 'IF YOU WISH THE LEAGUE STANDINGS FOR THE SEASON TO DATE'
             . B,I:5SAY 'ENTER '+STRlmax_wk,2)+ ,
                     " THE LAST WEEK FOR WHICH DATA WERE ENTERED'
               .
               9,1:5SAY 'OTHERWISE, ENTER THE WEEK DESIRED.'
               .
               11,1:5GET In wk
             READ            -
             IF VALlIn_wk)   > max_wk .OR. VALlln_wk) ( I
               . 1:5,10SAY 'THE WEEK INPUT IS INVALID! '!!'
               DO bldelay
               STORE'     'TO In_wk
               CLEAR
             ELSE
               CLEAR
               EXIT
             ENDIF
           ENDDO
           -
           -Calculat.        team standlnQs for w..ks 1 thru In_wk.
           -
           STORE 0 TO GIA,G2A,GJA,G1B,G2B,GJB
           STORE 1 TO In,wk


                      Gambar 9.23 (a) modul program teamstd.prg (1)

128
DO WHILE wk <- VALCin_wk)
  SELECT .ch.d
  JOIN WITH bow1.r TO blnam.. FOR w..k-wk .AND. 1an.-ln .AND.,
    tnumb-bow1.r->tnumb FIELDS bowl.r-)bnam., tnumb. .tavQ
  SELECT 6
  USE blnam..
  SELECT t_.tat.
  SEEK name.->tnumb
  SELECT name.
  DO WHILE .NOT. EOFC)
    SELECT .core.
    LOCATE FOR bnam.-nam..-)bnam. .AND. w..k-wk
    IF wk-1
      IF name.-).tavQ < 200
          STORE INTCC200-nam..-).tavQ)*0.7~) TO hndkp
      ELSE
          STORE 0 TO hndkp
      ENDIF
    ELSE
      STORE bname TO ha_name
      STORE wk-1 TO ha_week
      DO blhndkp_av'ij
    ENDIF
    IF 1n-1 .OR. 1n-3 .OR. 1n-~
      STORE game1+hndkp+G1A TO G1A
      STORE Qame2+hndkp+G2A TO G2A
      STORE gam.3+hndkp+G3A TO G3A
    ELSE
      STORE 'ijame1+hndkp+G1B TO G1B
      STORE game2+hndkp+G2B   TO G2B
      STORE 'ijame3+hndkp+G3B TO G3B
    ENDIF
    SELECT t_stats
    REPLACE totpins WITH ,
      totpin.+.core.->Qam.1+.cor..->Qam.2+.core.->gam.3
    SELECT nam..'
      SKIP
    ENDDO
*
    IF In-2 .OR. 1n-4 .OR. 1n-6
      GOTO TOP
      STORE tnumb TO t.amb
      SELECT t_.tat.
      STORE 1 TO count
      DO WHILE count < 4
        STORE "G" + STRCcount,1) + "A" TO gamea
        STORE "S" + STRCcount,1) + "B" TO gam.b
        IF ~Qam.a < ~gam.b
          REPLACE win. WITH win.+1 FOR tnumb-t.amb
          REPLACE 10       WITH + 10    +1 FOR tnumb-t.ama
        ELSE
          IF ~gam.a > ~Qam.b
             REPLACE. win. WITH win.+1 FOR tnumb-t.ama
             REPLACE 10      WITH 10     + 1 FOR tnumb-t.amb
          ELSE
             REPLACE win. WITH win. + O.~, 10      WITH,
              10      + o.~ FOR tnumb-t.ama .OR. tnumb-t..mb
          END IF
        ENDIF
        STORE count + 1 TO ~ount
      ENDDO

             Gambar 9.23 (b) modul program teamstd.prg (2)
                                                                 129
*
           IF GIA + G2A + G3A < GIB + G2B + G3B
             REPLACE wins WITH win. + 1 FOR tnumb=te.mb
             REPLACE 10      WITH 10      + t F'OR tnumb=teama
           ELSE
              IF GIA + G2A + G3A > GIB + G2B + G38
                REPLACE win. WITH win. + 1 FOR tnumb=teama
                REPLACE 10sse. WITH 10&&&s + 1 FOR tnumb=teamb
             ELSE
                REPLACE wins WITH win. + o.~, 10..es WITH I
                 10     + o.~ FOR tnumb-t..m. .OR. tnumb=t..mb
             ENDIF
           ENDIF
           STORE ° TO GIA,G~A,G3A,GIB,G2B,G3B
        ELSE
           GOTO TOP
           STORE tnumb TO teama
        ENDIF
         IF 1n .. b
           STORE 1 TO In
           STORE wk + 1 TO wk
         ELSE
           STORE 1n + 1 TO 1n
         ENDIF
         SELECT n.mes
         USE
         ERASE b:n.mes.dbf
      ENDDD.
      SELECT t_st.t.
      JOIN WITH team TO b:stat. FOR tnumb=te.m->tnumb
         FIELDS win.,10      ,tn.me,totpln.
      SELECT 7
      USE b:st.ts
      (t 5,10 SAY             MONDAY NIGHT IRREGULARS BOWLING LEAGUE'
      (I 6,10 SAY'         TEAM STANDINGS AT THE END OF WEEK NUMBER '
      " 7,10 SAY ,            ===========================================1
      (I 9,10  SAY      TEAM NAME         WINS         LOSSES        TOTAL    PINS'
      (I 10,10 SAY'     ---------                      ------          ----------.
      *
      DO WHILE .NOT. EOF()
        (tROW()+1,10 SAY tname +' '+STR(wins,4,1)+ '                      '+
            STR(10s.e.,4,1)+'        '+ STR(totpins,5)
        SKIP
      ENDDO
      SELECT st.ts
      USE
      ERASE blstat..dbf
      SELECT t._.tat.
      REPLACE ALL win. WITH 0, 10s.e. WITH 0, totpins WITH °
      *
      (I 22,10   SAY
      WAIT
      RETURN

      B>

                       Gambar 9.23 (c) modul program teamstd,prg (3)




130
Gambar 9.24 memperlihatkan struktur untuk tiga relasi-relasi semantara yang
tidak memiliki populasi (kosong)kecuali selamapelaksanaan darieosrpt.prg. Gambar
9.25 diberikan strukturdari T_STATS, dan isi dari T_STAT akan ditampilkan pada
awal dan akhir pelaksanaan dari teampns.prg.




     .
     .    use
         list
                highgam
                 structure
     structure         for  database:          B:highgam.dbf
     Number      of data      records      I            0
     Date      of last     update          : 11/03/86
     Field       Field     name      Type              Width    Dec
              1 BNAME                Character             15
     ** Total        **                                    16
                                       (a)


      .   use    highser
      .   list     structure
     Structure       for database        I Blhighser.dbf
     Number    of data      records      I          0
     Date   of last      update          : 11/03/86
     Field     Field     name      Type            Width        Dec
           1 BNAME                 Character           15
     ** Total      **                                  16
                                      (b)

     .
     .
           highavg
          use
            structure
          list
     Structure for database: B:highavg.dbf
     Number of data records :       0
     Date of last update    : 11/03/86
     Field Field name Type      Width                           Dee
         1 BNAME      Character    1~
     ** Total **                                          16
                                     (c)




 Gambar 9.24 Strukturdari3 relasi sementarayangpadaawalnyatidakmemiliki
             populasi




                                                                             131
. use t_stats
         . list  structure
         Stru~tur. ~or databac~ : e:t_stats.db~
         Number of data records I           6
         D.te of l.st  update    I 11/03/86
         Field   Field name Type          Width      Dec
               1 TNUMB       Numeric          1
               2 WINS       Numeric           4        1
               3 LOSSES      Numeric          4        1
             4 TOTPINS           Numeric       5
         ** Total **                          15
                                  (a)

                  .TNUMB
                    list   off
                           WINS LOSSES TOTPINS
                       1    0.0    0.0       0
                       2    0.0    0.0       0
                       3    0.0    0.0       0
                       4    0.0    0.0       0
                       5    0.0    0.0       0
                       6    0.0    0.0       0
                                (b

Gambar 9.25 (a) Struktur dan (b) isi awal dari relasi sementara T_ST ATS




.****************************************************************
*Procedure name is "fileout.prg".
*Written by Glenn A. Jackson
*Oakland University, Rochester, MI 48063
*
*This procedure outputs names from several         temporary   relations
* created by e08rpt.prg.
*
*procedure is called by eosrpt.prg
*
*The name of the rel.tion to be output is contained in variable
* fn.me. The relation h.s only one .ttribute. bname.
*
USE   ~fname
GOTO TOP
DO WHILE .NOT. EOF()
  ~ROW()+1,30 SAY bname
  SKIP
ENDDO
ZAP
RETURN

        Gambar 9.26 Modul program fileout.prg yang disebut eosrpt.prg




132
Suatu daftar dari fileout.prg, modul program dimana keluaran isi dari relasi
HIGHGAM,HIGHVG,dan HIGHSER,diberikanpadaGambar9.26.                           .



9.10        KEBUTUHAN              UNTUK SUATU MENU KELUARAN
            (INPUT)
      Menu dari item-item diberikan pada gambar 9.1 membicarakan tentang
bagaimana cara pengambilan data dari database. Menu tidak membantu sekretaris
dalam menambah tuple pada database. Masalah yang umum ditemukan oleh
sekretaris adalah dalam menabah nilai permainan bowling pada minggu kelima. Di
bagian ini diharuskan menulis dengan cepat, di dalam database berisi data eletronik
dimana standaryang digunakan dalam dBase III adalah perintah APPEND dan EDIT.
Perintah ini banyak berkaitan dalam database untuk melihat pandangan dari nilai, di
dalam keterangan perintah APPEND dan EDIT tidak mengeceklmembandingkan
kunci primer(primary key) yang sarna. Disain dari database yang asli dengan nyata
tidak memperbolehkan terjadinya kerangkapan kunci primer. Jika kondisi itu dijal-
ankan, penulis software hams dirancang dan akan menunjukkan tupel-tupel yang
dimasukkan kedalam database yang menyebabkan adanya duplikasi kunci primer.



       1.    USE bowl.r.

       2.    Input valu..  for attribute.       bname, w.ek, game1, gam.2,
             and g.me3 a. variable    valu..     nam., ~~, g1, g2, and g3,
             respectiv.ly.
       3.    COUNTthe number of tupl..         wh.re       bname   K   name
             and   week   .. wk.

       4     IF COUNT .. 0 then
                APPEND the n.w tuple     to the      relation
             ELSE
                output  an .rror m       g.    .nd   ..k     for
                a new tupl..

    Figure 9.27 Logic to keep duplicate primary keys out of the BOWLER relation.




                                                                                   133

More Related Content

Viewers also liked

Bahrain: The Crux of Antiquity and Modernity
Bahrain: The Crux of Antiquity and ModernityBahrain: The Crux of Antiquity and Modernity
Bahrain: The Crux of Antiquity and ModernityJon Schubert
 
peran negara dalam admin publik
peran negara dalam admin publikperan negara dalam admin publik
peran negara dalam admin publikIndra Fibiona
 
Water pollution
Water pollutionWater pollution
Water pollutiontk15brom
 
Frajumar Furntiture company
Frajumar Furntiture companyFrajumar Furntiture company
Frajumar Furntiture companyObs
 
Optisphilippinesinc 130106204247-phpapp01
Optisphilippinesinc 130106204247-phpapp01Optisphilippinesinc 130106204247-phpapp01
Optisphilippinesinc 130106204247-phpapp01Ma.Danna Inigo
 
Maxwil kls ix p kn
Maxwil kls ix p knMaxwil kls ix p kn
Maxwil kls ix p knSanggar Max
 
Tema 14 maria, espe, rocio martin
Tema 14 maria, espe, rocio martinTema 14 maria, espe, rocio martin
Tema 14 maria, espe, rocio martinBlanca Román
 
Digestive systems 8
Digestive systems 8Digestive systems 8
Digestive systems 8jwilliams696
 
Pidana dan pemidanaan
Pidana dan pemidanaanPidana dan pemidanaan
Pidana dan pemidanaanSigit Riono
 
Week 8
Week 8Week 8
Week 8kkuss
 
Permennakertrans No. 24 Th 2006
Permennakertrans No. 24 Th 2006Permennakertrans No. 24 Th 2006
Permennakertrans No. 24 Th 2006M Ungang
 

Viewers also liked (18)

Bahrain: The Crux of Antiquity and Modernity
Bahrain: The Crux of Antiquity and ModernityBahrain: The Crux of Antiquity and Modernity
Bahrain: The Crux of Antiquity and Modernity
 
Blog1
Blog1Blog1
Blog1
 
peran negara dalam admin publik
peran negara dalam admin publikperan negara dalam admin publik
peran negara dalam admin publik
 
Chapter i
Chapter iChapter i
Chapter i
 
Water pollution
Water pollutionWater pollution
Water pollution
 
Frajumar Furntiture company
Frajumar Furntiture companyFrajumar Furntiture company
Frajumar Furntiture company
 
Soalan bab 6
Soalan bab 6Soalan bab 6
Soalan bab 6
 
Optisphilippinesinc 130106204247-phpapp01
Optisphilippinesinc 130106204247-phpapp01Optisphilippinesinc 130106204247-phpapp01
Optisphilippinesinc 130106204247-phpapp01
 
Maxwil kls ix p kn
Maxwil kls ix p knMaxwil kls ix p kn
Maxwil kls ix p kn
 
Tema 14 maria, espe, rocio martin
Tema 14 maria, espe, rocio martinTema 14 maria, espe, rocio martin
Tema 14 maria, espe, rocio martin
 
Digestive systems 8
Digestive systems 8Digestive systems 8
Digestive systems 8
 
Jelly
JellyJelly
Jelly
 
Juego el-accionista
Juego el-accionistaJuego el-accionista
Juego el-accionista
 
Pidana dan pemidanaan
Pidana dan pemidanaanPidana dan pemidanaan
Pidana dan pemidanaan
 
Week 8
Week 8Week 8
Week 8
 
Permennakertrans No. 24 Th 2006
Permennakertrans No. 24 Th 2006Permennakertrans No. 24 Th 2006
Permennakertrans No. 24 Th 2006
 
Stand bilingue 09
Stand bilingue 09Stand bilingue 09
Stand bilingue 09
 
Document for authentic tasks
Document for authentic tasksDocument for authentic tasks
Document for authentic tasks
 

More from prominor

Cover pengantar basis_data
Cover pengantar basis_dataCover pengantar basis_data
Cover pengantar basis_dataprominor
 
Bab11 refleksi dan-pertimbangan_lebih_lanjut
Bab11 refleksi dan-pertimbangan_lebih_lanjutBab11 refleksi dan-pertimbangan_lebih_lanjut
Bab11 refleksi dan-pertimbangan_lebih_lanjutprominor
 
Bab10 database sekretaris-bowling_dengan_rbase5000
Bab10 database sekretaris-bowling_dengan_rbase5000Bab10 database sekretaris-bowling_dengan_rbase5000
Bab10 database sekretaris-bowling_dengan_rbase5000prominor
 
Bab8 tambahan konstruksi-metode_er
Bab8 tambahan konstruksi-metode_erBab8 tambahan konstruksi-metode_er
Bab8 tambahan konstruksi-metode_erprominor
 
Bab7 pengembangan relasi-relasi-dari_diagram_tipe_er
Bab7 pengembangan relasi-relasi-dari_diagram_tipe_erBab7 pengembangan relasi-relasi-dari_diagram_tipe_er
Bab7 pengembangan relasi-relasi-dari_diagram_tipe_erprominor
 
Bab6 pola pendekatan-yang_berbeda
Bab6 pola pendekatan-yang_berbedaBab6 pola pendekatan-yang_berbeda
Bab6 pola pendekatan-yang_berbedaprominor
 
Bab5 studi kasus-desain_database
Bab5 studi kasus-desain_databaseBab5 studi kasus-desain_database
Bab5 studi kasus-desain_databaseprominor
 
Bab4 beberapa bentuk-modifikasi_algoritma
Bab4 beberapa bentuk-modifikasi_algoritmaBab4 beberapa bentuk-modifikasi_algoritma
Bab4 beberapa bentuk-modifikasi_algoritmaprominor
 
Bab3 ketergantungan fungsional
Bab3 ketergantungan fungsionalBab3 ketergantungan fungsional
Bab3 ketergantungan fungsionalprominor
 
Bab2 kebutuhan perencanaan-database
Bab2 kebutuhan perencanaan-databaseBab2 kebutuhan perencanaan-database
Bab2 kebutuhan perencanaan-databaseprominor
 
Bab1 database relasi-dan_database_relasional
Bab1 database relasi-dan_database_relasionalBab1 database relasi-dan_database_relasional
Bab1 database relasi-dan_database_relasionalprominor
 
Daftar isi
Daftar isiDaftar isi
Daftar isiprominor
 

More from prominor (12)

Cover pengantar basis_data
Cover pengantar basis_dataCover pengantar basis_data
Cover pengantar basis_data
 
Bab11 refleksi dan-pertimbangan_lebih_lanjut
Bab11 refleksi dan-pertimbangan_lebih_lanjutBab11 refleksi dan-pertimbangan_lebih_lanjut
Bab11 refleksi dan-pertimbangan_lebih_lanjut
 
Bab10 database sekretaris-bowling_dengan_rbase5000
Bab10 database sekretaris-bowling_dengan_rbase5000Bab10 database sekretaris-bowling_dengan_rbase5000
Bab10 database sekretaris-bowling_dengan_rbase5000
 
Bab8 tambahan konstruksi-metode_er
Bab8 tambahan konstruksi-metode_erBab8 tambahan konstruksi-metode_er
Bab8 tambahan konstruksi-metode_er
 
Bab7 pengembangan relasi-relasi-dari_diagram_tipe_er
Bab7 pengembangan relasi-relasi-dari_diagram_tipe_erBab7 pengembangan relasi-relasi-dari_diagram_tipe_er
Bab7 pengembangan relasi-relasi-dari_diagram_tipe_er
 
Bab6 pola pendekatan-yang_berbeda
Bab6 pola pendekatan-yang_berbedaBab6 pola pendekatan-yang_berbeda
Bab6 pola pendekatan-yang_berbeda
 
Bab5 studi kasus-desain_database
Bab5 studi kasus-desain_databaseBab5 studi kasus-desain_database
Bab5 studi kasus-desain_database
 
Bab4 beberapa bentuk-modifikasi_algoritma
Bab4 beberapa bentuk-modifikasi_algoritmaBab4 beberapa bentuk-modifikasi_algoritma
Bab4 beberapa bentuk-modifikasi_algoritma
 
Bab3 ketergantungan fungsional
Bab3 ketergantungan fungsionalBab3 ketergantungan fungsional
Bab3 ketergantungan fungsional
 
Bab2 kebutuhan perencanaan-database
Bab2 kebutuhan perencanaan-databaseBab2 kebutuhan perencanaan-database
Bab2 kebutuhan perencanaan-database
 
Bab1 database relasi-dan_database_relasional
Bab1 database relasi-dan_database_relasionalBab1 database relasi-dan_database_relasional
Bab1 database relasi-dan_database_relasional
 
Daftar isi
Daftar isiDaftar isi
Daftar isi
 

Recently uploaded

Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptxPrakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptxSyaimarChandra1
 
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxJurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxBambang440423
 
AKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdf
AKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdfAKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdf
AKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdfTaqdirAlfiandi1
 
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxKONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxawaldarmawan3
 
Lembar Observasi Pembelajaran di Kelas.docx
Lembar Observasi Pembelajaran di  Kelas.docxLembar Observasi Pembelajaran di  Kelas.docx
Lembar Observasi Pembelajaran di Kelas.docxbkandrisaputra
 
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptxKesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptxDwiYuniarti14
 
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxDESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxFuzaAnggriana
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMmulyadia43
 
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdfLAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdfChrodtianTian
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKDEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKirwan461475
 
Kelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdfKelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdftsaniasalftn18
 
demontrasi kontekstual modul 1.2.a. 6.pdf
demontrasi kontekstual modul 1.2.a. 6.pdfdemontrasi kontekstual modul 1.2.a. 6.pdf
demontrasi kontekstual modul 1.2.a. 6.pdfIndri117648
 
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...Kanaidi ken
 
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptxPPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptxalalfardilah
 
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPASaku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPASreskosatrio1
 
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxPPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxnerow98
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxRezaWahyuni6
 
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfModul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfSitiJulaeha820399
 
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxMODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxarnisariningsih98
 
04-Gemelli.- kehamilan ganda- duo atau triplet
04-Gemelli.- kehamilan ganda- duo atau triplet04-Gemelli.- kehamilan ganda- duo atau triplet
04-Gemelli.- kehamilan ganda- duo atau tripletMelianaJayasaputra
 

Recently uploaded (20)

Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptxPrakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
 
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxJurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
 
AKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdf
AKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdfAKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdf
AKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdf
 
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxKONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
 
Lembar Observasi Pembelajaran di Kelas.docx
Lembar Observasi Pembelajaran di  Kelas.docxLembar Observasi Pembelajaran di  Kelas.docx
Lembar Observasi Pembelajaran di Kelas.docx
 
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptxKesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
 
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxDESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
 
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdfLAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKDEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
 
Kelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdfKelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdf
 
demontrasi kontekstual modul 1.2.a. 6.pdf
demontrasi kontekstual modul 1.2.a. 6.pdfdemontrasi kontekstual modul 1.2.a. 6.pdf
demontrasi kontekstual modul 1.2.a. 6.pdf
 
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
 
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptxPPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
 
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPASaku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
 
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxPPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptx
 
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfModul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
 
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxMODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
 
04-Gemelli.- kehamilan ganda- duo atau triplet
04-Gemelli.- kehamilan ganda- duo atau triplet04-Gemelli.- kehamilan ganda- duo atau triplet
04-Gemelli.- kehamilan ganda- duo atau triplet
 

Bab9 pelaksanaan landas-data_sekretaris_bowling_menggunakan_dbase3

  • 1. PELAKSANAAN LANDAS DATA SEK- RETARIS BOWLING MENGGUNAKAN DBASE III Bab ini berisi tiga bagian penting dari infonnasi : (1) Contoh daftar- daftar dari empat relaSi yang membentuk landas data sekretaris bowling, karena mereka dilaksanakan atau dijalankan dalam dBASE III. (2) Contoh-contoh perintah-perintah dBASE III penggunaannya dengan relasi-relasi untuk menjawab masalah-masalahsederhana.(3) Suatu diskusi yang mendalam tentang kumpulan modul-modul drive menu prpgram dBASE III yang menjawab masalah- masalah yang rumit dengan menggunakan dBASE III. Pelaksanaan database dikembangkan pada sebuah IBM PC dengan kapasitas memori 256 kByte, dua double side disk drive, dan sebuah monitor monochrome. Disket sistem dBASE III selalu berada di drive A, dan modul-modul program dari file database berada di drive B. 9.1 STUDI KASUS DATABASEDALAM DBASE III Sebelum melanjutkan pembicaraan tentang masalah-masalah khusus dan bennacam-macam modul program, relasi-relasi database yang nyata akan diselidiki. Uji data dalam database dikembangkan dibawah asumsi sebagai berikut : 1. Liga bowling memiliki enam tim. 99
  • 2. 2. Setiap tim memiliki empat peboling. 3. Musim kompetisi hanyaberlangsung empat minggu. 4. Data-data selama empat minggu dengan menggunakan perintah-perintah EDIT dan APPEND standar dBASE III. 5. Semua peboling memainkan semua pertandingan. Kemungkinan untukmerubah asumsi-asumsi ini, seperti latihan-Iatihan dalam daftar problem pada akhir bab ini. Gambar 9.1 sampai 9.2 menunjukkan dua buah struktur dari ujian data yang aktuil untuk masing-masing relasi (dalam terminologi dBASE III setiap relasi disebut sebuah file database (.dbt).) Dalam melihat data relasi BOWLER pengawasan hendaknya membuat relasi memiliki sejumlah besar tembusan pada alamat jalan dan nomor telepon. Apakah berikut ini FD yang benar ? phone L street . list off TNUMB WEEK LANE ] ] 1 2 ] 2 3 ] 4 4 ] 3 5 ] 6 6 ] 5 ] 2 4 2 2 5 3 2 2 4 2 6 5 2 ] 6 2 3 I 3 3 2 3 6 . list structure 3 3 ] Structure for dalabase B:sched.dbf 4 3 4 Number of dala record 24 5 3 5 Date of last update 05/('1)/86 1 4 5 Field Field Name Type Width Dec 2 4 I 1 TNUMB Numeric ] 3 4 3 2 WEEK Numeric ] 4 4 2 3 LANE Numeric ] 5 4 4 ** TOlal ** 4 w ~ Gambar 9.1 (a) Struktur (b) Isi dari relasi SCHED. 100
  • 3. Relasi nama-nama akan berhuruf besar, keeuali bila menggunakan notasi dBASE III yang menghubungkan dengan simbol-simbol ke relasi-relasi mereka berada. Contoh: bowwler L bname, ini berarti bname berada di dalam relasi BOWLER. use team . lisl SlrUClure Slruclure for dalabase B : leam.dbf Number of dala records 6 Date of lasl updale 05/10/86 Field Field name Type Widlh Dec 1 TNUMB Numeric 1 2 TNAME Character 15 3 CAP1N characler 15 ** TOlal ** 32 lisl off TNUMB TNAME CAP1N I AlleyCalS Ann Jones 2 Incosistenls Bill Black 3 TenPins Lisa Moore 4 HiRollers Jill Miller 5 Spliuers Roy Lane 6 SandBaggers Cindy Fox (b) Gambar 9.2 (a) Struktur (b) Isi dari relasi TEAM. Jika demikian relasi BOWLER tidak di dalam BCNF dan raneangan asli daridatabase akan salah. Maka diputuskan bahwa usulan FD adalah salah dengan alasan : 1. Adakemungkinan tertentu bahwadua orang dengan dua alamat yangberbeda mungkin tidak mempunyai telepon. Kata NONE dapat digunakan untuk nomor telepon dalam kasus seperti itu; Bagaimana pun, alamat jalan tidak akan bergantung ser fungsionil pd nomor telepon. 2. Mungkin bahwa nomor telepon digunakan di dalam database adalah sebuah nomor telepon yang mana peboling bisa ditemukanlebih baik daripada sebuah nomor telepon romah, ini mungkin juga disebabkan usulan FD di atas salah. 101
  • 4. Dibawah perkiraan - perkiraan ini, beberapa data jalan dan telepon menggambarkan relasi BOWLER adalah tembusan, tapi tidak mubasir. 9.2 JAWABAN PERMASALAHAN SEKRETARIS DENGAN DBASE III Bagian ini bermaksud mengilustrasikan fakta bahwa masalah simpel yang berkaitan dengan database sekretaris bowling dapat dijawab langsung dengan pe- rintah-perintah DBASE III, tanpa mengandung perintah-perintah bahasa pemro- graman DBASE III. Semua solusi masalah dalam bagian ini melibatkan relasi spesifik yang diberikan pada gambar 9.1 sampai 9.4. Dalam banyak kasus, sebuah urutan dua atau lebih pereintah-perintah basic yang diperlukan untuk menjawab masalah. Pembaca didorong untuk meng implementasikan database, dan melaksanakan setiap set solusi yang dibahas. Jika pembaca ingin bekerja dengan R:base 5000, daripada dBASE III, mereka cukup membaca masalah yang diberikan dalam chapter ini, dan mengimplementasikan database pada chapter 10. . use bowler . list structure Structure for database B : bowler.dbf Number of data records: 24 Date of last update OS/20/86 Field Field name Type Width Dec 1 BNAME Character 15 2 TNUMB Numeric 1 3 PHONE Character 8 4 STRET Character 20 5 STAVO Numeric 3 ** Total'** 48 (a) 102
  • 5. list off BNAME TNUMB PHONE STRET STAVG Jean Adams 5 689-1234 10 Robin St 111 Steve Adams 5 689-1234 10 Robin St 130 Bill Black 2 689-2345 15 Bluebird Ln 149 Bonnie Black 2 689-2345 15 Bluebird Ln 120 Bo Blow 2 NONE 12 Meadowbrook Ln 143 Jo Blow 2 NONE 12 Meadowbrook Ln 95 Joe Brown 3 689-4567 18 Bluebird Ln 132 Sue Brown 3 689-4567 18 Bluebird Ln 124 Cindy Fox 6 689-5678 19 Cardinal St 103 Randy Fox 6 689-5678 19 Cardinal Ln 147 Ann Jones 1 689-4365 12 Finch Dr 105 John Jones 1 689-4365 12 Finch Dr 143 Joy Lane 5 689-6789 21 Sparrow Ct 125 Roy Lane 5 689-6789 21 Sparrow Ct 167 Jill Miller 4 689-7890 12 Robin St 108 Paul Miller 4 689-7890 12 Robin St 170 Lisa Moore 3 689-8901 11 Lark Dr 115 Mike Moore 3 689-8901 11 Lark Dr 140 Jim Smith 1 689-9012 13 Finch Dr 152 Mary Smith 1 689-9012 13 Finch Dr 115 Russel Taylor 6 689-0123 20 Cardinal St 161 Ruth Taylor 6 689-0123 20 Cardinal St 119 Dan White 4 689-2143 16 Robin St 158 Jan White 4 689-2143 16 Robin St 121 Gambar 9.3 (a) Struktur (b) isi dari relasi BOWLER. 103
  • 6. u.. .cor.. li.t .tructur. Structur. for d.t.b... I BI.core..dbf Numb.r of d.t. r.cords I 96 D.t. of l..t updAte I O~/20/86 Fi.ld Field n.me Type Width Dec 1 BNAME Ch.rActer 15 2 WEEK Numeric 1 3 GAME 1 Numeric 3 4 GAME2 Numeric 3 ~ GAME3 Numeric 3 ** Tot.l ** 26 (a) Contoh-contoh yang diberikan pada bagian iniberasumsi bahwa disket sistem dBASE III berada pada drive A dari IBM PC, dab relasi database pada drive B. Sebelum menjalankan dBASE III,disket yang digunakan harus di set .ke B. lni dijalankan dengan perintah .SET DEFAULT TO B MASALAH #1: " Siapakah kapten regu nomor empat ?" . Masalah inimudah, jikasemua informasi yang diperlukan untukmenjawab berada pada tuple dalam suatu relasi. Sebagai tambahan, hanya satu kondisi diperlukan :tnumb = 4. Jawaban diperoleh dengan menjalankan.perintah : .USE team .LIST OFF captn FOR tnumb = 4 Jawabancaptn = Jill Miller MASALAH #2: "Cari nama bowler dengan stsrting average dibawah 100." Masalah ini mirip masalah #1 dan dijawab dengan sequence berikut: .USE bowler .LIST OFF bname OR stavg < 100 Jawaban bname = Jo Blow Masalah #3: "Carl nama dan nomor telepon seluruh anggota team tiga" Masalah ini mirip masalah #1 dan #2 bahwa informasi yang diperlukan berada pada satu relasi, walaupun solusinya memberikan beberapa petunjuk output. .USE bowler .LIST OFF bname FOR tnumb = 3 104
  • 7. li.t off for week <- 2 li.t off for week >- 3 BNAME WEEK GAMEl GAME2 GAME3 BNAME WEEK GAMEl GAME2 GAME3 Jean Adam. 1 119 120 94 Jean Adams 3 123 134 124 Steve Adams 1 112 140 138 Steve Adams 3 134 156 135 Bill Black 1 137 1~~ 1~~ Bill Black 3 1~6 16~ 162 80nnie BlACk 1 120 12~ 11~ Bonnie Black 3 123 119 111 Bo Blow 1 160 14~ 12~ Bo Blow 3 165 121 1~8 Jo Blow 1 101 91 93 Jo Blow 3 89 120 99 Jim Smith 1 160 1~0 146 Jim Smith 3 164 16~ 14~ Mary Smith 1 120 110 11~ Mary Smith 3 112 114 132 Ann Jon.. 1 98 110 107 Ann Jane. 3 108 109 112 John Jane. 1 14~ 1~0 134 John Jane. 3 14~ 146 144 Joe Brown 1 140 127 129 Joe Brown 3 136 144 12~ Bue Brown 1 121 128 124 Sue Brown 3 124 123 119 Cindy FolC 1 119 110 83 Cindy FolC 3 99 110 107 Randy FolC 1 143 1~0 148 Randy FolC 3 1~0 161 146 Ru...l TAylor 1 167 1~0 166 Ru..el Taylor 3 189 179 . 167 Ruth Taylor 1 110 12~ 122 Ruth Taylor 3 135 112 132 Joy LAne 1 126 127 122 Joy Lane 3 123 132 10~ Roy Lane 1 14~ 180 176 Roy Lane 3 201 202 1~6 Jill Miller 1 111 101 112 Jill Miller 3 108 112 101 PAul Miller 1 180 196 134 Paul Miller 3 198 167 18~ Dan White 1 1~6 163 1~4 Can White 3 161 162 149 Jan Whit. 1 130 12~ 108 Jan White 3 119 123 141 li.A Moore 1 99 120 111 Li.a Moore 3 121 107 104 Mike Moore 1 1~0 149 121 Mike Moore 3 148 148 1~1 Jean Adam. 2 120 12~ 100 Jean Adam. 4 111 121 100 Steve AdAm. 2 130 146 140 Steve Adam. 4 131 127 132 Bill Black 2 1~4 149 148 Bill Black 4 137 169' 154 80nnie Black 2 120 130 110 Bonnie Black 4 119 121 113 80 Blow 2 1~9 13~ 12~ Bo Blow 4 143 157 147 Jo Blow 2 10~ 91 90 Jo Blow 4 89 99 98 Jim Smith 2 160 160 170 Jim Smith 4 1~8 163 169 Mary Smith 2 120 110 90 Mary Smith 4 116 117 97 Ann Jones 2 100 110 110 Ann Jones 4 103 68 121 John Jones 2 1~8 138 13~ John Jone. 4 148 137 1~8 Joe Brown 2 139 138 12~ Joe Brown 4 130 127 146 Sue Brown 2 126 124 110 Sue Brown 4 124 126 128 Cindy FolC 2 104 90 108 Cindy FolC 4 104 109 110 Randy FolC 2 1~0 137 163 Randy FolC 4 152 153 154 Ru..el Taylor 2 160 16~ 1~0 Ru.sel Taylor 4 16~ 158 202 Ruth TAylor 2 130 123 108 Ruth Taylor 4 119 123 117 Joy Lane 2 130 11~ 120 Joy Lane 4 126 130 128 Roy Lane 2 183 179 138 Roy Lane 4 170 168 186 Jill Miller 2 110 98 103 Jill Miller 4 110 118 10~ Paul Miller 2. 180 174 178 Paul Miller 4 176 202 181 Dan White 2 161 1~~ 1~6 Can White 4. 156 149 1~7 JAn White 2 124 119 130 Jan White 4 124 121 115 lisa Moore 2 120 102 100 Li.a Moore 4 110 126 106 Mike Moore 2 1~1 140 12~ Mike Moore 4 14~ 148 162 (b) Gambar 9.4 (a) Struktur dan (b) Isi dari relasi SCORES 105
  • 8. Jawaban bname phone Joe Brown 689-4567 Sue Brown 689-4567 Lisa Moore 689-8901 Mike Moore 689-8901 MASALAH #4: "Pada lane mana team lima benanding di minggu ketiga ?" Masalah ini hanya sedikit lebih sulit daripada sebelumnya. Tambahan kesulitan disebabkan karena ada dua kondisi yang harus ditempatkan. .USE sched .LIST OFF lane OR tnumb = 5 .AND. week = 3 Jawaban lane = 5. MASALAH #5: Cari nama bowler yang tinggal di Robin St Masalah ini menghendaki pencarian dalam dari setiap record pada field stret dalam relasi BOWLER untuk melihatjika muncul urutan karakter 'Robin St'. Hal ini diselesaikan dengan operator $. ~LIST OFF bname FOR 'Robin St' $(stret) Akan menghasilkan beberapa nama: bname Jean Adams Steve Adams Jill Miller Paul Miller Dan White Jan White Jika menggunakan operator $ ataupun operator atau fungsi yang memisahkan suatu sub rangkaian dari rangkaian karakter, pemakai harus memastikan bahwa tidak terdapat strings didalam data yang dapat menimbulkan kesalahan data. Contoh '21 Blue Robin St' akan memberikan nilai output pada masalah terakhir, walaupun nama jalan adalah 'Blue Robin' bukan 'Robin'. Cara yang mudah untuk me- meriksanya adalah dengan mengembalikan nama dan alamat pada output. MASALAH #6 : "Berapa banyak seri tiga games yang lebih dari 550 yang telah dibuat ?" Masalah ini dapat dijawab dengan perintah COUNT. Jawaban juga menghendaki penjumlahan dalam permasalahan. .USE scores .OUNT FOR gamel + game2 + game3 > 550 106
  • 9. Jawaban : 2 records. Ini menunjukkan bahwa hanya dua seri tiga games yang lebih dari 550 yang telah dibuat. ketiga ?" Tingkat keterampilan yang dibutuhkan masalah ini sedikit lebih tinggi dari- pada untuk menjawab masalah sebelumnya; data yang didapat dari satu relasi harus digunakan pada relasi kedua, untuk mendapat hasH yang diinginkan. Untuk menjawab masalah ini, pertama-tama sekretaris bowling harus menggunakan hasil masalah #4 untuk menentukan pada lane mana tim lima bertanding pada minggu ke tiga. Jawabannya adalah lane = 5. Jika lawan bertandingpada lane yang berdampingan, sekretaris dapat menarik kesimpulan bahwa lawan bermain pada lane enam. Dengan informasi ini, tnumb dari lawan dari tim lima pada minggu ketiga dapat dijawab dengan urutan berikut : .LIST OFF captn FOR tnumb = 2 Jawaban keseluruhan masalah captn = Bill Black. Masalah #7 dapat dijawab dengan berbagai cara. Jawaban diatas mungkin yang paling langsung dan paling mudah dimengerti oleh pemakai pemula dBASE III. Jawaban kedua melibatkan penggunaan operator relasi JOIN. Bagian pertama dari jawaban kedua dari masalah #7 sarna seperti yang diberikan sebelumnya: Lane untuk tim lima selama minggu ketiga harus ditemukan (Lane = 5). ari sini ditentukan kembali bahwa lane lawan adalah lane enam. Berikutnya, urutan berikut hams dilaksanakan: .CLEAR ALL .SELECf 2 .USE team .SELECf I .USE sched .JOIN WITH team TO result FOR lane = 6 .AND.week= 3 .AND.; tnumb = team ->tnumb; FIELDS team ->captn .USE results .LIST OFF .USE .ERASE result Perbedaan mendasar dari kedua solusi bahwa JOIN dikerjakan secara eksplisit didalam versi kedua, sedangkan dalam versi pertama JOIN dilakukan oleh sang sekretaris. 107
  • 10. Padajawaban kedua, perintah CLEAR ALL digunakan untuk menghindarkan kesalahan ALIAS, yang mungkin timbul dalam pengaturan wilayah kerja 1 dan 2 denR!nperimahpenRRabunRRn S~L~:CT.(k~~RIRhRfl ~kRflrimhul ji~~ TEAM ifli atau SCHED sudah digunakan pada masalah sebelumnya.) Perintah USE pada statement next-to-Iast pada file .dbf, yang baru dibentuk, sehingga dapat di ERASE tanpa kesalahan karena perintah berikutnya. Sebuah .dbf file tidak dapat dihapus jika sedang terbuka. MASALAH #8 : Berapa banyak pin (tanpa handicap) yang dicapai Bill Black pada akhir minggu ketiga ?" Semua informasi yang dibutuhkan untuk menjawab masalah ini dapat ditemukan dalam relasi SCORES, walaupun jawaban akan tampak rumit karena perhitungan aritmatika harus dilakukan dalam dan antara tuple. Jawaban dibuat agak simpel dengan penggunaan fungsi SUM: .USE scores .SUM gamel + game2 + game3 TO total; FOR bname = 'Bill Black' .AND. week ~ 3 .? total Jawaban total = 1381 SandBaggers" Masalah ini paling mudah dijawab menggunakan perintah JOIN. (Pemakai harus berhati-hati, dengan penggunaan JOIN, sejumlah besar tuple tidak dalam , proses. Pada kasus terburuk,jika relasi dengan "m" tuple di JOIN dengan relasi "n" tuple, akan menghasilkan m kali n tuple.) Hasil yang diinginkan dari MASALAH #9 dapat dihasilkan dengan : .CLEAR ALL .SELECf 2 .USE team .SELECf 2 .USE bowler .JOIN WITH team TO result FOR team ~ tname = 'SandBaggers'; .AND. tnumb <> team ~ tnumb FIELDS bowler ~ bname .USE res'ult .LIST OFF .USE .ERASE result Jawabannya akan berupa dua puluh nama. 108
  • 11. MASALAH #10 : "Selama minggu ketiga, bowler mana yang lebih baik dari Lisa Moore pada seri tiga game (tanpa handicap)?" Masalah ini akan dijawab dalam dua langkah proses:langkah pertama untuk menentukan nilai Lisa Moore pada minggu ketiga; langkah kedua untuk men- emukan nama orang yang melampaui nilai Lisa Moore. Solusinya adalah: .CLEAR ALL .USE scores LIST OFF game1 + game2 + game3 FOR bname = Lisa Moore .AND. week = 3 Hasil disini nilai tiga game adalah 332 . LIST OFF bname FOR game 1 + game2 + game3 > 332; .AND week = 3 Hasil Akhir adalah daftar sembiIan belas nama. use score . list structure Structure for database B:scores.dbf Number of data records 96 Date of last update OS/20/86 Field Field name Type Width Dec I 1 BNAME Character 15 2 WEEK Numeric 1 3 GAMEl Numeric 3 4 GAME2 Numeric 3 5 GAME3 Numeric 3 ** Total ** 26 109
  • 12. 9.3 MENU UTAMA UNTUK PRAPEMROGRAMAN SOLUSI PERMASALAHAN Pada seksi terdahulu, dijelaskan solusi untuk beberapa masalah simpel. Diasumsikan bahwa sekretaris bowling akan memasukkan perintah perintah untuk jenis solusi ini langsung dari terminal. Begitu permasalahan menjadi lebih rumit, urutan perintah-perintah yang diperlukan menjadi lebih panjang dan harus dimasuk- kan langsung oleh sekretaris. Dalam kasus ini, daftar masalah yang potensial dapat ditempatkan di menu dan menu ditampilkan pada terminal komputer. Jika sekretaris ingin memilih salah satu masalah, program yang ditulis dalam bahasa pemro- graman dBASE III akan menjawab permasalahan. Bagian berikut dari bab ini menguji beberapa menu dalam detail. Masalah-masalah khusus yang ditempatkan pada menu yang dianggap beralasan ,tetapi daftar permasalahan tidak melelahkan, dan dapat Menu contoh, seperti yang dilihat sekretaris ketika menjalankan program tampak pada gambar 9.5. Jalur utama modul program yang tampak pada menu ini, dan menerima pilihan masalah, bernama "sdbmain.prg." Modul ini ditunjukkan pada gambar 9.6. Setiap lima pilihan menu pertama menghasilkan pelaksanaan dari modul program yang berbeda. Beberapa dari modul tingkat kedua memanggil modullain untuk membuat tugas tertentu. Semua modul program yang terlibatdalam penggunaan menu utama dibahas secara rinei pada bagian berikut pada chapter ini. Logic yang terkandung dalam sdbmain.prg mengulang urutan berikutsampai diambil pilihan "6" yang mengakhiri pelaksanaan. 1. Display the main menu 2. Wait for input Choice 3. If the choice was valid then Transfer control to the appropriate program module Else Print out an error message; delay for about two seconds; and return to 2 above. MONDA Y_NIGHT _IRREGULAR_BOWLING_LEAGUE_QUERY _MENU 1 - DISPLA Y STATISTIC FOR AN INDIVIDUAL BOWLER 2 - DISPLA Y TOTAL PINS FOR EACH TEAM 3 - DISPLA Y TEAM STANDINGS - 4 . DISPLAY SCHEDULE FOR A GIVEN WEEK 5 - GENERATE AN END-OF-SEASON REPORT 6 - RETURN TO DBASE III COMMAND LEVEL Enter your choice Gambar 9.5 Menu utama untuk database sekretaris bowling 110
  • 13. * lype dsdbmain.prg *******************MAIN PROGRAM FOR SECRETARY'S DATABASE ** * Program name is "DSDBMAIN.PRG" * Wriuen by Glenn A. Jackson" * Oakland Universily Rocbesler, MI 48063 * Bowling leagues may use lhis program - allheir own disk * CLEAR SET TALK OFF CLOSE DATABASE SET DEFAULT TO B PUBLIC mac_wk, bavg, hadkp, saveil * * Lisllhe query mend for lhe user and accepllhe nexl query * choise * DO WHILE .l. CLEAR @ 5,IOSAY 'MOND.AYNIGHTIRREGULARS BOWLING LEAGUE QUERY MENU' @ 6,10 SAY '=================================================' @ 9,10 SAY' 1 - DISPLAY STATISTICS FOR AN INDIVIDUAL BOWLER' @ 11,10 SAY' 2 - DISPLAY TOTAL PINS FOR EACH TEAM' @ 13,10 SAY' 3 - DISPLAY TEAM STANDINGS' @ 15,10 SAY' 4 - DISPLAY SCHEDULE FOR A GIVEN WEEK' @ 17,10 SAY' 5 - GENERATE AN END-OF-SEASON REPORT' @ 19,10 SAY' 6 - RETURN TO DBASE III COMMAND LEVEL' @ 22,10 SAY' Enler your choice' WAIT' , TO Choice DO CASE CASEChoice= 'I' STORE 'SDB' TO ECS_check DO b:bwlrsl CASE Choice = '2' DO b:leampns CASE Choice = '3. DO b:leamsld CASE Choice = '4' DO b:wkschdl CASE Choice = '5' DO b:eosrpl CASE Choice ='6' CLEAR CLOSE DATABASES @ 5,10 SAY 'THE SECRETARY'S DATABASE -AS BEEN CLOSED" @ 6,10 SAY'YOU ARE BEING RETURNED TODBASEIIICAMMAND LEVEL' SET DEFAULT TO A SET TALK ON RETURN OTHERWICE @ 22,10 SAY 'YOU HE ENTEREND AN INVAL IS EN1RY II!!!' DO b:delay ENDCASE CLOSE DATABASES ENDDO Gambar 9.6 Modul program utama untuk database sekretaris 111
  • 14. DELAY.PRG adalah Modul program pendek yang disebut SbdMain.prg, sewaktu dua detik penundaan (2 second delay) dibutuhkan. Salinan (copy) dari delay.prg akan diberikan pada figure 9.7. Program ini tidak melakukan apa-apa melainkan penambahan pada sekitar alur berantai (loop) wktu secukupnya untuk menggunakannya kira-kira 2 detik. Sec. 9.4 Program Module BWLRST.PRG * type delay.prg ************ two second delay module ************ * * Program module name is "delay.prg" * Wriuen by Glenn A. Jackson * Oarland, University, Rochester, MI 48063 ... * ... This module gives an appronimaLe Lwo second delay before * returning to the calling program ... STORE 0 TO delay _ctr DO WHILE delay _ctr < 50 STOREdelaY3tr + 1 to delay_ctr ENDDO RETURN Gambar 9.7 Modul two-second delay delay.prg 9. 4 MODUL PROGRAM BWLRST. PRG Modul ini akan dipanggil oleh "SbdMain.prg" ketika menu utama menunjukan yaitu "1 - DISPLAY STATISTICSFOR AN INDIVIDUAL BOWLER". Pelasanaan dari hasHperhitungan modul dan hasil statistic terhadap akhir pemain Bowling dari 1minggu yangdiberikan dalam suatumusim. Modul membutuhkan/meminta minggu yang diinginkan untuk data statistik yang dibutuhkan dan nama pemain Bowling. Modul akan mengecek untuk membuat yakin bahwa nama dan minggunya ke dua merupakan nilai yang berlaku. Logika umum dari modul diuraikan dalam figure 9.8. dan implimintasi Dbase III dijelaskan dalam Figure 9.9. Sedangkan hasil tipe daTi modul akan ditemukan dalam Figure 9.10 (hal 121) ke 2 point ini berhubungan dengan Bwlist.prg membutuhkan uraian lebih lanjut, perlakuan penama dengan ke 2-.nya("IF eos_check = 'SDB''') pemyataan itu yang timbul dari modulnya. "Blwrst.prg" dapat dipanggil daTi2 module program yang berbeda : "SdbMiiin.prg" dan "eosrpt.prg" Sewaktu "Bwlrst.prg" dipanggil daTi "SbdMain.prg", seluruh modul dapat dijalankan. Sewaktu "Bwlrst.prg"dipanggil dari "eosprt.prg", sebagian besar daTi logika modul terlongkap, sehingga diketahui nama dari pemain bowling dan minggu yang ditetapkan dalam kasus yang akan datang. 112
  • 15. Sebelum "Bwlrst.prg" dipanggil dari "SdbMain.prg", nilai dalam test "eos" menentukan terhadap "SDB", disamping itu test "eos" menetukan terhadap "cos" sebelum "blwrsp.prg" dipanggil dari "eosrpt.prg". Point ke 2 dari uraian perlakuan dari dua poin ini dengan perhitungan kega- galannya (rintangan). Rintangan dapat dipastikan 3 atau 4 perbedaan antara rata-rata yang berlaku dan 200dengan tanpa penghapusan tingkat rintangan. Rata-rata pemain bowling dan rintangannya adalah bilangan bulat yang ditetapkan oleh TRUNCA- TION, jika TRANCAnON tidak digunakan lagi dalam ke dua kasusnya maka "League Standing" akan berfungsi. Implementing use Bowling Secretary's Database Using Dbase III. LOGIC IF eos_check = 'SDB' WHEN BWLRST.PRG IS EXECUTED 1. Excecute findwk.prg to find the last week for written game scores have been entered into the SCORES relation. The value is returned as "sdb_wk" 2. Input the week of the season for which statistic are desired as "wk," and check the value for validity. 3. Input the name of the bowler whose statistics are desired "name," and check the value for validity. 4. For mach tuple in the SCORES relation in which the bname attribute value equals name, and the week attribute value is less than or equal to ~k : a. Check game 1, game2, and game3 to see if any have higher values than the current hi_game score; if so, save that value as hi_game; b. Check the sum of game1, game2, and game3 to see if the sumis higher than the current hi_series value; if sb, save the sum as hi_series; c. Add the sum of game 1, game2, and game3 to tocpins. 5.. Calculete this bowler's average and handicap and save then as "bavg" and "hndkp", respectively. 6. Output the results. LOGIC IF eos_check = 'EOS' WHENBWLRST.PRG EXECUTED IS Sections 1,2,3, and 6 above are skippec. Only sections 4 and 5 are executed. Figure 9.8. General Logic for program module bwlrst. prg. 9. 5 MODUL PROGRAM TEAMPNS. PRG Modul ini akan dipanggil oleh "Sdbmain.prg" sewaktu menu utama memilih yaitu "2 - DISPLAY TOTAL PIN'S FOR EACH TEAM". Modul program ini memanggil "Findwk.prg" untuk menetukan minggu lalu untuk data yang masuk ke dalam Relasi 'SCORE' dan kemudian menetukan hasil dan menampilkan jumlah nomor dari "SCRATCN" untuk setiap TEAM. Sampel hasil dari "Teampns.prg" diterangkan 9.11. dan logika umum untuk "teampns.prg" diterangkan dalam 9.12 kemudian modul itu sendiri nampak pada Figure 9.13 (haI122). 113
  • 16. Sewaktu membuat beberapa "Join" dalam data base program, ketelitian harus diusahakan untuk meyakinkan bahwa hasil dari "Join" akan menjadi hubungan yang terlalu lebar untuk penempatan ruangan yang kosong dalam disket berlungsi dalam "Join" yang digunakan "teampns.prg", TEMP 2 akan selalu mempunyai TUPLES. (3 games/week) * (4 bowlers/team) * (N week bowled) Jika itu merupakan minggu 4 season, N=4 tiap konstruksi dari Temp 2 akan menghasilkan generasi dari 4 Tuples. "Teampns.prg" memanggil Findwk.prg untuk menentukan season minggu yang lalu untuk yang sekornya telah dimasukan dalam hubungan "Score". Modul ini diterngkan dalam Figure 9.14.logika dalam modul ini membutuhkan 1 poin pengembangan. Tujuan dari modul adalah untuk menempatkan nilai atribut yang terbesar dalam 1minggu dari file database yang aktif, ini artinya bahwa hubungan (.dbf) yang dicapai pasti merupakan priod yang aktif untuk menjalankan"Findwk.prg" selama hubungan ke duanya yaitu "SCORE" dan "SCHED" mempunyai minggu sebagai atribut field. Jika "Score" merupakan hubungan yang aktif, nilai minggunya menunjukan yaitu "minggu lalu scorenya telah masuk ke dalam data base" sedang jika SCHED merupakan hubungan aktif, nilai minggunya menunjukan yaitu minggu yang lalu merupakan Bowling Season. "Findwk.prg" biasa digunakan untuk menunjukan kedua dari nilai minggunya. 114
  • 17. * type bwlrst.prg . *********************************************************** * Procedure name is "bwlrs1.prg" * Written by Glenn A. Jackson * Oakland University, Rochester, MI48063 * * This procedure calculates and outputs the following * statistcs * on and individual bowler; Hight-series, Hight-game, Total * pins, average and handicap. All statistics include all * games bowled to date. * * Procedure is called by sdbmain.prg * CLEAR * * Initialize running sum variables and counting variables * STORE 0 TO hi_series,tot_pins,hi~ame STORE 1 TO CTR SELECT 1 USE B:SCORES * * Run this next section of code only if called from the * main menu. * IF eos_check = 'SDB' * * Find last week for which score have been entered - as * man_ wk * DO b:findwk * STORE' 'TO wk DO WHILE .1. @ 7,15 SAY 'IF YOU WISH THE STATISTICS FOR THE SEASON TO DATE' @ 8,15 SAY 'ENTER '+STR(max_wk,2)+; " THE LAST WEEK FOR WHICH DATA WERE ENTERED' @ 9,15 SAY 'OTHERWISE, ENTER THE WEEK DESIRED' @ 11,15 GET wk READ IF val(wk) > max_wk .OR. val(wk) < 1 @ 15,10 SAY 'THE WEEK INPUT IS INVALID !!!' DO b:delay STORE' , TO wk CLEAR ELSE CLEAR EXIT ENDIF * ENDDO * Enter the bowler's name and make certain it is valid * STORE ' , TO name * Gambar 9.9 (a) Bagian penama dari modul program bwlrst.prg. 115
  • 18. DO WHILE .t. @ 7,20 SAY' ENTER THE BOWLER'S NAME. e.g Joe Jones' @ 8,20 GET name READ COUNT FOR bname =name TO check IF check = 0 @ 12,20 SAY 'THE NAME ENTERED IS NOT IN THE DATABASE' @ 13,20 SAY 'CHECK IT AND RE-ENTER' DO b:delay STORE' , TO name CLEAR ELSE EXIT ENDIF ENDDO ENDIF * GOTO TOP DO WHILE ctr <= val(wk) LOCATE FOR bname = name .AND, week=ctr IF gamel > hi~ame STORE gamel TO hi~ame ENDIF IF game2 > hi~ame STORE game2 TO hi~ame ENDIF IF game3 > hi~ame STORE game3 TO hi~ame ENDIF _ STOREgamel + game2+ game3TO tot3 STORE tot-pins + tot3 TO tot_pins IF tot3 > hi_series STORE tot3 TO hi_series ENDIF STORE ctr + 1TO ctr ENDDO * STORE INT(tot-pins/(val(wk)*3) TO bavg IF bavg < 200 STOREINT«2oo - bavg)* 0.75) TO Imdkp .FO # ELSE STORE 0 TO lu1dkp ENDIF * * DO THIS SECTION ONLY IF CALLED FROM MAIN MENU * IF cos_check = 'SDB' CLEAR @ 7,20 SAY 'STATISTICS FOR' + TRIM(bname) +' THI,m WEEK' + wk @ 8,20 SAY '=====================================' @ 10,20 SAY 'A VERAGE PINS PER GAME: '+ STR(bavg,3) @ 12,20 SAY 'TOTAL PINS - WITHOUT HANDICAP: '+STR(tot-pins,4) @ 14,20 SAY 'HIGH GAME SCORE TO DATE: '+STR(hi~ame,3) @ 16,20 SAY 'HIGH SERIES TO DATE: '+SRT(hi~ame,3) @ 18,20 SAY 'CURRENT HANDICAP: '+STR(hndkp,3) @ 22,20 SAY 116
  • 19. WAIT CLEAR ENDIF RETURN Gambar 9.9 (b) Penggalan keduan dari modul program bwlrst.prg STATISTICS FOR JEAN Adams THRU WEEK 3 AVERAGE PINS PER GAME: 1 : 7 TOTAL PINS - WITHOUT HANDICAP: 105 HIGH GAME SCORE TO DATE: 134 HIGH SERIES TO DATE: 381 CURRENT HANDICAP: 62 Gambar9.IO. Macam kelua~alldari pelaksanaan menu utama pilih "1" TOTAL SCRATCH PINS TROUGH WEEK 4 TEAM NO. TEAM NAME TOTAL PINS 1. AlIeyCats 6257 2. Inconsistens 6172 3. TenPins 6147 4. HiRollers 6798 5. Splitters 6580 6. SandBaggers 6534 Gambar 9.11 Contoh keluaran dari pelaksanaan modul program teampns.prg. 1. Execute findwk.prg to determine the last week for which score have been entered into the SCORES relation. 2. Output the header for the data that will be output, below. 3. For each team (using the variable "err" as both team number and loop counter), DO the following : a. JOIN the SCORE and BOWLER relations, where bowler -> tnumb = the selected team number and bowler -> bname = score -> bname to form a new relation, TEMP2, keeping only the game, game2, and game3 attributes (FIELDs). TEMP2 will hold all the game score for one team through the cur- rent week in the seson. b. Use the TEAM relation to determins the name of the team being evaluated using the team number as the identifying value. Save the name as "name", c. Use the TEAM relation to sum the game score for this team, and output the total team pins. 117
  • 20. d. ERASE the temporary relation temp2.dbf from the database. e. Increment the team number (ctr) to the next value. Gambar 9.12 Logik umum untuk modul program teampns.prg Implementing the Bowling Secretary's Database using dBASE III · type te8J11pns.prg ... · Procedure name is "te8J11pns.prg" · Written by Glenn A. Jackson · Oakland. University. Rochester. MI 48063 . · This procedure prints out the total number of wcratcn pinsfor · for aan tean for the season to data. . · procedure is called by adbmaim.prg . CLEAR CLOSE DATABASES SELECT I USE b:bowler SELECT 2 USE b:icores . Find last week for which scores have been entered -return as · max_wk DO b:findwk . · Print out the header for the ouput data. . @ 5,20 SAY 'TOTAL SCRETCH PINS THROUGH WEEK'+ STR(max_wk.3) @ 6,20 SAY '================================' @ 7,20 SAY 'TEAM NO. TEAM NAME TOTAL PINS @ 8,20 SAY . · CALCULATE AND PRINT OUT THE DATA . STORE' , TO ctr DO WHILE ctr <= 6 SELL POINTER JOIN WITH scoreS TO b:temp2 FOR tnumb =etr .AND. ; score = score -> bname FIELD gamel,game2,g8J11e3 SELECT 2 USE b:te8J11 LOCATE FOR tnumb =ctr STORE tname TO name SELECT 4 USE b:temp2 SUM g8J11el, 8J11e2. g game3 TO gml, gm2, gm3 @ 9+ctr, 20 SAY STR(ctr,4)+' '+name+' '+STR(gml+gm2+gm3) USE ERASE b:te8J11p2.dbf STORE etr+1 TO etr ENDDO @ 22,10 SAY' , WAIT RETURN Gambar 9.13 Modul program teampns.prg 118
  • 21. type findwk.prg ************************ FINDWK.PRG **************************** * *Module name is "findwk.prg" *Written by Glenn A. Jackson *Oakland University, Rochester, MI 48063 * *This module determines the largest week value that has been *entered in the week attribute field in either the *scores.dbf or sched.dbf relation. The module assumes that *either scores.dbf or sched.dbf is the active database when *the module is executed. * *Called by the following modules: * bwlrst.prg, teampns.prg, teamstd.prg, wkschdl.prg and eosrpt.prg * *The highest week value is returned as the integer variable: max_wk * @ 10,15 SAY "MAKING SOME CALCULATIONS -- DON'T GO AWAY !II ma~:_wk = 0 GOTO TOP DO WHILE .NOT. EOF() IF week > ma>:._wk ma>:_._wk = week ENDIF SKIP ENDDO * CLEAR RETURN Figure 9.14 The program module findwk.prg. 9. 6 MODUL PROGRAM WKSCHDL.PRG Modul program ini adalah sdbmain.prg pilih menu dari utama adalah 4 - DISPLAY SCHEDULE FOR A GIVEN WEEK". Pelaksanaan dari modlil ini' menghasilkan keluaran dari suatu tabel yang memberikan nama-nama team, danjalur untuk setiap team yang ditugaskan, untuk minggu dalam suatu I1Jusimpenandingan. Modul permintaan minggu yang diinginkan sebagai suatu input, simpan nilai ini sebagai "inval," dan memperbaiki harga input adalah valid, sebelumnya. Satu macam keluaran dari pelaksanaan dari modul ini diberikan pada Gambar 9.15. Logikpadamoduldiberikan padaGambar9.16,dan modul sendiridi pelihatkan pada Gambar 9.17. Penerapan utama adalah JOIN yang membuat relasi sementara, TEMPI. Dalam kasus ini, relasi TEAM dan SCHED serra attribut tnumb, maka nama team dapat digunakan dalam output, dari pada nomor team. 119
  • 22. THE SCHEDULE FOR WEEK NUMBER 2 IIIIIIIIIIIIIII.IIUIIW~M'.~~.. T-EAM LANE NUMBER ----------- AlleyCats 4 Inconsistents 5 TenPins 2 HiRollers 6 Spli tters 1 SandBagger. 3 Gambar 9.15 Keluaran dari modul program wkschdl.prg 1. Execute findwk.prg to find the last week in the s on. Th. la.t week v..luei. returned ... "max_wk." (Note th..tthe SCHED relation is pl..cedinto USE prior to the calling of findwk.prg, so that SCHED ia the rel..tionaeached by findwk.prg.) 2. Input.. v..lue for the week for which the .chedule is de.ir.d, a. "inv..l," ..nd v.rify th..t the week reque.ted i. a v..lid one. Rep...tthis process until the we.k is v..lid. 3. JOIN the TEAM ..nd SCHED relations where sch~d->week = inval, and .ched-)tnumb = team-)tnumb, to form a new rel..tion, TEMP1, keeping only the tname and lane attributes. 4. Output the data header. 5. Output the tname ..nd lane values from TEMP1. 6. ERASE the TEMP1 relation from the database. Gambar 9.16 Logik umum untuk modul program wkschdl.prg 120
  • 23. . type wkschdl.prg ****************************************************************** * *Proc:edure name is "wkschdl.prg" *Written by Glenn A. Jackson *Oakland University, Rochester, HI 48()b3 * *This procedure prints out the schedule far a given week. * *Input is the week of the season for which the schedule is *desired. *Output is the schedule giving team name and lane aS3iqnment. * *Procedure is called by sdbmain.prq * * CLEAR CLOSE DATABASES SELECT 1 USE b:sched STORE TO inval * *Find last week in the season -- value returned as max_wk * DO b:findwk * DO WHILE . t. ~ 7,10 SAY 'ENTER WEEK FOR WHICH SCHEDULE IS DESIRED' ~ 9,10 SAY 'ONLYVALUES BETWEEN 1 AND '+ STR(max_wk,2) + ' ALLOWED' . 11,10 GET inval READ IF VAL(inval).> max_wk .OR. VAL(inval) ( t ~ 15,10 SAY 'THE WEEK INPUT IS INVALID !~,o0' DO b:delay STORE 'TO inval CLEAR ELSE EXIT ENDIF ENDDO * ~ 15,10 SAY 'PLEASE WAIT CALCULATIONS BEING MADE!! 0' SELECT 2 USE team SELECT sched JOIN WITH team TO b:templ FOR week = VAL (in val) .AND. ; tnumb = team-}tnumb FIELDS team-~tname, lane * *Output the schedule to the screen * CLEAR (i5,10 SAY THE SCHEDULE FOR WEEK NUMBER '+ inval . 6,10 SAY ==============================' SAY TEAM LANE NUMBER' (jI 7,10 @ 8,10 SAY ----------- * SELECT 3 USE b:templ GOTO TOP STORE 9 TO linene DO WHILE .NOT. EOF() 8 linene,10 SAY' + tname + ' '+ STR<lane,2) STORE lineno+l TO linene SKIP ENDDO 822,10SAY' WAIT CLEAR CLOSE DATABASES ERASE bltempl.dbf RETURN Gambar 9.17 Modul program wkschdl.prg 121
  • 24. 9.7 MODUL PROGRAM EOSRPT.PRG Modul program ini adalahsdbmain.prg jika dari menu utama dipilih "5- GENERATE AN END-OF-SEASON REPORT." Pelaksanaan dari modul ini menghasilkan penentuan dan keluaran dari nama-nama dari pemain yaitu (1) skor tertinggi pertandingan tunggal, (2) rangkaian 3-pertandingan, dan (3) rata-rata tertinggi pada akhir musim pertandingan. Keluaran dari modul ini untuk data dalam database diberikan pada Gambar 9.18. Logik pada modul tersebut diberikan dalam Gambar 9.19, dan modulnya sendiri diperlihatkan dalam Gambar 9.20. Suatu keistimewaan yang luar biasa dari eosrpt.prg adalah nama-nama dari pemain yang 'llemiliki skor tertinggi yang sarna dan memberikan kategori yang aman. Nama-nama dari pemain dengan skor tertinggi pada kategori yang diberikan tersimpan dalam suatu relasi unary berhubungan dengan kategori. Nama-nama inikhususnya dibuat relasi HIGHGAM, HIGHSER, dan HIGHAVG. Relasi-relasi unary karena setiap relasi hanya memiliki satu atribut, bname. Setiap skor pemain dinalisa, jika skomya ditemukan sarna dengan satu nilai yang tertinggi yaitu nama pemein adalah relasi yang diijinkan APPEND. Jika skor pemain lebih tinggi dari harga yang diperkirakan, relasi ZAP menghilangkan harga lama dan nama barn di APPEND. Ketiga relasi ini harus diciptakan sebelum program dilaksanakan, tetapJ setiap relasi selalu anggota ketika pelaksanaan dari eosrpLprg dimulai. Semua tupelo- tupel ERASE dari tiga relasi sebelum eosrpLprg di hentikan. Setelah dihapus, isi dari setiap relasi adalah output menggunakan suatu modul program pendek yaitu out.prg. Suatu listing program fileouLprg dan struktur yang pasti untuk setiap relasi-relasi khusus yang yang diberikan pada akhir bab. END-OF-SEASON REPORT HIGHEST SINGLE GAME SCORE OF 202 WAS BOWLED BY THE FOLLOWING BOWLERCS). Roy Lan. Paul Mille,.. Rua..el Taylo,.. HIGHEST THREE GAME SERIES OF ~~9 WAS BOWLED BY THE FOLLOWING BOWLERCS)I Roy Lane Paul Mille,.. HIGHEST SEASON PER GAME AVERAGE OF 179 WAS BOWLED BY THE FOLLOWING BOWLERCS). Paul Mill.,.. Gambar 9)8 Keluaran dari eosrpLprg untuk data pada contoh data base 122
  • 25. 1. EMecute proljlr.m modul. f.i ndwk. prg to determi n. tt8 l..t week in the bowlinljl on. The l..t week v.lue i. returned .. "maK_wk." 2. Initi.lize pertinent v.ri.ble.. 3. DO the followinljl 10ljlic .. long .. there ar. tuple. left in the BOWLER r.l.tion. a) Save the bname value from the current bowler tuple in "n.me.'1 b) EMecute program module bwlrst.prg (after setting variable eos_check to 'EOS') to determine the high.st single game score, highest three-game series scare, and the end-of-s.ason average for this one bowler. These values are returned in vari.bles IIhi_game,1I "hi_series," and IIbavg,1I respectiv.ly. c) The highest single game score f~r all bowlers is stored in "best_game" I thus, if hi_game> best_game, save hi_game as best_game, and ..ave the bowler's name in HIGHGAM after eliminating previous names. If hi_game = b~t_game, save the bowler's name in HIGHGAM. The highest three game series score for all bowlers is stored in "best_series"; thus if hi_series> best_series, save hi_series as b.st_seri.s, and save the bowler's name in HIGHSER after eliminating previous names. If hi_series a best_series, save the bowler's name in HIGHSER. The highest av.rage for all bowlers is stored in "best_avg"1 thus if bavg > best_.vg, save bavg a. best_avg, and .ave the bowler's name in HIGHAVG .fter eliminating previous names. If bavg > best_avg, save the bowler's name in HIGHAVG. 4. Output the final values. Gambar 9.19 Logik umum dari modul program eosrpt.prg 9. 8 MODUL PROGRAM TEAMSTD.PRG. Modul sdbmain.prgjikadipilih dari menu utama"3-DISPLAYTEAM STAND- INGS." Pelaksanaan dari modul ini menghasilkan keluaran record menang-kalah dari setiap team untuk satu minggu pada musim pertandingan. Modul dimulai dengan permintaan minggu dari musim pertandingan dimana kedudukan yang diinginkan. Setelah memastikan minggu yang di input adalah sah/valid, program menghitung record menang-kalah untuk setiap team dan mencetak kedudukan dalam bentuk tabular. lumlah lencana untuk setiap tern juga merupakan keluaran. Gambar9.21 memperlihatkan kedudukan team pada akhirminggu kedua untuk data yang tersimpan pada contoh database. Gambar 9.22 memberikan logik umum dari modul, ketika Gambar 9.23 memperlihatkan modul yang sebenarnya. Modul program ini jauh lebih rumit dalam penerapan, dan membutuhkim waktu untuk pelaksanaan. Perkiraan waktu yang dibutuhkan untuk menghitung kedudukan minggu pertama adalah 4 menit, ketika waktu yang dibutuhkan untuk menghitung kedudukan untuk minggu keempat adalah 12menit. Alasan untuk peningkatan pada waktu antara minggu pertama dan minggu ke empat adalah ringkasan data tidak disimpan satu minggu berikutnya. Maka pada suatu perintah untuk mnghitung 123
  • 26. type .o.rpt.prg **************************************************************** *Proc.dur. n.m. i. ".o.rpt.prg". *Written by al.nn A. Jack.an *O.kland Univ.r.ity, Roch..t.r, MI 48063 * *This proc.dur. c.lcul.t.. .nd print~ out the .nd-of on * r.port. *Proc.dur. i. c.ll.d by .dbm.in.prg. *This proc.dur. c.ll. bwlr.t.prg * CLEAR *80m. data will b. r.turn.d from "bwlr.t.prg" u.ing PUBLIC * v.riabl... PUBLIC nam., hi_..ri.., hi_g.m., b.vg, .o._ch.ck, fn.m., wk * . ~,10 SAY 'BE PATIENT -- THIS WILL TAKE SOME TIME-!!!!!' * SELECT 2 USE bl.ch.d * *Find la.t w..k in the on -- v.lu. r.turn.d a. maK_wk. * DO blfindwk * SELECT :5 USE blbowl.r aOTO TOP STORE 0 TO b..t_..ri.., b..t_gam., b..t_avg SET SAFETY OFF DO WHILE .NOT. EOF() STORE bn.m. TO n.m. STORE STR(maK_wk,2) TO wk STORE 'EOS' TO .o._ch.ck DO blbwlr.t SELECT 4 * IF hi_g.m. > b..t_g.m. STORE hi_game TO b..t_g.m. USE blhighg.m ZAP APPEND BLANK REPLACE bn.m. WITH n.m. USE ELSE IF hi_g.m. · USE blhighg.m b..t_g... APPEND BLANK REPLACE bn.m. WITH n.m. USE ENDIF ENDIF * IF hi_..ri..- > b..t_..ri.. STORE hi_..ri.. TO b..t_..ri.. USE blhigh..r ZAP APPEND BLANK REPLACE bn.m. WITH name USE ELSE Figure 9.10 (a) First half of program module eosrpt.prg. 124
  • 27. IF hi_..ri.. - b..t_..ri.. USE blhi;h..r APPEND BLANK REPLACE bn.m. WITH n.m. USE ENDIF ENDIF * IF b.v; > b..t_.v; STORE b.vg TO b~.t_.vg USE blhigh.v; ZAP APPEND BLANK REPLACE bn.m. WITH n.m. USE ELSE IF b.vg - b..t_.vg USE blhigh.vg APPEND BLANK REPLACE bnam. WITH name UBE END IF ENDIF * SELECT bowler SKIP ENDDO *Print out h..d.r for .nd-of on output * (I~,2~ SAY 'END-OF-BEASON REPORT' (I6,2~ SAy...................... (I8,20 SAY 'HIGHESTSINGLE GAME SCORE OF + STR(b..t_g.m.,3) (I9,20 SAY 'WAS BOWLED BY THE FOLLOWING BOWLER(S)I STORE "blhighg.m" TO fn.m. . . DO blflleout * . ROW()+2,20 SAY 'HIGHESTTHREE GAME SERIES OF (IROW()+1,20 SAY + STR(b..t_..ri..,3) . 'WAS BOWLED BY THE FOLLOWING BDWLER(S)I . STORE "blhigh&er" TO fn.m. DO blHl.out * . ROW()+2,20 BAY 'HIGHEST SEASON PER GAME AVERAGE OF (I ROW () +1 ,20 SAY + STR(b..t_.vg,3) WAS BOWLED BY THE FOLLOWING BOWLER (S).I . . STORE "blhigh.vg" TO fn.m. DO blHl.out * (I 24,20 SAY . WAIT SET SAFETY ON RETURN B> Figure 9.10 (b) Second half of program module eosrpt.prg. 125
  • 28. kedudukan minggu keempat, kedudukan untuk minggu pertama, kedua dan tiga hams dihitung kembali. Kenyataan ini adalah hasillangsung dari rancangan keputusan, dibuat pada bab 5, tidak menyimpan data pada database dapat menghitung dari atribut yang lain dalam database. Mengingat besarnya nilai waktu yang terlibat, rancangan keputusan hams tidak meragukan untuk dievaluasi kembali. (Dapat memakan waktu sekitar satu jam untuk menghitung kedudukan dalam waktu 15 minggu). Beberapa usul untuk penyusunan waktu pelaksanaan dibahas pada akhir bab ini. Teamstd.prg penggunaan relasi 'extra' permanen yang lain, T_STATS, bukan bagian dari rancangan database yang sebenarnya. Telasi ini memiliki 4 atribut: tnumb, wins, losses, dan totpins. Ketika relasi ini dibentuk, harga tnumb di set 1 sampai dengan 6,jumlah team dalam liga (persatuan), dan s~muaharga-harga atribut lain adalah no1.Semua harga-harga atribut, kecuali tnumbdi setkembali menjadi nol sebelum pelaksanaan program teamstd.prg dihentikan. T_STATS selalu memiliki 6 tupel, satu untuk setiap team dalam perkumpulan (liga), dengan tnumb sebagai kunci primer. Perkembangan pelaksanaan dari teamstd.prg, membuat perhitungan berdasarkan pada minggu demi satu minggu dan team demi team. harga-harga pada T_STATS disesuaikan. MONDAY NtBHT IRREGULARS BOWLING LEAGUE TEAM STANDINGS AT THE END OF WEEK NUMBER 2 =========================================== TEAM NAME WINS LOSSES TOTAL PINS --------- ---- ------ ---------- All.yCts :5.0 3.0 3106 Inconsistents 2.0 6.0 3038 TenPins 1.0 7.0 3019 HiRollers 7.0 1.0 3358 Sp 11 t ters 6.5 1.5 3225 SndBaggers 2.5 5.5 3181 Gambar 9.21 Kedudukan team pada akhir minggu kedua, keluaran dari teamstd.prg 126
  • 29. 1. Execute findwk.prg to determine the last week for which scores have been entered into the SCORES relation. The last week value is returned as "max_wk." 2. Input the value of the week for which standings are desired, as "in_wk," and verify that the week requested is valid. Repeat this proc.ss until a valid value of in_wk has been entered. 3. For each lane (noted as In), DO the following for each week (noted as wk): a) JOIN the SCHED and BOWLER relations where sched-)week = wk, sched-)lane = In and sched-)tnumb = bowler-)tnumb, to form a new relation, NAMES, keeping only the bname, tnumb, and stavg attributes. (NAMES will hold the names of all bowlers from the team that bowled on a given lane on a given week in the season.) b) For each bowler, whose name appears in NAMES, DO the following: Locate the tuple in SCORES for this bowler and this week, Determine this bowler's handicap for this weekl Add this bowler's individual game scores to the team totals for each game (including the current handicap). The code used here iSI BIA is the total pins for gamel for the team on an odd-numbered lane, while GIB is the total pins for gamel for the team on the opponent's even-numbered lane. B2A, G3A, G2B, and G3B 'have similar meaning. REPLACE totpins in T_STATS with the old value of totpins plus the sum of this bowler's three game scores (without handicap). Adjust the won and lost records for the last two teams analyzed. The coding here is that the team on the odd-numbered lane has its identifiers ending with "A," 0 "a," while the team on the even-numbe ed lane' has identifie s that end in "B," or "b." 4. JOIN the T_STATS and TEAM elations whe e t_stats-)tnumb = team-)tnumb to fo m a new elation, STATS, keeping only the wins, losses, tname~ and totpins att ibutes. 5. Output the league standings f om STATS. 6. ERASE STATS and ze o-out the app op iate att ibutes in T_STATS. Gambar 9.22 Logik umum untuk modul program teamstd.prg. 127
  • 30. 9.9 STRUKTUR DARI RELASI SEMENTARA Modul program eosrpt.prg dan teamstd.prg menggunakan beberapa relasi yang bukan bagian dari database yang dirancang. Relasi-relasi ini ditentukan sebagai relasi-relasi sementara (temporary relations), karena mereka mengandung arti hanya selama pelasanaan dari modul program yang diberikan. Isinya adalah kelanju- tan dari pembuatan (created) dan penghilangan (destroyed), dan isinya tidak sah suatu modul program digunakan untuk menghentikan pelaksanaan program. ...................................-...........-............. B>type team.td.prQ *Pracedu... name i. *Wrltten by Barbara A. HacNell IIt..matd.prg" *Hodlfled by Glenn A. Jackson *Oakland University, Rochester, HI 4BObJ * *Thl. procedure calculate. and print. out the leaQue .tandlnQ. * for any week. The week I. Input from the terminal. * *ProcedureI. called by .dbmaln.prQ * *Thl. procedure u.e. several temporary relation. to .tore * Intermediate data required In the calculation.. These * relations ar. dl.cu...d In Section 9.... . * .Thl. CLEAR SELECT procedure 1 call. blhndkp_avQ.prQ USE b..cor.. SELECT 2 USE blbowler SELECT J USE b.t .tat. INDEX b.numb SELECT 4 USE b..ched SELECT':5 USE blteam . - _Find l..t w..k for which scor.. have b..n entered -- .. mAH_wk . SELECT .Cores DO blfindwk -Enter the w.ek for which the standlnQ. ar. de.Ired -- a. In_wk. - STORE' TO in wk DO WHILE .t. - . 7,1:5SAY 'IF YOU WISH THE LEAGUE STANDINGS FOR THE SEASON TO DATE' . B,I:5SAY 'ENTER '+STRlmax_wk,2)+ , " THE LAST WEEK FOR WHICH DATA WERE ENTERED' . 9,1:5SAY 'OTHERWISE, ENTER THE WEEK DESIRED.' . 11,1:5GET In wk READ - IF VALlIn_wk) > max_wk .OR. VALlln_wk) ( I . 1:5,10SAY 'THE WEEK INPUT IS INVALID! '!!' DO bldelay STORE' 'TO In_wk CLEAR ELSE CLEAR EXIT ENDIF ENDDO - -Calculat. team standlnQs for w..ks 1 thru In_wk. - STORE 0 TO GIA,G2A,GJA,G1B,G2B,GJB STORE 1 TO In,wk Gambar 9.23 (a) modul program teamstd.prg (1) 128
  • 31. DO WHILE wk <- VALCin_wk) SELECT .ch.d JOIN WITH bow1.r TO blnam.. FOR w..k-wk .AND. 1an.-ln .AND., tnumb-bow1.r->tnumb FIELDS bowl.r-)bnam., tnumb. .tavQ SELECT 6 USE blnam.. SELECT t_.tat. SEEK name.->tnumb SELECT name. DO WHILE .NOT. EOFC) SELECT .core. LOCATE FOR bnam.-nam..-)bnam. .AND. w..k-wk IF wk-1 IF name.-).tavQ < 200 STORE INTCC200-nam..-).tavQ)*0.7~) TO hndkp ELSE STORE 0 TO hndkp ENDIF ELSE STORE bname TO ha_name STORE wk-1 TO ha_week DO blhndkp_av'ij ENDIF IF 1n-1 .OR. 1n-3 .OR. 1n-~ STORE game1+hndkp+G1A TO G1A STORE Qame2+hndkp+G2A TO G2A STORE gam.3+hndkp+G3A TO G3A ELSE STORE 'ijame1+hndkp+G1B TO G1B STORE game2+hndkp+G2B TO G2B STORE 'ijame3+hndkp+G3B TO G3B ENDIF SELECT t_stats REPLACE totpins WITH , totpin.+.core.->Qam.1+.cor..->Qam.2+.core.->gam.3 SELECT nam..' SKIP ENDDO * IF In-2 .OR. 1n-4 .OR. 1n-6 GOTO TOP STORE tnumb TO t.amb SELECT t_.tat. STORE 1 TO count DO WHILE count < 4 STORE "G" + STRCcount,1) + "A" TO gamea STORE "S" + STRCcount,1) + "B" TO gam.b IF ~Qam.a < ~gam.b REPLACE win. WITH win.+1 FOR tnumb-t.amb REPLACE 10 WITH + 10 +1 FOR tnumb-t.ama ELSE IF ~gam.a > ~Qam.b REPLACE. win. WITH win.+1 FOR tnumb-t.ama REPLACE 10 WITH 10 + 1 FOR tnumb-t.amb ELSE REPLACE win. WITH win. + O.~, 10 WITH, 10 + o.~ FOR tnumb-t.ama .OR. tnumb-t..mb END IF ENDIF STORE count + 1 TO ~ount ENDDO Gambar 9.23 (b) modul program teamstd.prg (2) 129
  • 32. * IF GIA + G2A + G3A < GIB + G2B + G3B REPLACE wins WITH win. + 1 FOR tnumb=te.mb REPLACE 10 WITH 10 + t F'OR tnumb=teama ELSE IF GIA + G2A + G3A > GIB + G2B + G38 REPLACE win. WITH win. + 1 FOR tnumb=teama REPLACE 10sse. WITH 10&&&s + 1 FOR tnumb=teamb ELSE REPLACE wins WITH win. + o.~, 10..es WITH I 10 + o.~ FOR tnumb-t..m. .OR. tnumb=t..mb ENDIF ENDIF STORE ° TO GIA,G~A,G3A,GIB,G2B,G3B ELSE GOTO TOP STORE tnumb TO teama ENDIF IF 1n .. b STORE 1 TO In STORE wk + 1 TO wk ELSE STORE 1n + 1 TO 1n ENDIF SELECT n.mes USE ERASE b:n.mes.dbf ENDDD. SELECT t_st.t. JOIN WITH team TO b:stat. FOR tnumb=te.m->tnumb FIELDS win.,10 ,tn.me,totpln. SELECT 7 USE b:st.ts (t 5,10 SAY MONDAY NIGHT IRREGULARS BOWLING LEAGUE' (I 6,10 SAY' TEAM STANDINGS AT THE END OF WEEK NUMBER ' " 7,10 SAY , ===========================================1 (I 9,10 SAY TEAM NAME WINS LOSSES TOTAL PINS' (I 10,10 SAY' --------- ------ ----------. * DO WHILE .NOT. EOF() (tROW()+1,10 SAY tname +' '+STR(wins,4,1)+ ' '+ STR(10s.e.,4,1)+' '+ STR(totpins,5) SKIP ENDDO SELECT st.ts USE ERASE blstat..dbf SELECT t._.tat. REPLACE ALL win. WITH 0, 10s.e. WITH 0, totpins WITH ° * (I 22,10 SAY WAIT RETURN B> Gambar 9.23 (c) modul program teamstd,prg (3) 130
  • 33. Gambar 9.24 memperlihatkan struktur untuk tiga relasi-relasi semantara yang tidak memiliki populasi (kosong)kecuali selamapelaksanaan darieosrpt.prg. Gambar 9.25 diberikan strukturdari T_STATS, dan isi dari T_STAT akan ditampilkan pada awal dan akhir pelaksanaan dari teampns.prg. . . use list highgam structure structure for database: B:highgam.dbf Number of data records I 0 Date of last update : 11/03/86 Field Field name Type Width Dec 1 BNAME Character 15 ** Total ** 16 (a) . use highser . list structure Structure for database I Blhighser.dbf Number of data records I 0 Date of last update : 11/03/86 Field Field name Type Width Dec 1 BNAME Character 15 ** Total ** 16 (b) . . highavg use structure list Structure for database: B:highavg.dbf Number of data records : 0 Date of last update : 11/03/86 Field Field name Type Width Dee 1 BNAME Character 1~ ** Total ** 16 (c) Gambar 9.24 Strukturdari3 relasi sementarayangpadaawalnyatidakmemiliki populasi 131
  • 34. . use t_stats . list structure Stru~tur. ~or databac~ : e:t_stats.db~ Number of data records I 6 D.te of l.st update I 11/03/86 Field Field name Type Width Dec 1 TNUMB Numeric 1 2 WINS Numeric 4 1 3 LOSSES Numeric 4 1 4 TOTPINS Numeric 5 ** Total ** 15 (a) .TNUMB list off WINS LOSSES TOTPINS 1 0.0 0.0 0 2 0.0 0.0 0 3 0.0 0.0 0 4 0.0 0.0 0 5 0.0 0.0 0 6 0.0 0.0 0 (b Gambar 9.25 (a) Struktur dan (b) isi awal dari relasi sementara T_ST ATS .**************************************************************** *Procedure name is "fileout.prg". *Written by Glenn A. Jackson *Oakland University, Rochester, MI 48063 * *This procedure outputs names from several temporary relations * created by e08rpt.prg. * *procedure is called by eosrpt.prg * *The name of the rel.tion to be output is contained in variable * fn.me. The relation h.s only one .ttribute. bname. * USE ~fname GOTO TOP DO WHILE .NOT. EOF() ~ROW()+1,30 SAY bname SKIP ENDDO ZAP RETURN Gambar 9.26 Modul program fileout.prg yang disebut eosrpt.prg 132
  • 35. Suatu daftar dari fileout.prg, modul program dimana keluaran isi dari relasi HIGHGAM,HIGHVG,dan HIGHSER,diberikanpadaGambar9.26. . 9.10 KEBUTUHAN UNTUK SUATU MENU KELUARAN (INPUT) Menu dari item-item diberikan pada gambar 9.1 membicarakan tentang bagaimana cara pengambilan data dari database. Menu tidak membantu sekretaris dalam menambah tuple pada database. Masalah yang umum ditemukan oleh sekretaris adalah dalam menabah nilai permainan bowling pada minggu kelima. Di bagian ini diharuskan menulis dengan cepat, di dalam database berisi data eletronik dimana standaryang digunakan dalam dBase III adalah perintah APPEND dan EDIT. Perintah ini banyak berkaitan dalam database untuk melihat pandangan dari nilai, di dalam keterangan perintah APPEND dan EDIT tidak mengeceklmembandingkan kunci primer(primary key) yang sarna. Disain dari database yang asli dengan nyata tidak memperbolehkan terjadinya kerangkapan kunci primer. Jika kondisi itu dijal- ankan, penulis software hams dirancang dan akan menunjukkan tupel-tupel yang dimasukkan kedalam database yang menyebabkan adanya duplikasi kunci primer. 1. USE bowl.r. 2. Input valu.. for attribute. bname, w.ek, game1, gam.2, and g.me3 a. variable valu.. nam., ~~, g1, g2, and g3, respectiv.ly. 3. COUNTthe number of tupl.. wh.re bname K name and week .. wk. 4 IF COUNT .. 0 then APPEND the n.w tuple to the relation ELSE output an .rror m g. .nd ..k for a new tupl.. Figure 9.27 Logic to keep duplicate primary keys out of the BOWLER relation. 133