域名服务器的仿真模拟程序Word文档下载推荐.docx
《域名服务器的仿真模拟程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《域名服务器的仿真模拟程序Word文档下载推荐.docx(37页珍藏版)》请在冰豆网上搜索。
stdio.h>
structwebaddress//地址簿格式
{
charwww[5];
charname[9];
charadm[5];
charcountry[4];
webaddress*next;
//增加指针变量,作为链表进行操作
};
webaddress*head=NULL;
//全局变量,链表头
voidInitial(void)
cout<
<
"
*******************************\n"
;
欢迎使用域名服务器查程序\n"
请选择以下功能\n"
\n"
1.查询数据\n"
2.插入数据\n"
3.删除数据\n"
4.打印全部数据\n"
5.退出\n"
\n"
}
voidFill(webaddress*pt1,char*TempChar)
inti,j;
intdot=0;
staticcharstr[10];
for(j=0;
TempChar[j]!
='
\0'
j++)
{
TempChar[j]=tolower(TempChar[j]);
//将输入的字符串变成小写
if(TempChar[j]=='
.'
)
dot++;
//统计.数
}
if(dot==0)
cout<
数据格式错误,未插入数据!
return;
for(i=0;
i<
4;
i++)
str[i]=TempChar[i];
str[i]='
if(strcmp(str,"
www."
)==0)
strcpy(pt1->
www,str);
dot--;
j=i;
else
j=0;
www,"
);
&
i++,j++)
str[i]=TempChar[j];
j=j+1;
dot--;
strcpy(pt1->
name,str);
adm,str);
dot;
country,str);
return;
voidInsert(webaddress*pt)
webaddress*pt1,*pt2;
pt1=pt2=head;
if(head==NULL)
{
head=pt;
pt->
next=0;
return;
if(strcmp(head->
name,pt->
name)>
=0)
next=head;
head=pt;
pt2=pt1=head;
while(pt2->
next&
strcmp(pt2->
name)<
0)
pt1=pt2;
pt2=pt2->
next;
if(strcmp(pt2->
{
pt2->
next=pt;
next=0;
next=pt2;
pt1->
return;
voidPrint(webaddress*pt)
pt->
www<
name<
'
adm<
country<
endl;
voidLookUpData(void)
webaddress*pt;
charwebname[10];
输入域名的名称\n"
cin>
>
webname;
pt=head;
while(pt)
if(strcmp(webname,pt->
name)==0)
{
cout<
查找出的域名为:
Print(pt);
break;
}
pt=pt->
if(pt==NULL)
数据文件中没有该地址\n"
cin.get();
voidInsertData(void)
charTempchar[22];
请输入要插入的域名\n"
cin.getline(Tempchar,22);
pt=newwebaddress;
Fill(pt,Tempchar);
Insert(pt);
voidDelete(char*Tempchar)
webaddress*p1,*p2;
charchoice;
if(head==NULL)
cout<
数据表为空,无域名可删!
if(strcmp(head->
name,Tempchar)==0)
p1=head;
存在该域名为:
Print(p1);
请确定是否删除该域名(y/n)?
cin>
choice;
if(choice=='
Y'
||choice=='
y'
head=head->
deletep1;
cout<
删除了该域名!
else
未删除域名!
p2=p1=head;
while(strcmp(p2->
name,Tempchar)!
=0&
p2->
next!
=NULL)
p1=p2;
p2=p2->
if(strcmp(p2->
name,Tempchar)==0)
Print(p2);
cin>
if(choice=='
{
p1->
next=p2->
deletep2;
cout<
}
else
cout<
elsecout<
数据表上没有找到要删除的域名!
voidDeleteData(void)
请输入要删除的域名的名称(第二个字段)\n"
cin.getline(Tempchar,22);
Delete(Tempchar);
voidPrintData(void)
if(head!
=0)
数据表中的域名有:
Print(pt);
voidmain(void)
intchoice;
do
Initial();
switch(choice)
case1:
LookUpData();
break;
case2:
InsertData();
case3:
DeleteData();
case4:
PrintData();
getchar();
break;
case5:
default:
选择错误!
}while(choice!
=5);
(1)解答
一、课程设计的解答说明如下:
本程序以链表的方式存储数据,基本结构比较合理,不需修改,在原有结构的基础上增加一些函数。
表的方法来解决问题有利于排序。
域名数据的基本格式是www.name.address.country;
但一些其他格式也应可以识别如:
name.address,没有www和country。
tm为time.h中定义的数据结构,内容如下:
structtm
inttm_sec;
//秒数0~59
inttm_min;
//分钟数0~59
inttm_hour;
//小时0~23
inttm_mday;
//月份日期1~31
inttm_mo