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

📄 ureadersetting.~pas

📁 图书馆管理系统代码deiphi
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit uReaderSetting;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls,dbtables, Db, ExtCtrls, Buttons;

type
  TfrmReaderSetting = class(TForm)
    Panel3: TPanel;
    PageControl1: TPageControl;
    TabSheet2: TTabSheet;
    GroupBox2: TGroupBox;
    lstUserDetail: TListView;
    btnRefresh: TButton;
    ListBox2: TListBox;
    btnDeleteUser: TButton;
    GroupBox3: TGroupBox;
    GroupBox5: TGroupBox;
    edtReaderID: TEdit;
    edtReaderCode: TEdit;
    edtReaderName: TEdit;
    cmbSex: TComboBox;
    cmbClass: TComboBox;
    StaticText2: TStaticText;
    StaticText3: TStaticText;
    StaticText4: TStaticText;
    StaticText5: TStaticText;
    StaticText6: TStaticText;
    btnOKUser: TButton;
    TabSheet3: TTabSheet;
    GroupBox6: TGroupBox;
    lstClassDetail: TListView;
    btnDeleteClass: TButton;
    GroupBox7: TGroupBox;
    GroupBox9: TGroupBox;
    edtClassCode: TEdit;
    edtClassDescr: TEdit;
    StaticText8: TStaticText;
    StaticText9: TStaticText;
    edtBookMax: TEdit;
    StaticText10: TStaticText;
    btnOKClass: TButton;
    TabSheet4: TTabSheet;
    ListView4: TListView;
    btnRefreshReader: TButton;
    btnCancel: TSpeedButton;
    Label1: TLabel;
    chkNewReader: TCheckBox;
    chkNewReaderClass: TCheckBox;
    procedure btnRefreshClick(Sender: TObject);
    procedure lstUserDetailChange(Sender: TObject; Item: TListItem;
      Change: TItemChange);
    procedure lstUserDetailMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure btnOKUserClick(Sender: TObject);
    procedure btnDeleteUserClick(Sender: TObject);
    procedure lstClassDetailChange(Sender: TObject; Item: TListItem;
      Change: TItemChange);
    procedure btnOKClassClick(Sender: TObject);
    procedure btnDeleteClassClick(Sender: TObject);
    procedure btnRefreshReaderClick(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure chkNewReaderClick(Sender: TObject);
    procedure chkNewReaderClassClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure RefreshUser;
    function CheckUserExist(UserID : string):boolean;
    procedure InsUser(UserID,Name,Sex,GroupID,IDCard : string);
    procedure UpdateUser(UserID,Name,Sex,GroupID,IDCard : string);
    procedure DelUser(UserID : string);
    function CheckDelUser(UserID : string):integer;
    procedure UserEditViewInit;
    procedure RefreshGroup;
    function CheckGroupExist(GroupID : string):boolean;
    procedure InsGroup(GroupID,Des : string;MaxNum : integer);
    procedure UpdateGroup(GroupID,Des : string;MaxNum:integer);
    procedure DelGroup(GroupID : string);
    procedure GroupEditViewInit;
    procedure InitGroup;
    function GetUserTotalNum:integer;
    function GetUserNum(GroupID:string):integer;
    function GetLendedUserNum(GroupID:string):integer;
    function GetLendedBookNum(GroupID:string):integer;
    procedure RefreshCountUser;
  end;

var
  frmReaderSetting: TfrmReaderSetting;

implementation

uses
  main, uPublic;

{$R *.DFM}

//刷新显示当前读者用户情况
procedure TfrmReaderSetting.RefreshUser;
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName := DBName;
  Query.SQL.Add('select * from Userb order by UserID');
  Query.Open;

  lstUserDetail.Items.Clear;
  while not Query.Eof do
  begin
    with lstUserDetail.Items.Add do
    begin
      Caption := Query.FieldByName('UserID').AsString;
      SubItems.Add(Query.FieldByName('Name').AsString);
      if Query.FieldByName('Sex').AsString = '1' then
        SubItems.Add('女')
      else SubItems.Add('男');
      SubItems.Add(Query.FieldByName('GroupID').AsString);
      SubItems.Add(Query.FieldByName('IDCard').AsString);
    end;
    Query.Next;
  end;
  GroupBox2.Caption := '用户列表/共'+IntToStr(Query.RecordCount)+'条记录';
  Query.Close;
  Query.Free;
end;

procedure TfrmReaderSetting.btnRefreshClick(Sender: TObject);
begin
  try
    RefreshUser;
  except
    lstUserDetail.Items.Clear;
    MessageDlg('刷新出错',mtError,[mbok],0);
  end;
end;

//读者用户列表发生改变时的处理
procedure TfrmReaderSetting.lstUserDetailChange(Sender: TObject; Item: TListItem;
  Change: TItemChange);
var
  i : integer;
  Found : boolean;
begin
  if lstUserDetail.Selected <> nil then
  begin
    chkNewreader.Checked := false;
    chkNewreaderClick(Sender);

    edtReaderCode.Text := lstUserDetail.Selected.Caption;
    edtReaderName.Text := lstUserDetail.Selected.SubItems.Strings[0];
    if lstUserDetail.Selected.SubItems.Strings[1] = '女' then
      cmbSex.ItemIndex := 1
    else cmbSex.ItemIndex := 0;
    Found := False;
    i := 0;
    while (Found = False)and(i<ListBox2.Items.Count) do
    begin
      if lstUserDetail.Selected.SubItems.Strings[2] = ListBox2.Items[i] then
        Found := True
      else Inc(i);
    end;
    if Found <> True then
      i:=0;
    cmbClass.ItemIndex := i;
    edtReaderID.Text := lstUserDetail.Selected.SubItems.Strings[3];
  end;

end;

//处理读者用户列表的鼠标点击动作
procedure TfrmReaderSetting.lstUserDetailMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  i : integer;
  Found : boolean;
begin
  if lstUserDetail.Selected <> nil then
  begin
    edtReaderCode.Text := lstUserDetail.Selected.Caption;
    edtReaderName.Text := lstUserDetail.Selected.SubItems.Strings[0];
    if lstUserDetail.Selected.SubItems.Strings[1] = '女' then
      cmbSex.ItemIndex := 1
    else cmbSex.ItemIndex := 0;
    Found := False;
    i := 0;
    while (Found = False)and(i<ListBox2.Items.Count) do
    begin
      if lstUserDetail.Selected.SubItems.Strings[2] = ListBox2.Items[i] then
        Found := True
      else Inc(i);
    end;
    if Found <> True then
      i:=0;
    cmbClass.ItemIndex := i;
    edtReaderID.Text := lstUserDetail.Selected.SubItems.Strings[3];
  end;
end;

//检查某读者用户名是否已经存在
function TfrmReaderSetting.CheckUserExist(UserID: string): boolean;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName :=DBName;
    Query.SQl.Add('select UserID from Userb where UserID=:UserID');
    Query.ParamByName('UserID').AsString := UserID;
    Query.Open;
    if Query.RecordCount = 0 then
      Result := False
    else Result := True;
    Query.Close;
    Query.Free;
  except
    Result := False;
  end;
end;

//删除某读者用户
procedure TfrmReaderSetting.DelUser(UserID: string);
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName := DBName;
  Query.SQl.Add('delete from Userb where UserID=:UserID');
  Query.ParamByName('UserID').AsString := UserID;
  Query.ExecSQL;
  Query.Free;
end;

//Insert某读者用户
procedure TfrmReaderSetting.InsUser(UserID, Name, Sex, GroupID, IDCard: string);
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName := DBName;
  Query.SQl.Add('insert into Userb(UserID,Name,Sex,GroupID,IDCard) '+
                'values(:UserID,:Name,:Sex,:GroupID,:IDCard)');
  Query.ParamByName('UserID').AsString := UserID;
  Query.ParamByName('Name').AsString := Name;
  Query.ParamByName('Sex').AsString := Sex;
  Query.ParamByName('GroupID').AsString := GroupID;
  Query.ParamByName('IDCard').AsString := IDCard;
  Query.ExecSQL;
  Query.Free;
end;

//更新某读者用户信息
procedure TfrmReaderSetting.UpdateUser(UserID, Name, Sex, GroupID, IDCard: string);
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName :=DBName;
  Query.SQl.Add('update Userb set Name=:Name,Sex=:Sex,'+
                'GroupID=:GroupID,IDCard=:IDCard '+
                ' where UserID= :UserID');
  Query.ParamByName('UserID').AsString := UserID;
  Query.ParamByName('Name').AsString := Name;
  Query.ParamByName('Sex').AsString := Sex;
  Query.ParamByName('GroupID').AsString := GroupID;
  Query.ParamByName('IDCard').AsString := IDCard;
  Query.ExecSQL;
  Query.Free;
end;

//初始化读者用户相关的一些控件
procedure TfrmReaderSetting.UserEditViewInit;
begin
  edtReaderCode.Text := '';
  edtReaderName.Text := '';
  edtReaderID.Text := '';
  cmbSex.ItemIndex := 0;
  cmbClass.ItemIndex := 0;
  if edtReaderCode.Enabled = True then
    edtReaderCode.SetFocus
  else edtReaderName.SetFocus;  
end;

//更具情况增加或修改读者用户信息
procedure TfrmReaderSetting.btnOKUserClick(Sender: TObject);
begin
  //新增读者
  if chkNewReader.Checked then
  begin
    if Length(edtReaderCode.Text)<> UserIDLength then
    begin
      MessageDlg('用户借书号不正确',mtError,[mbok],0);
      Exit;
    end;
    
    if CheckUserExist(edtReaderCode.Text) then
    begin
      MessageDlg('用户<'+edtReaderCode.Text+'>已经存在',mtError,[mbok],0);
      Exit;
    end;
    try
      InsUser(edtReaderCode.Text,edtReaderName.Text,IntToStr(cmbSex.ItemIndex),
              ListBox2.Items[cmbClass.ItemIndex],edtReaderID.Text);
    except
      MessageDlg('添加<'+edtReaderCode.Text+'>失败',mtError,[mbok],0);
      Exit;
    end;
  end;

  //修改读者信息
  if chkNewReader.Checked=false then
  begin
    if Length(edtReaderCode.Text)<> UserIDLength then
    begin
      MessageDlg('用户借书号不正确',mtError,[mbok],0);
      Exit;
    end;
    try
      UpdateUser(edtReaderCode.Text,edtReaderName.Text,IntToStr(cmbSex.ItemIndex),
              ListBox2.Items[cmbClass.ItemIndex],edtReaderID.Text);
    except
      MessageDlg('修改<'+edtReaderCode.Text+'>失败',mtError,[mbok],0);
      Exit;
    end;
  end;
  UserEditViewInit;
  //RefreshUser;
end;

//删除指定读者用户信息
procedure TfrmReaderSetting.btnDeleteUserClick(Sender: TObject);
var
  i : integer;
  Checked : integer;
begin
  for i := lstUserDetail.Items.Count -1 downto 0 do
   if lstUserDetail.Items[i].Selected then
   try
     Checked := CheckDelUser(lstUserDetail.Items[i].Caption);
     if Checked = IDYES then
     begin
       DelUser(lstUserDetail.Items[i].Caption);
       lstUserDetail.Items.Delete(i);
     end else
     if Checked = IDNO then
       Exit;
   except
     MessageDlg('删除<'+lstUserDetail.Items[i].Caption+'>出错',mtError,[mbok],0);
   end;
end;

//检查某读者用户身份是否已经存在
function TfrmReaderSetting.CheckGroupExist(GroupID: string): boolean;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQl.Add('select GroupID from Groupb where GroupID=:GroupID');
    Query.ParamByName('GroupID').AsString := GroupID;
    Query.Open;
    if Query.RecordCount = 0 then
      Result := False
    else Result := True;
    Query.Close;
    Query.Free;
  except
    Result := False;
  end;
end;

//删除某用户身份
procedure TfrmReaderSetting.DelGroup(GroupID: string);
var
  Query : TQuery;
  Answer : integer;
  Checked : Integer;
begin
  Answer := MessageBox(0,PChar('删除将删除此身份的所有用户及与这些用户相关的所有信息'+
                         #13+'是否要删除'),'警告',MB_YESNO);
  if Answer = IDNO then
    Exit;
  Query := TQuery.Create(nil);
  Query.DatabaseName :=DBName;
  Query.SQL.Add('select UserID from Userb where GroupID =:GroupID');
  Query.ParamByName('GroupID').AsString := GroupID;
  Query.Open;
  while not Query.Eof do
  begin
    try

⌨️ 快捷键说明

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