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

📄 frmaddreaderu.pas

📁 这是一款用java做的图书管理系统
💻 PAS
字号:
unit frmAddReaderU;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
  cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxClasses, cxControls,
  cxGridCustomView, cxGridCustomTableView, cxGridTableView,
  cxGridDBTableView, cxGrid, StdCtrls, Buttons, jpeg, ExtCtrls, ExtDlgs,
  ComCtrls,Math;

type
  TfrmAddReader = class(TForm)
    Panel2: TPanel;
    Label9: TLabel;
    Label8: TLabel;
    Label7: TLabel;
    Label6: TLabel;
    Label5: TLabel;
    Label4: TLabel;
    Label3: TLabel;
    Label2: TLabel;
    Label12: TLabel;
    Label10: TLabel;
    Label1: TLabel;
    rabMan: TRadioButton;
    rabLady: TRadioButton;
    Panel3: TPanel;
    GroupBox1: TGroupBox;
    imgPhoto: TImage;
    moRemark: TMemo;
    edPhoneNo: TEdit;
    edName: TEdit;
    edLeaseNo: TEdit;
    edEMail: TEdit;
    edUnit: TEdit;
    edIDCard: TEdit;
    edDuty: TEdit;
    edDept: TEdit;
    edAddress: TEdit;
    btnSave: TBitBtn;
    btnEdit: TBitBtn;
    btnDel: TBitBtn;
    btnClose: TBitBtn;
    btnCancel: TBitBtn;
    btnAdd: TBitBtn;
    GroupBox3: TGroupBox;
    cxgAddReader: TcxGrid;
    cxgAddReaderDBTableView1: TcxGridDBTableView;
    cxgAddReaderLevel1: TcxGridLevel;
    dsAddReader: TDataSource;
    OpenPictureDialog: TOpenPictureDialog;
    btnInfoList: TBitBtn;
    btnBrowse: TBitBtn;
    cxgAddReaderDBTableView1DBColumn1: TcxGridDBColumn;
    cxgAddReaderDBTableView1DBColumn2: TcxGridDBColumn;
    cxgAddReaderDBTableView1DBColumn3: TcxGridDBColumn;
    cxgAddReaderDBTableView1DBColumn4: TcxGridDBColumn;
    cxgAddReaderDBTableView1DBColumn5: TcxGridDBColumn;
    cxgAddReaderDBTableView1DBColumn6: TcxGridDBColumn;
    cxgAddReaderDBTableView1DBColumn7: TcxGridDBColumn;
    cxgAddReaderDBTableView1DBColumn8: TcxGridDBColumn;
    gbRechargeable: TGroupBox;
    rgBagMonth: TRadioGroup;
    edBalance: TEdit;
    Label11: TLabel;
    labBagMoTim: TLabel;
    dtBagMoTim: TDateTimePicker;
    btnRechargeable: TBitBtn;
    panRechargeable: TPanel;
    cxStyleRepository1: TcxStyleRepository;
    cxStyle1: TcxStyle;
    cxStyle2: TcxStyle;
    cxStyle3: TcxStyle;
    Label14: TLabel;
    edPressGold: TEdit;
    dtBagMoStTim: TDateTimePicker;
    labBagMoTim2: TLabel;
    procedure btnBrowseClick(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure btnInfoListClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure btnEditClick(Sender: TObject);
    procedure btnDelClick(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
    procedure cxgAddReaderDBTableView1CellClick(
      Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    procedure btnRechargeableClick(Sender: TObject);
    procedure cxgAddReaderDBTableView1EditKeyPress(
      Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem;
      AEdit: TcxCustomEdit; var Key: Char);
    procedure cxgAddReaderDBTableView1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
    Procedure InfoList();
    procedure TextEnable(enb:Boolean);
    procedure ClsText();
  public
    { Public declarations }
    procedure Search(LeaseNO:String);
  end;

var
  frmAddReader: TfrmAddReader;

implementation

uses DMU, frmRechargeableU;

{$R *.dfm}
var
  aeBoo:Boolean;
  
procedure TfrmAddReader.btnBrowseClick(Sender: TObject);
begin
  if OpenPictureDialog.Execute then
    imgPhoto.Picture.LoadFromFile(OpenPictureDialog.FileName);
end;

procedure TfrmAddReader.InfoList;
var
  f:file of Byte;
  TempPic:String;
begin
  TempPic:=ExtractFilePath(Application.ExeName)+'temp.jpg';
  edLeaseNo.Text:=Trim(Dm.adoAddReader.FieldByName('LeaseNo').AsString);
  edName.Text:=Trim(Dm.adoAddReader.FieldByName('Name').AsString);
  if Trim(Dm.adoAddReader.FieldByName('Sex').AsString)='0' then
  begin
    rabMan.Checked:=True;
    rabLady.Checked:=False;
  end
  else if Trim(Dm.adoAddReader.FieldByName('Sex').AsString)='1'then
  begin
    rabMan.Checked:=False;
    rabLady.Checked:=True;
  end
  else
  begin
    rabMan.Checked:=False;
    rabLady.Checked:=False;
  end;
  edIDCard.Text:=Trim(Dm.adoAddReader.FieldByName('IDCard').AsString);
  edUnit.Text:=Trim(Dm.adoAddReader.FieldByName('Unit').AsString);
  edDept.Text:=Trim(Dm.adoAddReader.FieldByName('Dept').AsString);
  edDuty.Text:=Trim(Dm.adoAddReader.FieldByName('Duty').AsString);
  edPhoneNo.Text:=Trim(Dm.adoAddReader.FieldByName('PhoneNo').AsString);
  edAddress.Text:=Trim(Dm.adoAddReader.FieldByName('Address').AsString);
  edEMail.Text:=Trim(Dm.adoAddReader.FieldByname('Email').AsString);
  moRemark.Lines.Text:=Trim(Dm.adoAddReader.FieldByName('Remark').AsString);
//===============读取相片===========
  DeleteFile(TempPic);
  TblobField(DM.adoAddReader.FieldByName('Photo')).SaveToFile(TempPic);
  AssignFile(f,TempPic);
  Reset(f);
  if FileSize(f)=0 then
  begin
    imgPhoto.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\noPic.jpg');
    CloseFile(f);
  end
  else
  begin
    CloseFile(f);
    imgPhoto.Picture.LoadFromFile(TempPic);
  end;
  DeleteFile(TempPic);
(*
//--------检查包月是否过期----这里取消检测了,应为在借书还书时再进行检查
  if Dm.adoAddReader.FieldByName('BagMonth').AsString='0' then//是否包月用户
    if StrToDate(DM.adoAddReader.FieldByName('BagMoTim').AsString)<Date then//其包月时间已过
    begin
      Dm.adoAddReader.Edit;
      Dm.adoAddReader.FieldByName('BagMonth').AsString:='1';//将该读者的借阅计费改为预存方式
      Dm.adoAddReader.FieldByName('BagMoTim').AsString:='';
      DM.adoAddReader.FieldByName('BagMoStTim').AsString:='';
      Dm.adoAddReader.Post;
    end;
*)
//=======读取充值信息======
  if Dm.adoAddReader.FieldByName('PressGold').AsString<>''then
  begin
    rgBagMonth.ItemIndex:=Dm.adoAddReader.FieldByName('BagMonth').AsInteger;
    edBalance.Text:=Trim(Dm.adoAddReader.FieldByName('Balance').AsString);
    dtBagMoTim.Date:=Dm.adoAddReader.FieldByName('BagMoTim').AsDateTime;
    dtBagMoStTim.Date:=DM.adoAddReader.FieldByName('BagMoStTim').AsDateTime;
    edPressGold.Text:=Trim(Dm.adoAddReader.FieldByname('PressGold').AsString);
    panRechargeable.Visible:=False;
    if Dm.adoAddReader.FieldByName('BagMonth').AsString='1' then
    begin
      labBagMoTim.Visible:=False;
      labBagMoTim2.Visible:=False;
      dtBagMoTim.Visible:=False;
      dtBagMoStTim.Visible:=False;
    end
    else
    begin
      labBagMoTim.Visible:=True;
      labBagMoTim2.Visible:=True;
      dtBagMoTim.Visible:=True;
      dtBagMoStTim.Visible:=True;
    end;
  end
  else
    panRechargeable.Visible:=True;
end;

procedure TfrmAddReader.Search(LeaseNO: String);
var
  mySQL:String;
begin
  mySQL:='select * from Reader';
  if LeaseNO<>'' then
    mySQL:=mySQL+' where LeaseNo='+QuotedStr(LeaseNo);
  mySQL:=mySQL+' Order By LeaseNo';
  Dm.adoAddReader.Close;
  Dm.adoAddReader.SQL.Clear;
  Dm.adoAddReader.SQL.Text:=mySQL;
  Dm.adoAddReader.Open;
  InfoList();
end;

procedure TfrmAddReader.btnAddClick(Sender: TObject);
begin
  aeBoo:=True;
  TextEnable(True);
  ClsText();
  edLeaseNo.SetFocus;
end;

procedure TfrmAddReader.TextEnable(enb: Boolean);
begin
  edLeaseNo.Enabled:=enb;
  edName.Enabled:=enb;
  rabMan.Enabled:=enb;
  rabLady.Enabled:=enb;
  edIDCard.Enabled:=enb;
  edUnit.Enabled:=enb;
  edDept.Enabled:=enb;
  edDuty.Enabled:=enb;
  edPhoneNo.Enabled:=enb;
  edAddress.Enabled:=enb;
  rgBagMonth.Enabled:=False;//充值功能上控制
  edEmail.Enabled:=enb;
  edBalance.Enabled:=False;//充值功能上控制
  moRemark.Enabled:=enb;
  cxgAddReader.Enabled:=not enb;
  btnAdd.Enabled:=not enb;
  btnEdit.Enabled:=not enb;
  btnSave.Enabled:=enb;
  btnCancel.Enabled:=enb;
  btnDel.Enabled:=not enb;
  btnClose.Enabled:=not enb;
  btnInfoList.Enabled:=not enb;
  btnBrowse.Enabled:=enb;
  dtBagMoTim.Enabled:=False;//充值功能上控制
  dtBagMoStTim.Enabled:=False;//同上
  btnRechargeable.Enabled:=not enb;//充值功能上控制
  edPressGold.Enabled:=False;//冲值功能上控制
end;

procedure TfrmAddReader.btnInfoListClick(Sender: TObject);
begin
  Search('');
end;

procedure TfrmAddReader.ClsText;
begin
  edLeaseNo.Clear;
  edName.Clear;
  rabMan.Checked:=False;
  rabLady.Checked:=False;
  edIDCard.Clear;
  edUnit.Clear;
  edDept.Clear;
  edDuty.Clear;
  edPhoneNo.Clear;
  edAddress.Clear;
  edEMail.Clear;
  moRemark.Clear;
  panRechargeable.Visible:=True;

  imgPhoto.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\noPic.jpg');
end;

procedure TfrmAddReader.FormShow(Sender: TObject);
begin
  TextEnable(False);
end;

procedure TfrmAddReader.btnCancelClick(Sender: TObject);
begin
  TextEnable(False);
  InfoList();  
end;

procedure TfrmAddReader.btnEditClick(Sender: TObject);
begin
  aeBoo:=False;
  TextEnable(True);
  edLeaseNo.Enabled:=False;
end;

procedure TfrmAddReader.btnDelClick(Sender: TObject);
var
  str:String;
  Money:Single;
begin
  Dm.adoTemp.Close;
  Dm.adoTemp.SQL.Clear;
  Dm.adoTemp.SQL.Text:='select * from Loan where LeaseNo='+QuotedStr(edLeaseNo.Text);
  Dm.adoTemp.Open;
  if Dm.adoTemp.RecordCount>0 then
  begin
    MessageBox(0,Pchar('删除借书证号为“'+edLeaseNo.Text+'”失败,应为该读者尚未归还已借出的图书。'),'提示',MB_OK+MB_TASKMODAL+MB_ICONSTOP);
    Dm.adoTemp.Close;
    exit
  end;
  Dm.adoTemp.close;
  if Dm.adoAddReader.Eof then
    exit;
  Money:=0;
  str:='';
  str:='真的要删除借书号为:“'+DM.adoAddReader.FieldByName('LeaseNo').AsString+'”'+chr(13)+'姓名名为:“'+DM.adoAddReader.FieldByName('Name').AsString+'”'+chr(13)+'的信息吗?';

  if MessageBox(0,Pchar(str),'提示',mb_okCancel+MB_ICONQUESTION+MB_DEFBUTTON2+MB_TASKMODAL)=IDOK then
  begin
    //从冲值表中增加冲值性质为1的记录,并减回金额
    if Dm.adoAddReader.FieldByName('PressGold').AsString<>''then
    begin
      if edBalance.Text<>''then
        Money:=StrToFloat(edBalance.Text);
      Money:=Money+StrToFloat(edPressGold.Text);
      str:='对借书证号:“'+edLeaseNo.Text+'”,姓名:“'+edName.Text+'”的读者删除成功。';
      Str:=Str+Chr(13)+'理应归还读者:'
              +Chr(13)+'按金:'+edPressGold.Text+'元'
              +Chr(13)+'余额:'+edBalance.Text+'元'
              +Chr(13)+'共计人民币:'+FloatToStr(RoundTo(Money,-2));
      Dm.adoTemp.Close;
      Dm.adoTemp.SQL.Clear;
      Dm.adoTemp.SQL.Text:='Select * from Rechargeable';
      Dm.adoTemp.Open;
      Dm.adoTemp.Append;
      Dm.adoTemp.FieldByName('LeaseNo').AsString:=edLeaseNo.Text;
      Dm.adoTemp.FieldByName('PressGold').AsString:='-'+edPressGold.Text;
      Dm.adoTemp.FieldByName('Balance').AsString:='-'+edBalance.Text;
      Dm.adoTemp.FieldByName('WTWK').AsString:='1';
      Dm.adoTemp.FieldByName('Date').AsString:=DateToStr(Date);
      Dm.adoTemp.Post;
      Dm.adoTemp.Close;
      Dm.adoTemp.SQL.Clear;
      Dm.adoTemp.SQL.Text:='select * from BalaCcou';
      Dm.adoTemp.Open;
      Dm.adoTemp.Edit;
      Dm.adoTemp.FieldByName('Money').AsString:=FloatToStr(StrToFloat(Dm.adoTemp.FieldByName('Money').AsString)-Money);
      Dm.adoTemp.Post;
      Dm.adoTemp.Close;
      MessageBox(0,Pchar(str),'提示',MB_OK+MB_TASKMODAL+MB_ICONEXCLAMATION);
    end;
    Dm.adoAddReader.Delete;
    ClsText();
  end;
end;

procedure TfrmAddReader.btnCloseClick(Sender: TObject);
begin
  close();
end;

procedure TfrmAddReader.btnSaveClick(Sender: TObject);
var
  LeaseNo:String;
  sex:Integer;
begin
  if (Trim(edLeaseNo.Text)='') or (Trim(edName.Text)='') or (Trim(edIDCard.Text)='') then
  begin
    MessageBox(0,'借书证号、姓名和身份证不能为空,请输入该项信息。','提示',MB_OK+MB_ICONEXCLAMATION+MB_TASKMODAL);
    exit;
  end;
  if not(rabMan.Checked or rabLady.Checked) then
  begin
    MessageBox(0,'请选择性别。','提示',MB_OK+MB_ICONEXCLAMATION+MB_TASKMODAL);
    exit;
  end;
  LeaseNo:=Trim(edLeaseNo.Text);
  if rabMan.Checked then
    sex:=0
  else
    sex:=1;
  if aeBoo then
  begin
    Dm.adoAddReader.Append;
    Dm.adoTemp.Close;
    Dm.adoTemp.SQL.Clear;
    Dm.adoTemp.SQL.Text:='select LeaseNo From Reader where LeaseNo='+QuotedStr(LeaseNo);
    Dm.adoTemp.Open;
    if Dm.adoTemp.RecordCount>0 then
    begin
      MessageBox(0,'借书证号不能重复,请重新输入该项信息。','提示',MB_OK+MB_ICONEXCLAMATION+MB_TASKMODAL);
      edLeaseNo.SetFocus;
      Dm.adoTemp.Close;
      exit;
    end;
    Dm.adoTemp.Close;
  end
  else
    Dm.adoAddReader.Edit;
  Dm.adoAddReader.FieldByName('LeaseNo').AsString:=Trim(edLeaseNo.Text);
  Dm.adoAddReader.FieldByName('Name').AsString:=Trim(edName.Text);
  Dm.adoAddReader.FieldByName('Sex').AsString:=IntToStr(sex);
  Dm.adoAddReader.FieldByName('IDCard').AsString:=Trim(edIDCard.Text);
  Dm.adoAddReader.FieldByName('Unit').AsString:=Trim(edUnit.Text);
  Dm.adoAddReader.FieldByName('Dept').AsString:=Trim(edDept.Text);
  Dm.adoAddReader.FieldByName('Duty').AsString:=Trim(edDuty.Text);
  Dm.adoAddReader.FieldByName('PhoneNo').AsString:=Trim(edPhoneNo.Text);
  Dm.adoAddReader.FieldByName('Address').AsString:=Trim(edAddress.Text);
  Dm.adoAddReader.FieldByName('EMail').AsString:=Trim(edEMail.Text);
  Dm.adoAddReader.FieldByName('Remark').AsString:=Trim(moRemark.Lines.Text);
  if FileExists(OpenPictureDialog.FileName)then
    TblobField(Dm.adoAddReader.FieldByName('Photo')).LoadFromFile(OpenPictureDialog.FileName);
  Dm.adoAddReader.Post;
  TextEnable(False);
  OpenPictureDialog.FileName:='';   
end;

procedure TfrmAddReader.cxgAddReaderDBTableView1CellClick(
  Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  InfoList();  
end;

procedure TfrmAddReader.btnRechargeableClick(Sender: TObject);
begin
  frmRechargeable.Search(edLeaseNo.Text);
  frmRechargeable.ShowModal;   
end;

procedure TfrmAddReader.cxgAddReaderDBTableView1EditKeyPress(
  Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem;
  AEdit: TcxCustomEdit; var Key: Char);
begin
  InfoList(); 
end;

procedure TfrmAddReader.cxgAddReaderDBTableView1KeyUp(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  InfoList();
end;

end.

⌨️ 快捷键说明

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