// file3.cpp : 定义控制台应用程序的入口点。////#include "stdafx.h"#include <fstream>#include <iostream>using namespace std;struct Student{char name[20];int num;};int addInFile(){ofstream outFile("botao.dat",ios::out|ios::binary); //定义文件输出流 文件不存在时创建文件//对文件打开错误时的操作if(!outFile){cout<<"The file open error!"<<endl;return 0;}else //文件正常打开时,进行相应的处理{Student *s=new Student;cout<<"输入学生姓名:";cin>>s->name;cout<<"输入学生学号:";cin>>s->num;outFile.write((char*)s,sizeof(Student)); //文件输出流向文件中写入student信息}outFile.close(); //关闭输出流return 1;}int myReadFile(){ifstream inFile("botao.dat",ios::in|ios::binary); //文件输入流 将文件中的student信息读出到屏幕上//对文件打开错误时的操作if(!inFile){cout<<"The inFile open error!"<<endl;return 0;}else{Student *s=new Student;inFile.read((char*)s,sizeof(Student));cout<<"姓名:"<<s->name<<endl;cout<<"学号:"<<s->num<<endl;}inFile.close(); //关闭输入流}void addCustomers(char *identityCard,int number,int isExist) // 添加顾客信息 想总的顾客信息索引表中添加数据{ifstream inf("botao.dat",ios::in|ios::binary);if(!inf){cout<<"文件不存在,正在创建……"<<endl;ofstream outf("botao.dat",ios::out|ios::binary);outf.close();}inf.close();fstream outFile("botao.dat",ios::app|ios::in|ios::binary);Student *index=new Student;if(!outFile){cout<<"Open Error!"<<endl;//exit(1);}else{if(isExist==0) //如果此顾客还没有在此航空公司买过票{outFile.seekp(ios::end); //文件指针重新定位index->num=0;strcpy(index->name,identityCard);index->num=number;outFile.write((char*)index,sizeof(Student)); //*****将信息写入到文件中cout<<"index->name:"<<index->name<<endl;cout<<"index ->num:"<<index->num<<endl;//outFile.flush(); //将缓冲中数据刷如到文件中}else //如果此顾客已经存在{while(outFile.read((char*)index,sizeof(Student))) //{if(strcmp(identityCard,index->name)==0){cout<<"指针移动前:--------"<<outFile.tellg()<<endl;outFile.seekg(-(long)sizeof(Student),ios::cur);cout<<"指针移动后:--------"<<outFile.tellg()<<endl;index->num=0;strcpy(index->name,identityCard);index->num=number;cout<<"index->name:"<<index->name<<endl;cout<<"index->num:"<<index->num<<endl;if(outFile.write((char*)index,sizeof(Student))) //*****将修改后信息写入到文件中cout<<"cheng gong ________________________"<<endl;//myReadFile();ifstream iinFile("botao.dat",ios::in|ios::binary);//Student *s=new Student;iinFile.seekg(-(long)sizeof(Student),ios::cur); //将指针定位到修改信息后的结构体前面iinFile.read((char*)index,sizeof(Student));cout<<"姓名:"<<index->name<<endl;cout<<"学号:"<<index->num<<endl;iinFile.close();break;}index=new Student;}}}//delete index;outFile.close();}int main(){cout<<"The main .............."<<endl;//addInFile(); //添加结构体addCustomers("botao1",1,1);//myReadFile(); //读取结构体return 0;}