如何仅显示文件中的一个帐户?
How do i display only one account from the file?
我是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();
}
问题 : - 如果创建多个帐户,则它将显示一次创建的所有帐户。
这是因为您的view_account()
函数循环遍历accounts.txt
文件中的所有帐户并打印所有帐户。而不仅仅是您刚刚登录的那个。例如,您可以传递和比较帐号,并仅打印匹配的帐户来解决此问题。
代码可以使用一些抽象。我建议您创建一个类account
并重载位移运算符以将它们插入 IO 流接口。
然后,您可以编写一个account_store
类,该类可以从文件加载和存储帐户,并将帐户保存在两者之间的内存中。
您可以向这两者添加登录方法。account::login()
将验证帐户名,account_store::login_account()
将查询帐号并从容器(如果实际存在(中获取匹配的帐户对象,然后尝试登录用户。
其余的控制流应该非常简单,确保仅显示相关帐户的详细信息应该是微不足道的。
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- C++试图读取一个文件并输出到另一个文本文件
- gtkmm 显示文件内容
- 生成一个生成文件,该生成文件使用Automake在一个步骤中编译和链接所有源文件
- 如何在 MFC 中显示文件的所有行
- 从另一个 cpp 文件更改结构内、映射键内的变量
- 如何在另一个 CPP 文件中使用一个 cpp 文件中的函数?
- 从 .lib 文件创建一个.dll文件
- 将两个 cpp 文件合并为一个 cpp 文件
- 使用命名空间在另一个".cpp"文件中定义
- 将所有 *.txt 文件合并到一个文本文件中,其名称由用户使用 C++ 提供
- 当我可以在头文件中声明和定义所有文件时,为什么要创建一个.cpp文件?
- 使用C++对一个巨大文件中的文本行进行字典式外部排序
- 是否可以使用另一个lua文件中定义的表,该表在当前文件中不需要作为模块
- 程序应该显示文件的最后5行,但它不适用于大文件
- 如何使用PHP将上传到本地主机的一个html文件重定向到磁盘上的另一个html文档
- 如何仅显示文件中的一个帐户?
- 单击按钮时显示另一个 UI 文件
- 如何在c++中声明一个文本文件,并通过读取文件中的数据来显示学生的平均分数