大一课设---C语言--通讯录管理系统

#include 
#include 
#include  
struct Sign{
		char name[8];
		char sex[4];
		char birthday[12];
		char phone[11];
		char postcode[7];
		char addr[30];
		struct Sign *next;
	}pe;  
	char PhoneCop[4] ;

//结构体 
struct Sign *p1,*p2,*head;
FILE *fp;
void ShowMenu(){
	system("color 1F");
	printf("#################          通讯录管理系统  v1.0   ###################\n");
	printf("#####################################################################\n");
	printf("#                                                                   #\n");
	printf("#           1-----------------信息录入-------------------           #\n");
	printf("#                                                                   #\n");
	printf("#           2-----------------信息查询-------------------           #\n");
	printf("#                                                                   #\n");
	printf("#           3-----------------信息查看-------------------           #\n");
	printf("#                                                                   #\n");
	printf("#           4-----------------信息修改-------------------           #\n");
	printf("#                                                                   #\n");
	printf("#           5-----------------信息统计-------------------           #\n");
	printf("#                                                                   #\n");
	printf("#           6-----------------退出系统-------------------           #\n");
	printf("#                                                                   #\n");
	printf("#####################################################################\n");
    printf("#      POWER BY *************    兰州理工大学      201407           #\n");
    printf("#####################################################################\n");
	
};
void HeadShow()
{
	printf("#################          通讯录管理系统  v1.0   ###################\n");
	printf("---------------------------------------------------------------------\n");

} 
void FileLoading()
{
		if((fp=fopen("txl.dat","rb"))==NULL)
	{
		printf("文件操作错误,请检查是否有权限操作文件!");
		Sleep(3000);
		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);
}
void add()
{	
	char ch; 
	if((fp==fopen("txl.dat","ab+"))!=1)
	{
		printf("文件打开失败");
		exit(1);
	}
	while(1)
	{	system("cls");
		printf("请输入__\n");
		p2=(struct Sign*)malloc(sizeof(struct Sign));
		p2->next=NULL; 
		printf("姓名:");scanf("%s",pe.name);
		printf("性别:");scanf("%s",pe.sex);
		printf("生日:");scanf("%s",pe.birthday);
		printf("电话号码:");scanf("%s",pe.phone);
		printf("邮编:");scanf("%s",pe.postcode);
		printf("地址:");scanf("%s",pe.addr);
		strcpy(p1->name,pe.name);
		strcpy(p1->sex,pe.sex);
		strcpy(p1->birthday,pe.birthday);
		strcpy(p1->phone,pe.phone);
		strcpy(p1->postcode,pe.postcode);
		strcpy(p1->addr,pe.addr);
		p1->next=p2;
		p1=p2;        
		if(fwrite(&pe,sizeof(struct Sign),1,fp)!=1)
			printf("写入错误");
		printf("输入E或e来结束输入?");
		getchar();
		ch=getchar();
		if(ch=='e'||ch=='E')
			break;

	}
	fclose(fp);
}
void SaveChange()
{	
	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);
}
void AllShow()
{
	HeadShow();
	printf("%10.8s %6.6s %10.10s %11.4s %9.7s %16.6s \n","姓名","性别","生日","电话","邮编","地址");	
	printf("---------------------------------------------------------------------\n");
	p1=head;
	while(p1->next!=NULL)
	{
		printf("%10.8s %6.6s %10.12s %11.11s %9.7s %16.16s \n",p1->name,p1->sex,p1->birthday,p1->phone,p1->postcode,p1->addr);
		p1=p1->next;
		
	} 
	
}

void AllNum()
{	int i=0; 
	HeadShow();
	printf("          共有记录条数为:    \n");	
	printf("---------------------------------------------------------------------\n");
	p1=head;
		while(p1->next!=NULL)
	{
		i++;
		p1=p1->next;
		
	} 
	printf("          %d                  \n",i);
	printf("---------------------------------------------------------------------\n");
	
	printf("          共有联通用户为:    \n");	
	printf("---------------------------------------------------------------------\n");
	p1=head;
	i=0;
		while(p1->next!=NULL)
	{
		strncpy(PhoneCop,p1->phone,3);
		if(strcmp(PhoneCop,"130")==0||strcmp(PhoneCop,"131")==0||strcmp(PhoneCop,"132")==0||strcmp(PhoneCop,"155")==0||strcmp(PhoneCop,"156")==0||strcmp(PhoneCop,"185")==0||strcmp(PhoneCop,"186")==0)
			i++;
		p1=p1->next;
		
	} 
	printf("          %d                  \n",i);
	printf("---------------------------------------------------------------------\n");
	printf("          共有移动用户为:    \n");	
	printf("---------------------------------------------------------------------\n");
	p1=head;
	i=0;
		while(p1->next!=NULL)
	{
		strncpy(PhoneCop,p1->phone,3);
		if(strcmp(PhoneCop,"134")==0||strcmp(PhoneCop,"135")==0||strcmp(PhoneCop,"136")==0||strcmp(PhoneCop,"137")==0||strcmp(PhoneCop,"138")==0||strcmp(PhoneCop,"139")==0||strcmp(PhoneCop,"150")==0||strcmp(PhoneCop,"151")==0||strcmp(PhoneCop,"152")==0||strcmp(PhoneCop,"157")==0||strcmp(PhoneCop,"158")==0||strcmp(PhoneCop,"159")==0||strcmp(PhoneCop,"187")==0||strcmp(PhoneCop,"188")==0)
			i++;
		p1=p1->next;
		
	} 
	printf("          %d                  \n",i);
	printf("---------------------------------------------------------------------\n");
		printf("          共有电信用户为:    \n");	
	printf("---------------------------------------------------------------------\n");
	p1=head;
	i=0;
		while(p1->next!=NULL)
	{
		strncpy(PhoneCop,p1->phone,3);
		if(strcmp(PhoneCop,"180")==0||strcmp(PhoneCop,"189")==0||strcmp(PhoneCop,"133")==0||strcmp(PhoneCop,"153")==0)
			i++;
		p1=p1->next;
		
	} 
	printf("          %d                  \n",i);
	printf("---------------------------------------------------------------------\n");
}
void CheckFace()
{	int Check_key; 
	printf("###########          通讯录管理系统  v1.0   ################\n");
	printf("############################################################\n");
	printf("#                                                          #\n");
	printf("#                 1------按姓名查询                        #\n");
	printf("#                                                          #\n");
	printf("#                 2------按电话号码查询                    #\n");
	printf("#                                                          #\n");
	printf("#                 3------综合查询                          #\n");
	printf("#                                                          #\n");
	printf("#                 4------退出查询模块                      #\n");
	printf("#                                                          #\n");
	printf("#                                                          #\n");
	printf("#                                                          #\n");
	printf("############################################################\n");
    printf("#   POWER BY *************    兰州理工大学      201407     #\n");
    printf("############################################################\n");
    
}
void Selelctname()
{	system("cls"); 
	HeadShow();
	printf("%10.8s %6.6s %10.10s %11.4s %9.7s %16.6s \n","姓名","性别","生日","电话","邮编","地址");	
	printf("---------------------------------------------------------------------\n");
	p1=head;
	char FindName[8];
	int i=0; 
	printf("请输入要查询的姓名:");
	scanf("%s",&FindName);
	while(p1->next!=NULL)
	{
		if(strcmp(p1->name,FindName)==0) 
		    {printf("%10.8s %6.6s %10.10s %11.14s %9.7s %16.16s \n",p1->name,p1->sex,p1->birthday,p1->phone,p1->postcode,p1->addr);
		    i++;
			}
		p1=p1->next;
		
	} 
	printf("共  %d  条\n",i);
	system("pause"); 
} 

void Selelctphone()
{	system("cls"); 
	HeadShow();
	printf("%10.8s %6.6s %10.10s %11.4s %9.7s %16.6s \n","姓名","性别","生日","电话","邮编","地址");	
	printf("---------------------------------------------------------------------\n");
	p1=head;
	char phone[11];
	int i=0; 
	printf("请输入要查询的电话号码:");
	scanf("%s",&phone);
	while(p1->next!=NULL)
	{
		if(strcmp(p1->phone,phone)==0) 
		    {printf("%10.8s %6.6s %10.10s %11.4s %9.7s %16.6s \n",p1->name,p1->sex,p1->birthday,p1->phone,p1->postcode,p1->addr);
		    i++;
			}
		p1=p1->next;
		
	} 
	printf("共  %d  条\n",i);
	system("pause"); 
} 
void Selelctall()
{	system("cls"); 
	HeadShow();
	printf("%10.8s %6.6s %10.10s %11.4s %9.7s %16.6s \n","姓名","性别","生日","电话","邮编","地址");	
	printf("---------------------------------------------------------------------\n");
	p1=head;
	char all[30];
	int i=0; 
	printf("请输入任意一项要查询的内容:");
	scanf("%s",&all);
	while(p1->next!=NULL)
	{
		if(strcmp(p1->name,all)==0||strcmp(p1->sex,all)==0||strcmp(p1->birthday,all)==0||strcmp(p1->phone,all)==0||strcmp(p1->postcode,all)==0||strcmp(p1->addr,all)==0) 
		    {printf("%10.8s %6.6s %10.10s %11.11s %9.7s %16.16s \n",p1->name,p1->sex,p1->birthday,p1->phone,p1->postcode,p1->addr);
		    i++;
			}
		p1=p1->next;
		
	} 
	printf("共  %d  条\n",i);
	system("pause"); 
} 
void Change()
{	char ChangeName[8]; 
	int changekey;
	system("cls");
	HeadShow();
	int i,y=0;				
    p1=p2=head;		
	printf("请输入你要修改的条目的姓名:");
	scanf("%s",&ChangeName);
		getchar();	
	while(p1!=NULL)
	{	
	if(strcmp(p1->name,ChangeName)==0)	
	   {	printf("%10.8s %6.6s %10.10s %11.11s %9.7s %16.16s \n",p1->name,p1->sex,p1->birthday,p1->phone,p1->postcode,p1->addr);
			printf("您要修改的是这条记录吗?1---是|2---否\n");
			scanf("%d",&i);
			if(i==1)
			{ y=1;
			printf("你要修改的通讯录为:\n");
	   		printf("%10.8s %6.6s %10.10s %11.11s %9.7s %16.16s \n",p1->name,p1->sex,p1->birthday,p1->phone,p1->postcode,p1->addr);
        	printf("请选择您的操作     1---删除|2---修改\n");
        	scanf("%d",&changekey);	
        	if(changekey==1) 
       		 {
          		if(p1==head)		 
             	 {head=p1->next;	 
          		  free(p1);
			 	 }
				  else
            	 {
             	p2->next=p1->next;
                free(p1);	
		  		SaveChange();	
             	
             }
				
		} 
		else if(changekey==2)
		{
			printf("姓名:");scanf("%s",p1->name);
			printf("性别:");scanf("%s",p1->sex);
			printf("生日:");scanf("%s",p1->birthday);
			printf("电话:");scanf("%s",p1->phone);
			printf("邮编:");scanf("%s",p1->postcode);
			printf("地址:");scanf("%s",p1->addr);	
			SaveChange();
			printf("\n  OK!    \n");
		} 	
			}			
		
	   }
	else if(strcmp(p1->name,ChangeName)&&(p1->next)==NULL)
	   {
			i=0;			 
		
	   }
   		p2=p1;		
	    p1=p1->next;  
	}

     if(y==0)	
	{
        printf("对不起,没有找到要修改的通讯名单,请检查你要修改的姓名是否正确\n");
    }
    
	
	system("pause");
}
void ExirShow()
{
	system("color 0E");
 	printf("###########          通讯录管理系统  v1.0   ################\n");
	printf("############################################################\n");
	printf("#                                                          #\n");
	printf("#                                                          #\n");
	printf("#                                                          #\n");
	printf("#                                                          #\n");
	printf("#                                                          #\n");
	printf("#                     谢谢使用!                           #\n");
	printf("#                                                          #\n");
	printf("#                                                          #\n");
	printf("#                                                          #\n");
	printf("#                                                          #\n");
	printf("#                                                          #\n");
	printf("############################################################\n");
    printf("#   POWER BY *************    兰州理工大学      201407     #\n");
    printf("############################################################\n");
	
}
void ErrorShow()
{   int errortime=5;
	system("color 0E");
	for(errortime=5;errortime>0;errortime--)
		{printf("\r输入错误!请仔细检查!将在%d秒后返回",errortime);
		 Sleep(1000);
		}
	
}
int main()
{	int key;
	int Ex_key; 
	int Check_key;
	char a[10];
	if((fp=fopen("txl.dat","ab"))==NULL)
	{
		printf("文件操作错误,请检查是否有权限操作文件!");
		Sleep(3000);
		exit(1);
	}
	fclose(fp);	
	FileLoading();
	while(1){
	ShowMenu();
	gets(a);
	key=atoi(a);
	if(key==1)
	   {system("cls");
		add();
		}
	else if(key==2)
		{	system("cls");
			
			system("color 0E");
		while(1)
     		 {
			system("color 0E");  
			CheckFace();
     		printf("请输入你的选择:\n");
	  		gets(a);
	  		Check_key=atoi(a);
    		if(Check_key==1)
    			Selelctname()
    		;
    		else if(Check_key==2)
    			Selelctphone()
    		;
    		else if(Check_key==3)
    			Selelctall()
    		;
    		else if(Check_key==4)
    	
    		break;
    		else
    		ErrorShow();
			system("cls");
			system("color 1F");	
			getchar();
    		
    	} 	
		
		
		}
 	
 	else if(key==3)      //2013级  耿。。
 	{	system("color 0E"); 
	 	system("cls"); 
	 	AllShow();
 		system("pause");
 	}
	else if(key==4)
		{
			system("color 0A"); 
			Change();
		
		
		} 
 	else if(key==5)
	 	{
 		system("color 5F"); 
	 	system("cls"); 
 		AllNum();
 		system("pause");
		 }
 	else if(key==6) 
	 	{
 		system("cls");
	 	ExirShow();	
	 	Sleep(1000);
		exit(0);
		}
 		
	else 
	
		ErrorShow();
		system("cls");
		system("color 1F");	
		getchar();
	}
 	

}


大一时候的课设,比较简单就是用到了链表和文件操作,,其中统计联通和移动人数的哪里其实只用一个循环就可以,但是懒得改了。。。


你可能感兴趣的:(大学点滴)