帮助修改一下程序
1.编写一个“修改”程序2.菜单中增加一个“删除”选项,再写“删除”程序
因为本人刚接触C++,把它想做为参考,好心人帮个忙
w.h***********************************
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
#include<string.h>
struct bookData
{ int TP ; char Name[40] ; char sex[40]; int age; char dz[40];} ;
void Append(fstream);
void Sale(fstream) ;
void Inquire(fstream) ;
void CreateTxt(fstream) ;
**************************************************#include "w.h"
void main()
{ int choice ;
fstream iof( "d:\\booksFile.dat" , ios::binary|ios::in|ios::out ) ;
if ( !iof ) { cerr << "文件不能打开" << endl ; return ; }
while (1)
{ cout << "\n****************************** 学生信息管理系统 ******************************\n\n请键入操作选择\n\n"
<< "1 :添加学生信息 \t 2 :修改学生信息 \t \n3 :查询学生信息 \t 4 :建立新的文本 \t 0 :退出\n" ;
cin >> choice ;
switch ( choice )
{ case 1 : Append(iof) ; break ; case 2 : Sale(iof) ; break ;
case 3 : Inquire(iof) ; break; case 4 : CreateTxt(iof) ; break ;
case 0 : cout << " 退出系统\n" ; return ;
default : cout << "输入错误,请再输入\n" ;
}
}
iof.close() ; // 关闭文件
}
//************************添加******************************************************
void Append( fstream f )
{ int choice ; bookData book ; int key ; long num ;
f.seekp( 0, ios::end ) ; // 读指针移到文件末尾
long posEnd = f.tellp() ; // 记录文件尾位置
cout << "********** 添加学生信息 **********\n" ;
while (1)
{ cout << "请键入操作选择 \n 1:添加 \t 0:返回 \n" ;
cin >> choice ;
switch ( choice )
{ case 1: // 追加新记录
{ cout << "学号(TP) , 姓名 , 性别 , 年龄 , 地址:\n ? " ; cin >> book.TP;
cout << " ? " ; cin >> book.Name ;
cout << " ? " ; cin >> book.sex ;
cout << " ? " ; cin >> book.age ;
cout << " ? " ; cin >> book.dz ;
f.write( (char *) & book , sizeof( bookData ) ) ; // 写入文件
break ;
};
case 0 : return ;
}
}
}
//********************修改**********************************************************
//**********************查询********************************************************
void Inquire(fstream f)
{ int choice ; bookData book ; int key ;
f.seekg( 0, ios::end ) ; // 读指针移到文件末尾
long posEnd = f.tellg() ; // 记录文件尾位置
cout << "********** 查询 **********\n" ;
while (1)
{ cout << "请键入操作选择\n 1:按学号查询\t 2:浏览 0:返回\n" ;
cin >> choice ;
switch ( choice )
{ case 1: // 按学号检索
{ f.seekg( 0, ios::beg );
cout << "学号(TP):\n? " ; cin >> key ;
do { f.read((char *) & book , sizeof(bookData)) ;
} while ( book.TP != key && f.tellg() != posEnd ) ;
if ( book.TP == key )
cout<<book.TP << '\t' << book.Name << '\t'<< book.sex << '\t' << book.age << '\t' << book.dz <<endl;
else { cout << "编号错误\n" ; continue; }
break ;
};
case 2:
{ f.seekg( 0, ios::beg );
do { f.read((char *) & book , sizeof(bookData)) ;
cout<<book.TP << '\t' << book.Name << '\t'<< book.sex << '\t' << book.age << '\t' << book.dz <<endl;
} while ( book.TP != key && f.tellp() != posEnd ) ;
break ;
}
case 0 : return ;
}
}
}
//*********************建立文本*********************************************************
void CreateTxt(fstream f)
{ fstream ftxt("d:\\booksFile.txt" , ios::out) ; // 写方式打开文本文件
bookData book ;
f.seekg( 0, ios::end ) ;
long posEnd = f.tellg() ; // 记录二进制文件末尾位置
f.seekg( 0, ios::beg ) ; // 移动读指针到文件头
cout << "********** 建立文本文件 **********\n" ;
do
{ f.read((char *) & book , sizeof(bookData)) ; // 从二进制文件读记录
// 把记录写入文本文件:
ftxt << book.TP << '\t' << book.Name << '\t' << book.sex << '\t' << book.age << '\t' << book.dz << endl;
} while ( f.tellg() != posEnd ) ;
ftxt.close() ;
cout << "文本文件已建立,要浏览文件吗?( Y/N ) \n" ;
char answer , s[80];
cin >> answer ;
if ( answer=='Y' || answer=='y' )
{ ftxt.open( "d:\\booksFile.txt" , ios::in ) ; // 重用流打开文件
while( !ftxt.eof() ) // 按行显示文本文件
{ ftxt.getline( s, 80 ) ;
cout << s << endl ;
}
}
ftxt.close() ; // 关闭文本文件
}