หน่วยที่ 2 การแก้ปัญหาด้วยไพทอน
6. นำเสนอระบบรับออเดอร์ทั้งโปรแกรม
หน่วยที่ 2 การแก้ปัญหาด้วยไพทอน
6. นำเสนอระบบรับออเดอร์ทั้งโปรแกรม
โปรแกรมภาษาไพทอน : ภาระงาน
โปรแกรมรับออเดอร์สมบูรณ์ : รับข้อมูล ตรวจสอบเมนู เงื่อนไขโปรโมชัน คำนวณยอดรวม และบันทึก ออเดอร์ พร้อมรายงานผล
กรณีศึกษา : ระบบรับออเดอร์ร้านน้ำอิตาเลี่ยนโซดา
🌸นำเสนอระบบรับออเดอร์ทั้งโปรแกรม
1. ทบทวนและรื้อโค้ดจากคาบก่อน เช่น การรับข้อมูลลูกค้า การตรวจสอบเมนูด้วย if-elif-else การใช้ลูป while และการสร้างฟังก์ชันคำนวณยอด ได้แก่
- โปรแกรมรับข้อมูลลูกค้า (input)
- โปรแกรมตรวจสอบเมนูที่ใช้เงื่อนไข if-elif-else
- ลูป while สำหรับรับออเดอร์ซ้ำ
- ฟังก์ชันคำนวณยอดรวม/บันทึกออเดอร์
2. ลำดับขั้นตอนของโปรแกรม เช่น
- 1) รับข้อมูล → 2) ตรวจสอบเงื่อนไข → 3) คำนวณยอด → 4) บันทึกออเดอร์ → 5) ถามว่าจะสั่งต่อหรือไม่
“การวิเคราะห์โจทย์” (Problem Analysis) และ “การวางแผนเชิงตรรกะ”
1) ส่วนรับข้อมูลลูกค้า (input): ใช้คำสั่ง input() เพื่อให้ผู้ใช้กรอกชื่อเมนู จำนวน และราคาต่อแก้ว
2) ส่วนตรวจสอบเงื่อนไข: ใช้โครงสร้าง if-elif-else เพื่อจัดการโปรโมชันให้เหมาะสมกับแต่ละเมนู เช่น ลดราคา ซื้อแถม หรือไม่มีโปรโมชัน
3) ส่วนคำนวณยอดรวม: ใช้การคูณราคากับจำนวนแก้ว หากมีโปรโมชันลด ต้องหักส่วนลด
4) ส่วนลูป: ใช้ while เพื่อถามต่อเนื่องว่าลูกค้าจะสั่งเพิ่มหรือไม่ จนกว่าจะพิมพ์ n/N
5) สรุปผล: แสดงออเดอร์ทั้งหมดที่ลูกค้าสั่ง
เขียนโปรแกรมระบบรับออเดอร์สมบูรณ์
โจทย์เสริม :
· รับข้อมูลออเดอร์หลายครั้ง (ลูกค้าหลายคน)
· เก็บออเดอร์ทั้งหมดใน dictionary
📄ใบงานคาบ 6 : รวมระบบระบออเดอร์ร้านน้ำอิจาเลียนโซดา
ชื่อ-สกุล ..................................................... ชั้น ................ เลขที่ ............
1. เขียนโปรแกรมโดยใช้โครงสร้างดังนี้
o รับชื่อเมนูจากลูกค้า
o ตรวจสอบโปรโมชันด้วยเงื่อนไข if-elif-else
o รับจำนวนและราคาต่อแก้ว
o คำนวณยอดรวมตามจำนวนและโปรโมชัน
o บันทึกออเดอร์ลงใน dictionary ชื่อ orders
o ใช้ while loop เพื่อรับออเดอร์หลายรายการจนกว่าลูกค้าจะไม่สั่งเพิ่ม
2. ทดสอบโปรแกรมโดย
o สั่งเมนูที่มีโปรโมชัน
o สั่งเมนูที่ไม่มีโปรโมชัน
o สั่งหลายเมนูพร้อมจำนวนต่างกัน
o ตรวจสอบยอดรวมถูกต้อง และระบบทำงานต่อเนื่อง
3. อธิบาย flow การทำงานของโปรแกรม (สั้น ๆ)
def check_promotion(menu, qty, price):
if menu == "บลูฮาวาย":
print("ลด 10%")
return price * qty * 0.9
elif menu == "กีวี่มินต์":
print("ซื้อ 2 แถม 1")
free = qty // 2
return price * (qty + free)
else:
print("ไม่มีโปรโมชัน")
return price * qty
def take_order():
menu = input("เมนู: ")
qty = int(input("จำนวน: "))
price = int(input("ราคา: "))
total = check_promotion(menu, qty, price)
return menu, qty, total
def show_summary(orders):
print("\n=== สรุปออเดอร์ ===")
for menu in orders:
print(f"{menu} - {orders[menu]['qty']} แก้ว : {orders[menu]['total']} บาท")
grand_total = sum([item["total"] for item in orders.values()])
print(f"\nยอดรวมทั้งสิ้น: {grand_total} บาท")
# โปรแกรมหลัก
orders = {}
while True:
menu, qty, total = take_order()
if menu in orders:
orders[menu]["qty"] += qty
orders[menu]["total"] += total
else:
orders[menu] = {"qty": qty, "total": total}
print(f"ยอดรวมสำหรับรายการนี้: {total:.2f} บาท")
cont = input("สั่งต่อหรือไม่ (y/n): ")
if cont.lower() != "y":
break
show_summary(orders)
สรุปเป็นข้อให้เข้าใจง่าย :
1. ระบบรับออเดอร์สมบูรณ์ต้องมี input, การตรวจสอบเงื่อนไข, การคำนวณ, การจัดเก็บออเดอร์
และลูปควบคุม
2. การวางโครงสร้างโปรแกรมที่ดี จะช่วยให้แก้ไข ดูแล และต่อยอดระบบได้ง่าย
3. ทักษะนี้ประยุกต์ใช้ได้จริงในงานอาชีพ เช่น ธุรกิจร้านอาหาร ร้านเครื่องดื่ม หรือแม้แต่ระบบสั่งของออนไลน์
4. ฝากนักเรียนคิดต่อ: “ถ้าต้องเพิ่มฟีเจอร์ เช่น การชำระเงินออนไลน์ จะต่อยอดระบบนี้อย่างไร?”