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

📄 usermanageru.pas

📁 一个图书管理系统
💻 PAS
字号:
////////////////////////////////
// 单元名:UserManagerU         //
// 窗体名:UserManagerF         //
// 单元功能:用户管理窗体     //
// 作者:刘波                 //
////////////////////////////////
unit UserManagerU;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, Buttons,ADODB,DB,Menus,StrUtils;

type
  TUserManagerF = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    GroupBox1: TGroupBox;
    ListView1: TListView;
    GroupBox2: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    BitBtn1: TBitBtn;
    GroupBox3: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    StaticText1: TStaticText;
    StaticText2: TStaticText;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn5: TBitBtn;
    GroupBox4: TGroupBox;
    ListView2: TListView;
    StaticText3: TStaticText;
    GroupBox5: TGroupBox;
    Edit3: TEdit;
    StaticText4: TStaticText;
    Edit4: TEdit;
    BitBtn6: TBitBtn;
    StaticText5: TStaticText;
    RadioButton3: TRadioButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure ListView1Click(Sender: TObject);
    procedure TabSheet2Show(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure PageControl1Changing(Sender: TObject;
      var AllowChange: Boolean);
    procedure RadioButton2Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private declarations }
     procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPAINT;
  public
    { Public declarations }
    procedure GetMenuName;  //获得菜单名
    procedure GetUserName;  //获得用户名
    function SaveUserPurview(username,userpass:string):boolean;  //保存用户权限
    function Check:boolean;
    function DeleteUser(username:string):boolean;                //删除用户
  end;

var
  UserManagerF: TUserManagerF;
  a:integer;
implementation

uses DataModule,MainU, ExportExcelU, BookQueryU,ShareU;
{$R *.dfm}
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.WMNCPaint(var Msg: TWMNCPaint);
begin
    inherited;
    draw(UserManagerF);
end;
//////////////////////////////////////////////////////////////////////////
function TUserManagerF.DeleteUser(username:string):boolean;
var
  Query:TADOQuery;
begin
     Query:=TADOQuery.Create(self);
     Query.Connection:=dm.ADOConnection1;
     try
     dm.ADOConnection1.BeginTrans;
     Query.SQL.Text:='delete from user_info where username=:name ';
     Query.Parameters.ParamByName('name').Value:=username;
     Query.ExecSQL;

     Query.SQL.Clear;
     Query.SQL.Text:='delete from user_purview where username=:name ';
     Query.Parameters.ParamByName('name').Value:=username;
     Query.ExecSQL;

     dm.ADOConnection1.CommitTrans;
     result:=true;
     except
       dm.ADOConnection1.RollbackTrans;
       result:=false;
     end;
     Query.Close;
     Query.Free;
end;
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.GetUserName;
var
  Query:TADOQuery;
begin
    listview1.Items.Clear;
    Query:=TADOQuery.Create(self);
    Query.Connection:=dm.ADOConnection1;
    Query.SQL.Text:='select username from user_info ';
    Query.Open;
    Query.First;
    while not query.Eof do
    begin
      with listview1.Items.Add do
      begin
          Caption:=Query.FieldValues['username'];
          //subitems.Add(Query.FieldValues['registerdate']);
      end;
      query.Next;
    end;

    query.Close;
    query.Free;
end;
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.GetMenuName;
    function GetMenuLen(menuid:string):string; //获得菜单ID长度判断极次
    begin
        if length(menuid) =4 then
            result:='1'
        else if length(menuid) =6 then
            result:='2'
        else if length(menuid) =8 then
            result:='3';
    end;

    procedure GetUserMenu;   //获得用户可用菜单
    var
      i:integer;
    begin
       for i:=0 to listview2.Items.Count -1 do
       begin
        if dm.CCheckID('select username from user_purview where username='''+
                              trim(edit1.Text)+''' and menuid='''+
                          trim(listview2.Items.Item[i].Caption)+'''') then
            listview2.Items.Item[i].Checked:=true;
       end;
    end;

var
  Query,Query1:TADOQuery;
  i:integer;//判断
begin
    listview2.Items.Clear;
    Query:=TADOQuery.Create(self);
    Query.Connection:=dm.ADOConnection1;
    Query1:=TADOQuery.Create(self);
    Query1.Connection:=dm.ADOConnection1;
    Query.SQL.Text:='select MenuID,MenuName from Menu_info';
    Query.Open;
    query.First;
    while not Query.Eof do
    begin
      if (mainf.FindComponent(Query.FieldValues['MenuName'])<> nil) and
          (GetMenuLen(trim(query.FieldValues['MenuID']))= '1') then
      begin
         Query1.SQL.Text:='select MenuName,MenuID from Menu_info where '+
                                       'left(MenuID,4)=:id and len(menuid)>4';
         query1.Parameters.ParamByName('id').Value:=Query.FieldValues['MenuID'];
         query1.Open;
         i:=0;
         while not query1.Eof do
         begin
           with ListVIew2.Items.Add do
           begin
              if i=0 then
              begin
                  Caption:=leftstr(Query1.FieldValues['MenuID'],4);
                  SubItems.Add((mainf.FindComponent(Query.FieldValues['MenuName'])
                                                          as tmenuitem).Caption);
              end
              else
              begin
                  Caption:=Query1.FieldValues['MenuID'];
                  SubItems.Add('       '+(mainf.FindComponent(Query1.FieldValues['MenuName'])
                                                           as tmenuitem).Caption);
                  query1.Next;
              end;

           end;
        inc(i);
        end;
        end;
    Query.Next;
    end;
    GetUserMenu;
    query1.Close;
    query1.Free;
    Query.Close;
    Query.Free;
end;
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
    UserManagerF:=nil;
    action:=cafree;
end;
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.BitBtn2Click(Sender: TObject);
begin
    close;
end;
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.FormCreate(Sender: TObject);
begin
    caption:='图书管理系统--用户管理';
    Icon:=mainf.Icon;
    GetMenuName;
    GetUserName;
end;
//////////////////////////////////////////////////////////////////////////
function TUserManagerF.SaveUserPurview(username,userpass:string):boolean;
var
  Query:TADOQuery;
  i:integer;
begin

    Query:=TADOQuery.Create(self);
    Query.Connection:=dm.ADOConnection1;
    try
      dm.ADOConnection1.BeginTrans;
      if radiobutton1.Checked then
      begin
        Query.SQL.Text:='insert into User_Info (username,userpassword) '+
                                         'values (:name,:pass)';
        Query.Parameters.ParamByName('name').Value:=username;
        Query.Parameters.ParamByName('pass').Value:=userpass;
        Query.ExecSQL;
      end;
      Query.SQL.Clear;
      Query.SQL.Text:='delete from User_Purview where UserName=:name';
      Query.Parameters.ParamByName('name').Value:=username;
      Query.ExecSQL;
      for i:=0 to listview2.Items.Count-1 do
        if listview2.Items.Item[i].Checked then
        begin
         Query.SQL.Clear;
         Query.SQL.Text:='insert into User_Purview (username,menuid) values (:name,:id)';
         Query.Parameters.ParamByName('name').Value:=username;
         Query.Parameters.ParamByName('id').Value:=trim(listview2.Items.Item[i].Caption);
         Query.ExecSQL;
        end;
      dm.ADOConnection1.CommitTrans;
      result:=true;
    except
      dm.ADOConnection1.RollbackTrans;
      result:=false;
    end;
    Query.Close;
    Query.Free;
end;
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.BitBtn5Click(Sender: TObject);
begin
    if SaveUserPurview(trim(edit3.Text),trim(edit2.Text)) then
    begin
      application.messagebox('保存成功!','提示!');
      tabsheet1.Show;
      edit1.Text:='';
      edit2.Text:='';
      edit4.Text:='';
      edit3.Text:='';
      radiobutton3.Checked:=true;
    end
    else
      application.messagebox('保存失败!','提示!');
end;
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.ListView1Click(Sender: TObject);
begin
    if not radiobutton1.Checked then
    if listview1.Selected<>nil then
    begin
        edit1.Text:=listview1.Selected.Caption;
    end;
end;
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.TabSheet2Show(Sender: TObject);
begin
    
    edit3.Text:=trim(edit1.Text);
    if edit3.Text='' then
       bitbtn5.Enabled:=false
    else
       bitbtn5.Enabled:=true;
    GetMenuName;
end;
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.RadioButton1Click(Sender: TObject);
begin
    edit1.Text:='';
    edit2.Text:='';
    edit4.Text:='';
    bitbtn6.Enabled:=false;
    bitbtn1.Enabled:=true;
    bitbtn5.Enabled:=true;
end;
//////////////////////////////////////////////////////////////////////////
function TUserManagerF.Check:boolean;
begin
    if radiobutton1.Checked then
    begin
        if edit1.Text='' then
        begin
            application.MessageBox('请输入添加的用户名!','提示!');
            edit1.SetFocus;
            result:=false;
            exit;
        end
        else
        begin
             if dm.CCheckID('select username from user_info where username='''+
                                                    trim(edit1.Text)+'''') then
             begin
                 application.MessageBox('已有此用户名,请重新输入 !','提示!');
                 edit1.SetFocus;
                 result:=false;
                 exit;
             end;
        end;

        if edit2.Text='' then
        begin
            application.MessageBox('请输入添加新用户的密码!','提示!');
            edit2.SetFocus;
            result:=false;
            exit;
        end;
        if edit4.Text='' then
        begin
            application.MessageBox('请输入新用户密码确认 !','提示!');
            edit4.SetFocus;
            result:=false;
            exit;
        end;
        if edit2.Text <>edit4.Text then
        begin
            application.MessageBox('密码核对不正确,重新输入确认密码 !','提示!');
            edit4.SetFocus;
            result:=false;
            exit;
        end;
     end;
     result:=true;
end;
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.BitBtn1Click(Sender: TObject);
begin
    if check then
      tabsheet2.Show;
end;
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.RadioButton3Click(Sender: TObject);
begin
    edit1.SetFocus;
    statictext1.Caption:='旧密码:';
    statictext5.Caption:='新密码:';
end;
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.PageControl1Changing(Sender: TObject;
  var AllowChange: Boolean);
begin
      if (pagecontrol1.ActivePage = tabsheet1) and (not check) then
         allowchange:=false;
end;
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.RadioButton2Click(Sender: TObject);
begin
    bitbtn1.Enabled:=false;
    bitbtn6.Enabled:=true;
    bitbtn5.Enabled:=false;
end;
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.BitBtn6Click(Sender: TObject);
begin
    if messagedlg('确认删除吗!',mtconfirmation,[mbyes,mbno],0)=mryes then
    begin
    
    if DeleteUser(trim(edit1.Text)) then
    begin
        edit1.Text:='';
        edit2.Text:='';
        bitbtn6.Enabled:=false;
        radiobutton3.Checked:=true;
        bitbtn1.Enabled:=true;
        GetUserName;
    end;
    end;
end;
//////////////////////////////////////////////////////////////////////////
procedure TUserManagerF.BitBtn3Click(Sender: TObject);
begin
    if tabsheet1.Showing=true then
        ExportExcelListView:=listview1.Name
    else if tabsheet2.Showing=true then
        ExportExcelListView:=listview2.name;
    OpenForm(TExportExcelF,ExportExcelF,UserManagerF,true);
end;

end.

⌨️ 快捷键说明

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