⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 member.c

📁 DOS下的通讯录小程序
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


struct member
	{
	    char name[20];
	    char phone[16];
	    char num[20];
	    struct member *next;
	}; 
typedef struct member DATA;



void main()
{
	void update_phone(DATA *head,char str[]);
	void update_num(DATA *head,char str[]);
	void update_name(DATA *head,char str[]);
	DATA *creat(DATA *head);
	DATA *add(DATA *head,DATA *insert);
	int phone_search(DATA *head,char str[]);
	int num_search(DATA *head,char str[]);
	int name_search(DATA *head,char str[]);
	DATA *phone_del(DATA *head,char str[]);
	DATA *num_del(DATA *head,char str[]);
	DATA *name_del(DATA *head,char str[]);
	int a,b,c;
	for(a=0;a<9;a++) printf("	*");
	printf("\n		通		讯		录		\n");
	for(b=0;b<9;b++) printf("	*");
	FILE *f;
	DATA *head=NULL;
	DATA *p1;
    if((f=fopen("data.dat","rb"))==NULL)
	{
        printf("	已建立通讯录data.dat\n");
	    f=fopen("data.dat","ab+");
	}
	else
	{

	    p1=(DATA*) malloc(sizeof(DATA));
		while(fread(p1,sizeof(DATA),1,f)==1)
		{
			p1->next=head;
			head=p1;
			p1=(DATA*) malloc(sizeof(DATA));
		}
	}
	fclose(f);

    loop1:printf("\n\n	*	*	*	*	*	*	*	*	*");
	printf("	请选择您所需要的操作,按回车结束\n");
	printf("\n	1.查找");
	printf("\n	2.添加");
	printf("\n	3.删除");
	printf("\n	4.修改");
	printf("\n	5.全部输出");
	printf("\n	0.结束\n");
	scanf("%d",&c);


	if(c==1)                          /*查找操作*/
	{
        loop2:int d,z;
		printf("\n	1.按姓名查找\n");
		printf("	2.按学号查找\n");
		printf("	3.按电话号码查找\n");
		printf("	0.返回上一级\n");
		scanf("%d",&d);
		if(d!=0)
		{
			if(d==1)
			{
			   char NA[20];
			   printf("	请输入所要查找的姓名全拼,按回车结束\n");
			   scanf("%s",NA);
               z=name_search(head,NA);
			}
		    else if(d==2)
			{
			   char NU[20];
			   printf("	请输入所要查找的学号,按回车结束\n");
			   scanf("%s",NU);
			   z=num_search(head,NU);
			}
		    else if(d==3)
			{
			   char PH[16];
			   printf("	请输入所要查找的电话号码,按回车结束\n");
			   scanf("%s",PH);
			   z=phone_search(head,PH);
			}
			else {printf("	无效操作,\n");goto loop2;};
		}
		else  goto loop1;
		if(z!=1) printf("		未查找到您要的资料\n");
		printf("	查找完成,按'0'返回\n");
		int k;
		scanf("%d",&k);
		for(;k!=0;) {printf("	无效操作,请重新输入\n");scanf("%d",&k);}
		goto loop2;
	}


	if(c==2)                           /*添加操作*/
	{
		int e;
        head=creat(head);
		printf("	添加完毕,按'0'返回\n");
		scanf("%d",&e);
		for(;e!=0;) {printf("	 无效操作,请重新输入\n");scanf("%d",&e);}
	    goto loop1;
	}


	if(c==3)                       /*删除操作*/
	{
        loop3:int f,m;
		printf("\n	1.按姓名删除\n");
		printf("	2.按学号删除\n");
		printf("	3.按电话号码删除\n");
		printf("	0.返回上一级\n");
		scanf("%d",&f);
		if(f!=0)
		{
            if(f==1)
			{
				char NA[20];
			    printf("	请输入所要删除的姓名,按回车结束\n");
			    scanf("%s",NA);
                head=name_del(head,NA);
			}
		    if(f==2)
			{
			    char NU[20];
			    printf("	请输入所要删除的学号,按回车结束\n");
			    scanf("%s",NU);
				head=num_del(head,NU);
			}
			if(f==3)
			{
	            char PH[16];
			    printf("	请输入所要删除的电话号码,按回车结束\n");
			    scanf("%s",PH);
				head=phone_del(head,PH);
			}
			printf("	完成删除,按'0'返回\n");
			scanf("%d",&m);
			for(;m!=0;) {printf("	无效操作,请重新输入\n");scanf("%d",&m);}
			goto loop3;
		}
		if(f==0) goto loop1;
	}


		if(c==4)             /*修改操作*/
		{
            loop4:int n,y;
			printf("\n	1.按姓名查找修改\n");
			printf("	2.按学号查找修改\n");
			printf("	3.按电话号码查找修改\n");
			printf("	0.返回上一级\n");
			scanf("%d",&n);
			if(n!=0)
			{
				if(n==1)
				{
                    l1:char NA[20];
					printf("	请输入所要修改资料的姓名的全拼,按回车结束\n");
					scanf("%s",NA);
					y=name_search(head,NA);
					if(y==0) {printf("	找不到您要删除的资料\n");goto loop4;}
					else 
					{
						printf("	是否是您所要修改的资料? 1.是 2.不是");
					    int o;
					    scanf("%d",&o);
					    if(o==2) goto l1;
					    if(o==1)
						{
							int q;
							update_name(head,NA);
						    printf("	修改完成,按'0'返回\n");
						    scanf("%d",&q);
							for(;q!=0;){printf("	无效操作,请重新输入\n");scanf("%d",&q);}
							goto loop4;
						}
					}
				}
				if(n==2)
				{
                    l2:char NU[20];
					printf("	请输入所要修改资料的学号,按回车结束\n");
					scanf("%s",NU);
					y=num_search(head,NU);
					if(y==0) {printf("	找不到您要删除的资料\n");goto loop4;}
					else
					{
						printf("	是否是您所要修改的资料? 1.是 2.不是\n");
					    int r;
					    scanf("%d",&r);
					    if(r==2) goto l2;
					    if(r==1)
						{
							int s;
						    update_num(head,NU);
						    printf("	修改完成,按'0'返回\n");
							scanf("%d",&s);
							for(;s!=0;) {printf("	无效操作,请重新输入\n");scanf("%d",&s);}
							goto loop4;
						}
					}
				}
				if(n==3)
				{
                    l3:char PH[16];
					printf("	请输入所要修改资料的电话号码,按回车结束\n");
					scanf("%s",PH);
					y=phone_search(head,PH);
					if(y==0) {printf("	找不到您要删除的资料\n");goto loop4;}
					else
					{
						printf("	是否是您所要修改的资料? 1.是 2.不是");
					    int t;
					    scanf("%d",&t);
					    if(t==2) goto l3;
					    if(t==1)
						{
							int u;
						    update_phone(head,PH);
						    printf("	修改完成,按'0'返回\n");
							scanf("%d",&u);
							for(;u!=0;) {printf("	无效操作,请重新输入\n");scanf("%d",&u);}
							goto loop4;
						}
					}
				}
			}
			if(n==0) goto loop1;
			else {printf("	无效操作,请重新输入\n");goto loop4;}
	}



	if(c==5)
	{
		DATA *p3=head;
		printf("	全部资料如下:\n");
		while(p3!=NULL)
		{
			printf("%15s   %12s   %11s\n",p3->name,p3->phone,p3->num);
			p3=p3->next;
		}
		printf("	输出结束,按'0'返回\n");
		int v;
		scanf("%d",&v);
		for(;v!=0;){printf("	无效操作,请重新输入\n");scanf("%d",&v);}
		goto loop1;
	}


	if(c==0)
	{
		f=fopen("data.dat","wb");
	    while(head!=NULL)
		{
			fwrite(head,sizeof(DATA),1,f);
		    head=head->next;
		}
		printf("	 保存完毕!\n");
		fclose(f);
	}
	else 
	{
		printf("		无效操作,请重新输入\n");
		goto loop1;
	}
	exit(0);
}
		


				


DATA *name_del(DATA *head,char str[])         /* 定义通过name删除的函数name_del*/
{
	DATA *p1,*p2;
	if(head==NULL) {printf("未找到 %s !\n",str);return(head);}
	p1=head;
	while(strcmp(str,p1->name)!=0 && p1->next!=NULL)
	{
        p2=p1;
		p1=p1->next;
	}
	if(strcmp(str,p1->name)==0)
	{
		if(p1==head) head=p1->next;
		else p2->next=p1->next;
		printf("删除:%s\n",str);
	}
	else printf("未找到 %s !\n",str);
	return(head);
}


DATA *num_del(DATA *head,char str[])      /*定义通过num删除的函数num_del*/
{
	DATA *p1,*p2;
	if(head==NULL) {printf("未找到 %s !\n",str);return(head);}
	p1=head;
	while(strcmp(str,p1->num)!=0 && p1->next!=NULL)
	{
		p2=p1;
		p1=p1->next;
	}
	if(strcmp(str,p1->num)==0)
	{
		if(p1==head) head=p1->next;
		else p2->next=p1->next;
		printf("删除:%s\n",str);
	}
	else printf("未找到 %s !\n",str);
	return(head);
}


DATA *phone_del(DATA *head,char str[])      /*定义通过phone删除的函数phone_del*/
{
	DATA *p1,*p2;
	if(head==NULL) {printf("未找到 %s !\n",str);return(head);}
	p1=head;
	while(strcmp(str,p1->phone)!=0 && p1->next!=NULL)
	{
		p2=p1;
		p1=p1->next;
	}
	if(strcmp(str,p1->phone)==0)
	{
		if(p1==head) head=p1->next;
		else p2->next=p1->next;
		printf("删除:%s\n",str);
	}
	else printf("未找到 %s !\n",str);
	return(head);
}


int name_search(DATA *head,char str[])    /*定义按name查找的函数name_search*/
{
	DATA *p1;
	if(head==NULL) return(0);
	p1=head;
	while(strcmp(str,p1->name)!=0 && p1->next!=NULL)
	{
		p1=p1->next;
	}
	if(strcmp(str,p1->name)==0) 
	{
		printf("	查找结果:\n");
		printf("%15s   %12s   %11s\n",p1->name,p1->phone,p1->num);
		return(1);
	}
	else return(0);
}

int num_search(DATA *head,char str[])    /*定义按num查找的函数num_search*/
{
	DATA *p1,*p2;
	if(head==NULL) return(0);
	p1=head;
	while(strcmp(str,p1->num)!=0 && p1->next!=NULL)
	{
		p2=p1;
		p1=p1->next;
	}
	if(strcmp(str,p1->num)==0) 
	{
		printf("	查找结果:\n");
		printf("%15s   %12s   %11s\n",p1->name,p1->phone,p1->num);
		return(1);
	}
	else return(0);
}

int phone_search(DATA *head,char str[])    /*定义按phone查找的函数phone_search*/
{
	DATA *p1,*p2;
	if(head==NULL) return(0);
	p1=head;
	while(strcmp(str,p1->phone)!=0 && p1->next!=NULL)
	{
		p2=p1;
		p1=p1->next;
	}
	if(strcmp(str,p1->phone)==0) 
	{
		printf("	查找结果:\n");
		printf("%15s   %12s   %11s\n",p1->name,p1->phone,p1->num);
		return(1);
	}
	else return(0);
}



DATA *creat(DATA *head)                   /*定义添加新结点的函数creat*/
{
	DATA *p1;
	p1=(DATA*) malloc(sizeof(DATA));
	printf("\n请输入要添加人名的全拼\n");
	scanf("%s",&p1->name);
	printf("\n请输入要添加的学号\n");
	scanf("%s",&p1->num);
	printf("\n去输入要添加的电话号码\n");
	scanf("%s",&p1->phone);
	p1->next=head;
	head=p1;
	return(p1);
}

void update_name(DATA *head,char str[])           /*定义修改函数update*/
{
    DATA *p1;
	p1=head;
	if(strcmp(str,p1->name)!=0 && p1->next!=NULL)
	{
		p1=p1->next;
	}
	if(strcmp(str,p1->name)==0)
	{
		printf("	请输入新的姓名,按回车结束\n");
	    scanf("%s",p1->name);
	    printf("	请输入新的学号,按回车结束\n");
	    scanf("%s",p1->num);
	    printf("	请输入新的电话号码,按回车结束\n");
	    scanf("%s",p1->phone);
	    printf("%15s   %12s   %11s\n",p1->name,p1->phone,p1->num);
	}
}


void update_num(DATA *head,char str[])
{
    DATA *p1;
	p1=head;
	if(strcmp(str,p1->num)!=0 && p1->next!=NULL)
	{
		p1=p1->next;
	}
	if(strcmp(str,p1->num)==0)
	{
		printf("	请输入新的姓名,按回车结束\n");
	    scanf("%s",p1->name);
	    printf("	请输入新的学号,按回车结束\n");
	    scanf("%s",p1->num);
	    printf("	请输入新的电话号码,按回车结束\n");
	    scanf("%s",p1->phone);
	    printf("%15s   %12s   %11s\n",p1->name,p1->phone,p1->num);
	}
}

void update_phone(DATA *head,char str[])
{
    DATA *p1;
	p1=head;
	if(strcmp(str,p1->phone)!=0 && p1->next!=NULL)
	{
		p1=p1->next;
	}
	if(strcmp(str,p1->phone)==0)
	{
		printf("	请输入新的姓名,按回车结束\n");
	    scanf("%s",p1->name);
	    printf("	请输入新的学号,按回车结束\n");
	    scanf("%s",p1->num);
	    printf("	请输入新的电话号码,按回车结束\n");
	    scanf("%s",p1->phone);
	    printf("%15s   %12s   %11s\n",p1->name,p1->phone,p1->num);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -