📄 rework.cpp
字号:
//修改价格,数量
#include"begin.h"
void basic::rework( fstream f )
{ int choice ; bargain peijian ;
char key1[10]; char key2[15];
int num1 ;double num2,num3; char *s="end";
f.seekp( 0, ios::end ) ;
long posEnd = f.tellp() ; // 记录文件末尾位置
cout << "********** 修改记录 **********\n" ;
while (1)
{ cout << "请选择操作:\n"
<< "1--修改记录 0--退出\n" ;
cin >> choice ;
switch ( choice )
{ case 1:
{ f.seekp( 0, ios::beg ); // 从文件头开始检索
cout << "请输入代号和简称:\n?代号: " ; cin>>key1 ;// 输入代号和简称进行查找
cout <<"?简称:"; cin >>key2;
do // 按代号和简称查找,读数据赋给结构变量peijian
{ f.read((char *) & peijian, sizeof(struct bargain)) ;
} while ((strcmp( peijian.id,key1) || strcmp(peijian.jiancheng,key2)) && f.tellg() != posEnd ) ;
if (!strcmp(key1,peijian.id) && !strcmp(key2 ,peijian.jiancheng) ) // 找到记录
{ cout<<setiosflags(ios::left)<<setw(10)
<<"代号"<<setw(12)<<"名称"<<setw(30)
<<"简称"<<setw(10)<<"类型"<<setw(10)<<"数量"
<<setw(10)<<"价钱"<<endl;
cout<<setiosflags(ios::left)<<setw(10)
<<peijian.id<<setw(12)<<peijian.name<<setw(30)
<<peijian.jiancheng<<setw(10)<<peijian.type <<setw(3)
<<setprecision(2)<<resetiosflags(ios::left)
<<setiosflags(ios::fixed|ios::showpoint)<<peijian.account<<setw(11)
<<peijian.price<<endl;
cout << "请输入修改的数量和价格:\n?数量: " ;
cin >> num1;
cout <<"?价格:";
cin >> num2;
if ( num1>0 &&num2>0 )
{peijian.account = num1; // 修改价格
peijian.price = num2;}
else { cout << "价格或数量输入错误,请重新输入!\n" ; continue; }
f.seekp( -long( sizeof( bargain ) ), ios::cur ); // 文件指针复位
f.write( (char *) & peijian , sizeof( bargain ) ) ; // 修改文件记录
cout <<"已修改成功!"<< endl
<<setiosflags(ios::left)<<setw(10)
<<peijian.id<<setw(10)<<peijian.name<<setw(15)
<<peijian.jiancheng<<setw(6)<<peijian.type <<setw(10)<<peijian.account<<setw(8)
<<setprecision(2)<<resetiosflags(ios::left)
<<setiosflags(ios::fixed|ios::showpoint)<<peijian.price<<endl;
}
else cerr << "没有该条记录,不能完成修改!\n" ;
break ;
}
case 110:
{ f.seekp( 0, ios::beg ); // 从文件头开始检索
cout << "请输入代号和简称:\n?代号: " ; cin>>key1 ;// 输入代号和简称进行查找
cout <<"?简称:"; cin >>key2;
do // 按代号和简称查找,读数据赋给结构变量peijian
{ f.read((char *) & peijian, sizeof(struct bargain)) ;
} while ((strcmp( peijian.id,key1) || strcmp(peijian.jiancheng,key2)) && f.tellg() != posEnd ) ;
if (!strcmp(key1,peijian.id) && !strcmp(key2 ,peijian.jiancheng) ) // 找到记录
{cout <<setiosflags(ios::left)<<setw(10)
<<"代号"<<setw(12)<<"名称"<<setw(30)
<<"简称"<<setw(10)<<"类型"<<setw(10)<<"数量"
<<setw(10)<<"原价"<<setw(10)<<"售价"<<endl;
cout<<setiosflags(ios::left)<<setw(10)
<<peijian.id<<setw(12)<<peijian.name<<setw(30)
<<peijian.jiancheng<<setw(10)<<peijian.type <<setw(3)
<<setprecision(2)<<resetiosflags(ios::left)
<<setiosflags(ios::fixed|ios::showpoint)<<peijian.account<<setw(11)
<<peijian.buyprice <<setw(11)<<peijian.price<<endl;
cout << "请输入修改的数量和原价和售价:\n?数量: " ;
cin >> num1;
cout <<"?原价:";
cin >> num2;
cout <<"?售价:";
cin >> num3;
if ( num1>0 &&num2>0 && num3>0)
{peijian.account = num1; // 修改价格
peijian.buyprice = num2;
peijian.price = num3;}
else { cout << "价格或数量输入错误,请重新输入!\n" ; continue; }
f.seekp( -long( sizeof( bargain ) ), ios::cur ); // 文件指针复位
f.write( (char *) & peijian , sizeof( bargain ) ) ; // 修改文件记录
cout <<"已修改成功!"<< endl
<<setiosflags(ios::left)<<setw(10)
<<peijian.id<<setw(10)<<peijian.name<<setw(15)
<<peijian.jiancheng<<setw(6)<<peijian.type <<setw(10)<<peijian.account<<setw(8)
<<setprecision(2)<<resetiosflags(ios::left)
<<setiosflags(ios::fixed|ios::showpoint)<<peijian.buyprice<<setw(10)<<peijian.price<<endl;
}
else cerr << "没有该条记录,不能完成修改!\n" ;
break ;
}
case 0 : return ;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -