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

📄 accounts_manage_frms.pas

📁 证券公司考试系统,三层架构,从题库自动产生试卷,全部主观题
💻 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 + -