通讯录的信息存储和读取问题
#include<stdio.h>#include<string.h>
#include<stdio.h>
#include<windows.h>
int N;
int M=0,H=0;
void menu();
void add();
void alter();
void search();
void paix();
void liulan();
void help();
void exit();
void findname();
void findnum();
void findphonenum();
void findemail();
void wenjian();
void adddd();
void bdddd();
void cdddd();
void dddd();
void edddd();
void fdddd();
void xuehao();
void xingmin();
void deletebyphonenum();
void deletebymark();
void deletebystu();
void readfile();
struct student
{
int num;
char name[20];
char sex[5];
char workplace[20];
int phonenum;
char email[20];
char deletebyphonenum;
}stu[1000],temp;
void main()
{
menu();
}
void menu()
{
system("cls");
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
printf("================================================================================");
printf("\n\t ***☆→菜单←☆***\n");
printf("\n#1※添加学生信息\t#2※修改学生信息\n");
printf("\n#3※删除学生信息\t#4※查询学生信息\n");
printf("\n#5※学生信息排序\t#6※浏览学生信息 \n");
printf("\n#7※存入文件 \t#8※从文件中读取\n");
printf("\n#9※帮助菜单\t\t#10※退出系统\n");
printf("\n================================================================================");
printf("\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
printf("\n请输入使用的功能(1~10):");
{
int a;
scanf("%d",&a);
{switch(a)
{
case 0:menu();break;
case 1:add();break;
case 2:alter();break;
case 3:dele();break;
case 4:search();break;
case 5:paix();break;
case 6:liulan();break;
case 9:help();break;
case 8:readfile();break;
case 7:wenjian();break;
case 10:exit(0);
}
}
}
printf("\n");
}
void paix()
{
int n;
system("cls");
printf("\n1.按照学号来排序#####2.按照姓名来排序#####3.返回主菜单\n");
printf("请输入使用的功能(1~3):");
scanf("%d",&n);
if(n==1)
xuehao();
if(n==2)
xingmin();
if(n<1&&n>2)
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
void xuehao()
{
int i,j,k;
printf("\n================以下为按学号排序================\n");
for(i=0;i<M;i++)
for(j=0;j<M-i;j++)
if(stu[j].num>stu[j+1].num)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
printf("学号,姓名,性别,工作单位,电话号码,E-mail\n");
for(i=0;i<M;i++)
printf("%d,%s,%s,%s,%d,%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].workplace,stu[i].phonenum,stu[i].email);
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
void xingmin()
{
int i,j;
char k[10];
printf("\n================以下为按姓名排序================\n");
for(i=0;i<M;i++)
for(j=0;j<M-i;j++)
if(strcmp(stu[j].name,stu[j+1].name))
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
printf("学号,姓名,性别,工作单位,电话号码,E-mail\n");
for(i=0;i<M;i++)
printf("%d,%s,%s,%s,%d,%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].workplace,stu[i].phonenum,stu[i].email);
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
void liulan()
{
int i;
system("cls");
printf("\n==================以下为所有信息==================\n");
printf("学号,姓名,性别,工作单位,电话号码,E-mail\n");
for(i=0;i<M;i++)
printf("%d,%s,%s,%s,%d,%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].workplace,stu[i].phonenum,stu[i].email);
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
void wenjian()////////////////////////////////////////*存储结构体中的信息到文件中****/////////////////////////////////////////////////
{
FILE *fp;
int i;
system("cls");
if((fp=fopen("stu.txt","a+"))==NULL)
{
printf("cannot open file\n");
return;
}
fp=fopen("stu.txt","a+");
for(i=0;i<M;i++)
{
fprintf(fp,"%d,%s,%s,%s,%d,%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].workplace,stu[i].phonenum,stu[i].email);
}
fclose(fp);
printf("已存储\n");
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
void readfile()/////*读取文件中的信息到结构体中****//////
{
char *p="stu.txt";
FILE *fp;
int i=0;
if ((fp=fopen("stu.txt","r"))==NULL)
{
printf("Open file error! Strike any key to exit!");
system("pause");
system("cls");
menu();
}
while(fscanf(fp,"%d,%s,%s,%s,%d,%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].workplace,stu[i].phonenum,stu[i].email)==6)
{
i++;
i=i;
}
fclose(fp);
H=i;
printf("录入完毕!\n");
system("pause");
system("cls");
menu();
}
void add()
{ int n,i;
system("cls");
printf("请输入要写入的学生人数:\n");
scanf("%d",&n);
for(i=M+H;i<M+n+H;i++)
{
printf("学号");
scanf("%d",&stu[i].num);
printf("\n姓名:");
scanf("%s",stu[i].name);
printf("\n性别:");
scanf("%s",stu[i].sex);
printf("\n工作单位:");
scanf("%s",stu[i].workplace);
printf("\n电话号码:");
scanf("%d",&stu[i].phonenum);
printf("\n邮箱:");
scanf("%s",stu[i].email);
}
printf("已录入!\n");
M=M+n+H;
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
void search()
{ int n;
system("cls");
printf("\n#####1.按照姓名来查找\n#####2.按照学号来查找\n#####3.按照电话号码查找\n#####4.按邮箱查找\n#####5.返回主菜单\n");
printf("请输入使用的功能(1~5):");
scanf("%d",&n);
if(n==1)
findname();
if(n==2)
findnum();
if(n==3)
findphonenum();
if(n==4)
findemail();
if(n<1&&n>4)
menu();
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
void findname()
{
int i=0,j=0;
char name[20];
printf("请输入查找学生姓名:");
scanf("%s",name);
for(i=0;i<M;i++)
if(strcmp(name,stu[i].name)==0)
{
printf("学号:%d\n",stu[i].num);
printf("姓名:%s\n",stu[i].name);
printf("性别:%s\n",stu[i].sex);
printf("工作单位:%s\n",stu[i].workplace);
printf("电话号码:%d\n",stu[i].phonenum);
printf("邮箱:%s\n",stu[i].email);
j++;
break;
}
if(j==0)
printf("没有找到该学生信息\n");
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
void findnum()
{
int n,i,j=0;
printf("请输入查找学生学号:");
scanf("%d",&n);
for(i=0;i<M;i++)
if(n==stu[i].num)
{
printf("学号:%d\n",stu[i].num);
printf("姓名:%s\n",stu[i].name);
printf("性别:%s\n",stu[i].sex);
printf("工作单位:%s\n",stu[i].workplace);
printf("电话号码:%d\n",stu[i].phonenum);
printf("邮箱:%s\n",stu[i].email);
j++;
break;
}
if(j==0)
printf("没有找到该学生信息\n");
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
void findphonenum()
{
int n,i,j=0;
printf("请输入查找学生电话:");
scanf("%d",&n);
for(i=0;i<M;i++)
if(n==stu[i].phonenum)
{
printf("学号:%d\n",stu[i].num);
printf("姓名:%s\n",stu[i].name);
printf("性别:%s\n",stu[i].sex);
printf("工作单位:%s\n",stu[i].workplace);
printf("电话号码:%d\n",stu[i].phonenum);
printf("邮箱:%s\n",stu[i].email);
j++;
break;
}
if(j==0)
printf("没有找到该学生信息\n");
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
void findemail()
{
char email[20];
int i,j=0;
printf("请输入查找学生邮箱:");
scanf("%s",email);
for(i=0;i<M;i++)
if(strcmp(email,stu[i].email)==0)
{
printf("学号:%d\n",stu[i].num);
printf("姓名:%s\n",stu[i].name);
printf("性别:%s\n",stu[i].sex);
printf("工作单位:%s\n",stu[i].workplace);
printf("电话号码:%d\n",stu[i].phonenum);
printf("邮箱:%s\n",stu[i].email);
j++;
break;
}
if(j==0)
printf("没有找到该学生信息\n");
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
void alter() //修改通讯录中的信息//
{
int i,k,n;
char name[20];
system("cls");
if(M==0)
{
printf("暂无通讯录数据,是否添加通讯录:1.是(按其它数字则返回主菜单)");
printf("请选择");
scanf("%d",&n);
if(n==1)
add();
else
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
printf("\n 请输入要修改学生的姓名:");
scanf("%s",name);
for(i=0;i<M;i++)
if(strcmp(name,stu[i].name)==0)
{
printf("\n 已查询到,记录为:");
printf("\n\n 学号,姓名,性别,工作地址,电话,邮箱:");
printf("\n %d,%s,%s,%s,%d,%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].workplace,stu[i].phonenum,stu[i].email);
break;
}
if(i==M)//当i=N时,证明通讯录中所有的学生都已经查证//
{
printf("\n 没有该同学的信息,请选择其它操作:");
printf("\n 如果输入1则重新输入数据,否则返回到主菜单.");
if(n=1) alter();
else
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
else
{
system("pause");
system("cls");
printf("\n 学号,姓名,性别,工作地址,电话,邮箱:");
printf("\n %d,%s,%s,%s,%d,%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].workplace,stu[i].phonenum,stu[i].email);
printf("\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
printf("\n 请选择要修改的信息且一次操作只能修改一次:");
printf("\n\n 1.学号 2.姓名"); //满足各种需要修改的程序//
printf("\n\n 3.性别 4.工作地址");
printf("\n\n 5.电话 6.邮箱");
printf("输入其它数字则返回主菜单");
scanf("%d",&k);
if (k==1)// 修改学号//
{
printf("请输入新数据:");
printf("请输入学号:");
scanf("%d",&stu[i].num);
}
if (k==2)//修改姓名//
{
printf("请输入新数据:");
printf("请输入姓名:");
scanf("%s",stu[i].name);
}
if(k==3)//修改性别//
{
printf("请输入新数据:");
printf("请输入性别:");
scanf("%s",stu[i].sex);
}
if(k==4)//修改工作地址//
{
printf("请输入新数据:");
printf("请输入通讯地址:");
scanf("%s",stu[i].workplace);
}
if(k==5)//修改电话//
{
printf("请输入新数据:");
printf("请输入电话号码:");
scanf("%d",&stu[i].phonenum);
}
if(k==6)//修改邮箱//
{
printf("请输入新数据:");
printf("请输入新的邮箱");
scanf("%s",stu[i].email);
}
else
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
printf("***************************************************************");
}
}
/************************************************删除通讯录中的信息******************************************************/
void deletebyphonenum()
{
int i,j,n;
int phonenum;
printf("\n请输入要删除用户电话号码:");
scanf("%d",&phonenum);
if(M==0)
{
printf("暂无通讯录数据,是否添加通讯录:1.是(按其它数字则返回主菜单)");
printf("请选择");
scanf("%d",&n);
if(n==1)
add();}
else
{
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
for (i=0;i<M;i++)
{
if (strcmp(&stu[i].phonenum,&phonenum)==0)
{
for (j=0;j<M-1;j++)
{
stu[j]=stu[j+1];
M--;
printf("\n删除成功");
printf("\n即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
}
else
printf("对不起,文件中无任何纪录");
printf("\n即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
}
void deletebyname()
{
int j,i;
char name[20];
printf("\n请输入要删除用户姓名:");
scanf("%s",name);
if(M==0)
{
printf("\n对不起,文件中无任何纪录");
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
for (i=0;i<M;i++)
{
if (strcmp(stu[i].name,name)==0)
{
for (j=0;j<M-1;j++)
stu[j]=stu[j+1];
M--;
printf("\n删除成功");
printf("\n即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
}
}
dele()
{
char choic;
system("cls");
printf("1-按电话号码删除 2-按姓名删除\n");
printf("请选择:");
choic=getch();
switch (choic)
{
case '1':deletebyphonenum();break;
case '2':deletebyname();break;
}
printf("即将返回主菜单\n");
system("pause");
system("cls");
menu();
}
void help()
{
int n;
system("cls");//清屏
printf("\n1.添加学生信息 2.修改学生信息.\n");
printf("\n3.删除学生信息 3.查询学生信息.\n");
printf("\n4.学生信息排序 6.浏览学生信息.\n");
printf("\n7.返回主菜单");
printf("\n");
printf("\n请选择序号(1~7):");
scanf("%d",&n);
switch(n)
{
case 1:adddd();
break;
case 2:bdddd();
break;
case 3:cdddd();
break;
case 4:dddd();
break;
case 5:edddd();
break;
case 6:fdddd();
break;
case 7:menu();
break;
}
}
void adddd()
{
printf("该功能能在通讯录中添加学生信息,如性别,学号,姓名,电话号码,工作单位,E-mail地址\n这些信息将会保存在文件中\n");
printf("以便其他功能使用\n");
printf("即将返回上一个菜单");
system("pause");
system("cls");
help();
}
void bdddd()
{
printf("该功能能在通讯录中修改学生信息,如性别,学号,姓名,电话号码,工作单位,E-mail地址\n这些信息将会保存在文件中\n");
printf("以便其他功能使用\n");
printf("即将返回上一个菜单");
system("pause");
system("cls");
help();
}
void cdddd()
{
printf("该功能能在通讯录中删除学生信息,如性别,学号,姓名,电话号码,工作单位,E-mail地址\n这些信息将会保存在文件中\n");
printf("以便其他功能使用\n");
printf("即将返回上一个菜单");
system("pause");
system("cls");
help();
}
void dddd()
{
printf("该功能能在通讯录中查询学生信息,如性别,学号,姓名,电话号码,工作单位,E-mail地址\n这些信息将会保存在文件中\n");
printf("以便其他功能使用\n");
printf("即将返回上一个菜单");
system("pause");
system("cls");
help();
}
void edddd()
{
printf("该功能按姓名排序\n");
printf("该功能按学号排序\n");
printf("即将返回上一个菜单");
system("pause");
system("cls");
help();
}
void fdddd()
{
printf("该功能能在通讯录中浏览学生信息,如性别,学号,姓名,电话号码,工作单位,E-mail地址\n这些信息将会保存在文件中\n");
printf("以便其他功能使用\n");
printf("即将返回上一个菜单");
system("pause");
system("cls");
help();
}
我可以把通讯录内容存储到文件中,可是读取的时候失败了,弄了很久还是不太清楚,请教一下各位前辈我的数据存储和读取文件哪里出了问题。