C语言程序设计通讯录管理系统
/*设计一个学生通讯录,内容可自行设计如:姓名,家庭住址,邮编,电话号码等。
结构体类型,要求主函数是一功能选择菜单,其它用各自函数实现,
要求:
1能建立,修改,增删通讯录
2能按多种方式查询
3通讯录数据保存在文件中,运行程序时从文件读取到内存里,可以将修改后的数据重新保存至文件。*/
#include
#include
#include
struct student//定义学生结构体
{
char name[10];
char sex[4];
charaddr[30];
charexl[10];
chartel[12];
}stu[100],s;
void Initiate()//创建新的通讯录
{
FILE *fw;int n;
if((fw=fopen("txl.text","wb"))==NULL)
{
printf("cannot open file\n");
}
printf("请输入新建的条目:");
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
printf("请输入第%d条信息!\n",i);
printf("姓名:");
scanf("%s",&stu[i].name);printf("\n");
printf("性别:");
scanf("%s",&stu[i].sex);printf("\n");
printf("地址:");
scanf("%s",&stu[i].addr);printf("\n");
printf("邮编:");
scanf("%s",&stu[i].exl);printf("\n");
printf("电话:");
scanf("%s",&stu[i].tel); printf("\n");
fwrite(&stu[i],sizeof(struct student),1,fw);
}
fclose(fw);
}
void Show()//显示通讯录
{
FILE *fr;int i=1;
if((fr=fopen("txl.text","rb"))==NULL)
{
printf("cannot open file\n");
}
printf("姓名\t性别\t地址\t邮编\t电话\n");
while(!feof(fr))
{
fread(&stu[i],sizeof(struct student),1,fr);
if(!feof(fr))//判断是否指针在文件的最后,如果在最后则不予执行
{
printf("%s\t%s\t%s\t%s\t%s\n",stu[i].name,stu[i].sex,stu[i].addr,stu[i].exl,stu[i].tel);
i++;}
}
fclose(fr);
}
void Add()
{
FILE *fw;
if((fw=fopen("txl.text","ab"))==NULL)
{
printf("cannot open file\n");
}
printf("姓名:\n");
scanf("%s",&s.name);
printf("性别:\n");
scanf("%s",&s.sex);
printf("地址:\n");
scanf("%s",&s.addr);
printf("邮编:\n");
scanf("%s",&s.exl);
printf("电话:\n");
scanf("%s",&s.tel);
fwrite(&s,sizeof(struct student),1,fw);
fclose(fw);
}
void Del()//删除条目
{
char name[10];
int i=1; FILE *fr;FILE *fw;
printf("请输入姓名:");
scanf("%s",name);
if((fr=fopen("txl.text","rb"))==NULL)
{
printf("cannot open file\n");
}
if((fw=fopen("txl1.text","wb"))==NULL)
{
printf("cannot open file\n");
}
while(!feof(fr))//循环条件
{
fread(&s,sizeof(struct student),1,fr);
if(!feof(fr))//判断是否指针在文件的最后,如果在最后则不予执行fwrite(&s,sizeof(struct student),1,fw);
}
fclose(fr);
fclose(fw);
remove("txl.text");
if((fr=fopen("txl1.text","rb"))==NULL)
{
printf("cannot open file\n");
}
if((fw=fopen("txl.text","wb"))==NULL)
{
printf("cannot open file\n");
}
int j=1;
while(!feof(fr))//循环条件
{
fread(&s,sizeof(struct student),1,fr);
if(!feof(fr))//判断是否指针在文件的最后,如果在最后则不予执行{
if(strcmp(name, s.name)!=0)//相等等于0
{
fwrite(&s,sizeof(struct student),1,fw);//符合条件的才复制
}
}
}
fclose(fr);
fclose(fw);
remove("txl1.text");
}
void Queryname()//按姓名查询,先读出条目,在每个进行判断
{
char name[10];
FILE *fr;int i=0;
printf("请输入要查询的姓名:");
scanf("%s",name);
if((fr=fopen("txl.text","rb"))==NULL)
{
printf("cannot open file\n");
}
printf("姓名\t性别\t地址\t邮编\t电话\n");
while(!feof(fr))
{ i++;
fread(&stu[i],sizeof(struct student),1,fr);
if(strcmp(name, stu[i].name)==0)
{
printf("%s\t%s\t%s\t%s\t%s\n",stu[i].name,stu[i].sex,stu[i].addr,stu[i].exl,stu[i].tel);
}
}
fclose(fr);
}
void Querysex()//按性别查询,先读出条目,在每个进行判断
{
char sex[4];
FILE *fr;int i=0;
printf("请输入要查询的性别:");
scanf("%s",sex);
if((fr=fopen("txl.text","rb"))==NULL)
{
printf("cannot open file\n");
}
printf("姓名\t性别\t地址\t邮编\t电话\n");
while(!feof(fr))
{ i++;
fread(&stu[i],sizeof(struct student),1,fr);
if(strcmp(sex, stu[i].sex)==0)
{
printf("%s\t%s\t%s\t%s\t%s\n",stu[i].name,stu[i].sex,stu[i].addr,stu[i].exl,stu[i].tel);
}
}
fclose(fr);
}
void Alter()
{
Del();
Add();
}
void Menu()
{
printf("**************欢迎使用通讯录系统**************");
printf("\n");
printf("\n");
printf(" 1.创建通讯录\n");
printf(" 2.插入信息\n");
printf(" 3.姓名查询\n");
printf(" 4.性别查询\n");
printf(" 5.修改记录\n");
printf(" 6.删除记录\n");
printf(" 7.显示所有记录\n");
printf(" 8.退出通讯录\n");
printf("\n");
printf("请予以选择");
}
void main()
{
int choice=1;
while(choice<8)
{
Menu();
scanf("%d",&choice);
system("cls");