马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码:#include <fstream>
#include <iostream>
#include <string>
#include <unistd.h>
// Windows下为<windows.h> // 为了使用Sleep()函数
struct FishOil {
std::string name;
std::string uid;
char sex;
};
bool InitFishC();
bool ReadFishC();
void RecordFishC();
bool WriteFishC(FishOil *OilData);
int main() {
std::cout << "in Main\n";
int i;
InitFishC(); // 初始化数据。
std::cout << "in Main\n";
while (1) {
std::cout << "请选择需要进行的操作: \n";
std::cout << "1. 打印数据到屏幕\n";
std::cout << "2. 录入数据\n";
std::cout << "3. 退出程序\n";
std::cin >> i;
switch (i) {
case 1:
if (ReadFishC()) {
std::cout << "in Main\n";
std::cout << "成功读取文件^_^\n\n";
} else {
std::cout << "in Main\n";
std::cout << "读取文件失败T_T\n\n";
break;
}
case 2:
RecordFishC();
std::cout << "in Main\n";
break;
case 3:
return 0;
}
}
std::cout << "初始化失败T_T......\n\n";
return 0;
}
bool InitFishC() {
std::cout << "in InitFishC\n";
FishOil OilInit = {"小甲鱼", "fishc00001", 'M'};
if (WriteFishC(&OilInit) == false) {
std::cout << "in InitFishC\n";
std::cout << "初始化失败T_T\n";
return 0;
}
std::cout << "in InitFishC\n";
return 1;
}
bool ReadFishC() {
std::cout << "in ReadFishC\n";
std::string temp;
std::ifstream fileInput("FishC.txt");
if (fileInput.is_open()) {
// std::cout << "in ReadFishC\n";
std::cout << "\n正在输出记录数据...... ";
for (int i = 0; i <= 100; i++) // 打印百分比
{
std::cout.width(3);
std::cout << i << "%";
sleep(50); // Sleep(50);
std::cout << "\b\b\b\b";
}
std::cout << "\n\n";
std::cout << " 姓名 "
<< " 身份证 "
<< " 性别 "
<< "\n\n";
while (std::getline(fileInput, temp)) {
std::cout << temp << " ";
std::cout << "\n";
}
std::cout << "\n\n";
return true;
} else {
std::cout << "in ReadFishC\n";
return false;
}
}
void RecordFishC() {
std::cout << "in RecordFishC\n";
char goon, Save;
FishOil OilData;
FishOil *pOilData;
goon = 'Y';
while ('Y' == goon) {
std::cout << "请输入鱼C账号: ";
std::cin >> OilData.name;
std::cout << "请输入鱼C身份证:";
std::cin >> OilData.uid;
std::cout << "请输入性别:";
std::cin >> OilData.sex;
std::cout << "录入成功, 请问需要保存吗?(Y/N)";
std::cin >> Save;
if ('Y' == Save) {
pOilData = &OilData;
if (WriteFishC(pOilData))
std::cout << "成功写入文件^_^\n";
else
std::cout << "写入文件失败T_T\n";
} else {
return;
}
std::cout << "/n请问需要再次录入吗?(Y/N)";
std::cin >> goon;
}
}
bool WriteFishC(FishOil *pOilData) {
std::cout << "in WriteFishC\n";
std::ofstream fileOutput("FishC.txt", std::ios::app);
// std::ios::app用来说明在老数据追加新数据
if (fileOutput.is_open()) {
fileOutput << pOilData->name << " ";
fileOutput << pOilData->uid << " ";
fileOutput << pOilData->sex << "\n";
fileOutput.close();
std::cout << "数据成功保存到FishC.txt\n\n";
return 1;
} else {
std::cout << "保存失败T_T\n";
return 0;
}
}
结果:$ a.out
bash: a.out: 未找到命令
[name@manjaro sdl11]$ ./a.out
in Main
in InitFishC
in WriteFishC
数据成功保存到FishC.txt
in InitFishC
in Main
请选择需要进行的操作:
1. 打印数据到屏幕
2. 录入数据
3. 退出程序
1
in ReadFishC
程序停在了意想不到的地方 |