📄 accounts_manage_frms.pas
字号:
unit Accounts_Manage_Frms;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, DBCtrls, jpeg, Grids, DBGrids, Mask,db,
Buttons;
type
TCharacter = 'a'..'z';
Cell=array[0..35,0..3] of Char;//第一二行前26个字符是字母,后10个字符是数字
TAccounts_Manage_Frm = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
PanDuan_DBGrid: TDBGrid;
Panel4: TPanel;
Panel12: TPanel;
Panel5: TPanel;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
DBEdit1: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
Panel6: TPanel;
DBImage1: TDBImage;
Label8: TLabel;
DBEdit6: TDBEdit;
Label10: TLabel;
DBComboBox2: TDBComboBox;
Psw_Edit: TEdit;
DBNavigator1: TDBNavigator;
Label11: TLabel;
OpenDialog: TOpenDialog;
Label12: TLabel;
BitBtn1: TBitBtn;
procedure Validity_Check(var Password:string;Var Check:Boolean);
procedure MiYao_Biao(MiYao:string;Var Cells:Cell);
procedure JiaMi(MiYao,MingWen:string;var MiWen:string);
procedure JieMi(MiYao,MiWen:string;var MingWen:string);
procedure Label11Click(Sender: TObject);
procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Accounts_Manage_Frm: TAccounts_Manage_Frm;
MiYao:string='ilovegreatchina';
implementation
uses Client_Data_Module;
{$R *.dfm}
procedure TAccounts_Manage_Frm.Validity_Check(var Password:string;Var Check:Boolean);
{密码串的合法性检查,如果有大写字母则转换成小写字母,如果包含数字和字母以外的字符
则表示该字符串非法}
Var
i:integer;
begin
for i := 1 to Length(Password) do
begin
if (Ord(Password[i])<=90)and(Ord(Password[i])>=65)
then Password[i]:= Char(Ord(Password[i])+32);
if ((Ord(Password[i])>=48)and(Ord(Password[i])<=57))
or((Ord(Password[i])>=97)and(Ord(Password[i])<=122))
then Check:=True
else begin
Check:=False;
Break;
end;
end;
end;
procedure TAccounts_Manage_Frm.MiYao_Biao(MiYao:string;Var Cells:Cell);
//根据密钥值生成对应的密钥表,Cells是存放三表的数组
var
FMiyao: set of TCharacter; //没有重复字符的密钥字符集合,动态变化的
S:string; //去除重复字符后的密钥字符集合
i,j,k:integer;
begin
//------------------------------初始化------------------------------------------
for i := 0 to 25 do Cells[i, 0] := char(Ord('a') + i );
for i := 26 to 35 do Cells[i, 0] := char(Ord('0') + i - 26 );
//------------------------------初始化------------------------------------------
//-----------------去掉相同的字母,S是密钥行,不含相同字符-----------------------
FMiyao := [];
for i := 1 to Length(MiYao) do
if not (MiYao[i] in FMiyao) then
begin
S := S + MiYao[i];
FMiyao := FMiyao + [Miyao[i]];
end;
//-----------------去掉相同的字母,S是密钥行,不含相同字符-----------------------
//-------------------------------第一密文行-------------------------------------
//字母
k:=round(Length(s)/2); //k是取密钥的一半长度
for i:=1 to k do
begin
Cells[i-1,1]:=s[i];
end;
for i:=1 to Length(s)-k do
begin
Cells[25-(Length(s)-k)+i,1]:= s[k+i];
end;
//剩下的字母
for i := 1 to 26 do
if not (char(Ord('a') + i - 1) in FMiyao) then
begin
FMiyao := FMiyao + [char(Ord('a') + i - 1)];
Cells[k, 1] := char(Ord('a') + i - 1);
inc(k);
end;
//数字
for i:= 0 to 9 do Cells[i+26, 1]:=Char(i+48);
//-------------------------------第一密文行-------------------------------------
//------------------------------第二密文行--------------------------------------
j:=0;
for i:=35 downto 0 do
begin
Cells[j,2]:= Cells[i,1];
inc(j)
end;
//------------------------------第二密文行--------------------------------------
//-----------------------------第三密文行---------------------------------------
for i:=0 to 35 do
begin
if i mod 2=0
then begin
Cells[i+1,3]:=Cells[i,2];
end
else begin
Cells[i-1,3]:=Cells[i,2]
end;
end;
//-----------------------------第三密文行---------------------------------------
end;
procedure TAccounts_Manage_Frm.JiaMi(MiYao,MingWen:string;var MiWen:string);
//参数分别是:密钥,明文,密文 [三表加密算法]
var
Cells:Cell;
i,j:integer;
begin
MiYao_Biao(MiYao,Cells);
//-------------------------------加密过程---------------------------------------
MiWen:='';
for i:=1 to Length(Mingwen) do
begin
if i mod 3=1 then
begin
for j:=0 to 35 do if Cells[j,0]=Mingwen[i] then break;
MiWen:=MiWen+ Cells[j,1]
end;
if i mod 3=2 then
begin
for j:=0 to 35 do if Cells[j,0]=Mingwen[i] then break;
MiWen:=MiWen+ Cells[j,2]
end;
if i mod 3=0 then
begin
for j:=0 to 35 do if Cells[j,0]=Mingwen[i] then break;
MiWen:=MiWen+ Cells[j,3]
end;
end;
end;
procedure TAccounts_Manage_Frm.JieMi(MiYao,MiWen:string;var MingWen:string);
//参数分别是:密钥,密文 ,明文[三表解密算法]
var
Cells:Cell;
i,j:integer;
begin
MiYao_Biao(MiYao,Cells);
//-------------------------------解密过程---------------------------------------
Mingwen:='';
for i:=1 to Length(Miwen) do
begin
if i mod 3=1 then
begin
for j:=0 to 35 do if Cells[j,1]=Miwen[i] then break;
Mingwen:=Mingwen+ Cells[j,0]
end;
if i mod 3=2 then
begin
for j:=0 to 35 do if Cells[j,2]=Miwen[i] then break;
Mingwen:=Mingwen+ Cells[j,0]
end;
if i mod 3=0 then
begin
for j:=0 to 35 do if Cells[j,3]=Miwen[i] then break;
Mingwen:=Mingwen+ Cells[j,0]
end;
end;
end;
procedure TAccounts_Manage_Frm.Label11Click(Sender: TObject);
begin
with Remote_DataModule do
begin
If Employee_Table_Client.Active=True
then
begin
OpenDialog.Execute;
if Employee_Table_Client.State <> dsEdit
then Employee_Table_Client.Edit;
if OpenDialog.FileName<>''
then Employee_Table_ClientPhoto.LoadFromFile(OpenDialog.FileName);
end;
end;
end;
procedure TAccounts_Manage_Frm.DBNavigator1Click(Sender: TObject;
Button: TNavigateBtn);
begin
With Remote_DataModule Do
begin
If Button=NbPost then Employee_Table_Client.ApplyUpdates(-1);
end;
end;
procedure TAccounts_Manage_Frm.BitBtn1Click(Sender: TObject);
begin
If MessageDlg('该操作将删除该记录,你确定要删除这条记录吗?',mtConfirmation,[mbYes,mbno],0)=mrYes
then
With Remote_DataModule do
begin
Employee_Table_Client.Delete;
Employee_Table_Client.ApplyUpdates(-1);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -