📄 uselecourse.pas
字号:
unit uSeleCourse;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, Grids, DBGrids, ExtCtrls, DBCtrls, DB;
type
TfrmSeleCourse = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Label1: TLabel;
Button1: TButton;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Panel3: TPanel;
Panel4: TPanel;
DBGrid1: TDBGrid;
Label5: TLabel;
MaskEdit1: TMaskEdit;
Button2: TButton;
Panel5: TPanel;
Panel6: TPanel;
Label6: TLabel;
Label7: TLabel;
DBGrid2: TDBGrid;
Button3: TButton;
Label8: TLabel;
Label9: TLabel;
Button4: TButton;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
ComboBox1: TComboBox;
DBEdit1: TDBEdit;
DataSource1: TDataSource;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmSeleCourse: TfrmSeleCourse;
implementation
uses dm3; //引用数据模块单元
{$R *.dfm}
//根据学号查询学生信息
procedure TfrmSeleCourse.Button1Click(Sender: TObject);
var
sno:integer;
begin
sno:=strtoint(combobox1.Text);//取得学号
datamodule3.snotable.Open;
if datamodule3.snotable.Locate('sno',sno,[]) then
//如果student.db存在该学号
begin
datamodule3.snoquery.Close;
datamodule3.snoquery.ParamByName('sno').Value:=sno;
datamodule3.snoquery.Prepare;
datamodule3.snoquery.Open;
//统计该学生所修过的学分
datamodule3.creditalquery.Close;
datamodule3.creditalquery.ParamByName('sno').Value:=sno;
datamodule3.creditalquery.Prepare;
datamodule3.creditalquery.Open;
//在dbgrid中显示该学生当前所选的课程
datamodule3.SCquery.Close;
datamodule3.SCquery.ParamByName('sno').Value:=sno;
datamodule3.SCquery.Open;
//显示选择课程统计信息
datamodule3.statisticsQuery.Close;
datamodule3.statisticsQuery.ParamByName('sno').Value:=sno;
datamodule3.statisticsQuery.Open;
button3.Enabled:=true;
button4.Enabled:=true;
end
else
begin
//如果不存在该学号,则将“选课”、“退选”按钮设置为无效
button3.Enabled:=false;
button4.Enabled:=false;
showmessage('学号输入错误,请重新输入');
exit;
end;
end;
//查询可供选修的课程
procedure TfrmSeleCourse.Button2Click(Sender: TObject);
var
cno:integer;
begin
if maskedit1.Text='' then
begin
showmessage('请输入课程号!');
exit;
end;
cno:=strtoint(maskedit1.Text);//查询课程号
if not datamodule3.coursetable.Locate('cno',cno,[]) then
showmessage('没有查找到该课程的相关信息!');
end;
//选课操作
procedure TfrmSeleCourse.Button3Click(Sender: TObject);
var
cno,sno:integer;
begin
cno:=datamodule3.coursetable.fieldbyname('cno').Value;
sno:=strtoint(combobox1.Text);
//在选择某一门课程前,先检查是否已经选修过该课程
datamodule3.SELECTQUERY.Close;
datamodule3.SELECTQUERY.SQL.Clear;
datamodule3.SELECTQUERY.SQL.Add('select *from sc.db');
datamodule3.SELECTQUERY.SQL.Add('where sno=:sno');
datamodule3.SELECTQUERY.SQL.Add('and cno=:cno');
datamodule3.SELECTQUERY.SQL.Add('and score=-1');
datamodule3.SELECTQUERY.ParamByName('sno').Value:=sno;
datamodule3.SELECTQUERY.ParamByName('cno').Value:=cno;
datamodule3.SELECTQUERY.Open;
if datamodule3.SELECTQUERY.Locate('sno;cno',vararrayof([sno,cno]),[]) then
//如果已经选修过该课程,则不允许再选
begin
showmessage('你已经选修了该课程,不允许重复选修!');
exit;
end;
//如果没有选修该课程,则进行选课操作
//这里将没有通过的选修课程的分数设置为-1
datamodule3.SELECTQUERY.Close;
datamodule3.SELECTQUERY.SQL.Clear;
datamodule3.SELECTQUERY.SQL.Add('insert into sc(sno,cno,score)');
datamodule3.SELECTQUERY.sql.Add('values(:sno,:cno,-1)');
datamodule3.SELECTQUERY.ParamByName('sno').Value:=sno;
datamodule3.SELECTQUERY.ParamByName('cno').Value:=cno;
datamodule3.SELECTQUERY.ExecSQL;
//更新选课信息
datamodule3.SCquery.Close;
datamodule3.SCquery.ParamByName('sno').Value:=sno;
datamodule3.SCquery.Open;
//更新统计信息
datamodule3.statisticsQuery.Close;
datamodule3.statisticsQuery.ParamByName('sno').Value:=sno;
datamodule3.statisticsQuery.Open;
end;
//执行退选操作
procedure TfrmSeleCourse.Button4Click(Sender: TObject);
var
cno,sno:integer;
begin
cno:=datamodule3.SCquery.fieldbyname('cno').Value;
sno:=strtoint(combobox1.Text);
//从选课数据表中删除选择课程
datamodule3.DELETEQUERY.Close;
datamodule3.DELETEQUERY.SQL.Clear;
datamodule3.DELETEQUERY.SQL.Add('delete from sc');
datamodule3.DELETEQUERY.sql.Add('where sno=:sno');
datamodule3.DELETEQUERY.SQL.Add('and cno=:cno');
datamodule3.DELETEQUERY.ParamByName('sno').Value:=sno;
datamodule3.DELETEQUERY.ParamByName('cno').Value:=cno;
datamodule3.DELETEQUERY.ExecSQL;
//更新选课信息表
datamodule3.SCquery.Close;
datamodule3.SCquery.ParamByName('sno').Value:=sno;
datamodule3.SCquery.Open;
//更新统计信息
datamodule3.statisticsQuery.Close;
datamodule3.statisticsQuery.ParamByName('sno').Value:=sno;
datamodule3.statisticsQuery.Open;
end;
//初始化参数设置
procedure TfrmSeleCourse.FormActivate(Sender: TObject);
begin
datamodule3.tblstudent.Active:=true;
datamodule3.tblstudent.First;
while not datamodule3.tblstudent.Eof do
begin
//添加学号
if combobox1.Items.IndexOf(datamodule3.tblstudent.fieldbyname('sno').Value)=-1 then
combobox1.Items.Add(datamodule3.tblstudent.fieldbyname('sno').Value);
datamodule3.tblstudent.Next;
end;
//“选课”、“退选”按钮设置为false
button3.Enabled:=false;
button4.Enabled:=false;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -