关闭程序前联系人数量:1
联系人信息如下:
姓名:
学号:
移动电话:
住址:
为什么不显示自己输入的内容呢?
你的代码呢
代码写错了呗,还能有什么原因
fclose(fp);应在fread之后
void book_reada(int*count) //阅读模块1(初次启动程序)
{
system("cls");
FILE *fp;
int i;
if ((fp = fopen("books.txt", "rb")) == NULL) {
printf("不能打开文件!");
exit(0);
}
for (i = 0; i <*count; i++) {
fread(&books[i], sizeof(struct BOOKS), 1, fp);
printf("\t\t\t\t姓名:%s\n", books[i].name);
printf("\t\t\t\t学号:%s\n", books[i].id);
printf("\t\t\t\t电话:%s\n", books[i].phone);
printf("\t\t\t\t住址:%s\n", books[i].add);
printf("\n");
}
fclose(fp);
}
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct BOOKS {
char id[20], phone[20], name[20], add[20];//联系人基本信息
}books[20]; //创建结构体
//函数模块的声明
void book_create();//创建录入信息子函数
void book_show(int);
void book_search();//查询信息子函数
void books_change();//修改信息子函数
void book_insert(int );//添加信息子函数
void book_delete();//删除信息子函数
void book_outside();
void book_save(int);
void book_reada(int*);//显示信息子函数
void book_readb();
int main()//显示主菜单主函数
{
int count = 0;
int c;
do
{
printf("\n");
printf("**********************\n");//输入字符串
printf("姓名:王\n性别:男\n");//输入字符串
printf("学校:学院\n"); //输入字符串
printf("系别:系\n");//输入字符串
printf("班级:智学21002\n");//输入字符串
printf("学号:210003\n");//输入字符串
printf("编译时间:2022年7月5日16:39\n");//输入字符串
printf("*********************\n");//输入字符串
printf("\t\t\t\t=================================\n");//定义通讯录信息
printf("\t\t\t\t \n");
printf("\t\t\t\t 欢迎使用通讯录! \n");
printf("\t\t\t\t \n");
printf("\t\t\t\t=================================*\n");
printf("\n");
printf("\n");
printf("\t\t\t\t|==================================|\n");
printf("\t\t\t\t| 1--创建通讯录 |\n");
printf("\t\t\t\t| 2--查询联系人信息 |\n");
printf("\t\t\t\t| 3--修改联系人信息 |\n");
printf("\t\t\t\t| 4--添加联系人信息 |\n");
printf("\t\t\t\t| 5--删除联系人信息 |\n");
printf("\t\t\t\t| 6--保存联系人信息 |\n");
printf("\t\t\t\t| 7--显示通讯录(未关闭程序) |\n");
printf("\t\t\t\t| 8--显示通讯录(再次运行程序)|\n");
printf("\t\t\t\t| 0--退出 |\n");
printf("\t\t\t\t|==================================|\n");
printf("\t\t\t\t 请输入你的选项:");
scanf("%d", &c);
switch (c)
{
case 0:book_outside(); //退出系统
break;
case 1:book_create(); //调用创建运算
break;
case 2:book_search(); //调用查询运算
break;
case 3:books_change(); //调用修改运算
break;
case 4:book_insert(&count); //调用插入运算
break;
case 5:book_delete(); //调用删除运算
break;
case 6:book_save(&count); //调用保存运算
break;
case 7:book_reada(&count);
break; //调用阅读运算
case 8:book_readb();
break;
default:printf("\n\t\t\t\t无此选项!请重新选择!");
}
} while (c != 0);
return 0;
}
void book_create() //创建模块
{
int ban = 1;
system("cls");
if (ban != 0)
{
printf("\n");
printf("\n");
printf("\n");
printf("\t\t\t\t成功创建通讯录!请选择添加(4)选项!\n");
ban = 1;
}
else
printf("通讯录已创建,请勿重复创建!");
}
void book_search() //查找模块
{
int i, number, flag = 1;
char nam[20], ID[12];
FILE*fp;
system("cls");
if ((fp = fopen("books.txt", "rb+")) == NULL)//以读的方式打开一个文件
{
printf("cannot open file\n");
exit(0);
}
for(i=0;i<20;i++)
fread(&books[i],sizeof(struct BOOKS),1,fp);
printf("\n\n\t\t\t\t按联系人查找(1)或按学号查找(2):");
scanf("%d", &number);
printf("\n");
if (number == 1)
{
printf("\n\t\t\t\t请输入联系人姓名:");
scanf("%s", &nam);
for (i = 0; i < 20 && flag; i++)
{
if ((strcmp(books[i].name, nam) == 0))
{
printf("\n\t\t\t\t姓名:%s\n", books[i].name);
printf("\t\t\t\t学号:%s\n", books[i].id);
printf("\t\t\t\t移动电话:%s\n", books[i].phone);
printf("\t\t\t\t住址:%s\n", books[i].add);
flag = 0;
}
}
if(flag==1)//条件函数
printf("没有查询到!");
}
else
{
printf("\n\t\t\t\t请输入学号:");
scanf("%s", &ID);
for (i = 0; i < 20 && flag; i++)
{
if ((strcmp(books[i].id, ID) == 0))
{
printf("\n\t\t\t\t学号:%s\n", books[i].id);
printf("\t\t\t\t姓名:%s\n", books[i].name);
printf("\t\t\t\t移动电话:%s\n", books[i].phone);
printf("\t\t\t\t住址:%s\n", books[i].add);
flag = 0;
}
}
if(flag==1)
printf("没有查询到!");
}
fclose(fp);
}
void books_change() //修改模块
{
int i,c,b,flag = 1;
char nam[20];
FILEfp;
FILEfp2;
b=i-4;
system("cls");
if ((fp = fopen("books.txt", "rb+")) == NULL)//条件函数
{
printf("\t\t\t\t不能打开文件!\n");
return;
}
if ((fp2 = fopen("xiugai.txt", "wb+")) == NULL)//条件函数
{
printf("\t\t\t\t不能打开文件!\n");
return;
}
printf("\n\n\t\t\t\t请输入要修改的姓名:");
scanf("%s", &nam);
for (i = 0; i < 20; i++)
{
fread(&books[i],sizeof(struct BOOKS),1,fp);
if (strcmp(books[i].name, nam) == 0)//条件函数
{
printf("\n\n\t\t\t\t|==================================|\n");//子菜单
printf("\t\t\t\t| 1--移动电话 |\n");
printf("\t\t\t\t| 2--地址 |\n");
printf("\t\t\t\t| 3--姓名 |\n");
printf("\t\t\t\t| 4--学号 |\n");
printf("\t\t\t\t| 0--返回 |\n");
printf("\t\t\t\t|==================================|\n");
printf("\t\t\t\t请输入选项:");
scanf("%d",&c);
switch(c)
{
case 0:break;
case 1:printf("\n\t\t\t\t请输入修改后的移动电话:");
scanf("%s", books[i].phone);
break;
case 2:printf("\n\t\t\t\t请输入修改后的地址:");
scanf("%s", books[i].add);
break;
case 3:printf("\n\t\t\t\t请输入修改后的姓名:");
scanf("%s", books[i].name);
break;
case 4:printf("\n\t\t\t\t请输入修改后的学号:");
scanf("%s", books[i].id);
break;
default:printf("\n\t\t\t\t无此选项!请重新选择!");
}//switch函数结束括号
}//if函数结束括号
if(fwrite(&books[i], sizeof(struct BOOKS), 1, fp2) != 1)
{
printf("文件写入错误!");
}
} //for循环结束括号
printf("\n\n\t\t\t\t联系人信息修改成功!");
fclose(fp);
fclose(fp2);
remove("books.txt");
rename("xiugai.txt","books.txt");
}
void book_insert(int *count) //添加模块
{
int i,a,b;
FILE *fp;
char nam1[5] = "shi", nam2[5] = "fou", nam3[5],nam4[5];
system("cls");
printf("\t\t\t\t是否为初次添加联系人?(是或否):");
scanf("%s",nam4);
if((strcmp(nam1,nam4)==0))
{ printf("\n\n\n\t\t\t\t保存需选择选项(6)保存!");
for (i = *count; i < 20; i++)
{
printf("\n\n\t\t\t\t请输入姓名:");
scanf("%s", books[i].name);
printf("\t\t\t\t请输入学号:");
scanf("%s", books[i].id);
printf("\t\t\t\t请输入移动电话:");
scanf("%s", books[i].phone);
printf("\t\t\t\t请输入地址:");
scanf("%s", books[i].add);
(*count)++;
printf("\n\t\t\t\t是否继续添加?(是或否):");
scanf("%s", nam3);
if ((strcmp(nam2, nam3) == 0))
return;
}
}
else
{
printf("\t\t\t\t已有联系人个数:");
scanf("%d",&a);
b=a+1;
printf("\t\t\t\t请输入姓名:");
scanf("%s", books[b].name);
printf("\t\t\t\t请输入学号:");
scanf("%s", books[b].id);
printf("\t\t\t\t请输入移动电话:");
scanf("%s", books[b].phone);
printf("\t\t\t\t请输入地址:");
scanf("%s", books[b].add);
if ((fp = fopen("books.txt", "ab+")) == NULL)
{
printf("不能打开文件!\n");
return;
}
if (fwrite(&books[b], sizeof(struct BOOKS), 1, fp) != 1)
printf("文件写入错误!");
fclose(fp);
printf("\n\n\t\t\t\t已自动保存!");
return;
}
}
void book_delete(void) //删除模块
{
int i;
char nam[20];
FILEfp;
FILEfp1;
system("cls");
printf("\t\t\t\t请输入要删除的联系人:");
scanf("%s", &nam);
if ((fp = fopen("books.txt", "rb+")) == NULL)
{
printf("\t\t\t\t不能打开文件!");
}
if((fp1 = fopen("linshi.txt", "wb+"))==NULL)
{
printf("\t\t\t\t不能打开文件!");
}
for(i=0;i<20;i++)
{
fread(&books[i], sizeof(struct BOOKS), 1, fp);
if (strcmp(books[i].name, nam) !=0)
{
fwrite(&books[i], sizeof(struct BOOKS), 1, fp1);
}
}
printf("\n\n\t\t\t\t联系人已删除!\n");
fclose(fp);
fclose(fp1);
remove("books.txt");
rename("linshi.txt","books.txt");
}
void book_outside() //退出模块
{
system("cls");
printf("\n");
printf("**********************\n");//输入字符串
printf("姓名:王\n性别:男\n");//输入字符串
printf("学校:学院\n"); //输入字符串
printf("系别:系banji\n");//输入字符串
printf("班级:ban'ji21002\n");//输入字符串
printf("学号:210003\n");//输入字符串
printf("编译时间:2022年7月5日16:39\n");//输入字符串
printf("**********************\n");//输入字符串
printf("\n");
}
void book_save(int*count) //保存模块
{
system("cls");
FILE *fp;
int i;
if ((fp = fopen("books.txt", "wb")) == NULL)
{
printf("不能打开文件!\n");
return;
}
for (i = 0; i <*count; i++)
if (fwrite(&books[i], sizeof(struct BOOKS), 1, fp) != 1)
printf("文件写入错误!");
fclose(fp);
printf("\n\n\t\t\t\t\t已保存!\n");
}
void book_reada(int*count) //阅读模块1(初次启动程序)
{
system("cls");
FILE *fp;
int i;
if ((fp = fopen("books.txt", "rb")) == NULL)
{
printf("不能打开文件!");
exit(0);
}
fclose(fp);
for (i = 0; i <*count; i++)
{
fread(&books[i], sizeof(struct BOOKS), 1, fp);
printf("\t\t\t\t姓名:%s\n", books[i].name);
printf("\t\t\t\t学号:%s\n", books[i].id);
printf("\t\t\t\t电话:%s\n", books[i].phone);
printf("\t\t\t\t住址:%s\n", books[i].add);
printf("\n");
}
}
void book_readb(void)
{ //阅读模块2(再次启动程序)
system("cls");
FILE *fp;
int i,a;
if((fp=fopen("books.txt","rb"))==NULL)
{
printf("不能打开文件!");
exit(0);
}
printf("\n\n\t\t\t\t关闭程序前联系人数量:");
scanf("%d",&a);
if(a==0)
{
printf("\n\t\t\t\t\t\t空!");
}
else
printf("\n\t\t\t\t联系人信息如下:\n");
for (i = 0; i <a; i++)
{
printf("\t\t\t\t姓名:%s\n", books[i].name);
printf("\t\t\t\t学号:%s\n", books[i].id);
printf("\t\t\t\t移动电话:%s\n", books[i].phone);
printf("\t\t\t\t住址:%s\n", books[i].add);
printf("\n");
}
fclose(fp);
}