查看: 791|回复: 4
|
C++ 密码的问题...
[复制链接]
|
|
我的program 可以输入密码了,但是如果要更换我应该怎样做?
我现在是read密码from password.txt, 但是如果要换我要怎样写进password.txt 来覆盖原本的密码?
我的coding 如下,请各位大大帮忙,谢谢!
//This Peoject is about system banking.
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<cstring>
#include<conio.h>
#include<iomanip>
using namespace std;
double storemoney(double);
double takeoutmoney(double);
double checking(double);
int password(int);
int password2(int);
int main()
{
int a;
int sm;
int tom;
int cm;
int passing;
int newpass;
password(passing);
cout<<"\n\n\n\n";
cout<<"ATM BANK OF EVOLUTION\n\n\n";
cout<<"1.SAVING\n";
cout<<"2.DRAWING\n";
cout<<"3.CHECKING ACCOUNT\n";
cout<<"4.CHANGE PASSWORD\n";
cout<<"5.Quit\n\n";
cout<<"Please Enter A Number\n";
cin>>a;
if (a==1)
storemoney(sm);
else if (a==2)
takeoutmoney(tom);
else if (a==3)
checking(cm);
else if (a==4)
password2(newpass);
else
cout<<"Thank You\n"<<"Please Come Again\n";
return 0;
}
//function to store money
double storemoney(double sm)
{
double earn;
ifstream infile;
ofstream outacc;
ofstream outfile;
double accmoney;
char confirm;
infile.open("account.dat");
if(infile)
{
while(infile >> accmoney )
{
storeagain:cout<<"How much you want to store?\n";
cin>>earn;
cin.ignore();
if(earn<=0)
{
cout<<"Invalid Input\n";
goto again;
}
else if(earn>0)
{
cout<<"You have store "<<earn<<" in the bank\n";
accmoney = (accmoney + earn)*1.02;
blmoney:cout<<"Your balance in the account is ";
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout<<setprecision(2)<<accmoney<<endl;
}
else
{
again:cout<<"Do You Want to Store Again?(Y/N)\n";
cin>>confirm;
if(confirm=='y'||confirm=='Y')
goto storeagain;
else if(confirm=='n'||confirm=='N')
goto blmoney;
else
cout<<"Invalid Input\n";
}
}
infile.close();
outacc.open("account.dat");
outacc<<accmoney;
outacc.close();
outfile.open("result.dat");
if(!outfile)
{
cerr<<"result.dat could not be opened";
}
else
{
outfile<<"The account balance is "<<accmoney<<""<<endl;
setprecision(2);
outfile.close();
}
}
else
{
cerr<<"Unable to open the account data"<<endl;
}
return 0;
}
//function to take out money from bank
double takeoutmoney(double tom)
{
double outmoney;
ifstream infile;
ofstream outacc;
ofstream outfile;
double accmoney;
char confirm2;
infile.open("account.dat");
if(infile)
{
while(infile >> accmoney )
{
takeagain:cout<<"How much you want to take out?\n";
cin>>outmoney;
cin.ignore();
if(outmoney<=0)
{
cout<<"Invalid Input\n";
goto again;
}
else if(outmoney>0)
{
cout<<"You take out "<<outmoney<<" in the bank\n";
accmoney = accmoney - (outmoney*1.02);
blmoney:cout<<"Your balance in the account is ";
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout<<setprecision(2)<<accmoney<<endl;
}
else
{
again:cout<<"Do You Want To Take Money Again?(Y/N)\n";
cin>>confirm2;
if(confirm2=='y'||confirm2=='Y')
goto takeagain;
else if(confirm2=='n'||confirm2=='N')
goto blmoney;
else
cout<<"Invalid Input\n";
goto again;
}
}
infile.close();
outacc.open("account.dat");
outacc<<accmoney;
outacc.close();
outfile.open("result.dat");
if(!outfile)
{
cerr<<"result.dat could not be opened";
}
else
{
outfile<<"The account balance is ";
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout<<setprecision(2)<<accmoney<<endl;
outfile.close();
}
}
else
{
cerr<<"Unable to open the account data"<<endl;
}
return 0;
}
//function to checking account
double checking(double cm)
{
double accmoney;
fstream infile;
infile.open("account.dat");
while(infile>>accmoney)
cout<<"Your balance in the bank is ";
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout<<setprecision(2)<<accmoney<<endl;
infile.close();
return 0;
}
//function to checking password
int password(int passing)
{
int ch;
int i=0;
char user_in[50];
char read[50];
ifstream read_pass("pass.txt");
if(read_pass.fail())
cerr<<"ERROR";
passagain:cout<<"Enter the correct password to access the program\n";
fflush(stdout);
while ((ch = getch()) != EOF && ch != '\n' && ch != '\r') //&&i<10)
{
if (ch == '\b' && i > 0)
{
cout<<"\b \b";
fflush(stdout);
i--;
user_in[i] = '\0';
}
else if (isalnum(ch))
{
putchar('*');
user_in[i++] = (char)ch;
}
}
user_in[i] = '\0';
read_pass.getline(read, 50);
if(strcmp(user_in,read)){
cout<<"\nAccess denied\n\n";
goto passagain;
}
return 0;
}
//function to change password...
int password2(int newpass)
{
int ch2;
int n=0;
char user_in[50];
char read[50];
ifstream read_pass("pass.txt");
if(read_pass.fail())
cerr<<"ERROR";
cout<<"Please Enter A new password\n";
fflush(stdout);
while((ch2=getch())!=EOF&&ch2!='\n'&&ch2!='\r')
{
if (ch2=='\b'&&n>0)
{
cout<<"\b \b";
fflush(stdout);
n--;
user_in[n]='\0';
}
else if (isalnum(ch2))
{
putchar('*');
user_in[n++]=(char)ch2;
}
}
cout<<"\n";
cout<<"You Successful To Change The Password"<<endl;
main();
return 0;
} |
|
|
|
|
|
|
|
发表于 23-11-2005 03:38 AM
|
显示全部楼层
原帖由 evo9 于 23-11-2005 01:09 AM 发表
我的program 可以输入密码了,但是如果要更换我应该怎样做?
我现在是read密码from password.txt, 但是如果要换我要怎样写进password.txt 来覆盖原本的密码?...
要更改的密码已经收在user_in里了。
再加段code,将写进pass.txt就行了。
ifstream read_pass("pass.txt");
if(read_pass.fail())
cerr<<"ERROR";
cout<<"Please Enter A new password\n";
fflush(stdout);
这一段code是用来读file的,在 function int password2(int newpass)里没用到,可删掉。改成一段写file的code即可。
ofstream write_pass("pass.txt",ios::out);
if(write_pass.fail())
cerr<<"ERROR";
cout<<"Please Enter A new password\n";
fflush(stdout);
改成这段code,是用来打开pass.txt。准备将user_in写进去。
之后在将新密码储存在user_in后,加入:
write_pass<<user_in<<endl;
就将密码写进pass.txt里了。 |
|
|
|
|
|
|
|

楼主 |
发表于 23-11-2005 02:04 PM
|
显示全部楼层
//function to change password...
int password2(int newpass)
{
int ch2;
int n=0;
char user_in[50];
char read[50];
ofstream write_pass("pass.txt",ios: ut);
if(write_pass.fail())
cerr<<"ERROR";
cout<<" lease Enter A new password\n";
fflush(stdout);
while((ch2=getch())!=EOF&&ch2!='\n'&&ch2!='\r')
{
if (ch2=='\b'&&n>0)
{
cout<<"\b \b";
fflush(stdout);
n--;
user_in[n]='\0';
write_pass<<user_in<<endl;
}
else if (isalnum(ch2))
{
putchar('*');
user_in[n++]=(char)ch2;
write_pass<<user_in<<endl;
}
}
cout<<"\n";
cout<<"You Successful To Change The Password"<<endl;
main();
return 0;
}
我改了,可是还是不能....
我把密码改称david,
我的pass.txt 就自动变成
dÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ
daÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ
davÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ
daviÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ
davidÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ
谢谢,楼上的帮忙
请高手再指点... |
|
|
|
|
|
|
|
发表于 23-11-2005 05:26 PM
|
显示全部楼层
RE 原帖由 [i]evo9[/i] 于 23-11-2005 02:04 PM 发表
//function to change password...
int password2(int newpass) //int newpass 可以删掉,因为没用到。{
int ch2;
int n=0;
char user_in[50];
char read[50]; //char read[50]; 可以删掉,因为没用到。
ofstream write_pass("pass.txt",ios:ut);
if(write_pass.fail())
cerr<<"ERROR";
cout<<"Please Enter A new password\n";
fflush(stdout);
while((ch2=getch())!=EOF&&ch2!='\n'&&ch2!='\r')
{
if (ch2=='\b'&&n>0)
{
cout<<"\b \b";
fflush(stdout);
n--;
user_in[n]='\0';//这段code放错地方了应该放在 这里
}
else if (isalnum(ch2))
{
putchar('*');
user_in[n++]=(char)ch2;
write_pass<<user_in<<endl;//这段code放错地方了应该放在 这里 }
}
user_in[n]='\0';
write_pass<<user_in<<endl;
cout<<"\n";
cout<<"You Successful To Change The Password"<<endl;
main();
return 0;
} |
|
|
|
|
|
|
|

楼主 |
发表于 23-11-2005 06:21 PM
|
显示全部楼层
谢谢搂上的大大,现在整个program 没有error, compile 时候没有error 和warning,
但是build的时候就有两个error....
main2.obj : error LNK2001: unresolved external symbol "int __cdecl password(int)" (?password@@YAHH@Z)
Debug/main2.exe : fatal error LNK1120: 1 unresolved externals
请问是什么意思?
请各位大大帮忙....谢谢! |
|
|
|
|
|
|
| |
本周最热论坛帖子
|