ผลต่างระหว่างรุ่นของ "418342 ภาคปลาย 2553/การบ้าน 2"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
 
(ไม่แสดง 17 รุ่นระหว่างกลางโดยผู้ใช้ 2 คน)
แถว 38: แถว 38:
 
<tr>
 
<tr>
 
<td width="10%">รหัสนิสิต</td>
 
<td width="10%">รหัสนิสิต</td>
<td width="5%">A (20)</td>
+
<td width="5%">A(10)</td>
<td width="5%">B (20)</td>
+
<td width="5%">B(15)</td>
<td width="5%">C (15)</td>
+
<td width="5%">C(15)</td>
<td width="5%">D (30)</td>
+
<td width="5%">D(15)</td>
<td width="5%">E (15)</td>
+
<td width="5%">E(30)</td>
 +
<td width="5%">F(15)</td>
 
<td width="5%">รวม</td>
 
<td width="5%">รวม</td>
 
<td width="55%">หมายเหตุ</td>
 
<td width="55%">หมายเหตุ</td>
แถว 49: แถว 50:
 
<tr>
 
<tr>
 
<td>50040229</td>
 
<td>50040229</td>
<td>30</td>
 
 
<td>10</td>
 
<td>10</td>
<td>10</td>
+
<td>0</td>
<td>10</td>
+
<td>15</td>
<td>10</td>
+
<td>0</td>
<td>70</td>
+
<td>20</td>
 +
<td>0</td>
 +
<td>45</td>
 
<td>
 
<td>
* -10 เนื่องจากแสดงข้อมูลทั้งหมด ไม่ลิมิตไว้ที่ 100 record
+
* -15 ไม่มี Authentication
* -20 เนื่องจาก search ได้เพียง field Name เพียง field เดียว ที่เหลือ search ไม่ได้
+
* -15 ไม่มี Field Validations
 +
* -15 ไม่มีรายงานรายรับรายจ่าย
 
</td>
 
</td>
 
</tr>
 
</tr>
แถว 63: แถว 66:
 
<tr>
 
<tr>
 
<td>50042993</td>
 
<td>50042993</td>
<td>30</td>
+
<td></td>
<td>10</td>
+
<td></td>
<td>2</td>
+
<td></td>
<td>10</td>
+
<td></td>
<td>0</td>
+
<td></td>
<td>52</td>
+
<td></td>
<td>
+
<td></td>
* -8 เนื่องจากมีเพียง 113 record
+
<td></td>
* -30 เนื่องจาก search ไม่ได้เลย
 
* -10 เนื่องจากแสดงข้อมูลทั้งหมด ไม่ลิมิตไว้ที่ 100 record
 
</td>
 
 
</tr>
 
</tr>
  
 
<tr>
 
<tr>
 
<td>50043058</td>
 
<td>50043058</td>
 +
<td>10</td>
 +
<td>15</td>
 +
<td>15</td>
 +
<td>15</td>
 
<td>30</td>
 
<td>30</td>
<td>10</td>
+
<td>15</td>
<td>10</td>
+
<td>100</td>
<td>10</td>
+
<td></td>
<td>0</td>
 
<td>60</td>
 
<td>
 
* -10 เนื่องจากแสดงข้อมูลทั้งหมด ไม่ลิมิตไว้ที่ 100 record
 
* -30 เนื่องจาก search ไม่ได้
 
</td>
 
 
</tr>
 
</tr>
  
 
<tr>
 
<tr>
 
<td>50043082</td>
 
<td>50043082</td>
 +
<td>10</td>
 +
<td>15</td>
 +
<td>15</td>
 +
<td>15</td>
 
<td>30</td>
 
<td>30</td>
<td>10</td>
+
<td>15</td>
<td>10</td>
 
<td>20</td>
 
<td>10</td>
 
 
<td>100</td>
 
<td>100</td>
 
<td></td>
 
<td></td>
แถว 103: แถว 102:
 
<tr>
 
<tr>
 
<td>50043140</td>
 
<td>50043140</td>
<td>30</td>
 
 
<td>10</td>
 
<td>10</td>
 
<td>10</td>
 
<td>10</td>
<td>10</td>
+
<td>15</td>
<td>10</td>
+
<td>15</td>
<td>90</td>
+
<td>25</td>
 +
<td>0</td>
 +
<td>75</td>
 
<td>
 
<td>
* -10 เนื่องจากแสดงข้อมูลทั้งหมด ไม่ลิมิตไว้ที่ 100 record
+
* -5 สามารถเพิ่มรายการได้แม้ว่ายังไม่ผ่านการล็อกอิน
 +
* -15 เรียกดูรายงานแล้วเกิด error ว่า undefined method 'datetimedo' for nil:NilClass
 
</td>
 
</td>
 
</tr>
 
</tr>
แถว 116: แถว 117:
 
<tr>
 
<tr>
 
<td>50043173</td>
 
<td>50043173</td>
<td>30</td>
 
 
<td>10</td>
 
<td>10</td>
 
<td>10</td>
 
<td>10</td>
 +
<td>15</td>
 +
<td>15</td>
 
<td>20</td>
 
<td>20</td>
<td>10</td>
+
<td>5</td>
<td>80</td>
+
<td>75</td>
 
<td>
 
<td>
* -20 เนื่องจากไม่อนุญาตให้ผู้ใช้ search เงื่อนไขหลายๆ เงื่อนไขพร้อมๆ กัน
+
* -5 แม้ว่าล็อกเอ้าท์แล้วก็ยังสามารถกลับไปทำรายการได้
 +
* -10 ขาดการจำแนกประเภทรายการรายรับและรายจ่าย
 +
* -10 รายงานขาดความสมบูรณ์
 
</td>
 
</td>
 
</tr>
 
</tr>
แถว 129: แถว 133:
 
<tr>
 
<tr>
 
<td>50043215</td>
 
<td>50043215</td>
<td>30</td>
 
 
<td>10</td>
 
<td>10</td>
<td>10</td>
+
<td>15</td>
<td>10</td>
+
<td>15</td>
<td>10</td>
+
<td>15</td>
<td>70</td>
+
<td>20</td>
 +
<td>5</td>
 +
<td>80</td>
 
<td>
 
<td>
* -10 เนื่องจากแสดงข้อมูลทั้งหมด ไม่ลิมิตไว้ที่ 100 record
+
* -10 ขาดการจำแนกประเภทรายการรายรับและรายจ่าย
* -20 เนื่องจากเวลา search เงื่อนไขหลายๆ อัน แล้วทำเหมือนกับ search ได้เพียงเงื่อนไขเดียวคือเงื่อนไขสุดท้ายเท่านั้น
+
* -10 รายงานขาดความสมบูรณ์
 
</td>
 
</td>
 
</tr>
 
</tr>
แถว 143: แถว 148:
 
<tr>
 
<tr>
 
<td>50043231</td>
 
<td>50043231</td>
<td>30</td>
 
<td>8</td>
 
<td>2</td>
 
<td>10</td>
 
 
<td>10</td>
 
<td>10</td>
 +
<td>15</td>
 +
<td>15</td>
 +
<td>15</td>
 +
<td>20</td>
 +
<td>5</td>
 
<td>80</td>
 
<td>80</td>
 
<td>
 
<td>
* -2 เนื่องจากมีเพียงแค่ 4 ฟีลด์
+
* -10 ขาดการจำแนกประเภทรายการรายรับและรายจ่าย
* -8 เนื่องจากมีเพียงแค่ 137 record
+
* -10 รายงานขาดความสมบูรณ์
* -10 เนื่องจากแสดงข้อมูลทั้งหมด ไม่ลิมิตไว้ที่ 100 record
 
 
</td>
 
</td>
 
</tr>
 
</tr>
แถว 158: แถว 163:
 
<tr>
 
<tr>
 
<td>50043306</td>
 
<td>50043306</td>
<td>30</td>
 
 
<td>10</td>
 
<td>10</td>
<td>10</td>
+
<td>15</td>
<td>10</td>
+
<td>15</td>
<td>10</td>
+
<td>15</td>
<td>90</td>
+
<td>20</td>
 +
<td>5</td>
 +
<td>80</td>
 
<td>
 
<td>
* -10 เนื่องจากแสดงข้อมูลทั้งหมด ไม่ลิมิตไว้ที่ 100 record
+
* -10 ขาดการจำแนกประเภทรายการรายรับและรายจ่าย
 +
* -10 รายงานยังจำแนกได้ไม่ละเอียด
 
</td>
 
</td>
 
</tr>
 
</tr>
แถว 171: แถว 178:
 
<tr>
 
<tr>
 
<td>51043214</td>
 
<td>51043214</td>
 +
<td></td>
 
<td></td>
 
<td></td>
 
<td></td>
 
<td></td>
แถว 182: แถว 190:
 
<tr>
 
<tr>
 
<td>50180249</td>
 
<td>50180249</td>
<td></td>
+
<td>10</td>
<td></td>
+
<td>10</td>
<td></td>
+
<td>0</td>
<td></td>
+
<td>15</td>
<td></td>
+
<td>20</td>
<td></td>
+
<td>0</td>
<td></td>
+
<td>55</td>
 +
<td>
 +
* -5 ส่วน Authentication ไม่สมบูรณ์
 +
* -15 ไม่มี CSS และ form layout เลย
 +
* -10 ขาดการจำแนกประเภทรายการรายรับและรายจ่าย
 +
* -15 ไม่มีรายงานรายรับรายจ่าย
 +
</td>
 
</tr>
 
</tr>
  
 
<tr>
 
<tr>
 
<td>51180198</td>
 
<td>51180198</td>
<td>30</td>
+
<td>0</td>
 +
<td>0</td>
 
<td>10</td>
 
<td>10</td>
 
<td>10</td>
 
<td>10</td>
<td>10</td>
+
<td>15</td>
<td>10</td>
+
<td>0</td>
<td>90</td>
+
<td>35</td>
 
<td>
 
<td>
* -10 เนื่องจากแสดงข้อมูลทั้งหมด ไม่ลิมิตไว้ที่ 100 record
+
* -10 ช่วงเตรียมข้อมูลแล้วมี error
 +
* -10 การทดสอบระบบเป็นไปได้ด้วยยาก
 
</td>
 
</td>
 
</tr>
 
</tr>
แถว 206: แถว 222:
 
<tr>
 
<tr>
 
<td>51180503</td>
 
<td>51180503</td>
<td>30</td>
+
<td>0</td>
 +
<td>15</td>
 
<td>10</td>
 
<td>10</td>
<td>10</td>
+
<td>15</td>
<td>10</td>
+
<td>15</td>
<td>10</td>
+
<td>5</td>
<td>90</td>
+
<td>60</td>
 
<td>
 
<td>
* -10 เนื่องจากแสดงข้อมูลทั้งหมด ไม่ลิมิตไว้ที่ 100 record
+
* -10 โปรแกรมเกิด routing error
 +
* -10 รายงานไม่เหมาะสมในการใช้งาน
 
</td>
 
</td>
 
</tr>
 
</tr>
 
 
</table>
 
</table>
  
 
=== เกณฑ์การให้คะแนน ===
 
=== เกณฑ์การให้คะแนน ===
* A: เตรียมข้อมูลเบื้องต้น migration และ seed (20)
+
* A: เตรียมข้อมูลเบื้องต้น migration และ seed (10)
* B: Authentication แต่ละผู้ใช้ (20)
+
* B: Authentication แต่ละผู้ใช้ (15)
 
* C: CSS และ form layout ที่เหมาะสม (15)
 
* C: CSS และ form layout ที่เหมาะสม (15)
* D: ความถูกต้องในการทำงานของโปรแกรม (30)
+
* D: Field Validations (15)
 +
* E: ความสมบูรณ์ในการทำงานของโปรแกรม (30)
 
* F: รายงานรายรับรายจ่าย (15)
 
* F: รายงานรายรับรายจ่าย (15)

รุ่นแก้ไขปัจจุบันเมื่อ 07:54, 17 เมษายน 2554

ประกาศให้เมื่อวันที่ 21 มกราคม 2554 ให้เลื่อนส่งจากเดิมในวันพุธที่ 9 กุมภาพันธ์ 2554 เวลา 23.59 น. ออกไปเป็น วันเสาร์ที่ 12 กุมภาพันธ์ 2554 เวลา 23.59 น.

ในการบ้านนี้นิสิตจะสร้างระบบบัญชีส่วนตัว เพื่อให้นิสิตสามารถบันทึกรายรับรายจ่ายประจำวัน รวมถึงออกรายงานสรุปรายรับรายจ่ายของตนเองได้

ข้อกำหนดเบื้องต้นเกี่ยวกับระบบบัญชีส่วนตัว

  • สร้างโครงของแอพพลิเคชันขึ้นมาด้วย Rails หรือใช้แอพพลิเคชันตัวอย่างที่ใช้ Authentication ที่ดาวน์โหลดได้ที่ แอพพลิเคชันตัวอย่างที่ใช้ Authentication เพื่อนำมาปรับใช้ในการสร้างแอพพลิเคชันนี้ (นิสิตควรปรับแก้ stylesheet (CSS) ของแอพพลิเคชันให้ดูเหมาะสมกับแอพพลิเคชันของตน)
  • ระบบจำเป็นต้องมีฐานข้อมูลที่ใช้ในการจัดเก็บข้อมูล โดยให้ใช้ SQLite เป็นระบบฐานข้อมูล
  • ตารางในฐานข้อมูลควรถูกออกแบบตามความเหมาะสมเพื่อใช้บันทึกข้อมูลรายรับรายจ่ายประจำวันได้
  • สำหรับการบ้านนี้ แอพพลิเคชันต้องมีระบบ Authentication โดยสามารถใช้ขั้นตอนวิธีตามแอพพลิเคชันตัวอย่างที่ใช้ Authentication
  • สำหรับการบ้านนี้ แอพพลิเคชันไม่จำเป็นต้องมีหน้าจอเพื่อใช้ในการเพิ่มจำนวนผู้ใช้ในระบบ ผู้ใช้ทั้งหมดในระบบจะถูกสร้างเตรียมไว้ในฐานข้อมูลตั้งแต่ตอนติดตั้งแอพพลิเคชัน โดยข้อมูลผู้ใช้ในระบบทั้งหมดจะถูกเตรียมเก็บไว้ในไฟล์ db/seeds.rb เพื่อใช้ในการเตรียมข้อมูลผู้ใช้เข้าไปในฐานข้อมูลตอนติดตั้งแอพพลิเคชัน (สามารถดูตัวอย่างได้ที่ แอพพลิเคชันตัวอย่างที่ใช้ Authentication)
  • กำหนดให้ผู้ใช้ 1 คนมีบัญชีรายรับรายจ่ายเพียง 1 บัญชีเท่านั้น
  • ข้อมูลเริ่มต้นที่สร้างเตรียมไว้ในไฟล์ db/seeds.rb ควรมีจำนวนผู้ใช้ไม่น้อยกว่า 3 คน ส่วนข้อมูลอื่นๆ ที่จำเป็นต้องสร้างเตรียมไว้ก็ขอให้มีไม่น้อยกว่า 3 รายการในแต่ละประเภท

รายละเอียดเกี่ยวกับระบบบัญชีส่วนตัว

  • หน้าหลักของแอพพลิเคชันจะเป็นหน้าล็อกอิน เพื่อเข้าใช้ระบบ
  • หลังจากที่ผู้ใช้ล็อกอินผ่านเข้าระบบไปได้แล้ว หน้าของแอพพลิเคชันจะแสดงรายการรายรับและรายจ่ายของผู้ใช้ที่ได้ล็อกอินเข้าไป โดยให้ลำดับของรายการที่เข้ามาใหม่อยู่เหนือรายการที่ถูกบันทึกมาก่อน
  • หน้าเพจต่างๆ ในแอพพลิเคชันควรมีเมนูที่ลิงค์ไปยังหน้าเพจอื่นที่สัมพันธ์กันอย่างเหมาะสม
  • ประเภทของรายการที่ปรากฏในระบบบัญชีนี้มี 2 ชนิดคือ
    1. รายการรายรับ เป็นรายการที่ทำให้ยอดเงินในบัญชีมีค่าสูงขึ้น อาทิเช่น เงินเปิดบัญชี ค่าเบี้ยเลี้ยง ค่าตอบแทนผู้ช่วยสอน เงินแต๊ะเอีย เป็นต้น
    2. รายการรายจ่าย เป็นรายการที่ทำให้ยอดเงินในบัญชีมีค่าลดลง อาทิเช่น ค่าอาหาร ค่าเดินทาง ค่าหนังสือ ค่าตั๋วหนัง เป็นต้น
  • ผู้ใช้ไม่ควรต้องกรอกข้อมูลจำนวนเงินสำหรับรายการรายจ่ายเป็นค่าติดลบ แอพพลิเคชันควรให้ผู้ใช้กรอกค่าใช้จ่ายตามจริง อาทิเช่น ค่าหนังสือ ควรกรอกเป็นจำนวนเงิน 1,200 บาท แทนที่จะต้องให้ผู้ใช้กรอกเป็นจำนวนเงิน -1,200 บาท เป็นต้น
  • ประเภทของรายการในแอพพลิเคชันต้องถูกเก็บอยู่ในตาราง ซึ่งแยกออกมาจากตารางที่ใช้เก็บรายละเอียดของรายการรายรับและรายจ่าย และข้อมูลในตารางประเภทรายการจะถูกสร้างเตรียมไว้ล่วงหน้าโดยถูกเก็บไว้ใน db/seeds.rb โดยที่ข้อมูลส่วนนี้จะไม่ถูกเปลี่ยนแปลงหรือลบออกจากฐานข้อมูลในช่วงการทำงานของแอพพลิเคชันนี้
  • ส่วนรายการรายรับและรายจ่ายสามารถถูกเพิ่ม ลบ และแก้ไข ในตารางรายการ ผ่านหน้าเพจของแอพพลิเคชัน โดยประเภทของรายการจะถูกอ่านเพื่อนำมาแสดงจากตารางประเภทรายการ
  • รายการรายรับรายจ่ายควรมีรายละเอียดที่จำเป็น โดยที่อย่างน้อยควรประกอบด้วย วันและเวลาที่ทำรายการ ประเภทของรายการ รายละเอียดของรายการหากผู้ใช้ต้องการบันทึกเพิ่มเติมไว้ และจำนวนเงิน เป็นต้น
  • แอพพลิเคชันมีหน้าเพจแสดงรายงานรายรับรายจ่ายประจำวัน
    1. ผู้ใช้จะป้อนวันที่เริ่มต้นและวันที่สิ้นสุดในการแสดงรายงานประจำวันนี้
    2. รายงานนี้จะแสดงรายการที่เกิดขึ้นของแต่ละวันในช่วงเวลาที่ผู้ใช้กำหนด โดยให้เรียงลำดับจากรายการที่เกิดขึ้นก่อนเหนือรายการที่เกิดตามมา
    3. เมื่อสิ้นสุดของแต่ละวัน รายงานต้องแสดงยอดเงินสุทธิของรายการที่เกิดขึ้นในวันนั้น
    4. เมื่อสิ้นสุดรายงาน รายงานต้องแสดงยอดเงินสุทธิของรายการที่เกิดขึ้นในช่วงวันที่ผู้ใช้ได้กำหนดมา

หลังจากทำการพัฒนาเสร็จแล้ว ให้ rollback migration ทั้งหมด (ให้ database ว่าง) แล้ว zip ไดเรคทอรีที่ rails สร้างทั้งหมดส่งมาที่อีเมล์ของ อ.ประมุข (pramook at gmail dot com) และ อ.ชาคริต (chakrit dot w at gmail dot com)



คะแนนการบ้าน 2

รหัสนิสิต A(10) B(15) C(15) D(15) E(30) F(15) รวม หมายเหตุ
50040229 10 0 15 0 20 0 45
  • -15 ไม่มี Authentication
  • -15 ไม่มี Field Validations
  • -15 ไม่มีรายงานรายรับรายจ่าย
50042993
50043058 10 15 15 15 30 15 100
50043082 10 15 15 15 30 15 100
50043140 10 10 15 15 25 0 75
  • -5 สามารถเพิ่มรายการได้แม้ว่ายังไม่ผ่านการล็อกอิน
  • -15 เรียกดูรายงานแล้วเกิด error ว่า undefined method 'datetimedo' for nil:NilClass
50043173 10 10 15 15 20 5 75
  • -5 แม้ว่าล็อกเอ้าท์แล้วก็ยังสามารถกลับไปทำรายการได้
  • -10 ขาดการจำแนกประเภทรายการรายรับและรายจ่าย
  • -10 รายงานขาดความสมบูรณ์
50043215 10 15 15 15 20 5 80
  • -10 ขาดการจำแนกประเภทรายการรายรับและรายจ่าย
  • -10 รายงานขาดความสมบูรณ์
50043231 10 15 15 15 20 5 80
  • -10 ขาดการจำแนกประเภทรายการรายรับและรายจ่าย
  • -10 รายงานขาดความสมบูรณ์
50043306 10 15 15 15 20 5 80
  • -10 ขาดการจำแนกประเภทรายการรายรับและรายจ่าย
  • -10 รายงานยังจำแนกได้ไม่ละเอียด
51043214
50180249 10 10 0 15 20 0 55
  • -5 ส่วน Authentication ไม่สมบูรณ์
  • -15 ไม่มี CSS และ form layout เลย
  • -10 ขาดการจำแนกประเภทรายการรายรับและรายจ่าย
  • -15 ไม่มีรายงานรายรับรายจ่าย
51180198 0 0 10 10 15 0 35
  • -10 ช่วงเตรียมข้อมูลแล้วมี error
  • -10 การทดสอบระบบเป็นไปได้ด้วยยาก
51180503 0 15 10 15 15 5 60
  • -10 โปรแกรมเกิด routing error
  • -10 รายงานไม่เหมาะสมในการใช้งาน

เกณฑ์การให้คะแนน

  • A: เตรียมข้อมูลเบื้องต้น migration และ seed (10)
  • B: Authentication แต่ละผู้ใช้ (15)
  • C: CSS และ form layout ที่เหมาะสม (15)
  • D: Field Validations (15)
  • E: ความสมบูรณ์ในการทำงานของโปรแกรม (30)
  • F: รายงานรายรับรายจ่าย (15)