修改以后的
void SaveRecord(List&SalaryList)
{
char name[20];
cout<<"请输入要保存的文件名:";
cin>>name;
ofstream in;
in.open(name,ios::binary|ios::app);
if(!in)
{
cout<<"数据文件打开错误,不能将数据保存到文件中!\n";
return;
}
Node *pnode;
Salary *psal;
pnode=SalaryList.GetListHead(); //取链表头指针
while(pnode)
{
//返回结点指向的数据指针
psal=(Salary*)pnode->GetData();
//写入数据
in.write((char*)psal,sizeof(Salary));
//in<<psal->Num<<psal->Name<<psal->BaseSalary<<' '<<psal->Bonus<<endl;
//取下一结点指针
pnode=SalaryList.GetListNextNode(pnode);
}
in.close();
}
/*******************************************************
*功能:主菜单选项操作
********************************************************/
void Menu(string& choice,List &SalaryList)
{
if(choice=="1")
AddRecord(SalaryList);
else if(choice=="2")
DisplayRecord(SalaryList);
else if(choice=="3")
LookUpRecord(SalaryList);
else if(choice=="4")
DeleteRecord(SalaryList);
else if(choice=="0")
SaveRecord(SalaryList);
else
cout<<"输入错误,请重新选择\n\n";
}
/***********************************************
*功能:读取文件。
***********************************************/
void LoadFile(List &SalaryList)
{
ifstream infile;
infile.open("SALARY.txt",ios::binary|ios::in);
if(!infile)
{
cout<<"没有数据文件!\n\n";
return;
}
Node *pnode;
Salary *psal;
while(!infile.eof())
{
//定义新的数据对象
psal=new Salary;
infile.read((char*)psal,sizeof(Salary));
pnode=new Node;
//将数据加入
pnode->InputData(psal);
SalaryList.AddNode(pnode);
//cout<<setw(10)<<psal->Num<<setw(10)<<psal->Name<<setw(12)<<psal->BaseSalary<<setw(8)<<psal->Bonus<<setw(12)<<(psal->BaseSalary+psal->Bonus)<<endl;
}//删除头结点
SalaryList.DeleteNode(pnode);
infile.close();
}
void SaveRecord(List&SalaryList)
{
char name[20];
cout<<"请输入要保存的文件名:";
cin>>name;
ofstream in;
in.open(name,ios::binary|ios::app);
if(!in)
{
cout<<"数据文件打开错误,不能将数据保存到文件中!\n";
return;
}
Node *pnode;
Salary *psal;
pnode=SalaryList.GetListHead(); //取链表头指针
while(pnode)
{
//返回结点指向的数据指针
psal=(Salary*)pnode->GetData();
//写入数据
in.write((char*)psal,sizeof(Salary));
//in<<psal->Num<<psal->Name<<psal->BaseSalary<<' '<<psal->Bonus<<endl;
//取下一结点指针
pnode=SalaryList.GetListNextNode(pnode);
}
in.close();
}
/*******************************************************
*功能:主菜单选项操作
********************************************************/
void Menu(string& choice,List &SalaryList)
{
if(choice=="1")
AddRecord(SalaryList);
else if(choice=="2")
DisplayRecord(SalaryList);
else if(choice=="3")
LookUpRecord(SalaryList);
else if(choice=="4")
DeleteRecord(SalaryList);
else if(choice=="0")
SaveRecord(SalaryList);
else
cout<<"输入错误,请重新选择\n\n";
}
/***********************************************
*功能:读取文件。
***********************************************/
void LoadFile(List &SalaryList)
{
ifstream infile;
infile.open("SALARY.txt",ios::binary|ios::in);
if(!infile)
{
cout<<"没有数据文件!\n\n";
return;
}
Node *pnode;
Salary *psal;
while(!infile.eof())
{
//定义新的数据对象
psal=new Salary;
infile.read((char*)psal,sizeof(Salary));
pnode=new Node;
//将数据加入
pnode->InputData(psal);
SalaryList.AddNode(pnode);
//cout<<setw(10)<<psal->Num<<setw(10)<<psal->Name<<setw(12)<<psal->BaseSalary<<setw(8)<<psal->Bonus<<setw(12)<<(psal->BaseSalary+psal->Bonus)<<endl;
}//删除头结点
SalaryList.DeleteNode(pnode);
infile.close();
}
依然 始终 永远。