首先,我需要澄清一些事情: 英语不是我的第一语言,我可能无法正确翻译。 这仅适用于学校作业。我不想要任何精心设计的东西。 我需要在1月底之前完成这项工作,并且我做得最快,越好。并且认真地认为这是一个艰难的死线。
我只是希望能够读取,写入和搜索文件。我很可能需要将.txt文件转换为二维字符串数组(我不确定这是否是正确的术语)。
基本上我正在制作一个程序放入ATM。名为 account.txt 的第一个.txt文件将具有以下内容:
John 12345
George 11111
Lucas 22222
Mary 33333
第一个单词是用户名,第二个单词是密码,它们用空格分隔。 后来我意识到我需要一个名为 balance.txt 的第二个文件,在整数数组中写下每个帐户的余额,如下所示:
65
0
100
150
我需要能够写入文件,以防运行程序的人想要创建一个新帐户,其中该人将输入2件事,用户名,密码,然后是第二个文件的当前余额。< / p>
到目前为止,我的代码是:
#include <iostream>
using namespace std;
class cust_acc{
private:
int id;
double balance;
public:
cust_acc(){
cout<<"Account's ID: ";
cin>>id;
cout<<"Starting Balance: ";
cin>>balance;
cout<<"Account: "<<id<<" created."<<endl<<endl;
}
void withdraw(){
double temp;
cout<<"Amount to Withdraw: ";
cin>>temp;
if(temp<=balance)
balance-=temp;
else{
cout<<"The amount you requested to withdraw is greater than your current balance."<<endl;
cout<<"Your account was not charged."<<endl;
}
}
void deposit(){
double temp;
cout<<"Amount to Deposit: ";
cin>>temp;
balance+=temp;
}
void inform(){
cout<<"Your current Balance is: "<<balance<<endl;
}
};
int main(void){
int choice;
cust_acc customer;
do {
cout<<"Withdraw: 1"<<endl;
cout<<"Deposit: 2"<<endl;
cout<<"Inform: 3"<<endl;
cout<<"Quit: 4"<<endl;
cin>>choice;
switch (choice) {
case 1:
customer.withdraw();
break;
case 2:
customer.deposit();
break;
case 3:
customer.inform();
break;
case 4:
break;
default:
cout<<"Wrong number."<<endl;
break;
}
}while(choice!=4);
return(0);
}
这段代码直接来自我的班级我的编写方式,我还没有做任何改动。最后,我会将 ID 更改为用户名并添加密码。
我意识到我已经创建了一个名为 cust_acc 的函数,并创建了一个名为 customer 的对象(或其他任何名称)。我不想改变这些事情,比如创建一个新对象。
我只想....我想在我的函数构造函数中打开.txt文件并将它们分别插入到一个字符串和一个整数数组中,并且能够搜索文件以匹配用户名密码的方式如下: 用户的输入进入临时变量,然后程序搜索字符串数组的第一列(插入了account.txt文件的内容), 找到它在数组上的行(例如 account [0] [3] (自从我们上次使用数组以来它实际上已经有一段时间了,所以我可能错了它的语法) 然后用户写入密码,程序将其与例如 account [1] [3] 进行比较。
还能够在用户提供用户名(将在文件末尾写入同时创建新行)的同时在文件末尾写入密码(将在用户名后写入)它们之间的空间)以及最后将在balance.txt文件末尾写入的起始余额(同时也创建一个新行)。 还需要创建新行,以便在将不同的帐户放入数组变量时可以区分它们。 哦,差点忘了最重要的:能够覆盖文件balance.txt
至于我目前的代码,我会对其进行修改,制作另一个菜单,允许用户创建一个新帐户。
我试图搜索这些东西,但每个人都在做自己特别的事情,在每一行前面写 std :: 并使用一些随机库......我找不到一个简单的有效来源
如果它有助于我使用类似的东西:(在我将account.txt放入字符串2维数组之后) 读取用户名,搜索数组的第一列,直到找到匹配的用户名,或者搜索进入没有写入任何内容的行。但我的问题是如何搜索,我意识到我不知道如何在新帐户的情况下向任何数组添加行。我也可以使用3个一维数组(userename.txt,password.txt,balance.txt)。
我想感谢所有评论并试图帮助我的人,但让我更清楚一点。这基本上就是我老师所说的:
从上面的代码(我们在课堂上写的那个)做出必要的 这样:
- 您从用作&#34;数据库的文本文件中读取用户名,密码和余额&#34;
- 您搜索您的&#34;数据库&#34;将用户名与其密码和余额相匹配
- 然后你在那个文件上写,因为你在开头也有一个菜单,以防用户想要创建一个新的帐户 他基本上要求我们找到一种方法来编写,阅读和搜索文件。
所以 tl; dr 版本,据我所知,我需要列出此列表中的项目(经过一些实现):
答案 0 :(得分:1)
将文本文件用作数据库的最简单方法是使用固定长度字段。这允许快速阅读(以块读取)并且您可以计算记录的位置并寻找它。
请注意,如果要修改文本文件,可能需要将整个文本文件写入新文件。但是,使用固定宽度格式,您可以在不创建新文件的情况下修改记录。插入时,需要写入新文件。