65,208
社区成员
发帖
与我相关
我的任务
分享#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct FishOil
{
string name;
string uid;
char sex;
};
bool InitFishC();
bool ReadFishC();
void RecordFishC();
bool WriteFishC(FishOil *OilData);
int main()
{
int i;
InitFishC();
while( 1 )
{
cout << "请选择需要进行的操作: \n";
cout << "1. 打印数据到屏幕\n";
cout << "2. 录入数据\n";
cout << "3. 退出程序\n";
cin >> i;
switch( i )
{
case 1:
if( ReadFishC() )
cout << "成功读取文件^_^\n\n";
else
cout << "读取文件失败T_T\n\n";
break;
case 2:
RecordFishC();
break;
case 3:
return 0;
}
}
cout << "初始化失败T_T......\n\n";
return 0;
}
bool InitFishC()
{
FishOil OilInit;
OilInit.name="小甲鱼";
OilInit.uid="fishc0000";
OilInit.uid='F';
if( WriteFishC(&OilInit)==false )
{
cout << "初始化失败 ";
return false;
}
return true;
}
bool ReadFishC()
{
string ch;
ifstream fileinput("FishC.txt",ios::in);
cout << "名字" << "号码" << "性别" << "\n";
if( fileinput.is_open() )
{
fileinput >> ch;
std::cout << ch <<"\n";
fileinput.close();
return 1;
}
else
{
return 0;
}
}
void RecordFishC()
{
char save,start;
FishOil *pointdata; // !!!这里没有初始化
start = 'Y';
while( 'Y'==start )
{
// !!! pointdata 在没有初始化的前提下就拿来用
cout << "请输入name ";
cin >> (*pointdata).name ;
cout << "请输入uid ";
cin >> (*pointdata).uid ;
cout << "请输入sex ";
cin >> (*pointdata).sex ;
cout << "录入成功,是否保存Y/N";
cin >> save;
if( save=='Y')
{
if(WriteFishC( pointdata ))
cout << "成功写入" ;
}
else
cout << "失败写入 ";
}
cout << "是否再次录入?";
cin >> start;
}
bool WriteFishC( FishOil *pOilData )
{
ofstream fileOutput("FishC.txt", ios::app);
if( fileOutput.is_open() )
{
fileOutput << pOilData->name <<" ";
fileOutput << pOilData->uid <<" ";
fileOutput << pOilData->sex <<"\n";
fileOutput.close();
cout << "数据成功保存 ";
return 1;
}
else
{
cout << "数据保存失败 ";
return 0;
}
}
上面的代码可以通过编译.但至少还包含注释里面的逻辑错误.#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct FishOil
{
string name;
string uid;
char sex;
};
bool InitFishC();
bool ReadFishC();
void RecordFishC();
bool WriteFishC(FishOil *OilData);
int main()
{
int i;
InitFishC();
while( 1 )
{
cout << "请选择需要进行的操作: \n";
cout << "1. 打印数据到屏幕\n";
cout << "2. 录入数据\n";
cout << "3. 退出程序\n";
cin >> i;
switch( i )
{
case 1:
if( ReadFishC() )
cout << "成功读取文件^_^\n\n";
else
cout << "读取文件失败T_T\n\n";
break;
case 2:
RecordFishC();
break;
case 3:
return 0;
}
}
cout << "初始化失败T_T......\n\n";
return 0;
}
bool InitFishC()
{
FishOil OilInit;
OilInit.name="小甲鱼";
OilInit.uid="fishc0000";
OilInit.sex='F';//OilInit.uid='F'; 大概应该是这样吧
if( WriteFishC(&OilInit)==false )
{
cout << "初始化失败 ";
return false;
}
return true;
}
bool ReadFishC()
{
string ch;
ifstream fileinput("FishC.txt",ios::in);
cout << "名字" << "号码" << "性别" << "\n";
if( fileinput.is_open() )
{
fileinput >> ch;
std::cout << ch <<"\n";
fileinput.close();
return 1;
}
else
{
return 0;
}
}
void RecordFishC()
{
char save,start;
FishOil fish;//FishOil *pointdata; // !!!这里没有初始化
start = 'Y';
while( 'Y'==start )
{
// !!! pointdata 在没有初始化的前提下就拿来用
cout << "请输入name ";
cin >> fish.name; //cin >> (*pointdata).name ;
cout << "请输入uid ";
cin >> fish.uid; //cin >> (*pointdata).uid ;
cout << "请输入sex ";
cin >> fish.sex; //cin >> (*pointdata).sex ;
cout << "录入成功,是否保存Y/N";
cin >> save;
if( save=='Y')
{
if(WriteFishC( &fish /*pointdata*/ ))
cout << "成功写入" ;
}
else
cout << "失败写入 ";
cout << "是否再次录入?";
cin >> start;
}
//cout << "是否再次录入?";
//cin >> start;
}
bool WriteFishC( FishOil *pOilData )
{
ofstream fileOutput("FishC.txt", ios::app);
if( fileOutput.is_open() )
{
fileOutput << pOilData->name <<" ";
fileOutput << pOilData->uid <<" ";
fileOutput << pOilData->sex <<"\n";
fileOutput.close();
cout << "数据成功保存 ";
return 1;
}
else
{
cout << "数据保存失败 ";
return 0;
}
}