通讯录管理系统 指针 链表 学生管理系统 人员管理系统

下面只是一个通讯录管理系统,不过增删改查功能都是齐全的,这个只是当做一个模板使用,可以在这个上面作出修改,改成别的什么什么系统,仅做参考
密码:123456

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define LEN sizeof(struct xinxi)
struct xinxi
{
	char xingming[30];
	char chengshi[10];
	char dianhau[15];
	char youbian[10];
	struct xinxi *next;
};
struct xinxi *chuangjian()
{
	int n=0; 
	struct xinxi *head,*p1,*p2;
	char a[99]="123";
	while(strcmp(a,"0")){
		if(n==0){
			p1=(struct xinxi *)malloc(LEN);
			head=p1;
		}else{
			p2->next=p1;
		}
		printf("请输入姓名:"); 
        scanf("%s",&p1->xingming);
        printf("请输入城市:");
        scanf("%s",&p1->chengshi);
        printf("请输入电话:");
        scanf("%s",&p1->dianhau);
        printf("请输入邮政编码:");
        scanf("%s",&p1->youbian);
		p2=p1;
		p1=(struct xinxi *)malloc(LEN);
		n++;
		printf("是否要继续输入?继续请输入非零的数据,结束请输入0\n"); 
		scanf("%s",a);
	}
	printf("*******************************************\n");
	printf("结束输入\n结束时别忘了保存到文件哟!!!\n");
	p2->next=NULL;
	return head;
	
	
}
void chazhao(struct xinxi *p2)
{
	if(p2==NULL)
	{
		printf("无数据  请创建或导入后查询\n");
	}
	else
	{
		printf("按名字查找请输入1,按城市查找请输入2,按邮政编码查找请输入3\n\n");
		char ch[30];
		scanf("%s",ch);
		if(strcmp(ch,"1")==0)
				{
					struct xinxi *a;
                    a=p2;//保留头指针 
	                printf("请输入你要查找的姓名:");
	                char xingming1[30];
	                scanf("%s",xingming1);
	                while(1)
	                {	 
                        if(strcmp(p2->xingming,xingming1)==0)
                        {  
      	                    printf("姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);
      	                    printf("**********************\n");
							break;
	                    }	
	                        else if(p2->next==NULL)
	                    {
	  	                    printf("查无此人,是否重新输入?是 请输入不为0的数据  否 请输入0\n");
		                    char ch[30];
		                    scanf("%s",ch);
		                    if(strcmp(ch,"0")!=0)
		                    {
			                    chazhao(a);
		                    } 
		                    else
		                    {
			                    break;
		                    }
		                break;//跳出后来调用的chazhao(a)的while循环 
	                    } 
	                    else 
	                    { 
	  	                    p2=p2->next; 
	                    }
	                } 
				}
			else if(strcmp(ch,"2")==0)
				{
					char chengshi[30];
	                printf("输入你想查找的城市");
	                scanf("%s",chengshi);
	                while(p2!=NULL)
	                {
		                if(strcmp(p2->chengshi,chengshi)==0)
		                {
			                printf("姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);
			                printf("**********************\n");
							p2=p2->next; 
		                }
		                else
		                {
			                p2=p2->next;
		                }
	                }
				}
			else if(strcmp(ch,"3")==0)
				{
					char youbian[30];
	                printf("输入你想查找的邮政编码");
	                scanf("%s",youbian);
	                while(p2!=NULL)
	                {
		                if(strcmp(p2->youbian,youbian)==0)
		                {
			                printf("姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);
			                printf("**********************\n");
							p2=p2->next;
		                }
		                else
		                {
			                p2=p2->next;
		                }
	                }
				}
			else
				{
					printf("输入错误"); 
				}
		
        
    }
}
void zengjia(struct xinxi *p3)
{
	if(p3==NULL)
	{
		printf("请创建或导入后再增加\n");
		 
	}
	else
 {
	struct xinxi *p;
	while(p3->next!=NULL)
	{
		p3=p3->next;
	}
	char ch[30];
	while(strcmp(ch,"0")!=0)
	{
		p=(struct xinxi *)malloc(sizeof(struct xinxi));
		printf("请输入姓名:"); 
	    scanf("%s",&p->xingming);
	    printf("请输入城市:");
	    scanf("%s",&p->chengshi);
	    printf("请输入电话:");
	    scanf("%s",&p->dianhau);
	    printf("请输入邮政编码:");
	    scanf("%s",&p->youbian);
	    p3->next=p;
	    p3=p;
	    printf("是否继续增加 是请输入不为0的数据 否请输入0\n");
	    scanf("%s",ch);
	}
	printf("结束时别忘了保存到文件中哟!!!\n"); 
	p3->next=NULL;
 }
}
struct xinxi *shanchu(struct xinxi *p2)
{
	if(p2==NULL)
	{
		printf("无数据  请创建或导入后再选择删除\n");
	}
	else
	{
        struct xinxi *a,*p;
        p=(struct xinxi *)malloc(sizeof(struct xinxi));
        a=p2;//保留头指针 
	    printf("请输入你要删除的姓名:");
	    char xingming1[30];
	    scanf("%s",xingming1);
	    if(strcmp(p2->xingming,xingming1)==0)
	    {
	    	printf("删除成功\n");
	    	return p2->next;
	    	free(p2);
	    }
	    else
	    {
	        while(1)
	        {
	            if(p2->next==NULL)
	            {
	      	        printf("查无此人,是否重新选择删除?是 请输入不为0的数据  否 请输入0\n");
		            char ch[30];
		            scanf("%s",ch);
		            if(strcmp(ch,"0")!=0)
		                {
			                shanchu(a);
		                } 
		            else
		                {
			                break;
		                }
		            break;//跳出后来调用的chazhao(a)的while循环
		        }
	            else if(strcmp(p2->next->xingming,xingming1)==0)
                {  
                    p=p2;
                    free(p2->next);
                    p->next=p->next->next;
                    printf("删除成功\n");
                    return a;
                    break;
	            }	
	            else 
	            { 
	  	            p2=p2->next;
	            }
	        }
        }
    }
}
void xiugai(struct xinxi *p2)
{
	if(p2==NULL)
	{
		printf("无数据  请创建或导入后修改\n");
	}
	else
	{
        struct xinxi *a;
        a=p2;//保留头指针 
	    printf("请输入你要修改的姓名:");
	    char xingming1[30];
	    scanf("%s",xingming1);
	    char n[30],m[30];
	    while(1)
	    {	 
            if(strcmp(p2->xingming,xingming1)==0)
            {  
      	        while(strcmp(m,"0")!=0)
      	        {
      	        	printf("姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);
      	            printf("\n");
					printf("修改姓名输入1\n修改城市输入2\n修改电话输入3\n修改邮政编码输入4\n");
				    scanf("%s",n);
				    if(strcmp(n,"1")==0)
						    {
							    printf("输入新的名字:"); 
							    scanf("%s",&p2->xingming);
							    printf("\n");
							    printf("姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);
      	                        printf("\n");
							    printf("是否继续修改?是请输入不为0的数据,否请输入0\n");
								scanf("%s",m);
							    break;
						    }
					else if(strcmp(n,"2")==0)
						    {
							    printf("输入新的城市:"); 
							    scanf("%s",&p2->chengshi);
							    printf("\n");
							    printf("新的数据是:\n姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);
      	                        printf("\n");
							    printf("是否继续修改?是请输入不为0的数据,否请输入0\n");
								scanf("%s",m);
							    break;
						    }
					else if(strcmp(n,"3")==0)
						    {
							    printf("输入新的电话:"); 
							    scanf("%s",&p2->dianhau);
							    printf("\n");
							    printf("新的数据是:\n姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);
      	                        printf("\n");
							    printf("是否继续修改?是请输入不为0的数据,否请输入0\n");
								scanf("%s",m);
						    	break;
						    }
					else if(strcmp(n,"4")==0)
						    {
						    	printf("输入新的邮政编码:"); 
							    scanf("%s",&p2->youbian);
							    printf("\n");
							    printf("新的数据是:\n姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);
      	                        printf("\n");
							    printf("是否继续修改?是请输入不为0的数据,否请输入0\n");
								scanf("%d",m);
						    	break;
						    }
					else
						    {
						    	printf("请重新输入\n"); 
						    	break;
						    }
					}
      	        break;
	        }	
	        else if(p2->next==NULL)
	        {
	  	        printf("查无此人,是否重新输入?是 请输入不为0的数据  否 请输入0\n");
		        char ch[30];
		        scanf("%s",ch);
		        if(strcmp(ch,"0")!=0)
		        {
			        chazhao(a);
		        } 
		        else
		        {
			        break;
		        }
		        break;//跳出后来调用的chazhao(a)的while循环 
	        } 
	        else 
	        { 
	  	        p2=p2->next;
	        }
	    }
    }
}
void paixu(struct xinxi *p2)
{
	if(p2==NULL)
	{
		printf("无数据 请创建或者导入后输出\n"); 
	}
	else
	{
	
	    struct xinxi *p,*p1,*p3;
    	p1=(struct xinxi*)malloc(sizeof(struct xinxi));
    	for(p3=p2;p3!=NULL;p3=p3->next)
    	{
	    	for(p=p2;p->next!=NULL;p=p->next)
		    {
			    if(strcmp(p->dianhau,p->next->dianhau)>0)
			    {
				    strcpy(p1->xingming,p->xingming);
			    	strcpy(p->xingming,p->next->xingming);
			    	strcpy(p->next->xingming,p1->xingming);
			    	strcpy(p1->dianhau,p->dianhau);
			    	strcpy(p->dianhau,p->next->dianhau);
			    	strcpy(p->next->dianhau,p1->dianhau);
			    	strcpy(p1->chengshi,p->chengshi);
				    strcpy(p->chengshi,p->next->chengshi);
				    strcpy(p->next->chengshi,p1->chengshi);
			    	strcpy(p1->youbian,p->youbian);
			    	strcpy(p->youbian,p->next->youbian);
			    	strcpy(p->next->youbian,p1->youbian);
			    }
		    }
	    }
    }
	while(p2!=NULL)
	{
		printf("%s的信息如下:\n城市:%s\n电话:%s\n邮政编码:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);
		printf("**********************\n");
		p2=p2->next;
	}
} 
struct xinxi *daoru()
{
	struct xinxi *p2,*p1,*head,*p,*p3;
	int i=0;
	FILE *fp;
	if((fp=fopen("D:\\通讯录.txt","rb"))==NULL)
	{
		printf("无法打开文件\n");
		exit(0);
	}
	p3=(struct xinxi *)malloc(sizeof (struct xinxi));
	if(fscanf(fp,"%s\t%s\t%s\t%s\n",p3->xingming,p3->chengshi,p3->dianhau,p3->youbian)!=EOF&&fscanf(fp,"%s\t%s\t%s\t%s\n",p3->xingming,p3->chengshi,p3->dianhau,p3->youbian)==EOF)
	{
		printf("无数据 请创建后导入");
		fclose(fp);
	}
	else
	{
	p2=p1=(struct xinxi *)malloc(sizeof (struct xinxi));
	head=NULL;
	strcpy(p1->xingming,p3->xingming);
	strcpy(p1->chengshi,p3->chengshi);
	strcpy(p1->dianhau,p3->dianhau);
	strcpy(p1->youbian,p3->youbian);
	head=p1;
	do
	{
		p1=(struct xinxi *)malloc(sizeof (struct xinxi));
		p=p2;
		p2->next=p1;
		p2=p1;
	}while(fscanf(fp,"%s\t%s\t%s\t%s\n",p1->xingming,p1->chengshi,p1->dianhau,p1->youbian)!=EOF);
//	p3=head;
//	head=head->next;
//	free(p3);
	free(p1);
	p->next=NULL;
	fclose(fp);
	printf("导入成功\n");
	return head;
    }	
}
void baocun(struct xinxi *p2)
{
	FILE *fp;
    if(!(fp=fopen("D:\\通讯录.txt","wt+")))
    {
    	printf("不能打开文件\n"); 
    	exit(0);
	}
	fputs("姓名\t城市\t电话\t邮政编码\n",fp);
	while(p2!=NULL)
	{
		fputs(p2->xingming,fp);
	    fputs("\t",fp);
	    fputs(p2->chengshi,fp);
	    fputs("\t",fp);
	    fputs(p2->dianhau,fp);
	    fputs("\t",fp);
	    fputs(p2->youbian,fp);
	    fputs("\n",fp);
	    p2=p2->next;
	}
	fclose(fp);
	printf("保存成功!");
}
int main()
{
	printf("请输入密码,共三次机会\n"); 
	int i=1;
	char mima[30];
	char ch[30];
	struct xinxi *p=NULL;
	for(i=1;i<=3;i++)
	{
		scanf("%s",mima);
	    if(strcmp(mima,"123456")==0)
	    { 
	        printf("输入正确!\n");
	        printf("***********************\n");
	        system("cls");
	        printf("\t\t欢迎来到通讯录!\t\t\n");
	        break;
        }
        else
        {
    	    printf("输入错误  已错误%d次\n",i);
    	    if(i==3)
            {
            	printf("错误3次 系统退出");
    	        exit(0);
	        }
	    }
    }
	while(1)
	{
        printf("\t\t\n请输入选择的功能:\n");
		printf("\t\t创建请输入1(覆盖原有文件创建新的通讯录请谨慎选择)\n");
		printf("\t\t导入请输入2(把原有文件数据导入到程序中并对其进行操作)\n");
		printf("\t\t保存请输入3(要想保存对文件的操作 请操作完成后进行保存)\n");
		printf("\t\t查找请输入4\n");
		printf("\t\t增加请输入5\n");
		printf("\t\t删除请输入6\n");
		printf("\t\t修改请输入7\n");
		printf("\t\t排序并输出请输入8\n");
		printf("\t\t退出请输入9\n"); 
		printf("**********************\n");
		scanf("%s",ch);
		if(strcmp(ch,"1")==0)
				{
					p=chuangjian();
					printf("**********************\n");
				}
		else if(strcmp(ch,"4")==0) 
				{
					chazhao(p);
					printf("**********************\n");
				}
		else if(strcmp(ch,"5")==0)
				{
					zengjia(p);
					printf("**********************\n");
				}
		else if(strcmp(ch,"6")==0)
				{
					p=shanchu(p);
					printf("**********************\n");
				}
		else if(strcmp(ch,"7")==0)
				{
					xiugai(p);
					printf("**********************\n");
				}
		else if(strcmp(ch,"8")==0)
				{
					paixu(p);
					printf("**********************\n");
				}
		else if(strcmp(ch,"2")==0)
				{
					p=daoru();
				}
		else if(strcmp(ch,"3")==0)
		        {
		        	baocun(p);
				}
		else if(strcmp(ch,"9")==0)
				{
					exit(0);
				}
		else
				{
					printf("输入错误,请重新输入");
				}
    }
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值