gpt4 book ai didi

c++ - CRUD(添加/查看/编辑/删除/查看所有记录)

转载 作者:行者123 更新时间:2023-11-28 04:41:57 24 4
gpt4 key购买 nike

我的字符串输入有问题,每当我输入一个字符串时,程序就会停止运行,而且如果可能的话,请修复我在记录中的语句,因为它们似乎不能正常工作。另外,如何删除字符串?我在这里尝试用“无”替换它作为示例。提前致谢!

这是我的代码:

#include <iostream>
using namespace std;

int main(){

//Initializing
char choice;
int i, j, record=0, totalrecord;
int id[record];
string name[record];
double price[record];
bool back=true;
string none;


//Menu
while(back=true){
cout<<"*******************************"<<endl;
cout<<"[A] Add Record"<<endl;
cout<<"[V] View Record"<<endl;
cout<<"[E] Edit Record"<<endl;
cout<<"[D] Delete Record"<<endl;
cout<<"[L] View All Record"<<endl;
cout<<"Enter your choice and press return: "<<endl;

cin >> choice;

switch (choice){

//Add Record
case 'a':
case 'A':
record++;
cout<<"Input ID: ";
cin>>id[record];
cout<<"Input Name: ";
cin>>name[record];
cout<<"Input Price: ";
cin>>price[record];
break;

//View Record
case 'v':
case 'V':
cout<<"Enter ID you wish to view: ";
cin>>id[record];
cout<<"ID Name Price"<<endl;
cout<<id[record]<<" "<<name[record]<<" "<<price[record]<<endl;
break;

//Edit Record
case 'e':
case 'E':
cout << "Enter ID you wish to edit: ";
cin>>id[record];
cout<<"Input NEW name: ";
cin>>name[record];
cout<<"Input NEW price: ";
cin>>price[record];
break;

//Delete Record
case 'd':
case 'D':
cout << "Enter ID you wish to delete";
cin>>id[record];
id[record]=0;
name[record]=none;
price[record]=0;
break;

//View All Records
case 'l':
case 'L':
cout<<"ID Name Price"<<endl;
for(i=1; i<totalrecord+1; i++){
cout<<id[i]<<" "<<name[i]<<" "<<price[i]<<endl;
}
break;

//Exit Program if invalid input
default:
back=false;
break;
}
}
return 0;
}

最佳答案

好吧,这里有一个问题:

int i, j, record=0, totalrecord;
int id[record];
string name[record];
double price[record];

您正在尝试创建 C++ 不支持的可变长度数组。不仅如此,即使支持它,您也会创建一个大小为 0 的数组,因为 record = 0

因此,您需要一个非 0 的数组大小的编译时常量值。

constexpr std::size_t RECORD_SIZE = 100; // make this any other that isn't less than or equal to 0

然后,你可以像这样创建你的数组

int id[RECORD_SIZE];
string name[RECORD_SIZE];
double price[RECORD_SIZE];

但是,此策略的一个问题是如果您希望拥有超过 RECORD_SIZE 的记录量,因为您无法调整数组的大小。因此,我建议您看看我的最后一点。

您查看、编辑和删除记录时的逻辑也不正确,因为您总是访问无效索引,因为只要数组不存在,record 的值就会指向一个空槽满的。不仅如此,还没有错误检查。

尽管如此,我假设您想根据索引执行这些操作。

std::size_t index = 0;
std::cin >> index;

然后对于查看和编辑操作,您将使用该索引来操作记录。

对于删除操作,您必须将删除点右侧的记录向左移动。

但是,对于这些任务,我最终建议您使用 std::vector,因为它支持您需要的所有操作,而且它具有更大的动态容量。

关于c++ - CRUD(添加/查看/编辑/删除/查看所有记录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49993519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com