📄 buy.cpp
字号:
//buy.cpp
// 进货管理。 追加记录或修改记录。如果是新产品,在文件末尾追加一条记录,如果是
// 旧产品,则增加库存数
#include "begin.h"
void basic::buy( fstream f )
{ int choice ; bargain peijian ; char key1[a]; char key3[b];
char key2[c] ; long num ;
const char *s="end";
f.seekp( 0, ios::end ) ; // 读指针移到文件末尾
long posEnd = f.tellp() ; // 记录文件尾位置
cout << "********** 进货管理 **********\n" ;
while (1)
{ cout <<"请选择操作:\n "
<<"1--增加新产品 2--旧产品 0--退出 \n?" ;
cin >> choice ;
switch ( choice )
{ case 1: // 追加新记录
{ cout << "请依次输入产品'代号,名称,简称,类型,数量,原价,售价':\n" ;
AAA:
cout << "?代号(以end结束输入):";
cin>>key1;
while(strcmp(key1,s)!=0){
cout << "?名称:";
cin>>key3;
f.seekg( 0, ios::beg ); // 读指针移到文件开头
do { f.read((char *) & peijian, sizeof(bargain)) ;
} while ((strcmp( peijian.id,key1) || strcmp(peijian.name,key3) )&& f.tellg() != posEnd ) ;
if( !strcmp(key1,peijian.id) && !strcmp(key3 ,peijian.name))
{cout<<"该纪录已经存在,请重新输入!\n";goto AAA;}
else {strcpy(peijian.id,key1);
strcpy(peijian.name,key3);}
cout << "?简称:";
cin >>peijian.jiancheng;
cout << "?类型:";
cin >>peijian.type;
cout << "?数量:";
cin >>peijian.account ;
cout << "?原价:";
cin >>peijian.buyprice ;
cout << "?价格:";
cin >>peijian.price ;
f.seekp( 0, ios::end ) ; // 读指针移到文件末尾
f.write( (char *) & peijian , sizeof(struct bargain) ) ; // 写入文件
cout << "请依次输入产品'代号 , 名称 ,简称,类型 ,数量,价格':\n";
cout << "?代号(以end结束输入):";
cin>>key1;
}
break ;
};
case 2: // 修改记录
{ 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
<<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 >> num;
if ( num>0 ) peijian.account += num ; // 修改库存量
else { cout << "数量输入错误\n" ; continue; }
f.seekp( -long( sizeof(struct bargain) ), ios::cur ); // 指针复位
f.write( (char *) & peijian, sizeof(struct bargain ) ); // 写入文件
cout << "现库存量:\t\t" << peijian.account << endl ;
}
else cout << "代号或简称错误或不存在该产品!\n" ; break ;
}
case 0 :return;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -