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

📄 ureadersetting.~pas

📁 图书馆管理系统代码deiphi
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
      Checked := CheckDelUser(Query.FieldByName('UserID').AsString);
      if Checked = IDYES then
        DelUser(Query.FieldByName('UserID').AsString)
      else
      if Checked = IDCANCEL then
      begin
        Query.Free;
        Exit;
      end;
    except
      MessageDlg('删除<'+Query.FieldByName('UserID').AsString+'>出错',mtError,[mbok],0);
      Query.Free;
      Exit;
    end;
    Query.Next;
  end;
  Query.Close;

  Query.SQL.Clear;
  Query.SQl.Add('delete from Groupb where GroupID=:GroupID');
  Query.ParamByName('GroupID').AsString := GroupID;
  Query.ExecSQL;
  Query.Free;
end;

//初始化用户身份相关控件
procedure TfrmReaderSetting.GroupEditViewInit;
begin
  edtClassCode.Text := '';
  edtClassDescr.Text := '';
end;

//增加用户身份
procedure TfrmReaderSetting.InsGroup(GroupID, Des: string;MaxNum : integer);
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName := DBName;
  Query.SQl.Add('insert into Groupb(GroupID,Des,MaxNum) '+
                'values(:GroupID,:Des,:MaxNum)');
  Query.ParamByName('GroupID').AsString := GroupID;
  Query.ParamByName('Des').AsString := Des;
  Query.ParamByName('MaxNum').AsInteger := MaxNum;
  Query.ExecSQL;
  Query.Free;
end;

//更新用户身份
procedure TfrmReaderSetting.UpdateGroup(GroupID, Des: string;MaxNum:integer);
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName :=DBName;
  Query.SQl.Add('update Groupb set Des=:Des,MaxNum=:MaxNum '+
                ' where GroupID= :GroupID');
  Query.ParamByName('GroupID').AsString := GroupID;
  Query.ParamByName('Des').AsString := Des;
  Query.ParamByName('MaxNum').AsInteger := MaxNum;
  Query.ExecSQL;
  Query.Free;
end;

//刷新显示用户身份列表
procedure TfrmReaderSetting.RefreshGroup;
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName := DBName;
  Query.SQL.Add('select * from Groupb order by GroupID');
  Query.Open;
  lstClassDetail.Items.Clear;
  while not Query.Eof do
  begin
    with lstClassDetail.Items.Add do
    begin
      Caption := Query.FieldByName('GroupID').AsString;
      SubItems.Add(Query.FieldByName('Des').AsString);
      SubItems.Add(Query.FieldByName('MaxNum').AsString);
    end;
    Query.Next;
  end;
  GroupBox6.Caption := '用户身份列表/共'+IntToStr(Query.RecordCount)+'条记录';
  Query.Close;
  Query.Free;
end;

procedure TfrmReaderSetting.lstClassDetailChange(Sender: TObject; Item: TListItem;
  Change: TItemChange);
begin
  if lstClassDetail.Selected <> nil then
  begin
    edtClassCode.Text := lstClassDetail.Selected.Caption;
    edtClassDescr.Text := lstClassDetail.Selected.SubItems.Strings[0];
    edtBookMax.Text := lstClassDetail.Selected.SubItems.Strings[1];
  end;
end;

//根据情况增加或修改用户身份
procedure TfrmReaderSetting.btnOKClassClick(Sender: TObject);
begin
  try
    StrToInt(edtBookMax.Text);
  except
    MessageDlg('最大借阅图书数不正确',mtError,[mbok],0);
    Exit;
  end;
  //新增读者身份
  if chkNewReaderClass.Checked then
  begin
    if Length(edtClassCode.Text)<> GroupIDLength then
    begin
      MessageDlg('身份号不正确',mtError,[mbok],0);
      Exit;
    end;
    
    if CheckGroupExist(edtClassCode.Text) then
    begin
      MessageDlg('身份号<'+edtClassCode.Text+'>已经存在',mtError,[mbok],0);
      Exit;
    end;
    try
      InsGroup(edtClassCode.Text,edtClassDescr.Text,StrToInt(edtBookMax.Text));
    except
      MessageDlg('添加<'+edtClassCode.Text+'>失败',mtError,[mbok],0);
      Exit;
    end;
  end;
  //修改现有的读者身份
  if chkNewReaderClass.Checked=false then
  begin
    if Length(edtClassCode.Text)<> GroupIDLength then
    begin
      MessageDlg('身份号不正确',mtError,[mbok],0);
      Exit;
    end;
    try
      UpdateGroup(edtClassCode.Text,edtClassDescr.Text,StrToInt(edtBookMax.Text));
    except
      MessageDlg('修改<'+edtClassCode.Text+'>失败',mtError,[mbok],0);
      Exit;
    end;
  end;
  GroupEditViewInit;
  RefreshGroup;
  InitGroup;
end;

//删除某指定用户身份
procedure TfrmReaderSetting.btnDeleteClassClick(Sender: TObject);
var
  i : integer;
begin
  for i := lstClassDetail.Items.Count -1 downto 0 do
   if lstClassDetail.Items[i].Selected then
   try
     DelGroup(lstClassDetail.Items[i].Caption);
     lstClassDetail.Items.Delete(i);
   except
     MessageDlg('删除<'+lstClassDetail.Items[i].Caption+'>出错',mtError,[mbok],0);
   end;
   InitGroup;
end;

//获得读者借书的数目,进行统计
function TfrmReaderSetting.GetLendedUserNum(GroupID: string): integer;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('select Count(distinct(UserID)) from Owner '+
                  ' where UserID in '+
                  ' (select UserID from Userb where GroupID=:GroupID)');
    Query.ParamByName('GroupID').AsString := GroupID;
    Query.Open;
    Result := Query.Fields[0].Value;
    Query.Close;
    Query.Free;
  except
    Result := 0;
  end;
end;

//获得用户数目
function TfrmReaderSetting.GetUserNum(GroupID: string): integer;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('select Count(UserID) from Userb '+
                  ' where GroupID=:GroupID');
    Query.ParamByName('GroupID').AsString := GroupID;
    Query.Open;
    Result := Query.Fields[0].Value;
    Query.Close;
    Query.Free;
  except
    Result := 0;
  end;
end;

//获得用户总数
function TfrmReaderSetting.GetUserTotalNum: integer;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('select Count(UserID) from Userb ');
    Query.Open;
    Result := Query.Fields[0].Value;
    Query.Close;
    Query.Free;
  except
    Result := 0;
  end;
end;

//获得当前身份信息
procedure TfrmReaderSetting.RefreshCountUser;
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName := DBName;
  Query.SQL.Add('select * from Groupb');
  Query.Open;
  ListView4.Items.Clear;
  while not Query.Eof do
  begin
    with ListView4.Items.Add do
    begin
      Caption := Query.FieldByName('GroupID').AsString;
      SubItems.Add(Query.FieldByName('Des').AsString);
      SubItems.Add(IntToStr(GetUserNum(Caption)));
      SubItems.Add(IntToStr(GetLendedUserNum(Caption)));
      SubItems.Add(IntToStr(GetLendedBookNum(Caption)));
    end;
    Query.Next;
  end;
  Query.Close;
  Query.Free;
end;

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

//获得借书者的数量
function TfrmReaderSetting.GetLendedBookNum(GroupID: string): integer;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('select Count(UserID) from Owner '+
                  ' where UserID in '+
                  ' (select UserID from Userb where GroupID=:GroupID)');
    Query.ParamByName('GroupID').AsString := GroupID;
    Query.Open;
    Result := Query.Fields[0].Value;
    Query.Close;
    Query.Free;
  except
    Result := 0;
  end;
end;

//检查某读者用户是否借阅某书籍
function TfrmReaderSetting.CheckDelUser(UserID: string): integer;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('select Book.Code,Book.Name,LandDate from Book,Owner '+
                  ' where Owner.UserID =:UserID and Book.Code = Owner.Code');
    Query.ParamByName('UserID').AsString := UserID;
    Query.Open;
    Query.Close;
    Query.Free;
    Result := IDYES;
  except
    Result := IDNO;
  end;
end;

procedure TfrmReaderSetting.btnCancelClick(Sender: TObject);
begin
    close;
end;

//窗体创建,初始化
procedure TfrmReaderSetting.FormCreate(Sender: TObject);
begin
  InitGroup;
  try
    RefreshGroup;
  except
    lstClassDetail.Items.Clear;
    GroupBox6.Caption := '用户身份列表/共0条记录';
    MessageDlg('身份编辑:得到用户身份信息出错',mtError,[mbok],0);
  end;
  edtClassCode.MaxLength := UserIDLength;
  edtReaderCode.MaxLength := UserIDLength;
end;

//新增读者用户或只是修改用户信息
procedure TfrmReaderSetting.chkNewReaderClick(Sender: TObject);
begin
    if chkNewReader.Checked = true then
        edtReaderCode.Enabled := true;
        edtReaderCode.Text := '';
        edtReaderName.Text := '';
        edtReaderID.Text := '';
        cmbClass.ItemIndex :=0;
        cmbSex.ItemIndex := 0;
    begin
    end;
    if chkNewReader.Checked = false then
    begin
        edtReaderCode.Enabled := false;
        edtReaderCode.Text := '';
        edtReaderName.Text := '';
        edtReaderID.Text := '';
        cmbClass.ItemIndex :=0;
        cmbSex.ItemIndex := 0;
    end;
end;

//初始化身份信息
procedure TfrmReaderSetting.InitGroup;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('select * from Groupb');
    Query.Open;
    cmbClass.Items.Clear;
    ListBox2.Items.Clear;
    while not Query.Eof do
    begin
      cmbClass.Items.Add(Query.FieldByName('Des').AsString);
      ListBox2.Items.Add(Query.FieldByName('GroupID').AsString);
      Query.Next;
    end;
    Query.Close;
    Query.Free;
    cmbSex.ItemIndex := 0;
    cmbClass.ItemIndex := 0;
  except;
    MessageDlg('不能得到有关的身份信息',mtWarning,[mbok],0);
    ListBox2.Items.Clear;
    cmbClass.Items.Clear;
  end;
end;

//新增身份信息或修改身份信息
procedure TfrmReaderSetting.chkNewReaderClassClick(Sender: TObject);
begin
    if chkNewReaderClass.Checked = true then
    begin
        edtClassCode.Enabled := true;
        edtClassCode.Text := '';
        edtClassDescr.Text :='';
        edtBookMax.Text :='';
    end;
    if chkNewReaderClass.Checked = false then
    begin
        edtClassCode.Enabled := false;
        edtClassCode.Text := '';
        edtClassDescr.Text :='';
        edtBookMax.Text :='';
    end;
end;

end.

⌨️ 快捷键说明

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