วันจันทร์ที่ 15 มกราคม พ.ศ. 2561

Database System - work 1 GPA with google spreadsheet

Result 



ผลลัพธ์ในเทอมที่ มีผลการเรียนปกติ
ผลลัพธ์ในเทอมที่มีผลการเรียนติด F , I (จำลองขึ้นมา)


What you have done/learned


- ได้ ฝึกใช้งาน Google spreadsheet รวมเซล ผสานเซล ลบเซล แทรกเซล เปลี่ยนสีเซล 

- การใช้งาน function SUM , MULTIPLY , ROUND

- การแก้ไข Script เพื่อนำมาใช้งาน (javaScript)

- รู้ความหมายของแต้มระดับคะแนน


Any problem/solution

- ไม่รู้ว่าแต้มระดับคะแนนคืออะไรกันแน่ แก้โดยการหาข้อมูลบน google จนทราบว่าคือผล คูณ ของ หน่วยกิตกับเกรด ที่แปลงเป็นเลขแล้ว

- การหาผลรวมของ ชุด column & row ที่ต้องการ แก้โดยใช้งานฟังก์ชั่น sum( v1 : v2) โดย v1 จะมีรูปแบบ เช่น B1 หมายถึง colum B row 1 และ : หมายถึง ไปจนถึง และ v2 เช่น B 4 หมายถึง column B row 4 โดยรวมจะหมายถึง เอาตั้งแต่ colum B row 1 ไปจนถึง column B row 4 มารวมกันนั่นเอง แต่หากต้องการรวม ค่า จากที่ที่ไม่ต่อเนื่องกันต้องใช้ ดังนี้ =SUM( SET1 , SET2 , . ..  , SET N) โดยใช้เครื่องหมาย ' , ' ในการคั่นเอาไว้

-  อยากได้ ฟังก์ชั่น คำนวน เกรด ในแต่ละเทอม แต่ว่า เขาไม่มีการทำมาให้ ?!  แก้โดยไป ใช้งานการแก้ไข Script เพื่อเพิ่มการใช้งานฟังก์ชั่นใหม่ๆขึ้นมา โดย ทำดังนี้
เลือก เครื่องมือ > โปรแกรมแก้ไขสคริปต์ จากนั้นจะเข้าไปสู่หน้าที่ทำการเพิ่ม สคริปต์ ได้  เพื่อทำการแก้ไข โค้ดเพื่อนำมาใช้งาน
ตัวอย่างการนำมาใช้งาน
https://pastebin.com/0uMez8R6 - get gpa
https://pastebin.com/Pv7jix99 - get grade value



สังเกตุได้จาก =ROUND(getGPA(E6:E13,getValueGrade(G6:G13), D15),2) ด้านบนที่ จำใส่ค่าที่จำเป็นเข้าไปเพื่อรอบค่าออกมาแสดงผล โดยให้นำผลลัพธ์เข้า ฟังก์ชั่น ROUND ที่มีอยู่ก่อนแล้วอีกทีเพื่อลด ทศนิยม โดยในตัวอย่างที่นำมาแสดงนั้น นำค่าหน่วยกิตทั้งหมด เป็น argument 1 และ นำเกรด ทั้งหมดที่ถูกแปลงเป็นอาเรย์ตัวเลขแล้ว จากฟังก์ชั่น getValueGrade เป็น argument 2 และนำ weight รวมจาก D15 (ที่เป็นตัวเลขแล้ว) เป็น argument 3

- ต้องการหาค่าแต้มระดับคะแนน ซึ่งมาจากผล + ของ ผล  * ของ weight กับ grade ซึ่ง การคำนวนคะแนนเฉลี่ยนั้น จะมาจาก sum(weight * grade) / sum weight อยู่แล้วดังนั้น เราจึงนำเกรต ไป * หน่วยกิตเพื่อหา แต้มระดับคะแนนได้เลย ไม่จำเป็นต้อง เขียน Script ในตอนนี้ โดยจะใช้ฟังก์ชั่น MULTIPLY เพื่อใช้ในการ คูณค่าในเซล ที่ใส่ไป
- การหาหน่วยกิต ที่ได้นั้นจะต้องคำนึง ถึงว่า ผู้ใช้ไม่ติด I หรือ F จึงได้สร้าง Script สำหรับตรวจเช็คและคำนวนออกมาได้ดังนี้
https://pastebin.com/KKe07tdr

ผลลัพธ์ จะได้ดังนี้


 การแสดงผล ว่า ผลการเรียนปกติหรือไม่ จะใช้เกณที่ว่าหน่วยกิตที่ลง และ หน่วยกิตที่ได้ สะสม นั้น ตรงกัน จึงจะปกติ จึงได้เขียน script เพื่อใช้งานดังนี้
https://pastebin.com/HSgNvf4Q




- เทอม ต่อมา จะมีสิ่งที่แตกต่างจาก เทอมแรกที่ทำ ใน แถว สะสม ดังนี้

ในช่องหน่วยเกรต สะสมนั้นจะใช้=DIVIDE(SUM(F16, F30),E31) หรือก็คือการนำแต้มคะแนนสะสม ของเทอมที่แล้ว มารวมกับ แต้มคะแนนสะสมของ เทอมนี้ (เนื่องจาก แต้มคะแนนสะสมนั้นคือ ผลรวมของผลคูณ หน่วยกิตและเกรด เมื่อนำมารวมกันจะได้ ผลรวมของ ผลคูณของเกรตและหน่วยกิต ของทั้ง 2 เทอม (และเทอมก่อนๆ) และเมื่อนำไปหารกับ หน่วยกิตรวมที่ได้ก็จะเป็นเกรด สะสมในเทอมนั้นๆ

ต่อมาในช่องหน่วยกิตที่ลงนั้นไม่มีอะไรมากแค่รวมของเทอมนี้กับสะสมของเทอมที่แล้ว ก็เพียงพอแล้ว

ใน ส่วนของหน่วยกิตที่ได้นั้นจะนำผลรวมของ หน่วยกิตที่ได้สะสมในเทอมที่แล้วมารวมกับ หน่วยกิตที่ได้ในเทอมนี้
ในส่วนแต้มระดับคะแนน สะสมนั้นก็คำนวนเหมือนเดิมคือนำคะแนนเฉลี่ยไป คูณ กับหน่วยกิตที่ได้
ส่วนของการเช็ค ว่าเกรดปกติมั้ย ก็เหมือนเดิมเช็คว่า หน่วยกิตที่ลงกับที่ได้ตรงกันมั้ย

- จากนั้นก็ทำกับเทอมอื่นๆต่อไป จนครบทุกเทอม ก็เป็นอันเสร็จ


Decision

- ขั้นตอนการทำงาน คือ การทำบล๊อกไปพร้อมกับการทำงาน โดย จะเขียนสิ่งที่ได้ตัดสินใจและการทำงานขั้นตอนต่างๆสิ่งที่เรียนรู้ไปพร้อมๆกับการทำงานเลย และได้ตัดสินใจไว้ว่า จะเริ่มจากการ ทำ theme เอาไว้และค่อยๆ เติมข้อมูลลงไป และนำไปคำนวน จึงจะเสร็จสิ้น

ตัวอย่าง Theme ที่รอการเติมค่าและ แก้ไขรายละเอียด

ตัวอย่างหลังจากเติมค่าเสร็จแล้ว
ตัวอย่างการผ่านการคำนวน


- ในการใช้งาน Function ของ Google spreadsheet นั้นจะเริ่มจากการลองใช้งานด้วยตนเองก่อน จึงค่อยหาข้อมูลเพิ่มเติมทีหลัง

-  รูปแบบการแสดงผล ได้เลือก ทำแบบเดียวกับ ในเว็ปหลักของมหาวิทยาลัย ในการแสดงผล เนื่องจาก เป็นรูปแบบที่สามารถ ดูแล้วเข้าใจได้ง่าย และเป็นที่คุ้นเคยของ หลายๆคน

- การใช้สีในแต่ละ column เป็นสีเดียวกัน เพื่อให้สามารถ ไล่ดูได้ง่ายขึิน

- ตัดสินใจเขียน Script แทนการเขียนฟังก์ชั่นโค้ดยาวๆในช่องด้านบน เพื่อที่จะสามารถ ทำ Script ที่เขียนมาใช้งานภายหลังได้และสามารถอ่านได้ง่ายกว่าหากต้องการจะอ่านโค้ด และไม่ต้องการสร้าง column ใหม่ไว้สำหรับเก็บตัวเลขที่แปลงเกรดจากตัวอักษรเป็นตัวเลข

Related info/link/reference

http://bl-mba.ru.ac.th/about08.html - ความหมายของแต้มระดับคะแนน

http://www.mindphp.com/ - การแก้ไข script


ไม่มีความคิดเห็น:

แสดงความคิดเห็น