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

📄 login.cpp

📁 文件管理系统
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Login.h"
MFD Mfd;        //用户链表节点
FILE *Mfp;      //用户列表指针
String CurrUser;
extern TTreeNode *CurrNode;
extern DIRECTORY Root;
extern DIRECTORY CurrDir;
extern String FilePath;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "XPMenu"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  
  Mfd= new mfd;                           //初始化用户链表
  Mfd->Next=NULL;
  if(!FileExists("MFD.txt"))             //文件不存在
    {
        int f=FileCreate("MFD.txt");
        FileClose(f);
        Mfp=fopen("MFD.txt","r+");
        MFD n=new mfd;
        n->user="root";
        n->password=EnPW("root");
        n->Next=NULL;
        Mfd->Next=n;
        ComboBox1->Items->Add("root");
    }
  else
    {
        Mfp=fopen("MFD.txt","r+");
        fseek(Mfp,0L,2);    //移动文件指针到文件尾
        int pos=ftell(Mfp);  // 取得文件读写指针位置
        if(pos!=0)pos=pos/30+1;    //计算注册用户数量
        InitMFD(Mfp,pos);
    }
    ComboBox1->ItemIndex=0;
}
//---------------------------------------------------------------------------
void TForm1::InitMFD(FILE * MFP,int N)   //初始化用户列表
{
   MFD n;
  String userName;
  String passwd;
  char cuser[15];              //定义文件名和密码长度为15个字符。
  char cpasswd[15];
  if(N==0){                     //文件长度为0
        n=new mfd;
        n->user="root";
        n->password=EnPW("root");
        n->Next=NULL;
        Mfd->Next=n;
        ComboBox1->Items->Add("root");
        return;
    }
                                              
  for (int i=0;i<N;i++)
      {
       for(int j=0;j<15;j++){cpasswd[j]='\0';cuser[15]='\0';}//清空缓冲区
       fseek(MFP,i*30,0);
       fread(&cuser,15,1,MFP);
       fseek(MFP,i*30+15,0);
       fread(&cpasswd,15,1,MFP);
       userName=cuser;
       passwd=cpasswd;
       passwd=passwd.SubString(1,15);
       n=new mfd;
       n->user=userName;
       n->password=passwd;
       n->Next=NULL;
       ComboBox1->Items->Add(userName);
       InserMFD(n);
       }
}
//---------------------------------------------------------------------------
void TForm1::InserMFD(MFD p)
{                                               //添加新用户
   MFD m;
   m=Mfd;
   while (m->Next)m=m->Next;
   m->Next=p;
}
//--------------------------------------------------------------------------
void __fastcall TForm1::ExitFSClick(TObject *Sender)
{
SaveMFD(Mfp);
Close();        
}
//---------------------------------------------------------------------------
int TForm1::Login(String UserName,String UserPassword)
{                                                    //登录
    MFD m=Mfd->Next;
    while (m){
       if (UserName==m->user)
       {
           if(UserPassword==m->password)
           return 0;  //用户名、密码正确
           else
             return 1;   //用户名正确、密码不正确
       }
       m=m->Next;
       }
     return 2;  //用户名不存在
}

void __fastcall TForm1::LoginBnClick(TObject *Sender)
{
if(Edit2->Text=="")
{ShowMessage("密码不能为空!");
   Edit2->SetFocus();
return;
}
int s=Login(ComboBox1->Text,EnPW(Edit2->Text));
   if(s==0)     //合法用户,登录成功
   {
   Edit2->Clear();
   CurrUser=ComboBox1->Text;
   if(CurrUser=="root"){   //超级用户
   Form2->ToolButton20->Visible=true;
   Form2->Caption="欢迎你的光临: "+CurrUser+"  你是超级用户";
   }
   else {
   Form2->Caption="欢迎你的光临: "+CurrUser+"  你是普通用户";
   Form2->ToolButton20->Visible=false;
   }
   //=================================
   CurrDir=Root;
   Form2->TreeView1->Items->Clear();
   Form2->ListTree(Root,NULL,0);
   FilePath="Root\\";
   Form2->ComboBox1->Clear();
   Form2->ComboBox1->Text=FilePath;
   Form2->ShowDir(Root);
   //===================================
   Form1->Hide();
   Form2->Show();
   CurrNode=Form2->TreeView1->TopItem;
   CurrNode->Expand(false);
    }
   else if(s==1)
   {ShowMessage("密码错误!请检查~");
   Edit2->SetFocus();
    return;
    }
   }
//---------------------------------------------------------------------------

void __fastcall TForm1::RegisterClick(TObject *Sender)
{
Edit1->Clear();
Edit3->Clear();
Edit4->Clear();
GroupBox1->Show();
Edit1->SetFocus();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::CancelReClick(TObject *Sender)
{
GroupBox1->Hide();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::OKReClick(TObject *Sender)
{                                      //新用户注册
if(Edit1->Text=="")
{ShowMessage("用户名不能为空!");
Edit1->SetFocus();
return;
}
MFD m=Mfd,n;
    while (m->Next){
       if (Edit1->Text==m->Next->user){
       ShowMessage("该用户名已经存在!");
       Edit1->SetFocus();return;
       }
       m=m->Next;
       }
if(Edit3->Text=="")
{ShowMessage("密码不能为空!");
   Edit3->SetFocus();
return;
}
if(Edit3->Text!=Edit4->Text){
ShowMessage("确认密码不同,请检查!");
Edit3->SetFocus();
return;
}
       n=new mfd;
       n->user=Edit1->Text;
       n->password=EnPW(Edit3->Text);
       n->Next=NULL;
       m->Next=n;
       ShowMessage("注册成功!请登陆!");
       GroupBox1->Hide();
       ComboBox1->ItemIndex=ComboBox1->Items->Add(n->user);
       Edit2->Clear();
       Edit2->SetFocus();
}
//---------------------------------------------------------------------------
void TForm1::SaveMFD(FILE * File)     //保存用户列表
{
   fclose(File);
   DeleteFile("MFD.txt");         //删除老MFD文件
   int f=FileCreate("MFD.txt");  //创建新的MFD文件
   FileClose(f);
   File=fopen("MFD.txt","r+");
   MFD m=Mfd->Next;
   char cuser[15];
   char cpass[15];
   int i=0;
   while(m)
       {
          StrPCopy(cuser,m->user);
          StrPCopy(cpass,m->password);
          fseek(File,i*30,0);
          fwrite(cuser,m->user.Length(),1,File);
          fseek(File,i*30+15,0);
          fwrite(cpass,m->password.Length(),1,File);
          m=m->Next;
          i++;
       }
   fclose(File);
}
//--------------------------------------------------------------------------

String TForm1::EnPW(String passwd)
{                     //简单的密码加密
String enpass;
char buf[15];
StrPCopy(buf,passwd);
for(int i=0;i<passwd.Length();i++)buf[i]+=i+1;
enpass=buf;
return enpass;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ChangBnClick(TObject *Sender)
{                               //更改密码
Sname->Caption=ComboBox1->Text;
OldPw->Clear();
NewPw1->Clear();
NewPw2->Clear();
GroupBox2->Show();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::CancelChangeClick(TObject *Sender)
{
GroupBox2->Hide();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ClearPw(TObject *Sender)
{
Edit2->Clear();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::OKChangeClick(TObject *Sender)
{                                             //修改密码
MFD m=Mfd->Next;
while (Sname->Caption!=m->user)m=m->Next;
if(OldPw->Text=="")
{ShowMessage("旧密码不能为空!");
   OldPw->SetFocus();
return;
}
if(NewPw1->Text=="")
{ShowMessage("新密码不能为空!");
   NewPw1->SetFocus();
return;
}
if(NewPw1->Text!=NewPw2->Text){
ShowMessage("确认新密码不同,请检查!");
NewPw1->SetFocus();
return;
}
if(m->password!=EnPW(OldPw->Text)){
ShowMessage("旧密码不正确");
OldPw->SetFocus();
return;
}
m->password=EnPW(NewPw1->Text);
ShowMessage("密码修改!请登陆!");
GroupBox2->Hide();
Edit2->Clear();
Edit2->SetFocus();
}
//---------------------------------------------------------------------------





⌨️ 快捷键说明

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