这个信息管理系统,怎么每次退出程序后,再打开就无法在查询上次写入的内容了,好像没有将文件的内容读入到程序中,这怎么弄啊,而且打开文件后,是乱码,搞了好久就是弄不好。
#include
#include
#include
#define N 50
using namespace std;
typedef struct data
{
char num[20];
char name[20];
char sex[20];
char profession[20];
char clas[20];
char apartment_num[20];
char origin[20];
char telephone_num[20];
char QQ_num[20];
char WeChat_num[20];
}ST;
void mainmenu();//显示主菜单
void save(ST stu[],int n);//将程序数据写入文件
int add_person(ST stu[],int n);//添加联系人
void search_person(ST stu[],int n);//查询联系人
int delete_person(ST stu[],int n);//删除联系人
int revise_information(ST stu[],int n);//修改联系人信息
void put_person_list(ST stu[],int n);//输出联系人列表
void sort_num(ST stu[],int n);//按学号排序
int main()
{
ST stu[N];
FILE *fp;
int n=0,m;
if((fp=fopen("stu.txt","ab+"))!=NULL)//打开文件
fread(stu,sizeof(ST),N,fp);
else
cout<<"error opening file "<fclose(fp);
mainmenu();
while(1)
{
char chioce;
cin>>chioce;//输入需要进行的操作
if(chioce<'a'||chioce>'h')
{
cout<<"输入错误"<"请输入操作:";
continue;
}
switch(chioce)//菜单操作选项
{
case 'a': m=add_person(stu,n);
n=n+m;
save(stu,n);
cout<<"请输入操作:";
break;
case 'b': search_person(stu,n);
cout<<"请输入操作:";
break;
case 'c': delete_person(stu,n);
n--;
save(stu,n);
cout<<"请输入操作:";
break;
case 'd': revise_information(stu,n);
save(stu,n);
cout<<"请输入操作:";
break;
case 'e': put_person_list(stu,n);
cout<<"请输入操作:";
break;
case 'f': sort_num(stu,n);
cout<<"请输入操作:";
break;
case 'g': save(stu,n);
exit(0);
break;
case 'h': mainmenu();
cout<<"请输入操作:";
break;
}
}
return 0;
}
void save(ST stu[],int n)//将程序数据写入文件
{
FILE *fp;
if((fp=fopen("stu.txt","ab+"))!=NULL)
fwrite(stu,sizeof(ST),n,fp);
else
{
cout<<"error opening file"<exit(0);
}
fclose(fp);
}
void mainmenu()//显示主菜单
{
cout<<"\t"<<"\t"<<"\t"<<" 个人通讯录管理系统 "<"\t"<<"\t"<<"\t"<<" **************************功能菜单**************************"<"\t"<<"\t"<<"\t"<<" *----------------------------------------------------------*"<"\t"<<"\t"<<"\t"<<" * a.添加联系人 ************ b.查询联系人 *"<"\t"<<"\t"<<"\t"<<" *----------------------------------------------------------*"<"\t"<<"\t"<<"\t"<<" * c.删除联系人 ************ d.修改联系人信息 *"<"\t"<<"\t"<<"\t"<<" *----------------------------------------------------------*"<"\t"<<"\t"<<"\t"<<" * e.输出联系人列表 ************ f.按学号排序 *"<"\t"<<"\t"<<"\t"<<" *----------------------------------------------------------*"<"\t"<<"\t"<<"\t"<<" * g.保存并退出程序 ************ h.显示主菜单 *"<"\t"<<"\t"<<"\t"<<" *----------------------------------------------------------*"<"\t"<<"\t"<<"\t"<<" ************************************************************"<" "<"\t"<<"\t"<<"\t"<<" 请选择操作:";
}
int add_person(ST stu[],int n)//添加联系人
{
int i,find=0;
int x;
char addnum[20];
cout<<"请输入要添加学生信息人数:";
cin>>x;
for(int j=0;j"请输入要添加学生的学号:";
cin>>addnum;
for(i=0;iif(strcmp(addnum,stu[i].num)==0)
{
cout<<"学号输入重复,请重新输入"<1;
return 0;
}
}
if(find==0)
{
cout<<"学号输入不重复,请添加信息:"<"请输入学号:";
cin>>stu[j].num;
cout<<"输入名字:";
cin>>stu[j].name;
cout<<"输入性别:";
cin>>stu[j].sex;
cout<<"输入专业:";
cin>>stu[j].profession;
cout<<"输入班级:";
cin>>stu[j].clas;
cout<<"输入宿舍号:";
cin>>stu[j].apartment_num;
cout<<"输入籍贯:";
cin>>stu[j].origin;
cout<<"输入手机号:";
cin>>stu[j].telephone_num;
cout<<"输入QQ号:";
cin>>stu[j].QQ_num;
cout<<"输入微信号:";
cin>>stu[j].WeChat_num;
cout<<"添加信息成功"<return x;
}
void search_person(ST stu[],int n)//查询联系人
{
char search_num[20];
int i,find=0;
cout<<"请输入要查询学生学号:";
cin>>search_num;
for(i=0;iif(strcmp(search_num,stu[i].num)==0)
{
find=1;
cout<"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<if(find==0)
cout<<"输入学号不存在,请重新输入"<int delete_person(ST stu[],int n)//删除联系人
{
char delete_num[20];
int i,find=0;
cout<<"请输入要删除学生的学号:";
cin>>delete_num;
for(i=0;iif(strcmp(delete_num,stu[i].num)==0)
{
find=1;
break;
}
}
if(find==0)
{
cout<<"输入学号不存在,请重新输入"<else
{
for(int j=i;j-1;j++)
stu[j]=stu[j+1];
// save(stu,n);
cout<<"删除学生信息成功"<return 1;
}
}
int revise_information(ST stu[],int n)//修改联系人信息
{
char revise_num[20];
int i,find=0;
cout<<"请输入要修改的学号:";
cin>>revise_num;
for(i=0;iif(strcmp(revise_num,stu[i].num)==0)
{
find=1;
cout<<"请依次输入您要更改学生的学号、姓名、性别、专业、班级、宿舍号、籍贯、手机号、QQ号、微信号"<"学号:";
cin>>stu[i].num;
cout<<"姓名:";
cin>>stu[i].name;
cout<<"性别:";
cin>>stu[i].sex;
cout<<"专业:";
cin>>stu[i].profession;
cout<<"班级:";
cin>>stu[i].clas;
cout<<"宿舍号:";
cin>>stu[i].apartment_num;
cout<<"籍贯:";
cin>>stu[i].origin;
cout<<"电话号码:";
cin>>stu[i].telephone_num;
cout<<"QQ号:";
cin>>stu[i].QQ_num;
cout<<"微信号:";
cin>>stu[i].WeChat_num;
cout<<"信息修改完毕"<return 1;
}
}
if(find==0)
{
cout<<"学号输入错误,请重新输入"<return 0;
}
// save(stu,n);
}
void put_person_list(ST stu[],int n)//显示通讯录
{
cout<<"显示通讯录"<for(int i=0;i"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<void sort_num(ST stu[],int n)//按学号排序
{
ST temp;
for(int i=0;ifor(int j=i+1;jif(strcmp(stu[i].num,stu[j].num)>0)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
}
for(int k=0;k"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<"\t";
cout<