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

📄 样例解答.txt

📁 C语言课程设计:案例精选与编程指导(东南大学出版社
💻 TXT
字号:

#include<ctype.h>
#include<string.h>
#include<stdio.h>
#define Web struct web
Web   /*地址簿格式*/
{
   char szWww[5];
   char szNa[9];
   char szAdm[5];
   char szCountry[4];
};
Web *strpPtr[25];
int nNum; /* 增加全局变量,指示目前数据库中的数据个数*/
void Sort_f(Web *strpPtr[], int nNum)/*选择法排序*/
{
    Web *strpPoint;
    int nCounti,nCountj,nCountk;
    for(nCounti=0;nCounti<nNum-1;nCounti++)
    {
	nCountk=nCounti;
	for(nCountj=nCounti+1;nCountj<nNum;nCountj++)
	   if(strcmp(strpPtr[nCountk]->szNa,strpPtr[nCountj]->szNa)>0)
	       nCountk=nCountj;
	if(nCountk!=nCounti)
	{
	   strpPoint=strpPtr[nCounti];
	   strpPtr[nCounti]=strpPtr[nCountk];
	   strpPtr[nCountk]=strpPoint;
	}
    }
}
Delete_f(Web *strpPtr[], int nCount, int *npNum)/*删除一个字符串*/
{
   int nCounti;
   for(nCounti=nCount;nCounti<*npNum-1;nCounti++)
      strpPtr[nCounti]=strpPtr[nCounti+1];
   --*npNum;
}

void main()
{
  char szStr[21];
  char szStr1[21];
  FILE *fp; /*数据文件指针*/
  char szFileName[20]; /*存放数据文件名*/
  int nChoice;
  char szCon[5]="www.";
  char szMainWww[5];
  char szMainNa[9];
  char szMainAdm[5];
  char szMainCoun[4];
  int nCounti=0;
  int nCountj=0;
  int nCountk=0;
  int nCount=0;
  int nDot=0;
  printf("Please Input the Data File\n");/*新增功能,打开数据文件,将数据文件中的内容放入指针数组中,若没有该数据文件,则建立该文件*/
  gets(szFileName);/*输入文件名*/
  if((fp=fopen(szFileName, "rb"))==NULL)
  {
      printf("Not Fount this File, Create it! \n");
      for(nCount=0;nCount<25;nCount++)/*指针数组清零*/
	 strpPtr[nCount]=NULL;
  }
  else
  {
    while(!feof(fp))/*读取文件中的内容*/
    {
       strpPtr[nNum]=(Web *)malloc(sizeof(Web));
       fread(strpPtr[nNum],sizeof(Web),1,fp);
       nNum++;
    }
      nNum--;
      fclose(fp);
  }
   do/*从这里开始,进行主体循环*/
   {
       printf("======================================================\n");
       printf("			Welcome To Domain Name Server Program!\n\n");
       printf("=======================================================\n");
       printf("Please select any nChoice from the following: \n\n");
       printf("[1] Look up a URL.\n");
       printf("[2] Insert a URL.\n");
       printf("[3] delete a URL.\n");
       printf("[4] Update a URL.\n");
       printf("[5] List All URL.\n"); /*新增功能,显示数据库中的所有域名*/
       printf("[6] Quit.\n\n");
       scanf("%d", &nChoice);
       if(nChoice!=5 && nChoice!=4&&nChoice!=6)
       {
	   printf("Enter the URL.\n");
	   getchar();
	   gets(szStr);
	   for(nCountj=0;szStr[nCountj]!='\0';nCountj++)
	   {
	       szStr[nCountj]=tolower(szStr[nCountj]);
	       if(szStr[nCountj]=='.')
	       nDot++;
	   }
	}
	if(nChoice==1)
	{
	    for(nCounti=0;nCounti<4;nCounti++)
	       szMainWww[nCounti]=szStr[nCounti];
	    szMainWww[4]='\0';
	    if( strcmp(szMainWww,szCon) != 0 )
	    {
		szMainWww[0]='\0';/*当第一个字符串形式不为www时,szMainWww内清零*/
		for(nCounti=0,nCountj=0;szStr[nCounti]!='.' && szStr[nCounti]!='\0';nCounti++,nCountj++)
		   szMainNa[nCountj]=szStr[nCounti]; /*第一个字符串(域名)进szMainNa*/
		szMainNa[nCountj]='\0';
		for(nCount=0;nCount<nNum;nCount++)
		   if(strcmp(strpPtr[nCount]->szNa,szMainNa)==0)
		   {
		       printf("The address is present in the data\n");
		       printf("%s%s%s%s\n", strpPtr[nCount]->szWww, strpPtr[nCount]->szNa, strpPtr[nCount]->szAdm, strpPtr[nCount]->szCountry);
		       break;/*找到后,退出循环*/
		   }
		if(nNum>=nCount)
		    printf("No matching address found");
	    }
	    else
	    {
		for(nCounti=4,nCountj=0;szStr[nCounti]!='.' && szStr[nCounti]!='\0';nCounti++,nCountj++)
		    szMainNa[nCountj]=szStr[nCounti];
		szMainNa[nCountj]='\0';
		for(nCount=0;nCount<nNum;nCount++)
		   if(strcmp(strpPtr[nCount]->szNa,szMainNa)==0)
		   {
			printf("The address is present in the data\n");
			printf("%s%s%s%s\n", strpPtr[nCount]->szWww, strpPtr[nCount]->szNa, strpPtr[nCount]->szAdm, strpPtr[nCount]->szCountry);
			break;/*找到后,退出循环*/
		    }
		if(nNum<=nCount)
		    printf("No matching address found");
	    }
	}
	if(nChoice==2)
	{
	     for(nCounti=0;nCounti<4;nCounti++)
		  szMainWww[nCounti]=szStr[nCounti];
	     szMainWww[4]='\0';
	     for(nCounti=4,nCountj=0;szStr[nCounti]!='.';nCounti++,nCountj++)
		  szMainNa[nCountj]=szStr[nCounti];
	     szMainNa[nCountj]='\0';
	     strpPtr[nNum]=(Web *)malloc(sizeof(Web));
	     szMainAdm[0]='.';
	     for(nCounti++,nCountj=1;szStr[nCounti]!='.' && szStr[nCounti]!='\0';nCounti++,nCountj++)
		  szMainAdm[nCountj]=szStr[nCounti];
	     szMainAdm[nCountj]='\0';
	     if(nDot==3)
	     {
		 szMainCoun[0]='.';
		 for(nCounti++,nCountj=1;szStr[nCounti]!='\0';nCounti++,nCountj++)
		    szMainCoun[nCountj]=szStr[nCounti];
		 szMainCoun[3]='\0';
	     }
	     else
		 szMainCoun[0]='\0';
	     strcpy(strpPtr[nNum]->szWww,szMainWww);
	     strcpy(strpPtr[nNum]->szNa,szMainNa);
	     strcpy(strpPtr[nNum]->szAdm,szMainAdm);
	     strcpy(strpPtr[nNum]->szCountry,szMainCoun);
	     printf("The  address is successfully registered in the data\n");
	     nNum++;
	     Sort_f(strpPtr, nNum);/* 排序 */
	}
	if(nChoice==3)
	{
	     for(nCounti=0;nCounti<4;nCounti++)
		 szMainWww[nCounti]=szStr[nCounti];
	     szMainWww[4]='\0';
	     for(nCounti=4,nCountj=0;szStr[nCounti]!='.';nCounti++,nCountj++)
		 szMainNa[nCountj]=szStr[nCounti];
	     szMainNa[nCountj]='\0';
	     szMainAdm[0]='.';
	     for(nCounti++,nCountj=1;szStr[nCounti]!='.' && szStr[nCounti]!='\0';nCounti++,nCountj++)
		 szMainAdm[nCountj]=szStr[nCounti];
	     szMainAdm[nCountj]='\0';
	     if(nDot==3)
	     {
		 szMainCoun[0]='.';
		 for(nCounti++,nCountj=1;szStr[nCounti]!='\0';nCounti++,nCountj++)
		     szMainCoun[nCountj]=szStr[nCounti];
		 szMainCoun[3]='\0';
	     }
	     else
		 szMainCoun[0]='\0';
	     for(nCounti=0;nCounti<nNum;nCounti++)/*循环查找*/
	     {
		 if(strcmp(strpPtr[nCounti]->szNa,szMainNa)==0)
		 break;
	     }
	     if(nCounti>=nNum)
		 printf("Not Found this URL\n");
	     else
	     Delete_f(strpPtr, nCounti, &nNum);/*找到后,删除*/
	}
	if(nChoice==4)
	{
	     printf("Enter the old URL.\n");
	     getchar();
	     gets(szStr);
	     for(nCountj=0;nCountj<22;nCountj++)
	     {
		 szStr[nCountj]=tolower(szStr[nCountj]);
		 if(szStr[nCountj]=='.')
		     nDot++;
	     }
	     for(nCounti=4,nCountj=0;szStr[nCounti]!='.';nCounti++,nCountj++)
		 szMainNa[nCountj]=szStr[nCounti];
	     szMainNa[nCountj]='\0';
	     for(nCounti=0;nCounti<nNum;nCounti++)
		if(strcmp(strpPtr[nCounti]->szNa,szMainNa)==0)
		    break;
	     if(nCounti>=nNum)
		printf("The address is not in the data to be updated\n");
	     else
	     {
		nCount=nCounti;
		Delete_f(strpPtr, nCount, &nNum);/*循环查找,找到后删除*/
		printf("Enter the new URL\n");
		gets(szStr1);
		for(nCountj=0;szStr1[nCountj]!='\0';nCountj++)
		{
		    szStr1[nCountj]=tolower(szStr1[nCountj]);
		    if(szStr1[nCountj]=='.')
			nDot++;
		}
		for(nCounti=0;nCounti<4;nCounti++)
		    szMainWww[nCounti]=szStr1[nCounti];
		szMainWww[4]='\0';
		for(nCounti=4,nCountj=0;szStr1[nCounti]!='.';nCounti++,nCountj++)
		    szMainNa[nCountj]=szStr1[nCounti];
		szMainNa[nCountj]='\0';
		szMainAdm[0]='.';
		for(nCounti++,nCountj=1;szStr1[nCounti]!='.' && szStr1[nCounti]!='\0';nCounti++,nCountj++)
		    szMainAdm[nCountj]=szStr1[nCounti];
		szMainAdm[nCountj]='\0';
		if(nDot==3)
		{
		    szMainCoun[0]='.';
		    for(nCounti++,nCountj=1;szStr1[nCounti]!='\0';nCounti++,nCountj++)
		       szMainCoun[nCountj]=szStr1[nCounti];
		    szMainCoun[3]='\0';
		}
		else
		    szMainCoun[0]='\0';
		strpPtr[nNum]=(Web*)malloc(sizeof(Web));
		strcpy(strpPtr[nNum]->szWww,szMainWww);
		strcpy(strpPtr[nNum]->szNa,szMainNa);
		strcpy(strpPtr[nNum]->szAdm,szMainAdm);
		strcpy(strpPtr[nNum]->szCountry,szMainCoun);
		nNum++;
		Sort_f(strpPtr, nNum);/*插入后排序*/
		printf("The address is successfully updated in the data.\n");
	     }
	}
	if(nChoice==5)
	{
	     printf("The List of URL: \n");/*循环显示*/
	     for(nCount=0;nCount<nNum;nCount++)
 		printf("%s%s%s%s\n", strpPtr[nCount]->szWww, strpPtr[nCount]->szNa, strpPtr[nCount]->szAdm, strpPtr[nCount]->szCountry);
	}
	if(nChoice==6)/*退出程序时,将数据保存在数据文件中*/
	{
	     if((fp=fopen(szFileName, "wb"))==NULL)
	     {
		 printf("File Error\n");
		 exit(0);
	     }

	     for(nCount=0;nCount<nNum;nCount++)
		 fwrite(strpPtr[nCount],sizeof(Web),1,fp);
	     fclose(fp);
	}
   }while(nChoice!=6);/*循环结束条件*/
   printf("		 Thank You !\n\n");
   printf("=========================================\n");
}

⌨️ 快捷键说明

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