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

📄 userinfo.~pas

📁 delphi编写的图书管理系统,一般的管理系统
💻 ~PAS
字号:
unit userinfo;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, DBCtrls, StdCtrls, Mask, ExtCtrls, Buttons,
  ComCtrls;

type
  Tuserinfofrm = class(TForm)
    BitBtn1: TBitBtn;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    GroupBox2: TGroupBox;
    ListView1: TListView;
    GroupBox3: TGroupBox;
    R1: TRadioButton;
    R2: TRadioButton;
    Bevel1: TBevel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    unamebox: TEdit;
    upwdbox: TEdit;
    utypebox: TComboBox;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    Label10: TLabel;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    Bevel2: TBevel;
    rec_no: TLabel;
    ComboBox1: TComboBox;
    DataSource1: TDataSource;
    Table1: TTable;
    procedure BitBtn1Click(Sender: TObject);
    procedure Table1AfterScroll(DataSet: TDataSet);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ListView1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure R1Click(Sender: TObject);
    procedure R2Click(Sender: TObject);
  private
    { Private declarations }
  procedure listuserinfo;//列举用户
  function userisexist(uname:string):boolean;//判断用户是否存在
  function userisborrowed(u_name:string):boolean; //学生u_name是否借书
  //判断登录信息是否被修改过
  function userinfomodified(s_name,s_no:string;s_class:integer):boolean;
  procedure whichcheck;//设置用户操作功能(修改,添加)
  public
    { Public declarations }
  end;

var
  userinfofrm: Tuserinfofrm;
  t:ttable;
implementation
   uses global;
{$R *.dfm}

procedure tuserinfofrm.listuserinfo ;
var q:tquery;
begin
   q:=tquery.Create(nil);
   q.DatabaseName :=dbname ;
   q.SQL.Add('select * from user_info');
   q.Open ;
   listview1.Items.Clear ;
   while not q.Eof do
   begin
   with listview1.Items.Add do
   begin
   caption:=q.fieldbyname('姓名').AsString ;
   subitems.Add(q.fieldbyname('等级').AsString);
   end;
   q.Next ;
   end;
   label10.Caption :='共'+inttostr(listview1.Items.Count)+'个用户';
   q.Close;
   q.Free ;
end;

function tuserinfofrm.userisexist(uname:string):boolean;
var tt:ttable;
begin
  tt:=ttable.Create(nil);
  tt.DatabaseName :=dbname ;
  tt.TableName :='user_info.db';
  tt.Open;
  tt.SetKey ;
  tt.FieldByName('姓名').AsString :=uname;
  if tt.GotoKey then result:=true
  else result:=false;
  tt.Close;
  tt.Free;
end;

function tuserinfofrm.userisborrowed(u_name:string):boolean;
  var t:ttable;
      q:tquery;
      u_no:string;
  begin
  t:=ttable.Create(nil);
  t.DatabaseName :=dbname ;
  t.TableName :='user_info.db';
  t.Open;
  t.SetKey ;
  t.FieldByName('姓名').AsString :=u_name;
  if t.GotoKey then u_no:=t.fieldbyname('学生证号').AsString ;
  t.Close ;
  t.Free ;
  q:=tquery.Create(nil);
  q.DatabaseName :=dbname ;
  q.SQL.Add('select * from borrow_info where 学生证号=:s_no');
  q.ParamByName('s_no').AsString :=u_no;
  q.Open ;
  if q.RecordCount>0 then result:=true else result:=false;
  q.Close ;
  q.Free ;
  end;

function tuserinfofrm.userinfomodified(s_name,s_no:string;s_class:integer):boolean;
var t:ttable;
begin
t:=ttable.Create(nil);
t.DatabaseName :=dbname ;
t.TableName :='user_info.db';
t.Open;
t.SetKey ;
t.FieldByName('姓名').AsString :=s_name;
if t.GotoKey then
  begin
  result:=false;
  if t.FieldByName('学生证号').AsString<>s_no then result:=true
  else
    if t.FieldByName('等级').AsString <>inttostr(s_class)then result:=true;
  end
else result:=false;  //找不到用户也算未修改过
t.Close ;
t.Free ;
end;




procedure tuserinfofrm.whichcheck ;
begin
if r1.Checked then
  begin
  unamebox.Enabled :=false;
  unamebox.Color :=clInfobk;
  end
else
  begin
  unamebox.Enabled :=true;
  unamebox.Color :=clWindow;
  unamebox.Clear ;
  upwdbox.Clear ;
  unamebox.SetFocus ;
  end;
end;

procedure Tuserinfofrm.BitBtn1Click(Sender: TObject);
begin
close;
end;

procedure Tuserinfofrm.Table1AfterScroll(DataSet: TDataSet);
begin
rec_no.Caption :=inttostr(table1.RecNo)+'/'+inttostr(table1.RecordCount);
end;

procedure Tuserinfofrm.FormShow(Sender: TObject);
begin
table1.DatabaseName :=dbname ;
table1.TableName :='stud_info.db';
table1.Open ;
combobox1.Items.Clear ;
 while not table1.Eof do
   begin
   combobox1.Items.Add(table1.fieldbyname('学生证号').AsString);
   table1.Next ;
   end;
table1.First ;
combobox1.ItemIndex :=0;

listuserinfo;
t:=ttable.Create(nil);
t.DatabaseName :=dbname ;
t.TableName :='user_info.db';
end;

procedure Tuserinfofrm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
table1.Close;
t.Free ;
end;

procedure Tuserinfofrm.ListView1Click(Sender: TObject);
begin
if listview1.Selected<>nil then
   begin
   unamebox.Text :=listview1.Selected.Caption ;
   utypebox.ItemIndex :=strtoint(listview1.Selected.SubItems[0]);
   t.Open ;
   t.SetKey ;
   t.FieldByName('姓名').AsString :=unamebox.Text ;
   if t.GotoKey then upwdbox.Text :=t.fieldbyname('学生证号').AsString;
   t.Close ;
   r1.Checked :=true;
   whichcheck;
   end;
end;

procedure Tuserinfofrm.BitBtn3Click(Sender: TObject);
var q:tquery;
    ch:integer;
begin
if listview1.Selected<>nil then
begin
if userisborrowed(listview1.Selected.Caption) then
   begin
   messagedlg('此学生有借出的书未归还,不能删除!',mtinformation,[mbYes],0);
   exit;
   end;
ch:=messagedlg('确定要删除"'+listview1.Selected.Caption+
'"用户吗?',mtconfirmation,[mbYes,mbNo],0);
if ch=mrNo then exit;
   q:=tquery.Create(nil);
   q.DatabaseName :=dbname ;
   q.SQL.Add('delete from user_info where 姓名=:uname');
   q.ParamByName('uname').AsString :=listview1.Selected.Caption ;
   q.ExecSQL ;
   q.Close;
   q.Free;
   messagedlg('删除成功!',mtinformation,[mbYes],0);
   listuserinfo;
   unamebox.Clear ;
   upwdbox.Clear ;
end
else messagedlg('删除哪个?',mtinformation,[mbYes],0);
end;

procedure Tuserinfofrm.BitBtn2Click(Sender: TObject);
var q:tquery;
begin
q:=tquery.Create(nil);
q.DatabaseName :=dbname ;
if r1.Checked then
   begin
   if not userinfomodified(unamebox.Text,upwdbox.Text,utypebox.itemindex)then exit;
   q.SQL.Add('update user_info set 学生证号=:stud_no,等级=:class '+
   'where 姓名=:uname');
   q.ParamByName('uname').AsString :=unamebox.Text ;
   q.ParamByName('stud_no').AsString :=upwdbox.Text ;
   q.ParamByName('class').AsString :=inttostr(utypebox.ItemIndex) ;
   q.ExecSQL ;
   messagedlg('修改成功!',mtinformation,[mbYes],0);
   end;
if r2.Checked then
 begin
 if trim(unamebox.Text)='' then
    begin
    messagedlg('用户名不能为空!',mtinformation,[mbYes],0);
    exit;
    end;
 if not userisexist(unamebox.Text)then
    begin
    q.SQL.Add('insert into user_info(姓名,学生证号,等级) '+
    'values(:uname,:code,:class)');
    q.ParamByName('uname').AsString :=unamebox.Text ;
    q.ParamByName('code').AsString :=upwdbox.Text;
    q.ParamByName('class').AsString:=inttostr(utypebox.ItemIndex);
    q.ExecSQL ;
    messagedlg('添加成功!',mtinformation,[mbYes],0);
    end
 else
    begin
    messagedlg('此用户已经存在',mtError,[mbYes],0);
    exit;
    end;
end;
listuserinfo;
q.Close;
q.Free ;
end;

procedure Tuserinfofrm.ComboBox1Change(Sender: TObject);
begin
with table1 do
  begin
  setkey;
  fieldbyname('学生证号').AsString :=combobox1.Items[combobox1.itemindex];
  gotokey;
  end;
end;

procedure Tuserinfofrm.R1Click(Sender: TObject);
begin
whichcheck;
end;

procedure Tuserinfofrm.R2Click(Sender: TObject);
begin
whichcheck;
end;

end.

⌨️ 快捷键说明

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