Professional Documents
Culture Documents
Parliament Develop
Parliament Develop
ระบบวิเครำะห์โครงกำรพัฒนำบุคคลำกรด้ำนเทคโนโลยีสำรสนเทศและกำรสือ่ สำร
System Of Analysis Human Resource Development Project Of Information
Technology
รำยงำนฉบับสมบูรณ์
ระบบวิเครำะห์โครงกำรพัฒนำบุคลำกรด้ำนเทคโนโลยีสำรสนเทศและกำรสื่อสำร
กลุ่มงำนวิทยำกำรคอมพิวเตอร์ สำนักสำรสนเทศ
สำนักงำนเลขำธิกำรสภำผู้แทนรำษฎร
โดย
นักศึกษำฝึกงำน ระดับปริญญำตรี ชั้นปีที่สอง
คณะวิศวกรรมศำสตร์ สำขำวิศวกรรมซอฟต์แวร์ หลักสูตรนำนำชำติ สถำบันเทคโนโลยีพระจอมเกล้ำเจ้ำคุณทหำรลำดกระบัง
นำยปุณยวีร์ โพธิ์ศรี
นำยจำรุกิตต์ พัฒนพรกุล
สารบัญ
หัวข้อ หน้า
หลักการเหตุและผล 1
วัตถุประสงค์ 1
ผู้ใช้งานที่เกี่ยวข้อง 1
กิจกรรมและแผนการดาเนินการ 2
ระยะเวลาการดาเนินงาน 2
เอกสารแนบ 2
การติดตาม และ ประเมินผล 3
ผู้รับผิดชอบโครงการ 3
คณะกรรมการประเมินโครงการ 3
วงจรการพัฒนาระบบ (System Development Life Cycle :SDLC) 4
การประยุกต์ใช้ Agile กับโครงการพัฒนาระบบ 11
ความต้องการของระบบ (System Requirement) 14
การวิเคราะห์และออกแบบระบบ ( System Analysis And Design ) 17
โครงสร้างระบบ (System Architecture) 17
แผนภาพแสดงความสัมพันธ์ของผู้ใช้ระบบ (Use Case Diagram) 18
แผนภาพกิจกรรม ( Activity Diagram ) 22
การออกแบบฐานข้อมูล 23
พจนานุกรมข้อมูล ( Data Dictionary ) 24
ภาคผนวก
คู่มือการใช้งานโปรแกรม 29
Source code 44
รายชื่อคณะกรรมการ 147
ข้อมูลผู้จัดทาโครงการ 147
ระบบวิเคราะห์โครงการพัฒนาบุคลากรด้านเทคโนโลยีสารสนเทศและการสือ่ สาร
System Of Analysis Human Resource Development Project Of Information Technology
===================================
1. หลักการและเหตุผล
กลุ่มงานวิทยาการคอมพิวเตอร์ สานักสารสนเทศ สานักงานเลขาธิการสภาผู้แทนราษฎร มีหน้าที่หลักใน
การจัดการฝึกอบรมทางด้านเทคโนโลยีสารสนเทศ ให้แก่บุคลากรของสานักงานเลขาธิการสภาผู้แทนราษฎร ให้มี
ความรู้และทักษะความสามารถทางด้านไอที ซึ่งในแต่ละปีงบประมาณ ทางกลุ่มงานวิทยาการคอมพิวเตอร์ได้
จัดทาโครงการพัฒนาบุคลากรด้านเทคโนโลยีสารสนเทศและการสื่อสาร ขึ้นเป็นจานวนหลายโครงการและได้มีการ
นาโปรแกรม Microsoft Excel มาจัดเก็บข้อมูลของโครงการต่าง ๆ ซึ่งประกอบไปด้วย ชื่อโครงการ จานวนเงิน
งบประมาณ ค่าใช้จ่ายที่เกิดขึ้นจริง ผู้รับผิดชอบโครงการและข้อมูลวิทยากร
ซึ่งปัญหาจากการนา Microsoft Excel มาจัดเก็บข้อมูลนั้นเป็นการเก็บข้อมูลในรูปแบบไฟล์ ทาให้เกิด
ความผิดพลาดได้ง่าย และลักษณะของการทางานเป็นทีมนั้น ทาให้เกิดมีข้อมูลโครงการของแต่ละคนไม่ตรงกัน ทา
ให้ข้อมูลที่นาเสนอผู้บ ริหาร หรือข้อมูลที่ นามาใช้ในการวิเคราะห์โครงการเกิดความผิดพลาดขึ้น เพื่อแก้ปัญหา
ดังกล่าว จึงได้จัดทาระบบวิเคราะห์ โครงการพัฒ นาบุคลากรด้านเทคโนโลยีสารสนเทศและการสื่อสาร ให้ เป็น
รูปแบบโปรแกรมบริหารจัดการ มีการเก็บข้อมูลทั้งหมดไว้ในฐานข้อมูล ที่เดียวกัน และง่ายต่อการบริหารจัดการ
ข้อมูลดังกล่าว
2. วัตถุประสงค์
1. เพื่อใช้ในการบันทึกข้อมูลของโครงการต่างๆเข้าไปไว้ในระบบฐานข้อมูล
2. เพื่อวิเคราะห์และจัดเก็บข้อมูลในการบริหารงานโครงการให้มีประสิทธิภาพ
3. เพื่อนาข้อมูลจากการวิเคราะห์ไปดาเนินการตัดสินใจในการพิจารณาโครงการพัฒนาบุคลากรด้าน
เทคโนโลยีสารสนเทศ ในปีงบประมาณต่อไป
3. ผู้ใช้งานที่เกี่ยวข้อง
1. เจ้าหน้าทีก่ ลุ่มงานวิทยาการคอมพิวเตอร์ สานักสารสนเทศ
2. ผู้ดแู ลระบบ (System Administrator)
1
4. กิจกรรม และ แผนการดาเนินการ
เดือน/2558
รายการ
มิ.ย. ก.ค.
การวางแผนงานโครงการ ๑ ๒ ๓ ๔ ๑ ๒ ๓ ๔
1.วางแผนการจัดการ เอกสาร ประกอบโครงการ
2.จัดทาเอกสาร ประกอบโครงการ
3.ประชุม เพื่อปรับปรุง เพิ่มเติม และ แก้ไข เอกสาร
4.วางแผน และ ปรับแก้ เพิ่มเติมเอกสาร
5.สรุป และ นาเสนอเอกสาร
6.วางแผนการเขียนโปรแกรม
7.เริ่มทาการเขียนโปรแกรม
8.เริ่มนาเสนอ โปรแกรมที่ยังไม่สมบูรณ์ เพื่อรอรับการ
ปรับปรุง หรือ เพิ่มเติม
9.ปรับปรุง และ พัฒนาโปรแกรมต่อจากเดิม
10.นาเสนอโปรแกรมสาเร็จรูป พร้อมเอกสาร และ สื่อการ
นาเสนอ
5. ระยะเวลาการดาเนินงาน
ระยะดาเนินการ 46 วัน (2 มิ.ย. – 17 ก.ค.)
6. เอกสารแนบ : เพื่อใช้ประกอบการพิจารณา
1.แผนภาพ Visual Concept ของระบบงาน
2.แผนภาพ System Architecture
3.แผนภาพ Use Case Diagram
4.แผนภาพ ER Diagram
5.แผนภาพ Activity Diagram
6.รายละเอียด Requirement
2
7. การติดตามและประเมินผล
ใช้แบบสอบถามประเมิน Formative และ ประเมินผลโดยคณะกรรมการประเมินงาน
8. ผู้รับผิดชอบโครงการ
ที่ปรึกษาโครงการ :
1. นายไชยยศ สันสังวร ผู้บังคับบัญชากลุ่มงานวิทยาการคอมพิวเตอร์
2. นายชัยวัฒน์ ปันต่า นักวิชาการคอมพิวเตอร์ปฏิบัติการ
ผู้รับผิดชอบโครงการ :
1. นายปุณยวีร์ โพธิ์ศรี
2. นายจารุกิตต์ พัฒนพรกุล
9. คณะกรรมการประเมินโครงการ
1. นายไชยยศ สันต์สังวร ผู้บังคับบัญชากลุ่มงานวิทยาการคอมพิวเตอร์
2. นางณีรนุช จุลประภา นักวิชาการคอมพิวเตอร์ชานาญการพิเศษ
3. นางยุพิน พ่วงเสมา นักวิชาการคอมพิวเตอร์ชานาญการ
4. นางสุธาวี อนุญาหงษ์ นักวิชาการคอมพิวเตอร์ชานาญการ
5. นายชัยวัฒน์ ปันต่า นักวิชาการคอมพิวเตอร์ปฏิบัติการ
3
การทบทวนวรรณกรรม/การตรวจสอบเอกสาร
ในการพัฒนาระบบสารสนเทศในองค์กรจะต้องมีการวิเคราะห์กระบวนการทางานขององค์กร เราเรียกว่า
System development Life Cycle (SDLC) การ พั ฒ นาระบบในองค์ ก รเป็ น หน้ าที่ ข องนั ก วิเคราะห์ ระบบที่
จะต้องทาการติดต่อกับ หน่วยงานที่ต้องการพัฒนาระบบสารสนเทศ ว่าการทางานมีองค์ประกอบอะไรบ้าง เช่น
ขนาดขององค์กร รายละเอียดการทางานถ้าเป็นบริษัทขนาดใหญ่ นักวิเคราะห์ จะต้องเข้าใจให้ ชัดเจนเกี่ยวกับ
มาตรฐาน กระบวนการท างานการพั ฒ นาระบบงาน (System development Life Cycle : SDLC) หมายถึ ง
ขั้นตอนหรือกระบวนการในการพัฒนาระบบงาน ซึ่งมีจุดเริ่มต้นในการทางานและจุดสิ้นสุดของการปฏิบัติงานการ
การพัฒ นาซอฟต์แวร์ ตามปกติแล้ วจะประกอบไปด้วยกลุ่มกิจกรรม 3 ส่ วนหลั กๆ ด้ว ยกัน คือ การวิเคราะห์
(Analysis), การออกแบบ (Design) และการนาไปใช้ (Implementation) ซึ่ง กิจกรรมทั้งสามนี้สามารถใช้งานได้ดี
กับโครงการซอฟต์แวร์ขนาดเล็ก ในขณะที่โครงการซอฟต์แวร์ขนาดใหญ่ มักจาเป็นต้องใช้แบบแผนการพัฒ นา
ซอฟต์แวร์ตามแนวทางของ SDLC จนครบทุกกิจกรรม
1. วงจรการพัฒนาระบบ (System Development Life Cycle :SDLC)
ระบบ สารสนเทศทั้งหลายมีวงจรชีวิตที่เหมือนกันตั้งแต่เกิดจนตายวงจรนี้จะเป็นขั้น ตอน ที่เป็นลาดับ
ตั้งแต่ต้นจนเสร็จเรียบร้อย เป็นระบบที่ใช้งานได้ ซึ่งนักวิเคราะห์ระบบต้องทาความเข้าใจให้ดีว่าในแต่ละขั้นตอน
จะต้องทาอะไร และทาอย่างไร ขั้นตอนการพัฒนาระบบมีอยู่ด้วยกัน 7 ขั้น ด้วยกัน คือ
1. เข้าใจปัญหา (Problem Recognition)
2. ศึกษาความเป็นไปได้ (Feasibility Study)
3. วิเคราะห์ (Analysis)
4. ออกแบบ (Design)
5. สร้างหรือพัฒนาระบบ (Construction)
6. การปรับเปลี่ยน (Conversion)
7. บารุงรักษา (Maintenance)
4
ที่มียอดขายสูง หรือสินค้าที่ลูกค้าต้องการสู ง หรือการแยกประเภทสินค้าต่างๆที่ทาได้ไม่ง่ายนัก การที่จะแก้ไข
ระบบเดิมที่มีอยู่แล้วไม่ใช่เรื่องที่ง่ายนัก หรือแม้แต่การสร้างระบบใหม่ ดังนั้นควรจะมีการศึกษาเสียก่อนว่า ความ
ต้องการของเราเพียงพอที่เป็นไปได้หรือไม่ ได้แก่ "การศึกษาความเป็นไปได้" (Feasibility Study)
สรุป ขั้นตอนที่ 1: เข้าใจปัญหา
หน้าที่ : ตระหนักว่ามีปัญหาในระบบ
ผลลัพธ์ : อนุมัติการศึกษาความเป็นไปได้
เครื่องมือ : ไม่มี
บุคลากรและหน้าที่ความรับผิดชอบ : ผู้ใช้หรือผู้บริหารชี้แจงปัญหาต่อนักวิเคราะห์ระบบ
5
ขั้นตอนที่ 3 การวิเคราะห์ (Analysis)
เริ่มเข้าสู่การวิเคราะห์ระบบ การวิเคราะห์ระบบเริ่มตั้งแต่การศึกษาระบบการทางานของธุรกิจนั้น ในกรณี
ที่ระบบเราศึกษานั้นเป็นระบบสารสนเทศอยู่แล้วจะต้องศึกษาว่าทางาน อย่างไร เพราะเป็นการยากที่จะออกแบบ
ระบบใหม่ โดยที่ ไม่ท ราบว่าระบบเดิม ทางานอย่างไร หรือธุรกิจด าเนิ นการอย่างไร หลั งจากนั้ นกาหนดควา ม
ต้องการของระบบใหม่ ซึ่งนักวิเคราะห์ระบบจะต้องใช้เทคนิคในการเก็บข้อมูล (Fact-Gathering Techniques)
ดังรูป ได้แก่ ศึกษาเอกสารที่มีอยู่ ตรวจสอบวิธีการทางานในปัจจุบัน สัมภาษณ์ผู้ใช้และผู้จัดการที่มีส่วนเกี่ยวข้อง
กับ ระบบ เอกสารที่ มีอยู่ ได้แก่ คู่มือการใช้งาน แผนผั งใช้งานขององค์กร รายงานต่างๆที่ห มุนเวียนใน ระบบ
การศึกษาวิธีการทางานในปัจจุบันจะทาให้นักวิเคราะห์ระบบรู้ว่าระบบจริงๆ ทางานอย่างไร ซึ่งบางครั้งค้นพบ
ข้อผิดพลาดได้ ตัวอย่าง เช่น เมื่อบริษัทได้รับใบเรียกเก็บเงินจะมีขั้นตอนอย่างไรในการจ่ายเงิน ขั้นตอนที่เสมียน
ป้อนใบเรียกเก็บเงินอย่างไร เฝ้าสังเกตการทางานของผู้เกี่ยวข้อง เพื่อให้เข้าใจและเห็นจริงๆ ว่าขั้น ตอนการทางาน
เป็นอย่างไร ซึ่งจะทาให้นักวิเคราะห์ระบบค้นพบจุดสาคัญของระบบว่าอยู่ที่ใด การสัมภาษณ์เป็นศิลปะอย่างหนึ่งที่
นักวิเคราะห์ ระบบควรจะต้องมีเพื่อเข้ากับ ผู้ ใช้ได้ง่าย และสามารถดึงสิ่งที่ต้องการจากผู้ใช้ได้ เพราะว่าความ
ต้องการของระบบคือ สิ่งสาคัญที่จะใช้ ในการออกแบบต่อไป ถ้าเราสามารถกาหนดความต้องการได้ถูกต้อง การ
พัฒนาระบบในขั้นตอนต่อไปก็จะง่ายขึ้น เมื่อเก็บรวบรวมข้อมูลแล้วจะนามาเขียนรวมเป็นรายงานการทางานของ
ระบบซึ่งควรแสดงหรือเขียนออกมาเป็นรูปแทนที่จะร่ายยาวออกมาเป็นตัวหนังสือ การแสดงแผนภาพจะทาให้เรา
เข้าใจได้ดีและง่ายขึ้น หลังจากนั้นนักวิเคราะห์ระบบ อาจจะนาข้อมูลที่รวบรวมได้นามาเขียนเป็น "แบบทดลอง"
(Prototype) หรือตัวต้น แบบ แบบทดลองจะเขียนขึ้นด้วยภาษาคอมพิวเตอร์ต่างๆ และที่ช่ว ยให้ ง่ายขึ้นได้แก่
ภาษายุคที่ 4 (Fourth Generation Language) เป็นการสร้างโปรแกรมคอมพิวเตอร์ขึ้นมาเพื่อใช้งานตามที่เรา
ต้ อ งการได้ ดั งนั้ น แบบทดลองจึ ง ช่ ว ยลดข้ อ ผิ ด พลาดที่ อ าจจะเกิ ด ขึ้ น ได้ เมื่ อ จบขั้ น ตอนการวิ เคราะห์ แ ล้ ว
นักวิเคราะห์ระบบจะต้องเขียนรายงานสรุปออกมาเป็น ข้อมูลเฉพาะของปัญหา (Problem Specification) ซึ่งมี
รายละเอียดดังนี้
รายละเอียดของระบบเดิม ซึ่งควรจะเขียนมาเป็นรูปภาพแสดงการทางานของระบบ พร้อมคาบรรยาย
กาหนดความต้องการของระบบใหม่รวมทั้งรูปภาพแสดงการทางานพร้อมคาบรรยาย, ข้อมูลและไฟล์ที่จาเป็น
คาอธิบายวิธีการทางาน และสิ่งที่จะต้องแก้ไข. รายงานข้อมูลเฉพาะของปัญหาของระบบขนาดกลางควรจะมีขนาด
ไม่เกิน 100-200 หน้ากระดาษ
สรุป ขั้นตอนที่ 3 : การวิเคราะห์ (Analysis)
หน้าที่ : กาหนดความต้องการของระบบใหม่ (ระบบใหม่ทั้งหมดหรือแก้ไขระบบเดิม)
ผลลัพธ์ : รายงานข้อมูลเฉพาะของปัญหา
เครื่องมือ : เทคนิคการเก็บรวบรวมข้อมูล, Data Dictionary, Data Flow Diagram, Process Specification,
Data Model, System Model, Prototype, system Flowcharts
6
บุคลากรและหน้าที่รับผิดชอบ : ผู้ใช้จะต้องให้ความร่วมมือเป็นอย่างดี
1. วิเคราะห์ระบบ ศึกษาเอกสารที่มีอยู่ และศึกษาระบบเดิมเพื่อให้เข้าใจถึงขั้นตอนการทางานและทราบ
ว่าจุดสาคัญของระบบอยู่ที่ไหน
2. นักวิเคราะห์ระบบ เตรียมรายงานความต้องการของระบบใหม่
3. นักวิเคราะห์ระบบ เขียนแผนภาพการทางาน (Diagram) ของระบบใหม่โดยไม่ต้องบอกว่าหน้าที่ใหม่
ในระบบจะพัฒนาขึ้นมาได้อย่างไร
4. นักวิเคราะห์ระบบ เขียนสรุปรายงานข้อมูลเฉพาะของปัญหา
5. ถ้าเป็นไปได้นักวิเคราะห์ระบบอาจจะเตรียมแบบทดลองด้วย
7
สรุปขั้นตอนที่ 4 : การออกแบบ (Design)
หน้าที : ออกแบบระบบใหม่เพื่อให้สอดคล้องกับความต้องการของผู้ใช้และฝ่ายบริหาร
ผลลัพธ์ : ข้อมูลเฉพาะของการออกแบบ(System Design Specification)
เครื่องมือ : พจนานุกรมข้อมูล Data Dictionary, แผนภาพการไหลของข้อมูล (Data Flow Diagram), ข้อมูล
เฉพาะการประมวลผล (Process Specification ), รูปแบบข้อมูล (Data Model), รูปแบบระบบ (System
Model), ผังงานระบบ (System Flow Charts), ผังงานโครงสร้าง (Structure Charts), ผังงาน HIPO (HIPO
Chart), แบบฟอร์มข้อมูลขาเข้าและรายงาน
บุคลากรและหน้าที่ :
1. นักวิเคราะห์ระบบ ตัดสินใจเลือกคอมพิวเตอร์ฮาร์ดแวร์และซอฟต์แวร์ (ถ้าใช้)
2. นักวิเคราะห์ระบบ เปลี่ยนแผนภาพทั้งหลายที่ได้จากขั้นตอนการวิเคราะห์มาเป็นแผนภาพลาดับขั้น
3. นักวิเคราะห์ระบบ ออกแบบความปลอดภัยของระบบ
4. นักวิเคราะห์ระบบ ออกแบบฟอร์มข้อมูลขาเข้า รายงาน และการแสดงภาพบนจอ
5. นักวิเคราะห์ระบบ กาหนดจานวนบุคลากรในหน้าที่ต่างๆและการทางานของระบบ
6. ผู้ใช้ ฝ่ายบริหาร และนักวิเคราะห์ระบบ ทบทวน เอกสารข้อมูลเฉพาะของการออกแบบเพื่อความ
ถูกต้องและสมบูรณ์แบบของระบบ
ขั้นตอนที่ 5 : การพัฒนาระบบ (Construction)
ขั้นตอนนี้โปรแกรมเมอร์จะเริ่มเขียนและทดสอบโปรแกรมว่า ทางานถูกต้องหรือไม่ ต้องมีการทดสอบกับ
ข้อมูลจริงที่เลือกแล้ว ถ้าทุกอย่างเรียบร้อย เราจะได้โปรแกรมที่พร้อมที่จะนาไปใช้งานจริงต่อไป หลังจากนั้นต้อง
เตรียมคู่มือการใช้และการฝึกอบรมผู้ใช้งานจริงของระบบ ระยะแรกในขั้นตอนนี้นักวิเคราะห์ระบบต้องเตรียม
สถานที่สาหรับ เครื่องคอมพิวเตอร์แล้วจะต้องตรวจสอบว่าคอมพิวเตอร์ทางานเรียบร้อยดี โปรแกรมเมอร์เขียน
โปรแกรมตามข้อมูลที่ได้จากเอกสารข้อมูลเฉพาะของการออกแบบ (Design Specification) ปกติแล้วนักวิเคราะห์
ระบบไม่มีหน้าที่เกี่ยวข้องในการเขียนโปรแกรม แต่ถ้าโปรแกรมเมอร์คิดว่าการเขียนอย่างอื่นดีกว่าจะต้องปรึกษา
นักวิเคราะห์ ระบบเสียก่อน เพื่อที่ว่านักวิเคราะห์จะบอกได้ว่าโปรแกรมที่จะแก้ไขนั้นมีผลกระทบกับระบบ ทั้งหมด
หรือไม่ โปรแกรมเมอร์เขียนเสร็จแล้วต้องมีการทบทวนกับนักวิเคราะห์ระบบและผู้ใช้งาน เพื่อค้นหาข้อผิดพลาด
วิธีการนี้เรียกว่า "Structure Walkthrough " การทดสอบโปรแกรมจะต้องทดสอบกับข้อมูลที่เลือกแล้วชุดหนึ่ง ซึ่ง
อาจจะเลื อกโดยผู้ ใช้ การทดสอบเป็ น หน้ าที่ของโปรแกรมเมอร์ แต่นักวิ เคราะห์ ระบบต้องแน่ใจว่า โปรแกรม
ทั้งหมดจะต้องไม่มีข้อผิดพลาด หลังจากนั้นต้องควบคุมดูแลการเขียนคู่มือซึ่งประกอบด้วยข้อมูลการใช้งานสารบัญ
การอ้างอิง "Help" บนจอภาพ เป็นต้น นอกจากข้อมูลการใช้งานแล้ว ต้องมีการฝึกอบรมพนักงานที่จะเป็นผู้ใช้งาน
จริงของระบบเพื่อให้เข้าใจ และทางานได้โดยไม่มีปัญหาอาจจะอบรมตัวต่อตัวหรือเป็นกลุ่มก็ได้
สรุปขั้นตอนที่ 5 : การพัฒนาระบบ (Construction)
หน้าที่ : เขียนและทดสอบโปรแกรม
ผลลัพธ์ : โปรแกรมที่ทดสอบเรียบร้อยแล้ว เอกสารคู่มือการใช้ และการฝึกอบรม
เครื่องมือ : เครื่องมือของโปรแกรมเมอร์ทั้งหลาย Editor, compiler,Structure Walkthrough, วิธีการทดสอบ
โปรแกรม การเขียนเอกสารประกอบการใช้งาน
8
บุคลากรและหน้าที่ :
1. นักวิเคราะห์ระบบ ดูแลการเตรียมสถานที่และติดตั้งเครื่องคอมพิวเตอร์ (ถ้าซื้อใหม่)
2. นักวิเคราะห์ระบบ วางแผนและดูแลการเขียนโปรแกรม ทดสอบโปรแกรม
3. โปรแกรมเมอร์เขียนและทดสอบโปรแกรม หรือแก้ไขโปรแกรม ถ้าซื้อโปรแกรมสาเร็จรูป
4. นักวิเคราะห์ระบบ วางแผนทดสอบโปรแกรม
5. ทีมที่ทางานร่วมกันทดสอบโปรแกรม
6. ผู้ใช้ตรวจสอบให้แน่ใจว่า โปรแกรมทางานตามต้องการ
7. นักวิเคราะห์ระบบ ดูแลการเขียนคู่มือการใช้งานและการฝึกอบรม
9
2. การพัฒนาซอฟท์แวร์แบบ Agile
1. ต้องทาให้ลูกค้าพึงพอใจกับการส่งมอบงานที่มีคุณภาพอย่างรวดเร็ว และต่อเนื่อง
2. พร้อมรับความต้องการของลูกค้าที่เปลี่ยนแปลงอยู่ตลอดเวลา ถึงแม้ว่าจะเป็นช่วงท้ายๆของการพัฒนา
ก็ตาม ทั้งนี้เพื่อให้ลูกค้ามีความได้เปรียบทางการแข่งขันมากที่สุด
3. ส่งมอบงานที่ใช้งานได้อย่างต่อเนื่องตั้งแต่ทุกๆสัปดาห์ ไปจนถึงทุกๆเดือน ทั้งนี้เวลาโดยรวมจะต้องไม่
ยาวนานเกินไป
4. บุคลากรที่เป็นผู้ใช้และบุคลากรที่พัฒนาระบบจะต้องทางานร่วมกันอย่างใกล้ชิดและต่อเนื่องจนเสร็จ
สิ้นโครงการ
10
Agile Method เป็ น วิธีในการพั ฒ นาซอฟท์แวร์ โดยมีห ลักการในการพัฒ นาระบบที่เน้นการทางานที่
รวดเร็ว มีการเตรี ย มพร้อมที่ จ ะตอบสนองต่อความเปลี่ ยนแปลงที่ อาจเกิดขึ้น ได้ตลอดเวลา โดยเฉพาะความ
ต้องการของผู้ใช้ วิธีพัฒนาแบบนี้ถือเป็นการพัฒนาแบบทาซ้า ที่จะต้องมีการพบปะสนทนากับผู้ใช้อยู่ตลอดเวลา
และในขณะที่พบปะกันนั้นก็จะถือเป็นช่วงระยะเวลาของการส่งงานไปในตัวด้วย การส่งงานแต่ละครั้งของวิธีการ
พัฒนาแบบนี้ โดยส่วนใหญ่จะเป็นการพัฒนาเฉพาะส่วนย่อย ๆ แล้วค่อยทยอยส่งให้กับผู้ใช้ เมื่อผู้ใช้ได้ทดสอบหรือ
ประเมิน ระบบแล้ว ถ้าต้องการปรับ เปลี่ยนตรงส่วนใดก็สามารถทาได้โดยที่ไม่ต้องรื้อระบบใหม่ทั้ง หมด ดังนั้น
นอกจากความ สามารถทางด้านพั ฒ นาระบบของทีมพัฒ นาแล้ว สมาชิกในทีมจาเป็นที่จะต้องมีทักษะเรื่องการ
ปฏิสัมพันธ์ระหว่างบุคคลที่ดี นอกจากนั้นผู้ใช้จาเป็นต้องไว้เนื้อเชื่อใจทีมที่ทาการพัฒนาระบบในระดับ หนึ่งด้วย
การพั ฒ นาแบบ Agile ยั งคงเป็ น วิธีที่ ใช้กันอยู่อย่างแพร่ห ลาย วิธีพัฒ นาแบบนี้ ไม่ได้น ามาใช้กัน แบบ
ทดแทนวิธีการพัฒนาแบบเก่า ๆ แต่มีอยู่เพื่อเป็นทางเลือกอีกทางเลือกหนึ่งให้กับนักพัฒนาระบบ สุดท้ายแล้วการ
เลือกวิธีหรือขั้นตอนการพัฒนาระบบสาหรับโครงงานหนึ่ง ๆ นั้น ทีมพัฒนาจะต้องมีความระมัดระวัง ต้องตระหนัก
ถึงปัจจัยต่าง ๆ กันรวมไปถึงขนาดของโครงงานและผู้ร่วมทางาน ในบางครั้งทีมพัฒนาอาจจาเป็นต้องผสมผสาน
วิธีการพัฒนาแบบ Agile กับวิธีการอื่น ๆ ในการทางาน การใช้วิธีแบบ Agile ผสมผสานกับวิธีอื่นนั้นทาได้ยากและ
ต้องการทีมพัฒนาที่มีประสบการณ์และคุณภาพ สูง ถึงแม้ว่าจะมีความเสี่ยงสูงแต่เมื่อสาเร็จ ก็ได้รับผลตอบแทนที่
คุ้มค่า
11
2.1 การประยุกต์ใช้ Agile กับโครงการพัฒนาระบบ
ในโครงการนี้ ได้ใช้ขั้นตอนกระบวนการ ของ Agile มาประยุกต์ใช้เป็นหลัก โดยได้ใช้ไปทั้งสิ้น 4 ขั้นตอน
หลัก ซึ่งแต่ละขั้นตอน ได้ดาเนินไปอย่างเป็นระบบ และ เป็นขั้นตอน อย่างต่อเนื่อง และ ซ้าไปเรื่อยๆ เพื่อลดการ
เกิดปัญหาเนื่องมาจากการพัฒนาระบบ ซึ่งเป็นไปตามวัตถุประสงค์ของ Agile นั่นเอง
1. การสร้าง(Build)
ในขัน้ ตอนการสร้างนี้ ได้เลือกใช้ภาษา Visual Basic เพื่อใช้ในการสร้าง และ พัฒนาโปรแกรม เนื่องจาก
เป็นภาษาที่เหมาะสมกับความต้องการ และ วัตถุประสงค์ของโปรแกรมที่ได้รับมอบหมาย อีกทั้งเป็นภาษา
ที่ตอบโจทย์กับตัวโปรแกรม และ ตัวโปรแกรมก็สอดคล้องกับความต้องการของลูกค้า อีกทั้งผู้ใช้โปรแกรม
อีกด้วย นอกจากนี้ ในกระบวนการสร้าง ก็ได้มีการแบ่ง ส่วนของงานชัดเจน ระหว่างสมาชิกในทีมพัฒนา
ระบบ รวมถึงการแบ่งส่วนของโปรแกรม หน้าต่าง ฟังก์ชัน และ อื่นๆ อย่างชัดเจน เพื่อไม่ให้เกิดความ
สับสน และ ง่ายต่อการดู และ กลับมาแก้ไขปรับปรุงในครั้งต่อๆไป
12
3. การทดสอบระบบ(Test)
ขั้นตอนของการทดสอบนี้ เป็นขั้นตอนของการทดสอบว่า โค้ดที่ใช้ในการเขียน มีปัญหาอะไรหรือไม่ เป็น
เพียงการทดสอบระบบเบื้องต้นก่อนว่า การทางานของโปรแกรม ถูกต้องตรงกับความต้องการหรือเปล่า
แล้วหากโปรแกรมเป็นไปในทิศทางนี้ จะตอบโจทย์ผู้ใช้งานได้หรือยัง หากมีส่วนไหนให้ปรับปรุง เพื่อให้
ตรงความต้องการผู้ใช้งานมากขึ้น ก็สามารถติดต่อกับทีมพัฒนาได้โดยตรง เพื่อทาการปรับปรุงแก้ไข
ก่อนที่จะปล่อยให้ทดสอบระบบจริง ในข้อนี้จะใช้การประชุม และ การนาเสนอ ในที่ประชุม และ ทดสอบ
ให้เห็นโดยทั่วกันเลย และ บันทึกข้อเสนอแนะ และ สิ่งที่ควรปรับปรุงมาดาเนินการทันที
4. การปล่อยโปรแกรมให้ทดลองใช้งาน(Release)
ขั้นตอนของการปล่อยระบบ หรือ โปรแกรม ให้ได้ทาการทดสอบจริง ในขั้นตอนนี้ ถือเป็นขั้นตอนที่ มี
ประสิทธิภาพในการตรวจสอบข้อผิดพลาดของโปรแกรมสูงที่สุด เนื่องจาก เป็นการปล่อยให้ผู้ใช้งานได้ใช้
งานจริง เพื่อจะได้ทดสอบว่า หากใช้จริง โปรแกรมที่ได้ทาการพัฒนาจะมีปัญหาอยู่ส่วนใดบ้าง เพื่อทาการ
แก้ไขต่อไป หากจานวนผู้ใช้งานมีจานวนมาก จะยิ่งทาให้พบข้อผิดพลาดเร็วยิ่งขึ้น ก็จะเป็นการ
ประหยัดเวลาในการปรับปรุงโปรแกรมได้มากขึ้นไปอีก ซึ่งในช่วงแรกๆนั้น หน้าตาโปรแกรม อาจยังไม่ได้
ทาการออกแบบ แต่เป็นเพียงการทดสอบการทางานของโค้ด และ กระบวนการของโปรแกรม แต่ในช่วง
ถัดไป การออกแบบจะเริ่มขึ้น และ มีการปล่อยทั้งโปรแกรม ที่ประกอบด้วยส่วนของการออกแบบให้ได้
ทดสอบ และ หาข้อบกพร่องเพื่อใช้ในการปรับปรุงด้วย ในข้อนี้ ใช้วิธีการเขียน Formative เพื่อให้
ผู้ใช้งานได้ให้คะแนน และ เขียนข้อเสนอแนะ และ สิ่งที่ควรปรับปรุง เพื่อที่จะนารายการเหล่านั้นมาแก้ไข
ปรับปรุงต่อไป
13
5. การออกแบบ(Design)
ส่วนของการออกแบบนี้ จะเป็นการออกแบบหน้าตาโปรแกรม เป็นหลัก เพื่อให้ตอบโจทย์การใช้งานของ
ผู้ใช้ เช่น การออกแบบที่เห็นแล้วสบายตา ใช้งานได้ระยะยาว สีสันไม่แสบตาเกินไป ตัวอักษรชัดเจน เป็น
ต้น ส่วนการออกแบบอื่น ในโครงการนี้จะมีอีกส่วนคือ การออกแบบฐานข้อมูล ว่าจะต้องมีตารางใดบ้าง
ส่งเข้าส่งออกเป็นรูปแบบใด
ขั้นตอนในห้าขั้นตอนข้างต้น เป็นขั้นตอนที่ดาเนินการโดยการวนซ้า เพื่อลดปัญหาในการพัฒนาโปรแกรมให้ลดลง
ในแต่ละรอบ ตามหลักการของ Agile
14
ความต้องการของระบบ (System Requirement)
ความต้องการของระบบ จากเก็บความต้องการของผู้ใช้งานในกลุ่มงานวิทยาการคอมพิวเตอร์ และจาก
การศึกษาขั้นตอนการทางานเดิม ทาให้สามารถนามาวิเคราะห์เป็นฟังค์ชั่นการทางานของระบบใหม่ ได้ดังนี้
1 ระบบการจัดเก็บข้อมูล
Item Function Description
1.1.1 สามารถระบุตาแหน่งประเภทของผู้เข้า - ตาแหน่งเบื้องต้นมีอยู่
รับการอบรมได้ 4 ตาแหน่ง
1.1.2 สามารถแยกจานวนเป้าหมายของผู้เข้า
รับการอบรมแต่ละประเภทได้ 1. ผู้บริหาร
1.1 ผู้เข้ารับการอบรม 1.1.3 สามารถแยกจานวนผู้มาอบรมจริงของผู้ 2. อานวยการ
เข้ารับการอบรมแต่ละประเภทได้ 3. วิชาการ
1.1.4 สามารถเพิ่มตาแหน่งประเภทของผู้เข้า 4.ทั่วไป
รับการอบรมได้
1.2.1 สามารถระบุงบประมาณโครงการที่
ได้รับของแต่ละโครงการได้
1.2 งบประมาณ
1.2.2 สามารถระบุงบประมาณโครงการที่ใช้
จริงของแต่ละโครงการได้
1.3.1 สามารถระบุตัวชี้วัดต่างๆ ของแต่ละ - ตัวชี้วัดเบื้องต้นมีอยู่ 5ตัว
โครงการได้ ตามอัตราส่วน 100 % 1. วิทยากร
2.สถานที่
1.3 ภาพรวมตัวชี้วัด
1.3.2 สามารถสรุปผลรวมตัวชี้วัดของแต่ละ 3. บริการ
โครงการได้ตามอัตราส่วน100 % 4. ความเข้าใจ
5. การนาไปใช้
1.4.1 สามารถระบุจานวนวิทยากรหลัก
ของแต่ละโครงการได้
1.4 จานวนวิทยากร
1.4.2 สามารถระบุจานวนผู้ช่วยวิทยาการของ
แต่ละโครงการได้
1.5.1 สามารถระบุหัวหน้าของแต่ละโครงการ -สามารถแยกแยะได้ว่าบุค-
1.5 จานวนผู้รับผิดชอบ ได้ ลากรคนใดเป็นหัวหน้าของ
โครงการ 1.5.2 สามารถระบุบุคลากรในหน่วยงานของ หน่วยงานใด
หัวหน้าแต่ละโครงการได้
15
2 ระบบการจัดการข้อมูลผู้ใช้และจัดการโปรแกรม
2.2.1 ผู้แก้ไขโครงการสามารถเพิ่ม
โครงการใหม่เข้าไปในระบบได้
16
3 การทางานของโปรแกรม
3.2.1 โปรแกรมสามารถเปลี่ยนแปลง
ฐานข้อมูลที่ใช้ในการเชื่อมต่อ
ฐานข้อมูลได้
3.2 การเปลี่ยนแปลงฐานข้อมูล
3.2.2 โปรแกรมสามารถรองรับ
ข้อผิดพลาดจากการเชื่อมต่อฐานข้อมูล
ได้
17
ทาการวิเคราะห์และออกแบบระบบ ( System Analysis And Design )
จากการการวิเคราะห์ และออกแบบว่าระบบ จะต้องทางานอย่างไร เป็นขั้นตอนกระบวนการอย่างไร โดย
สามารถเขียนเป็นรูปแบบของแผนภาพได้ การวิเคราะห์และออกแบบระบบ สาหรับโครงการนี้ ประกอบด้วย 4
องค์ประกอบ ดังนี้
1. โครงสร้างระบบ (System Architecture)
2. แผนภาพแสดงความสัมพันธ์ของผู้ใช้ระบบ
3. แผนภาพกิจกรรม (Activity Diagram)
4. การออกแบบฐานข้อมูล
5. แบบจาลองความสัมพันธ์ระหว่างข้อมูล (ER-Diagram)
6. พจนานุกรมข้อมูล (Data Dictionary)
18
2. แผนภาพแสดงความสัมพันธ์ของผู้ใช้ระบบ (Use Case Diagram)
2.1 Use Case Diagram ระบบข้อมูลผู้ใช้งาน ประกอบด้วย
- แสดงข้อมูลสมาชิก
- ค้นหาข้อมูลสมาชิก
- เพิ่มข้อมูลสมาชิก
- แก้ไขข้อมูลสมาชิก
- เพิ่มตาแหน่งผู้มาอบรม
19
2.2 Use Case Diagram บันทึกข้อมูลโครงการ ประกอบด้วย
- เพิ่มข้อมูลโครงการ
- แก้ไขข้อมูลโครงการ
- แสดงข้อมูลโครงการ
- สั่งพิมพ์ข้อมูลโครงการ ซึ่งจะเชื่อมโยงมาจากการแสดงข้อมูลโครงการ
20
2.3 Use Case Description ของระบบข้อมูลผู้ใช้งาน
ชื่อยูสเคส ระบบข้อมูลผู้ใช้งาน
รายละเอียดโดยสังเขป ใช้สาหรับจัดการข้อมูล จัดการสิทธิ์การเข้าใช้งานของผู้ใช้งาน
แอคเตอร์ ผู้ดูแลระบบ
เงื่อนไขก่อนหน้า -
ผู้เกี่ยวข้อง ผู้ดูแลระบบ
แอคเตอร์ ระบบ
1. แสดงข้อมูลสมาชิก 1.1 แสดงข้อมูลสมาชิกของสมาชิกทั้งหมด โดยย่อ
2. ค้นหาข้อมูลสมาชิก 2.1 ระบบจะทาการเคลื่อนตารางไปหาตาแหน่งที่ข้อมูล
3. เพิ่มข้อมูลสมาชิก สมาชิกตามเงื่อนไขที่แอคเตอร์ส่งมา
4. แก้ไขข้อมูลสมาชิก 3.1 เพิ่มข้อมูลสมาชิก และสิทธิ์การใช้งาน ลงในฐานข้อมูล
5. เพิ่มตาแหน่งผู้มาอบรม ในระบบ
ขั้นตอนการทางานหลัก 4.1 แก้ไขข้อมูลสมาชิกของสมาชิกที่เลือก
5.1 ตาแหน่งผู้มาอบรม ใช้ในการเพิ่มข้อมูลโครงการลงใน
ฐานข้อมูลในระบบ
1. เมื่อค้นหาข้อมูลสมาชิกไม่พบตามเงื่อนไข สามารถเลือกที่จะเพิ่มผู้ใช้งานสมาชิกได้
ขั้นตอนการทางาน 2. เมื่อค้นหาข้อมูลสมาชิกพบและข้อมูลถูกต้องตามเงื่อนไข สามารถจบการทางานได้
ทางเลือก 3. เมื่อเพิ่มข้อมูลสมาชิกที่มีอยู่แล้ว จะแจ้งให้ผู้ใช้งานทราบและให้กรอกรายละเอียดอีกครั้ง
21
2.4 Use Case Description ของระบบบันทึกข้อมูลโครงการ
ชื่อยูสเคส ระบบบันทึกข้อมูลโรงการ
รายละเอียดโดยสังเขป ใช้สาหรับการบันทึกข้อมูล และแก้ไขโครงการต่างๆ
แอคเตอร์ ผู้แก้ไขโครงการ และผู้ใช้งานทั่วไป
เงื่อนไขก่อนหน้า -
ผู้เกี่ยวข้อง ผู้แก้ไขโครงการ และผู้ใช้งานทั่วไป
แอคเตอร์ ระบบ
1. แสดงข้อมูลโครงการ 1.1 ระบบจะแสดงข้อมูลโครงการทั้งหมด และผู้ใช้สามารถ
2. เพิ่มข้อมูลโครงการ เจาะจงเลือกโครงการที่ต้องการได้
3. แก้ไขข้อมูลโครงการ 2.1 ระบบจะเพิ่มข้อมูลโครงการต่างๆ ตามเงื่อนไขลงใน
ขั้นตอนการทางานหลัก 4. สั่งพิมพ์ข้อมูลโครงการ ฐานข้อมูลในระบบ
3.1 แก้ไขข้อมูลโครงการของโครงการที่เลือกได้
4.1 สามารถสั่งพิมพ์โครงการที่เลือกได้
1. เมื่อค้นหาข้อมูลโครงการไม่พบตามเงื่อนไข สามารถเลือกที่จะเพิ่มโครงการใหม่ได้
2. เมื่อค้นหาข้อมูลโครงการพบและข้อมูลถูกต้องตามเงื่อนไข สามารถจบการทางานได้
3. เมื่อเพิ่มโครงการที่มีอยู่แล้ว จะแจ้งให้ผู้ใช้งานทราบและให้กรอกรายละเอียดอีกครั้ง
ขั้นตอนการทางาน
ทางเลือก
22
3. แผนภาพกิจกรรม (Activity Diagram)
แผนภาพกิจกรรม ( Activity Diagram ) คือขั้นตอนการทางานของระบบ โดยจะแสดงให้เห็นถึงทางเลือก
และการตัดสินใจตามเงื่อนไขโปรแกรม เพื่อให้ได้ผลลัพธ์ที่ต้องการในขั้นตอนนั้น
23
4. แบบจาลองความสัมพันธ์ของข้อมูล (ER-Diagram)
24
5. พจนานุกรมข้อมูล (Data Dictionary)
Table Name: Account_tb มีโครงสร้างดังนี้
ประเภท ค่าว่าง
ลาดับที่ คอลัมน์ คาอธิบาย อ้างอิงตาราง คีย์
ข้อมูล NULL
1 uid int(11) ลาดับรายการ PK NO
2 username varchar(255) ชื่อผู้ใช้งาน NO
3 password varchar(255) รหัสผ่านผู้ใช้งาน NO
4 status int(11) สิทธิ์การเข้าถึง NO
5 name varchar(255) ชื่อภาษาไทย NO
6 surname varchar(255) นามสกุลภาษาไทย NO
7 idcard int(11) รหัสประจาตัว NO
25
Table Name: Trainee_tb มีโครงสร้างดังนี้
ประเภท ค่าว่าง
ลาดับที่ คอลัมน์ คาอธิบาย อ้างอิงตาราง คีย์
ข้อมูล NULL
1 Project_tb.pid int(11) ลาดับรายการ PK NO
2 Rank_tb.rid int(11) รหัสตาแหน่ง NO
3 expectation int(11) เป้าหมายผู้มาอบรม NO
4 reality int(11) ผู้มาอบรมจริง NO
26
Table Name: Lecturer_tb มีโครงสร้างดังนี้
ประเภท ค่าว่าง
ลาดับที่ คอลัมน์ คาอธิบาย อ้างอิงตาราง คีย์
ข้อมูล NULL
1 Project_tb.pid int(11) ลาดับรายการ PK NO
2 LectureInfo.lid int(11) รหัสของวิทยากร NO
3 HelperInfo.hid int(11) รหัสของผู้ช่วยวิทยากร NO
27
ภาคผนวก
28
1.คู่มือการใช้งานโปรแกรม
ในส่วนของการใช้งานโปรแกรม จะแบ่งออกเป็นสามส่วนหลัก
-User
-Editor
-Admin
1.เมื่อเปิดโปรแกรม จะพบเจอหน้าตาโปรแกรมแบบนี้ ให้สังเกตสถานะด้านล่าง หากสถานะที่พบเห็น
ด้านล่าง คือ Not Connect ให้ทาตามในข้อสอง แต่หากขึ้นว่า Connected ให้ใส่บัญชีเข้าใช้งานได้เลย
29
3. เมื่อเข้าใช้งานได้แล้ว จะพบเจอหน้าตานี้ (แต่ส่วนการทางาน จะแตกต่างกัน หากสิทธิการเข้าถึง
ต่างกัน)
User mode
Editor mode
Admin mode
30
4. ส่วนสร้างโครงการ
31
4.1 เมื่อกดเพิ่มผู้เข้ารับการอบรมแล้ว คลิกเข้าไป เพื่อใส่จานวนคาดหวัง และ อบรมจริง
32
4.2 กรอกข้อมูลให้ครบ ส่วนปฏิทิน สามารถคลิกเพื่อกดเลือกวันที่ได้ หากไม่ต้องการพิมพ์
33
5.ส่วนแก้ไขโครงการ
34
6.ส่วนการเปรียบเทียบข้อมูล
35
6.1 คลิกเลือก โครงการที่ต้องการเปรียบเทียบฝั่งซ้าย และ ฝั่งขวา จากนั้นเลือกชนิดที่ต้องการเทียบ
ด้านล่าง แล้วกด Compare แต่หากต้องการดูกราฟวงกลม สามารถคลิกที่ ดูกราฟวงกลม ได้เลย
36
7.ส่วนของภาพรวม
37
7.1 หากกดเข้าไปที่ ภาพรวมโครงการทั้งหมด ให้เลือกว่าอยากดูรายการย้อนหลังกี่เดือน และ รายการใด
จากนั้น กด ดูกราฟแนวโน้ม
38
7.2 หากกดเข้าไปที่ ภาพรวมแต่ละโครงการ
39
7.3 ถ้าต้องการดูรายละเอียดของกราฟ ดูได้สามกราฟด้านบน เพียงแค่คลิกไปที่กราฟ
40
8.ส่วนผู้ดูแลระบบ
8.1 ส่วนการจัดการบัญชี
41
8.1.1 หากต้องการสร้างบัญชี สามารถสร้างได้ทันที
8.1.2 หากต้องการแก้ไขข้อมูลบัญชี เพียงกดที่บัญชีที่ต้องการ และ แก้ไขได้ทันที
42
8.3 ส่วนการจัดการตาแหน่ง โดยการเพิ่มชื่อตาแหน่ง
43
2. Source Code
44
addProject_Panel
Imports MySql.Data.MySqlClient
45
Private Function CreateTraineetRow(ByVal name As String) As
System.Windows.Forms.ListViewItem
'create row in this function and return row and add to project_list
Dim row As System.Windows.Forms.ListViewItem = New
System.Windows.Forms.ListViewItem(New String() {name, "0", "0"})
Return row
End Function
Private Sub checkTextbox(sender As Object, e As KeyPressEventArgs) Handles
fund_textbox.KeyPress
If Asc(e.KeyChar) <> 8 Then
If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
e.Handled = True
End If
End If
End Sub
Private Sub checkTextbox2(sender As Object, e As KeyPressEventArgs) Handles
used_textbox.KeyPress
If Asc(e.KeyChar) <> 8 Then
If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
e.Handled = True
End If
End If
End Sub
Private Sub addProject_Panel_Load(sender As Object, e As EventArgs) Handles
MyBase.Load
addData()
End Sub
Public Sub addData()
calendarFlag = 0
CalendarView1.Hide()
mon.Clear()
mon.Add("มกรำคม")
mon.Add("กุมภำพันธ์")
mon.Add("มีนำคม")
mon.Add("เมษำยน")
mon.Add("พฤษภำคม")
mon.Add("มิถุนำยน")
mon.Add("กรกฎำคม")
mon.Add("สิ งหำคม")
mon.Add("กันยำยน")
mon.Add("ตุลำคม")
mon.Add("พฤษจิกำยน")
mon.Add("ธันวำคม")
46
'add data to main_lecturer and helper combobox
sql = "SELECT * FROM `lecturerinfo`"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
If Not (main_lecturer_combobox.Items.Contains(dbread("lname"))) Then
main_lecturer_combobox.Items.Add(dbread("lname"))
End If
If Not (helper_lecturer_combobox.Items.Contains(dbread("lname"))) Then
helper_lecturer_combobox.Items.Add(dbread("lname"))
End If
End While
dbread.Close()
' end add data
End Sub
Private Sub add_helper_button_Click(sender As Object, e As EventArgs) Handles
add_helper_button.Click
If helper_lecturer_combobox.SelectedIndex = -1 Then
Else
Dim combotext As String = helper_lecturer_combobox.SelectedItem.ToString
Dim item1 As ListViewItem = helper_list.FindItemWithText(combotext)
If (item1 IsNot Nothing) Then
Else
If main_lecturer_combobox.SelectedIndex = -1 Then
helper_list.Items.Add(CreateTraineetRow(combotext))
ElseIf combotext <> main_lecturer_combobox.SelectedItem.ToString Then
helper_list.Items.Add(CreateTraineetRow(combotext))
End If
End If
End If
End Sub
Private Sub selected_index_changed(sender As Object, e As EventArgs) Handles
main_lecturer_combobox.SelectedIndexChanged
Dim combotext As String = main_lecturer_combobox.SelectedItem.ToString
Dim item1 As ListViewItem = helper_list.FindItemWithText(combotext)
If (item1 IsNot Nothing) Then
helper_list.Items.Remove(item1)
End If
End Sub
Private Sub add_team_button_Click(sender As Object, e As EventArgs) Handles
add_team_button.Click
If team_combobox.SelectedIndex = -1 Then
47
Else
Dim combotext As String = team_combobox.SelectedItem.ToString
Dim item1 As ListViewItem = team_list.FindItemWithText(combotext)
If (item1 IsNot Nothing) Then
Else
If leader_combobox.SelectedIndex = -1 Then
team_list.Items.Add(CreateTraineetRow(combotext))
ElseIf combotext <> leader_combobox.SelectedItem.ToString Then
team_list.Items.Add(CreateTraineetRow(combotext))
End If
End If
End If
End Sub
Private Sub select_index_change(sender As Object, e As EventArgs) Handles
leader_combobox.SelectedIndexChanged
Dim combotext As String = leader_combobox.SelectedItem.ToString
Dim item1 As ListViewItem = team_list.FindItemWithText(combotext)
If (item1 IsNot Nothing) Then
team_list.Items.Remove(item1)
End If
End Sub
Private Sub checkTextBoxi1(sender As Object, e As KeyPressEventArgs) Handles
TextBoxX1.KeyPress
Dim FullStop As Char
FullStop = "."
If e.KeyChar = FullStop And TextBoxX1.Text.IndexOf(FullStop) <> -1 Then
e.Handled = True
Return
End If
If Not Char.IsDigit(e.KeyChar) Then
If (e.KeyChar <> FullStop) And
(e.KeyChar <> Convert.ToChar(Keys.Back)) Then
e.Handled = True
Return
End If
End If
End Sub
Private Sub checkTextBoxi2(sender As Object, e As KeyPressEventArgs) Handles
TextBoxX2.KeyPress
Dim FullStop As Char
FullStop = "."
If e.KeyChar = FullStop And TextBoxX2.Text.IndexOf(FullStop) <> -1 Then
e.Handled = True
Return
End If
If Not Char.IsDigit(e.KeyChar) Then
If (e.KeyChar <> FullStop) And
(e.KeyChar <> Convert.ToChar(Keys.Back)) Then
e.Handled = True
Return
End If
End If
End Sub
Private Sub checkTextBoxi3(sender As Object, e As KeyPressEventArgs) Handles
TextBoxX3.KeyPress
Dim FullStop As Char
FullStop = "."
If e.KeyChar = FullStop And TextBoxX3.Text.IndexOf(FullStop) <> -1 Then
48
e.Handled = True
Return
End If
If Not Char.IsDigit(e.KeyChar) Then
If (e.KeyChar <> FullStop) And
(e.KeyChar <> Convert.ToChar(Keys.Back)) Then
e.Handled = True
Return
End If
End If
End Sub
Private Sub checkTextBoxi4(sender As Object, e As KeyPressEventArgs) Handles
TextBoxX4.KeyPress
Dim FullStop As Char
FullStop = "."
If e.KeyChar = FullStop And TextBoxX4.Text.IndexOf(FullStop) <> -1 Then
e.Handled = True
Return
End If
If Not Char.IsDigit(e.KeyChar) Then
If (e.KeyChar <> FullStop) And
(e.KeyChar <> Convert.ToChar(Keys.Back)) Then
e.Handled = True
Return
End If
End If
End Sub
Private Sub checkTextBoxi5(sender As Object, e As KeyPressEventArgs) Handles
TextBoxX5.KeyPress
Dim FullStop As Char
FullStop = "."
If e.KeyChar = FullStop And TextBoxX5.Text.IndexOf(FullStop) <> -1 Then
e.Handled = True
Return
End If
If Not Char.IsDigit(e.KeyChar) Then
If (e.KeyChar <> FullStop) And
(e.KeyChar <> Convert.ToChar(Keys.Back)) Then
e.Handled = True
Return
End If
End If
End Sub
Public Sub clearAll()
project_name_textbox.Clear()
position_combobox.Items.Clear()
trainee_list.Items.Clear()
fund_textbox.Clear()
used_textbox.Clear()
main_lecturer_combobox.Items.Clear()
helper_lecturer_combobox.Items.Clear()
helper_list.Items.Clear()
leader_combobox.Items.Clear()
team_combobox.Items.Clear()
team_list.Items.Clear()
TextBoxX1.Clear()
TextBoxX2.Clear()
TextBoxX3.Clear()
49
TextBoxX4.Clear()
TextBoxX5.Clear()
day_textbox.Clear()
month_combobox.SelectedIndex = -1
year_textbox.Clear()
addData()
End Sub
Public Sub ButtonX1_Click(sender As Object, e As EventArgs) Handles ButtonX1.Click
clearAll()
End Sub
a = CalendarView1.DateSelectionStart()
MsgBox(a)
months = ""
countForSub(a)
day_textbox.Text = x(0)
months = mon(Convert.ToInt32(x(1)) - 1)
toSelectedItem(months)
year_textbox.Text = x(2)
CalendarView1.Refresh()
CalendarView1.Hide()
calendarFlag = 0
End Sub
50
End If
End Sub
End Sub
End Class
51
Admin_Form
Public Class Admin_Form
Private CallingForm As Object
Public manageAccountPanel As manageAccount_Panel = Nothing ' Implement
manageAccountPanel Form
Public manageUserPanel As manageUser_Panel = Nothing 'Implement mangeUserPanel
Public managePositionPanel As managePosition_Panel = Nothing 'Implement
mangePositionPanel
Public managePermissionPanel As managePermission_Panel = Nothing 'Implement
mangePositionPanel
Public Sub New(ByVal caller As Object)
MyBase.New()
InitializeComponent()
CallingForm = caller
End Sub
Private Sub admin_Form_Closing(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
e.Cancel = True
Me.Hide()
If Not IsNothing(CallingForm) Then CallingForm.Close()
CallingForm = Nothing
End Sub
' Init
manageUserPanel = New manageUser_Panel()
Me.Controls.Add(manageUserPanel)
manageUserPanel.BringToFront()
manageUserPanel.IsOpen = False
manageUserPanel.AnimationTime = 500
manageUserPanel.SlideOutButtonVisible = False
' End Init
52
managePermissionPanel.AnimationTime = 500
managePermissionPanel.SlideOutButtonVisible = False
' End Init
End Sub
Private Sub manage_account_tile_item_Click(sender As Object, e As EventArgs) Handles
manage_account_tile_item.Click
If Not manageAccountPanel.IsOpen Then ' if panel not open then open
manageAccountPanel.IsOpen = True
End If
End Sub
53
Compare_Panel
Imports MySql.Data.MySqlClient
End Sub
Public Sub clearItem()
54
project_list.Items.Clear()
project_list2.Items.Clear()
End Sub
Public Sub readDataToTree()
'read data from database and put in project_list
sql = "SELECT p1.pid,p1.pname,p2.leadname FROM project as p1, leaderinfo as p2
where p1.pleader = p2.leadid"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbconn2.ConnectionString = String.Format("server={0}; user id={1}; password={2};
database={3}; pooling=false; Character Set=utf8", Login_Form.server, Login_Form.username,
Login_Form.password, Login_Form.database)
dbconn2.Open()
sql2 = "SELECT YEAR(pyear) FROM project"
dbcomm2 = New MySqlCommand(sql2, dbconn2)
dbread2 = dbcomm2.ExecuteReader()
Dim count As Integer = 0
Dim id, name, leader, year As String
While dbread.Read() Or dbread2.Read()
id = dbread("pid")
name = dbread("pname")
leader = dbread("leadname")
year = dbread2("YEAR(pyear)")
Dim item1 As ListViewItem = project_list.FindItemWithText(name)
Dim item2 As ListViewItem = project_list2.FindItemWithText(name)
If (item1 IsNot Nothing) And (item2 IsNot Nothing) Then
Else
project_list.Items.Add(CreateProjectRow(id, name, leader, year))
project_list2.Items.Add(CreateProjectRow(id, name, leader, year))
End If
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
End Sub
55
End Sub
End Function
End Sub
56
ElseIf compareGraph2.IsOpen Then ' is panel already open then close first
with 0 animate time and then reopen it
compareGraph2.Location = New System.Drawing.Point(0, 197)
compareGraph2.AnimationTime = 0
compareGraph2.IsOpen = False
compareGraph2.AnimationTime = 500
compareGraph2.IsOpen = True
End If
End If
End Sub
57
MsgBox("ท่ำนยังไม่ได้เลือกรำยชื่อโครงกำร", MsgBoxStyle.Critical, "ขออภัย")
End If
ButtonX1.BringToFront()
End Sub
58
compareGraph2.close("1")
compareGraphMax.close("1")
compareGraph.IsOpen = False
compareGraphMax.IsOpen = False
compareGraph2.IsOpen = False
End If
restart()
End Sub
End Class
59
CompareCircleAVG
Imports MySql.Data.MySqlClient
While dbread.Read()
countMax = Convert.ToInt32(dbread("MAX(uid)"))
countRow = Convert.ToInt32(dbread("count(*)"))
End While
For i As Integer = 0 To countMax
poslist1.Add("A")
Next
While dbread2.Read()
countNum = Convert.ToInt32(dbread2("uid"))
poslist1.Insert(countNum, dbread2("uname"))
End While
60
dbread.Close()
dbread2.Close()
dbconn2.Close()
toGraphChoose2()
End Sub
Public Sub toGraphChoose2()
Chart1.Series("Series1").Points.Clear()
Chart2.Series("Series1").Points.Clear()
sql = "SELECT plecturer,pplace,pservice,punderstand,pusage FROM project where
pname ='" + name1 + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbconn2.ConnectionString = String.Format("server={0}; user id={1}; password={2};
database={3}; pooling=false; Character Set=utf8", Login_Form.server, Login_Form.username,
Login_Form.password, Login_Form.database)
dbconn2.Open()
sql2 = "SELECT plecturer,pplace,pservice,punderstand,pusage FROM project where
pname ='" + name2 + "'"
dbcomm2 = New MySqlCommand(sql2, dbconn2)
dbread2 = dbcomm2.ExecuteReader()
While dbread.Read()
Chart1.Series("Series1").Points.AddXY("lecturer",
Convert.ToInt32(dbread("plecturer")))
Chart1.ChartAreas(0).BackColor = Color.Transparent
Chart1.Series("Series1").Points.AddXY("place",
Convert.ToInt32(dbread("pplace")))
Chart1.ChartAreas(0).BackColor = Color.Transparent
Chart1.Series("Series1").Points.AddXY("service",
Convert.ToInt32(dbread("pservice")))
Chart1.ChartAreas(0).BackColor = Color.Transparent
Chart1.Series("Series1").Points.AddXY("understand",
Convert.ToInt32(dbread("punderstand")))
Chart1.ChartAreas(0).BackColor = Color.Transparent
Chart1.Series("Series1").Points.AddXY("usage",
Convert.ToInt32(dbread("pusage")))
Chart1.ChartAreas(0).BackColor = Color.Transparent
End While
While dbread2.Read()
Chart2.Series("Series1").Points.AddXY("lecturer",
Convert.ToInt32(dbread2("plecturer")))
Chart2.ChartAreas(0).BackColor = Color.Transparent
Chart2.Series("Series1").Points.AddXY("place",
Convert.ToInt32(dbread2("pplace")))
Chart2.ChartAreas(0).BackColor = Color.Transparent
Chart2.Series("Series1").Points.AddXY("service",
Convert.ToInt32(dbread2("pservice")))
Chart2.ChartAreas(0).BackColor = Color.Transparent
Chart2.Series("Series1").Points.AddXY("understand",
Convert.ToInt32(dbread2("punderstand")))
Chart2.ChartAreas(0).BackColor = Color.Transparent
61
Chart2.Series("Series1").Points.AddXY("usage",
Convert.ToInt32(dbread2("pusage")))
Chart2.ChartAreas(0).BackColor = Color.Transparent
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
LabelX2.Text = name1
LabelX3.Text = name2
End Sub
62
CompareCirclePayment
Imports MySql.Data.MySqlClient
While dbread.Read()
Chart1.Series("Series1").Points.AddXY("งบโครงกำร",
Convert.ToInt32(dbread("pfund")))
Chart1.ChartAreas(0).BackColor = Color.Transparent
Chart1.Series("Series1").Points.AddXY("ใช้จ่ำยจริ ง",
Convert.ToInt32(dbread("puse")))
Chart1.ChartAreas(0).BackColor = Color.Transparent
End While
While dbread2.Read()
63
Chart2.Series("Series1").Points.AddXY("งบโครงกำร",
Convert.ToInt32(dbread2("pfund")))
Chart2.ChartAreas(0).BackColor = Color.Transparent
Chart2.Series("Series1").Points.AddXY("ใช้จ่ำยจริ ง",
Convert.ToInt32(dbread2("puse")))
Chart2.ChartAreas(0).BackColor = Color.Transparent
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
LabelX2.Text = name1
LabelX3.Text = name2
End Sub
64
CompareCircleTraining
Imports MySql.Data.MySqlClient
While dbread.Read()
countMax = Convert.ToInt32(dbread("MAX(uid)"))
countRow = Convert.ToInt32(dbread("count(*)"))
End While
For i As Integer = 0 To countMax
poslist1.Add("A")
Next
While dbread2.Read()
countNum = Convert.ToInt32(dbread2("uid"))
poslist1.Insert(countNum, dbread2("uname"))
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
toGraphChoose0()
65
End Sub
sql = "SELECT pid FROM project where pname ='" + name1 + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbconn2.ConnectionString = String.Format("server={0}; user id={1}; password={2};
database={3}; pooling=false; Character Set=utf8", Login_Form.server, Login_Form.username,
Login_Form.password, Login_Form.database)
dbconn2.Open()
sql2 = "SELECT pid FROM project where pname ='" + name2 + "'"
dbcomm2 = New MySqlCommand(sql2, dbconn2)
dbread2 = dbcomm2.ExecuteReader()
While dbread.Read()
pid1 = dbread("pid").ToString
End While
While dbread2.Read()
pid2 = dbread2("pid").ToString
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
LabelX2.Text = name1 + " : จำนวนกลุ่มเป้ำหมำย"
LabelX3.Text = name2 + " : จำนวนกลุ่มเป้ำหมำย"
LabelX4.Text = name1 + " : จำนวนอบรมจริ ง"
LabelX5.Text = name2 + " : จำนวนอบรมจริ ง"
toGraph1()
toGraph2()
End Sub
sql = "SELECT rank,amount FROM traineeexpect where pid ='" + pid1 + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbconn2.ConnectionString = String.Format("server={0}; user id={1}; password={2};
database={3}; pooling=false; Character Set=utf8", Login_Form.server, Login_Form.username,
Login_Form.password, Login_Form.database)
dbconn2.Open()
sql2 = "SELECT rank,amount FROM traineereality where pid ='" + pid1 + "'"
66
dbcomm2 = New MySqlCommand(sql2, dbconn2)
dbread2 = dbcomm2.ExecuteReader()
While dbread.Read()
Dim fp As Integer = Convert.ToInt32(dbread("rank"))
Chart1.Series("Series1").Points.AddXY(poslist1(fp),
Convert.ToInt32(dbread("amount")))
Chart1.ChartAreas(0).BackColor = Color.Transparent
End While
While dbread2.Read()
Dim fp1 As Integer = Convert.ToInt32(dbread2("rank"))
Chart2.Series("Series1").Points.AddXY(poslist1(fp1),
Convert.ToInt32(dbread2("amount")))
Chart2.ChartAreas(0).BackColor = Color.Transparent
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
End Sub
sql = "SELECT rank,amount FROM traineeexpect where pid ='" + pid2 + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbconn2.ConnectionString = String.Format("server={0}; user id={1}; password={2};
database={3}; pooling=false; Character Set=utf8", Login_Form.server, Login_Form.username,
Login_Form.password, Login_Form.database)
dbconn2.Open()
sql2 = "SELECT rank,amount FROM traineereality where pid ='" + pid2 + "'"
dbcomm2 = New MySqlCommand(sql2, dbconn2)
dbread2 = dbcomm2.ExecuteReader()
While dbread.Read()
Dim fp As Integer = Convert.ToInt32(dbread("rank"))
Chart3.Series("Series1").Points.AddXY(poslist1(fp),
Convert.ToInt32(dbread("amount")))
Chart3.ChartAreas(0).BackColor = Color.Transparent
End While
While dbread2.Read()
Dim fp1 As Integer = Convert.ToInt32(dbread2("rank"))
Chart4.Series("Series1").Points.AddXY(poslist1(fp1),
Convert.ToInt32(dbread2("amount")))
Chart4.ChartAreas(0).BackColor = Color.Transparent
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
End Sub
67
CompareGraphAvg_Panel
Imports MySql.Data.MySqlClient
68
While dbread.Read()
countMax = Convert.ToInt32(dbread("MAX(uid)"))
countRow = Convert.ToInt32(dbread("count(*)"))
End While
For i As Integer = 0 To countMax
poslist1.Add("A")
Next
While dbread2.Read()
countNum = Convert.ToInt32(dbread2("uid"))
poslist1.Insert(countNum, dbread2("uname"))
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
End Sub
Chart3.Series("Series1").LegendText = name1
Chart3.Series("Series2").LegendText = name2
Chart3.Series("Series1").Points.Clear()
Chart3.Series("Series2").Points.Clear()
sql = "SELECT plecturer,pplace,pservice,punderstand,pusage FROM project where
pname ='" + name1 + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbconn2.ConnectionString = String.Format("server={0}; user id={1}; password={2};
database={3}; pooling=false; Character Set=utf8", Login_Form.server, Login_Form.username,
Login_Form.password, Login_Form.database)
dbconn2.Open()
sql2 = "SELECT plecturer,pplace,pservice,punderstand,pusage FROM project where
pname ='" + name2 + "'"
dbcomm2 = New MySqlCommand(sql2, dbconn2)
dbread2 = dbcomm2.ExecuteReader()
While dbread.Read()
Chart3.Series("Series1").Points.AddXY("ผูบ้ รรยำย",
Convert.ToInt32(dbread("plecturer")))
Chart3.Series("Series1").Points.AddXY("สถำนที่",
Convert.ToInt32(dbread("pplace")))
Chart3.Series("Series1").Points.AddXY("บริ กำร",
Convert.ToInt32(dbread("pservice")))
Chart3.Series("Series1").Points.AddXY("ควำมเข้ำใจ",
Convert.ToInt32(dbread("punderstand")))
Chart3.Series("Series1").Points.AddXY("กำรนำไปใช้",
Convert.ToInt32(dbread("pusage")))
End While
While dbread2.Read()
Chart3.Series("Series2").Points.AddXY("ผูบ้ รรยำย",
Convert.ToInt32(dbread2("plecturer")))
69
Chart3.Series("Series2").Points.AddXY("สถำนที่",
Convert.ToInt32(dbread2("pplace")))
Chart3.Series("Series2").Points.AddXY("บริ กำร",
Convert.ToInt32(dbread2("pservice")))
Chart3.Series("Series2").Points.AddXY("ควำมเข้ำใจ",
Convert.ToInt32(dbread2("punderstand")))
Chart3.Series("Series2").Points.AddXY("กำรนำไปใช้",
Convert.ToInt32(dbread2("pusage")))
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
End Sub
Private Sub ButtonX1_Click(sender As Object, e As EventArgs)
compareCircle.test(name1, name2)
compareCircle.IsOpen = True
End Sub
End Sub
70
CompareGraphPayment_Panel
Imports MySql.Data.MySqlClient
Public Class CompareGraphPayment_Panel
Public name1, name2 As String
Public poslist1, poslist2, postemp As New ArrayList
Public countMax, countRow, countNum As Integer
Public pid1 As String
Public pid2 As String
Public posname As String
Public compareCircle As CompareCirclePayment
Public compareGraph As CompareGraphPayment_Panel
Public compareGraphMax As CompareGraphTraining_Panel
Public compare As Compare_Panel
Public dbconn = Login_Form.dbconn
Public sql = Login_Form.sql
Public dbcomm = Login_Form.dbcomm
Public dbread = Login_Form.dbread
Public sql2 As String
Public dbcomm2 As MySqlCommand
Public dbread2 As MySqlDataReader
Public dbconn2 As New MySqlConnection
End If
End Sub
71
While dbread.Read()
countMax = Convert.ToInt32(dbread("MAX(uid)"))
countRow = Convert.ToInt32(dbread("count(*)"))
End While
For i As Integer = 0 To countMax
poslist1.Add("A")
Next
While dbread2.Read()
countNum = Convert.ToInt32(dbread2("uid"))
poslist1.Insert(countNum, dbread2("uname"))
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
End Sub
While dbread.Read()
Chart3.Series("Series1").Points.AddXY("งบโครงกำร",
Convert.ToInt32(dbread("pfund")))
Chart3.Series("Series1").Points.AddXY("ใช้จ่ำยจริ ง",
Convert.ToInt32(dbread("puse")))
End While
While dbread2.Read()
Chart3.Series("Series2").Points.AddXY("งบโครงกำร",
Convert.ToInt32(dbread2("pfund")))
Chart3.Series("Series2").Points.AddXY("ใช้จ่ำยจริ ง",
Convert.ToInt32(dbread2("puse")))
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
End Sub
72
Private Sub ButtonX1_Click(sender As Object, e As EventArgs)
compareCircle.test(name1, name2)
compareCircle.IsOpen = True
End Sub
73
CompareGraphTraining_Panel
Imports MySql.Data.MySqlClient
End Sub
74
While dbread.Read()
countMax = Convert.ToInt32(dbread("MAX(uid)"))
countRow = Convert.ToInt32(dbread("count(*)"))
End While
For i As Integer = 0 To countMax
poslist1.Add("A")
Next
While dbread2.Read()
countNum = Convert.ToInt32(dbread2("uid"))
poslist1.Insert(countNum, dbread2("uname"))
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
End Sub
Chart6.Series("Series1").Points.Clear()
Chart6.Series("Series2").Points.Clear()
sql = "SELECT pid FROM project where pname ='" + name1 + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbconn2.ConnectionString = String.Format("server={0}; user id={1}; password={2};
database={3}; pooling=false; Character Set=utf8", Login_Form.server, Login_Form.username,
Login_Form.password, Login_Form.database)
dbconn2.Open()
sql2 = "SELECT pid FROM project where pname ='" + name2 + "'"
dbcomm2 = New MySqlCommand(sql2, dbconn2)
dbread2 = dbcomm2.ExecuteReader()
While dbread.Read()
pid1 = dbread("pid").ToString
End While
While dbread2.Read()
pid2 = dbread2("pid").ToString
End While
dbread.Close()
75
dbread2.Close()
dbconn2.Close()
toChartExpect()
toChartReal()
End Sub
End While
While dbread2.Read()
Dim fp As Integer = Convert.ToInt32(dbread2("rank"))
Chart5.Series("Series2").Points.AddXY(poslist1(fp),
Convert.ToInt32(dbread2("amount")))
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
End Sub
End While
76
While dbread2.Read()
Dim fp As Integer = Convert.ToInt32(dbread2("rank"))
Chart6.Series("Series2").Points.AddXY(poslist1(fp),
Convert.ToInt32(dbread2("amount")))
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
End Sub
77
editProject_Panel
Imports MySql.Data.MySqlClient
month_combobox.SelectedIndex = -1
addData()
End Sub
Private Sub project_list_ColumnWidthChanging(sender As Object, e As
ColumnWidthChangingEventArgs) Handles project_list.ColumnWidthChanging
'prevent column size to be changed
78
e.Cancel = True
e.NewWidth = project_list.Columns(e.ColumnIndex).Width
End Sub
Private Sub trainee_list_ColumnWidthChanging(sender As Object, e As
ColumnWidthChangingEventArgs) Handles trainee_list.ColumnWidthChanging
e.Cancel = True
e.NewWidth = trainee_list.Columns(e.ColumnIndex).Width
End Sub
Private Sub team_list_ColumnWidthChanging(sender As Object, e As
ColumnWidthChangingEventArgs) Handles team_list.ColumnWidthChanging
e.Cancel = True
e.NewWidth = team_list.Columns(e.ColumnIndex).Width
End Sub
Private Sub helper_list_ColumnWidthChanging(sender As Object, e As
ColumnWidthChangingEventArgs) Handles helper_list.ColumnWidthChanging
e.Cancel = True
e.NewWidth = helper_list.Columns(e.ColumnIndex).Width
End Sub
Private Sub add_position_button_Click(sender As Object, e As EventArgs) Handles
add_position_button.Click
Dim combotext As String = position_combobox.SelectedItem.ToString
Dim item1 As ListViewItem = trainee_list.FindItemWithText(combotext)
If (item1 IsNot Nothing) Then
Else
trainee_list.Items.Add(CreateTraineetRow(combotext))
End If
End Sub
Private Function CreateTraineetRow(ByVal name As String) As
System.Windows.Forms.ListViewItem
'create row in this function and return row and add to project_list
Dim row As System.Windows.Forms.ListViewItem = New
System.Windows.Forms.ListViewItem(New String() {name, "0", "0"})
Return row
End Function
Private Sub checkTextbox(sender As Object, e As KeyPressEventArgs) Handles
fund_textbox.KeyPress
If Asc(e.KeyChar) <> 8 Then
If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
e.Handled = True
End If
End If
End Sub
Private Sub checkTextbox2(sender As Object, e As KeyPressEventArgs) Handles
used_textbox.KeyPress
If Asc(e.KeyChar) <> 8 Then
If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
e.Handled = True
End If
End If
End Sub
Private Sub editProject_Panel_Load(sender As Object, e As EventArgs) Handles
MyBase.Load
addData()
End Sub
Public Sub addData()
calendarFlag = 0
CalendarView1.Hide()
mon.Clear()
79
mon.Add("มกรำคม")
mon.Add("กุมภำพันธ์")
mon.Add("มีนำคม")
mon.Add("เมษำยน")
mon.Add("พฤษภำคม")
mon.Add("มิถุนำยน")
mon.Add("กรกฎำคม")
mon.Add("สิ งหำคม")
mon.Add("กันยำยน")
mon.Add("ตุลำคม")
mon.Add("พฤษจิกำยน")
mon.Add("ธันวำคม")
'add data to position combobox
sql = "SELECT * FROM `position`"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
If Not (position_combobox.Items.Contains(dbread("uname"))) Then
position_combobox.Items.Add(dbread("uname"))
End If
End While
dbread.Close()
' end add data
80
sql = "SELECT p1.pid,p1.pname,p2.leadname FROM project as p1, leaderinfo as p2
where p1.pleader = p2.leadid order by p1.pid asc"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbconn2.ConnectionString = String.Format("server={0}; user id={1}; password={2};
database={3}; pooling=false; Character Set=utf8", Login_Form.server, Login_Form.username,
Login_Form.password, Login_Form.database)
dbconn2.Open()
sql2 = "SELECT YEAR(pyear) FROM project"
dbcomm2 = New MySqlCommand(sql2, dbconn2)
dbread2 = dbcomm2.ExecuteReader()
Dim count As Integer = 0
Dim id, name, leader, year As String
While dbread.Read() Or dbread2.Read()
id = dbread("pid")
name = dbread("pname")
leader = dbread("leadname")
year = dbread2("YEAR(pyear)")
Dim item1 As ListViewItem = project_list.FindItemWithText(name)
If (item1 IsNot Nothing) Then
Else
project_list.Items.Add(CreateProjectRow(id, name, leader, year))
End If
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
End Sub
Public Shared Function CreateProjectRow(ByVal pId As String, ByVal pName As String,
ByVal pLeader As String, ByVal pYear As String) As System.Windows.Forms.ListViewItem
'create row in this function and return row and add to project_list
Dim row As System.Windows.Forms.ListViewItem = New
System.Windows.Forms.ListViewItem(New String() {pId, pName, pLeader, pYear})
Return row
End Function
Private Sub add_helper_button_Click(sender As Object, e As EventArgs) Handles
add_helper_button.Click
If helper_lecturer_combobox.SelectedIndex = -1 Then
Else
Dim combotext As String = helper_lecturer_combobox.SelectedItem.ToString
Dim item1 As ListViewItem = helper_list.FindItemWithText(combotext)
If (item1 IsNot Nothing) Then
Else
If main_lecturer_combobox.SelectedIndex = -1 Then
helper_list.Items.Add(CreateTraineetRow(combotext))
ElseIf combotext <> main_lecturer_combobox.SelectedItem.ToString Then
helper_list.Items.Add(CreateTraineetRow(combotext))
End If
End If
End If
End Sub
Private Sub selected_index_changed(sender As Object, e As EventArgs) Handles
main_lecturer_combobox.SelectedIndexChanged
Dim combotext As String = main_lecturer_combobox.SelectedItem.ToString
Dim item1 As ListViewItem = helper_list.FindItemWithText(combotext)
If (item1 IsNot Nothing) Then
81
helper_list.Items.Remove(item1)
End If
End Sub
Private Sub add_team_button_Click(sender As Object, e As EventArgs) Handles
add_team_button.Click
If team_combobox.SelectedIndex = -1 Then
Else
Dim combotext As String = team_combobox.SelectedItem.ToString
Dim item1 As ListViewItem = team_list.FindItemWithText(combotext)
If (item1 IsNot Nothing) Then
Else
If leader_combobox.SelectedIndex = -1 Then
team_list.Items.Add(CreateTraineetRow(combotext))
ElseIf combotext <> leader_combobox.SelectedItem.ToString Then
team_list.Items.Add(CreateTraineetRow(combotext))
End If
End If
End If
End Sub
Private Sub select_index_change(sender As Object, e As EventArgs) Handles
leader_combobox.SelectedIndexChanged
Dim combotext As String = leader_combobox.SelectedItem.ToString
Dim item1 As ListViewItem = team_list.FindItemWithText(combotext)
If (item1 IsNot Nothing) Then
team_list.Items.Remove(item1)
End If
End Sub
Private Sub checkTextBoxi1(sender As Object, e As KeyPressEventArgs) Handles
TextBoxX1.KeyPress
Dim FullStop As Char
FullStop = "."
If e.KeyChar = FullStop And TextBoxX1.Text.IndexOf(FullStop) <> -1 Then
e.Handled = True
Return
End If
If Not Char.IsDigit(e.KeyChar) Then
If (e.KeyChar <> FullStop) And
(e.KeyChar <> Convert.ToChar(Keys.Back)) Then
e.Handled = True
Return
End If
End If
End Sub
Private Sub checkTextBoxi2(sender As Object, e As KeyPressEventArgs) Handles
TextBoxX2.KeyPress
Dim FullStop As Char
FullStop = "."
If e.KeyChar = FullStop And TextBoxX2.Text.IndexOf(FullStop) <> -1 Then
e.Handled = True
Return
End If
If Not Char.IsDigit(e.KeyChar) Then
If (e.KeyChar <> FullStop) And
(e.KeyChar <> Convert.ToChar(Keys.Back)) Then
e.Handled = True
Return
End If
End If
82
End Sub
Private Sub checkTextBoxi3(sender As Object, e As KeyPressEventArgs) Handles
TextBoxX3.KeyPress
Dim FullStop As Char
FullStop = "."
If e.KeyChar = FullStop And TextBoxX3.Text.IndexOf(FullStop) <> -1 Then
e.Handled = True
Return
End If
If Not Char.IsDigit(e.KeyChar) Then
If (e.KeyChar <> FullStop) And
(e.KeyChar <> Convert.ToChar(Keys.Back)) Then
e.Handled = True
Return
End If
End If
End Sub
Private Sub search_press(sender As Object, e As KeyEventArgs) Handles
search_textbox.KeyDown
'search project in project_list
If e.KeyCode = Keys.Enter Then
Dim search_text As String = search_textbox.Text
Dim count As Integer = 0
Dim key As String = ""
Dim found As Boolean = False
For Each item As ListViewItem In project_list.Items
key = project_list.Items(count).SubItems(1).Text
If key.Contains(search_text) Then
project_list.Items(count).Selected = True
project_list.Select()
found = True
Exit For
End If
count = count + 1
Next
If Not found Then
MsgBox("ไม่มีขอ้ มูลโครงกำรในระบบ!", MsgBoxStyle.Critical, "ค้นหำล้มเหลว")
End If
End If
End Sub
Private Sub checkTextBoxi4(sender As Object, e As KeyPressEventArgs) Handles
TextBoxX4.KeyPress
Dim FullStop As Char
FullStop = "."
If e.KeyChar = FullStop And TextBoxX4.Text.IndexOf(FullStop) <> -1 Then
e.Handled = True
Return
End If
If Not Char.IsDigit(e.KeyChar) Then
If (e.KeyChar <> FullStop) And
(e.KeyChar <> Convert.ToChar(Keys.Back)) Then
e.Handled = True
Return
End If
End If
End Sub
Private Sub checkTextBoxi5(sender As Object, e As KeyPressEventArgs) Handles
TextBoxX5.KeyPress
83
Dim FullStop As Char
FullStop = "."
If e.KeyChar = FullStop And TextBoxX5.Text.IndexOf(FullStop) <> -1 Then
e.Handled = True
Return
End If
If Not Char.IsDigit(e.KeyChar) Then
If (e.KeyChar <> FullStop) And
(e.KeyChar <> Convert.ToChar(Keys.Back)) Then
e.Handled = True
Return
End If
End If
End Sub
Public Sub ButtonX1_Click(sender As Object, e As EventArgs) Handles ButtonX1.Click
clearAll()
End Sub
Private Sub project_list_MouseClick(sender As Object, e As MouseEventArgs) Handles
project_list.MouseClick
' show panel list and load all information
Dim item As ListViewItem = project_list.GetItemAt(e.X, e.Y)
clearAll()
getData(item)
checkfocus = True
End Sub
Private Sub getData(ByVal d As ListViewItem)
Dim item As ListViewItem = d
sql = "SELECT pid from project where pname ='" + item.SubItems(1).Text + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
pid = dbread("pid")
End While
dbread.Close()
'set helper
sql = "SELECT p1.pid,p1.pname,p2.main,p3.lid,p3.lname From project as p1,
lecturer as p2, lecturerinfo as p3 Where p1.pname = '" + item.SubItems(1).Text + "'and
p1.pid = p2.pid and p2.helper = p3.lid order by p3.lid"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
84
helper_list.Items.Add(CreateTraineetRow(dbread("lname")))
End While
dbread.Close()
'set fund
sql = "Select pfund,puse FROM project where pname = '" + item.SubItems(1).Text +
"'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
fund_textbox.Text = dbread("pfund")
used_textbox.Text = dbread("puse")
End While
dbread.Close()
'set indictation
sql = "Select plecturer,pplace,pservice,punderstand,pusage FROM project where
pname = '" + item.SubItems(1).Text + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
TextBoxX1.Text = dbread("plecturer")
TextBoxX2.Text = dbread("pplace")
TextBoxX3.Text = dbread("pservice")
TextBoxX4.Text = dbread("punderstand")
TextBoxX5.Text = dbread("pusage")
End While
dbread.Close()
'set date
sql = "Select year(pyear),month(pyear),day(pyear) FROM project where pname = '" +
item.SubItems(1).Text + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
day_textbox.Text = dbread("day(pyear)")
year_textbox.Text = dbread("year(pyear)")
month_combobox.SelectedIndex = Convert.ToInt32(dbread("month(pyear)")) - 1
End While
dbread.Close()
'set leader
Dim b As Integer = leader_combobox.FindString(item.SubItems(2).Text)
leader_combobox.SelectedIndex = b
'set team
team_list.Items.Clear()
sql = "select p1.pid,p1.pname,p3.leadid,p2.leadname from project as p1,
leaderinfo as p2, team as p3 where p1.pname ='" + item.SubItems(1).Text + "' and p3.pid =
p1.pid and p3.leadid = p2.leadid order by p2.leadid"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
Dim ListViewItem1 As System.Windows.Forms.ListViewItem = New
System.Windows.Forms.ListViewItem(New String() {dbread("leadname")})
team_list.Items.Add(ListViewItem1)
End While
dbread.Close()
85
'set trainee
sql = "SELECT p1.pid,p2.rank,p3.uname,p2.amount from project as p1, traineeexpect
as p2, position as p3 where p1.pname = '" + item.SubItems(1).Text + "' and p1.pid =
p2.pid and p2.rank = p3.uid order by p3.uid"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
Dim ListViewItem1 As System.Windows.Forms.ListViewItem = New
System.Windows.Forms.ListViewItem(New String() {dbread("uname"), dbread("amount")})
trainee_list.Items.Add(ListViewItem1)
End While
dbread.Close()
checkExpect(item.SubItems(1).Text)
End Sub
Public Sub checkExpect(ByVal pname As String)
Dim count As Integer = 0
For Each item As ListViewItem In trainee_list.Items
If (trainee_list.Items(count).SubItems.Count = 2) Then
trainee_list.Items(count).SubItems.Add("0")
Else
count += 1
End If
Next
End Sub
Private Sub trainee_list_MouseClick(sender As Object, e As MouseEventArgs) Handles
trainee_list.MouseClick
' show panel list and load all information
86
Dim index As Integer = trainee_list.SelectedIndices(0)
Dim myValue As String = InputBox("ใส่ จำนวนที่คำดหวัง", "กรุ ณำใส่ ขอ้ มูล",
trainee_list.Items(index).SubItems(1).Text)
Dim myValue2 As String = InputBox("ใส่ จำนวนที่มำอบรมจริ ง", "กรุ ณำใส่ ขอ้ มูล",
trainee_list.Items(index).SubItems(2).Text)
trainee_list.Items(index).SubItems(1).Text = myValue
trainee_list.Items(index).SubItems(2).Text = myValue2
End Sub
Private Sub delete_position_button_Click(sender As Object, e As EventArgs) Handles
delete_position_button.Click
Dim index As Integer = trainee_list.SelectedIndices(0)
trainee_list.Items.RemoveAt(index)
End Sub
Private Sub delete_helper_button_Click(sender As Object, e As EventArgs) Handles
delete_helper_button.Click
Dim index As Integer = helper_list.SelectedIndices(0)
helper_list.Items.RemoveAt(index)
End Sub
Private Sub delete_team_button_Click(sender As Object, e As EventArgs) Handles
delete_team_button.Click
Dim index As Integer = team_list.SelectedIndices(0)
team_list.Items.RemoveAt(index)
End Sub
a = CalendarView1.DateSelectionStart()
months = ""
countForSub(a)
day_textbox.Text = x(0)
months = mon(Convert.ToInt32(x(1)) - 1)
toSelectedItem(months)
year_textbox.Text = x(2)
CalendarView1.Refresh()
CalendarView1.Hide()
calendarFlag = 0
End Sub
87
ElseIf monthly = "สิ งหำคม" Then
month_combobox.SelectedIndex = 7
ElseIf monthly = "กันยำยน" Then
month_combobox.SelectedIndex = 8
ElseIf monthly = "ตุลำคม" Then
month_combobox.SelectedIndex = 9
ElseIf monthly = "พฤษจิกำยน" Then
month_combobox.SelectedIndex = 10
ElseIf monthly = "ธันวำคม" Then
month_combobox.SelectedIndex = 11
End If
End Sub
End Sub
End Class
88
Host_Panel
Public Class Host_Panel
Public Sub New()
objWriter.Write(server_textbox.Text + vbNewLine)
objWriter.Write(username_textbox.Text + vbNewLine)
objWriter.Write(password_textbox.Text + vbNewLine)
objWriter.Write(database_textbox.Text)
objWriter.Close()
Login_Form.readDatabaseConfig()
End If
server_textbox.Clear()
username_textbox.Clear()
password_textbox.Clear()
database_textbox.Clear()
If Me.IsOpen Then
Me.IsOpen = False
End If
Login_Form.TitleText = "เข้ำสู่ ระบบ"
End Sub
Private Sub MetroTileItem2_Click(sender As Object, e As EventArgs) Handles
MetroTileItem2.Click
If Me.IsOpen Then
Me.IsOpen = False
End If
Login_Form.TitleText = "เข้ำสู่ ระบบ"
End Sub
End Class
89
Login_Form
Imports MySql.Data.MySqlClient
End Sub
Public Sub readDatabaseConfig()
If dbconn.Ping Then
MsgBox("alreadyOpen")
Else
' Init database
My.Computer.FileSystem.RenameFile(confPath, "conf.txt")
Dim counts As Integer = 0
Dim FILE_NAME As String = startPath + "\conf.txt"
Dim objReader As New System.IO.StreamReader(FILE_NAME)
Dim TextLine As String = ""
If System.IO.File.Exists(FILE_NAME) = True Then
Do While objReader.Peek() <> -1
If counts = 0 Then
server = objReader.ReadLine()
counts = counts + 1
ElseIf counts = 1 Then
username = objReader.ReadLine()
counts = counts + 1
ElseIf counts = 2 Then
password = objReader.ReadLine()
90
counts = counts + 1
ElseIf counts = 3 Then
database = objReader.ReadLine()
counts = -1
End If
Loop
End If
objReader.Close()
My.Computer.FileSystem.RenameFile(startPath + "\conf.txt", "conf.cfg")
connectToDatabase()
' End Init
End If
End Sub
Public Sub connectToDatabase()
dbconn.ConnectionString = String.Format("server={0}; user id={1}; password={2};
database={3}; pooling=false; Character Set=utf8", Me.server, Me.username, Me.password,
Me.database)
Try
dbconn.Open()
LabelItem1.Text = "Connected"
Catch ex As Exception
MsgBox("ล้มเหลวในกำรเชื่อมต่อดำต้ำเบส, กรุ ณำตรวจสอบอินเตอร์เน็ตและดำต้ำเบสของท่ำน")
End Try
End Sub
Private Sub hostChange_click(ByVal sender As Object, ByVal e As EventArgs)
If hostChange.IsOpen Then
hostChange.IsOpen = False
End If
End Sub
Private Sub login_tile_item_Click(sender As Object, e As EventArgs) Handles
login_tile_item.Click
Dim username As String = username_textbox.Text
Dim password As String = password_textbox.Text
If (username = "root" And password = "root") Then
Dim mFrom As New Main_Form(Me, "root", True, True)
mFrom.Show()
Me.Hide()
Else
If username = "" Then
MsgBox("กรุ ณำใส่ ชื่อผูใ้ ช้!", MsgBoxStyle.Critical, "เข้ำสู่ ระบบล้มเหลว")
username_textbox.Focus()
ElseIf password = "" Then
MsgBox("กรุ ณำใส่ รหัสผ่ำน!", MsgBoxStyle.Critical, "เข้ำสู่ ระบบล้มเหลว")
password_textbox.Focus()
Else
sql = "SELECT * FROM account WHERE username='" + username + "'"
Try
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
If (dbread.Read() = False) Then
MsgBox("ไม่มีชื่อผูใ้ ช้น้ ี ในระบบ", MsgBoxStyle.Critical, "เข้ำสู่ ระบบล้มเหลว")
dbread.Dispose()
Else
If (password = dbread("password")) Then
Dim username_sent As String = username_textbox.Text
MsgBox("เข้ำสู่ ระบบสำเร็ จ")
username_textbox.Clear()
91
password_textbox.Clear()
username_textbox.Focus()
If dbread("status") = 2 Then
dbread.Close()
' keep log
sql = "INSERT INTO loginlog (username) VALUES ('" +
username_sent + "')"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
' start new form
Dim mFrom As New Main_Form(Me, username_sent, True, True)
mFrom.Show()
Me.Hide()
ElseIf dbread("status") = 1 Then
dbread.Close()
' keep log
sql = "INSERT INTO loginlog (username) VALUES ('" +
username_sent + "')"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
' start new form
Dim mFrom As New Main_Form(Me, username_sent, False,
True)
mFrom.Show()
Me.Hide()
ElseIf dbread("status") = 0 Then
dbread.Close()
' keep log
sql = "INSERT INTO loginlog (username) VALUES ('" +
username_sent + "')"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
' start new form
Dim mFrom As New Main_Form(Me, username_sent, False,
False)
mFrom.Show()
Me.Hide()
End If
Else
MsgBox("รหัสผ่ำนผิดพลำด!", MsgBoxStyle.Critical, "เข้ำสู่ ระบบล้มเหลว")
dbread.Dispose()
End If
End If
Catch ex As Exception
MsgBox("Error in collecting data from Database. Error is :" &
ex.Message)
Exit Sub
End Try
End If
End If
End Sub
Private Sub host_tile_item_Click(sender As Object, e As EventArgs) Handles
host_tile_item.Click
If Not hostChange.IsOpen Then
92
hostChange.IsOpen = True
End If
End Sub
Private Sub password_textbox_KeyDown(sender As Object, e As KeyEventArgs) Handles
password_textbox.KeyDown
If e.KeyCode = Keys.Enter Then
login_tile_item_Click(sender, e)
End If
End Sub
Private Sub username_textbox_KeyDown(sender As Object, e As KeyEventArgs) Handles
username_textbox.KeyDown
If e.KeyCode = Keys.Enter Then
login_tile_item_Click(sender, e)
End If
End Sub
End Class
93
Main_Form
Imports MySql.Data.MySqlClient
Imports DevComponents.DotNetBar
Imports Word = Microsoft.Office.Interop.Word
Public Class Main_Form
Private CallingForm As Object
Public showPanel As Show_Panel = Nothing ' Implement showPanel Form
Public menuPanel As Menu_Panel = Nothing ' Implement menuPanel Form
Public addPanel As addProject_Panel = Nothing ' Implement addPanel Form
Public editPanel As editProject_Panel = Nothing ' implement editPanel Form
Public comparePanel As Compare_Panel = Nothing ' implement comparePanel Form
Public OverviewTypes As OverviewType = Nothing ' implement overviewPanel Form
Public username_show As String
Public admingrant As Boolean
Public editorgrant As Boolean
Public dbconn = Login_Form.dbconn
Public sql = Login_Form.sql
Public dbcomm = Login_Form.dbcomm
Public dbread = Login_Form.dbread
Public sql2 As String
Public dbcomm2 As MySqlCommand
Public dbread2 As MySqlDataReader
Public dbconn2 As New MySqlConnection
Public Sub New(ByVal caller As Object, ByVal username As String, ByVal statusadmin As
Boolean, ByVal statuseditor As Boolean)
MyBase.New()
InitializeComponent()
CallingForm = caller
username_show = username
admingrant = statusadmin
editorgrant = statuseditor
End Sub
Private Sub Main_Form_Closing(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
e.Cancel = True
Me.Hide()
If Not IsNothing(CallingForm) Then CallingForm.Close()
CallingForm = Nothing
End Sub
Private Sub Main_Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load
readDataToTree()
' Init showPanel Form
showPanel = New Show_Panel()
showPanel.Location = New System.Drawing.Point(-5, 178)
Me.Controls.Add(showPanel)
showPanel.BringToFront()
showPanel.IsOpen = False
showPanel.SlideOutButtonVisible = False
AddHandler showPanel.Click, AddressOf showPanel_click
' End Init
94
AddHandler menuPanel.Click, AddressOf menuPanel_click
AddHandler menuPanel.VisibleChanged, AddressOf changeVisible
If admingrant Then
menuPanel.admin_grant()
End If
If editorgrant Then
menuPanel.editor_grant()
End If
AddHandler menuPanel.admin_tile_item.Click, AddressOf adminForm_click
' End Init
ButtonX1.BringToFront()
End Sub
95
Public Sub changeVisible()
If menuPanel.Visible = True Then
ButtonX1.SendToBack()
ElseIf menuPanel.Visible = False Then
ButtonX1.BringToFront()
End If
End Sub
Private Sub overview_tile_item_Click(sender As Object, e As EventArgs)
If Not OverviewTypes.IsOpen Then ' if panel not open then open
OverviewTypes.IsOpen = True
End If
End Sub
Public Sub adminForm_click(sender As Object, e As EventArgs)
Dim aFrom As New Admin_Form(Me)
aFrom.Show()
Me.Hide()
End Sub
Private Sub delete_project(sender As Object, e As EventArgs)
''delete traineeexpect
If editPanel.checkfocus = False Then
MsgBox("กรุ ณำเลือกโปรเจค")
Else
sql = "DELETE FROM traineeexpect WHERE pid = '" + editPanel.pid.ToString +
"'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
sql = "UPDATE traineeexpect SET pid = pid - 1 WHERE pid > '" +
editPanel.pid.ToString + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
''delete traineereality
sql = "DELETE FROM traineereality WHERE pid = '" + editPanel.pid.ToString +
"'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
sql = "UPDATE traineereality SET pid = pid - 1 WHERE pid > '" +
editPanel.pid.ToString + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
'delete team
sql = "DELETE FROM team WHERE pid = '" + editPanel.pid.ToString + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
sql = "UPDATE team SET pid = pid - 1 WHERE pid > '" + editPanel.pid.ToString
+ "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
96
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
sql = "UPDATE lecturer SET pid = pid - 1 WHERE pid > '" +
editPanel.pid.ToString + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
editPanel.project_list.Items.Clear()
editPanel.clearAll()
editPanel.addData()
OverviewTypes.readData()
comparePanel.clearItem()
comparePanel.readDataToTree()
project_list.Items.Clear()
readDataToTree()
End If
End Sub
Private Sub add_tile_item_click(sender As Object, e As EventArgs)
If Not addPanel.IsOpen Then ' if panel not open then open
addPanel.IsOpen = True
End If
addPanel.clearAll()
addPanel.addData()
End Sub
Private Sub compare_tile_item_Click(sender As Object, e As EventArgs)
If Not comparePanel.IsOpen Then ' if panel not open then open
comparePanel.IsOpen = True
End If
End Sub
Private Sub save_tile_item_click(sender As Object, e As EventArgs)
Dim count As Integer
sql = "SELECT count(*) FROM `project`"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
count = dbread("count(*)")
End While
dbread.Close()
count = count + 1
97
While dbread.Read()
pleader = dbread("leadid")
End While
dbread.Close()
'add trainee_expert
For Each item As ListViewItem In addPanel.trainee_list.Items
98
sql = "select uid from position where uname ='" +
addPanel.trainee_list.Items(count2).SubItems(0).Text + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
rank = dbread("uid")
End While
dbread.Close()
sql = "INSERT INTO traineeexpect (pid,rank,amount) VALUES ('" +
count.ToString + "','" + rank + "','" +
addPanel.trainee_list.Items(count2).SubItems(1).Text + "')"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
count2 += 1
Next
count2 = 0
rank = ""
'add trainee_reality
For Each item As ListViewItem In addPanel.trainee_list.Items
sql = "select uid from position where uname ='" +
addPanel.trainee_list.Items(count2).SubItems(0).Text + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.executereader()
While dbread.read()
rank = dbread("uid")
End While
dbread.close()
sql = "insert into traineereality (pid,rank,amount) values ('" +
count.ToString + "','" + rank + "','" +
addPanel.trainee_list.Items(count2).SubItems(2).Text + "')"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.executereader()
dbread.close()
count2 += 1
Next
99
End While
dbread.Close()
'add team
Dim team As String = ""
Dim count4 As Integer = 0
addPanel.ButtonX1_Click(sender, e)
addPanel.back_tile_item_Click(sender, e)
readDataToTree()
editPanel.addData()
OverviewTypes.readData()
comparePanel.clearItem()
comparePanel.readDataToTree()
End Sub
Private Sub edit_tile_item_click(sender As Object, e As EventArgs)
If Not editPanel.IsOpen Then ' if panel not open then open
editPanel.IsOpen = True
End If
editPanel.clearAll()
editPanel.addData()
End Sub
Private Sub update_project(sender As Object, e As EventArgs)
100
dbread.Close()
Dim pname As String = editPanel.project_name_textbox.Text
Dim day As String = editPanel.day_textbox.Text
Dim month As String = editPanel.month_combobox.SelectedItem.ToString
If editPanel.month_combobox.SelectedIndex = 0 Then
month = "01"
ElseIf editPanel.month_combobox.SelectedIndex = 1 Then
month = "02"
ElseIf editPanel.month_combobox.SelectedIndex = 2 Then
month = "03"
ElseIf editPanel.month_combobox.SelectedIndex = 3 Then
month = "04"
ElseIf editPanel.month_combobox.SelectedIndex = 4 Then
month = "05"
ElseIf editPanel.month_combobox.SelectedIndex = 5 Then
month = "06"
ElseIf editPanel.month_combobox.SelectedIndex = 6 Then
month = "07"
ElseIf editPanel.month_combobox.SelectedIndex = 7 Then
month = "08"
ElseIf editPanel.month_combobox.SelectedIndex = 8 Then
month = "09"
ElseIf editPanel.month_combobox.SelectedIndex = 9 Then
month = "10"
ElseIf editPanel.month_combobox.SelectedIndex = 10 Then
month = "11"
ElseIf editPanel.month_combobox.SelectedIndex = 11 Then
month = "12"
End If
Dim year As String = editPanel.year_textbox.Text
Dim pyear As String = year + "-" + month + "-" + day
Dim pfund As String = editPanel.fund_textbox.Text
Dim puse As String = editPanel.used_textbox.Text
Dim plecturer As String = editPanel.TextBoxX1.Text
Dim pplace As String = editPanel.TextBoxX2.Text
Dim pservice As String = editPanel.TextBoxX3.Text
Dim punderstand As String = editPanel.TextBoxX4.Text
Dim pusage As String = editPanel.TextBoxX5.Text
'add trainee_expert
For Each item As ListViewItem In editPanel.trainee_list.Items
101
sql = "select uid from position where uname ='" +
editPanel.trainee_list.Items(count2).SubItems(0).Text + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
rank = dbread("uid")
End While
dbread.Close()
sql = "INSERT INTO traineeexpect (pid,rank,amount) VALUES ('" +
editPanel.pid.ToString + "','" + rank + "','" +
editPanel.trainee_list.Items(count2).SubItems(1).Text + "')"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
count2 += 1
Next
count2 = 0
rank = ""
102
dbread.Close()
103
End Sub
Private Sub menuPanel_click(sender As Object, e As EventArgs)
'handle the panel to close when click
If menuPanel.IsOpen Then
menuPanel.IsOpen = False
End If
End Sub
Private Sub showPanel_click(sender As Object, e As EventArgs)
'handle the panel to close when click
If showPanel.IsOpen Then
showPanel.IsOpen = False
End If
End Sub
Public Sub readDataToTree()
'read data from database and put in project_list
sql = "SELECT p1.pid,p1.pname,p2.leadname FROM project as p1, leaderinfo as p2
where p1.pleader = p2.leadid order by p1.pid asc"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbconn2.ConnectionString = String.Format("server={0}; user id={1}; password={2};
database={3}; pooling=false; Character Set=utf8", Login_Form.server, Login_Form.username,
Login_Form.password, Login_Form.database)
dbconn2.Open()
sql2 = "SELECT YEAR(pyear) FROM project"
dbcomm2 = New MySqlCommand(sql2, dbconn2)
dbread2 = dbcomm2.ExecuteReader()
Dim count As Integer = 0
Dim id, name, leader, year As String
While dbread.Read() Or dbread2.Read()
id = dbread("pid")
name = dbread("pname")
leader = dbread("leadname")
year = dbread2("YEAR(pyear)")
Dim item1 As ListViewItem = project_list.FindItemWithText(name)
If (item1 IsNot Nothing) Then
Else
project_list.Items.Add(CreateProjectRow(id, name, leader, year))
End If
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
End Sub
Public Function CreateProjectRow(ByVal pId As String, ByVal pName As String, ByVal
pLeader As String, ByVal pYear As String) As System.Windows.Forms.ListViewItem
'create row in this function and return row and add to project_list
Dim row As System.Windows.Forms.ListViewItem = New
System.Windows.Forms.ListViewItem(New String() {pId, pName, pLeader, pYear})
Return row
End Function
Private Sub search_press(sender As Object, e As KeyEventArgs) Handles
search_textbox.KeyDown
'search project in project_list
If e.KeyCode = Keys.Enter Then
Dim search_text As String = search_textbox.Text
Dim count As Integer = 0
Dim key As String = ""
104
Dim found As Boolean = False
For Each item As ListViewItem In project_list.Items
key = project_list.Items(count).SubItems(1).Text
If key.Contains(search_text) Then
project_list.Items(count).Selected = True
project_list.Select()
found = True
getData(item)
Exit For
End If
count = count + 1
Next
If Not found Then
MsgBox("ไม่มีขอ้ มูลโครงกำรในระบบ!", MsgBoxStyle.Critical, "ค้นหำล้มเหลว")
End If
End If
End Sub
Private Sub project_list_ColumnWidthChanging(sender As Object, e As
ColumnWidthChangingEventArgs) Handles project_list.ColumnWidthChanging
'prevent column size to be changed
e.Cancel = True
e.NewWidth = project_list.Columns(e.ColumnIndex).Width
End Sub
Private Sub callData(ByVal d As ListViewItem)
Dim item As ListViewItem = d
showPanel.changeInfo(item.SubItems(1).Text, item.SubItems(2).Text)
showPanel.trainee_list.Items.Clear()
showPanel.readTraineeExpect(item.SubItems(1).Text)
showPanel.readFund(item.SubItems(1).Text)
showPanel.readBarChart(item.SubItems(1).Text)
showPanel.readMainLecturer(item.SubItems(1).Text)
showPanel.readHelperLecturer(item.SubItems(1).Text)
showPanel.readTraineeReality(item.SubItems(1).Text)
showPanel.checkExpect(item.SubItems(1).Text)
showPanel.readTeam(item.SubItems(1).Text)
showPanel.totalTrainee()
showPanel.readPieChart1()
showPanel.readPieChart2()
End Sub
Private Sub getData(ByVal d As ListViewItem)
Dim item As ListViewItem = d
If Not IsNothing(item) Then
If Not showPanel.IsOpen Then ' if panel not open then open
callData(item)
showPanel.IsOpen = True
showPanel.Location = New System.Drawing.Point(-5, 178)
ButtonX1.BringToFront()
ElseIf showPanel.IsOpen Then ' is panel already open then close first with 0
animate time and then reopen it
showPanel.Location = New System.Drawing.Point(-5, 178)
showPanel.AnimationTime = 0
showPanel.IsOpen = False
callData(item)
showPanel.AnimationTime = 500
showPanel.IsOpen = True
ButtonX1.BringToFront()
End If
End If
105
End Sub
Private Sub project_list_MouseClick(sender As Object, e As MouseEventArgs) Handles
project_list.MouseClick
' show panel list and load all information
Dim item As ListViewItem = project_list.GetItemAt(e.X, e.Y)
getData(item)
End Sub
menuPanel.hidemenu()
106
oPara1.Range.Font.Bold = True
oPara1.Format.SpaceAfter = 24 '24 pt spacing after paragraph.
oPara1.Range.InsertParagraphAfter()
oPara2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range)
oPara2.Range.Font.Name = "CS ChatThaiUI"
oPara2.Range.Text = "ผูเ้ ข้ำรับกำรอบรม"
oPara2.Range.Font.Size = 12
oPara2.Range.Font.Bold = True
oPara2.Format.SpaceAfter = 6
oPara2.Range.InsertParagraphAfter()
107
oTable.Borders.OutsideLineStyle =
Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleDouble
oTable.Cell(count + 2, 2).Range.Text = showPanel.expectamount_label.Text
oTable.Borders.InsideLineStyle =
Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle
oTable.Borders.OutsideLineStyle =
Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleDouble
oTable.Cell(count + 2, 3).Range.Text = showPanel.realityamount_label.Text
oTable.Borders.InsideLineStyle =
Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle
oTable.Borders.OutsideLineStyle =
Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleDouble
oPara4 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range)
oPara4.Range.InsertParagraphBefore()
oPara4.Range.Text = "งบประมำณของโครงกำร"
oPara4.Format.SpaceAfter = 2
oPara4.Range.InsertParagraphAfter()
oPara4.Range.Text = showPanel.fund_label.Text
oPara4.Format.SpaceAfter = 2
oPara4.Range.InsertParagraphAfter()
oPara4.Range.Text = showPanel.payment_label.Text
oPara4.Format.SpaceAfter = 2
oPara4.Range.InsertParagraphAfter()
oPara3 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range)
oPara3.Range.InsertParagraphBefore()
oPara3.Range.Font.Name = "CS ChatThaiUI"
oPara3.Range.Text = "รำยชื่อวิทยำกร"
oPara3.Range.Font.Size = 12
oPara3.Range.Font.Bold = True
oPara3.Format.SpaceAfter = 6
oPara3.Range.InsertParagraphAfter()
'Keep inserting text. When you get to 7 inches from top of the
'document, insert a hard page break.
Pos = oWord.InchesToPoints(7)
oDoc.Bookmarks.Item("\endofdoc").Range.InsertParagraphAfter()
Do
oRng = oDoc.Bookmarks.Item("\endofdoc").Range
oRng.ParagraphFormat.SpaceAfter = 6
oRng.InsertAfter("")
oRng.InsertParagraphAfter()
Loop While Pos >=
oRng.Information(Word.WdInformation.wdVerticalPositionRelativeToPage)
108
oRng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
oRng.InsertBreak(Word.WdBreakType.wdPageBreak)
oRng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
oRng.InsertAfter(showPanel.projectLeader_label.Text)
oRng.InsertParagraphAfter()
menuPanel.showmenu()
End Sub
End Class
109
manageAccount_Panel
Imports MySql.Data.MySqlClient
110
End If
Else
edit_username_textbox.Text =
DataGridViewX1.Rows(cell.RowIndex).Cells(1).Value.ToString
If DataGridViewX1.Rows(cell.RowIndex).Cells(2).Value.ToString = "ผูด้ ูแลระบบ"
Then
edit_status_combobox.SelectedIndex = 1
ElseIf DataGridViewX1.Rows(cell.RowIndex).Cells(2).Value.ToString =
"ผูร้ ับผิดชอบโครงกำร" Then
edit_status_combobox.SelectedIndex = 2
ElseIf DataGridViewX1.Rows(cell.RowIndex).Cells(2).Value.ToString = "ผูใ้ ช้งำน
ทัว่ ไป" Then
edit_status_combobox.SelectedIndex = 3
End If
End If
Next
End Sub
user = username_textbox.Text
pass1 = password1_textbox.Text
pass2 = password2_textbox.Text
stat = ""
If (status_combobox.SelectedIndex = 1) Then
stat = "2"
ElseIf (status_combobox.SelectedIndex = 2) Then
stat = "1"
ElseIf (status_combobox.SelectedIndex = 3) Then
stat = "0"
End If
If (user = "") Then
MsgBox("กรุ ณำใส่ ชื่อผูใ้ ช้!", MsgBoxStyle.Critical, "เพิ่มผูใ้ ช้ลม้ เหลว")
ElseIf (pass1 = "") Then
MsgBox("กรุ ณำใส่ รหัสผ่ำน!", MsgBoxStyle.Critical, "เพิ่มผูใ้ ช้ลม้ เหลว")
ElseIf (pass2 <> pass1) Then
MsgBox("รหัสผ่ำนที่ยืนยันไม่ตรงกัน!", MsgBoxStyle.Critical, "เพิ่มผูใ้ ช้ลม้ เหลว")
ElseIf (status_combobox.SelectedIndex = 0) Then
MsgBox("กรุ ณำใส่ ระดับกำรใช้งำน!", MsgBoxStyle.Critical, "เพิ่มผูใ้ ช้ลม้ เหลว")
Else
sql = "INSERT INTO account (username, password, status) VALUES ('" + user +
"', '" + pass1 + "', '" + stat + "')"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
DataGridViewX1.Rows.Clear()
DataGridViewX1.Refresh()
ReadDataToTable()
reset_button_Click(sender, e)
End If
End Sub
111
username_textbox.Clear()
password1_textbox.Clear()
password2_textbox.Clear()
status_combobox.SelectedIndex = 0
End Sub
112
managePermission_Panel
Imports MySql.Data.MySqlClient
Public Class managePermission_Panel
Public dbconn = Login_Form.dbconn
Public sql = Login_Form.sql
Public dbcomm = Login_Form.dbcomm
Public dbread = Login_Form.dbread
Private Sub back_tile_item_Click(sender As Object, e As EventArgs) Handles
back_tile_item.Click
If Me.IsOpen Then
Me.IsOpen = False
End If
End Sub
Private Sub position_list_ColumnWidthChanging(sender As Object, e As
ColumnWidthChangingEventArgs) Handles username_list.ColumnWidthChanging
e.Cancel = True
e.NewWidth = username_list.Columns(e.ColumnIndex).Width
End Sub
Public Function CreateProjectRow(ByVal pName As String, ByVal pStatus As String) As
System.Windows.Forms.ListViewItem
'create row in this function and return row and add to project_list
Dim row As System.Windows.Forms.ListViewItem = New
System.Windows.Forms.ListViewItem(New String() {pName, pStatus})
Return row
End Function
113
status = "ผูใ้ ช้งำนทัว่ ไป"
End If
username_list.Items.Add(CreateProjectRow(dbread("username"), status))
End While
dbread.Close()
End Sub
114
managePosition_Panel
Imports MySql.Data.MySqlClient
115
dbread.Close()
position_list.Items.Clear()
readDataToTable()
End Sub
116
manageUser_Panel
Imports MySql.Data.MySqlClient
117
Private Sub ButtonX1_Click(sender As Object, e As EventArgs) Handles ButtonX1.Click
Dim count As Integer
sql = "SELECT count(*) from lecturerinfo"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
count = dbread("count(*)")
End While
dbread.Close()
count += 1
118
Private Sub ButtonX4_Click(sender As Object, e As EventArgs) Handles ButtonX4.Click
Dim leadid As Integer = team_list.FocusedItem.Index + 1
sql = "DELETE FROM leaderinfo WHERE leadname = '" +
team_list.FocusedItem.SubItems(0).Text + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
sql = "UPDATE leaderinfo SET leadid = leadid - 1 WHERE leadid > '" +
leadid.ToString + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
team_list.Items.Clear()
readDataToTable()
End Sub
End Class
119
Menu_Panel
Public Class Menu_Panel
Private Sub Menu_Panel_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Public Sub admin_grant()
admin_tile_item.Enabled = True
End Sub
Public Sub editor_grant()
add_tile_item.Enabled = True
edit_tile_item.Enabled = True
delete_tile_item.Enabled = True
End Sub
Public Sub hidemenu()
Me.SlideOutButtonVisible = False
End Sub
Public Sub showmenu()
Me.SlideOutButtonVisible = True
End Sub
End Class
120
Overview
Imports MySql.Data.MySqlClient
End Sub
Public Sub clearItem()
project_list.Items.Clear()
End Sub
Public Sub readDataToTree()
'read data from database and put in project_list
sql = "SELECT p1.pid,p1.pname,p2.leadname FROM project as p1, leaderinfo as p2
where p1.pleader = p2.leadid"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbconn2.ConnectionString = String.Format("server={0}; user id={1}; password={2};
database={3}; pooling=false; Character Set=utf8", Login_Form.server, Login_Form.username,
Login_Form.password, Login_Form.database)
dbconn2.Open()
sql2 = "SELECT YEAR(pyear) FROM project"
dbcomm2 = New MySqlCommand(sql2, dbconn2)
dbread2 = dbcomm2.ExecuteReader()
Dim count As Integer = 0
Dim id, name, leader, year As String
While dbread.Read() Or dbread2.Read()
id = dbread("pid")
name = dbread("pname")
leader = dbread("leadname")
year = dbread2("YEAR(pyear)")
121
project_list.Items.Add(CreateProjectRow(id, name, leader, year))
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
End Sub
overviewChart.close("1")
Dim item As ListViewItem = project_list.GetItemAt(e.X, e.Y)
projname = item.SubItems(1).Text
overviewChart.test(projname, pid1)
overviewChart.IsOpen = True
End Sub
Private Sub search_press(sender As Object, e As KeyEventArgs) Handles
search_textbox1.KeyDown
'search project in project_list
If e.KeyCode = Keys.Enter Then
Dim search_text As String = search_textbox1.Text
Dim count As Integer = 0
Dim key As String = ""
Dim found As Boolean = False
For Each item As ListViewItem In project_list.Items
key = project_list.Items(count).SubItems(1).Text
If key.Contains(search_text) Then
project_list.Items(count).Selected = True
project_list.Select()
found = True
Exit For
End If
count = count + 1
Next
If Not found Then
MsgBox("ไม่มีขอ้ มูลโครงกำรในระบบ!", MsgBoxStyle.Critical, "ค้นหำล้มเหลว")
End If
End If
End Sub
End Class
122
OverviewChart
Imports MySql.Data.MySqlClient
End Sub
toChart()
getSemX()
getSemR()
getFund()
getAvg()
getTeam()
getLecturer()
Chart1.Series("เป้ำหมำย").Points.Clear()
Chart1.Series("อบรมจริ ง").Points.Clear()
123
Chart2.Series("งบโครงกำร").Points.Clear()
Chart2.Series("ใช้จ่ำยจริ ง").Points.Clear()
Chart3.Series("หลัก").Points.Clear()
Chart3.Series("ผูช้ ่วย").Points.Clear()
Chart4.Series("หัวหน้ำโครงกำร").Points.Clear()
Chart4.Series("สมำชิกภำยในทีม").Points.Clear()
Chart5.Series("ผูบ้ รรยำย").Points.Clear()
Chart5.Series("สถำนที่ ").Points.Clear()
Chart5.Series("บริ กำร").Points.Clear()
Chart5.Series("ควำมเข้ำใจ").Points.Clear()
Chart5.Series("กำรนำไปใช้").Points.Clear()
Chart2.Series("งบโครงกำร").Points.AddXY("งบโครงกำร", fund)
Chart2.Series("ใช้จ่ำยจริ ง").Points.AddXY("ใช้จ่ำยจริ ง", payment)
Chart3.Series("หลัก").Points.AddXY("วิทยำกร", MainCount)
Chart3.Series("ผูช้ ่วย").Points.AddXY("วิทยำกร", HelperCount)
Chart4.Series("หัวหน้ำโครงกำร").Points.AddXY("วิทยำกร", leadCount)
Chart4.Series("สมำชิกภำยในทีม").Points.AddXY("วิทยำกร", teamCount)
End Sub
pid1 = dbread("pid").ToString
End While
dbread.Close()
End Sub
124
sumExpect1 = Convert.ToInt32(dbread("SUM(amount)"))
End While
dbread.Close()
End Sub
sumExpect2 = Convert.ToInt32(dbread("SUM(amount)"))
End While
dbread.Close()
End Sub
fund = Convert.ToInt32(dbread("pfund"))
payment = Convert.ToInt32(dbread("puse"))
End While
dbread.Close()
End Sub
lead = Convert.ToInt32(dbread("pleader"))
fund = Convert.ToInt32(dbread("pfund"))
payment = Convert.ToInt32(dbread("puse"))
lecturer = Convert.ToInt32(dbread("plecturer"))
place = Convert.ToInt32(dbread("pplace"))
service = Convert.ToInt32(dbread("pservice"))
understand = Convert.ToInt32(dbread("punderstand"))
usage = Convert.ToInt32(dbread("pusage"))
End While
dbread.Close()
End Sub
125
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
If Not (Teamer.Contains(dbread("leadid"))) Then
Teamer.Add(dbread("leadid").ToString)
End If
End While
While dbread2.Read()
leader.Add(dbread2("count(pleader)"))
End While
leadCount = getSize(leader)
teamCount = getSize(Teamer)
dbread.Close()
dbread2.Close()
dbconn2.Close()
End Sub
126
overviewTraining.IsOpen = False
overviewTraining.test("training", projname, pid1)
overviewTraining.IsOpen = True
End Sub
overviewTraining.IsOpen = False
overviewTraining.test("mainhelper", projname, pid1)
overviewTraining.IsOpen = True
End Sub
127
OverviewDetails
Imports MySql.Data.MySqlClient
End Sub
128
dbread2 = dbcomm2.ExecuteReader()
While dbread.Read()
countMax = Convert.ToInt32(dbread("MAX(leadid)"))
countRow = Convert.ToInt32(dbread("count(*)"))
End While
For i As Integer = 0 To countMax
poslist1.Add("A")
Next
While dbread2.Read()
countNum = Convert.ToInt32(dbread2("leadid"))
poslist1.Insert(countNum, dbread2("leadname"))
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
toFindPid()
toDetailsLeaderTeam()
End Sub
Private Sub toDetailsLeaderTeam()
leader.Clear()
teams.Clear()
sql = "SELECT pleader FROM project WHERE pid = '" + pid1 + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
If Not leader.Contains(dbread("pleader")) Then
leader.Add(dbread("pleader"))
End If
End While
While dbread2.Read()
If Not teams.Contains(dbread2("leadid")) Then
teams.Add(dbread2("leadid"))
End If
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
toDetailLeaderTeam()
End Sub
129
text2 = ""
For Each item In leader
Dim items = Convert.ToInt32(item)
text1 += poslist1(items) + vbNewLine
Next
While dbread.Read()
countMax = Convert.ToInt32(dbread("MAX(lid)"))
countRow = Convert.ToInt32(dbread("count(*)"))
End While
For i As Integer = 0 To countMax
poslist1.Add("A")
Next
While dbread2.Read()
countNum = Convert.ToInt32(dbread2("lid"))
poslist1.Insert(countNum, dbread2("lname"))
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
toFindPid()
toDetailsMainHelper()
End Sub
While dbread.Read()
130
If Not Main.Contains(dbread("main")) Then
Main.Add(dbread("main"))
End If
While dbread.Read()
countMax = Convert.ToInt32(dbread("MAX(uid)"))
countRow = Convert.ToInt32(dbread("count(*)"))
End While
For i As Integer = 0 To countMax
poslist1.Add("A")
Next
While dbread2.Read()
countNum = Convert.ToInt32(dbread2("uid"))
poslist1.Insert(countNum, dbread2("uname"))
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
toFindPid()
toDetailTraining()
131
End Sub
sql = "SELECT pid FROM project where pname ='" + projname + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
'dbconn2.ConnectionString = String.Format("server={0}; user id={1}; password={2};
database={3}; pooling=false; Character Set=utf8", Login_Form.server, Login_Form.username,
Login_Form.password, Login_Form.database)
'dbconn2.Open()
'sql2 = "SELECT pid FROM project where pname ='" + name2 + "'"
'dbcomm2 = New MySqlCommand(sql2, dbconn2)
'dbread2 = dbcomm2.ExecuteReader()
While dbread.Read()
pid1 = dbread("pid").ToString
End While
dbread.Close()
End Sub
End While
While dbread2.Read()
132
Dim fp As Integer = Convert.ToInt32(dbread2("rank"))
'Chart1.Series("Series2").Points.AddXY(poslist1(fp),
Convert.ToInt32(dbread2("amount")))
text2 += poslist1(fp) + " : " + dbread2("amount") + vbNewLine
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
LabelX1.Text = text1
LabelX2.Text = text2
End Sub
End While
While dbread2.Read()
Dim fp As Integer = Convert.ToInt32(dbread2("rank"))
'Chart1.Series("Series2").Points.AddXY(poslist1(fp),
Convert.ToInt32(dbread2("amount")))
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
End Sub
133
OverviewType
Public Class OverviewType
Public Overview As Overview = Nothing
Public OverviewWhole As OverviewWholeChart = Nothing
End Sub
Public Sub readData()
Overview.clearItem()
Overview.readDataToTree()
End Sub
Private Sub ButtonX2_Click(sender As Object, e As EventArgs) Handles ButtonX2.Click
Overview.IsOpen = True
End Sub
134
OverviewWholeChart
Imports MySql.Data.MySqlClient
ComboBoxEx1.Items.Add("0 เดือน")
ComboBoxEx1.Items.Add("12 เดือน")
ComboBoxEx1.Items.Add("24 เดือน")
ComboBoxEx1.Items.Add("36 เดือน")
ComboBoxEx1.Items.Add("48 เดือน")
ComboBoxEx1.Items.Add("60 เดือน")
ComboBoxEx2.Items.Add("จำนวนเป้ำหมำย")
ComboBoxEx2.Items.Add("อบรมจริ ง")
ComboBoxEx2.Items.Add("งบโครงกำร")
ComboBoxEx2.Items.Add("ใช้จ่ำยจริ ง")
ComboBoxEx2.Items.Add("สถำนที่")
ComboBoxEx2.Items.Add("บริ กำร")
ComboBoxEx2.Items.Add("ควำมเข้ำใจ")
ComboBoxEx2.Items.Add("กำรนำไปใช้")
End Sub
135
Private Sub ButtonX1_Click(sender As Object, e As EventArgs) Handles ButtonX1.Click
If ComboBoxEx1.Text = "" Or ComboBoxEx2.Text = "" Then
MsgBox("กรุ ณำเลือกชนิดข้อมูลให้ครบ")
Else
overViewShowChart.IsOpen = False
overViewShowChart.test(pid1)
overViewShowChart.toDate(ComboBoxEx1.SelectedItem.ToString)
overViewShowChart.toChart(ComboBoxEx2.SelectedItem.ToString)
overViewShowChart.IsOpen = True
End If
End Sub
End Class
136
OverviewWholeShowChart
Imports MySql.Data.MySqlClient
sql = "select SUM(amount) from traineeexpect where pid = '" + item + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
137
While dbread2.Read()
tek = dbread2("pname") + vbNewLine + dbread2("pyear")
ass.Add(tek)
End While
While dbread.Read()
Chart1.Series("Series1").Points.AddXY(ass(countx),
dbread("SUM(amount)"))
countx += 1
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
Next
ElseIf (selects = "อบรมจริ ง") Then
Dim ass As New ArrayList
Dim tek As String = ""
Dim countx As Integer = 0
ass.Clear()
For Each item As String In pid1
sql = "select SUM(amount) from traineereality where pid = '" + item + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
dbconn2.ConnectionString = String.Format("server={0}; user id={1};
password={2}; database={3}; pooling=false; Character Set=utf8", Login_Form.server,
Login_Form.username, Login_Form.password, Login_Form.database)
dbconn2.Open()
sql2 = "SELECT pname,pyear FROM project WHERE pid = '" + item + "'"
dbcomm2 = New MySqlCommand(sql2, dbconn2)
dbread2 = dbcomm2.ExecuteReader()
While dbread2.Read()
tek = dbread2("pname") + vbNewLine + dbread2("pyear")
ass.Add(tek)
End While
While dbread.Read()
Chart1.Series("Series1").Points.AddXY(ass(countx),
dbread("SUM(amount)"))
countx += 1
End While
dbread.Close()
dbread2.Close()
dbconn2.Close()
Next
ElseIf (selects = "งบโครงกำร") Then
For Each item As String In pid1
sql = "select pfund,pname,pyear from project where pid = '" + item + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
Chart1.Series("Series1").Points.AddXY(dbread("pname") + vbNewLine +
dbread("pyear"), dbread("pfund"))
End While
dbread.Close()
Next
ElseIf (selects = "ใช้จ่ำยจริ ง") Then
For Each item As String In pid1
sql = "select puse,pname,pyear from project where pid = '" + item + "'"
138
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
Chart1.Series("Series1").Points.AddXY(dbread("pname") + vbNewLine +
dbread("pyear"), dbread("puse"))
End While
dbread.Close()
Next
ElseIf (selects = "สถำนที่") Then
For Each item As String In pid1
sql = "select pplace,pname,pyear from project where pid = '" + item + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
Chart1.Series("Series1").Points.AddXY(dbread("pname") + vbNewLine +
dbread("pyear"), dbread("pplace"))
End While
dbread.Close()
Next
End While
dbread.Close()
Next
End While
dbread.Close()
Next
139
End While
dbread.Close()
Next
End If
End Sub
140
Dim yrs As ArrayList = y
Dim yrsnew As New ArrayList
Dim ints As Integer = 0
If Convert.ToInt32(yrs.Item(0)) < 2100 Then 'กรณี ที่ต้ งั เวลำเคร่ื องเปนปี คศ
For Each item As Integer In yrs
ints = item + 543
yrsnew.Add(ints.ToString)
Next
For Each item In yrsnew
sql = "select pyear from project WHERE year(pyear)='" + item + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
If Not yearsss.Contains(dbread("pyear")) Then
yearsss.Add(dbread("pyear"))
End If
End While
dbread.Close()
Next
Else
For Each item In yrs 'กรณี ที่ต้ งั เวลำเคร่ื องเปนปี พศ
sql = "select pyear from project WHERE year(pyear)='" + item + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
If Not yearsss.Contains(dbread("pyear")) Then
yearsss.Add(dbread("pyear"))
End If
End While
dbread.Close()
Next
End If
yearsss.Sort()
finalPids(yearsss)
End Sub
dbread.Close()
Next
End Sub
Private Sub findPid(ByVal dated As ArrayList)
pid1.Clear()
Dim dates As ArrayList = dated
Dim mon As New ArrayList
dates.Sort()
141
For Each item As String In dated
Dim texMonth As String = ""
Dim texDate As String = ""
mon.Clear()
142
Show_Panel
Imports MySql.Data.MySqlClient
143
Private Sub helper_list_ColumnWidthChanging(sender As Object, e As
ColumnWidthChangingEventArgs) Handles helper_list.ColumnWidthChanging
e.Cancel = True
e.NewWidth = helper_list.Columns(e.ColumnIndex).Width
End Sub
Private Sub team_list_ColumnWidthChanging(sender As Object, e As
ColumnWidthChangingEventArgs) Handles team_list.ColumnWidthChanging
e.Cancel = True
e.NewWidth = team_list.Columns(e.ColumnIndex).Width
End Sub
Public Sub readFund(ByVal pname As String)
sql = "Select pfund,puse FROM project where pname = '" + pname + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
fund_label.Text = "งบโครงกำร : " + FormatNumber(CDbl(dbread("pfund")), 2) + "
บำท"
payment_label.Text = "ใช้จ่ำยจริ ง : " + FormatNumber(CDbl(dbread("puse")), 2) + "
บำท"
End While
dbread.Close()
End Sub
Public Sub readBarChart(ByVal pname As String)
sql = "Select plecturer,pplace,pservice,punderstand,pusage FROM project where
pname = '" + pname + "'"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
lecture = ""
place = ""
service = ""
understand = ""
usage = ""
While dbread.Read()
lecture = dbread("plecturer")
place = dbread("pplace")
service = dbread("pservice")
understand = dbread("punderstand")
usage = dbread("pusage")
End While
Dim total As Integer = (Convert.ToInt32(lecture) + Convert.ToInt32(place) +
Convert.ToInt32(service) + Convert.ToInt32(understand) + Convert.ToInt32(usage)) / 5
Chart1.Series("Series1").Points.Clear()
Chart1.Series("Series1").Points.AddXY("วิทยำกร", Convert.ToInt32(lecture))
Chart1.Series("Series1").Points.AddXY("สถำนที่", Convert.ToInt32(place))
Chart1.Series("Series1").Points.AddXY("บริ กำร", Convert.ToInt32(service))
Chart1.Series("Series1").Points.AddXY("ควำมเข้ำใจ", Convert.ToInt32(understand))
Chart1.Series("Series1").Points.AddXY("กำรนำไปใช้", Convert.ToInt32(usage))
Chart1.Series("Series1").Points.AddXY("เกณฑ์เฉลี่ย", total)
Chart1.ChartAreas(0).BackColor = Color.Transparent
dbread.Close()
End Sub
Public Sub readPieChart1()
Chart2.Series("Series1").Points.Clear()
Dim count As Integer = 0
For Each item As ListViewItem In trainee_list.Items
144
Chart2.Series("Series1").Points.AddXY(trainee_list.Items(count).SubItems(0).Text,
trainee_list.Items(count).SubItems(1).Text)
count += 1
Next
count = 0
Chart2.ChartAreas(0).BackColor = Color.Transparent
End Sub
Public Sub readPieChart2()
Chart3.Series("Series1").Points.Clear()
Dim count As Integer = 0
For Each item As ListViewItem In trainee_list.Items
Chart3.Series("Series1").Points.AddXY(trainee_list.Items(count).SubItems(0).Text,
trainee_list.Items(count).SubItems(2).Text)
count += 1
Next
count = 0
Chart3.ChartAreas(0).BackColor = Color.Transparent
End Sub
Public Sub readTraineeExpect(ByVal pname As String)
trainee_list.Items.Clear()
sql = "SELECT p1.pid,p2.rank,p3.uname,p2.amount from project as p1, traineeexpect
as p2, position as p3 where p1.pname = '" + pname + "' and p1.pid = p2.pid and p2.rank =
p3.uid order by p3.uid"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
trainee_list.Items.Add(CreateTraineetRow(dbread("uname"), dbread("amount")))
End While
dbread.Close()
End Sub
Public Sub readTraineeReality(ByVal pname As String)
sql = "SELECT p1.pid,p2.rank,p3.uname,p2.amount from project as p1,
traineereality as p2, position as p3 where p1.pname = '" + pname + "' and p1.pid = p2.pid
and p2.rank = p3.uid order by p3.uid"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
Dim count As Integer = 0
Dim count2 As Integer = 0
Dim found As Boolean = False
While dbread.Read()
For Each item As ListViewItem In trainee_list.Items
If (dbread("uname") = trainee_list.Items(count).SubItems(0).Text) Then
trainee_list.Items(count).SubItems.Add(dbread("amount"))
found = True
Exit For
End If
count += 1
Next
If Not found Then
trainee_list.Items.Add(CreateTraineetRow(dbread("uname"), "0"))
trainee_list.Items(count).SubItems.Add(dbread("amount"))
End If
count = 0
found = False
End While
dbread.Close()
145
End Sub
Public Sub checkExpect(ByVal pname As String)
Dim count As Integer = 0
For Each item As ListViewItem In trainee_list.Items
If (trainee_list.Items(count).SubItems.Count = 2) Then
trainee_list.Items(count).SubItems.Add("0")
Else
count += 1
End If
Next
End Sub
Public Sub readTeam(ByVal pname As String)
team_list.Items.Clear()
sql = "select p1.pid,p1.pname,p3.leadid,p2.leadname from project as p1,
leaderinfo as p2, team as p3 where p1.pname ='" + pname + "' and p3.pid = p1.pid and
p3.leadid = p2.leadid order by p2.leadid"
dbcomm = New MySqlCommand(sql, dbconn)
dbread = dbcomm.ExecuteReader()
While dbread.Read()
Dim ListViewItem1 As System.Windows.Forms.ListViewItem = New
System.Windows.Forms.ListViewItem(New String() {dbread("leadname")})
team_list.Items.Add(ListViewItem1)
End While
dbread.Close()
End Sub
Public Sub totalTrainee()
Dim expectamount As Integer = 0
Dim realityamount As Integer = 0
Dim count As Integer = 0
For Each item As ListViewItem In trainee_list.Items
expectamount += Convert.ToInt32(trainee_list.Items(count).SubItems(1).Text)
realityamount += Convert.ToInt32(trainee_list.Items(count).SubItems(2).Text)
count += 1
Next
expectamount_label.Text = expectamount.ToString()
realityamount_label.Text = realityamount.ToString()
End Sub
Private Function CreateTraineetRow(ByVal name As String, ByVal amount As String) As
System.Windows.Forms.ListViewItem
'create row in this function and return row and add to project_list
Dim row As System.Windows.Forms.ListViewItem = New
System.Windows.Forms.ListViewItem(New String() {name, amount})
Return row
End Function
Private Sub trainee_list_MouseClick(sender As Object, e As MouseEventArgs) Handles
trainee_list.MouseClick
' show panel list and load all information
Dim item As ListViewItem = trainee_list.GetItemAt(e.X, e.Y)
item.Selected = False
End Sub
Private Sub team_list_MouseClick(sender As Object, e As MouseEventArgs) Handles
team_list.MouseClick
' show panel list and load all information
Dim item As ListViewItem = team_list.GetItemAt(e.X, e.Y)
item.Selected = False
End Sub
End Class
146
3.รายชื่อคณะกรรวมการ การประเมินผล
1. นายไชยยศ สันต์สังวร ผู้บังคับบัญชากลุ่มงานวิทยาการคอมพิวเตอร์
2. นางณีรนุช จุลประภา นักวิชาการคอมพิวเตอร์ชานาญการพิเศษ
3. นางยุพิน พ่วงเสมา นักวิชาการคอมพิวเตอร์ชานาญการ
4. นางสุธาวี อนุญาหงษ์ นักวิชาการคอมพิวเตอร์ชานาญการ
5. นายชัยวัฒน์ ปันต่า นักวิชาการคอมพิวเตอร์ปฏิบัติการ
4.ข้อมูลผู้พัฒนาโปรแกรม
นายปุณยวีร์ โพธิ์ศรี
นักศึกษาฝึกงาน ระดับปริญญาตรี ชั้นปีที่สอง
คณะวิศวกรรมศาสตร์ สาขาวิศวกรรมซอฟต์แวร์ หลักสูตรนานาชาติ
สถาบันเทคโนโลยีพระจอมเกล้าเจ้าคุณทหารลาดกระบัง
Email: kukkui2537@gmail.com
นายจารุกิตต์ พัฒนพรกุล
นักศึกษาฝึกงาน ระดับปริญญาตรี ชั้นปีที่สอง
คณะวิศวกรรมศาสตร์ สาขาวิศวกรรมซอฟต์แวร์ หลักสูตรนานาชาติ
สถาบันเทคโนโลยีพระจอมเกล้าเจ้าคุณทหารลาดกระบัง
Email: sunshinezxc@gmail.com
147
รูปกิจกรรมการนาเสนอผลงาน
148
149