📄 userinfo.~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 + -