2 weixin 37271031 weixin_37271031 于 2017.01.06 17:01 提问

超市商品管理系统的修改 删除部分,可以对已输入文件的内容进行修改 ,但是删除后还是能查询的到怎么改呀

void good::changedailyuse()
{
bool c;
int i,k,m=0;
int num[50];
double cost[50],price[50];
string name[50],sort[50];
ifstream infile("d:\dailyuse.txt",ios::in);
if(!infile)
{
cerr<<" open error"<<endl;
exit(1);
}
cout<<" ";
cout<<setw(9)<<"商品编号";
cout<<setw(9)<<"商品名";
cout<<setw(9)<<"进价";
cout<<setw(9)<<"售价";
cout<<setw(9)<<"类别"<<endl;
for(i=0;i<50;i++)

   {
          cout<<"      ";
          infile>>num[i];
          infile>>name[i];
          infile>>cost[i];
          infile>>price[i];
          infile>>sort[i];
          m++;
          if(infile.eof())break;
   }
   m--;
          for(i=0;i<m;i++)
   {
          cout<<"      ";
          cout<<setw(9)<<num[i];
          cout<<setw(9)<<name[i];
          cout<<setw(9)<<cost[i];
          cout<<setw(9)<<price[i];
          cout<<setw(9)<<sort[i]<<endl;
   }
   infile.close();
   ofstream outfile("d:\\dailyuse.txt",ios::out);
   if(!outfile)
          {
                 cerr<<" open error"<<endl;
                 exit(1);
          }
   cout<<"请输入需要修改的商品的编号。"<<endl;
   cin>>k;
   cout<<"修改:1;删除:0:"<<endl;
   cin>>c;
   if(c)
   {
   for(i=0;i<m;i++)
   {if(k==num[i])k=i;break;}
   cout<<"请输入新的数据:"<<endl;
   cout<<"日用品名:";
   cin>>name[k];
   cout<<"成本价格:";
   cin>>cost[k];
   cout<<"销售价格:";
   cin>>price[k];
   cout<<"日常用品分类:";
   cin>>sort[k];
   for(i=0;i<m;i++)
   {
        outfile<<num[i]<<"   ";
                 outfile<<name[i]<<"   ";
                 outfile<<cost[i]<<"   ";
                 outfile<<price[i]<<"   ";
                 outfile<<sort[i]<<"   "<<endl;
   }

   outfile.close();
   cout<<"已修改成功!"<<endl;
   }
   else
   {
          for(i=0;i<m;i++)
          {
                 if(i!=k)
                 {
                        outfile<<num[i]<<"   ";
                     outfile<<name[i]<<"   ";
                     outfile<<cost[i]<<"   ";
                     outfile<<price[i]<<"   ";
                     outfile<<trademark[i]<<"   "<<endl;
                 }
          }
   outfile.close();
   cout<<"已删除成功!"<<endl;
   }
   menu();

}

3个回答

zhou_zhou12
zhou_zhou12   2017.01.06 17:14

你说的是逻辑删除吧,在商品的属性中加一个表示状态的字段,比如说1表示存在,0表示删除。在进行删除操作时,不是真正意义上的删除,只改变了状态。

zhou_zhou12
zhou_zhou12 回复weixin_37271031: 那你说的就是真正意义上的删除了,我觉得可以删除之后,重新保存在这个文件中,把之前的文件覆盖掉。具体的代码,我不擅长C++,不能解决了,抱歉了哈。
11 个月之前 回复
weixin_37271031
weixin_37271031 (这个程序我也不太懂)需要的就是能将这个内容删除掉,比如说:商品编号为1 ,需要的是能将这个编号1对应的商品信息在程序前一部分所建立的对应文件中给删掉……要怎么做呢
11 个月之前 回复
qq_36740035
qq_36740035   2017.01.06 17:25

在数据库表中加一个字段,1表示存在,0表示删除,查询时只查询状态为存在的就可以了

weixin_37271031
weixin_37271031 我只是勉强能看懂!关于具体怎样实现删除的 一脸的懵啊!
11 个月之前 回复
weixin_37271031
weixin_37271031 那就是自己默认对应的商品编号内容已经没有了??
11 个月之前 回复
qq_36740035
qq_36740035   2017.01.11 09:41

就是删除的时候 只是更改这条记录的字段为删除状态 在查询的时候查询这条记录的存在状态 我是搞java的 c不擅长

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!