域名服務(wù)器管理系統(tǒng)實驗報告《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計
《域名服務(wù)器管理系統(tǒng)實驗報告《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《域名服務(wù)器管理系統(tǒng)實驗報告《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(36頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計 域名服務(wù)器管理系統(tǒng) 一、目的 熟悉C語言的基本內(nèi)容從而掌握C語言的基本知識以及了解C程序的基本編寫及運行;了解程序的分模塊編寫并對程序的每個模塊進行詳細的設(shè)計并且能理解一般C語言編寫的程序。編寫一個域名服務(wù)管理系統(tǒng)程序,根據(jù)目錄要求執(zhí)行多種操作,可以錄入一個或者多個域名信息,能夠提供瀏覽和顯示功能,也可以查詢所錄入的域名信息,然后也可對于所錄入的域名進行刪除或者修改,能夠重復(fù)進行操作。 二、需求分析 1、功能需求: 編寫一個域名服務(wù)器管理系統(tǒng)程序,本程序要求創(chuàng)建數(shù)據(jù)形式是由4個字符串組成的www.*********.*****.***域名管理系統(tǒng)。能夠提供
2、域名信息的錄入,瀏覽,查詢,修改,刪除的功能。 2、輸入:用戶通過從鍵盤輸入符合格式要求的域名并保存在數(shù)組里。 3、輸出:從數(shù)組里讀取函數(shù)并輸出顯示在屏幕上。 4、具體要求: 1)本程序要求系統(tǒng)按照目錄菜單方式工作。域名的形式為: ,即其數(shù)據(jù)形式是由4個字符串組成的:www.*********.*****.***。域名輸入時必須符合格式要求。 2)本程序提供以下功能: 域名信息錄入:用戶根據(jù)提示輸入新的域名,然后判斷域名是否合法,是否存在,如果合法且不存在則提示域名錄入成功,若輸入不合法則提示你輸入的域名有誤,提示繼續(xù)輸入,如果已經(jīng)存在則會提醒你輸入的域名已經(jīng)存在,提示繼續(xù)輸入或者
3、選擇退出。 域名信息瀏覽:對于已經(jīng)錄入的域名信息進行瀏覽,根據(jù)提示操作,將你錄入的所有的域名信息輸出顯示到屏幕上瀏覽。 域名信息查詢:對于已經(jīng)錄入的域名信息進行查詢,先輸入你想要查詢的域名,然后判斷用戶所輸入的信息是否存在,如果存在,則輸出顯示到屏幕上,若不存在則提示你輸入的域名有誤,然后繼續(xù)輸入查詢。 域名信息修改:對于已經(jīng)錄入的域名信息進行修改,先輸入你想要修改的域名,然后判斷用戶所輸入的信息是否存在,如果存在,則提示輸入一個新的域名,若輸入的域名合法則提示修改成功,如果輸入的域名不合法則提示你輸入的域名有誤,然后繼續(xù)輸入;如果你是輸入想要修改的域名信息不合法則提示你輸入的域名有誤然
4、后提示重新輸入。 域名信息刪除:對于已經(jīng)錄入的域名信息進行刪除,先輸入你想要修改的域名,然后判斷用戶所輸入的信息是否存在,如果存在,則將其成功刪除,若不存在,則提示你輸入的域名有誤然后繼續(xù)輸入。 三、概要設(shè)計 1、本程序主要模塊: (1)main() { 定義及初始化; 展示主菜單; 讀取用戶的輸入數(shù)據(jù); 調(diào)用相關(guān)功能函數(shù); } 2、函數(shù)部分: 本程序定義了一個菜單函數(shù)以及五個功能函數(shù)(包括錄入函數(shù),瀏覽函數(shù),查詢函,數(shù),修改函數(shù),刪除函數(shù)) (1)void menu();//菜單函數(shù) (2)int input(char a[N][L], int
5、 n); //域名信息錄入 char a[N][L]是一個二維數(shù)組,存儲所有錄入的域名地址,n是代表域名個數(shù),返回已經(jīng)輸入的地址個數(shù) (3)void scan(char a[N][L], int n); //域名信息瀏覽 char a[N][L]是一個二維數(shù)組,存儲所有錄入的域名地址,n是代表域名個數(shù),沒有返回值。 (4)void reserch(char a[N][L], int n);// 域名信息查詢 char a[N][L]是一個二維數(shù)組,存儲所有錄入的域名地址,n是代表域名個數(shù),沒有返回值 (5)void refine(char a[N][L], int n);// 域名
6、信息修改 char a[N][L]是一個二維數(shù)組,存儲所有錄入的域名地址,n是代表域名個數(shù),沒有返回值 (6)int del(char a[N][L], int n);// 域名信息刪除 char a[N][L]是一個二維數(shù)組,存儲所有錄入的域名地址,n是代表域名個數(shù),返回值是剩下的域名個數(shù) 四、詳細設(shè)計 我們要求編寫一個域名服務(wù)器管理系統(tǒng)程序,本程序定義了一個二維數(shù)組,以數(shù)組的方式對域名進行存儲,以下是具體設(shè)計: 1. 域名信息錄入: 用戶根據(jù)提示輸入新的域名,然后判斷域名是否合法,是否存在,如果合法且不存在則提示域名錄入成功,若輸入不合法則提示你輸入的域名有誤,提示繼續(xù)輸入,
7、如果已經(jīng)存在則會提醒你輸入的域名已經(jīng)存在,提示繼續(xù)輸入或者選擇退出。 偽代碼如下: do{ 用戶根據(jù)提示進行操作,然后判斷是否正確 If輸入正確 成功錄入 else提示你輸入的域名有誤并重新輸入 詢問用戶是否繼續(xù)錄入 }while(條件為真) 實現(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ù)時flag=0*/ do { check_int=0;
8、 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))/*判斷是否已有同樣的地址輸
9、入*/ { 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按任意鍵返回...");
10、 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ù)提示操作,將你錄入的所有的域名信息輸出顯示到屏幕上瀏覽。 偽代碼如下: do{
11、
提示用戶輸入想要瀏覽的域名信息,并判斷其是否存在
if存在
將要瀏覽的域名信息輸出顯示在屏幕上
else提示你輸入的域名有誤或者不存在
提示用戶繼續(xù)輸入
}while(條件為真)
具體實現(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
12、 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)志,其中存在時flag=0*/ do { check_int=0; flag = 1; system("cls"); printf("請輸入想要搜索的域名:\n"); scanf("%s",temp); /*檢查輸入是否正確*/ check_char = te
13、mp;
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
14、emp); 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(); }w
15、hile(yesno != Y && yesno != y && yesno != N && yesno != n); }while(yesno == Y || yesno == y); } 3. 域名信息查詢: 對于已經(jīng)錄入的域名信息進行查詢,先輸入你想要查詢的域名,然后判斷用戶所輸入的信息是否存在,如果存在,則輸出顯示到屏幕上,若不存在則提示你輸入的域名有誤,然后繼續(xù)輸入查詢。 偽代碼如下: do{ 提示用戶輸入想要查詢的域名信息,然后判斷是否存在 If存在 將所查詢的域名信息輸出顯示到屏幕上 else提示你輸入的域名有誤 提示是否
16、繼續(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)志,其中存在時flag=0*/ do { check_int=0; flag = 1; system("cls"); printf("請輸入想要搜索的域名:\n"); scanf("%s",temp); /*檢查輸入是否正確*/ check_char = te
17、mp;
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
18、emp); 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(); }w
19、hile(yesno != Y && yesno != y && yesno != N && yesno != n); }while(yesno == Y || yesno == y); } 4. 域名信息修改: 對于已經(jīng)錄入的域名信息進行修改,先輸入你想要修改的域名,然后判斷用戶所輸入的信息是否存在,如果存在,則提示輸入一個新的域名,若輸入的域名合法則提示修改成功,如果輸入的域名不合法則提示你輸入的域名有誤,然后繼續(xù)輸入;如果你是輸入想要修改的域名信息不合法則提示你輸入的域名有誤然后提示重新輸入。 偽代碼如下: do{ 提示用戶輸入想要修改的域名信息,并判斷其是否存在 i
20、f存在 提示用戶輸入新域名,并判斷該域名是否符合格式要求,是否有重復(fù) else提示用戶重新輸入 詢問用戶是否繼續(xù)修改 }while(條件為真) 具體實現(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)志,其中存在時flag=0*/ int target;/*要修改的目標(biāo)字符串的下標(biāo)*/ do { check_int=0; flag = 1; sys
21、tem("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 =
22、 0;
target = i;
break;
}
}
if(flag == 0)
{
do/*判斷找到的地址是否是打算要修改的地址*/
{
system("cls");
printf("%s
23、 { system("cls"); printf("請輸入一個新的域名:\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],
24、 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("你輸入
25、的域名有誤!\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 &&
26、yesno != y && yesno != N && yesno != n); }while(yesno == Y || yesno == y); } 5. 域名信息刪除: 對于已經(jīng)錄入的域名信息進行刪除,先輸入你想要修改的域名,然后判斷用戶所輸入的信息是否存在,如果存在,則將其成功刪除,若不存在,則提示你輸入的域名有誤然后繼續(xù)輸入。 偽代碼如下: do{ 提示用戶輸入想要刪除的域名信息,然后判斷是否存在 If存在 成功刪除 else提示無法找到此域名 詢問是否繼續(xù)輸入 }while(條件為真) 具體如下: int del(
27、char a[N][L], int n) { char temp[L]; char *check_char; char yesno; int check_int,i; int flag;/*要修改的地址是否存在的標(biāo)志,其中存在時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_c
28、har != \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 29、ttp://%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" 30、);
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();
putcha 31、r(yesno);
getch();
}while(yesno != Y && yesno != y && yesno != N && yesno != n);
}while(yesno == Y || yesno == y);
return n;
}
流程圖如下:
五. 調(diào)試分析
程序在調(diào)試過程中出現(xiàn)錯誤,反復(fù)調(diào)節(jié)也無法改正,具體如下:
最終各種網(wǎng)上查詢和咨詢學(xué)長,才發(fā)現(xiàn)問題出現(xiàn)在clrscr()的使用,clrscr()在vc6.0中無法使用,那是tc的的庫函數(shù),因為在tc下是有c 32、onio.h里的clrscr()清屏函數(shù)的,但是在VC下,conio.h里沒有clrscr(),只能用system("cls");
所以最終將所有clrscr()替換成system("cls");,并加上#include 33、息的瀏覽:
1)提前讓系統(tǒng)錄入和倆個域名,現(xiàn)在選擇2,域名信息瀏覽,然后瀏覽結(jié)果如下:
4.域名信息的查詢
1)先輸入一個已經(jīng)存在的域名比如:進行查詢,所以查詢結(jié)果存在,并將域名信息顯示出來,結(jié)果如下:
2)又輸入一個不存在的記錄()進行查詢,由于記錄不存在所以結(jié)果顯示“”。
5.域名信息的修改
將原來的域名修改為。操作如下:
此時再次瀏覽系統(tǒng)記錄,結(jié)果就會變?yōu)椋?
此時,域名信息瀏覽就會變?yōu)椋?
6.域名信息的刪除
現(xiàn)在想要刪除域名 ,具體操作步驟如下:
然后顯示修改成功:
此時,域名信息瀏覽變?yōu)椋?
7.退 34、出
選擇0表示退出操作,結(jié)果如下:
七 用戶使用說明:
本程序是關(guān)于域名服務(wù)器管理系統(tǒng),可以實現(xiàn)域名信息的錄入,瀏覽,查詢,修改,刪除的功能,用戶根據(jù)輸出提示進行相應(yīng)合法的操作。
1.本程序在VC和TC下都可以運行。
2.具體分為以下幾步:
1)域名信息錄入:根據(jù)菜單目錄,用戶輸入1便可選擇此項,然后系統(tǒng)提示輸入域名,輸入符合要求的域名在按回車鍵后將被保存,提示錄入成功,用戶可選擇多次添加不同域名,當(dāng)然若輸入的域名不合法將提示你輸入的域名有誤,用戶選擇重新輸入或者返回菜單界面。
2)域名信息瀏覽:根據(jù)菜單目錄,用戶輸入2便可對于之前錄入的 35、所有域名進行瀏覽,所有的域名將被輸出顯示到屏幕上。
3)域名信息查詢:根據(jù)菜單目錄,用戶輸入3便可對于之前錄入的域名信息進行查詢,按照提示輸入你所要查詢的域名,輸入合法即可查詢到你所想要查詢的域名,并輸出顯示到屏幕上,若輸入的域名不合法或者不存在,系統(tǒng)會提示有誤,用戶可進行重新輸入或者返回菜單。
4)域名信息修改:根據(jù)菜單目錄,用戶輸入4便可對于之前錄入的域名信息進行修改,首先系統(tǒng)會提示輸入你想要修改的域名,輸入成功后,然后提示輸入新的域名進行替換,輸入合法則修改成功,反之則可選擇繼續(xù)輸入,若在輸入想要修改的域名時輸入不合法或者域名不存在系統(tǒng)均會進行提示然后讓用戶重新輸入或 36、者返回菜單。
5)域名信息刪除:根據(jù)菜單目錄,用戶輸入5便可對于之前錄入的域名信息進行修改,按照提示輸入你想要刪除的域名,輸入正確則提示刪除成功,輸入不合法或者域名不存在系統(tǒng)均會提醒然后讓用戶重新輸入或者返回菜單。
6)退出:用戶選擇0便可退出系統(tǒng)。
八. 課程設(shè)計總結(jié)
此次課程設(shè)計的題目是域名服務(wù)器管理系統(tǒng),要求我們用C\C++語言進行課程設(shè)計。
距離C語言的學(xué)習(xí)已經(jīng)有一段時間,剛拿到這個題目時,感覺略陌生,對于我而言已經(jīng)稍顯吃力,原本懶散的我以為可以輕松過關(guān),所以對待它比較散漫,而后對于課程設(shè)計嚴(yán)格要求的張老師對我敲響了警鐘,讓我明白學(xué)習(xí)不可能不勞而獲,只有 37、通過自己認(rèn)認(rèn)真真的努力才能獲得通過與認(rèn)可。于是接下來的時間我用了比平常更加認(rèn)真的心態(tài)對待課程設(shè)計,向同學(xué)提問或者從網(wǎng)上查詢,盡量讓自己對代碼進行全部的理解,反復(fù)認(rèn)真地完善和修改實驗報告,盡量達到老師要求的水準(zhǔn),在此期間,最起碼我又重新復(fù)習(xí)了C語言,又了解指針和數(shù)組的使用,也學(xué)會了如何正確對待自己的問題,收獲頗多。
都說課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié)。如今看來,果真如此,至少我在次過程中學(xué)習(xí)到不少東西,對于自身有提高,有進步。這次的課程設(shè)計也讓我明白,對待任何事情首先要有一顆積極認(rèn)真的心態(tài),為之付諸努力,然后你才能得到你想要的。
36
中南民族大學(xué)計算機科學(xué)學(xué)院
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案