Java学生选课系统实验报告 下载本文

图4.4 课程信息维护模块的系统截图 图4.3 学生信息维护模块的系统截图

由于上面的二个模块都是由一个父窗体继承而来,则它们的核心代码都一致。该模块的核心代码:

//----------根据窗口中查询条件的设置来查询-------------- procedure TParent.BitBtn1Click(Sender: TObject); var

(*设置一个整数,其二进制的三位分别代表查询条件1到3

当某一个查询条件可见,也就是要使用这个条件时,相应的位置为1,否则置0 例如第1,2个条件要使用而第3个不使用时,该整数二进制的值为110,也就是6*)

condition:integer; begin

//初始化该参数,设为7,二进制数为111 condition:=7;

//如果第1个条件不可用,则将该位置0,方法是和整数3(二进制011)进行与操作

25

if label3.Visible=false then condition:=(condition)and(3);

//如果第2个条件不可用,则将该位置0,方法是和整数5(二进制101)进行与操作

if label4.Visible=false then condition:=(condition)and(5);

//如果第3个条件不可用,则将该位置0,方法是和整数6(二进制110)进行与操作

if label5.Visible=false then condition:=(condition)and(6);

if condition=7 then//三个查询条件都存在的情况 begin

adoquery1.Close; adoquery1.SQL.Clear;

adoquery1.SQL.Add('select * from '+adotable1.TableName);

adoquery1.SQL.Add(' where('+label3.Caption+' like ''%'+edit1.Text+'%'')'); adoquery1.SQL.Add('and('+label4.Caption+' like ''%'+edit2.Text+'%'')'); adoquery1.SQL.Add('and('+label5.Caption+' like ''%'+edit3.Text+'%'')'); adoquery1.Open;

//将查询得到的数据通过clone命令复制到adotable中去 adotable1.Clone(adoquery1,ltUnspecified); end;

if condition=6 then//只存在两个查询条件的情况 begin

adoquery1.Close; adoquery1.SQL.Clear;

adoquery1.SQL.Add('select * from '+adotable1.TableName);

adoquery1.SQL.Add(' where('+label3.Caption+' like ''%'+edit1.Text+'%'')'); adoquery1.SQL.Add('and('+label4.Caption+' like ''%'+edit2.Text+'%'')'); adoquery1.Open;

//将查询得到的数据通过clone命令复制到adotable中去

26

adotable1.Clone(adoquery1,ltUnspecified); end;

if condition=4 then //只存在一个查询条件的情况 begin

adoquery1.Close; adoquery1.SQL.Clear;

adoquery1.SQL.Add('select * from '+adotable1.TableName);

adoquery1.SQL.Add(' where('+label3.Caption+' like ''%'+edit1.Text+'%'')'); adoquery1.Open;

//将查询得到的数据通过clone命令复制到adotable中去 adotable1.Clone(adoquery1,ltUnspecified); end; end;

27

图4.5 学生选课模块的系统截图

学生选课界面的核心代码:

procedure TCourseElect.Edit1KeyPress(Sender: TObject; var Key: Char); begin

if not (key in ['0'..'9',#8,#13]) then //该文本框中只能输入数字 begin key:=#0; exit; end;

//回车输入,将在籍学生的信息显示在文本框中 if key=#13 then begin

id:=trim(edit1.Text); //清除上一次的数据 edit2.Clear; edit3.Clear; adoquery2.Close; adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.Add('select XSXX,BJXX');

adoquery1.SQL.Add('where (XSXX.xh='''+id+''')and(XSXX.bjbh=BJXX.bjbh)'); adoquery1.Open;

if trim(adoquery1.FieldByName('xjbh').AsString)='01'then begin

XSXX.xm,BJXX.bjmc,XSXX.xjbh

from

28