การทำศูนย์สอบ Online แบบตรวจทันที

ปรับปรุง : 2548-11-15 ()

บทเรียน ONLINE : การเขียนภาษา Clipper
[ การทำศูนย์สอบ Online แบบตรวจทันที]
ตัวอย่างข้อสอบระบบปฏิบัติการ | แฟ้ม osys.dbf | Clipper compiler 5

  1. หลักการในเบื้องต้น
  2. สิ่งที่ต้องจัดเตรียมเพื่อทำศูนย์สอบ online
  3. โปรแกรม และแฟ้มข้อมูลที่จำเป็นต้องใช้
  4. วิธีการเขียนส่วน Javascript สำหรับเช็คคำตอบ
  5. วิธีการเขียนโปรแกรมสร้างชุดข้อสอบ
  6. วิธีการเขียนโปรแกรมปรับปรุงชุดข้อสอบทุก 5 นาที
  7. แบบฝึกหัด
หลักการในเบื้องต้น
ในปัจจุบันเครือข่าย internet เข้ามามีอิทธิพลในชีวิตของมนุษย์เพิ่มขึ้นทุกวินาที โดยเฉพาะการไหลเข้าไปสู่สถาบันการศึกษา เนื่องจากสถาบันการศึกษา คือแหล่งรวมของผู้ใฝ่ศึกษา และนักพัฒนาที่กระหายที่จะเรียนรู้ ศึกษา พัฒนา และนำไปใช้ เพราะศักยภาพของเครือข่าย internet ที่สามารถนำเสนอข้อมูลได้ทั้งภาพ และเสียง และยังสามารถนำข้อมูล จากมุมใดของโลกมาใช้ หรือแม้แต่การสั่งประมวลผลข้อมูลจากอีกมุมหนึ่งของโลก เพื่อมานำแสดงผลในคอมพิวเตอร์ที่ online เข้าสู่ระบบ internet ไว้ ดังนั้นการประยุกต์ และพัฒนาโปรแกรมต่าง ๆ เพื่อนำไปใช้ในเครือข่าย internet จึงเกิดขึ้นอยู่ตลอดเวลา และการพัฒนายังเกิดได้จากทุกมุมโลก จากนักพัฒนาทุกระดับ เพื่อให้การใช้ประโยชน์จากระบบเครือข่าย ได้ผลสูงสุด
จากแนวคิดที่ว่า นักเรียน น่าจะได้เรียนรู้ และศึกษาหาข้อมูลที่อาจารย์ผู้สอน เตรียมไว้ให้นักเรียนเข้าไปศึกษา และเนื้อหาต่าง ๆ ควรได้รับการปรับปรุงให้ทันยุค ทันสมัยเสมอ สิ่งหนึ่งที่อาจารย์สามารถเตรียมให้นักเรียนของตน ได้ฝึกฝนตนเองเป็นอย่างดีคือ แบบฝึกหัด ซึ่งโดยทั่วไปแบบฝึกหัดที่อยู่ในชีท หรือรวบรวมเป็นเล่ม จะมีข้อจำกัดบางประการ เช่นนักเรียนเปิดแบบฝึกหัดหน้าที่ 10 ก็จะพบแต่ข้อสอบข้อเดิมไม่เคยเปลี่ยนแปลง เพื่อแก้ข้อจำกัดนั้น จึงได้มีแนวคิดที่จะทำคลังข้อสอบเก็บไว้ในเครือข่าย internet แล้วให้นักเรียนได้มาฝึกฝนผ่านคอมพิวเตอร์ที่ online อยู่จากที่ใดก็ได้ โดยมีจุดเด่นคือ การเปิดข้อสอบแต่ละครั้ง จะพบข้อสอบที่ไม่ซ้ำจากของเดิม และไม่มีการเรียงข้อ แต่ถ้านักศึกษาใช้เวลา กับการทำแบบฝึกหัดมาก ๆ ก็จะมีประสบการณ์ในการทำข้อสอบ และไม่รู้สึกเบื่อ ถ้าข้อสอบที่อาจารย์ผู้สอนเตรียมไว้ มีจำนวนข้อสอบมากมาก
ดังนั้น บทความนี้จึงต้องการให้อาจารย์ผู้สอน ที่สนใจจะมีแบบฝึกหัด หรือข้อสอบเก่า เตรียมไว้ให้นักเรียน ได้เข้าไปฝึกฝนตนเอง โดยอาจารย์ท่านนั้นควรจะมีความรู้เกี่ยวกับการเขียนโปรแกรมบ้าง เพื่อที่จะได้ปรับปรุงแก้ไขรูปร่างหน้าตาของข้อสอบ และสามารถเตรียมฐานข้อมูลแบบฝึกหัดได้ด้วยตนเอง ซึ่งอาจารย์ที่จะนำวิธีการนี้ไปใช้ จะทั้งการเขียนโปรแกรม บนระบบ DOS และการเขียนโปรแกรมในระบบ internet เพื่อที่จะทำศูนย์บริการข้อสอบ หรือแบบฝึกหัดนี้ แบบ online ให้นักเรียน หรือผู้สนใจได้ เข้าไปฝึกทำแบบฝึกหัดที่อาจารย์เตรียมไว้ ได้ตลอด 24 ชั่วโมง ได้ทุกมุมโลก
สิ่งที่ต้องจัดเตรียมเพื่อทำศูนย์สอบ online
    ข้อกำหนดเหล่านี้ถูกกำหนด เพื่อจัดทำศูนย์สอบ online ตามหลักการในบทความนี้
  1. ต้องมีเลข ip ที่ webmaster ผู้ดูแลระบบเครือข่ายของท่าน กำหนดให้ และมีคอมพิวเตอร์ที่ท่านจะสามารถใช้ทำเป็น web server ได้ 1 เครื่อง เพื่อให้นักเรียนสามารถเปิดเว็บของท่านได้ นั่นก็หมายความว่า ท่านจะต้องมี homepage ที่ไม่ได้ นำไปฝากไว้กับ free hosting ใด ๆ เช่น hypermart.net หรือ geocities.com เป็นต้น
  2. ต้องติดตั้ง PWS หรือ IIS ในระบบปฎิบัติการ Windows ที่ท่านมาอยู่ เหตุที่กำหนดระบบปฏิบัติการ Windows เพื่อที่จะให้ประมวลผลโปรแกรมที่ถูก compile มาจากภาษา clipper หรือท่านจะใช้โปรแกรมสำหรับให้บริการ Web server ตัวอื่นแทน PWS และ IIS เช่น Apache for windows ก็ได้
  3. ต้องมีโปรแกรมสำหรับแปลภาษา clipper version 5 และโปรแกรมที่สามารถสร้างแฟ้ม dbf และบันทึกข้อสอบทั้งหมดลงไปในแฟ้มนั้น

โปรแกรม และแฟ้มข้อมูลที่จำเป็นต้องใช้
  1. osys.dbf ทำหน้าที่เก็บข้อสอบทั้งหมด ภายในแฟ้มประกอบด้วยเขตข้อมูล 7 ตัว
    no : ลำดับของข้อสอบ (ตัวอักษร)
    ques : คำถาม (ตัวอักษร)
    c1 ถึง c4 : ตัวเลือกที่ 1 ถึง 4 (ตัวอักษร)
    ans : เลขตัวเลือกที่ถูกมีค่าระหว่าง 1 ถึง 4 (ตัวอักษร)
  2. osys.exe ซึ่งเป็นผลจากการแปลโปรแกรม osys.prg ทำหน้าที่อ่านข้อมูลจากแฟ้ม osys.dbf มาเลือกข้อสอบแบบสุ่มเพียง 10 ข้อ แล้วเขียนลงไปในแฟ้ม _osys.htm โดยทำให้อยู่ในรูปที่สามารถเลือกตอบ และตรวจคำตอบได้ด้วย Javascript ทันที
  3. run5min.exe ซึ่งเป็นผลจากการแปลโปรแกรม run5min.prg ทำหน้าที่สั่งประมวลผล โปรแกรม osys.exe และคัดลอกแฟ้ม _osys.htm ไปแทนที่ osys.htm ซึ่งเป็นแฟ้มข้อสอบจริง ดังนั้นโปรแกรม run5min.exe จึงเป็นโปรแกรมที่จะถูกประมวลผลในคอมพิวเตอร์ตลอดเวลา
  4. osys.htm เป็นแฟ้มที่นักเรียนสามารถเปิด แฟ้มทดสอบทำด้วยตนเอง แต่แฟ้มนี้จะถูกปรับปรุง เป็นข้อสอบชุดใหม่ ทุก ๆ 5 นาที โดยโปรแกรม run5min.exe

วิธีการเขียนส่วน Javascript สำหรับเช็คคำตอบ
เพื่อให้เข้าใจโปรแกรมต่อไปได้โดยง่าย จึงขออธิบายหลักการของ Javascript ให้เข้าใจได้โดยง่ายก่อน โดยโปรแกรมนี้จะแสดงให้เห็นส่วนสำคัญ 2 ส่วนคือ
1. ประกาศ function สำหรับเก็บค่าที่ถูกต้อง เมื่อมีการเรียก function checkq1 จะนำค่าที่ถูกส่งเข้าไปผ่านตัวแปร value ไปตรวจสอบ แล้วจึงสั่ง alert ค่า right หรือ wrong ที่ตรงกับเงื่อนไขทางจอภาพต่อไป
2. ส่วนของ form ใช้ทำหน้าที่แสดงข้อสอบบนจอภาพ เมื่อเลือกตอบตัวเลือกใด จะทำงานตาม function checkq1 ที่อยู่ในคุณสมบัติ onclick นั้น แล้วส่งค่าจากตัวแปร value ไปให้ function ตรวจสอบ
Source code เพื่อแสดงให้เห็นการใช้ Javascript ในการตรวจคำตอบ
    <html><head><title>Java sample</title> <script language="JavaScript"> <!-- function checkq1( value ) { if( value == 1) alert('Correct'); if( value == 2) alert('Wrong'); if( value == 3) alert('Wrong'); if( value == 4) alert('Wrong'); return true;} // --> </script></head> <body bgcolor=#ffffdd><font size=0 face="ms sans serif"> <form name=Question1> 1. 1+3 เท่ากับ เท่าไร <br><input type=radio name=Q1 value=1 onclick="checkq1(1);">4 <br><input type=radio name=Q1 value=2 onclick="checkq1(2);">3 <br><input type=radio name=Q1 value=3 onclick="checkq1(3);">2 <br><input type=radio name=Q1 value=4 onclick="checkq1(4);">1 </form> </body></html>
ตัวอย่างผลลัพธ์
1. 1+3 เท่ากับ เท่าไร
4
3
2
1

วิธีการเขียนโปรแกรมสร้างชุดข้อสอบ
ส่วนที่ 1 : ส่วนกำหนดค่าเริ่มต้นให้กับโปรแกรม
ส่วนที่ 2 : ทำหน้าที่สุ่มเลขข้อมา 10 ข้อ ไม่ให้ซ้ำกัน เก็บไว้ใน array
ส่วนที่ 3 : ส่วนจัดทำ javascript เพื่อกำหนดข้อที่ถูกหรือผิด ตามเลขข้อที่สุ่มมา
ส่วนที่ 4 : ส่วน html เริ่มต้น
ส่วนที่ 5 : ส่วนสร้างข้อสอบ ในรูป form เลือกข้อสอบจากค่าที่ได้จากการสุ่ม
ส่วนที่ 6 : ส่วนปิด html
Source code ของ osys.prg
    // ส่วนที่ 1 : ส่วนกำหนดค่าเริ่มต้นให้กับโปรแกรม set printer to "_osys.htm" set device to printer _dbf=[osys] _title=[แบบทดสอบการจัดการระบบปฏิบัติการ(ชุดเรียนรู้)] _by1=[<a href=mailto:burin@yonok.ac.th?subject=ชุดoperating>] _by2=[<font color=#ffff00>อ.บุรินทร์ รุจจนพันธุ์</font></a>] // ส่วนที่ 2 : ทำหน้าที่สุ่มเลขข้อมา 10 ข้อ ไม่ให้ซ้ำกัน เก็บไว้ใน array allq=10 use &_dbf allquest=reccount() arn=array(allq) i=0;j=0 while i<allq j++ rnd=mod(int(second()*100+(22/7*1000000*j)),reccount())+1 if ascan(arn,rnd)=0 i++; arn[i]=rnd end end // ส่วนที่ 3 : ส่วนจัดทำ javascript เพื่อกำหนดข้อที่ถูกหรือผิด ตามเลขข้อที่สุ่มมา i=0 @i,0 say [<html><head><title>]+_title+[</title>];i++ @i,0 say [<script language="JavaScript">];i++ @i,0 say [<!-- ];i++ use &_dbf r=1 while r<=allq go arn[r] _ans=alltrim(ans) @i,0 say [function checkq]+alltrim(str(r))+[( value ) {];i++ for f=1 to 4 ft=alltrim(str(f)) if _ans=ft @i,0 say [if( value == ] + ft + [) alert('Correct'); ];i++ else @i,0 say [if( value == ] + ft + [) alert('Wrong'); ];i++ endif next @i,0 say [return true;}];i++ r++ skip end @i,0 say[/]+[/ -->];i++ @i,0 say[</script></head>];i++ // ส่วนที่ 4 : ส่วน html เริ่มต้น @i,0 say[<body bgcolor=#ffffdd><font face="ms sans serif">];i++ @i,0 say[<font size=3><center>]+_title;i++ @i,0 say[</font><br><font size=0>];i++ @i,0 say[ให้ใช้ Mouse เลือกคำตอบ จากนั้นจะแจ้งผลถูกผิดทันที<br>];i++ @i,0 say[รุ่น 1.0 (เพื่อให้นำไปพัฒนา และใช้งานได้ง่าย)</center>];i++ // ส่วนที่ 5 : ส่วนสร้างข้อสอบ ในรูป form เลือกข้อสอบจากค่าที่ได้จากการสุ่ม use &_dbf r=1 while r<=allq go arn[r] _no=alltrim(no); _ques=alltrim(ques) _c1=alltrim(c1); _c2=alltrim(c2) _c3=alltrim(c3); _c4=alltrim(c4) fr=alltrim(str(r)) @i,0 say [<form name="Question]+fr+[">];i++ @i,0 say fr+[. ]+_ques+[ --- (]+_no+[)];i++ for f=1 to 4 ft=alltrim(str(f)) fr=alltrim(str(r)) txt=[<br><input type="radio" name="Q]+fr txt=txt+[" value="]+ft txt=txt+[" onclick="checkq]+fr txt=txt+[(]+ft+[);">] @i,0 say txt+&("_c"+ft);i++ next @i,0 say[</form>];i++ r++ skip end // ส่วนที่ 6 : ส่วนปิด html @i,0 say[<hr>รวบรวมข้อสอบชุดนี้ โดย ]+_by1+_by2;i++ @i,0 say[</body></html>];i++

วิธีการเขียนโปรแกรมปรับปรุงชุดข้อสอบทุก 5 นาที
โปรแกรมข้างล่างนี้ จะทำหน้าที่สั่งประมวลผลโปรแกรม osys.exe เพื่อสร้างแฟ้ม _osys.htm จากนั้นจะคัดลอด _osys.htm ไปเป็น osys.htm โดยการประมวลผลโปรแกรม osys.exe นั้นจะทำเพียง 5 นาทีต่อครั้งเท่านั้น และทุกครั้งที่ประมวลผล จะพิมพ์วันเวลา แสดงไว้ที่จอภาพ
เหตุที่ไม่สั่งให้ osys.exe สร้าง osys.htm ในทันที เนื่องจากการประมวลผลของโปรแกรม osys.exe กับแฟ้มข้อมูล osys.dbf ที่ใหญ่มาก จะใช้เวลานาน เพื่อป้องกันปัญหาการเรียกข้อมูลขณะประมวลผลนั้น จึงสั่งให้สร้างแฟ้มในชื่อ _osys.htm แทน เมื่อสร้างเสร็จจึงจะสั่งให้คัดลอกไปทับแฟ้ม osys.htm อีกทีหนึ่ง
Source code ของ run5min.prg
    cls ? [Updated each 5 minutes for Online testing center ] stime=time() sdate=date() _study="osys.exe" _runcp=[echo y | copy _osys.htm osys.htm >null] t=0 while lastkey()!=27 ! &_study ! &_runcp ? sdate,stime,date(),time(),_study,[ESC to exit] inkey(300) end

แบบฝึกหัด
    ให้ทำตามโจทย์ต่อไปนี้
  1. ให้ทดลองทำตามตัวอย่างข้างบนนี้
  2. ให้ปรับปรุงชื่อแฟ้มจาก osys เป็นชื่ออื่นที่ท่านจะได้นำไปใช้
  3. ให้เพิ่มวิชามากกว่า 1 วิชาเข้าไปในระบบ โดยปรับปรุงโปรแกรมให้เหมาะสม

แนะนำเว็บใหม่ : ผลการจัดอันดับ
รักลำปาง : thcity.com : korattown.com : topsiam.com : มหาวิทยาลัยโยนก
ศูนย์สอบ : รวมบทความ : ไอทีในชีวิตประจำวัน : ดาวน์โหลด : yourname@thaiall.com
ติดต่อ ทีมงาน ชาวลำปาง มีฝันเพื่อการศึกษา Tel.08-1992-7223