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

📄 uuesrmgrf.pas

📁 图书管理系统 用于进行图书的管理
💻 PAS
📖 第 1 页 / 共 2 页
字号:
      Exit;
    end;
    try
      UpdateUser(Edit1.Text,Edit2.Text,IntToStr(ComboBox2.ItemIndex),
              ListBox2.Items[ComboBox3.ItemIndex],Edit3.Text);
    except
      MessageDlg('修改<'+Edit1.Text+'>失败',mtError,[mbok],0);
      Exit;
    end;
  end;
  UserEditViewInit;
  //RefreshUser;
end;

procedure TUserMgrF.Button4Click(Sender: TObject);
var
  i : integer;
  Checked : integer;
begin
  for i := ListView2.Items.Count -1 downto 0 do
   if ListView2.Items[i].Selected then
   try
     Checked := CheckDelUser(ListView2.Items[i].Caption);
     if Checked = IDYES then
     begin
       DelUser(ListView2.Items[i].Caption);
       ListView2.Items.Delete(i);
     end else
     if Checked = IDCANCEL then
       Exit;
   except
     MessageDlg('删除<'+ListView2.Items[i].Caption+'>出错',mtError,[mbok],0);
   end;
end;

procedure TUserMgrF.RadioButton6Click(Sender: TObject);
begin
  Edit5.Enabled := True;
  Edit5.Color := clWindow;
end;

procedure TUserMgrF.RadioButton7Click(Sender: TObject);
begin
  Edit5.Enabled := False;
  Edit5.Color := clBtnFace;
end;

function TUserMgrF.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 TUserMgrF.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
      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 TUserMgrF.GroupEditViewInit;
begin
  Edit5.Text := '';
  Edit6.Text := '';
end;

procedure TUserMgrF.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 TUserMgrF.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 TUserMgrF.RefreshGroup;
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName := DBName;
  Query.SQL.Add('select * from Groupb order by GroupID');
  Query.Open;
  ListView3.Items.Clear;
  while not Query.Eof do
  begin
    with ListView3.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 TUserMgrF.ListView3Change(Sender: TObject; Item: TListItem;
  Change: TItemChange);
begin
  if ListView3.Selected <> nil then
  begin
    Edit5.Text := ListView3.Selected.Caption;
    Edit6.Text := ListView3.Selected.SubItems.Strings[0];
    Edit4.Text := ListView3.Selected.SubItems.Strings[1];
  end;
end;

procedure TUserMgrF.Button8Click(Sender: TObject);
begin
  try
    StrToInt(Edit4.Text);
  except
    MessageDlg('最大借阅图书数不正确',mtError,[mbok],0);
    Exit;
  end;
  if RadioButton6.Checked then
  begin
    if Length(Edit5.Text)<> GroupIDLength then
    begin
      MessageDlg('身份号不正确',mtError,[mbok],0);
      Exit;
    end;
    
    if CheckGroupExist(Edit5.Text) then
    begin
      MessageDlg('身份号<'+Edit5.Text+'>已经存在',mtError,[mbok],0);
      Exit;
    end;
    try
      InsGroup(Edit5.Text,Edit6.Text,StrToInt(Edit4.Text));
    except
      MessageDlg('添加<'+Edit5.Text+'>失败',mtError,[mbok],0);
      Exit;
    end;
  end;
  if RadioButton7.Checked then
  begin
    if Length(Edit5.Text)<> GroupIDLength then
    begin
      MessageDlg('身份号不正确',mtError,[mbok],0);
      Exit;
    end;
    try
      UpdateGroup(Edit5.Text,Edit6.Text,StrToInt(Edit4.Text));
    except
      MessageDlg('修改<'+Edit5.Text+'>失败',mtError,[mbok],0);
      Exit;
    end;
  end;
  GroupEditViewInit;
  RefreshGroup;
  InitGroup;
end;

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

procedure TUserMgrF.Button7Click(Sender: TObject);
var
  i : integer;
begin
  for i := ListView3.Items.Count -1 downto 0 do
   if ListView3.Items[i].Selected then
   try
     DelGroup(ListView3.Items[i].Caption);
     ListView3.Items.Delete(i);
   except
     MessageDlg('删除<'+ListView3.Items[i].Caption+'>出错',mtError,[mbok],0);
   end;
   InitGroup;
end;

function TUserMgrF.GetLandedUserNum(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 TUserMgrF.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 TUserMgrF.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 TUserMgrF.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(GetLandedUserNum(Caption)));
      SubItems.Add(IntToStr(GetLandedBookNum(Caption)));
    end;
    Query.Next;
  end;
  Query.Close;
  Query.Free;
end;

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

function TUserMgrF.GetLandedBookNum(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 TUserMgrF.CheckDelUser(UserID: string): integer;
var
  Query : TQuery;
  Answer : integer;
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;
    if Query.RecordCount = 0 then
      Result := IDYES
    else begin
      UserLandMsgF := TUserLandMsgF.Create(nil);
      UserLandMsgF.Caption := '是否要删除<'+UserID+'>';
      UserLandMsgF.GroupBox1.Caption := '<'+UserID+'>有以下图书没有归还';
      while not Query.Eof do
      begin
        with UserLandMsgF.ListView1.Items.Add do
        begin
          Caption := Query.FieldByName('Code').AsString;
          SubItems.Add(Query.FieldByName('Name').AsString);
          SubItems.Add(FloatToStr(Date-StrToDate(Query.FieldByName('LandDate').AsString)));
        end;
        Query.Next;
      end;
      Answer := UserLandMsgF.ShowModal;
      if Answer = mrok then
      begin

        Query.SQL.Clear;
        Query.SQL.Add('delete from book where Code in '+
                      '(select Code from Owner where UserID =:UserID)');
        Query.ParamByName('UserID').AsString := UserID;
        Query.ExecSQL;

        Query.SQL.Clear;
        Query.SQL.Add('delete from Owner where UserID=:UserID');
        Query.ParamByName('UserID').AsString := UserID;
        Query.ExecSQL;

        Result := IDYES;
      end
      else if Answer= mrno then
             Result := IDNO
           else Result := IDCANCEL;
      UserLandMsgF.Free;
    end;
    Query.Close;
    Query.Free;
  except
    Result := IDNO;
  end;
end;

procedure TUserMgrF.Button9Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
    SaveListView(ListView1,'--- 一般用户列表 ---',SaveDialog1.FileName);
end;

procedure TUserMgrF.Button10Click(Sender: TObject);
begin
  PrintListView(ListView1,'--- 一般用户列表 ---');
end;

procedure TUserMgrF.Button11Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
    SaveListView(ListView3,'--- 用户身份列表 ---',SaveDialog1.FileName);
end;

procedure TUserMgrF.Button12Click(Sender: TObject);
begin
  PrintListView(ListView3,'--- 用户身份列表 ---');
end;

procedure TUserMgrF.Button13Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
    SaveListView(ListView4,'--- 用户统计 ---',SaveDialog1.FileName);
end;

procedure TUserMgrF.Button14Click(Sender: TObject);
begin
  PrintListView(ListView4,'--- 用户统计 ---');
end;

end.

⌨️ 快捷键说明

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