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

📄 txok.cpp

📁 自制通讯录的c语言小程序
💻 CPP
字号:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
#include "conio.h"
int count=0;
 typedef struct
{
	char name[30];
	char num[30];
	char adr[30];
}person;
 person address[100];
int menu()//菜单;
{
    int key;
	system("cls");
	printf("\t\t****************通讯录*****************\n\n");	
	printf("\t\t1.建立新的通讯录.\n");
	printf("\t\t2.显示所有的联系人.\n");
	printf("\t\t3.添加记录.\n");
	printf("\t\t4.根据姓名查找.\n");
	printf("\t\t5.根据地址查找.\n");
	printf("\t\t6.删除记录.\n");
	printf("\t\t7.按姓名排序.\n");
	printf("\t\t8.从文件中读出数据.\n");
	printf("\t\t9.将数据存入文件.\n");
	printf("\t\t0.退出.\n");
	printf("\t\t*****************************************\n\n");
	printf("\t\t");
    scanf("%d",&key);
	return (key);
}
int creat(person address[],int count)//建立;
{
	char n='y';
	int i=0;
    for(i=0;i<=100;i++)
	{
        
		if(n=='y')
		{
			printf("\t\t请输入姓名:");
			scanf("%s",&address[i].name);
			printf("\t\t请输入电话号码:");
			scanf("%s",&address[i].num);
			printf("\t\t请输入地址:");
			scanf("%s",&address[i].adr);
			count++;
		}
	   else  if(n!='y')
	   break;
        printf("\t\t继续输入?(y/n)\n");
	    n=getch();
	}
	printf("建立成功!");
	return (count);
}
void list(person address[],int count)//显示所有记录;
{
	printf("\t------------------------------------------------------------\n"); /*格式头*/ 
	printf("\tname               telephone number               address\n"); 
	printf("\t------------------------------------------------------------\n"); 
	int i=0;
    for (i=0;i<count;i++)
	  printf("\t%-25s%-25s%-25s\n",address[i].name,address[i].num,address[i].adr);
	system("pause");
}
int add(person address[],int count)//添加;
{   
	int a='y',i=0;
	   for(i=count;i<100;i++)
	   {
		   if(a=='y')
		   {
				printf("\t\t请输入姓名:");
				scanf("%s",&address[i].name);
				printf("\t\t请输入电话号码:");
				scanf("%s",&address[i].num);
				printf("\t\t请输入地址:");
				scanf("%s",&address[i].adr);
				count++;
			}
		   else break;
        printf("\t\t继续添加?(y/n)\n");
		a=getch();
	   }
	   printf("\t\t添加成功!\t");
	   system("pause");
	   return (count);
}
void seek_name(person address[],int count)//查找;
{
	int i=0,number=0;
	char ch[30];
   printf("\t\t请输入您要查找的名字:");
   scanf("%s",ch);
   for(i=0;i<count;i++)
   {
          if (strcmp(ch,address[i].name)==0&&number==0)
		  {
			printf("\t------------------------------------------------------------\n"); /*格式头*/ 
			printf("\tname               telephone number               address\n"); 
			printf("\t------------------------------------------------------------\n"); 
			printf("\t%-25s%-25s%-25s\n",address[i].name,address[i].num,address[i].adr);
			number++;
		  }
		  else if(strcmp(ch,address[i].name)==0&&number>0)
		  {
		    printf("\t%-25s%-25s%-25s\n",address[i].name,address[i].num,address[i].adr);
	        number++;  
		  }
          else continue;
   }
   if(number==0)
   {
	   printf("\t\t\t");
	   printf("没有此人!\n");
   }
       printf("\t\t");
	system("pause");
}
void seek_add(person address[],int count)//查找;
{
	int i=0,number=0;
	char ch[30];
   printf("\t\t请输入您要查找的地址:");
   scanf("%s",ch);
   for(i=0;i<count;i++)
   {
          if (strcmp(ch,address[i].adr)==0&&number==0)
		  {
			printf("\t------------------------------------------------------------\n"); /*格式头*/ 
			printf("\tname               telephone number               address\n"); 
			printf("\t------------------------------------------------------------\n"); 
            printf("\t%-30s%-30s%-30s\n",address[i].name,address[i].num,address[i].adr);
			number++;
		  }
		  else if(strcmp(ch,address[i].adr)==0&&number>0)
		  {
		    printf("\t%-30s%-30s%-30s\n",address[i].name,address[i].num,address[i].adr);
	        number++;
		  }
          else continue;
   }
   if(number==0)
   {
	   printf("\t\t\t");
       printf("没有此地址!\n");
   }
	 printf("\t\t");
	system("pause");
}
int del(person address[],int count)//删除记录;
{
	int i=0,j;
	char namec[30];
	printf("\t\t请输入您要删除的姓名:");
	scanf("%s",namec);
    while(strcmp(address[i].name,namec)!=0&&i<count)
		i++;
	for (j=i+1;j<count;j++)
	{
	  strcpy(address[j-1].name,address[j].name);
	  strcpy(address[j-1].num,address[j].num);
	  strcpy(address[j-1].adr,address[j].adr);
	}
	printf("\t\t\t");
	printf("删除成功!\n");
	printf("\t\t\t");
	count--;
	system("pause");
	return(count);
}
void sort_name(person address[],int count)//按姓名排序;
{
	int i,j;
	char t[30];
	for(i=0;i<count;i++)
	{
		for(j=0;j<count;j++)
		{
			   if(strcmp(address[i].name,address[j].name)<0)
			   {
				   strcpy(t,address[i].name);
				   strcpy(address[i].name,address[j].name);
				   strcpy(address[j].name,t);
				   strcpy(t,address[i].num);
				   strcpy(address[i].num,address[j].num);
				   strcpy(address[j].num,t);
				   strcpy(t,address[i].adr);
				   strcpy(address[i].adr,address[j].adr);
				   strcpy(address[j].adr,t);
			   }
			   else continue;
        }
	}
	printf("\t\t\t");
	printf("\t\t排续成功!\n");
	system("pause");
}
int AddfromText(person address[],int count) //从文件中读入;
{
	int i=0;
	FILE *fp; 
	char filename[20]; 
	printf("\t\t\t请输入文件名:"); 
	scanf("\t\t\t%s",filename);
	fp=fopen(filename,"rb");
	if(fp==NULL)  
	{ 
		printf("\t\t\tcann't open the file\n");  
		printf("\t\t\t"); 
		system("pause"); 
	}
    fscanf(fp,"%d",&count);
	while(i<count) 
	{ 
	fscanf(fp,"%s%s%s",address[i].name,address[i].num,address[i].adr); 
	i++; 
	} 
	fclose(fp); 
	printf("\t\t\t读入成功!\n"); 
	printf("\t\t\t"); 
	system("pause"); 
	return(count);
}
void WritetoText(person address[],int count) //将所有记录写入文件;
{
	int i=0;
    FILE *fp; 
    char filename[20];  
    printf("\t\t\t请输入文件名:"); 
    scanf("\t\t\t%s",filename); 
	fp=fopen(filename,"w");
	if(fp==NULL) 
	{ 
		printf("\t\t\tcann't open the file\n"); 
		system("pause"); 
		return; 
	}
	fprintf(fp,"%d\n",count); 
	while(i<count) 
	{ 
		fprintf(fp,"%-30s%-30s%-30s\n",address[i].name,address[i].num,address[i].adr); 
		i++; 
	} 
	fclose(fp); 
	printf("\t\t\t写入成功!\n");
	printf("\t\t\t");
	system("pause"); 
}
 void main()
{
	 int n;
	for(;;)
	{
		 n=menu();
		 switch(n)
		 {
				case 1:count=creat(address,count);break;
				case 2:list(address,count);break; 
				case 3:count=add(address,count);break; 
				case 4:seek_name(address,count);break;
				case 5:seek_add(address,count);break;
		        case 6:count=del(address,count);break;
				case 7:sort_name(address,count);break;
				case 8:count=AddfromText(address,count);break;
				case 9:WritetoText(address,count);break;
				case 0:printf("\t\t\tHave a good luck! Bye bye!\n");
					   printf("\t\t\t");
					   exit(0);
		 }
	}
   
}

⌨️ 快捷键说明

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