ผลต่างระหว่างรุ่นของ "Grader on Windows with TC"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 8: แถว 8:
 
[http://www.appservnetwork.com/ AppServ] เป็นระบบที่รวม Apache Web Server, PHP, MySQL และ PHPMySQLAdmin สำหรับติดตั้งในโปรแกรมเดียว
 
[http://www.appservnetwork.com/ AppServ] เป็นระบบที่รวม Apache Web Server, PHP, MySQL และ PHPMySQLAdmin สำหรับติดตั้งในโปรแกรมเดียว
  
ดาวน์โหลดและติดตั้ง AppServ 2.5.9 จาก[http://prdownloads.sourceforge.net/appserv/appserv-win32-2.5.9.exe?download sourceforge]
+
1. ดาวน์โหลดและติดตั้ง AppServ 2.5.9 จาก [http://prdownloads.sourceforge.net/appserv/appserv-win32-2.5.9.exe?download sourceforge] ให้บันทึกไดเร็กทรอรีที่ติดตั้งไว้ด้วย (ถ้าทำตามค่าปกติ จะติดตั้งที่ <tt>C:\AppServ</tt>
 +
 
 +
2. เมื่อติดตั้งแล้ว โครงสร้างไดเร็กทรอรีที่ได้จะเป็นดังนี้ (ดู[http://www.appservnetwork.com/modules.php?name=Content&pa=showpage&pid=9 รายละเอียดเพิ่มเติม])
 +
C:\AppServ
 +
  |
 +
  +-- Apache2.2
 +
  +-- MySQL
 +
  +-- php5
 +
  \-- www
 +
 
 +
ไดเร็กทรอรี <tt>www</tt> จะเป็นที่จะติดตั้งระบบรับโปรแกรมของผ่านเว็บ
  
 
====ติดตั้งตรง====
 
====ติดตั้งตรง====

รุ่นแก้ไขเมื่อ 09:23, 4 เมษายน 2551

ระบบมีสองส่วน คือส่วนที่เป็นระบบรับโปรแกรมบนเว็บ ซึ่งพัฒนาด้วยภาษา php บนระบบฐานข้อมูล MySQL และส่วนที่เป็นโปรแกรมทำงานที่เซิร์ฟเวอร์สำหรับตรวจโปรแกรม โดยจะเรียก Turbo C หรือ Borland C มาคอมไพล์และตรวจผลลัพธ์โปรแกรม

การติดตั้งโปรแกรม

ระบบฐานข้อมูลและเว็บเซิร์ฟเวอร์

ระบบตรวจที่พัฒนาขึ้นใช้ระบบฐานข้อมูล MySQL และพัฒนาด้วยภาษา php

ใช้ AppServ

AppServ เป็นระบบที่รวม Apache Web Server, PHP, MySQL และ PHPMySQLAdmin สำหรับติดตั้งในโปรแกรมเดียว

1. ดาวน์โหลดและติดตั้ง AppServ 2.5.9 จาก sourceforge ให้บันทึกไดเร็กทรอรีที่ติดตั้งไว้ด้วย (ถ้าทำตามค่าปกติ จะติดตั้งที่ C:\AppServ

2. เมื่อติดตั้งแล้ว โครงสร้างไดเร็กทรอรีที่ได้จะเป็นดังนี้ (ดูรายละเอียดเพิ่มเติม)

C:\AppServ
 |
 +-- Apache2.2
 +-- MySQL
 +-- php5
 \-- www

ไดเร็กทรอรี www จะเป็นที่จะติดตั้งระบบรับโปรแกรมของผ่านเว็บ

ติดตั้งตรง

1. ติดตั้ง MySQL

ติดตั้ง MySQL Community Server 5.0 โดยเลือกติดตั้งหัวข้อ Windows Essentials

2. ติดตั้ง Apache Webserver

ติดตั้ง Apache Http Server โดยเลือกติดตั้ง แฟ้มติดตั้งนี้

ระบบรับโปรแกรมผ่านทางเว็บ

โปรแกรมตรวจ

การคอมไพล์โปรแกรมตรวจ

ลง Dev C++ (4.9.9.2), ตั้ง include paths, แก้ compiler options เพิ่ม -D ON_WINDOWS, ลง libmysql DevPak (เลือก Tools -> Check for Updates/Packages)

การตั้งค่าเริ่มต้น

การสร้างบัญชีผู้ใช้

การเพิ่มโจทย์

การใช้งาน

รายละเอียดเพิ่มเติม

โครงสร้างฐานข้อมูล

ตารางและคอลัมน์ต่าง ๆ มีดังนี้

TABLE: user_info  ตารางผู้ใช้
COLUMNS:
  user_id  varchar(10)  รหัสประจำตัวผู้ใช้
  name     varchar(100) ชื่อ
  passwd   varchar(10)  รหัสผ่าน
  grp      varchar(10)  รหัสกลุ่ม (หรือศูนย์)
  type     char(1)      ประเภทผู้ใช้:
                          'C' คือผู้เข้าแข่งขัน (contestant) 
                          'S' คืออาจารย์ผู้ดูแลกลุ่ม (supervisor) และ 
                          'A' คือผู้ดูแลระบบ
TABLE: prob_info  ตารางปัญหา
COLUMNS:
  prob_id      varchar(10)   รหัสปัญหา
  name         varchar(100)  ชื่อปัญหา
  avail        char(1)       เปิดให้ส่ง ('Y' หรือ 'N')
  prob_order   int(10)       ลำดับในการแสดงผล ปัญหาจะแสดงตาม prob_order จากน้อยไปมาก
TABLE: submission  ตารางเก็บโปรแกรมที่ส่ง
COLUMNS:
  user_id  varchar(10)  
  prob_id  varchar(10)  
  sub_num  int(11)      หมายเลขของการส่ง (ส่งครั้งที่) นับสำหรับผู้ใช้และปัญหานี้ เริ่มจาก 1
  time     datetime     
  code     mediumtext   ซอร์สโปรแกรมที่ส่ง
PRIMARY KEY: (`user_id`,`prob_id`,`sub_num`)
TABLE: grd_queue  คิวรอการตรวจ
COLUMNS:
  q_id     int(10)      
  user_id  varchar(10)  
  prob_id  varchar(10)  
  sub_num  int(10)      
TABLE: grd_status  สถานะของการตรวจ
COLUMNS:
  user_id       varchar(10) 
  prob_id       varchar(10)
  res_id        int(10)      รหัสสถานะ ดูตาราง res_desc
  score         int(10)      
  grading_msg   varchar(50)  ข้อความจากการตรวจ (แสดงเป็นสตริงของอักษร P, -, x, และ T)
  compiler_msg  text         ข้อความจาก compiler
PRIMARY KEY: (`user_id`,`prob_id`)

ตารางประกอบ

TABLE: res_desc
COLUMNS:
  res_id     int(10)      
  res_text   varchar(45)  
DATA: 
  (1,'in queue'),
  (2,'grading'),
  (3,'accepted'),
  (4,'rejected');