这是传入二进制文件的show1函数和读取信息的show2函数,希望能得到大佬的帮助
void show1() {
//获取初始化信息
cout << "请输入账号:";
string acNumber;
cin >> acNumber;
cout << "请输入用户名:";
string name;
cin >> name;
cout << "请输入身份证号:";
string id;
cin >> id;
cout << "请输入地址:";
string addr;
cin >> addr;
cout << "请输入存款金额:";
double sumOfMonney;
cin >> sumOfMonney;
//cout << "请设置账户密码:";
string p;
p = getPassword();
//产生账户
Account newaccount(acNumber, id, name, addr, sumOfMonney, p);
//打开二进制文件存储账户
string fname = "storeInfo";
fstream fs(fname, ios::binary | ios::out);
if (!fs) {
cout << "存储文件打开失败" << endl;
}
//acNumber
int len = newaccount.getAcNumber().length();
fs.write((char*)&len, sizeof(int));
fs.write(newaccount.getAcNumber().c_str(), len);
//id
len = newaccount.getID().length();
fs.write((char*)&len, sizeof(int));
fs.write(newaccount.getID().c_str(), len);
//name
len = newaccount.getName().length();
fs.write((char*)&len, sizeof(int));
fs.write(newaccount.getName().c_str(), len);
//addr
len = newaccount.getAddr().length();
fs.write((char*)&len, sizeof(int));
fs.write(newaccount.getAddr().c_str(), len);
//sumOfMonney
double s = newaccount.getSumOfMonney();
fs.write((char*)&s, sizeof(double));
//password
len = newaccount.getPassword().length();
fs.write((char*)&len, sizeof(int));
fs.write(newaccount.getPassword().c_str(), len);
//state
bool state = true;
fs.write((char*)&state, sizeof(bool));
//关闭文件
fs.flush();
fs.close();
cout << "新建账户成功!" << endl;
}
//读取账户信息
void show2() {
//根据信息索引用户账号
cout << "请输入您的账号:" << endl;
string num;
cin >> num;
fstream fs("storeInfo", ios::binary | ios::in);
if (!fs) {
cout << "读取账户信息失败,请确保已建立账户。" << endl;
}
Account a;
//判断文件是否索引完毕
while (!fs.eof()) {
char buffer[100] = { 0 };
int len = 0;
//acNumber
fs.read((char*)&len, sizeof(int));
fs.read(buffer, len);
a.setAcNumber(buffer);
//id
fs.read((char*)&len, sizeof(int));
fs.read(buffer, len);
a.setID(buffer);
//name
fs.read((char*)&len, sizeof(int));
fs.read(buffer, len);
a.setName(buffer);
//addr
fs.read((char*)&len, sizeof(int));
fs.read(buffer, len);
a.setAddr(buffer);
//sumOfMonney
double monney = 0;
fs.read((char*)&monney, sizeof(double));
a.setSumOfMonney(monney);
//password
fs.read((char*)&len, sizeof(int));
fs.read(buffer, len);
a.setPassword(buffer);
//state
bool state =true;
fs.read((char*)&state, sizeof(bool));
fs.read(buffer, len);
a.setState(buffer);
//找到用户账号
if (a.getAcNumber() == num) {
//根据密码保护用户账户
for (int i = 0;i < 3;i++) {
cout << "请第" << i + 1 << "次输入密码(仅能输入三次):";
string p;
p = getPassword();
//密码输入正确,显示用户信息
if (p == a.getPassword()) {
a.showInfo();
fs.close();
return;
}
//输入错误,还有输入机会
else {
if (i < 2)
cout << "密码错误,请重新输入。" << endl;
}
}
//输入次数用完,回到主菜单
cout << "密码不正确。";
return;
}
}
//未索引到该账号
cout << "此账户不存在,请注册" << endl;
}