⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uselecourse.pas

📁 本文件为使用Delphi开发的学生信息管理系统,演示了如何使用BDE来开发数据库应用程序!
💻 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 + -