C语言程序设计——“通讯录管理系统”

大一下第一周实训,C语言程序设计,在众多标题中选了一个我能写出来的,通讯录管理系统这一个很经典的题目,在我心中和学籍管里系统、分数统计系统并列。今天分享通讯录管理系统的代码。

小型通讯录管理系统

设计一个程序实现通讯录的管理,能够实现联系人的添加、查询、删除和显示功能,用数据文件存放通讯录信息。
具体要求如下:
(1)添加功能:根据输入的联系人的姓名、地址、联系方式,QQ号等信息,把该联系人添加到通讯录中;
(2)查询功能:根据联系人的姓名,查找该联系人的信息;
(3)删除功能:根据姓名,从通讯录中删除该联系人的信息;
(4)显示功能:输出所有通讯录信息;
(5)进行系统界面设计,用户通过从键盘输入1到4,可分别实现上述(1)到(4)的功能。

#include
#include
#include  
struct Sign
{
  char name[10];
  char addr[20];
  char tel[12];
  char com[20];
  struct Sign *next; 
}pe;
struct Sign *p1,*p2,*head;
FILE *fp;
void directory()  /*目录函数*/
{
	system("color 0D");  /*systemC语言函数库stdlib.h中的一个函数,
    color改变颜色,0-9是背景颜色,A-F是前景颜色。*/
	printf("\n\n"); 
	printf("    -----欢迎进入通讯录管理系统------\n");
	printf("    *********************************\n"); 
	printf("    *         1.添加联系人          *\n");
	printf("    *         2.查询联系人          *\n");
	printf("    *         3.删除联系人          *\n");
	printf("    *         4.显示联系人          *\n");
	printf("    *         0.退出通讯录服务;     *\n");
	printf("    *********************************\n"); 
	printf("\n\n");
}
void add()/*添加联系人*/
{	
	char ch; 
	if((fp==fopen("txl.dat","a+"))!=1)
	{
		printf("文件打开失败");
		exit(1);
	}
	while(1)
	{	
	    system("cls");/*cls函数,意指清空屏幕*/
		printf("请输入个人信息__\n");
		p2=(struct Sign*)malloc(sizeof(struct Sign));/*动态储存空间*/
		p2->next=NULL; 
		printf("姓名:");scanf("%s",pe.name);
		printf("地址:");scanf("%s",pe.addr);
		printf("电话号码:");scanf("%s",pe.tel);
		printf("QQ号或微信号:");scanf("%s",pe.com);	
		strcpy(p1->name,pe.name);
		strcpy(p1->addr,pe.addr);
		strcpy(p1->tel,pe.tel );
		strcpy(p1->com,pe.com);	
		p1->next=p2;
		p1=p2;        
		if(fwrite(&pe,sizeof(struct Sign),1,fp)!=1)
			printf("写入错误");
		printf("输入 E或e 返回主目录\n ");
		getchar();
		ch=getchar();
		if(ch=='e'||ch=='E')
			break;
	}
	fclose(fp);
}
void Selelctname()/*查询信息*/
{
	system("cls"); 	
	p1=head;
	char FindName[8];
	int i=0; 
	printf("\n请输入要查询的姓名:");
	scanf("%s",&FindName);
	while(p1->next!=NULL)
	{
		if(strcmp(p1->name,FindName)==0) 
		    {
			    printf("%10.8s %10.6s %12.10s %15.4s\n","姓名","地址","电话号码","QQ号或微信");
			    printf("%10.8s %10.6s %12.10s %15.14s\n",p1->name,p1->addr,p1->tel,p1->com);
		        i++;
			}
		p1=p1->next;
		
	} 
	printf("共  %d  条\n",i);
	system("pause"); /*pause函数,意指暂停批文件的处理并显示消息*/
} 
void Delete()/*删除信息*/
{
	char DeleteName[8]; 
	system("cls");
	int i,y=0;				
    p1=p2=head;		
	printf("请输入你要删除的信息的姓名:");
	scanf("%s",&DeleteName);
		getchar();	
	while(p1!=NULL)
	{	
	    if(strcmp(p1->name,DeleteName)==0)	
	    {	
	        printf("\n%10.8s %10.6s %12.10s %15.4s\n","姓名","地址","电话号码","QQ号或微信");	
            printf("\n%10.8s %10.6s %12.10s %15.14s\n",p1->name,p1->addr,p1->tel,p1->com);
		    y=1;
		    printf("\n您要删除的是这条记录吗?1---是;2---否\n");
		    scanf("%d",&i);
		    if(i==1)
		    { 
      		    if(p1==head)		 
           	    {
			        head=p1->next;	 
          	        free(p1);
		     	}
		    	else
             	{
           	        p2->next=p1->next;
                    free(p1);	
		  	        if((fp==fopen("txl.dat","w"))!=1)
	                {
		                printf("文件打开失败");
				    	exit(1);
		            }
	                p1=head;
	                while(p1->next!=NULL)
	                {
		                if(fwrite(p1,sizeof(struct Sign),1,fp)!=1)
		    	        printf("写入错误");
		                p1=p1->next;
		            } 
	                fclose(fp);	         	
                }
		    	printf("\n    OK!    \n");		
	     	} 
	    	else 
	            break;			
	    }
	    else if(strcmp(p1->name,DeleteName)&&(p1->next)==NULL)
	    {
		    i=0;			 
    	}
      	p2=p1;		
	    p1=p1->next;  
    }
    if(y==0)	
	{
        printf("对不起,没有找到要删除的通讯名单,请检查你要删除的姓名是否正确\n");
    }	
	system("pause");
}
void Allshow()/*显示全部通讯录名单*/
{
	printf("\n%10.8s %10.6s %12.10s %15.4s\n","姓名","地址","电话号码","QQ号或微信");	
	p1=head;
	while(p1->next!=NULL)
	{
		printf("\n%10.8s %10.6s %12.10s %15.14s\n",p1->name,p1->addr,p1->tel,p1->com);
		p1=p1->next;	
	} 		
}
void goodbye()
{
    system("color 0E");
    printf("\n\n");
 	printf("    -----欢迎进入通讯录管理系统------\n");
	printf("    *********************************\n"); 
	printf("    *                               *\n");
	printf("    *                               *\n");
	printf("    *      谢谢使用!bye bye        *\n");
	printf("    *                               *\n");
	printf("    *                               *\n");
	printf("    *********************************\n");
	printf("\n\n"); 	
}
void error()
{
	system("color 0C");
	system("cls");
	printf("\n\n");
    printf("    -----欢迎进入通讯录管理系统------\n");
	printf("    *********************************\n"); 
	printf("    *                               *\n");
	printf("    *                               *\n");
	printf("    *     输入错误!请仔细检查!    *\n");
	printf("    *                               *\n");
	printf("    *                               *\n");
	printf("    *********************************\n"); 
	printf("\n\n");
	system("pause");
}	
int main()
{
	int n;
	if((fp=fopen("txl.dat","a"))==NULL)
	{
		printf("File open error!\n");
		exit(1);
	}
	fclose(fp);	
	if((fp=fopen("txl.dat","r"))==NULL)
	{
		printf("File open error!\n");
		exit(1);
	}
	p1=(struct Sign*)malloc(sizeof(struct Sign)); 
	p1->next=NULL;
	head=p1;
	while(!feof(fp))
	{
		if(fread(p1,sizeof(struct Sign),1,fp)!=1)
			break;
		p2=(struct Sign*)malloc(sizeof(struct Sign));
		p2->next=NULL;
		p1->next=p2;
		p1=p2;
	}
	fclose(fp);	
	while(1)
	{
		directory();
		printf("    输入你想要应用的功能(0-4):");
		printf("    ");
		scanf("%d",&n);
		if(n==0)
		{
			system("cls");
	    	goodbye();	
		    exit(0);
		}    
		else if(n==1)
	    {
	    	system("color 0E");
	    	system("cls");
	    	add();
		}
		else if(n==2)
		{
			system("color 0C");
			system("cls");
			Selelctname();
		}
		else if(n==3)
		{
			system("color 0A"); 
			Delete();
		}
		else if(n==4)
		{
			system("color 0B");
			system("cls");
			Allshow();
			system("pause");
		}
		else
		    error(); 
		system("cls");	
		getchar();
	}
} 

你可能感兴趣的:(C语言)