《域名服務(wù)器管理系統(tǒng)實(shí)驗(yàn)報(bào)告.doc》由會員分享,可在線閱讀,更多相關(guān)《域名服務(wù)器管理系統(tǒng)實(shí)驗(yàn)報(bào)告.doc(36頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
域名服務(wù)器管理系統(tǒng)
一、目的
熟悉C語言的基本內(nèi)容從而掌握C語言的基本知識以及了解C程序的基本編寫及運(yùn)行;了解程序的分模塊編寫并對程序的每個(gè)模塊進(jìn)行詳細(xì)的設(shè)計(jì)并且能理解一般C語言編寫的程序。編寫一個(gè)域名服務(wù)管理系統(tǒng)程序,根據(jù)目錄要求執(zhí)行多種操作,可以錄入一個(gè)或者多個(gè)域名信息,能夠提供瀏覽和顯示功能,也可以查詢所錄入的域名信息,然后也可對于所錄入的域名進(jìn)行刪除或者修改,能夠重復(fù)進(jìn)行操作。
二、需求分析
1、功能需求:
編寫一個(gè)域名服務(wù)器管理系統(tǒng)程序,本程序要求創(chuàng)建數(shù)據(jù)形式是由4個(gè)字符串組成的www.*********.*****.***域名管理系統(tǒng)。能夠提供域名信息的錄入,瀏覽,查詢,修改,刪除的功能。
2、輸入:用戶通過從鍵盤輸入符合格式要求的域名并保存在數(shù)組里。
3、輸出:從數(shù)組里讀取函數(shù)并輸出顯示在屏幕上。
4、具體要求:
1)本程序要求系統(tǒng)按照目錄菜單方式工作。域名的形式為: www.scuec.edu.cn,即其數(shù)據(jù)形式是由4個(gè)字符串組成的:www.*********.*****.***。域名輸入時(shí)必須符合格式要求。
2)本程序提供以下功能:
域名信息錄入:用戶根據(jù)提示輸入新的域名,然后判斷域名是否合法,是否存在,如果合法且不存在則提示域名錄入成功,若輸入不合法則提示你輸入的域名有誤,提示繼續(xù)輸入,如果已經(jīng)存在則會提醒你輸入的域名已經(jīng)存在,提示繼續(xù)輸入或者選擇退出。
域名信息瀏覽:對于已經(jīng)錄入的域名信息進(jìn)行瀏覽,根據(jù)提示操作,將你錄入的所有的域名信息輸出顯示到屏幕上瀏覽。
域名信息查詢:對于已經(jīng)錄入的域名信息進(jìn)行查詢,先輸入你想要查詢的域名,然后判斷用戶所輸入的信息是否存在,如果存在,則輸出顯示到屏幕上,若不存在則提示你輸入的域名有誤,然后繼續(xù)輸入查詢。
域名信息修改:對于已經(jīng)錄入的域名信息進(jìn)行修改,先輸入你想要修改的域名,然后判斷用戶所輸入的信息是否存在,如果存在,則提示輸入一個(gè)新的域名,若輸入的域名合法則提示修改成功,如果輸入的域名不合法則提示你輸入的域名有誤,然后繼續(xù)輸入;如果你是輸入想要修改的域名信息不合法則提示你輸入的域名有誤然后提示重新輸入。
域名信息刪除:對于已經(jīng)錄入的域名信息進(jìn)行刪除,先輸入你想要修改的域名,然后判斷用戶所輸入的信息是否存在,如果存在,則將其成功刪除,若不存在,則提示你輸入的域名有誤然后繼續(xù)輸入。
三、概要設(shè)計(jì)
1、本程序主要模塊:
(1)main()
{
定義及初始化;
展示主菜單;
讀取用戶的輸入數(shù)據(jù);
調(diào)用相關(guān)功能函數(shù);
}
2、函數(shù)部分:
本程序定義了一個(gè)菜單函數(shù)以及五個(gè)功能函數(shù)(包括錄入函數(shù),瀏覽函數(shù),查詢函,數(shù),修改函數(shù),刪除函數(shù))
(1)void menu();//菜單函數(shù)
(2)int input(char a[N][L], int n); //域名信息錄入
char a[N][L]是一個(gè)二維數(shù)組,存儲所有錄入的域名地址,n是代表域名個(gè)數(shù),返回已經(jīng)輸入的地址個(gè)數(shù)
(3)void scan(char a[N][L], int n); //域名信息瀏覽
char a[N][L]是一個(gè)二維數(shù)組,存儲所有錄入的域名地址,n是代表域名個(gè)數(shù),沒有返回值。
(4)void reserch(char a[N][L], int n);// 域名信息查詢
char a[N][L]是一個(gè)二維數(shù)組,存儲所有錄入的域名地址,n是代表域名個(gè)數(shù),沒有返回值
(5)void refine(char a[N][L], int n);// 域名信息修改
char a[N][L]是一個(gè)二維數(shù)組,存儲所有錄入的域名地址,n是代表域名個(gè)數(shù),沒有返回值
(6)int del(char a[N][L], int n);// 域名信息刪除
char a[N][L]是一個(gè)二維數(shù)組,存儲所有錄入的域名地址,n是代表域名個(gè)數(shù),返回值是剩下的域名個(gè)數(shù)
四、詳細(xì)設(shè)計(jì)
我們要求編寫一個(gè)域名服務(wù)器管理系統(tǒng)程序,本程序定義了一個(gè)二維數(shù)組,以數(shù)組的方式對域名進(jìn)行存儲,以下是具體設(shè)計(jì):
1. 域名信息錄入:
用戶根據(jù)提示輸入新的域名,然后判斷域名是否合法,是否存在,如果合法且不存在則提示域名錄入成功,若輸入不合法則提示你輸入的域名有誤,提示繼續(xù)輸入,如果已經(jīng)存在則會提醒你輸入的域名已經(jīng)存在,提示繼續(xù)輸入或者選擇退出。
偽代碼如下:
do{
用戶根據(jù)提示進(jìn)行操作,然后判斷是否正確
If輸入正確
成功錄入
else提示你輸入的域名有誤并重新輸入
詢問用戶是否繼續(xù)錄入
}while(條件為真)
實(shí)現(xiàn)如下:
int input(char a[N][L], int n)
{
char temp[L];
char *check_char;
char yesno;
int check_int,i;
int flag;/*輸入的地址是否重復(fù)的標(biāo)志,其中重復(fù)時(shí)flag=0*/
do
{
check_int=0;
flag = 1;
system("cls");
printf("請輸入一個(gè)新的域名:\n");
scanf("%s",temp);
/*檢查輸入是否正確*/
check_char = temp;
while(*check_char != \0)
{
if(*check_char == .) check_int++;
check_char++;
}
if(check_int == 3 && *(check_char-1) != .)
{
for(i = 0; i < n; i++)
{
if(!strcmp(a[i], temp))/*判斷是否已有同樣的地址輸入*/
{
flag = 0;
break;
}
}
if(flag == 0)
{
system("cls");
printf("注意: 域名 \" %s\" 已存在!\n\n\n按任意鍵返回...\n", temp);
getch();
}
else
{
strcpy(a[n], temp);
n++;
system("cls");
printf("添加成功! \n\n\n按任意鍵返回...");
getch();
}
}
else
{
system("cls");
printf("你輸入的域名有誤! \n\n\n按任意鍵返回...");
getch();
}
do
{
system("cls");
printf("是否繼續(xù)錄入域名?(Y/N)\n");
yesno = getch();
putchar(yesno);
getch();
}while(yesno != Y && yesno != y && yesno != N && yesno != n);
}while(yesno == Y || yesno == y);
return n;
}
2. 域名信息瀏覽:
對于已經(jīng)錄入的域名信息進(jìn)行瀏覽,根據(jù)提示操作,將你錄入的所有的域名信息輸出顯示到屏幕上瀏覽。
偽代碼如下:
do{
提示用戶輸入想要瀏覽的域名信息,并判斷其是否存在
if存在
將要瀏覽的域名信息輸出顯示在屏幕上
else提示你輸入的域名有誤或者不存在
提示用戶繼續(xù)輸入
}while(條件為真)
具體實(shí)現(xiàn)如下:
void scan(char a[N][L], int n)
{
int i=0;
system("cls");
while(i < n)
{
if(!(i%10)) printf("域名瀏覽:\n");
printf("%s
\n",a[i],a[i]);
if(i%2==9)
{
printf("按任意鍵返回...");
getch();
system("cls");
}
i++;
}
}
void reserch(char a[N][L], int n)
{
char temp[L];
char *check_char;
char yesno;
int check_int,i;
int flag;/*要查詢的地址是否存在的標(biāo)志,其中存在時(shí)flag=0*/
do
{
check_int=0;
flag = 1;
system("cls");
printf("請輸入想要搜索的域名:\n");
scanf("%s",temp);
/*檢查輸入是否正確*/
check_char = temp;
while(*check_char != \0)
{
if(*check_char == .) check_int++;
check_char++;
}
if(check_int == 3 && *(check_char-1) != .)
{
for(i = 0; i < n; i++)
{
if(!strcmp(a[i], temp))/*判斷是否存在要查找的地址*/
{
flag = 0;
break;
}
}
if(flag == 0)
{
printf("搜索結(jié)果:\n");
printf("%s \n",temp,temp);
printf("按任意鍵返回...\n");
getch();
}
else
{
system("cls");
printf("查詢不到域名\"%s\"!\n",temp);
printf("按任意鍵返回...");
getch();
}
}
else
{
printf("你輸入的域名有誤!\n\n\n按任意鍵返回...");
getch();
}
do
{
system("cls");
printf("是否繼續(xù)搜索域名?(Y/N)\n");
yesno = getch();
putchar(yesno);
getch();
}while(yesno != Y && yesno != y && yesno != N && yesno != n);
}while(yesno == Y || yesno == y);
}
3. 域名信息查詢:
對于已經(jīng)錄入的域名信息進(jìn)行查詢,先輸入你想要查詢的域名,然后判斷用戶所輸入的信息是否存在,如果存在,則輸出顯示到屏幕上,若不存在則提示你輸入的域名有誤,然后繼續(xù)輸入查詢。
偽代碼如下:
do{
提示用戶輸入想要查詢的域名信息,然后判斷是否存在
If存在
將所查詢的域名信息輸出顯示到屏幕上
else提示你輸入的域名有誤
提示是否繼續(xù)輸入域名
}while(條件為真)
具體如下:
void reserch(char a[N][L], int n)
{
char temp[L];
char *check_char;
char yesno;
int check_int,i;
int flag;/*要查詢的地址是否存在的標(biāo)志,其中存在時(shí)flag=0*/
do
{
check_int=0;
flag = 1;
system("cls");
printf("請輸入想要搜索的域名:\n");
scanf("%s",temp);
/*檢查輸入是否正確*/
check_char = temp;
while(*check_char != \0)
{
if(*check_char == .) check_int++;
check_char++;
}
if(check_int == 3 && *(check_char-1) != .)
{
for(i = 0; i < n; i++)
{
if(!strcmp(a[i], temp))/*判斷是否存在要查找的地址*/
{
flag = 0;
break;
}
}
if(flag == 0)
{
printf("搜索結(jié)果:\n");
printf("%s \n",temp,temp);
printf("按任意鍵返回...\n");
getch();
}
else
{
system("cls");
printf("查詢不到域名\"%s\"!\n",temp);
printf("按任意鍵返回...");
getch();
}
}
else
{
printf("你輸入的域名有誤!\n\n\n按任意鍵返回...");
getch();
}
do
{
system("cls");
printf("是否繼續(xù)搜索域名?(Y/N)\n");
yesno = getch();
putchar(yesno);
getch();
}while(yesno != Y && yesno != y && yesno != N && yesno != n);
}while(yesno == Y || yesno == y);
}
4. 域名信息修改:
對于已經(jīng)錄入的域名信息進(jìn)行修改,先輸入你想要修改的域名,然后判斷用戶所輸入的信息是否存在,如果存在,則提示輸入一個(gè)新的域名,若輸入的域名合法則提示修改成功,如果輸入的域名不合法則提示你輸入的域名有誤,然后繼續(xù)輸入;如果你是輸入想要修改的域名信息不合法則提示你輸入的域名有誤然后提示重新輸入。
偽代碼如下:
do{
提示用戶輸入想要修改的域名信息,并判斷其是否存在
if存在
提示用戶輸入新域名,并判斷該域名是否符合格式要求,是否有重復(fù)
else提示用戶重新輸入
詢問用戶是否繼續(xù)修改
}while(條件為真)
具體實(shí)現(xiàn)如下:
void refine(char a[N][L], int n)
{
char temp[L];
char *check_char;
char yesno;
int check_int,i;
int flag;/*要修改的地址是否存在的標(biāo)志,其中存在時(shí)flag=0*/
int target;/*要修改的目標(biāo)字符串的下標(biāo)*/
do
{
check_int=0;
flag = 1;
system("cls");
printf("請輸入想要修改的域名:\n");
scanf("%s",temp);
/*檢查輸入是否正確*/
check_char = temp;
while(*check_char != \0)
{
if(*check_char == .) check_int++;
check_char++;
}
if(check_int == 3 && *(check_char-1) != .)
{
for(i = 0; i < n; i++)
{
if(!strcmp(a[i], temp))/*判斷是否存在要查找的地址*/
{
flag = 0;
target = i;
break;
}
}
if(flag == 0)
{
do/*判斷找到的地址是否是打算要修改的地址*/
{
system("cls");
printf("%s \n",temp,temp);
printf("是否修改此域名?(Y/N)\n");
yesno = getch();
putchar(yesno);
getch();
}while(yesno != Y && yesno != y && yesno != N && yesno != n);
if(yesno == Y || yesno == y)
{
system("cls");
printf("請輸入一個(gè)新的域名:\n");
scanf("%s",temp);
/*檢查輸入是否正確*/
check_char = temp;
check_int = 0;
flag = 1;
while(*check_char != \0)
{
if(*check_char == .) check_int++;
check_char++;
}
if(check_int == 3 && *(check_char-1) != .)
{
for(i = 0; i < n; i++)
{
if(!strcmp(a[i], temp))/*判斷是否已有同樣的地址輸入*/
{
flag = 0;
break;
}
}
if(flag == 0)
{
system("cls");
printf("注意: 域名 \" %s\" 已存在!\n\n\n按任意鍵返回...\n", temp);
getch();
}
else
{
strcpy(a[target], temp);
n++;
system("cls");
printf("修改成功!\n\n\n按任意鍵返回...");
getch();
}
}
else
{
system("cls");
printf("你輸入的域名有誤!\n\n\n按任意鍵返回...");
getch();
}
}
}
else
{
system("cls");
printf("t無法找到此域名!\n\n按任意鍵返回...");
getch();
}
}
else
{
printf("你輸入的域名有誤!\n\n\n按任意鍵返回...");
getch();
}
do
{
system("cls");
printf("是否繼續(xù)修改域名?(Y/N)\n");
yesno = getch();
putchar(yesno);
getch();
}while(yesno != Y && yesno != y && yesno != N && yesno != n);
}while(yesno == Y || yesno == y);
}
5. 域名信息刪除:
對于已經(jīng)錄入的域名信息進(jìn)行刪除,先輸入你想要修改的域名,然后判斷用戶所輸入的信息是否存在,如果存在,則將其成功刪除,若不存在,則提示你輸入的域名有誤然后繼續(xù)輸入。
偽代碼如下:
do{
提示用戶輸入想要?jiǎng)h除的域名信息,然后判斷是否存在
If存在
成功刪除
else提示無法找到此域名
詢問是否繼續(xù)輸入
}while(條件為真)
具體如下:
int del(char a[N][L], int n)
{
char temp[L];
char *check_char;
char yesno;
int check_int,i;
int flag;/*要修改的地址是否存在的標(biāo)志,其中存在時(shí)flag=0*/
int target;/*要修改的目標(biāo)字符串的下標(biāo)*/
do
{
check_int=0;
flag = 1;
system("cls");
printf("請輸入你要?jiǎng)h除的域名:\n");
scanf("%s",temp);
/*檢查輸入是否正確*/
check_char = temp;
while(*check_char != \0)
{
if(*check_char == .) check_int++;
check_char++;
}
if(check_int == 3 && *(check_char-1) != .)
{
for(i = 0; i < n; i++)
{
if(!strcmp(a[i], temp))/*判斷是否存在要查找的地址*/
{
flag = 0;
target = i;
break;
}
}
if(flag == 0)
{
do/*判斷找到的地址是否是打算要修改的地址*/
{
system("cls");
printf("%s \n",temp,temp);
printf("確認(rèn)是否刪除此域名?(Y/N)\n");
yesno = getch();
putchar(yesno);
getch();
}while(yesno != Y && yesno != y && yesno != N && yesno != n);
if(yesno == Y || yesno == y)
{
system("cls");
for(; target < n; target++)
{
strcpy(a[target], a[target+1]);
}
strcpy(a[--n],"0");
system("cls");
printf("t刪除成功!\n\n\n按任意鍵返回...");
getch();
}
}
else
{
system("cls");
printf("無法找到此域名!\n\n\n按任意鍵返回...");
getch();
}
}
else
{
system("cls");
printf("你輸入的域名有誤!\n\n\n按任意鍵返回...");
getch();
}
do
{
system("cls");
printf("是否繼續(xù)刪除其他域名?(Y/N)\n");
yesno = getch();
putchar(yesno);
getch();
}while(yesno != Y && yesno != y && yesno != N && yesno != n);
}while(yesno == Y || yesno == y);
return n;
}
流程圖如下:
五. 調(diào)試分析
程序在調(diào)試過程中出現(xiàn)錯(cuò)誤,反復(fù)調(diào)節(jié)也無法改正,具體如下:
最終各種網(wǎng)上查詢和咨詢學(xué)長,才發(fā)現(xiàn)問題出現(xiàn)在clrscr()的使用,clrscr()在vc6.0中無法使用,那是tc的的庫函數(shù),因?yàn)樵趖c下是有conio.h里的clrscr()清屏函數(shù)的,但是在VC下,conio.h里沒有clrscr(),只能用system("cls");
所以最終將所有clrscr()替換成system("cls");,并加上#include。
然后程序調(diào)試成功,以后應(yīng)該注意函數(shù)與環(huán)境的對應(yīng)是否正確。
六 . 測試結(jié)果
1. 域名服務(wù)器管理系統(tǒng)菜單界面
2.
2.域名信息的錄入:
1)輸入一個(gè)合法域名:www.baidu.com.cn.格式合法,所以顯示“添加成功”。
2)輸入一個(gè)不合法的域名如www.renren.com,明顯與要求的格式不符,所以程序提示“你輸入的域名有誤!”。
3.域名信息的瀏覽:
1)提前讓系統(tǒng)錄入www.baidu.com.cn和www.taobao.com.cn倆個(gè)域名,現(xiàn)在選擇2,域名信息瀏覽,然后瀏覽結(jié)果如下:
4.域名信息的查詢
1)先輸入一個(gè)已經(jīng)存在的域名比如:www.baidu.com.cn進(jìn)行查詢,所以查詢結(jié)果存在,并將域名信息顯示出來,結(jié)果如下:
2)又輸入一個(gè)不存在的記錄(www.renren.com.cn)進(jìn)行查詢,由于記錄不存在所以結(jié)果顯示“”。
5.域名信息的修改
將原來的域名www.baidu.com.cn修改為www.renren.com.cn。操作如下:
此時(shí)再次瀏覽系統(tǒng)記錄,結(jié)果就會變?yōu)椋?
此時(shí),域名信息瀏覽就會變?yōu)椋?
6.域名信息的刪除
現(xiàn)在想要?jiǎng)h除域名www.taobao.com.cn ,具體操作步驟如下:
然后顯示修改成功:
此時(shí),域名信息瀏覽變?yōu)椋?
7.退出
選擇0表示退出操作,結(jié)果如下:
七 用戶使用說明:
本程序是關(guān)于域名服務(wù)器管理系統(tǒng),可以實(shí)現(xiàn)域名信息的錄入,瀏覽,查詢,修改,刪除的功能,用戶根據(jù)輸出提示進(jìn)行相應(yīng)合法的操作。
1.本程序在VC和TC下都可以運(yùn)行。
2.具體分為以下幾步:
1)域名信息錄入:根據(jù)菜單目錄,用戶輸入1便可選擇此項(xiàng),然后系統(tǒng)提示輸入域名,輸入符合要求的域名在按回車鍵后將被保存,提示錄入成功,用戶可選擇多次添加不同域名,當(dāng)然若輸入的域名不合法將提示你輸入的域名有誤,用戶選擇重新輸入或者返回菜單界面。
2)域名信息瀏覽:根據(jù)菜單目錄,用戶輸入2便可對于之前錄入的所有域名進(jìn)行瀏覽,所有的域名將被輸出顯示到屏幕上。
3)域名信息查詢:根據(jù)菜單目錄,用戶輸入3便可對于之前錄入的域名信息進(jìn)行查詢,按照提示輸入你所要查詢的域名,輸入合法即可查詢到你所想要查詢的域名,并輸出顯示到屏幕上,若輸入的域名不合法或者不存在,系統(tǒng)會提示有誤,用戶可進(jìn)行重新輸入或者返回菜單。
4)域名信息修改:根據(jù)菜單目錄,用戶輸入4便可對于之前錄入的域名信息進(jìn)行修改,首先系統(tǒng)會提示輸入你想要修改的域名,輸入成功后,然后提示輸入新的域名進(jìn)行替換,輸入合法則修改成功,反之則可選擇繼續(xù)輸入,若在輸入想要修改的域名時(shí)輸入不合法或者域名不存在系統(tǒng)均會進(jìn)行提示然后讓用戶重新輸入或者返回菜單。
5)域名信息刪除:根據(jù)菜單目錄,用戶輸入5便可對于之前錄入的域名信息進(jìn)行修改,按照提示輸入你想要?jiǎng)h除的域名,輸入正確則提示刪除成功,輸入不合法或者域名不存在系統(tǒng)均會提醒然后讓用戶重新輸入或者返回菜單。
6)退出:用戶選擇0便可退出系統(tǒng)。
八. 課程設(shè)計(jì)總結(jié)
此次課程設(shè)計(jì)的題目是域名服務(wù)器管理系統(tǒng),要求我們用C\C++語言進(jìn)行課程設(shè)計(jì)。
距離C語言的學(xué)習(xí)已經(jīng)有一段時(shí)間,剛拿到這個(gè)題目時(shí),感覺略陌生,對于我而言已經(jīng)稍顯吃力,原本懶散的我以為可以輕松過關(guān),所以對待它比較散漫,而后對于課程設(shè)計(jì)嚴(yán)格要求的張老師對我敲響了警鐘,讓我明白學(xué)習(xí)不可能不勞而獲,只有通過自己認(rèn)認(rèn)真真的努力才能獲得通過與認(rèn)可。于是接下來的時(shí)間我用了比平常更加認(rèn)真的心態(tài)對待課程設(shè)計(jì),向同學(xué)提問或者從網(wǎng)上查詢,盡量讓自己對代碼進(jìn)行全部的理解,反復(fù)認(rèn)真地完善和修改實(shí)驗(yàn)報(bào)告,盡量達(dá)到老師要求的水準(zhǔn),在此期間,最起碼我又重新復(fù)習(xí)了C語言,又了解指針和數(shù)組的使用,也學(xué)會了如何正確對待自己的問題,收獲頗多。
都說課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié)。如今看來,果真如此,至少我在次過程中學(xué)習(xí)到不少東西,對于自身有提高,有進(jìn)步。這次的課程設(shè)計(jì)也讓我明白,對待任何事情首先要有一顆積極認(rèn)真的心態(tài),為之付諸努力,然后你才能得到你想要的。
鏈接地址:http://m.italysoccerbets.com/p-9153963.html