begin
//未选择课程时,不允许提交 if adoquery3.RecordCount=0 then begin
showmessage('请先选择一门课程'); exit; end;
num:=trim(dbgrid2.Fields[0].Text);//保存课序号
//判断所选的课程是否已选和是否与其他已经选的课程有时间冲突 adoquery1.Close; adoquery1.SQL.Clear;
adoquery1.SQL.Add('select sksjt,sksjj from KCB');
adoquery1.SQL.Add('where kcbh='''+dbgrid2.Fields[1].Text+''''); adoquery1.Open;
while not adoquery1.Eof do begin
day:=adoquery1.fieldbyname('sksjt').AsInteger; section:=adoquery1.fieldbyname('sksjj').AsInteger; adoquery2.First;
while not adoquery2.Eof do begin
//判断课程是否已选
if (trim(adoquery2.fieldbyname('kxh').AsString)=num) then begin
showmessage('所选的课程:'+trim(adoquery2.fieldbyname('kcmc').AsString)+' 已在课表中,请选择其他课程'); exit; end;
//判断课程是否与已选课程有时间冲突 if
(adoquery2.fieldbyname('sksjt').AsInteger=day)and(adoquery2.fieldbyname('sksjj').A
31
sInteger=section) then begin
showmessage('
所
选
课
程
的
上
课
时
间
与
已
选
的
'+trim(adoquery2.fieldbyname('kcmc').AsString)+' 冲突!'); exit; end;
adoquery2.Next; end;
adoquery1.Next; end; //选课
adocommand1.CommandText:='insert
values('''+id+''','''+trim(dbgrid2.Fields[0].Text)+''')'; adocommand1.Execute; listcourse(id);//刷新数据表 end;
//-------------删除已选课程-------------
procedure TCourseElect.BitBtn3Click(Sender: TObject); begin
if application.MessageBox('确实删除所选课程?','确定删除',MB_OKCANCEL)=IDOK then begin
adocommand1.CommandText:='delete
from
XKB
where
into
XKB([xh],[kxh])
(xh='''+trim(dbgrid3.Fields[0].Text)+''')and(kxh='''+trim(dbgrid3.Fields[1].Text)+''')'; adocommand1.Execute; listcourse(id);//刷现列表 end; end;
procedure TCourseElect.FormClose(Sender: TObject;
32
var Action: TCloseAction); begin action:=cafree; end;
procedure TCourseElect.Button1Click(Sender: TObject); begin
adoquery3.Close; adoquery3.SQL.Clear; adoquery3.SQL.Add('select
KCB.kxh,KCXX.kcbh,kcmc,js,kkxb,pym,KCB.sksjt,sksjj,skdd from KCB,KCXX where KCXX.kcbh=KCB.kcbh'); adoquery3.Open;
DBGrid2.DataSource.DataSet:=adoquery3; DBGrid2.DataSource.DataSet.Active:=false; DBGrid2.DataSource.DataSet.Active:=true; end;
procedure TCourseElect.FormShow(Sender: TObject); begin
adoquery3.Close; adoquery3.SQL.Clear; adoquery3.SQL.Add('select
XKB.kxh,KCXX.kcbh,kcmc,js,kkxb,pym,KCB.sksjt,sksjj,skdd
from
KCB,XSXX,KCXX,XKB where XKB.kxh=KCB.kxh and XKB.xh=XSXX.xh and KCXX.kcbh=KCB.kcbh'); adoquery3.Open; end; end.
图4.6 课表查询模块的系统截图
33
核心代码:
//------------根据输入的学号显示学生信息和课表------------- procedure TSchedule.Edit1KeyPress(Sender: TObject; var Key: Char); //var i,j:integer; //rt:Trect; begin
//回车输入,将学生的信息显示在文本框中 if key=#13 then begin
id:=trim(edit1.Text); adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.Add('select
XSXX.xh,xm,BJXX.bjmc,KCXX.kcmc,KCB.sksjt,
sksjj,skdd from KCXX,KCB,XSXX,BJXX where KCXX.kcbh=KCB.kcbh and BJXX.bjbh=XSXX.bjbh and xh='''+id+'''order by sksjt asc'); adoquery1.Open;
edit2.Text:=trim(adoquery1.fieldbyname('xm').AsString); edit3.Text:=trim(adoquery1.fieldbyname('bjmc').AsString); if adoquery1.RecordCount=0 then begin
34
showmessage('学号输入错误'); edit1.Text:=''; exit; end else begin
DBGrid1.DataSource.DataSet:=adoquery1; DBGrid1.DataSource.DataSet.Active:=false; DBGrid1.DataSource.DataSet.Active:=true; end; end; end; end.
图4.7 成绩输入模块的系统截图
35
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Java学生选课系统实验报告(7)在线全文阅读。
相关推荐: