图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