⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainwin.pas

📁 C语言试题库及出题系统,可以导入试题,定制试卷,出题及修改试题,同时带上标准答案.
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  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 + -