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

📄 studenttakeunit.pas

📁 是一个Delphi的教材管理系统,内容很全面详细
💻 PAS
字号:
unit StudentTakeUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls, Buttons, Grids, DBGrids;

type
  TfrmStudentTake = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    ComboBox1: TComboBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Edit11: TEdit;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Edit4Exit(Sender: TObject);
    procedure Edit7Exit(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure Edit7Change(Sender: TObject);
    procedure Edit9Change(Sender: TObject);
    procedure DBGrid1ColEnter(Sender: TObject);
  private
    procedure LoadClassData();//加载班级信息
    procedure LoadBookData();//加载教材信息
    procedure initializtionfrm();//清空填 写的数据
  public
    { Public declarations }
  end;

var
  frmStudentTake: TfrmStudentTake;
  Cla:TADOTable;
  book:TADODataSet;
  StudentTakeBook:TADOStoredProc;

  bookID,award,publishDate,orderDepartmentName,UsingWay,About:string;
implementation

uses DataModuleUnit, MainUnit;

{$R *.dfm}
//清空输入的内容
procedure TfrmStudentTake.initializtionfrm();
var
 i:integer;
begin
  for i:=0 to self.ComponentCount-1 do
  begin
      if self.Components[i] is TCustomEdit then
       (self.Components[i] as TCustomEdit).Text:='';
      if self.Components[i] is TCheckBox then
       (self.Components[i] as TCheckBox).Checked:=false;
      if self.Components[i] is TCombobox then
       (self.Components[i] as TCombobox).Text:='';
  end;
end;



//加载教材信息
procedure TfrmStudentTake.LoadBookData();
begin
  with book do
  begin
    //Locate('Classname',E,[loCaseInsensitive]);
    Edit4.Text:=FieldByName('BookName').AsString;
    Edit5.Text:=FieldByName('press').AsString;//出版社
    edit6.Text:=FieldByName('Author').AsString;  //人数
    Edit11.Text:=FieldByName('BookAmount').AsString;       //库存
    Edit8.Text:=FieldByName('price').AsString; //单价
    Edit10.Text:=frmMain.OperatorInfo.OperatorName;//经办人
    BookID:=FieldByName('ISBN').Value;
    award:=FieldByName('award').Value;
    publishDate:=FieldByName('publishDate').Value;
    orderDepartmentName:=FieldByName('orderDepartmentName').Value;
    usingway:=FieldByName('usingway').AsString;
    about:=FieldByName('about').AsString;
  end;
end;
 //加载班级信息
procedure TfrmStudentTake.LoadClassData();
var
  TotalFee:real;
begin
  with Cla do
  begin
    Locate('Classname',ComboBox1.Text,[loCaseInsensitive]);
    edit1.Text:=FieldByName('Strength').AsString;  //人数
    Edit2.Text:=FieldByName('totalFee').AsString;       //总书费
    TotalFee:=strtofloatdef(Edit2.Text,0);
    Edit3.Text:=FieldByName('Department').AsString;
    if TotalFee>0 then
      Edit4.Enabled:=true
    else
      Edit4.Enabled:=false;
  end;
end;
//初始化班级名
procedure TfrmStudentTake.FormCreate(Sender: TObject);
var
  i:integer;
begin
   //学生领书存储过程建立
   StudentTakeBook:=TADOStoredProc.Create(nil);
   StudentTakeBook.Connection:=frmDataModule.Connection;
   StudentTakeBook.ProcedureName:='StudentTakeBook';
   //教材信息表初始化
   Book:=TADODataSet.Create(nil);
   Book.CommandType:=cmdText;
   book.Connection:=frmDataModule.Connection;
   Datasource1.DataSet:=book;
   dbGrid1.DataSource:=DataSource1;
    //班级信息表初始化
   Cla:=TADOTable.Create(nil); //班级表
   Cla.Connection:=frmDataModule.Connection;
   Cla.TableName:='Classes';
   Cla.Active:=true;
   for i:=0 to Cla.RecordCount-1 do
   begin
     comboBox1.Items.Add(Cla.Fields[0].Value);
     Cla.Next;
   end;
end;

procedure TfrmStudentTake.ComboBox1Change(Sender: TObject);
begin
  self.LoadClassData
end;
//查询指定的教材
procedure TfrmStudentTake.Edit4Exit(Sender: TObject);
begin
  with book do
  begin
    close;
    {
    Parameters.Clear;
    Parameters.CreateParameter('@BookName',ftstring,pdinput,50,Edit4.Text);
    CommandText:='select * from books where bookName like  :bookName';//+quotedstr('% :BookName');
    Parameters[0].Value:='%'+Edit4.Text+'%';  方法之一}
    //方法之二

    CommandText:='select * from books where bookName like  '+quotedstr('%'+edit4.Text+'%');
    Active:=true;
    if RecordCount>0 then
    begin
      self.LoadBookData;
      Edit7.Enabled:=true;
    end;
  end;
end;
//计算总书费
procedure TfrmStudentTake.Edit7Exit(Sender: TObject);
var
  m,P,t:real;
begin
    m:=strtoFloatdef(edit7.Text,0);//数量
    p:=strtoFloatdef(Book.FieldByName('price').AsString,0); //单价
    t:=m*p;//总 书费
    Edit9.Text:=Floattostr(t);
    DBgrid1.SetFocus;
end;
//提交领书信息
procedure TfrmStudentTake.BitBtn1Click(Sender: TObject);
var
   totalFee:real;
   amount,nowAmount:integer;
begin // I:= StrToIntDef(aEdit.Text, 0); 这样当转换不成功时,第二个参数就会赋给I。类似的函数还有strToInt64Def,StrToFloatDef等等。
  nowAmount:=0;
  if strtointdef(edit7.Text,1)>strtointdef(edit11.Text,0)then
  begin
      Application.MessageBox('库存量不足,请少领些!','出错提示',mb_ok);
      edit7.SetFocus;
      abort;
  end
  else
    nowAmount:=strtointdef(edit11.Text,1)-strtointdef(edit7.Text,0); //当前数量
  if strtofloatdef(edit9.Text,1.0)>strtofloatdef(edit2.Text,0.0)then
  begin
      Application.MessageBox('书费不足,请去补交书费!','出错提示',mb_ok);
      edit9.SetFocus;
      abort;
  end;
  with StudentTakeBook do  //设置领书存储过程的参数
  begin
    Parameters.CreateParameter('@whoTake_1',ftstring,pdinput,20,Combobox1.Text);
    Parameters.CreateParameter('@bookID_2 ',ftstring,pdinput,13,bookID);
    Parameters.CreateParameter('@bookName_3',ftstring,pdinput,50,Edit4.Text);
    Parameters.CreateParameter('@press_4',ftstring,pdinput,50,Edit5.Text);
    Parameters.CreateParameter('@author_5',ftstring,pdinput,8,Edit6.Text);
    Parameters.CreateParameter('@award_6',ftstring,pdinput,50,award);
    Parameters.CreateParameter('@publishDate_7',ftDateTime,pdinput,8,publishDate);
    Parameters.CreateParameter('@orderDepartmentName_8',ftstring,pdinput,20,orderDepartmentName);
    Parameters.CreateParameter('@handler_9',ftstring,pdinput,8,edit10.Text);
    Parameters.CreateParameter('@lastAmount_10',ftInteger,pdinput,4,Edit11.Text);
    Parameters.CreateParameter('@theAmount_11',ftInteger,pdinput,4,Edit7.Text);
    Parameters.CreateParameter('@nowAmount_12',ftInteger,pdinput,4,nowAmount);
    Parameters.CreateParameter('@price_13',ftFloat,pdinput,4,Edit8.Text);
    Parameters.CreateParameter('@usingWay_14',ftstring,pdinput,50,usingWay);
    Parameters.CreateParameter('@about_16',ftstring,pdinput,50,about);
    Parameters.CreateParameter('@operatorID_17',ftstring,pdinput,8,frmMain.OperatorInfo.OperatorID);//'fdsa;f;sdla'
    Parameters.CreateParameter('@ClassName_1',ftstring,pdinput,20,combobox1.Text);
    totalfee:=strtoFloat(edit2.Text)-strtofloat(edit9.Text);
    amount:=Strtoint(Edit11.Text)-Strtoint(edit7.Text);
    //showmessage(floattostr(totalfee));
    Parameters.CreateParameter('@totalfee_2',ftFloat,pdinput,4,totalfee);
    Parameters.CreateParameter('@bookAmount_2',ftinteger,pdinput,4,amount);
    try
      ExecProc;
      Application.MessageBox('领书信息填写成功!','提示',mb_ok);
      book.Close;
      self.initializtionfrm;
      edit7.Text:='0';
    except
      Application.MessageBox('领书信息填写失败!','出错提示',mb_ok);
    end;
  end;
end;

procedure TfrmStudentTake.BitBtn2Click(Sender: TObject);
begin
close;
end;
//如果领书数量大于0则可以进行提交领书信息
procedure TfrmStudentTake.Edit7Change(Sender: TObject);
var
  str:shortstring;
begin
    str:=trim(edit7.Text);

    if str ='' then
      edit7.Text:='0';
    if strtoint(edit7.Text)>0then
      bitbtn1.Enabled:=true
    else
      bitbtn1.Enabled:=false;
end;

procedure TfrmStudentTake.Edit9Change(Sender: TObject);
begin
 dbGrid1.SetFocus;
end;

procedure TfrmStudentTake.DBGrid1ColEnter(Sender: TObject);
begin
   self.LoadBookData;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -