博主本人写的啦,大家给赞一个嘛~~
有了这款神器后,再也不怕记不住辣么多的密码啦~~有木有!!!
本软件纯单机模式,不用担心会将你们的密码上传到服务器什么的,(我能说是我不会网络相关的编程吗~再说博主也租不起服务器-_-|
苦逼的程序员。。。
好啦,废话少说,进入正题:
本软件可方便地管理我们的各类密码并将其采用三重加密技术存入文件,因此可放心使用(说不定你自己也找不到存放密码的文件在哪里,更不用说别人了),再也不会因为忘记密码而频繁地找回密码啦。
首先是登陆界面,会要求你输入用户名和密码,按回车确定,无误后才能进入主界面(PS:第一次使用会要求你创建一个用户,输入密码时不带回显)。
主界面(可以新建,删除,修改,查询及退出):
选择“1”:
这样,我们的QQ号及其密码就存进去啦~
可以选择4,再选择4,查看一下:
当然,如果你以后存储的密码很多并且你记得他的账户名或者账号或者密码的话,可以选择123单独查询啦~
至于其他的菜单,比如2和3,希望你自己去试一试哦,和查询的设计差不多的。
最后,一定记得用完该软件的时候按5退出,否则不会保存哦。。下次进来就没有了哦。。
如果不想拷贝代码,编译链接运行神马的,可以直接下载:
请移步:密码管理神器下载(积分不够的话可以留言哦,或者留下你的邮箱,我给你发)
以下是代码:
#include <iostream>
#include <string>
#include <fstream>
#include <stdio.h>
#include <conio.h>
#include <iomanip>
using namespace std;
typedef void v;
const M=50; //最大可存储账户数目
const K=10; //长度
const PW=20; //密码长度
const MOD=10e5; //hash域
class manage_account{
private:
string name;
string account;
string password;
bool bo;
public:
manage_account(string a,string b,string c)
{
name=a;
account=b;
password=c;
}
manage_account()
{}
string get_Name()
{
return name;
}
string get_Account()
{
return account;
}
string get_Password()
{
return password;
}
bool get_bo()
{
return bo;
}
v set_Name(string x)
{
name=x;
}
v set_Account(string x)
{
account=x;
}
v set_Password(string x)
{
password=x;
}
v set_bo_f()
{
bo=false;
}
v set_bo_t()
{
bo=true;
}
};
manage_account p[M];
ofstream foutappDate("D:/账户管理系统/数据.txt:data.txt",ios::app),foutLogin("D:/账户管理系统/登陆.txt:Login.txt",ios::app);
ifstream fin1("D:/账户管理系统/数据.txt:data.txt",ios::in),finLogin("D:/账户管理系统/登陆.txt:Login.txt",ios::in),
<span style="white-space:pre"> </span>finTime("D:/账户管理系统/Time.txt",ios::in),
<span style="white-space:pre"> </span>fid("D:/账户管理系统/search.txt",ios::in);
//哈希算法
int ELFhash(char *key)
{
unsigned long h=0,g;
while(*key!=13)
{
h = (h << 4) + (int)*key++;
g = h & 0xF0000000L;
if(g)
h ^= g >> 24;
h &= ~g;
}
return h % MOD;
}
v mainface()
{
system("cls");
cout<<"\t\t\t 欢迎使用本密码管理软件"<<endl;
cout<<"\t\t\t**************************"<<endl;
cout<<"\t\t\t**\t1、新建账户\t**"<<endl;
cout<<"\t\t\t**\t2、删除账户\t**"<<endl;
cout<<"\t\t\t**\t3、修改账户\t**"<<endl;
cout<<"\t\t\t**\t4、查询账户\t**"<<endl;
cout<<"\t\t\t**\t5、退出系统\t**"<<endl;
cout<<"\t\t\t**************************"<<endl;
}
v main1()
{
string n;
string a;
string s;
cout<<"请输入账户名、账号及密码:";
cin>>n>>a>>s;
for(int i=0;i<M;i++)
{
if(!p[i].get_bo())
{
p[i].set_Name(n);
p[i].set_Account(a);
p[i].set_Password(s);
cout<<"账户名:"<<p[i].get_Name()<<"\t"<<"账号:"<<p[i].get_Account()<<"\t"<<"密码:"<<p[i].get_Password()<<endl;
foutappDate<<setiosflags(ios_base::left)<<setw(20)<<p[i].get_Name()<<"\t"<<setw(20)<<p[i].get_Account()<<"\t"<<setw(20)<<p[i].get_Password()<<endl;
p[i].set_bo_t();
break;
}
}
system("pause");
system("cls");
}
v main2()
{
int a;
cout<<"\t\t1、按账户名删除\t\t2、按账号删除"<<endl;
cout<<"\t\t3、按密码删除\t\t4、删除所有"<<endl;
cin>>a;
if(a!=1&&a!=2&&a!=3&&a!=4)
while (a!=1&&a!=2&&a!=3&&a!=4)
{
cout<<"输入错误,请重新输入!";
cin>>a;
}
char z;
string x;
switch(a)
{
case 1:{
cout<<"请输入账户名:";
cin>>x;
for(int i=0;i<M;i++)
{
if(p[i].get_Name()==x)
{
cout<<"账户名:"<<p[i].get_Name()<<"\t"<<"账号:"<<p[i].get_Account()<<"\t"<<"密码:"<<p[i].get_Password()<<endl;
cout<<"确认删除? 是->y 否->n:";
cin>>z;
if(z=='y'||z=='Y')
{
p[i].set_bo_f();
}
}
}
}break;
case 2:{
cout<<"请输入账号:";
cin>>x;
for(int i=0;i<M;i++)
{
if(p[i].get_Account()==x)
{
cout<<"账户名:"<<p[i].get_Name()<<"\t"<<"账号:"<<p[i].get_Account()<<"\t"<<"密码:"<<p[i].get_Password()<<endl;
cout<<"确认删除? 是->y 否->n:";
cin>>z;
if(z=='y'||z=='Y')
{
p[i].set_bo_f();
}
}
}
}break;
case 3:{
cout<<"请输入密码:";
cin>>x;
for(int i=0;i<M;i++)
{
if(p[i].get_Password()==x)
{
cout<<"账户名:"<<p[i].get_Name()<<"\t"<<"账号:"<<p[i].get_Account()<<"\t"<<"密码:"<<p[i].get_Password()<<endl;
cout<<"确认删除? 是->y 否->n:";
cin>>z;
if(z=='y'||z=='Y')
{
p[i].set_bo_f();
}
}
}
}break;
case 4:{
for(int i=0;i<M;i++)
{
if(!p[i].get_bo())
continue;
cout<<"账户名:"<<p[i].get_Name()<<"\t"<<"账号:"<<p[i].get_Account()<<"\t"<<"密码:"<<p[i].get_Password()<<endl;
}
cout<<"确认全部删除? 是->y 否->n:";
cin>>z;
if(z=='y'||z=='Y')
{
for(int i=0;i<M;i++)
p[i].set_bo_f();
}
}break;
default:cout<<"输入错误,请重新输入!"<<endl;
}
system("pause");
system("cls");
//foutappDate.close();
}
v main3()
{
int a;
cout<<"\t\t1、按账户名修改\t\t2、按账号修改"<<endl;
cout<<"\t\t3、按密码修改\t\t4、模糊查询并修改"<<endl;
cin>>a;
char z;
string x;
switch(a)
{
case 1:{
cout<<"请输入账户名:";
cin>>x;
for(int i=0;i<M;i++)
{
if(p[i].get_bo()&&p[i].get_Name()==x)
{
cout<<"账户名:"<<p[i].get_Name()<<"\t"<<"账号:"<<p[i].get_Account()<<"\t"<<"密码:"<<p[i].get_Password()<<endl;
cout<<"请输入新账户名:";
cin>>x;
cout<<"确认修改? 是->y 否->n:";
cin>>z;
if(z=='y'||z=='Y')
{
p[i].set_Name(x);
}
}
}
}break;
case 2:{
cout<<"请输入账号:";
cin>>x;
for(int i=0;i<M;i++)
{
if(p[i].get_bo()&&p[i].get_Account()==x)
{
cout<<"账户名:"<<p[i].get_Name()<<"\t"<<"账号:"<<p[i].get_Account()<<"\t"<<"密码:"<<p[i].get_Password()<<endl;
cout<<"请输入新账号:";
cin>>x;
cout<<"确认修改? 是->y 否->n:";
cin>>z;
if(z=='y'||z=='Y')
{
p[i].set_Account(x);
}
}
}
}break;
case 3:{
cout<<"请输入密码:";
cin>>x;
for(int i=0;i<M;i++)
{
if(p[i].get_bo()&&p[i].get_Password()==x)
{
cout<<"账户名:"<<p[i].get_Name()<<"\t"<<"账号:"<<p[i].get_Account()<<"\t"<<"密码:"<<p[i].get_Password()<<endl;
cout<<"请输入新密码:";
cin>>x;
cout<<"确认修改? 是->y 否->n:";
cin>>z;
if(z=='y'||z=='Y')
{
p[i].set_Password(x);
}
}
}
}break;
case 4:{
cout<<"请输入(账户名、账号或密码):";
cin>>x;
for(int i=0;i<M;i++)
{
if(p[i].get_bo()&&(p[i].get_Name()==x||p[i].get_Account()==x||p[i].get_Password()==x))
{
string na,ac,pw;
cout<<"账户名:"<<p[i].get_Name()<<"\t"<<"账号:"<<p[i].get_Account()<<"\t"<<"密码:"<<p[i].get_Password()<<endl;
cout<<"请输入新账户名、账号及密码:";
cin>>na>>ac>>pw;
cout<<"确认修改? 是->y 否->n:";
cin>>z;
if(z=='y'||z=='Y')
{
p[i].set_Name(na);
p[i].set_Account(ac);
p[i].set_Password(pw);
}
}
}
}break;
default:cout<<"输入错误,请重新输入!"<<endl;
}
system("pause");
system("cls");
//foutappDate.close();
}
v main4()
{
int a;
cout<<"\t\t1、按账户名查询\t\t2、按账号查询"<<endl;
cout<<"\t\t3、按密码查询\t\t4、查询所有"<<endl;
cin>>a;
switch(a)
{
case 1:{
string x;
cout<<"请输入账户名:";
cin>>x;
cout<<setiosflags(ios_base::left)<<setw(20)<<"账户名\t"<<setw(20)<<"账号\t"<<setw(20)<<"密码"<<endl;
for(int i=0;i<M;i++)
{
if(p[i].get_bo()&&p[i].get_Name()==x)
{
cout<<setiosflags(ios_base::left)<<setw(20)<<p[i].get_Name()<<"\t"<<
setw(20)<<p[i].get_Account()<<"\t"<<setw(20)<<p[i].get_Password()<<endl;
}
else
continue;
}
}break;
case 2:{
string x;
cout<<"请输入账号:";
cin>>x;
cout<<setiosflags(ios_base::left)<<setw(20)<<"账户名\t"<<setw(20)<<"账号\t"<<setw(20)<<"密码"<<endl;
for(int i=0;i<M;i++)
{
if(p[i].get_bo()&&p[i].get_Account()==x)
{
cout<<setiosflags(ios_base::left)<<setw(20)<<p[i].get_Name()<<"\t"<<
setw(20)<<p[i].get_Account()<<"\t"<<setw(20)<<p[i].get_Password()<<endl;
}
else
continue;
}
}break;
case 3:{
string x;
cout<<"请输入密码:";
cin>>x;
cout<<setiosflags(ios_base::left)<<setw(20)<<"账户名\t"<<setw(20)<<"账号\t"<<setw(20)<<"密码"<<endl;
for(int i=0;i<M;i++)
{
if(p[i].get_bo()&&p[i].get_Password()==x)
{
cout<<setiosflags(ios_base::left)<<setw(20)<<p[i].get_Name()<<"\t"<<
setw(20)<<p[i].get_Account()<<"\t"<<setw(20)<<p[i].get_Password()<<endl;
}
else
continue;
}
}break;
case 4:{
cout<<setiosflags(ios_base::left)<<setw(20)<<"账户名\t"<<setw(20)<<"账号\t"<<setw(20)<<"密码"<<endl;
for(int i=0;i<M;i++)
{
for (int j=i;j<M;j++)
{
if ((p[i].get_Name()).compare(p[j].get_Name())>0) //strcmp为何不行?
{
manage_account tmp;
tmp=p[i];
p[i]=p[j];
p[j]=tmp;
}
}
if(!p[i].get_bo())
continue;
cout<<setiosflags(ios_base::left)<<setw(20)<<p[i].get_Name()<<"\t"<<setw(20)<<p[i].get_Account()<<"\t"<<setw(20)<<p[i].get_Password()<<endl;
}
}break;
default:cout<<"输入错误,请重新输入!"<<endl;
}
system("pause");
system("cls");
}
v file()
{
string n;
string a;
string s;
string d;
for(int i=0;i<M;i++)
{
if(p[i].get_bo()==false)
{
if(fin1>>n>>a>>s/*>>d*/)
{
p[i].set_Name(n);
p[i].set_Account(a);
p[i].set_Password(s);
p[i].set_bo_t();
continue;
}
/*
else
{
break;
}*/
}
}
}
v main5()
{
ofstream foutoutDate("D:/账户管理系统/数据.txt:data.txt",ios::out);
for(int i=0;i<M;i++)
{
for (int j=i;j<M;j++)
{
if ((p[i].get_Name()).compare(p[j].get_Name())>0) //strcmp为何不行?
{
manage_account tmp;
tmp=p[i];
p[i]=p[j];
p[j]=tmp;
}
}
if(p[i].get_bo())
foutoutDate<<setiosflags(ios_base::left)<<setw(20)<<p[i].get_Name()<<"\t"<<setw(20)<<p[i].get_Account()<<"\t"<<setw(20)<<p[i].get_Password()<</*"\t"<<setw(10)<<system("date /T>数据.txt")<<*/endl;
}
foutoutDate.close();
cout<<" ********************************************************"<<endl;
cout<<" 谢谢使用! "<<endl;
cout<<" 开发人:Smart "<<endl;
cout<<" 开发日期:2014/10/10 "<<endl;
cout<<" 当前日期:";
system("date /t");
cout<<" 版权所有! "<<endl;
cout<<" ********************************************************"<<endl;
system("pause");
}
v Login()
{
long x;
string Ln,n;
char Lp[PW];
long hash,p;
finTime>>x;
ofstream foutTime("D:/账户管理系统/Time.txt",ios::out);
if(!x)
{
cout<<"首次登陆,请创建一个用户!"<<endl;
cout<<"用户名:";
cin>>Ln;
cout<<endl<<"登录密码:";
for (int i=0;i<PW;i++)
{
Lp[i]=getch();
if (Lp[i]==13)
{
break;
}
}
//哈希算法
hash=ELFhash(Lp);
foutLogin<<Ln<<"\t"<<hash;
cout<<"创建成功!"<<endl;
foutTime<<'1';
}
else
{
finLogin>>n>>p;
do
{
cout<<"用户名:";
cin>>Ln;
cout<<endl<<"登录密码:";
for (int i=0;i<PW;i++)
{
Lp[i]=getch();
if (Lp[i]==13)
{
break;
}
}
hash=ELFhash(Lp);
cout<<endl;
}
while(Ln!=n||hash!=p);
/*for(int i=0,h=1;i<h;i++)
{
if(Ln==n&&Lp==p)
{
h=i-2;
}
else
{
cout<<"输入错误!"<<endl;
h++;
}
if(i==3)
{
cout<<"您已被判定为恶意用户,系统即将退出!"<<endl;
h=i-2;
return 0;
}
}*/
foutTime<<++x;
}
system("cls");
finTime.close();
foutTime.close();
}
v main()
{
bool a=true;
Login();
file();
int x;
while(a)
{
mainface();
cin>>x;
switch(x)
{
case 1:main1();break;
case 2:main2();break;
case 3:main3();break;
case 4:main4();break;
case 5:a=false;main5();break;
default:cout<<"输入有误,请重新输入!"<<endl;
}
}
}