#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <process.h>
using namespace std;
class Date
{
private:
int y,m,d;
public:
Date(int yy=1,int mm=1,int dd=1):y(yy),m(mm),d(dd){}
void Print()
{
cout<<y<<'/'<<m<<'/'<<d<<endl;
}
};
class Volunteer
{
private:
string Name;
string ID;
string Major;
string Blood_Type;
int class_NO;
int Age;
Date L_Date;
static int Count;
public:
Volunteer(string s1="",string s2="",string s3="",string s4="",int a1=0,int a2=0,Date x=0):L_Date(x)
{
Name=s1;ID=s2;Major=s3;Blood_Type=s4;class_NO=a1;Age=a2;
}
string Get_Name() {return Name;}
string Get_ID() {return ID;}
string Get_Major() {return Major;}
static int Set_Count(){return Count++;}
static int Get_Count(){return Count;}
Volunteer *pNext;
void Print2()
{
cout<<setw(8)<<Name
<<setw(9)<<ID
<<setw(20)<<Major
<<setw(8)<<class_NO
<<setw(8)<<Blood_Type
<<setw(8)<<Age;
L_Date.Print();
}
};
int Volunteer::Count=0;void SearchByName(Volunteer *pHead)
{
system("cls");
Volunteer *p;
string s;
cout<<"请输入要查询的姓名"<<endl;
cin>>s;
system("cls");
cout<<setw(8)<<"姓名"
<<setw(9)<<"学号"
<<setw(20)<<"专业"
<<setw(8)<<"班级"
<<setw(8)<<"血型"
<<setw(8)<<"年龄"
<<setw(18)<<"离校日期"<<endl;
for(p=pHead->pNext;p;p=p->pNext) if(p->Get_Name()==s) p->Print2();getch();
}void SearchByID(Volunteer *pHead)
{
system("cls");
Volunteer *p;
string s;
cout<<"请输入要查询的学号"<<endl;
cin>>s;
system("cls");
cout<<setw(8)<<"姓名"
<<setw(9)<<"学号"
<<setw(20)<<"专业"
<<setw(8)<<"班级"
<<setw(8)<<"血型"
<<setw(8)<<"年龄"
<<setw(18)<<"离校日期"<<endl;
for(p=pHead->pNext;p;p=p->pNext) if(p->Get_ID()==s) p->Print2();getch();
}void SearchByMajor(Volunteer *pHead)
{
Volunteer *p;
system("cls");
string s;
cout<<"请输入要查询的专业"<<endl;
cin>>s;
system("cls");
cout<<setw(8)<<"姓名"
<<setw(9)<<"学号"
<<setw(20)<<"专业"
<<setw(8)<<"班级"
<<setw(8)<<"血型"
<<setw(8)<<"年龄"
<<setw(18)<<"离校日期"<<endl;
for(p=pHead->pNext;p;p=p->pNext) if(p->Get_Major()==s) p->Print2();getch();
}void Inquire(Volunteer *pHead)
{
system("cls");
int k;
system("cls");
cout<<"1:按姓名查询"<<endl;
cout<<"2:按学号查询"<<endl;
cout<<"3:按专业查询"<<endl;
cout<<"0:返回上级菜单"<<endl;
cout<<"Esc:退出"<<endl;
k=getch();
switch(k)
{
case 49:SearchByName(pHead);break;
case 50:SearchByID(pHead);break;
case 51:SearchByMajor(pHead);break;
case 48:return;
case 27:exit(0);
}
}Volunteer *Add(Volunteer *pHead)
{
system("cls");
string s[4];
int a[5];
cout<<setiosflags(ios::left)<<setw(25)<<"请输入志愿者姓名:";
cin>>s[0];cout<<endl;
cout<<setiosflags(ios::left)<<setw(25)<<"请输入志愿者学号:";
cin>>s[1];cout<<endl;
cout<<setiosflags(ios::left)<<setw(25)<<"请输入志愿者专业:";
cin>>s[2];cout<<endl;
cout<<setiosflags(ios::left)<<setw(25)<<"请输入志愿者血型(型):";
cin>>s[3];cout<<endl;
cout<<setiosflags(ios::left)<<setw(25)<<"请输入志愿者班级:";
cin>>a[0];cout<<endl;
cout<<setiosflags(ios::left)<<setw(25)<<"请输入志愿者年龄(岁):";
cin>>a[1];cout<<endl;
cout<<setiosflags(ios::left)<<setw(25)<<"请输入志愿者离校日期(年/月/日):";
cin>>a[2]>>a[3]>>a[4];cout<<endl;
Volunteer *p=new Volunteer(s[0],s[1],s[2],s[3],a[0],a[1],Date(a[2],a[3],a[4])),*p1;
p1=pHead->pNext;
p->pNext=p1;
pHead->pNext=p;
Volunteer::Set_Count();
return pHead;
}void Save(Volunteer *pHead)
{
Volunteer *p;
ofstream MyFile("wang.txt",ios::binary);
for(p=pHead->pNext;p;p=p->pNext)
{
MyFile.write((char*)p,sizeof(Volunteer));
}
MyFile.close();
system("cls");
cout<<"已保存";getch();
}//Volunteer *Deletevoid Show(Volunteer *pHead)
{
Volunteer *p;
system("cls");
cout<<Volunteer::Get_Count()<<endl;
for(p=pHead->pNext;p;p=p->pNext) p->Print2();
getch();
}void main()
{
Volunteer *pHead=new Volunteer,*p,*p1;
pHead->pNext=NULL;
ifstream MyFile("wang.txt",ios::binary);
while(!MyFile.eof())
{
p=new Volunteer;
MyFile.read((char*)p,sizeof(Volunteer));
//if(MyFile.eof()) break;
p1=pHead->pNext;
p1=p->pNext;
pHead->pNext=p;
Volunteer::Set_Count();
}
MyFile.close();
int k;
while(1)
{
system("cls");
cout<<"西南交大抗灾救灾志愿者管理系统"<<endl;
cout<<"1:查询志愿者信息"<<endl;
cout<<"2:添加志愿者信息"<<endl;
cout<<"3:保存志愿者信息"<<endl;
cout<<"4:删除志愿者信息"<<endl;
cout<<"5:显示总人数"<<endl;
cout<<"Esc:退出"<<endl;
k=getch();
switch(k)
{
case 49:Inquire(pHead);break;
case 50:pHead=Add(pHead);break;
case 51:Save(pHead);break;
// case 52:pHead=Delete(pHead);break;
case 53:Show(pHead);break;
case 27:exit(0);break;
}
}
}
#include <string>
#include <iomanip>
#include <fstream>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <process.h>
using namespace std;
class Date
{
private:
int y,m,d;
public:
Date(int yy=1,int mm=1,int dd=1):y(yy),m(mm),d(dd){}
void Print()
{
cout<<y<<'/'<<m<<'/'<<d<<endl;
}
};
class Volunteer
{
private:
string Name;
string ID;
string Major;
string Blood_Type;
int class_NO;
int Age;
Date L_Date;
static int Count;
public:
Volunteer(string s1="",string s2="",string s3="",string s4="",int a1=0,int a2=0,Date x=0):L_Date(x)
{
Name=s1;ID=s2;Major=s3;Blood_Type=s4;class_NO=a1;Age=a2;
}
string Get_Name() {return Name;}
string Get_ID() {return ID;}
string Get_Major() {return Major;}
static int Set_Count(){return Count++;}
static int Get_Count(){return Count;}
Volunteer *pNext;
void Print2()
{
cout<<setw(8)<<Name
<<setw(9)<<ID
<<setw(20)<<Major
<<setw(8)<<class_NO
<<setw(8)<<Blood_Type
<<setw(8)<<Age;
L_Date.Print();
}
};
int Volunteer::Count=0;void SearchByName(Volunteer *pHead)
{
system("cls");
Volunteer *p;
string s;
cout<<"请输入要查询的姓名"<<endl;
cin>>s;
system("cls");
cout<<setw(8)<<"姓名"
<<setw(9)<<"学号"
<<setw(20)<<"专业"
<<setw(8)<<"班级"
<<setw(8)<<"血型"
<<setw(8)<<"年龄"
<<setw(18)<<"离校日期"<<endl;
for(p=pHead->pNext;p;p=p->pNext) if(p->Get_Name()==s) p->Print2();getch();
}void SearchByID(Volunteer *pHead)
{
system("cls");
Volunteer *p;
string s;
cout<<"请输入要查询的学号"<<endl;
cin>>s;
system("cls");
cout<<setw(8)<<"姓名"
<<setw(9)<<"学号"
<<setw(20)<<"专业"
<<setw(8)<<"班级"
<<setw(8)<<"血型"
<<setw(8)<<"年龄"
<<setw(18)<<"离校日期"<<endl;
for(p=pHead->pNext;p;p=p->pNext) if(p->Get_ID()==s) p->Print2();getch();
}void SearchByMajor(Volunteer *pHead)
{
Volunteer *p;
system("cls");
string s;
cout<<"请输入要查询的专业"<<endl;
cin>>s;
system("cls");
cout<<setw(8)<<"姓名"
<<setw(9)<<"学号"
<<setw(20)<<"专业"
<<setw(8)<<"班级"
<<setw(8)<<"血型"
<<setw(8)<<"年龄"
<<setw(18)<<"离校日期"<<endl;
for(p=pHead->pNext;p;p=p->pNext) if(p->Get_Major()==s) p->Print2();getch();
}void Inquire(Volunteer *pHead)
{
system("cls");
int k;
system("cls");
cout<<"1:按姓名查询"<<endl;
cout<<"2:按学号查询"<<endl;
cout<<"3:按专业查询"<<endl;
cout<<"0:返回上级菜单"<<endl;
cout<<"Esc:退出"<<endl;
k=getch();
switch(k)
{
case 49:SearchByName(pHead);break;
case 50:SearchByID(pHead);break;
case 51:SearchByMajor(pHead);break;
case 48:return;
case 27:exit(0);
}
}Volunteer *Add(Volunteer *pHead)
{
system("cls");
string s[4];
int a[5];
cout<<setiosflags(ios::left)<<setw(25)<<"请输入志愿者姓名:";
cin>>s[0];cout<<endl;
cout<<setiosflags(ios::left)<<setw(25)<<"请输入志愿者学号:";
cin>>s[1];cout<<endl;
cout<<setiosflags(ios::left)<<setw(25)<<"请输入志愿者专业:";
cin>>s[2];cout<<endl;
cout<<setiosflags(ios::left)<<setw(25)<<"请输入志愿者血型(型):";
cin>>s[3];cout<<endl;
cout<<setiosflags(ios::left)<<setw(25)<<"请输入志愿者班级:";
cin>>a[0];cout<<endl;
cout<<setiosflags(ios::left)<<setw(25)<<"请输入志愿者年龄(岁):";
cin>>a[1];cout<<endl;
cout<<setiosflags(ios::left)<<setw(25)<<"请输入志愿者离校日期(年/月/日):";
cin>>a[2]>>a[3]>>a[4];cout<<endl;
Volunteer *p=new Volunteer(s[0],s[1],s[2],s[3],a[0],a[1],Date(a[2],a[3],a[4])),*p1;
p1=pHead->pNext;
p->pNext=p1;
pHead->pNext=p;
Volunteer::Set_Count();
return pHead;
}void Save(Volunteer *pHead)
{
Volunteer *p;
ofstream MyFile("wang.txt",ios::binary);
for(p=pHead->pNext;p;p=p->pNext)
{
MyFile.write((char*)p,sizeof(Volunteer));
}
MyFile.close();
system("cls");
cout<<"已保存";getch();
}//Volunteer *Deletevoid Show(Volunteer *pHead)
{
Volunteer *p;
system("cls");
cout<<Volunteer::Get_Count()<<endl;
for(p=pHead->pNext;p;p=p->pNext) p->Print2();
getch();
}void main()
{
Volunteer *pHead=new Volunteer,*p,*p1;
pHead->pNext=NULL;
ifstream MyFile("wang.txt",ios::binary);
while(!MyFile.eof())
{
p=new Volunteer;
MyFile.read((char*)p,sizeof(Volunteer));
//if(MyFile.eof()) break;
p1=pHead->pNext;
p1=p->pNext;
pHead->pNext=p;
Volunteer::Set_Count();
}
MyFile.close();
int k;
while(1)
{
system("cls");
cout<<"西南交大抗灾救灾志愿者管理系统"<<endl;
cout<<"1:查询志愿者信息"<<endl;
cout<<"2:添加志愿者信息"<<endl;
cout<<"3:保存志愿者信息"<<endl;
cout<<"4:删除志愿者信息"<<endl;
cout<<"5:显示总人数"<<endl;
cout<<"Esc:退出"<<endl;
k=getch();
switch(k)
{
case 49:Inquire(pHead);break;
case 50:pHead=Add(pHead);break;
case 51:Save(pHead);break;
// case 52:pHead=Delete(pHead);break;
case 53:Show(pHead);break;
case 27:exit(0);break;
}
}
}
VC的读写文件