• Tidak ada hasil yang ditemukan

bab9 pelaksanaan landas data sekretaris bowling menggunakan dbase3

N/A
N/A
Protected

Academic year: 2017

Membagikan "bab9 pelaksanaan landas data sekretaris bowling menggunakan dbase3"

Copied!
35
0
0

Teks penuh

(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 :

(2)

2. Setiap tim memiliki empat peboling.

3. Musim kompetisihanyaberlangsung 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 ?

** TOlal **

B:sched.dbf 24

05/('1)/86 Type Width

Numeric ]

Numeric ]

Numeric ]

4

Dec

phone L street

.list structure Structure for dalabase Number of dala record Date of last update

Field Field Name

1 TNUMB

2 WEEK

3 LANE

w

~

Gambar 9.1 (a) Struktur (b) Isi dari relasi SCHED.

. 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

3 3 ]

4 3 4

5 3 5

1 4 5

2 4 I

3 4 3

4 4 2

(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 Number of dala records Date of lasl updale

Field Field name

1 TNUMB

2 TNAME

3 CAP1N

** TOlal **

B : leam.dbf

6 05/10/86

Type Numeric Character characler

Widlh 1 15 15 32

Dec

(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.

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

(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 Number of data records:

Date of last update

B : bowler.dbf 24

OS/20/86

(a)

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

(5)

Gambar 9.3 (a) Struktur (b) isi dari relasi BOWLER. 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

(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 informasiyang diperlukanuntukmenjawab

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

(7)

li.t off for week <- 2

BNAME WEEK GAMEl

Jean Adam. 1 119

Steve Adams 1 112

Bill Black 1 137

80nnie BlACk 1 120

Bo Blow 1 160

Jo Blow 1 101

Jim Smith 1 160

Mary Smith 1 120

Ann Jon.. 1 98

John Jane. 1 14~

Joe Brown 1 140

Bue Brown 1 121

Cindy FolC 1 119

Randy FolC 1 143

Ru...l TAylor 1 167

Ruth Taylor 1 110

Joy LAne 1 126

Roy Lane 1 14~

Jill Miller 1 111

PAul Miller 1 180

Dan White 1 1~6

Jan Whit. 1 130

li.A Moore 1 99

Mike Moore 1 1~0

Jean Adam. 2 120

Steve AdAm. 2 130

Bill Black 2 1~4

80nnie Black 2 120

80 Blow 2 1~9

Jo Blow 2 10~

Jim Smith 2 160

Mary Smith 2 120

Ann Jones 2 100

John Jones 2 1~8

Joe Brown 2 139

Sue Brown 2 126

Cindy FolC 2 104

Randy FolC 2 1~0

Ru..el Taylor 2 160

Ruth TAylor 2 130

Joy Lane 2 130

Roy Lane 2 183

Jill Miller 2 110

Paul Miller 2. 180

Dan White 2 161

JAn White 2 124

lisa Moore 2 120

Mike Moore 2 1~1

GAME2 120 140 1~~ 12~ 14~ 91 1~0 110 110 1~0 127 128 110 1~0 1~0 12~ 127 180 101 196 163 12~ 120 149 12~ 146 149 130 13~ 91 160 110 110 138 138 124 90 137 16~ 123 11~ 179 98 174 1~~ 119 102 140 GAME3 94 138 1~~ 11~ 12~ 93 146 11~ 107 134 129 124 83 148 166 122 122 176 112 134 1~4 108 111 121 100 140 148 110 12~ 90 170 90 110 13~ 12~ 110 108 163 1~0 108 120 138 103 178 1~6 130 100 12~ (b)

li.t off for week >- 3

BNAME WEEK GAMEl

Jean Adams 3 123

Steve Adams 3 134

Bill Black 3 1~6

Bonnie Black 3 123

Bo Blow 3 165

Jo Blow 3 89

Jim Smith 3 164

Mary Smith 3 112

Ann Jane. 3 108

John Jane. 3 14~

Joe Brown 3 136

Sue Brown 3 124

Cindy FolC 3 99

Randy FolC 3 1~0

Ru..el Taylor 3 189

Ruth Taylor 3 135

Joy Lane 3 123

Roy Lane 3 201

Jill Miller 3 108

Paul Miller 3 198

Can White 3 161

Jan White 3 119

Li.a Moore 3 121

Mike Moore 3 148

Jean Adam. 4 111

Steve Adam. 4 131

Bill Black 4 137

Bonnie Black 4 119

Bo Blow 4 143

Jo Blow 4 89

Jim Smith 4 1~8

Mary Smith 4 116

Ann Jones 4 103

John Jone. 4 148

Joe Brown 4 130

Sue Brown 4 124

Cindy FolC 4 104

Randy FolC 4 152

Ru.sel Taylor 4 16~

Ruth Taylor 4 119

Joy Lane 4 126

Roy Lane 4 170

Jill Miller 4 110

Paul Miller 4 176

Can White 4. 156

Jan White 4 124

Li.a Moore 4 110

Mike Moore 4 14~

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

(8)

Jawaban

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

bname phone

Joe Brown 689-4567

Sue Brown 689-4567

Lisa Moore 689-8901

(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

(10)

Padajawaban kedua, perintah CLEAR ALL digunakan untuk menghindarkan kesalahan ALIAS, yang mungkin timbul dalam pengaturan wilayah kerja 1 dan 2

denR!nperimahpenRRabunRRnS~L~:CT.(k~~RIRhRflifli ~kRflrimhul ji~~ TEAM

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

(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 Number of data records Date of last update

B:scores.dbf 96

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

(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

(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

(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 yang diberikan 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"

(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 200 dengan 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 IFeos_check= 'EOS' WHENBWLRST.PRGIS EXECUTED

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

(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.

(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 *

(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 @ 12,20 SAY @ 14,20 SAY @ 16,20 SAY @ 18,20 SAY @ 22,20 SAY

'A VERAGE PINS PER GAME: '+ STR(bavg,3)

(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"

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.

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

(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

· typete8J11pns.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,g8J11e2.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

(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.

(22)

THE SCHEDULE FOR WEEK NUMBER 2

IIIIIIIIIIIIIII.IIUIIW~M'.~~..

T-EAM LANE NUMBER

---AlleyCats Inconsistents TenPins HiRollers Spli tters SandBagger.

4 5 2 6 1 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.

(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 . 6,10 (jI 7,10 @ 8,10 SAY SAY SAY SAY

THE SCHEDULE FOR WEEK NUMBER '+ inval

=============================='

TEAM LANE NUMBER'

---*

SELECT 3 USE b:templ

GOTOTOP

STORE 9 TO linene DO WHILE .NOT. EOF()

8 linene,10 SAY' + tname + ' STORE lineno+l TO linene

SKIP ENDDO 822,10SAY' WAIT CLEAR CLOSE DATABASES ERASE bltempl.dbf RETURN '+ STR<lane,2)

(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.,..

(25)

1. EMecute proljlr.m modul. f.i ndwk. prg to determi n. tt\8 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 BOWLERr.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.

(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.

·

b..t_g...

USE blhighg.m 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

(27)

IF hi_..ri..

- b..t_..ri..

USE blhi;h..r

APPENDBLANK

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 . + STR(b..t_..ri..,3)

(IROW()+1,20 SAY '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 . + STR(b..t_.vg,3)

(I ROW () +1 ,20 SAY .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>

(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

===========================================

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

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

(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.

(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 pembuakelanju-tan (created) dan penghilangan (destroyed), dan isinya tidak sah suatu modul program digunakan untuk menghentikan pelaksanaan program.

B>type team.td.prQ

...-...-...

*Pracedu...name

i.

IIt..matd.prg"

*Wrltten by Barbara A.HacNell *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. procedure call. blhndkp_avQ.prQ

.

CLEAR

SELECT 1 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

(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 STORE STORE STORE ELSE

STORE STORE STORE ENDIF

SELECT t_stats

REPLACE totpins WITH ,

totpin.+.core.->Qam.1+.cor..->Qam.2+.core.->gam.3 SELECT nam..'

SKIP ENDDO

.OR. 1n-3 .OR. 1n-~

game1+hndkp+G1A TO G1A

Qame2+hndkp+G2A TO G2A

gam.3+hndkp+G3A TO G3A

'ijame1+hndkp+G1B TO G1B game2+hndkp+G2B TO G2B 'ijame3+hndkp+G3B TO G3B

*

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

(32)

*

IF GIA + G2A + G3A < GIB + G2B + REPLACE wins WITH win. + 1 FOR

REPLACE10 WITH 10 + t ELSE

IF GIA + G2A + G3A > GIB + G2B + REPLACE win. WITH win. + 1 FOR REPLACE 10sse. WITH 10&&&s + 1 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 .. STORE STORE 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 (I 6,10 SAY' " 7,10 SAY , (I 9,10 SAY

(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

G3B

tnumb=te.mb

F'OR tnumb=teama

G38

tnumb=teama FOR tnumb=teamb

b

1 TO In wk + 1 TO wk

MONDAY NIGHT IRREGULARS BOWLING LEAGUE'

TEAM STANDINGS AT THE END OF WEEK NUMBER '

---===========================================1

---.

TEAM NAME WINS LOSSES

B>

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

TOTAL PINS'

(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 highgam

.

list 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)

.

use highavg

.

list structure

Structure for database: B:highavg.dbf

Numberof data records : 0

Date of last update : 11/03/86

Field Field name Type Width Dee

1 BNAME Character 1~

** Total ** 16

(c)

(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

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

(a)

.

list off

TNUMB 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

(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..

Gambar

Gambar 9.1 sampai 9.2 menunjukkan dua buah struktur dari ujian data yang
Gambar 9.2 (a) Struktur (b) Isi dari relasi TEAM.
Gambar 9.3(a) Struktur
Gambar 9.5 Menu utama untuk database sekretaris bowling
+7

Referensi

Dokumen terkait

Hasil perhitungan penelitian menunjukkan bahwa skor tertinggi yang diperoleh adalah 34 dan skor terendah adalah 19. Dari analisis diperoleh harga rerata 26,26 mempunyai

Kita dapat mengetikkan nama barang yang ingin kita cari pada tempat yang telah disediakan oleh website, atau bisa terlebih dahulu memilih kategori – kategori yang telah

menggunakan metode Fuzzy Sugeno untuk data tahun 2018 menunjukkan nilai skor tertinggi alternatif sebesar 2,60 yaitu Tripoli, sistem yang dibangun dapat melakukan perangkingan

Dari skor CPM di atas diketahui bahwa yang menjadi saingan terkuat dari Smart Kidz untuk kategori permainan anak-anak adalah Cartoon Kingdom yang memiliki total nilai tertinggi

Proses penentuan kelompok unggul dan kelompok asor ini adalah dengan cara terlebih dahulu mengurutkan skor total setiap siswa mulai dari skor tertinggi sampai dengan

Artinya jawaban yang tertinggi adalah jawaban setuju dengan kategori kuat, dengan skor 60 yang dinyatakan oleh 15 dari 36 responden, kemudian jawaban sangat setuju

Dari tabel 4.12 dapat dilihat bahwa dari ketiga kategori yang memiliki nilai kontras tertinggi terdapat pada kategori jantung sebesar 0,44 dan nilai kontras terendah

Hasil f1-score dalam memprediksi kategori rentang harga pada metode Naïve Bayes dari urutan yang tertinggi ke terendah adalah sama dengan hasil evaluasi model klasifikasi data mentah