📄 mainwin.pas
字号:
while (not rs.Eof) do begin
n:=rs.RecordCount;
rs.First;
m:=random(n);
rs.MoveBy(m);
if exec('select count(*) from paper2 where 知识点='+inttostr(rs['知识点'])+' and 序号='+inttostr(rs['序号'])).Fields[0].Value>0 then begin
rs.delete;
continue;
end;
adodataset1.Edit;
adodataset1.FieldValues['序号']:=rs['序号'];
//再修改分数
m:=rs['分数'];
n:=exec('select 每题分数 from dingzhi where tixing='+tx).Fields[0].value;
adodataset1.fieldValues['分数']:=m*n;
adodataset1.Post;
DBGrid2CellClick(nil);
Check2.Click;
break;
end;
if rs.Eof then showmessage('题库中已经找不到知识点、题型、难度都符合要求的试题,'+chr(13)+chr(10)+'请您改一改知识点或难度再换题!');
rs.Close;
rs.Free;
end;
procedure TForm1.BitBtn5Click(Sender: TObject);
var zh,xh,ti,A,B,C:string; i,j,tx:integer; rs,rst:_recordset;
begin
i:=0;j:=0;tx:=-1; ti:='一二三四五六七八九十';
memo1.Clear;
memo3.Clear;
adodataset1.First;
while not adodataset1.Eof do begin
zh:=inttostr(adodataset1.FieldValues['zhishidian']);
xh:=inttostr(adodataset1.FieldValues['序号']);
if adodataset1.fieldvalues['tixing']<>tx then begin
tx:=adodataset1.fieldvalues['tixing'];
inc(i);
rst:=exec('select * from jiancha where tixing='+inttostr(tx));
a:=rst.Fields['题量'].Value;
b:=floattostr(rst.Fields['总分'].Value);
c:=floattostr(rst.fields['每题分数'].Value);
memo1.Lines.Add(copy(ti,i*2-1,2)+'、 '+adodataset1.fieldvalues['题型']+'(共'+A+'小题,'+B+'分,每题'+C+'分)');
memo3.Lines.add(copy(ti,i*2-1,2)+'、 '+adodataset1.fieldvalues['题型']+'(共'+A+'小题,'+B+'分,每题'+C+'分)');
j:=0;
end;
inc(j);
rs:=exec('select top 1 * from shiti where 知识点='+zh+' and 序号='+xh);
memo1.Lines.Add('('+inttostr(j)+') '+rs.Fields['题干'].value);
memo3.Lines.add('('+inttostr(j)+') '+rs.fields['答案'].value);
adodataset1.Next;
end;
tabsheet3.Show;
end;
procedure TForm1.BitBtn6Click(Sender: TObject);
begin
if savedialog1.Execute then
memo1.Lines.SaveToFile(savedialog1.FileName);
end;
procedure TForm1.BitBtn7Click(Sender: TObject);
begin
if savedialog1.Execute then
memo3.Lines.SaveToFile(savedialog1.FileName);
end;
procedure TForm1.BitBtn8Click(Sender: TObject);
begin
exec('delete from dingzhi');
exec('insert into dingzhi select tixing,题型 from tixing order by tixing');
exec('insert into dingzhi select max(tixing)+1 as tixing,"合计" as 题型 from dingzhi');
adodataset3.Requery;
end;
procedure TForm1.BitBtn9Click(Sender: TObject);
begin
dbgrid3.Tag:=1;
dingzhiRefresh;
dbgrid3.Tag:=1;
dingzhiRefresh;
end;
procedure TForm1.DBGrid3KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var k:integer;
begin
k:=ord(key);
if (k=13)or(k=40)or(k=38)or(k=37)or(k=39)or(k=9) then begin
bitbtn9.Click;
end;
end;
procedure TForm1.DBGrid3MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
bitbtn9.Click;
end;
procedure TForm1.BitBtn10Click(Sender: TObject);
var i:integer;ds:tadodataset;
begin
ds:=tadodataset.Create(nil);
TabSheet1.Show;
bitbtn4.Click;
with adodataset3 do begin
First;
while not eof do begin
ds.Connection:=adoconnection1;
ds.CommandText:='select * from plan where tixing='+inttostr(fieldValues['tixing'])+' order by tixing,zhishidian,nandu';
ds.Open;
if not ds.Eof then begin
for i:=FieldValues['题量'] downto 1 do begin
ds.Edit;
ds.FieldValues['出题数量']:=ds.FieldValues['出题数量']+1;
ds.Next;
if ds.Eof then ds.First;
end;
end;
MoveBy(1);
ds.Close;
end;
end;
ds.Free;
adodataset2.Requery([]);
end;
procedure TForm1.DBGrid2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Form1.DBGrid2CellClick(nil);
end;
procedure TForm1.BitBtn11Click(Sender: TObject);
begin
adodataset4.close;
exec('delete from jiancha0');
exec('insert into jiancha0 select first(题型) as 题型,first(tixing) as tixing,sum(出题数量) as 题量 from plan group by tixing');
exec('delete from jiancha');
exec('insert into jiancha select jiancha0.tixing,jiancha0.题型,jiancha0.题量,dingzhi.每题分数 from jiancha0 left join dingzhi on dingzhi.tixing=jiancha0.tixing');
exec('update jiancha set 总分=题量*每题分数');
exec('insert into jiancha select 999 as tixing,"合计总分" as 题型,sum(总分) as 总分 from jiancha');
adodataset4.Open;
end;
procedure TForm1.Check2Click(Sender: TObject);
begin
adodataset8.close;
try exec('drop table jiancha2');except;end;
exec('select tixing,题型,sum(分数) as 分数 into jiancha2 from shiti1 group by tixing,题型');
exec('insert into jiancha2 select "合计" as 题型,sum(分数) as 分数 from shiti1');
adodataset8.Open;
end;
procedure TForm1.BitBtn13Click(Sender: TObject);
begin
if edit1.Text='35296-0017544' then memo1.MaxLength:=0;
end;
procedure TForm1.TabSheet5Show(Sender: TObject);
begin
mainface.Visible:=true;
end;
procedure TForm1.Image1Click(Sender: TObject);
begin
dingzhi.Show;
mainface.Visible:=false;
end;
procedure TForm1.BitBtn16Click(Sender: TObject);
begin
memo5.Clear;
memo6.Clear;
end;
procedure TForm1.BitBtn15Click(Sender: TObject);
var i,xuhao:integer; s,ws:ansistring; zhishidian,tixing,nandu:string;tb:tadotable;
begin
//检查试题格式
//题干不能有空行,不能有冒号行
ws:='①②③④⑤⑥⑦⑧⑨⑩';
if trim(memo5.Text)='' then begin showmessage('请填写题干!');exit;end;
for i:=0 to memo5.Lines.Count-1 do begin
s:=trim(memo5.Lines[i]);
if (s='')or(s=':') then begin
showmessage('题干第'+inttostr(i+1)+'行有错误!'+chr(10)+chr(13)+'不能有空行而且不能在一行只写一个冒号。');
exit;
end;
end;
//答案不能有空行
if trim(memo6.text)='' then begin showmessage('请填写答案!');exit;end;
for i:=0 to memo6.lines.count-1 do begin
s:=trim(memo6.Lines[i]);
if(i=0)and(s<>':')then showmessage('答案第一行必须是冒号!');
if s='' then begin
showmessage('答案第'+inttostr(i)+'有错误!'+chr(10)+chr(13)+'不能有空行。');
exit;
end;
if s=':' then begin
if memo6.lines.count-1=i then begin showmessage('最后一行的答案没有内容。');exit;end
else if trim(memo6.lines[i+1])=':' then begin showmessage('答案不能是连续两行冒号。');exit;end;
end;
end;
for i:=0 to memo6.Lines.Count-1 do begin
if trim(memo6.Lines[i])=':' then begin
memo6.lines[i]:=copy(ws,1,2);
delete(ws,1,2);
end;
end;
//没有问题,加入题库
zhishidian:=adodataset5.FieldByName('zhishidian').AsString;
tixing :=adodataset6.fieldbyname('tixing').AsString;
nandu :=adodataset7.fieldbyname('nandu').AsString;
xuhao:=0;
try
xuhao:=exec('select max(序号) as 序号 from shiti where 知识点='+zhishidian).Fields.Item['序号'].Value;
except
end;
xuhao:=xuhao+1;
tb:=tadotable.Create(nil);
tb.Connection:=adoconnection1;
tb.TableName:='shiti';
tb.Open;
try
tb.InsertRecord([zhishidian,xuhao,tixing,nandu,memo5.Text,memo6.Text]);
bitbtn16.Click;
except
on E: Exception do begin
showmessage(E.Message);
end;
end;
end;
procedure TForm1.BitBtn14Click(Sender: TObject);
var imp:timporter;msg:widestring;
begin
imp:=timporter.Create;
msg:=imp.Import(bitbtn14.Hint,dbfile);
if msg='' then showmessage('导入成功!')
else showmessage('导入失败!'+chr(13)+chr(10)+msg);
end;
procedure TForm1.BitBtn17Click(Sender: TObject);
begin
bitbtn1.Click;
bitbtn14.Click;
end;
procedure TForm1.BitBtn18Click(Sender: TObject);
begin
adodataset1.Delete;
DBGrid2CellClick(nil);
Check2.Click;
end;
procedure TForm1.ShockwaveFlash1FSCommand(ASender: TObject; const command,
args: WideString);
begin
if command='goto' then begin
mainface.Visible:=false;
pagecontrol1.ActivePageIndex:=strtoint(args);
end;
end;
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
adodataset9.Close;
adodataset9.CommandText:='select * from plan where tixing='+inttostr(adodataset2.FieldValues['tixing'])+' order by tixing,zhishidian,nandu';
adodataset9.Open;
end;
procedure TForm1.DBGrid9CellClick(Column: TColumn);
begin
try adodataset10.post; except;end;
adodataset10.Close;
adodataset10.CommandText:='select * from plan where tixing='+inttostr(adodataset2.FieldValues['tixing'])+' and zhishidian='+inttostr(adodataset9.FieldValues['zhishidian'])+' order by tixing,zhishidian,nandu';
adodataset10.Open;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -