基于C的电子通讯录管理系统

基于C的电子通讯录管理系统

实验目的与要求:

1.进一步熟悉C语言的数据类型、运算符、表达式、程序控制结构。
2.掌握C语言的数组和动态链表的熟练使用。
3.掌握C语言的指针的使用。4.掌握C语言的结构体的使用。
5.掌握C语言文件操作命令的使用。
6.以上知识的综合练习完成电子通讯录管理系统代码的编写。

程序

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100struct record
{
//保存姓名	
char name[20];
//保存电子邮件					
char email[30];
//保存家庭住址					
char homeaddr[60];
//保存手机号				
char telephone[13];			
}records[N];	//结构体数组
int i; 
void Read_Data() /*读文件*/
{//说明fp是指针,用来指向FILE类型的对象 	
FILE*fp;								
fp=fopen("D:\\yinzhihui.txt","a+");
/*fopen函数是打开一个文件,文件指针名=fopen(文件名,使用文件方式)*/	i=0;	
	while(!feof(fp))//feof:文件结束,返回非0值,文件未结束,返回0值 
	{	
	fscanf(fp,"%s%s%s%s",records[i].name,records[i].email,records[i].homead dr,records[i].telephone);		
	i++;
	}	
	fclose(fp);//如果流成功关闭,fclose 返回 0,否则返回EOF(-1)
}  
//添加联系人
void Add_People(char name[20])						
{	
	int j,n;	
	for(j=0;j<=i;j++)	//将添加的联系人以名字排序
	{ 		
		if(strcmp(records[j].name,name)>0)
		break;//strcmp:两个字符串自左向右逐个字符相比(按ASCII值),直到出现不同的字符或遇'\0'为止	
	}	
	for(n=i;n>=j;n--)	//将第i个信息变成第i+1个	
	{			
		strcpy(records[n+1].name,records[n].name);/*trcpy把后一个字符串复制前面的数组*/		
		strcpy(records[n+1].email,records[n].email);        				strcpy(records[n+1].homeaddr,records[n].homeaddr);				strcpy(records[n+1].telephone,records[n].telephone);	
	}		
	i++;		
	strcpy(records[j].name,name);  //将联系人姓名存到结构体
	printf("\n请输入联系人的电子邮件:");	    
	scanf("%s",records[j].email);		
	printf("\n请输入联系人的家庭地址:");	   
	scanf("%s",records[j].homeaddr);		
	printf("\n请输入联系人的电话:");	    
	scanf("%s",records[j].telephone);		
	printf("\n添加成功!\n");
} 
int Search_Name(char namestr[20])   //查询
{	
	int j;	
	for(j=0;j<=i;j++)	
	{
		if(strcmp(namestr,records[j].name )==0)
		break;
	}		//比较不同,相同输出	
	return j;
}
void DeletePeo()			//删除
{	
	char nametemp[20];	
	int tp,n;	
	if(i<1)	
	{
		printf("\n没有删除的记录\n");
		return;
	}	
	printf("请输入您要查找的联系人姓名:");	
	scanf("%s",nametemp);	
	n=Search_Name(nametemp);	
	if(n>i)	
	{
		printf("查找失败!\n");
		return;
	}	
	printf("确认要删除吗?确认按1,否则按任意键返回上一级菜单!\n");	
	scanf("%d",&tp);	
	if(tp==1)	//确定输入1,删除	
	{		
		int j;	
		for(j=n+1;j<=i;j++)
		{		
			strcpy(records[j-1].name,records[j].name);						strcpy(records[j-1].email,records[j].email);					strcpy(records[j-1].homeaddr,records[j].homeaddr);	
			strcpy(records[j-1].telephone,records[j].telephone);	
		}	
		i--;	
	}	
	else return;
}  
void Data_Show(int n)		//显示
{
	printf("%s %s %s %s\n",records[n].name,records[n].email,records[n].homeaddr,records[n].telephone);
}
 void Change(char name[20])	//修改
 {	
	int n,m;	
	char string[60];	
	n=Search_Name(name);//判断修改的联系人是否存在	
	if(n>i)	
	{
		printf("您查找的联系人不存在!\n");
		return;
	}	
	Data_Show(n);	//显示联系人的信息	
	printf("请选择你要修改的资料:\n1修改联系人姓名;\n2修改联系人电子邮箱;\n3修改联系人地址;\n4修改联系人电话;\n5退出!;\n\n");	
	scanf("%d",&m);	
	while(m!=5)	
	{	
		switch(m)		
		{		
			case 1:printf("请输入新的姓名:");
			 	scanf("%s",string);			
			 	strcpy(records[n].name ,string);
			 	break;	
			 case 2:printf("请输入新的电子邮件:");	
			 		scanf("%s",string);											strcpy(records[n].email ,string);
			 		break;	
			case 3:printf("请输入新的地址:");
			 	scanf("%s",string);	
			 	 strcpy(records[n].homeaddr  ,string);
			 	 break;	
			case 4:printf("请输入新的电话:");
			 	scanf("%s",string);		
			 	strcpy(records[n].telephone  ,string);
			 	break;	
			case 5:return; 		
		}		
		printf("请继续选择你要修改的资料:\n1修改联系人姓名;\n2修改联系人电子邮箱;\n3修改联系人地址;\n4修改联系人电话;\n5退出!;\n\n");	
		scanf("%d",&m);	
	}
}  
void Data_Save()//保存
{	
	FILE*fp;int n;fp=fopen("D:\\yinzhihui.txt","w+");       //将信息保存到文件yinzhihui.txt中
	for(n=0;n<=i;n++)
	{	
		fprintf(fp,"%s %s %s %s",records[n].name,records[n].email,records[n].homeaddr,records[n].telephone);
		fprintf(fp,"\n");
	}
	fclose(fp);
}   
 void main()
{
	int ch,m,n;	
	char tp,nametemp[20];	
	Read_Data();   //把文件数据导入文件yinzhihui.txt中	
	i--;	
	printf("电子通讯录:\n");	
	printf("请选择您需要的操作:\n");	
	printf("1修改;\n2查看所有联系人;\n3删除联系人;\n4查询联系人;\n5添加联系人;\n6保存;\n7退出\n\n");	
	scanf("%d",&ch);	
	while(ch!=7)	
	{		
		switch(ch)		
		{		
			case 1:printf("请输入要修改的联系人姓名:");		
				scanf("%s",nametemp);			
				Change(nametemp);
				break;		
			case 2:for(m=0;m<=i;m++)Data_Show(m);
				break;		
			case 3:DeletePeo();
				break;		
			case 4:printf("请输入您要查询的人的姓名:");		
				scanf("%s",nametemp);			
				n=Search_Name(nametemp);			
				if(n>i) printf("没有您要找的联系人姓名:");	
				else Data_Show(n);
				break;		
			case 5:printf("请输入待添加的联系人的姓名:");	
				scanf("%s",nametemp);			
				Add_People(nametemp);break;		
			case 6:printf("保存数据吗?确定按8键,否则按任意键选择其他操作!\n");			
				scanf("%d",&tp);			
				if(tp==8) Data_Save();
				break;		
			case 7:return;		
		}		
		printf("\n1修改;\n 2查看所有联系人;\n 3删除联系人;\n 4查询联系人;\n 5添加联系人;\n6保存;\n 7退出\n\n");		
		scanf("%d",&ch);	
	}
}  

结果

在这里插入图片描述

发布了10 篇原创文章 · 获赞 10 · 访问量 531

猜你喜欢

转载自blog.csdn.net/weixin_46066007/article/details/103748611