ผลต่างระหว่างรุ่นของ "418342 ภาคปลาย 2553/การบ้าน 2"
ไปยังการนำทาง
ไปยังการค้นหา
Ckw (คุย | มีส่วนร่วม) |
|||
(ไม่แสดง 22 รุ่นระหว่างกลางโดยผู้ใช้ 2 คน) | |||
แถว 37: | แถว 37: | ||
<table border="1"> | <table border="1"> | ||
<tr> | <tr> | ||
− | <td width="10%"> | + | <td width="10%">รหัสนิสิต</td> |
− | <td>A ( | + | <td width="5%">A(10)</td> |
− | <td>B ( | + | <td width="5%">B(15)</td> |
− | <td>C ( | + | <td width="5%">C(15)</td> |
− | <td>D ( | + | <td width="5%">D(15)</td> |
− | <td>E ( | + | <td width="5%">E(30)</td> |
− | <td>F ( | + | <td width="5%">F(15)</td> |
− | + | <td width="5%">รวม</td> | |
− | <td>รวม</td> | + | <td width="55%">หมายเหตุ</td> |
− | <td>หมายเหตุ</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>50040229</td> | <td>50040229</td> | ||
− | |||
− | |||
− | |||
− | |||
<td>10</td> | <td>10</td> | ||
<td>0</td> | <td>0</td> | ||
+ | <td>15</td> | ||
+ | <td>0</td> | ||
+ | <td>20</td> | ||
<td>0</td> | <td>0</td> | ||
− | <td> | + | <td>45</td> |
<td> | <td> | ||
− | * - | + | * -15 ไม่มี Authentication |
− | * - | + | * -15 ไม่มี Field Validations |
+ | * -15 ไม่มีรายงานรายรับรายจ่าย | ||
</td> | </td> | ||
</tr> | </tr> | ||
แถว 67: | แถว 66: | ||
<tr> | <tr> | ||
<td>50042993</td> | <td>50042993</td> | ||
− | <td> | + | <td></td> |
− | <td> | + | <td></td> |
− | <td> | + | <td></td> |
− | <td> | + | <td></td> |
− | <td> | + | <td></td> |
− | <td> | + | <td></td> |
− | <td> | + | <td></td> |
− | <td> | + | <td></td> |
− | |||
− | |||
− | |||
− | |||
− | </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> | + | <td>15</td> |
− | <td> | + | <td>100</td> |
− | + | <td></td> | |
− | <td> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | </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> | + | <td>15</td> |
− | |||
− | |||
− | |||
− | |||
− | |||
<td>100</td> | <td>100</td> | ||
<td></td> | <td></td> | ||
แถว 113: | แถว 102: | ||
<tr> | <tr> | ||
<td>50043140</td> | <td>50043140</td> | ||
− | |||
<td>10</td> | <td>10</td> | ||
<td>10</td> | <td>10</td> | ||
− | <td> | + | <td>15</td> |
− | <td> | + | <td>15</td> |
− | <td> | + | <td>25</td> |
− | <td> | + | <td>0</td> |
− | <td> | + | <td>75</td> |
<td> | <td> | ||
− | * - | + | * -5 สามารถเพิ่มรายการได้แม้ว่ายังไม่ผ่านการล็อกอิน |
+ | * -15 เรียกดูรายงานแล้วเกิด error ว่า undefined method 'datetimedo' for nil:NilClass | ||
</td> | </td> | ||
</tr> | </tr> | ||
แถว 128: | แถว 117: | ||
<tr> | <tr> | ||
<td>50043173</td> | <td>50043173</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> | + | <td>5</td> |
− | <td> | + | <td>75</td> |
− | |||
− | |||
<td> | <td> | ||
− | * - | + | * -5 แม้ว่าล็อกเอ้าท์แล้วก็ยังสามารถกลับไปทำรายการได้ |
+ | * -10 ขาดการจำแนกประเภทรายการรายรับและรายจ่าย | ||
+ | * -10 รายงานขาดความสมบูรณ์ | ||
</td> | </td> | ||
</tr> | </tr> | ||
แถว 143: | แถว 133: | ||
<tr> | <tr> | ||
<td>50043215</td> | <td>50043215</td> | ||
− | |||
<td>10</td> | <td>10</td> | ||
− | <td> | + | <td>15</td> |
− | <td> | + | <td>15</td> |
− | <td> | + | <td>15</td> |
− | <td> | + | <td>20</td> |
− | <td> | + | <td>5</td> |
− | <td> | + | <td>80</td> |
<td> | <td> | ||
− | * -10 | + | * -10 ขาดการจำแนกประเภทรายการรายรับและรายจ่าย |
− | * - | + | * -10 รายงานขาดความสมบูรณ์ |
</td> | </td> | ||
</tr> | </tr> | ||
แถว 159: | แถว 148: | ||
<tr> | <tr> | ||
<td>50043231</td> | <td>50043231</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> | ||
− | * - | + | * -10 ขาดการจำแนกประเภทรายการรายรับและรายจ่าย |
− | + | * -10 รายงานขาดความสมบูรณ์ | |
− | * -10 | ||
</td> | </td> | ||
</tr> | </tr> | ||
แถว 176: | แถว 163: | ||
<tr> | <tr> | ||
<td>50043306</td> | <td>50043306</td> | ||
− | |||
<td>10</td> | <td>10</td> | ||
− | <td> | + | <td>15</td> |
− | <td> | + | <td>15</td> |
− | <td> | + | <td>15</td> |
− | <td> | + | <td>20</td> |
− | <td> | + | <td>5</td> |
− | <td> | + | <td>80</td> |
<td> | <td> | ||
− | * -10 | + | * -10 ขาดการจำแนกประเภทรายการรายรับและรายจ่าย |
+ | * -10 รายงานยังจำแนกได้ไม่ละเอียด | ||
</td> | </td> | ||
</tr> | </tr> | ||
แถว 191: | แถว 178: | ||
<tr> | <tr> | ||
<td>51043214</td> | <td>51043214</td> | ||
− | |||
<td></td> | <td></td> | ||
<td></td> | <td></td> | ||
แถว 204: | แถว 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> | + | <td> |
− | + | * -5 ส่วน Authentication ไม่สมบูรณ์ | |
+ | * -15 ไม่มี CSS และ form layout เลย | ||
+ | * -10 ขาดการจำแนกประเภทรายการรายรับและรายจ่าย | ||
+ | * -15 ไม่มีรายงานรายรับรายจ่าย | ||
+ | </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>51180198</td> | <td>51180198</td> | ||
− | <td> | + | <td>0</td> |
+ | <td>0</td> | ||
<td>10</td> | <td>10</td> | ||
<td>10</td> | <td>10</td> | ||
− | <td> | + | <td>15</td> |
− | <td> | + | <td>0</td> |
− | <td> | + | <td>35</td> |
− | |||
− | |||
<td> | <td> | ||
− | * -10 | + | * -10 ช่วงเตรียมข้อมูลแล้วมี error |
+ | * -10 การทดสอบระบบเป็นไปได้ด้วยยาก | ||
</td> | </td> | ||
</tr> | </tr> | ||
แถว 232: | แถว 222: | ||
<tr> | <tr> | ||
<td>51180503</td> | <td>51180503</td> | ||
− | <td> | + | <td>0</td> |
+ | <td>15</td> | ||
<td>10</td> | <td>10</td> | ||
− | <td> | + | <td>15</td> |
− | <td> | + | <td>15</td> |
− | <td> | + | <td>5</td> |
− | <td> | + | <td>60</td> |
− | |||
− | |||
<td> | <td> | ||
− | * -10 | + | * -10 โปรแกรมเกิด routing error |
+ | * -10 รายงานไม่เหมาะสมในการใช้งาน | ||
</td> | </td> | ||
</tr> | </tr> | ||
− | |||
</table> | </table> | ||
=== เกณฑ์การให้คะแนน === | === เกณฑ์การให้คะแนน === | ||
− | * A: เตรียมข้อมูลเบื้องต้น migration และ seed ( | + | * A: เตรียมข้อมูลเบื้องต้น migration และ seed (10) |
− | * B: Authentication แต่ละผู้ใช้ ( | + | * B: Authentication แต่ละผู้ใช้ (15) |
* C: CSS และ form layout ที่เหมาะสม (15) | * C: CSS และ form layout ที่เหมาะสม (15) | ||
− | * D: | + | * 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,200 บาท แทนที่จะต้องให้ผู้ใช้กรอกเป็นจำนวนเงิน -1,200 บาท เป็นต้น
- ประเภทของรายการในแอพพลิเคชันต้องถูกเก็บอยู่ในตาราง ซึ่งแยกออกมาจากตารางที่ใช้เก็บรายละเอียดของรายการรายรับและรายจ่าย และข้อมูลในตารางประเภทรายการจะถูกสร้างเตรียมไว้ล่วงหน้าโดยถูกเก็บไว้ใน db/seeds.rb โดยที่ข้อมูลส่วนนี้จะไม่ถูกเปลี่ยนแปลงหรือลบออกจากฐานข้อมูลในช่วงการทำงานของแอพพลิเคชันนี้
- ส่วนรายการรายรับและรายจ่ายสามารถถูกเพิ่ม ลบ และแก้ไข ในตารางรายการ ผ่านหน้าเพจของแอพพลิเคชัน โดยประเภทของรายการจะถูกอ่านเพื่อนำมาแสดงจากตารางประเภทรายการ
- รายการรายรับรายจ่ายควรมีรายละเอียดที่จำเป็น โดยที่อย่างน้อยควรประกอบด้วย วันและเวลาที่ทำรายการ ประเภทของรายการ รายละเอียดของรายการหากผู้ใช้ต้องการบันทึกเพิ่มเติมไว้ และจำนวนเงิน เป็นต้น
- แอพพลิเคชันมีหน้าเพจแสดงรายงานรายรับรายจ่ายประจำวัน
- ผู้ใช้จะป้อนวันที่เริ่มต้นและวันที่สิ้นสุดในการแสดงรายงานประจำวันนี้
- รายงานนี้จะแสดงรายการที่เกิดขึ้นของแต่ละวันในช่วงเวลาที่ผู้ใช้กำหนด โดยให้เรียงลำดับจากรายการที่เกิดขึ้นก่อนเหนือรายการที่เกิดตามมา
- เมื่อสิ้นสุดของแต่ละวัน รายงานต้องแสดงยอดเงินสุทธิของรายการที่เกิดขึ้นในวันนั้น
- เมื่อสิ้นสุดรายงาน รายงานต้องแสดงยอดเงินสุทธิของรายการที่เกิดขึ้นในช่วงวันที่ผู้ใช้ได้กำหนดมา
หลังจากทำการพัฒนาเสร็จแล้ว ให้ 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 |
|
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 |
|
50043173 | 10 | 10 | 15 | 15 | 20 | 5 | 75 |
|
50043215 | 10 | 15 | 15 | 15 | 20 | 5 | 80 |
|
50043231 | 10 | 15 | 15 | 15 | 20 | 5 | 80 |
|
50043306 | 10 | 15 | 15 | 15 | 20 | 5 | 80 |
|
51043214 | ||||||||
50180249 | 10 | 10 | 0 | 15 | 20 | 0 | 55 |
|
51180198 | 0 | 0 | 10 | 10 | 15 | 0 | 35 |
|
51180503 | 0 | 15 | 10 | 15 | 15 | 5 | 60 |
|
เกณฑ์การให้คะแนน
- A: เตรียมข้อมูลเบื้องต้น migration และ seed (10)
- B: Authentication แต่ละผู้ใช้ (15)
- C: CSS และ form layout ที่เหมาะสม (15)
- D: Field Validations (15)
- E: ความสมบูรณ์ในการทำงานของโปรแกรม (30)
- F: รายงานรายรับรายจ่าย (15)