主题:[讨论]跪求高手帮忙啊
本人做了个题做了道编程题,马上就要上交了,可有错误,但不会改,恳请高手指点!!!!
题目是
编写一个程序,能实现以下进出货处理的功能:
i. 读入F1文件,构成一个以产品号升序排列的内部工作表
ii. 读入F2文件
iii. 根据一天的业务流水帐文件F2中的每个记录,以产品号查表,按购销代码对该产品的库存量进行修改,并计算该产品的销售(批发)收入或进货支出。当F2文件中的记录全部处理完后,把表中的每个元素写回F1文件中对应的记录中去,为下一天的业务处理作准备
iv. 显示所有库存量小于50的产品号、产品名及库存量
11
v. 显示一天的批发和进货金额的总差值及此天的业务纯利润(一天各产品的批发量乘上该产品的批发与进货单价的差价之和)
vi. 以上所有功能都应从菜单中选择执行
说明:
为记录其货物进出情况设置了两个文件:文件F1记录了各产品的产品号、产品名、进货单价、批发单价和库存量;文件F2是一天业务的流水帐,其中包含了产品号、购销代码和数量,购销代码为一个字符,用I表示进货,T表示发货。设产品不超过100项。
我编的是
#include<iostream>
//#include<stdafx>
#include<fstream>
using namespace std;
class file
{public:
int num;//产品号
char name[10];//产品名称
int yskcn;//原始库存量
int jfn;//进货量
int jfzc;//进货支出
int xsn;//销售量
int xssl;//销售收入
}F1;
int main()
{
file F1[5]={1001,"xsq",1000,200,180000,500,550072,
1002,"zjx",2000,800,160000,1000,200000,
1003,"jp",2000,200,6000,1000,30000,
1004,"dyp",2000,100,30000,1000,300000,
1005,"cpu",3000,0,0,2000,5000000};//对产品属性进行初始化
fstream iofile("F1.dat",ios::in|ios::out|ios::binary);// 用fstream类定义输入输出二进制文件流对象iostream.
if(!iofile)
{
cerr<<"open error!"<<endl;
abort();
}
for(int i=0;i<5;i++)//向磁盘文件输出产品产品相关数据
{
iofile.write((char*)&F1[i],sizeof(F1[i]));//sizeof(stud[i]));
file F1l[5];
for(int i=0;i<5;i++)
{
iofile.seekg(i*sizeof(F1[i]),ios::beg);//定位按升序开头
iofile.read((char*)&F1l[i],sizeof(F1l[0]));//读入五种产品 的数据存放到F1[01234]文件中。
cout<<F1l[i].num<<" "<<F1l[i].name<<" "<<F1l[i].yskcn<<" "<<F1l[i].jfn<<" "<<F1l[i].jfzc<<" "<<F1l[i].xsn<<" "<<F1l[i].xssl<<endl;
cout<<endl;
F1[2].yskcn=3000;
F1[2].xsn=1200;//修改第三个产品的yskcn与xsn数据项。当然接下来的要修改的可以在这语句后重复输入。
iofile.seekp(2*sizeof(F1[0]),ios::beg);//定位第三种产品数据的开头(这语句可以分别对要修改的产品号进行定义)
iofile.write((char*)&F1[2],sizeof(F1[2]));//更新第三种产品数据。(这语句也可以进行以这语句为模板,进行更新要修改的数据项)
iofile.seekg(0,ios::beg);
for(int i=0;i<5;i++)
{
iofile.read((char*)&F1[i],sizeof(F1[i]));
cout<<F1[i].num<<" "<<F1[i].name<<" "<<F1[i].yskcn<<" "<<F1[i].jfn<<" "<<F1[i].jfzc<<" "<<F1[i].xsn<<" "<<F1[i].xssl<<endl;
}
iofile.close();
}
//iofile.close();
}
return 0;
}
但运行后出现debug error
题目是
编写一个程序,能实现以下进出货处理的功能:
i. 读入F1文件,构成一个以产品号升序排列的内部工作表
ii. 读入F2文件
iii. 根据一天的业务流水帐文件F2中的每个记录,以产品号查表,按购销代码对该产品的库存量进行修改,并计算该产品的销售(批发)收入或进货支出。当F2文件中的记录全部处理完后,把表中的每个元素写回F1文件中对应的记录中去,为下一天的业务处理作准备
iv. 显示所有库存量小于50的产品号、产品名及库存量
11
v. 显示一天的批发和进货金额的总差值及此天的业务纯利润(一天各产品的批发量乘上该产品的批发与进货单价的差价之和)
vi. 以上所有功能都应从菜单中选择执行
说明:
为记录其货物进出情况设置了两个文件:文件F1记录了各产品的产品号、产品名、进货单价、批发单价和库存量;文件F2是一天业务的流水帐,其中包含了产品号、购销代码和数量,购销代码为一个字符,用I表示进货,T表示发货。设产品不超过100项。
我编的是
#include<iostream>
//#include<stdafx>
#include<fstream>
using namespace std;
class file
{public:
int num;//产品号
char name[10];//产品名称
int yskcn;//原始库存量
int jfn;//进货量
int jfzc;//进货支出
int xsn;//销售量
int xssl;//销售收入
}F1;
int main()
{
file F1[5]={1001,"xsq",1000,200,180000,500,550072,
1002,"zjx",2000,800,160000,1000,200000,
1003,"jp",2000,200,6000,1000,30000,
1004,"dyp",2000,100,30000,1000,300000,
1005,"cpu",3000,0,0,2000,5000000};//对产品属性进行初始化
fstream iofile("F1.dat",ios::in|ios::out|ios::binary);// 用fstream类定义输入输出二进制文件流对象iostream.
if(!iofile)
{
cerr<<"open error!"<<endl;
abort();
}
for(int i=0;i<5;i++)//向磁盘文件输出产品产品相关数据
{
iofile.write((char*)&F1[i],sizeof(F1[i]));//sizeof(stud[i]));
file F1l[5];
for(int i=0;i<5;i++)
{
iofile.seekg(i*sizeof(F1[i]),ios::beg);//定位按升序开头
iofile.read((char*)&F1l[i],sizeof(F1l[0]));//读入五种产品 的数据存放到F1[01234]文件中。
cout<<F1l[i].num<<" "<<F1l[i].name<<" "<<F1l[i].yskcn<<" "<<F1l[i].jfn<<" "<<F1l[i].jfzc<<" "<<F1l[i].xsn<<" "<<F1l[i].xssl<<endl;
cout<<endl;
F1[2].yskcn=3000;
F1[2].xsn=1200;//修改第三个产品的yskcn与xsn数据项。当然接下来的要修改的可以在这语句后重复输入。
iofile.seekp(2*sizeof(F1[0]),ios::beg);//定位第三种产品数据的开头(这语句可以分别对要修改的产品号进行定义)
iofile.write((char*)&F1[2],sizeof(F1[2]));//更新第三种产品数据。(这语句也可以进行以这语句为模板,进行更新要修改的数据项)
iofile.seekg(0,ios::beg);
for(int i=0;i<5;i++)
{
iofile.read((char*)&F1[i],sizeof(F1[i]));
cout<<F1[i].num<<" "<<F1[i].name<<" "<<F1[i].yskcn<<" "<<F1[i].jfn<<" "<<F1[i].jfzc<<" "<<F1[i].xsn<<" "<<F1[i].xssl<<endl;
}
iofile.close();
}
//iofile.close();
}
return 0;
}
但运行后出现debug error