我必须使用用户输入的ID从数据库中删除饮料..所以我该如何继续?我不确定在if条件下写什么?
class Drink{
private:
float cost;
char product_id[10];
char dname[30];
int numDrink;
public:
void addDrink(char drinkname[],float price,char id[]);
void delDrink(char drinkname[],char id[]);
//void updateItem();
//void searchItem();
};
Drink drinkBase[100];
void Drink::addDrink(char drinkname[],float price,char id[])
{
strcpy(drinkBase[numDrink].dname,drinkname);
strcpy(drinkBase[numDrink].product_id,id);
drinkBase[numDrink].cost = price;
cout<<"\nItem inserted successfully!"<<endl;
numDrink++;
}
void Drink::delDrink(char drinkname[],char id[])
{
int i;
for(int i=0;i<numDrink;i++){
if((strcmp(drinkname,drinkBase[i].dname)==0)&&
(drinkBase[i].product_id=id))
{
cout<<"\nItem deleted successfully";
return;
}
}
}
答案 0 :(得分:-1)
由于您的数组大小是固定的,您可以使用空名称和/或id“标记”它被删除。但是,你会遇到通过numDrink
跟踪“最后”饮料的问题。
您可以将其设置为动态大小,但实际上您应该使用STL list或vector。这样你可以做这样的事情:
for (auto it = drinks.begin(); it != drinks.end(); ++it) {
if ((strcmp(drinkname,(*it).dname) == 0) && ((*it).product_id = id)) {
drinks.erase(it);
break;
}
}
但要注意迭代器和循环。上面的代码适用于一次删除单个项目。如果您不熟悉,我建议您阅读iterators。