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

📄 addresslist.cpp

📁 这是一个通讯录工具
💻 CPP
字号:
#define N 5
#include<stdio.h>
#include<string.h>
#include<conio.h>
void  myprint();
void mycreat(char numtel[N][10], char nametel[N][10], char tel[N][10]);
//void  mycreat()  {}
void mydisplay(char numtel[N][10], char nametel[N][10], char tel[N][10]);
//void  mydisplay()  {}
void  mysearch(char num[N][10],char name[N][10],char tel[N][10]);
//void  mysearch()  {}
void mymodify(char num[N][10],char name[N][10],char tel[N][10]);
//void  mymodify()  {}
void myadd(char num[N][10],char name[N][10],char tel[N][10]);
//void  myadd()  {}
void mydelete(char num[N][10],char name[N][10],char tel[N][10]);
//void  mydelete()  {}
void mysort(char num[N][10],char name[N][10],char tel[N][10]);
//void  mysort()    {}

void  sch_num(char num[N][10],char name[N][10],char tel[N][10]);
void  sch_name(char num[N][10],char name[N][10],char tel[N][10]);


void main()
{
	char  choose,yes_no;
	char num[N][10],name[N][10],tel[N][10];
      do
	  {     myprint();   //显示菜单
 	        printf("                   ");
			choose=getche();
			switch(choose)
			{
				case'1':	mycreat(num,name,tel);
					break;
			    case'2':mydisplay(num,name,tel);
					break;
				case'3':mysearch(num,name,tel);
					break;
				case'4':mymodify(num,name,tel);
					break;
				case'5':myadd(num,name,tel);
					break;
				case'6':mydelete(num,name,tel);
					break;
				case'7':mysort(num,name,tel);
					break;
				case'0':break;
				default:printf("\n             %c为非法选项!\n",choose);
			}
			if(choose=='0')
				break;
			printf("\n                     要继续选择吗(Y/N)?\n");
			do
			{   yes_no=getch();
			}
			while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
	  }
	  while(yes_no!='Y'||yes_no!='y');
}

void myprint()   //显示菜单函数
{    //clrscr();
     printf("\n\n\n\n\n\n\n");
	 printf("                                             \n");
	 printf("               请输入选项编号(0--7)          \n");
     printf("               1---创建通讯录                \n");
	 printf("               2---显示通讯录                \n");
	 printf("               3---查询通讯录                \n");
	 printf("               3---查询通讯录                \n");
	 printf("               5---添加通讯记录              \n");
     printf("               6---删除通讯记录              \n");
	 printf("               7---排通讯记录                \n");
	 printf("               0---退出                      \n");
	 printf("                                             \n");
}

/*
   创建通讯录
*/
void mycreat(char num[N][10], char name[N][10], char tel[N][10])
{    int i;
     //clrscr();
	 for(i=0;i<N;i++)
	 { 
		 printf("\n");
	     printf("请输入第%d个记录:\n",i+1);
		 printf("学号:");
		 do
		 {
			 gets(num[i]);
		 } while(strcmp(num[i],"")==0);  //学号不能为空
		 printf("姓名:");
		 gets(name[i]);
		 printf("电话号码:");
		 gets(tel[i]);
	 }
	 return;

}

void mydisplay(char num[N][10], char name[N][10], char tel[N][10])
{
	int i;
    //clrscr();
	  printf("         学号           姓名              电话号码                        \n");
	  for(i=0;i<N;i++)
		  printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
}


void  mysearch(char num[N][10],char name[N][10],char tel[N][10])
{      char c;
       mydisplay(num,name,tel);
	   printf("按学号查询(h),还是按姓名查询(m)?");
	   c=getche();
	   if(c=='h'||c=='H')
		   sch_num(num,name,tel);
	   else if(c=='m'||c=='M')
		   sch_name(num,name,tel);
	    else  printf("\n非法字符!\n");
}

/* 按学号查询 */
void   sch_num(char num[N][10],char name[N][10],char tel[N][10])
{
	int i,flag=0;
	char nm[10];
     printf("\n请输入要查询记录的学号:");
	  gets(nm);
	  for(i=0;i<N;i++)
		  if(strcmp(nm,num[i])==0)
		  {    printf("                学号                 姓名            电话号码\n");
		       printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
		       flag=1;
		  }
	  if(flag==0)
		  printf("无此人!\n");
}

void sch_name(char num[N][10],char name[N][10],char tel[N][10])
{   int  i,flag=0;
    char nam[10];
	printf("\n请输入要查询记录的姓名:");
	gets(nam);
	for(i=0;i<N;i++)
		if(strcmp(nam,name[i])==0)
		{    printf("                学号                 姓名            电话号码\n");
		     printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
		     flag=1;
		}
		if(flag==0)
			printf("无此人!\n");
}

//修改函数
void mymodify(char num[N][10],char name[N][10],char tel[N][10])
{
	int i;
	char nam[10];
  // clrscr();
   printf("       学号       姓名          电话\n");
   for(i=0;i<N;i++)
	     printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
   printf("请输入要修改记录的姓名:");
   gets(nam);
   for(i=0;i<N;i++)
	   if(strcmp(nam,name[i])==0)  
		   break;
	if(i==N)
		printf("无此人!\n");
	else
	{  
		printf("请输入正确的学号:");
	   do 
	      {  
			  gets(num[i]);
		  }
	   while(strcmp(num[i],"")==0);
	 printf("请输入正确的姓名:");
	 gets(name[i]);
	 printf("请输入正确的电话号码:");
	 gets(tel[i]);
	 printf("          学号          姓名        电话\n");
     for(i=0;i<N;i++)
		printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
	}
}

void myadd(char num[N][10],char name[N][10],char tel[N][10])
{   
	int  i=0,n; 
    char  c;
	char  tempnum[10],tempname[10],temptel[10];
	//clrscr();
	printf("添加前的记录:\n");
	printf("           学号             姓名           电话号码\n");
	while(strcmp(num[i],"")!=0)
	{ printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
	  i++;
	}
	n=i;
	do
	   {
		   printf("请输入新记录的学号:\n");
	      do 
		  {
			  gets(tempnum);
		  } while(strcmp(tempnum,"")==0);   //学号不能为空

		  printf("请输入新记录的姓名:\n");   gets(tempname);
		  printf("请输入新记录的电话号码:\n");  gets(temptel);
		  for(i=0;i<n;i++)
			  if(strcmp(tempnum,num[i])==0 || strcmp(temptel,tel[i])==0)
			  {  printf("学号或电话号码重,要重新输入吗(Y/N)?");
			     c=getche();
				 putchar('\n');
				 break;
			  }

		 if(i==n)
		 {  strcpy(num[i],tempnum);
		     strcpy(name[i],tempname);
		     strcpy(tel[i],temptel);
		     printf("添加后的记录:\n");
			 printf("               学号          姓名              电话号码\n");
			 for(i=0;i<n+1;i++)
				 printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
			 break;
		 }
	   } while(c=='y'||c=='Y');
}

void mydelete(char num[N][10],char name[N][10],char tel[N][10])
{   int i,x;
    char c,nm[10],nam[10];
    // clrscr();
	printf("删除前的记录:\n");
	printf("           学号             姓名              电话号码\n");
	for(i=0;i<N;i++)
		printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
	printf("按学号删除(h),还是按姓名删除(m)?");
	c=getche();
	if(c=='h'||c=='H')
	{      printf("\n请输入要删除记录的学号:\n");
			gets(nm);
	       for(x=0;x<N;x++)
		       if(strcmp(nm,name[x])==0)
			       break;
		   if(x<N)     //说明提前结束循环,找到人
		   {   
			   for(i=x;i<N-1;i++)
		        {  strcpy(num[i],num[i+1]);
                   strcpy(name[i],name[i+1]);
		           strcpy(tel[i],tel[i+1]);
		        }
	    	   printf("删除后的记录:\n");
		       printf("           学号             姓名              电话号码\n");
		       for(i=0;i<N-1;i++)
		    	   printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
		   }  
	   	 else
			 printf("无此人\n");
	}
    else 
		if(c=='m'||c=='M')
		{    printf("\n请输入要删除记录的姓名:\n");
		     gets(nam);
	         for(x=0;x<N;x++)
				 if(strcmp(nam,name[x])==0)
					 break;
				 if(x<N)
				 {  for(i=x;i<N-1;i++)
				      { strcpy(num[i],num[i+1]);
	                    strcpy(name[i],name[i+1]); 
		                strcpy(tel[i],tel[i+1]);
				       }
	        printf("删除后的记录:\n");
	        printf("           学号             姓名              电话号码\n");
	        for(i=0;i<N-1;i++)
		         printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
		}
	   else
	    	printf("无此人\n");
	}
    
  else
	  printf("\n非法字符\n");
}

//排序函数
void mysort(char num[N][10],char name[N][10],char tel[N][10])
{   int  j,i,k;
    char c1,c2,temp[10];
	//clrscr();
	printf("排序前的记录:\n");
	printf("          学号           姓名            电话号码\n");
	for(i=0;i<N;i++)
		printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
	printf("按学号排序(h),还是按姓名排序(m)?");
	c1=getche();
	if(c1=='h'||c1=='H')
	{    printf("\n按升序排序(s),还是按降序排序(j)?");
	     c2=getche();
	     if(c2=='s'||c2=='S')
		 {     
			 for(i=0;i<N-1;i++)
			 {
				 k=i;
		         for(j=i;j<N;j++)
					 if(strcmp(name[k],name[j])<0)
						 k=j;
                 strcpy(temp,num[k]);     
				 strcpy(num[k],num[i]);     
				 strcpy(num[i],temp);     
				 strcpy(temp,name[k]);     
				 strcpy(name[k],name[i]);     
				 strcpy(name[i],temp);      
				 strcpy(temp,tel[k]);     
			     strcpy(tel[k],tel[i]);     
				 strcpy(tel[i],temp); 
			 }
		 printf("排序后的记录:\n");
		 printf("           学号           姓名            电话号码\n");
		 for(i=0;i<N;i++)
			 printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
		 }
		 else if(c2=='j'||c2=='J')
			  {
			     for(i=0;i<N-1;i++)
				 {
					 k=i;
					 for(j=0;j<N;j++)
						if(strcmp(name[k],name[j])<0)
							k=j;
					 strcpy(temp,num[k]);     
					strcpy(num[k],num[i]);     
					strcpy(num[i],temp);     
					strcpy(temp,name[k]);     
					strcpy(name[k],name[i]);     
					strcpy(name[i],temp);      
					strcpy(temp,tel[k]);     
					strcpy(tel[k],tel[i]);     
					strcpy(tel[i],temp); 
				}
		 printf("排序后的记录:\n");
		 printf("           学号           姓名            电话号码\n");
		 for(i=0;i<N;i++)
			 printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
		 }
		 else printf("\n非法字符\n");
	}
	else  if(c1=='m'||c1=='M')  //按姓名排序
		{    printf("\n按升序排序(s),还是按降序排序(j)?");
			c2=getche();

	     if(c2=='s'||c2=='S')
		 {   
			 for(i=0;i<N-1;i++)
			 {
				 k=i;
				for(j=0;j<N;j++)
					 if(strcmp(name[k],name[j])<0)
						 k=j;
				 strcpy(temp,num[k]);     
				 strcpy(num[k],num[i]);     
				 strcpy(num[i],temp);     
				 strcpy(temp,name[k]);     
				 strcpy(name[k],name[i]);     
				 strcpy(name[i],temp);      
				 strcpy(temp,tel[k]);     
			     strcpy(tel[k],tel[i]);     
				 strcpy(tel[i],temp); 
			 }
		   printf("排序后的记录:\n");
		   printf("           学号           姓名            电话号码\n");
		   for(i=0;i<N;i++)
			   printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
		 }
		 else  if (c2=='j'||c2=='J')
				{
					for(i=0;i<N-1;i++)
					{
						k=i;
						for(j=i;j<N;j++)
							if(strcmp(name[k],name[j])<0)
								k=j;
					strcpy(temp,num[k]);     
					strcpy(num[k],num[i]);     
					strcpy(num[i],temp);     
					strcpy(temp,name[k]);     
					strcpy(name[k],name[i]);     
					strcpy(name[i],temp);      
					strcpy(temp,tel[k]);     
					strcpy(tel[k],tel[i]);     
					strcpy(tel[i],temp); 
					}
					printf("排序后的记录:\n");
					printf("           学号           姓名            电话号码\n");
					for(i=0;i<N;i++)
						printf("%23s%15s%15s\n",num[i],name[i],tel[i]);
		 }
		 else printf("\n非法字符!\n");
	}
	else  printf("\n非法字符!\n");
}	  

⌨️ 快捷键说明

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