Grader on Windows with TC

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา

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

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

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

ติดตั้งตรง

ใช้ AppServ

ยังไม่มีข้อมูล

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

โปรแกรมตรวจ

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

ลง 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');