gpt4 book ai didi

c++ - 我如何只显示文件中的一个帐户?

转载 作者:行者123 更新时间:2023-11-28 04:10:17 25 4
gpt4 key购买 nike

我是 c++ 的新手,目前面临一些障碍,希望有人能帮助我解决这个问题。下面是我的代码:

首先,用户需要输入“帐号”、“账户持有人姓名”和“存款”,所有数据将存储到自动创建的文本文件中。然后用户需要使用正确的“帐号”和“账户持有人姓名”登录。但是登录成功后,会显示用户刚才创建的所有账号。

程序名称:银行管理系统

问题:- 如果创建多个账户,则显示一次创建的所有账户。

#include <iostream>
#include <stdlib.h>
#include <fstream>
using namespace std ;

void create_account ()
{ long long int acc_no ;
string name ;
double deposit ;
char choice ;

do{
system ("cls");
cout << "PLEASE CREATE YOUR ACCOUNT !" << endl ;
cout << "ENTER THE ACCOUNT NO : " ;
cin >> acc_no ;
cout <<"ENTER THE NAME OF THE ACCOUNT HOLDER : " ;
cin.ignore() ;
getline( cin, name ) ;
cout << "ENTER AMOUNT FOR DEPOSIT : RM " ;
cin >> deposit ;

ofstream outfile ("accounts.txt", ios::app) ;
outfile << endl << acc_no << " " << name << " " << deposit << endl ;
outfile.close() ;
cout << endl << endl ;
cout << "ACCOUNT SUCCESSFULLY CREATED !" << endl << endl ;
system ("pause") ;
do{
cout << "DO YOU WANT TO CONTINUE ? "<< endl ;
cout << "ENTER YOUR CHOICE ( Y OR N ): " ;
cin >> choice ;
}while (choice != 'y' && choice != 'Y' && choice != 'n' && choice != 'N' );
}while (choice == 'y' || choice == 'Y');
}


void view_account ()
{
ifstream infile("accounts.txt",ios :: in ) ;
string x , y , z ;
while (infile >> x >> y >> z )
{
cout << endl <<"***************************************************"
<< endl << "ACCOUNT NUMBER IS : " << x
<< endl << "ACCOUNT HOLDER NAME IS : " << y
<< endl << "BALANCE AMOUNT : RM " << z << endl
<< endl <<"***************************************************" ;
}
infile.close() ;
cout << endl << endl ;
system("pause");
}



void login()
{ string acc_no1, name1;

int offset ;
string line ;
ifstream infile ;
infile.open("accounts.txt");
cout << endl << endl ;
cout << "PLEASE LOGIN YOUR ACCOUNT ! " << endl ;
cout << "ENTER YOU ACCOUNT NO : " ;
cin >> acc_no1 ;
cout << "ENTER ACCOUNT HOLDER NAME : ";
cin.ignore() ;
getline ( cin , name1 ) ;
if (infile.is_open())
{
while(!infile.eof())
{
getline (infile,line);
if ( (offset = line.find(acc_no1,0)) != string::npos && ((offset = line.find(name1,0)) != string::npos) )
{
cout << "LOGIN SUCCESSFULLY" << endl ;
system("pause");
view_account ();
}
}
infile.close() ;
}else
cout << "" ;
system("cls") ;
cout << endl << "LOGIN FAILED !" << endl ;
system("pause");

}

int main ()
{
create_account () ;
login();
}

最佳答案

Problem : - if create more than one account, then it will display all the accounts that have created at one time.

那是因为您的 view_account() 函数遍历 accounts.txt 文件中的所有帐户并打印所有这些帐户。而不仅仅是您刚刚登录的那个。例如,您可以传递并比较帐号并仅打印匹配的帐号来解决此问题。


您的代码可以使用一些抽象。我建议您创建一个类 accountoverload the bitshift operators用于将它们插入 IO 流接口(interface)。

然后您可以编写一个account_store 类,它可以从文件和hold the accounts in memory 加载和存储帐户。介于两者之间。

您可以为这两个添加登录方法。 account::login() 将验证帐户名称,account_store::login_account() 将查询帐号并从容器中获取匹配的帐户对象(如果实际上present),然后尝试登录用户。

剩下的控制流程应该很简单,确保只显示相关帐户的详细信息应该很简单。

关于c++ - 我如何只显示文件中的一个帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57950674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com