--------------------------------------
-- ONLINE EXAM MANAGEMENT SYSTEM   ---
-- Database Schema and Sample Data ---
-- Designed by: Raj Sunderraman    ---
-- 12 September, 2006              ---
--------------------------------------
drop table exam cascade constraints;
create table exam (
  eno number(5),
  etitle varchar2(50),
  timeAllowed  number(8), -- minutes 
  numberOfQuestionsPerPage number(3), 
  primary key (eno)
);

drop table question cascade constraints;
create table question (
  eno number(5),
  qno number(5),
  qtext varchar2(2048), -- maybe be CLOB object
  correctAnswer char(1),  -- must be one of the options  
  foreign key (eno) references exam,
  primary key (eno,qno)
);

drop table answerOption cascade constraints;
create table answerOption (
  eno number(5), 
  qno number(5),
  ono char(1) check (ono in ('A','B','C','D','E')),
  optionText varchar2(256),
  foreign key (eno,qno) references question,
  primary key (eno,qno,ono)
);
 
drop table enrolls cascade constraints;
create table enrolls (
  uno number(5),
  eno number(5),
  startTime date,
  finishTime date,
  foreign key (uno) references users,
  foreign key (eno) references exam,
  primary key (uno,eno)
);

drop table userResponse cascade constraints;
create table userResponse (
  uno number(5),
  eno number(5),
  qno number(5),
  response char(1) 
    check (response in ('A','B','C','D','E','N')), -- N for No Answer
  foreign key (uno,eno) references enrolls,
  foreign key (eno,qno) references question,
  primary key (uno,eno,qno)
);

-- Some data

insert into exam values (3,'Elementary History',10,3);

insert into question values
  (3,1,'The Battle of Gettysburg was fought during which war?','C');
insert into answerOption values (3,1,'A','World War II'); 
insert into answerOption values (3,1,'B','The Revolutionary War');
insert into answerOption values (3,1,'C','The Civil War');
insert into answerOption values (3,1,'D','World War I');
 
insert into question values
  (3,2,'Neil Armstrong and Buzz Aldrin walked how many \n' ||
       'minutes on the moon in 1696?','B') ;
insert into answerOption values (3,2,'A','123'); 
insert into answerOption values (3,2,'B','None'); 
insert into answerOption values (3,2,'C','10'); 
insert into answerOption values (3,2,'D','51'); 
 
insert into question values
  (3,3,'Which Presidents held office during World War II?','D'); 
insert into answerOption values (3,3,'A','Franklin D. Roosevelt'); 
insert into answerOption values (3,3,'B','Dwight D. Eisenhower'); 
insert into answerOption values (3,3,'C','Harry Truman'); 
insert into answerOption values (3,3,'D','Both A and C'); 
 
insert into question values
  (3,4,'In a communist economic system, people:','B'); 
insert into answerOption values (3,4,'A','Are forced to work as slaves'); 
insert into answerOption values (3,4,'B','Work for the common good'); 
insert into answerOption values (3,4,'C','Work from home computers'); 
insert into answerOption values (3,4,'D','Don''t work'); 
 
 
insert into question values
  (3,5,'Which president did not die while in office?','D'); 
insert into answerOption values (3,5,'A','John F. Kennedy'); 
insert into answerOption values (3,5,'B','Franklin D. Roosevelt'); 
insert into answerOption values (3,5,'C','Abraham Lincoln'); 
insert into answerOption values (3,5,'D','Ronald Reagan'); 
insert into answerOption values (3,5,'E','James A. Garfield'); 
 
insert into question values
  (3,6,'Which state refused to attend the Constitutional Convention \n' ||
       'in 1787 because it didn''t want the United States government \n' ||
       'to interfere with already established state affairs?','A'); 
insert into answerOption values (3,6,'A','Rhode Island'); 
insert into answerOption values (3,6,'B','New Hampshire'); 
insert into answerOption values (3,6,'C','New Jersey'); 
insert into answerOption values (3,6,'D','New York'); 

insert into question values
  (3,7,'Who founded Buddhism?','A'); 
insert into answerOption values (3,7,'A','Siddharta Gautama'); 
insert into answerOption values (3,7,'B','Jesus Christ'); 
insert into answerOption values (3,7,'C','Mahatma Gandhi'); 
insert into answerOption values (3,7,'D','Muhammad'); 
 
insert into question values
  (3,8,'Where is India?','D'); 
insert into answerOption values (3,8,'A','Australia'); 
insert into answerOption values (3,8,'B','America'); 
insert into answerOption values (3,8,'C','Africa'); 
insert into answerOption values (3,8,'D','Asia'); 
 
 
insert into question values
  (3,9,'What is the dominant religion in India?','B'); 
insert into answerOption values (3,9,'A','Islam'); 
insert into answerOption values (3,9,'B','Hinduism'); 
insert into answerOption values (3,9,'C','Christianity'); 
insert into answerOption values (3,9,'D','Buddhism'); 
 
insert into question values
  (3,10,'Near which river did archaeologists find India''s \n' ||
        'first civilization?','B'); 
insert into answerOption values (3,10,'A','The Tiber River'); 
insert into answerOption values (3,10,'B','The Indus River'); 
insert into answerOption values (3,10,'C','The Yellow River'); 
insert into answerOption values (3,10,'D','The Nile River'); 


insert into exam values (1,'Java Programming',60,1);

insert into question values
  (1,1,'Choose the operations that can be performed on String objects:(A) +\n(B) + =\n(C) -\n(D) %\n(E) ^','B');
insert into question values
  (1,2,'What will be the result of the expression\na % b\nwhen a and b are of type int and their values are a = -17 and b = -6?','A');
insert into question values
  (1,3,'What will be the result of the expression\na % b\nwhen a and b are of type int and their values are a = 10 and b = 6?','B');
insert into question values
  (1,4,'Consider the following code:\nint x, y, z;\ny = 1;\nz = 5;\nx = 0 - (++y) + z++;\nAfter execution of this, what will be the values of x, y and z?','C');
insert into question values
  (1,5,'Identify the statements that are correct:\n(A) int a = 13, a>>2 = 3\n(B) int b = -8, b>>1 = -4\n(C) int a = 13, a>>>2 = 3\n(D) int b = -8, b>>>1 = -4','E');
insert into question values
  (1,6,'If not assigned a value, a variable of type char has the following default value:','A');
insert into question values
  (1,7,'What will be the value of a after execution of the following statements:\nint a = 23, b = 34;\na = ((a < b) ? (b + a) : (b - a);','B');
insert into question values
  (1,8,'Which of the following is not a hexadecimal number?\n(A) 999\n(B) (hex)23\n(C) 0x556\n(D) 0x1F2','C');
insert into question values
  (1,9,'if(check4Biz(storeNum) != null) {}\nReferring to the above, what datatype could be returned by method check4Biz()?','D');
insert into question values
  (1,10,'Select the invalid assignment statements from the following:\n(A) float x = 238.88;\n(B) double y = 0x443;\n(C) int n = (int) true;\n(D) long m =778645;','A');
insert into question values
  (1,11,'int j;\nfor(int i=0;i<14;i++) {\nif(i<10) {\nj = 2 + i;\n}\nSystem.out.println("j: " + j + " i: " + i);\n}\nWhat is WRONG with the above code?','E');
insert into question values
  (1,12,'Consider the following code:\nclass ClassA\n{\npublic static void main(String args [ ])\n{\nClassB b = classB();\n}\nClassA(int x) { }\n}\nclass ClassB extends ClassA\n{\n}\nWhat will happen when we compile and run this code?','A');
insert into question values
  (1,13,'The keywords reserved but not used in the initial version of Java are:\n(A) union\n(B) const\n(C) inner\n(D) goto\n(E) boolean\n(F) synchronized','C');
insert into question values
  (1,14,'We would like to make a member of a class visible in all subclasses regardless of what package they are in. Which one of the following keywords would achieve this?','D');
insert into question values
  (1,15,'Which of the following are not keywords?\n(A) NULL\n(B) implements\n(C) protected\n(D) extended\n(E) string','B');

insert into answerOption values
  (1,1,'A','(D) & (E)');
insert into answerOption values
  (1,1,'B',' (A) & (B)');
insert into answerOption values
  (1,1,'C','(D)');
insert into answerOption values
  (1,1,'D','(A)');
insert into answerOption values
  (1,1,'E','None of these');
insert into answerOption values
  (1,2,'A','-17');
insert into answerOption values
  (1,2,'B','5');
insert into answerOption values
  (1,2,'C','3');
insert into answerOption values
  (1,2,'D','-5');
insert into answerOption values
  (1,2,'E','None of these');
insert into answerOption values
  (1,3,'A','1.66');
insert into answerOption values
  (1,3,'B','4');
insert into answerOption values
  (1,3,'C','2');
insert into answerOption values
  (1,3,'D','1');
insert into answerOption values
  (1,3,'E','None of these');
insert into answerOption values
  (1,4,'A','x = 4, y = 1, z = 5');
insert into answerOption values
  (1,4,'B',' x = -7, y = 1, z = 5');
insert into answerOption values
  (1,4,'C','x = 3, y = 2, z = 6');
insert into answerOption values
  (1,4,'D',' x = 4, y = 2, z = 6');
insert into answerOption values
  (1,4,'E',' x = 8, y = 2, z = 1');
insert into answerOption values
  (1,5,'A','(C) & (D) ');
insert into answerOption values
  (1,5,'B',' (A), (B) & (C) ');
insert into answerOption values
  (1,5,'C','(A), (B), (C) & (D)');
insert into answerOption values
  (1,5,'D','(A) & (B) ');
insert into answerOption values
  (1,5,'E','None of the above');
insert into answerOption values
  (1,6,'A','\uffff');
insert into answerOption values
  (1,6,'B','\u0000');
insert into answerOption values
  (1,6,'C','" " (space)');
insert into answerOption values
  (1,6,'D','\u0001');
insert into answerOption values
  (1,6,'E','None of the above');
insert into answerOption values
  (1,7,'A','23');
insert into answerOption values
  (1,7,'B','Error. Cannot be executed.');
insert into answerOption values
  (1,7,'C','57');
insert into answerOption values
  (1,7,'D','11');
insert into answerOption values
  (1,7,'E','34');
insert into answerOption values
  (1,8,'A','(A), (B) & (C)');
insert into answerOption values
  (1,8,'B','(C)');
insert into answerOption values
  (1,8,'C','(A) & (B) ');
insert into answerOption values
  (1,8,'D','(A)');
insert into answerOption values
  (1,8,'E','(D)');
insert into answerOption values
  (1,9,'A','Boolean');
insert into answerOption values
  (1,9,'B','Int');
insert into answerOption values
  (1,9,'C','String');
insert into answerOption values
  (1,9,'D','Char');
insert into answerOption values
  (1,9,'E','Byte');
insert into answerOption values
  (1,10,'A','(A) & (C)');
insert into answerOption values
  (1,10,'B','(A) & (B)');
insert into answerOption values
  (1,10,'C','(B) ');
insert into answerOption values
  (1,10,'D','(B) & (D) ');
insert into answerOption values
  (1,10,'E','(D)');
insert into answerOption values
  (1,11,'A','Integer "j" is not initialized.');
insert into answerOption values
  (1,11,'B','Nothing.');
insert into answerOption values
  (1,11,'C','You cannot declare integer i inside the for-loop declaration.');
insert into answerOption values
  (1,11,'D','The syntax of the "if" statement is incorrect.');
insert into answerOption values
  (1,11,'E','You cannot print integer values without converting them to strings.');
insert into answerOption values
  (1,12,'A','Will compile and run successfully ');
insert into answerOption values
  (1,12,'B','Error. ClassA does not define a no-argument constructor ');
insert into answerOption values
  (1,12,'C','Error. There is no code in the constructor ClassA(int x) ');
insert into answerOption values
  (1,12,'D','Error. ClassB does not define a no-argument constructor ');
insert into answerOption values
  (1,12,'E','Error. There is no code in the class ClassB ');
insert into answerOption values
  (1,13,'A','(C) & (E) ');
insert into answerOption values
  (1,13,'B','(B),(C) & (D)');
insert into answerOption values
  (1,13,'C','(A), (C) & (E)');
insert into answerOption values
  (1,13,'D','All of these. ');
insert into answerOption values
  (1,13,'E','None of these. ');
insert into answerOption values
  (1,14,'A','private ');
insert into answerOption values
  (1,14,'B','public');
insert into answerOption values
  (1,14,'C','protected');
insert into answerOption values
  (1,14,'D','private OR protected');
insert into answerOption values
  (1,14,'E','All of the above');
insert into answerOption values
  (1,15,'A','(C), (D) & (E)');
insert into answerOption values
  (1,15,'B','(D) ');
insert into answerOption values
  (1,15,'C','(A), (D) & (E)');
insert into answerOption values
  (1,15,'D','(D) & (E) ');
insert into answerOption values
  (1,15,'E','(A)');
