處理此代碼,我有一個帳戶信息數組。我需要編寫一個函數,讓用戶輸入名稱的一部分,並在數組中搜索它。C++比較結構數組中的字符串
更具體地說:「搜索特定客戶帳戶的結構數組,它應接受客戶名稱的一部分作爲參數,然後搜索名稱與其匹配的帳戶,應顯示所有匹配的帳戶(包括所有客戶的信息),如果沒有帳戶匹配,就會顯示一條消息。「
我似乎無法正確比較功能,我想我只是不正確地接近這個問題,並會真正感謝一些指導。
下面的代碼,我工作的功能「searchAccount」
#include <iostream>
#include <iomanip>
#include <string>
#include <cstring>
#include <fstream>
using namespace std;
struct Customer
{
string name;
string address;
string city;
string state;
int zip;
string num;
string date;
double bal;
};
void readData(Customer []);
void displayData(Customer []);
void changeInfo(Customer []);
void searchAccount(Customer []);
const int MAX = 10;
int main()
{
int selection;
Customer data[MAX];
do
{
cout << "Customer Accounts Menu" << endl;
cout << "------------------------------" << endl;
cout << "1. Read customer info into array. " << endl;
cout << "2. Change account information. " << endl;
cout << "3. Display information in array. " << endl;
cout << "4. Search for customer account. " << endl;
cout << "5. Sort customer balances in descending order. " << endl;
cout << "6. Sort customer names in ascending order. " << endl;
cout << "7. Compare names of two customers & replace smallest with address of largest" << endl;
cout << "8. Exit program" << endl;
cout << "------------------------------" << endl;
cout << "Enter a selection: " << endl;
cin >> selection;
switch (selection)
{
case (1):
readData(data);
break;
case (2):
changeInfo(data);
break;
case (3):
displayData(data);
break;
case (4):
searchAccount(data);
break;
case (5):
break;
case (6):
break;
case (7):
break;
default: cout << "Please enter a valid selection." << endl;
}
}while(selection != 8);
return 0;
}
void readData(Customer data[])
{
int num = 0;
ifstream inFile;
inFile.open("customers.txt");
if (!inFile)
{
cout << "Cannot open the file" << endl;
}
else
{
inFile >> data[num].name >> data[num].address >> data[num].city >> data[num].state >> data[num].zip >> data[num].num >> data[num].date >> data[num].bal;
while (inFile)
{
num++;
inFile >> data[num].name >> data[num].address >> data[num].city >> data[num].state >> data[num].zip >> data[num].num >> data[num].date >> data[num].bal;
}
}
inFile.close();
}
void displayData(Customer data[])
{
for (int num = 0; num < MAX; num++)
{
cout << data[num].name << " " << data[num].address << " " << data[num].city << " " << data[num].state << " " << data[num].zip << " " << data[num].num << " " << data[num].date << " " << data[num].bal << endl;
}
}
void changeInfo(Customer data[])
{
string name;
cout << "Enter customer name to change" << endl;
cin >> name;
for (int i = 0; i < MAX; i++)
{
if (data[i].name == name)
{
cout << "Enter new information for " << name << endl;
cout << "Name: " << endl;
cin >> data[i].name;
cout << "Address: " << endl;
cin >> data[i].address;
cout << "City: " << endl;
cin >> data[i].city;
cout << "State: " << endl;
cin >> data[i].state;
cout << "Zip: " << endl;
cin >> data[i].zip;
cout << "Phone Number: " << endl;
cin >> data[i].num;
cout << "Date of Last Payment: " << endl;
cin >> data[i].date;
cout << "Account Balance: " << endl;
cin >> data[i].bal;
}
}
}
void searchAccount(Customer data[])
{
string name;
cout << "Enter a name to search: " << endl;
cin >> name;
for (int i = 0; i < MAX; i++)
{
if (strcmp(name, "data[i].name")
//Not sure what to put here, the function above won't correctly as well
}
}
很好提供示例,但[mcve](http://stackoverflow.com/help/mcve)用** M ** inimal代碼更好。 – Jarod42