本程序实现一个简单的选课功能,涉及两张表:course(课程信息)和sc(选课记录),表结构如下
course(cno 课号,cname 课名,credit 学分 ctime 时间 quota 名额)
sc(sno 学号,cno 课号,grade 成绩)
在用户界面上,操作员选中一门课,在edit1框中输入学号后,按"选课"按钮完成选课功能,即在sc表中插入一条选课记录,并将course表中该课程名额减1
该界面要实现以下合法性检查:
   当该学生已经选过此课,不能再选
   当课程名额为0,不能再选
在form1上建立数据库组建对象及连接关系如下:
Database1--Table1(与course表相连)--Datasourse1--DBGrid1(显示课程信息)
Database1--Query1、query2
其中Table1建立了永久字段:Table1cno(课号)、Table1cname(课程名)、Table1quota(名额)等。
query1的SQL语句如下
   select cno
   from sc
   where sno=:sno and cno=:cno
query2的SQL语句如下
   insert into sc
   values(:sno,:cno,null)
程序代码
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender:TObject);//选课
begin
   query1.close;
   query1.ParambyName('sno').Value:=_______  1
   query1.ParambyName('cno').Value:=tablelcno.Value;
   query1.open;
   if ________2  <> null then
   begin
      ShowMessage('已经选过该课程');
      exit;
   end;
   if _________3  =0 then
   begin
     Showmessage('已经没有名额');
     exit;
   end;
   query2.close;
   query2.ParambyName('sno').Value:=edit1.text;
   query2.ParambyName('cno').Value:=tablecno.Value;
   query2._______4;
   Table1.________5;
   table1quota.Value:=table1quota.Value-1;//课程名额减去1
   table1.post;
end;