FOLIO ASK PT3 2020
____________________________________________________________________________
PERNYATAAN MASALAH :
SISTEM PENGIRAAN PEMBAYARAN
UNTUK JUALAN
SEE HUP BAKERY DI CHENG PERDANA
NAMA PELAJAR : PANG KAM CHING
KELAS : 3 NEKAD
NAMA GURU YANG MENANDA : PUAN HOO MEOW LIN
NAMA SEKOLAH : SMK TUN HAJI ABDUL MALEK
TARIKH HANTAR : 29 NOVEMBER 2020
KANDUNGAN M/S
3
3
-
BIL TAJUK
1. PENDAHULUAN
2. CARTA GANTT
3. FASA PEMBANGUNAN ATUR CARA :
a. Analisis Masalah 4
b. Reka Bentuk Atur Cara 4-23
c. Pengekodan 24-25
d. Pengujian dan Penyahpepijatan 26-38
e. Dokumentasi 39-55
4. PELAPORAN PENGGUNAAN TEKNIK PEMIKIRAN 4-55
KOMPUTASIONAL BAGI SETIAP FASA PEMBANGUNAN
ATUR CARA
5. PENGHASILAN PRODUK 56
6. CADANGAN PENAMBAHBAIKAN 57
7. PENUTUP 58
8. LAMPIRAN 59-63
PENDAHULUAN
S aya Pang Kam Ching yang bersekolah di Tingkatan 3, Sekolah SMK TUN
HAJI ABDUL MALEK telah menjalankan projek ASK ini. Saya menjalankan tajuk
tentang Sistem Bayaran Jualan See Hup Bakery Di Cheng Perdana.
Tempoh membuat projek ASK ini ialah dari Mac hingga December.
Tempoh ini lebih daripada empat bulan dan memadai untuk saya menyiapkan
projek ini.
CARTA GANTT
TEKNIK FASA 1 : Analisis Masalah
LERAIAN
1. Masalah Besar
Sistem Bayaran Jualan SEE HUP BAKERY Di Cheng Perdana
2. Bahagian Kecil / Masalah Kecil
(i) Pengiraan jumlah bayaran
● Roti
● Kek
● Minuman
(ii) Pengiraan baki bayaran
FASA 2 : Reka Bentuk Atur Cara
TEKNIK Persamaan Perbezaan
PENGECAMAN
CORAK 1. Harga roti , kek dan minuman 1. Harga
menggunakan unit RM. ● Roti
● Kek
● Minuman
2. Kuantiti roti , kek dan
minuman yang dibeli adalah
berbeza.
TEKNIK Penentuan aspek-aspek penting terdiri daripada :
PENISKALAAN
1. Pengiraan jumlah harga roti = Bilangan roti * Harga roti
2. Pengiraan jumlah harga kek = Bilangan kek * Harga kek
3. Pengiraan jumlah harga minuman = Bilangan minuman * Harga
minuman
4. Pengiraan jumlah bayaran = Jumlah harga roti + Jumlah harga kek
+ Jumlah harga minuman
5. Pengiraan baki bayaran = Wang yang dibayar oleh pelanggan
-Jumlah bayaran
TEKNIK Algoritma dalam bentuk pseudokod seperti di bawah:
PENGITLAKAN
Algoritma dalam bentuk carta alir seperti di bawah:
Algoritma dalam bentuk GUI seperti di bawah:
PSEUDOKOD :
MULA
ISYTIHAR pemboleh ubah jumlah bayaran = RM0
PAPARKAN menu
PAPARKAN mesej ”Sila masukkan nombor roti , kek dan minuman yang anda dipilih”
J IKA anda masukkan nombor = 1
P APARKAN “Roti Kelapa”
KIRAKAN harga roti kelapa * bilangan roti kelapa
yang dimasukkan
J IKA anda masukkan nombor = 2
P APARKAN “Roti Kaya”
K IRAKAN harga roti kaya * bilangan roti kaya yang
dimasukkan
JIKA anda masukkan nombor = 3
P APARKAN “Roti Kacang Merah”
K IRAKAN harga roti kacang merah* bilangan roti
kacang merah yang dimasukkan
JIKA anda masukkan nombor = 4
P APARKAN “Butter Chocolate Bread”
K IRAKAN harga butter chocolate bread * bilangan
butter chocolate bread yang dimasukkan
JIKA anda masukkan nombor = 5
P APARKAN “Cheese Bread”
K IRAKAN harga cheese bread * bilangan cheese bread
yang dimasukkan
JIKA anda masukkan nombor = 6
P APARKAN “Fruit Cake”
K IRAKAN harga fruit cake * bilangan fruit cake yang
dimasukkan
JIKA anda masukkan nombor = 7
P APARKAN “Mocha Cake”
K IRAKAN harga mocha cake* bilangan mocha cake
yang dimasukkan
JIKA anda masukkan nombor = 8
P APARKAN “Blueberry Cake”
K IRAKAN harga blueberry cake * bilangan blueberry
cake yang dimasukkan
JIKA anda masukkan nombor = 9
P APARKAN “Chiffon Cake”
K IRAKAN harga chiffon cake * bilangan chiffon cake
yang dimasukkan
JIKA anda masukkan nombor = 10
P APARKAN “Butter Marble Cake”
K IRAKAN harga butter marble cake * bilangan butter
marble cake yang dimasukkan
JIKA anda masukkan nombor = 11
P APARKAN “Hundred plus”
K IRAKAN harga Hundred plus * bilangan hundred
plus yang dimasukkan
JIKA anda masukkan nombor = 12
P APARKAN “Cocacola”
K IRAKAN harga cocacola * bilangan cocacola yang
dimasukkan
JIKA anda masukkan nombor = 13
P APARKAN “Air Mineral”
K IRAKAN harga air mineral * bilangan air mineral
yang dimasukkan
JIKA anda masukkan nombor = 14
P APARKAN “Ice Lemon Tea”
K IRAKAN harga ice lemon tea * bilangan ice lemon tea
yang dimasukkan
JIKA anda masukkan nombor = 15
P APARKAN “Soya Bean”
K IRAKAN harga soya bean * bilangan soya bean yang
dimasukkan
JIKA anda masukkan nombor = 16
TAMBAHKAN jumlah bayaran
P APARKAN jumlah bayaran
J IKA wang tunai dibagikan dengan cukup
Wang tunai dimasukkan=jumlah bayaran
C ARI bakinya
J IKA wang tunai dibagikan dengan tidak cukup
P APARKAN “wang tunai yang tidak cukup”
P APARKAN “Sila bagi wang tunai yang cukup”
T AMAT JIKA
TAMAT
CARTA ALIR :
REKA BENTUK GUI : [Copy teks ke python untuk memeriksa jawapannya.]
from tkinter import*
import random
import time;
import datetime
from tkinter import Tk, StringVar, ttk
root=Tk()
root.geometry("1350x750+0+0")
root.title("SEE HUP BAKERY DI CHENG PERDANA")
Tops = Frame (root, width = 1350 , height=100, bd= 12, relief="raise")
Tops.pack(side=TOP)
lblTitle = Label(Tops, font=('arial', 50, 'bold'), text="SEE HUP DI CHENG
PERDANA")
lblTitle.grid(row =0, column=0)
BottomMainFrame = Frame (root, width = 1350 , height=100, bd= 12,
relief="raise")
BottomMainFrame.pack(side=BOTTOM)
f1 = Frame (BottomMainFrame, width = 450 , height=650, bd= 12,
relief="raise")
f1.pack(side=LEFT)
f2 = Frame (BottomMainFrame, width = 450 , height=650, bd= 12,
relief="raise")
f2.pack(side=LEFT)
f2TOP = Frame (f2, width =450 , height=350, bd= 4, relief="raise")
f2TOP.pack(side=TOP)
f2BOTTOM = Frame (f2, width =450 , height=300, bd= 4, relief="raise")
f2BOTTOM.pack(side=BOTTOM)
f3 = Frame (BottomMainFrame, width = 450 , height=650, bd= 12,
relief="raise")
f3.pack(side=RIGHT)
var1=IntVar()
var2=IntVar()
var3=IntVar()
var4=IntVar()
var5=IntVar()
var6=IntVar()
var7=IntVar()
var8=IntVar()
var9=IntVar()
var10=IntVar()
var11=IntVar()
var12=IntVar()
var13=IntVar()
var14=IntVar()
var15=IntVar()
var16=StringVar()
var1.set(0)
var2.set(0)
var3.set(0)
var4.set(0)
var5.set(0)
var6.set(0)
var7.set(0)
var8.set(0)
var9.set(0)
var10.set(0)
var11.set(0)
var12.set(0)
var13.set(0)
var14.set(0)
var15.set(0)
var16.set("")
varRoti_Kelapa =StringVar()
varRoti_Kaya =StringVar()
varRoti_Kacang_Merah =StringVar()
varButter_Chocolate_Bread =StringVar()
varCheese_Bread =StringVar()
varFruit_Cake =StringVar()
varMocha_Cake =StringVar()
varBlueberry_Cake =StringVar()
varChiffon_Cake =StringVar()
varButter_Marble_Cake =StringVar()
varHundred_Plus =StringVar()
varCocacola =StringVar()
varAir_Mineral =StringVar()
varIce_Lemon_Tea =StringVar()
varSoya_Bean =StringVar()
varChange= StringVar()
varTotal= StringVar()
varPayment= IntVar()
varRoti_Kelapa.set("0")
varRoti_Kaya.set("0")
varRoti_Kacang_Merah.set("0")
varButter_Chocolate_Bread.set("0")
varCheese_Bread.set("0")
varFruit_Cake.set("0")
varMocha_Cake.set("0")
varBlueberry_Cake.set("0")
varChiffon_Cake.set("0")
varButter_Marble_Cake.set("0")
varHundred_Plus.set("0")
varCocacola.set("0")
varAir_Mineral.set("0")
varIce_Lemon_Tea.set("0")
varSoya_Bean.set("0")
varChange.set("0")
varTotal.set("0")
def Reset():
var1.set(0)
var2.set(0)
var3.set(0)
var4.set(0)
var5.set(0)
var6.set(0)
var7.set(0)
var8.set(0)
var9.set(0)
var10.set(0)
var11.set(0)
var12.set(0)
var13.set(0)
var14.set(0)
var15.set(0)
var16.set(0)
varRoti_Kelapa.set("0")
varRoti_Kaya.set("0")
varRoti_Kacang_Merah.set("0")
varButter_Chocolate_Bread.set("0")
varCheese_Bread.set("0")
varTotal.set("0")
varFruit_Cake.set("0")
varMocha_Cake.set("0")
varBlueberry_Cake.set("0")
varChiffon_Cake.set("0")
varButter_Marble_Cake.set("0")
varHundred_Plus.set("0")
varCocacola.set("0")
varAir_Mineral.set("0")
varIce_Lemon_Tea.set("0")
varSoya_Bean.set("0")
varChange.set("0")
varTotal.set("0")
varPayment.set(" ")
txtRoti_Kelapa.configure(state =DISABLED)
txtRoti_Kaya.configure(state =DISABLED)
txtRoti_Kacang_Merah.configure(state =DISABLED)
txtButter_Chocolate_Bread.configure(state =DISABLED)
txtCheese_Bread.configure(state =DISABLED)
txtFruit_Cake.configure(state =DISABLED)
txtMocha_Cake.configure(state =DISABLED)
txtBlueberry_Cake.configure(state =DISABLED)
txtChiffon_Cake.configure(state =DISABLED)
txtButter_Marble_Cake.configure(state =DISABLED)
txtHundred_Plus.configure(state =DISABLED)
txtCocacola.configure(state =DISABLED)
txtAir_Mineral.configure(state =DISABLED)
txtIce_Lemon_Tea.configure(state =DISABLED)
txtSoya_Bean.configure(state =DISABLED)
#txtPayment.configure(state =DISABLED)
txtChange.configure(state =DISABLED)
txtTotal.configure(state =DISABLED)
var8.get() == 0
def chkRoti_Kelapa():
if (var1.get() == 1):
txtRoti_Kelapa.configure(state = NORMAL)
varRoti_Kelapa.set("")
elif(var1.get() == 0):
txtRoti_Kelapa.configure(state = DISABLED)
varRoti_Kelapa.set("0")
def chkRoti_Kaya():
if (var2.get() == 1):
txtRoti_Kaya.configure(state = NORMAL)
varRoti_Kaya.set("")
elif(var2.get() == 0):
txtRoti_Kaya.configure(state = DISABLED)
varRoti_Kaya.set("0")
def chkRoti_Kacang_Merah():
if (var3.get() == 1):
txtRoti_Kacang_Merah.configure(state = NORMAL)
varRoti_Kacang_Merah.set("")
elif(var3.get() == 0):
txtRoti_Kacang_Merah.configure(state = DISABLED)
varRoti_Kacang_Merah.set("0")
def chkButter_Chocolate_Bread():
if (var4.get() == 1):
txtButter_Chocolate_Bread.configure(state = NORMAL)
varButter_Chocolate_Bread.set("")
elif(var4.get() == 0):
txtButter_Chocolate_Bread.configure(state = DISABLED)
varButter_Chocolate_Bread.set("0")
def chkCheese_Bread():
if (var5.get() == 1):
txtCheese_Bread.configure(state = NORMAL)
varCheese_Bread.set("")
elif(var5.get() == 0):
txtCheese_Bread.configure(state = DISABLED)
varCheese_Bread.set("0")
def chkFruit_Cake():
if (var6.get() == 1):
txtFruit_Cake.configure(state = NORMAL)
varFruit_Cake.set("")
elif(var6.get() == 0):
txtFruit_Cake.configure(state = DISABLED)
varFruit_Cake.set("0")
def chkMocha_Cake():
if (var7.get() == 1):
txtMocha_Cake.configure(state = NORMAL)
varMocha_Cake.set("")
elif(var7.get() == 0):
txtMocha_Cake.configure(state = DISABLED)
varMocha_Cake.set("0")
def chkBlueberry_Cake():
if (var8.get() == 1):
txtBlueberry_Cake.configure(state = NORMAL)
varBlueberry_Cake.set("")
elif(var7.get() == 0):
txtBlueberry_Cake.configure(state = DISABLED)
varBlueberry_Cake.set("0")
def chkChiffon_Cake():
if (var9.get() == 1):
txtChiffon_Cake.configure(state = NORMAL)
varChiffon_Cake.set("")
elif(var9.get() == 0):
txtChiffon_Cake.configure(state = DISABLED)
varChiffon_Cake.set("0")
def chkButter_Marble_Cake():
if (var10.get() == 1):
txtButter_Marble_Cake.configure(state = NORMAL)
varButter_Marble_Cake.set("")
elif(var10.get() == 0):
txtButter_Marble_Cake.configure(state = DISABLED)
varButter_Marble_Cake.set("0")
def chkHundred_Plus():
if (var11.get() == 1):
txtHundred_Plus.configure(state = NORMAL)
varHundred_Plus.set("")
elif(var11.get() == 0):
txtHundred_Plus.configure(state = DISABLED)
varHundred_Plus.set("0")
def chkCocacola():
if (var12.get() == 1):
txtCocacola.configure(state = NORMAL)
varCocacola.set("")
elif(var12.get() == 0):
txtCocacola.configure(state = DISABLED)
varCocacola.set("0")
def chkAir_Mineral():
if (var13.get() == 1):
txtAir_Mineral.configure(state = NORMAL)
varAir_Mineral.set("")
elif(var13.get() == 0):
txtAir_Mineral.configure(state = DISABLED)
varAir_Mineral.set("0")
def chkIce_Lemon_Tea():
if (var14.get() == 1):
txtIce_Lemon_Tea.configure(state = NORMAL)
varIce_Lemon_Tea.set("")
elif(var14.get() == 0):
txtIce_Lemon_Tea.configure(state = DISABLED)
varIce_Lemon_Tea.set("0")
def chkSoya_Bean():
if (var15.get() == 1):
txtSoya_Bean.configure(state = NORMAL)
varSoya_Bean.set("")
elif(var15.get() == 0):
txtSoya_Bean.configure(state = DISABLED)
varSoya_Bean.set("0")
def costofall():
roti1 = float(varRoti_Kelapa.get())
roti2 = float(varRoti_Kaya.get())
roti3 = float(varRoti_Kacang_Merah.get())
roti4 = float(varButter_Chocolate_Bread.get())
roti5 = float(varCheese_Bread.get())
roti6 = float(varFruit_Cake.get())
roti7 = float(varMocha_Cake.get())
roti8 = float(varBlueberry_Cake.get())
roti9 = float(varChiffon_Cake.get())
roti10 = float(varButter_Marble_Cake.get())
roti11 = float(varHundred_Plus.get())
roti12 = float(varCocacola.get())
roti13 = float(varAir_Mineral.get())
roti14 = float(varIce_Lemon_Tea.get())
roti15 = float(varSoya_Bean.get())
iTotal1=((roti1 * 1.00) + (roti2 * 1.00) + (roti3 * 1.00) + (roti4 *
2.00))
iTotal2=((roti5 * 2.50) + (roti6 * 35.00) + (roti7 * 40.00) + (roti8 *
38.00))
iTotal3=((roti9 * 7.50) + (roti10 * 7.50) + (roti11 * 2.00 ) + (roti12
* 2.00))
iTotal4=((roti13 * 1.00) + (roti14 * 2.00) + (roti15 * 1.50))
if (var16.get() == "Cash"):
iChange = float(varPayment.get())
iCost = (iTotal1 + iTotal2 + iTotal3 +iTotal4 )
iTotalq="RM", str('%.2f'%((iCost)))
varTotal.set(iTotalq)
cChange = (iChange - iCost)
cChangeq = "RM", str('%.2f'%(cChange))
varChange.set(cChangeq)
#=======================================================================Fr
ame
1=========================================================================
===#
lblRoti = Label(f1, font=('arial', 18, 'bold'), text="Roti")
lblRoti.grid(row =0, column=0)
Roti_Kelapa =Checkbutton(f1, text="Roti Kelapa\t RM1.00",
variable=var1, onvalue =1, offvalue=0,
font=('arial', 15, 'bold'),
command=chkRoti_Kelapa).grid(row=1, column=0, sticky=W)
txtRoti_Kelapa = Entry(f1,font=('arial',18,'bold'),textvariable
=varRoti_Kelapa, width = 5, justify='left', state =DISABLED)
txtRoti_Kelapa.grid(row =1 , column =1)
Roti_Kaya =Checkbutton(f1, text="Roti Kaya\t RM1.00",
variable=var2, onvalue =1, offvalue=0,
font=('arial', 15,
'bold'),command=chkRoti_Kaya).grid(row=2, column=0, sticky=W)
txtRoti_Kaya = Entry(f1,font=('arial',18,'bold'),textvariable
=varRoti_Kaya, width = 5, justify='left', state =DISABLED)
txtRoti_Kaya.grid(row =2 , column =1)
Roti_Kacang_Merah =Checkbutton(f1, text="Roti Kacang Merah
RM1.00", variable=var3, onvalue =1, offvalue=0,
font=('arial', 14,
'bold'),command=chkRoti_Kacang_Merah).grid(row=3, column=0, sticky=W)
txtRoti_Kacang_Merah = Entry(f1,font=('arial',18,'bold'),textvariable
=varRoti_Kacang_Merah, width = 5, justify='left', state =DISABLED)
txtRoti_Kacang_Merah.grid(row =3 , column =1)
Butter_Chocolate_Bread =Checkbutton(f1, text="Butter Chocolate Bread
RM2.00", variable=var4, onvalue =1, offvalue=0,
font=('arial', 14,
'bold'),command=chkButter_Chocolate_Bread).grid(row=4, column=0, sticky=W)
txtButter_Chocolate_Bread = Entry(f1,font=('arial',18,'bold'),textvariable
=varButter_Chocolate_Bread, width = 5, justify='left', state =DISABLED)
txtButter_Chocolate_Bread.grid(row =4 , column =1)
Cheese_Bread =Checkbutton(f1, text="Cheese Bread\t RM2.50",
variable=var5, onvalue =1, offvalue=0,
font=('arial', 15,
'bold'),command=chkCheese_Bread).grid(row=5, column=0, sticky=W)
txtCheese_Bread = Entry(f1,font=('arial',18,'bold'),textvariable
=varCheese_Bread, width = 5, justify='left', state =DISABLED)
txtCheese_Bread.grid(row =5 , column =1)
#=======================================================================Fr
ame
2=========================================================================
===#
lblKek = Label(f2TOP, font=('arial', 18, 'bold'), text="Kek")
lblKek.grid(row =0, column=0)
Fruit_Cake =Checkbutton(f2TOP, text="Fruit Cake\tRM35.00", variable=var6,
onvalue =1, offvalue=0,
font=('arial', 15, 'bold'),command=chkFruit_Cake
).grid(row=1, column=0, sticky=W)
txtFruit_Cake = Entry(f2TOP,font=('arial',18,'bold'),textvariable
=varFruit_Cake, width = 6, justify='right', state =DISABLED)
txtFruit_Cake.grid(row =1 , column =1)
Mocha_Cake =Checkbutton(f2TOP, text="Mocha Cake\tRM40.00", variable=var7,
onvalue =1, offvalue=0,
font=('arial', 15, 'bold'),command=chkMocha_Cake
).grid(row=2, column=0, sticky=W)
txtMocha_Cake = Entry(f2TOP,font=('arial',18,'bold'),textvariable
=varMocha_Cake, width = 6, justify='right', state =DISABLED)
txtMocha_Cake.grid(row =2 , column =1)
Blueberry_Cake =Checkbutton(f2TOP, text="Blueberry Cake\tRM38.00",
variable=var8, onvalue =1, offvalue=0,
font=('arial', 15,
'bold'),command=chkBlueberry_Cake ).grid(row=3, column=0, sticky=W)
txtBlueberry_Cake = Entry(f2TOP,font=('arial',18,'bold'),textvariable
=varBlueberry_Cake, width = 6, justify='right', state =DISABLED)
txtBlueberry_Cake.grid(row =3 , column =1)
Chiffon_Cake =Checkbutton(f2TOP, text="Chiffon Cake\t RM7.50",
variable=var9, onvalue =1, offvalue=0,
font=('arial', 15,
'bold'),command=chkChiffon_Cake).grid(row=4, column=0, sticky=W)
txtChiffon_Cake = Entry(f2TOP,font=('arial',18,'bold'),textvariable
=varChiffon_Cake, width = 6, justify='right', state =DISABLED)
txtChiffon_Cake.grid(row =4 , column =1)
Butter_Marble_Cake =Checkbutton(f2TOP, text="Butter Marble Cake RM7.50",
variable=var10, onvalue =1, offvalue=0,
font=('arial', 15,
'bold'),command=chkButter_Marble_Cake ).grid(row=5, column=0, sticky=W)
txtButter_Marble_Cake = Entry(f2TOP,font=('arial',18,'bold'),textvariable
=varButter_Marble_Cake, width = 6, justify='right', state =DISABLED)
txtButter_Marble_Cake.grid(row =5 , column =1)
#=======================================================================Fr
ame
3=========================================================================
===#
lblMinuman = Label(f3, font=('arial', 18, 'bold'), text="Minuman")
lblMinuman.grid(row =0, column=0)
Hundred_Plus =Checkbutton(f3, text="Hundred Plus\tRM2.00", variable=var11,
onvalue =1, offvalue=0,
font=('arial', 15,
'bold'),command=chkHundred_Plus).grid(row=1, column=0, sticky=W)
txtHundred_Plus = Entry(f3,font=('arial',18,'bold'),textvariable
=varHundred_Plus, width = 5, justify='right', state =DISABLED)
txtHundred_Plus.grid(row =1 , column =1)
Cocacola =Checkbutton(f3, text="Cocacola\t\tRM2.00", variable=var12,
onvalue =1, offvalue=0,
font=('arial', 15,
'bold'),command=chkCocacola).grid(row=2, column=0, sticky=W)
txtCocacola = Entry(f3,font=('arial',18,'bold'),textvariable =varCocacola,
width = 5, justify='right', state =DISABLED)
txtCocacola.grid(row =2 , column =1)
Air_Mineral =Checkbutton(f3, text="Air Mineral\tRM1.00", variable=var13,
onvalue =1, offvalue=0,
font=('arial', 15,
'bold'),command=chkAir_Mineral).grid(row=3, column=0, sticky=W)
txtAir_Mineral = Entry(f3,font=('arial',18,'bold'),textvariable
=varAir_Mineral, width = 5, justify='right', state =DISABLED)
txtAir_Mineral.grid(row =3 , column =1)
Ice_Lemon_Tea =Checkbutton(f3, text="Ice Lemon Tea\tRM2.00",
variable=var14, onvalue =1, offvalue=0,
font=('arial', 15,
'bold'),command=chkIce_Lemon_Tea ).grid(row=4, column=0, sticky=W)
txtIce_Lemon_Tea = Entry(f3,font=('arial',18,'bold'),textvariable
=varIce_Lemon_Tea, width = 5, justify='right', state =DISABLED)
txtIce_Lemon_Tea.grid(row =4 , column =1)
Soya_Bean =Checkbutton(f3, text="Soya Bean\tRM1.50", variable=var15,
onvalue =1, offvalue=0,
font=('arial', 15, 'bold')
,command=chkSoya_Bean).grid(row=5, column=0, sticky=W)
txtSoya_Bean = Entry(f3,font=('arial',18,'bold'),textvariable
=varSoya_Bean, width = 5, justify='right', state =DISABLED)
txtSoya_Bean.grid(row =5 , column =1)
#=======================================================================Fr
ame 2
BOTTOM====================================================================
=#
lblPayment_Method = Label(f2BOTTOM , font=('arial',14,'bold'),
text="Payment Method", bd=10, width= 16, anchor='w')
lblPayment_Method.grid(row=0,column=0)
lblChange = Label(f2BOTTOM , font=('arial',14, 'bold'), text="Change",
bd=10, width =6, anchor='w')
lblChange.grid(row=1,column=1)
txtChange = Entry(f2BOTTOM,font=('arial',16, 'bold'), textvariable
=varChange, width =9, justify='right', state =DISABLED)
txtChange.grid(row=1,column=2)
cmbPayment = ttk.Combobox(f2BOTTOM , textvariable = var16,
state='readonly', font=('arial',10, 'bold'), width= 20)
cmbPayment['value']=('Cash')
cmbPayment.current(0)
cmbPayment.grid(row=1,column=0)
txtPayment = Entry(f2BOTTOM,font=('arial',18, 'bold'), textvariable
=varPayment, width =6, justify='right')#,state =DISABLED)
txtPayment.grid(row=2 , column=0)
lblTotal = Label(f2BOTTOM , font=('arial',14, 'bold'), text="Total",
bd=10, width=6,anchor='w')
lblTotal.grid(row=2,column=1)
txtTotal = Entry(f2BOTTOM,font=('arial',16, 'bold'), textvariable
=varTotal, width =9,justify='right', state =DISABLED)
txtTotal.grid(row =2 , column=2)
#===============================================================Frame 2
Button====================================================================
=========#
btnTotal=Button(f2BOTTOM,padx=16,pady=1, bd=4, fg="black",font=('arial',
16,'bold'), width=5,
text="Total ",command = costofall).grid(row=4, column=0)
btnReset=Button(f2BOTTOM,padx=16,pady=1, bd=4, fg="black",font=('arial',
16,'bold'), width=5,
text="Reset", command =Reset).grid(row=4, column=1)
lblspace=Label( f2BOTTOM, text="\n\n\n\n\n\n\n")
lblspace.grid(row =5, column=0)
root.mainloop()
CARTA IPO :
PROSES OUTPUT
INPUT (a)Bilangan roti * Harga (a)Harga roti , kek dan
1. Harga roti=Jumlah harga roti minuman
● Roti
● Kek
● Minuman (b)Bilangan kek * Harga (b)Kuantiti roti , kek dan
kek=Jumlah harga kek minuman
2. Kuantiti
● Roti
● Kek (c) Bilangan minuman * Harga (c) Jumlah harga roti
● Minuman minuman=Jumlah harga
minuman
(d)Jumlah harga kek
(d)Jumlah harga roti + Jumlah
harga kek + Jumlah harga (e)Jumlah harga minuman
minuman=Jumlah bayaran
(f) Jumlah bayaran
(e)Wang yang dibayar oleh
pelanggan - Jumlah
bayaran=Baki bayaran (g)Baki bayaran
TEKNIK FASA 3 : Pengekodan Masalah Kecil
LERAIAN
Masalah Besar
1. Mengira jumlah 1. Pengisytiharan pemboleh ubah dan
harga pemalar
● Roti
● Kek
● Minuman 2. Input
3. Proses
2. Mengira jumlah
bayaran
4. Output
3. Mengira baki
bayaran
TEKNIK (i) Pengisytiharan Pemboleh ubah untuk menyimpan nilai
PENGECAMAN pemboleh ubah dan
CORAK pemalar
(ii) Input 1. Harga
● Roti
● Kek
● Minuman
2. Kuantiti
● Roti
● Kek
● Minuman
(iii) Proses 1. KIRA jumlah harga roti
=harga roti * bilangan roti
2. KIRA jumlah harga kek
=harga kek * bilangan kek
3. KIRA jumlah harga minuman
=harga minuman * bilangan minuman
4. KIRA jumlah bayaran
=jumlah harga roti + jumlah harga kek +
jumlah harga minuman
5. KIRA baki bayaran
=Wang yang dibayar oleh pelanggan -
jumlah bayaran
(iv) Output (a)Paparkan jumlah harga roti , kek dan
minuman
(b)Paparkan jumlah bayaran
(c) Paparkan baki bayaran
TEKNIK Penentuan aspek-aspek penting terdiri daripada:
PENISKALAAN
(i) Pengisytiharan 1. Pemboleh ubah untuk menyimpan nilai:
pemboleh ubah dan
pemalar
● Harga
-Roti
-Kek
-Minuman
2. Semua pemboleh ubah yang terlibat
diisytihar sebagai i nteger.
(ii) Input Kod arahan mesej dorongan {p rompt message} :
1. jumlah harga roti = float(input
(" harga roti * bilangan yang dimasukkan :"))
2. jumlah harga kek = float(input
(" harga kek * bilangan yang dimasukkan :"))
3. jumlah harga minuman = float(input
(" harga minuman * bilangan yang
dimasukkan :"))
(iii) Proses Kod arahan mengira jumlah bayaran dan baki
bayaran:
1. jumlah bayaran = jumlah harga roti +
jumlah harga kek + jumlah harga
minuman
2. baki bayaran = wang yang dibayar oleh
pelanggan - jumlah bayaran
(iv) Output Kod arahan memaparkan nilai jumlah bayaran
dan baki bayaran:
print("jumlah bayaran ialah:RM", jumlah
bayaran)
print("baki bayaran ialah:RM", baki bayaran)
TEKNIK FASA 4 : Pengujian dan Penyahpepijatan
LERAIAN
1. Masalah Besar
Mengenal pasti dan membaiki ralat pada keseluruhan atur cara
2. Bahagian-bahagian kecil
(i) Menguji pengiystiharan pemboleh ubah dan pemalar
(ii) Menguji kod input
(iii) Menguji kod proses
(iv) Menguji kod input
TEKNIK (i) Menguji pengisytiharan Berdasarkan mesej ralat dan cara atur
PENGECAMAN pemboleh ubah dan pemalar cara bertindak semasa pengujian,
CORAK (ii) Menguji kod input jenis-jenis ralat dapat dikenal pasti,
iaitu:
(iii) Menguji kod proses
(iv) Menguji kod input
● Ralat Sintaks
● Ralat Masa Larian
● Ralat Logik
Punca Ralat Kesalahan
Jenis Ralat
Ralat Sintaks Kesalahan
ketinggalan
tanda petik.
Tiada tanda petik (”)
sebelum tanda kurung.
Ralat Masa Kesalahan
Larian penggunaan
pemboleh
ubah.
Kesalahan menggunakan pemboleh
ubah bilangan kek dan harga kek.
Ralat Logik Kesalahan
penggunaan
operator.
Kesalahan menggunakan operator “*”.
TEKNIK Penentuan aspek-aspek penting terdiri daripada:
PENISKALAAN
(i) Menguji pengisytiharan Semua pemboleh ubah diisytiharkan dengan
pemboleh ubah dan betul dari segi:
pemalar
● Jenis data
● Kesesuaian nama dan nama dieja
dengan betul
● Diberikan nilai permulaan (initialised)
(ii) Menguji kod arahan Pastikan pemboleh ubah bilangan roti , kek
input dan minuman digunakan untuk menyimpan
(iii) Menguji kod arahan nilai yang dimasukkan oleh pengguna
proses
● Formula yang digunakan adalah betul
● Logik/susunan adalah betul
(iv) Menguji kod arahan ● Output yang dipaparkan adalah tepat
output dan betul
● Format output adalah seperti yang
dikehendaki
TEKNIK Menghasilkan satu senarai semak yang dapat digunakan semasa pengujian
PENGITLAKAN dan penyahpepijatan sesuatu atur cara.
Atur cara yang telah dibetulkan dan disemak :
FASA 5 : Dokumentasi
1. Masalah besar
TEKNIK dokumentasi
Menyediakan
LERAIAN
2. Bahagian-Bahagian kecil
(i) Dokumentasi dalaman
(ii) Dokumentasi luaran
● Dokumen pustaka
● pengguna
Panduan
TEKNIK (a) Dokumentasi dalaman Maklumat penting tentang atur cara
PENGECAMAN merupakan corak yang telah dicamkan.
Komen tentang tujuan dan fungsi
CORAK dilakukan oleh setiap bahagian/barisan kod
arahan.
(b) Dokumentasi luaran Maklumat teknikal tentang atur cara untuk
(Dokumentasi Pustaka) tujuan rujukan, penyelenggaraan dan
penambahbaikan.
(c) Dokumentasi luaran Maklumat tentang cara menggunakan atau
(Panduan Pengguna) melaksanakan arahan.
TEKNIK Penentuan aspek-aspek penting terdiri daripada:
(a) Dokumentasi dalaman Penulisan komen untuk menerangkan
PENISKALAAN
fungsi setiap bahagian atau sesuatu baris
kod arahan.
(b) Dokumentasi luaran Maklumat yang diperlukan oleh seorang
(Dokumen Pustaka) pengatur cara:
● Tarikh
● Nama pengatur cara
● Tujuan/kegunaan atur cara
● Keperluan sistem pengendalian
● Keperluan perkakasan
● Keperluan perisian
● Algoritma (pseudokod dan carta alir)
● Kod arahan (source code)
(c) Dokumentasi luaran Maklumat yang diperlukan oleh seorang
(Panduan Pengguna) pengguna seperti:
● Nama dan tujuan atur cara
● Keperluan sistem pengendalian,
perkakasan dan perisian
● Cara penggunaan
TEKNIK Menghasilkan dokumentasi dalaman dan dokumentasi luaran
PENGITLAKAN berdasarkan aspek-aspek penting yang dikenal pasti.
DOKUMEN PUSTAKA (LIBARY DOCUMENTATION)
Keperluan Sistem Pengendalian Windows 8 Pro
Keperluan Perisian Python 3.8.0
Keperluan Ingatan Minimum 2GB
PSEUDOKOD
MULA
ISYTIHAR pemboleh ubah jumlah bayaran = RM0
PAPARKAN menu
PAPARKAN mesej ”Sila masukkan nombor roti , kek dan minuman yang anda dipilih”
J IKA anda masukkan nombor = 1
P APARKAN “Roti Kelapa”
KIRAKAN harga roti kelapa * bilangan roti kelapa
yang dimasukkan
J IKA anda masukkan nombor = 2
P APARKAN “Roti Kaya”
K IRAKAN harga roti kaya * bilangan roti kaya yang
dimasukkan
JIKA anda masukkan nombor = 3
P APARKAN “Roti Kacang Merah”
K IRAKAN harga roti kacang merah* bilangan roti
kacang merah yang dimasukkan
JIKA anda masukkan nombor = 4
P APARKAN “Butter Chocolate Bread”
K IRAKAN harga butter chocolate bread * bilangan
butter chocolate bread yang dimasukkan
JIKA anda masukkan nombor = 5
P APARKAN “Cheese Bread”
K IRAKAN harga cheese bread * bilangan cheese bread
yang dimasukkan
JIKA anda masukkan nombor = 6
P APARKAN “Fruit Cake”
K IRAKAN harga fruit cake * bilangan fruit cake yang
dimasukkan
JIKA anda masukkan nombor = 7
P APARKAN “Mocha Cake”
K IRAKAN harga mocha cake* bilangan mocha cake
yang dimasukkan
JIKA anda masukkan nombor = 8
P APARKAN “Blueberry Cake”
K IRAKAN harga blueberry cake * bilangan blueberry
cake yang dimasukkan
JIKA anda masukkan nombor = 9
P APARKAN “Chiffon Cake”
K IRAKAN harga chiffon cake * bilangan chiffon cake
yang dimasukkan
JIKA anda masukkan nombor = 10
P APARKAN “Butter Marble Cake”
K IRAKAN harga butter marble cake * bilangan butter
marble cake yang dimasukkan
JIKA anda masukkan nombor = 11
P APARKAN “Hundred plus”
K IRAKAN harga Hundred plus * bilangan hundred
plus yang dimasukkan
JIKA anda masukkan nombor = 12
P APARKAN “Cocacola”
K IRAKAN harga cocacola * bilangan cocacola yang
dimasukkan
JIKA anda masukkan nombor = 13
P APARKAN “Air Mineral”
K IRAKAN harga air mineral * bilangan air mineral
yang dimasukkan
JIKA anda masukkan nombor = 14
P APARKAN “Ice Lemon Tea”
K IRAKAN harga ice lemon tea * bilangan ice lemon tea
yang dimasukkan
JIKA anda masukkan nombor = 15
P APARKAN “Soya Bean”
K IRAKAN harga soya bean * bilangan soya bean yang
dimasukkan
JIKA anda masukkan nombor = 16
TAMBAHKAN jumlah bayaran
P APARKAN jumlah bayaran
J IKA wang tunai dibagikan dengan cukup
Wang tunai dimasukkan=jumlah bayaran
C ARI bakinya
J IKA wang tunai dibagikan dengan tidak cukup
P APARKAN “wang tunai yang tidak cukup”
P APARKAN “Sila bagi wang tunai yang cukup”
T AMAT JIKA
TAMAT
CARTA ALIR
KOD ARAHAN