西瓜高产种植技术:(20分)用delphi编写用户名及密码校验

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 09:27:00
用delphi编写用户登陆代码,调用SQL selver数据库的内容来校验用户名及密码的正确性.
各位帮帮忙,最好给出详细代码.在这里谢过了.

1 首先要作一个密码。
function TregisterForm.spacetozero(s : string):string;
var
i : integer;
t : string;
begin
t := '';
for i := 1 to length(s) do
begin
if s[i] = ' ' then s[i] := '0';
t := t + s[i];
end;
result := t;
end;
function TregisterForm.jiami(s:string):string;
var
key : string;
i : integer;
n : integer;
tmp : string;
begin
key := 'delphiisagoodtoolhey';
n := 20 - length(s);
for i := 1 to n do
s := s + ' ';
tmp := '';
for i := 1 to 20 do
tmp := tmp + spacetozero(format('%2x',[ord(key[i]) xor ord(s[i])]));
result := tmp;
end;
function TregisterForm.jiemi(s:string):string;
var
key, tmp : string;
i : integer;

begin
key := 'delphiisagoodtoolhey';
tmp := '';
for i := 1 to 20 do
tmp := tmp + chr(ord(key[i]) xor ord(s[i]));
tmp := trim(tmp);
result := tmp;
end;

procedure TregisterForm.BitBtn1Click(Sender: TObject);
begin
if (
(combobox1.ItemIndex=-1 ) or
(edit1.Text = '') or (edit2.text = '') or (edit3.Text ='') or
(edit1.Text = ' ') or (edit2.text = ' ') or (edit3.Text =' ')
) then
begin
showmessage('信息填写不全!');
exit;
end;
adotable1.IndexFieldNames:='用户名';
if ADOTable1.Locate('用户名',edit1.Text,[]) then
begin
showmessage('对不起,已经存在这样的用户名,用户名不允许重复');
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
exit;
end;

if (edit2.text <> edit3.text) then
begin
showmessage('密码和验证密码不符,请重新输入');
exit;
end;

ADOtable1.Open;
ADOtable1.Insert;
ADOtable1.fields[0].asstring := combobox1.Text;
ADOtable1.Fields[1].asstring := edit1.Text;
adotable1.Fields[2].AsString :=jiami(edit2.text);
ADOtable1.Post;
showmessage('用户创建成功!');

end;

procedure TregisterForm.FormCreate(Sender: TObject);
begin
ADOtable1.Open;
end;

procedure TregisterForm.BitBtn2Click(Sender: TObject);
begin
close;
end;

procedure TregisterForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
adotable1.close;
end;

2 然后在登录窗体中
procedure TdengluForm.Button2Click(Sender: TObject);
begin
application.Terminate;
end;

procedure TdengluForm.Button1Click(Sender: TObject);
begin
if ((edit1.Text = '') or (trim(edit1.Text) = ''))then
begin
showmessage('请输入用户名!');
exit;
end;

adotable1.First;
adotable1.IndexFieldNames:='用户名';

if not adotable1.Locate('用户名',edit1.Text,[]) then
begin
showmessage('您输入的用户名不存在!');
exit;
end;

if (registerForm.jiami(edit2.text) <> adotable1.FieldByName('密码').asstring) then
begin
showmessage('密码不对!请重新输入。');
edit2.Text:='';
exit;
end;

dengluForm.Hide;
mainform.Show;
end;

procedure TdengluForm.FormCreate(Sender: TObject);
var
Stream : TCustomMemoryStream;
tempstream:TFilestream;
i:integer;
begin
adotable1.Open;
stream:=TResourceStream.Create(hinstance,'DiamondBlue','SUI');
tempstream:=tfilestream.Create('test.sui',fmopenwrite or fmcreate);
try
tempstream.CopyFrom(stream,stream.Size);
finally
tempstream.Free;
stream.Free;
end;
suiSkinEngine1.SkinFile := 'test.sui';
suiSkinEngine1.Active := True;
end;
朋友,不知道能不能帮到你,希望能够给你帮助。

不知道