📄 globalu.~pas
字号:
sqlstr := format('insert into 判断题 (学号,题目内容,标准答案,标准理由) values (''%s'',''%d、%s'',''%s'',''%s'')',
[StudentInfo.ID,
I,
dmglobal.Query_Exec.FieldByName('题目内容').asstring,
dmglobal.Query_Exec.FieldByName('标准答案').asstring,
dmglobal.Query_Exec.FieldByName('标准理由').asstring
]);
Sql.Add(sqlstr);
Execsql();
Close;
dmglobal.Query_Exec.Next;
Inc(I);
end;
finally
free;
end;
dmglobal.Query_Exec.Close;
dmglobal.Query_Exec.SQL.Clear;
end;
//获得系统设置
function GetSysInfo(): Boolean;
begin
result := false;
try
dmglobal.Query_Exec.Close;
dmglobal.Query_Exec.SQL.Clear;
dmglobal.Query_Exec.sql.Add('select * from 考试设置');
dmglobal.Query_Exec.open;
if dmglobal.Query_Exec.eof and dmglobal.Query_Exec.bof then exit;
SysSetup.TestTimeCnt := dmglobal.Query_Exec.FieldByName('答题时间').AsInteger;
SysSetup.SingleChoiceCnt := dmglobal.Query_Exec.FieldByName('单选题条数').AsInteger;
SysSetup.SCMark := dmglobal.Query_Exec.FieldByName('单选题总分').AsInteger;
SysSetup.SCItemCnt := dmglobal.Query_Exec.FieldByName('单选题选项数').AsInteger;
SysSetup.SCComment := dmglobal.Query_Exec.FieldByName('单选题说明').AsString;
SysSetup.MultiChoiceCnt := dmglobal.Query_Exec.FieldByName('多选题条数').AsInteger;
SysSetup.MCMark := dmglobal.Query_Exec.FieldByName('多选题总分').AsInteger;
SysSetup.MCItemCnt := dmglobal.Query_Exec.FieldByName('多选题选项数').AsInteger;
SysSetup.MCComment := dmglobal.Query_Exec.FieldByName('多选题说明').AsString;
SysSetup.JudgeCnt := dmglobal.Query_Exec.FieldByName('多选题条数').AsInteger;
SysSetup.JMark := dmglobal.Query_Exec.FieldByName('多选题总分').AsInteger;
SysSetup.JComment := dmglobal.Query_Exec.FieldByName('多选题说明').AsString;
dmglobal.Query_Exec.Close;
dmglobal.Query_Exec.SQL.Clear;
Result := true;
except
on E: Exception do
begin
MessageBox(Application.Handle,pchar(E.Message),'提示',32);
end;
end;
end;
//////////////////////////////////////
//
// 根据学号获得靠试信息
//
// 返回: 0 成功,1无此记录,2意外错误
//
///////////////////////////////////////
function GetStudentInfoByID(sID: string): integer;
var
sqlstr: string;
begin
result := 2;
try
dmglobal.Query_Exec.Close;
dmglobal.Query_Exec.SQL.Clear;
sqlstr := format('select * from 考试记录 where 考生学号=''%s''',[Trim(sID)]);
dmglobal.Query_Exec.SQL.Add(sqlstr);
dmglobal.Query_Exec.Open;
if dmglobal.Query_Exec.eof and dmglobal.Query_Exec.bof then
begin
result := 1;
exit;
end;
StudentInfo.LoginTime := dmglobal.Query_Exec.FieldByName('登录时间').AsDateTime;
StudentInfo.Team := dmglobal.Query_Exec.FieldByName('考生区队').AsString;
StudentInfo.Name := dmglobal.Query_Exec.FieldByName('考生姓名').AsString;
StudentInfo.ID := dmglobal.Query_Exec.FieldByName('考生学号').AsString;
StudentInfo.StartTime := dmglobal.Query_Exec.FieldByName('开始时间').AsDateTime;
StudentInfo.RemainTime := dmglobal.Query_Exec.FieldByName('剩余时间').AsInteger;
StudentInfo.SubTime := dmglobal.Query_Exec.FieldByName('交卷时间').AsDateTime;
StudentInfo.score := dmglobal.Query_Exec.FieldByName('总得分').AsFloat;
dmglobal.Query_Exec.Close;
dmglobal.Query_Exec.SQL.Clear;
Result := 0;
except
on E: Exception do
begin
MessageBox(Application.Handle,pchar(E.Message),'提示',32);
end;
end;
end;
function GetPassword(): string;
begin
result := '';
try
dmglobal.Query_Exec.Close;
dmglobal.Query_Exec.SQL.Clear;
dmglobal.Query_Exec.sql.Add('select 管理员密码 from 考试设置');
dmglobal.Query_Exec.open;
if dmglobal.Query_Exec.eof and dmglobal.Query_Exec.bof then exit;
Result := dmglobal.Query_Exec.Fields[0].asstring;
dmglobal.Query_Exec.Close;
dmglobal.Query_Exec.SQL.Clear;
except
on E: Exception do
begin
MessageBox(Application.Handle,pchar(E.Message),'提示',32);
end;
end;
end;
//评分
function GetScore(var TotalScore,SCScore,MCScore,JScore: real): boolean;
var
ScorePer: real;
sqlstr: string;
begin
result := False;
TotalScore := 0;
SCScore := 0;
MCScore := 0;
JScore := 0;
try
//评分单选题
ScorePer := SysSetup.SCMark / SysSetup.SingleChoiceCnt;
dmglobal.Query_Exec.Close;
dmglobal.Query_Exec.SQL.Clear;
dmglobal.Query_Exec.SQL.Add('select * from 单选题 where 学号='''+StudentInfo.ID+'''');
dmglobal.Query_Exec.Open;
dmglobal.Query_Exec.First;
while not dmglobal.Query_Exec.Eof do
begin
if dmglobal.Query_Exec.FieldByName('学生答案').AsString = dmglobal.Query_Exec.FieldByName('标准答案').AsString then
SCScore := SCScore + ScorePer;
dmglobal.Query_Exec.Next;
end;
dmglobal.Query_Exec.Close;
dmglobal.Query_Exec.SQL.Clear;
//评分复选题
ScorePer := SysSetup.MCMark / SysSetup.MultiChoiceCnt;
dmglobal.Query_Exec.Close;
dmglobal.Query_Exec.SQL.Clear;
dmglobal.Query_Exec.SQL.Add('select * from 复选题 where 学号='''+StudentInfo.ID+'''');
dmglobal.Query_Exec.Open;
dmglobal.Query_Exec.First;
while not dmglobal.Query_Exec.Eof do
begin
if (dmglobal.Query_Exec.FieldByName('学生答案A').AsBoolean = dmglobal.Query_Exec.FieldByName('标准答案A').AsBoolean) and
(dmglobal.Query_Exec.FieldByName('学生答案B').AsBoolean = dmglobal.Query_Exec.FieldByName('标准答案B').AsBoolean) and
(dmglobal.Query_Exec.FieldByName('学生答案C').AsBoolean = dmglobal.Query_Exec.FieldByName('标准答案C').AsBoolean) and
(dmglobal.Query_Exec.FieldByName('学生答案D').AsBoolean = dmglobal.Query_Exec.FieldByName('标准答案D').AsBoolean) and
(dmglobal.Query_Exec.FieldByName('学生答案E').AsBoolean = dmglobal.Query_Exec.FieldByName('标准答案E').AsBoolean) and
(dmglobal.Query_Exec.FieldByName('学生答案F').AsBoolean = dmglobal.Query_Exec.FieldByName('标准答案F').AsBoolean) and
(dmglobal.Query_Exec.FieldByName('学生答案G').AsBoolean = dmglobal.Query_Exec.FieldByName('标准答案G').AsBoolean) and
(dmglobal.Query_Exec.FieldByName('学生答案H').AsBoolean = dmglobal.Query_Exec.FieldByName('标准答案H').AsBoolean) then
MCScore := MCScore + ScorePer;
dmglobal.Query_Exec.Next;
end;
dmglobal.Query_Exec.Close;
dmglobal.Query_Exec.SQL.Clear;
//评分判断题
ScorePer := SysSetup.SCMark / SysSetup.SingleChoiceCnt;
dmglobal.Query_Exec.Close;
dmglobal.Query_Exec.SQL.Clear;
dmglobal.Query_Exec.SQL.Add('select * from 判断题 where 学号='''+StudentInfo.ID+'''');
dmglobal.Query_Exec.Open;
dmglobal.Query_Exec.First;
while not dmglobal.Query_Exec.Eof do
begin
if dmglobal.Query_Exec.FieldByName('学生答案').asboolean = dmglobal.Query_Exec.FieldByName('标准答案').asstring then
JScore := JScore + ScorePer;
dmglobal.Query_Exec.Next;
end;
dmglobal.Query_Exec.Close;
dmglobal.Query_Exec.SQL.Clear;
TotalScore := SCScore + MCScore + JScore;
sqlstr := format('update 考试记录 set 单选题得分=%3.2f,复选题得分=%3.2f,判断题得分=%3.2f,总得分=%3.2f',
[SCScore,MCScore,JScore,TotalScore]) ;
dmglobal.Query_Exec.SQL.Add(sqlstr);
dmglobal.Query_Exec.ExecSQL();
dmglobal.Query_Exec.Close;
dmglobal.Query_Exec.SQL.Clear;
result := true;
except
on E: exception do
raise exception.Create(e.Message);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -