數(shù)制轉(zhuǎn)換課程設計說明書
《數(shù)制轉(zhuǎn)換課程設計說明書》由會員分享,可在線閱讀,更多相關《數(shù)制轉(zhuǎn)換課程設計說明書(22頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 專業(yè)基礎綜合課程設計 設計說明書 進制轉(zhuǎn)換的實現(xiàn) 學生姓名 學號 班級 成績 指導教師 數(shù)學與計算機科學學院 2012 年6 月29日 數(shù)據(jù)結(jié)構課程設計評閱書 題 目 進制轉(zhuǎn)換的實現(xiàn) 學生姓名 學號 指導教師評語及成績 成績: 教師簽名: 年 月 日 答辯教師評語及成績 成績: 教師簽名: 年 月 日 教研室意見 總成績: 室主任簽名:
2、 年 月 日 注:指導教師成績60%,答辯成績40%,總成績合成后按五級制記入。 課程設計任務書 2011 —2012 學年第 二 學期 專業(yè):計算機應用技術 學號: 姓名: 課程設計名稱: 數(shù)據(jù)結(jié)構課程設計 設計題目: 進制轉(zhuǎn)換的實現(xiàn) 完成期限:自 2012 年 6 月 18 日至 2012 年 6 月
3、29 日共 2 周 設計依據(jù)、要求及主要內(nèi)容(可另加附頁): 計算機中數(shù)據(jù)的存儲形式是0,1代碼,也就是以二進制的形式進行存儲,運用c或vc++結(jié)合數(shù)據(jù)結(jié)構等基礎知識,按以下要求實現(xiàn)各種進制的轉(zhuǎn)換。 任務要求:1)闡述設計思想,畫出流程圖;2)能完成用戶輸入的十進制數(shù)轉(zhuǎn)換為二進制、八進制、十六進制及其他進制數(shù),以及將其他任意進制數(shù)轉(zhuǎn)換成十進制的功能;3)除十進制以為的其他進制之間的相互轉(zhuǎn)換功能的實現(xiàn);4)將用戶的輸入及要求的結(jié)果能對應打印輸出;5)應用較好的界面設計,說明程序測試方法;6)按照格式要求完成課設說明書。 設計要求: 1)問題分析和任務定義:根據(jù)設計題目的要求,充分地分
4、析和理解問題,明確問題要求做什么?(而不是怎么做?)限制條件是什么?確定問題的輸入數(shù)據(jù)集合。 2)邏輯設計:對問題描述中涉及的操作對象定義相應的數(shù)據(jù)類型,并按照以數(shù)據(jù)結(jié)構為中心的原則劃分模塊,定義主程序模塊和各抽象數(shù)據(jù)類型。邏輯設計的結(jié)果應寫出每個抽象數(shù)據(jù)類型的定義(包括數(shù)據(jù)結(jié)構的描述和每個基本操作的功能說明),各個主要模塊的算法,并畫出模塊之間的調(diào)用關系圖; 3)詳細設計:定義相應的存儲結(jié)構并寫出各函數(shù)的偽碼算法。在這個過程中,要綜合考慮系統(tǒng)功能,使得系統(tǒng)結(jié)構清晰、合理、簡單和易于調(diào)試,抽象數(shù)據(jù)類型的實現(xiàn)盡可能做到數(shù)據(jù)封裝,基本操作的規(guī)格說明盡可能明確具體。詳細設計的結(jié)果是對數(shù)據(jù)結(jié)構和基
5、本操作做出進一步的求精,寫出數(shù)據(jù)存儲結(jié)構的類型定義,寫出函數(shù)形式的算法框架; 4)程序編碼:把詳細設計的結(jié)果進一步求精為程序設計語言程序。同時加入一些注解和斷言,使程序中邏輯概念清楚; 5)程序調(diào)試與測試:采用自底向上,分模塊進行,即先調(diào)試低層函數(shù)。能夠熟練掌握調(diào)試工具的各種功能,設計測試數(shù)據(jù)確定疑點,通過修改程序來證實它或繞過它。調(diào)試正確后,認真整理源程序及其注釋,形成格式和風格良好的源程序清單和結(jié)果; 6)結(jié)果分析:程序運行結(jié)果包括正確的輸入及其輸出結(jié)果和含有錯誤的輸入及其輸出結(jié)果。算法的時間、空間復雜性分析; 7)編寫課程設計報告; 以上要求中前三個階段的任務完成后,先將設計說
6、明數(shù)的草稿交指導老師面審,審查合格后方可進入后續(xù)階段的工作。設計工作結(jié)束后,經(jīng)指導老師驗收合格后將設計說明書打印裝訂,并進行答辯。 指導教師(簽字): 教研室主任(簽字): 批準日期: 年 月 日 摘要: 本次課程設計設計了一個任意進制之間轉(zhuǎn)換的軟件程序系統(tǒng),開發(fā)本系統(tǒng),解決任意進制之間的相互轉(zhuǎn)換,系統(tǒng)主要有以下幾個模塊:任意進制轉(zhuǎn)換為十進制、十進制轉(zhuǎn)換為任意進制以及兩者組合實現(xiàn)任意進制間的相互轉(zhuǎn)換。本軟件程序系統(tǒng)在windows 2000/XP系統(tǒng)下,以Microsoft Visua
7、l C++ 6.0為運行軟件環(huán)境,采用C/C++語言進行編寫,操作簡單明了,實際解決各進制數(shù)之間的轉(zhuǎn)換。 目錄 1 課題描述……………………………………………………………………………1 2 問題分析和任務定義………………………………………………………………2 3 邏輯設計……………………………………………………………………………3 4 詳細設計……………………………………………………………………………7 5 程序調(diào)試與測試………………………………………………………………… 10 5.1十進制轉(zhuǎn)換為任意進制……………………………………………………………… 10 5.2任
8、意進制轉(zhuǎn)化為十進制……………………………………………………………… 11 5.3任意進制間的轉(zhuǎn)換…………………………………………………………………… 12 總結(jié)………………………………………………………………………………… 18 參考文獻…………………………………………………………………………… 19 1 課題描述 在計算機內(nèi)部,數(shù)據(jù)是以二進制表示的,而人們習慣上使用的是十進制數(shù),所以計算機從我們這里接收到十進制數(shù)后,要經(jīng)過翻譯,把十進制數(shù)轉(zhuǎn)換為二進制數(shù)才能進行處理,該系統(tǒng)能夠根據(jù)用戶的要求,用C語言來編寫這個程序,實現(xiàn)二進制、八進制、十進制、十六進制之間的相互轉(zhuǎn)化,以及任意進制間
9、的相互轉(zhuǎn)換。 系統(tǒng)開發(fā)基于Windows2000/Xp平臺,以Visual C++6.0等作為開發(fā)工具。 2 問題分析和任務定義 數(shù)制轉(zhuǎn)換程序是要求任意兩種數(shù)間的相互轉(zhuǎn)化,本次課程設計以任意進制間轉(zhuǎn)換為中心實現(xiàn)二進制、八進制、十進制、十六進制、十八進制之間的相互轉(zhuǎn)化。其轉(zhuǎn)換方式大致相同,從低進制數(shù)向高進制數(shù)轉(zhuǎn)換進行乘數(shù)累加,反之則逐步求余,最終進行分布計算得到想要的結(jié)果。 本次系統(tǒng)程序,主要有兩大模塊組成,即任意進制轉(zhuǎn)換為十進制、十進制轉(zhuǎn)換為任意進制,這兩部分共同組成了對任意進制數(shù)的轉(zhuǎn)換的實現(xiàn),通過菜單選擇,讓用戶實現(xiàn)自己想要的結(jié)果。最后打印輸出結(jié)果。 3 邏輯設計
10、 數(shù)值轉(zhuǎn)換轉(zhuǎn)換系統(tǒng),包括八個子函數(shù)模塊,其中菜單函數(shù)模塊定義為整型,其余字符轉(zhuǎn)換函數(shù)處理模塊都根據(jù)函數(shù)所需定義數(shù)據(jù)類型。數(shù)制轉(zhuǎn)換處理系統(tǒng)中用棧來儲存處十進制以外的數(shù),將一個指定進制的數(shù),從低到高一位一位取出,并計算出每位的十進制值,然后乘以其數(shù)基的特定冪指數(shù),得出這一位數(shù)的十進制值,將所有各位的十進制值相加得出這個數(shù)的十進制值,然后再將該十進制數(shù)轉(zhuǎn)換為指定數(shù)制的數(shù),此過程采用求余法進行,用這個十進制數(shù)作為被除數(shù),用指定的數(shù)基作除數(shù),連續(xù)求余,得出的余數(shù)依由個位到十位等的順序組成新數(shù),即得指定數(shù)制的數(shù)。 邏輯設計如圖3.1所示。 結(jié)束 主菜單 始開 數(shù)函擇選 退出程序 進制轉(zhuǎn)換
11、 返回主菜單 任意進制之間 任意進制到十 十到任意進制 圖3.1設計思想流程圖 3.1程序流程圖 (1)主函數(shù)main()流程圖,如圖3.2所示 主菜單 始開 作操擇選 0操作 1操作 十到任意進制 任意進制到十 任意進制之間 結(jié)束 圖3.2 main函數(shù)流程圖 (2)十進制轉(zhuǎn)換為任意進制流程圖,如圖3.3所示 開始 int q,i=0,b,c=0,n=0; 傳的參數(shù)賦b,b>0? i++ 對b求余,賦給q q=q+48 將q值轉(zhuǎn)換為十六進制補碼 壓棧操作,調(diào)用入棧函數(shù)
12、求商操作,將商賦給b i=n i>0 輸出轉(zhuǎn)換結(jié)果 i-- 結(jié)束 n n n y y y 判斷b是否為要轉(zhuǎn)換的數(shù)字類型 y 重新輸入 n 圖 3.3為十進制到任意進制轉(zhuǎn)換流程圖 (3)任意進制到十進制的轉(zhuǎn)換,如圖3.4所示 開始 int i=0,j=0,y,d,c=-1; int v=0,r=0,sum=0; i++,n++,q
13、=b%m
傳的參數(shù)賦b,b>0?
輸出轉(zhuǎn)換結(jié)果
i=n
n
y
i--
結(jié)束
i>0
y
y
對b求余,賦給q
q=q+48
n
n
將q值轉(zhuǎn)換為十六進制補碼
入棧操作,對棧頂元素操作
圖 3.4為任意進制到十進制轉(zhuǎn)換流程圖
4 詳細設計
#include 14、h>
#define OK 1
#define ERROR 0
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef char Status;
typedef struct
{
int *base;
int *top;
int stacksize; //當前已分配的存儲空間,以元素為單元
}SqStack;
char s1[20];
char s2[10];
int InitStack(S 15、qStack &S) //構造一個空棧
{
S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
if(!S.base) //空棧的標志
return(ERROR);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
Status clearstack(SqStack &S) //清空棧
{
S.top=S.base;
return OK;
}
S 16、tatus Push(SqStack &S,int e) //壓棧(插入元素e為新的棧頂元素)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));
if(!S.base)return(OVERFLOW); //存儲分配失敗
S.top =S.base +S.stacksize ;
S.stacksize+=STACKINCREMENT;
}S.top=S.base;
S.top+ 17、+; //先插入數(shù)據(jù)元素,再移動棧頂指針
*S.top=e;
return OK;
}
char StackEmpty(SqStack *S) //判斷棧是否為空
{
if(S->top==S->base)
return OK;
else
return ERROR;}
int ANY_TEN(int n) //任意進制轉(zhuǎn)化為十進制
{
int i=0,j=0,y,d,c=-1;
int v=0,r=0,sum=0;
char t[20];
printf("請輸入您要轉(zhuǎn)化的數(shù):");
sca 18、nf("%s",&t);
printf("\n");
fflush(stdin);
while(t[j]!=\0)
{j++;}
for(i=0;t[i]!=\0;i++)
{ if((int)(t[i])>=48&&(int)(t[i])<=57||(t[i])>=A&&(int)(t[i])<=J);
else {
printf("輸入有誤! 請輸入數(shù)字: \n");
printf("請輸入您要轉(zhuǎn)化的數(shù):");
s 19、canf("%s",&t);
}
c++;
y=j-i-1;
if(t[i]<=9);
else
{
d=t[i];
t[i]=d-7;
}
r=(int)(t[i]-48)*pow( n,y);
sum=sum+r;
}
return sum;
}
void TEN__ANY(SqStack &S,int a,int m ) //十進制轉(zhuǎn)換為任意進制
{
int q,i=0,b,c=0,n= 20、0;
b=(int)a;
if(isdigit(b))
printf("輸入錯誤\n");
else{ while(b>0)
{i++;
n++;
q=b%m;
if(q>9)
q= toupper(q+55);
else
{q=q+48;}
Push(S,q);
b=b/m;
s1[i]=*S.top;
}
}
printf("最終轉(zhuǎn)換結(jié)果為:");
for(i=n;i>0;i--)
printf("%c",s1[i]);
}
int ANY_ANY(SqStack &S) 21、 //任意進制間的轉(zhuǎn)換
{
int m,z,n,sum;
printf("請輸入源進制和目標進制(2,8,10,16):");
scanf("%d",&n);
scanf("%d",&m);
printf("\n");
printf("將%d進制轉(zhuǎn)換為%d進制",n,m);
printf("\n");
printf("\n");
sum=ANY_TEN(n);
InitStack(S);
TEN__ANY( S, sum,m);
return(OK);
}
int men 22、u_select()
{
int c;
do
{
printf("\n");
printf("\t\t 2、8、10、16進制間的互相轉(zhuǎn)換\t\n\n\n");
printf("\t\t 1.進制轉(zhuǎn)換 \t\n\n");
printf("\t\t 0.謝謝使用\t\n\n");
printf("\t\t 請輸入你需要進行的操作1/0:\n\n\n ");
fflush(stdin);
scanf("%d",&c);
}while(c<0||c> 23、1);
return(c);
}
void main()
{
SqStack S;
int n,m;
float a;
for(;;)
{
switch (menu_select())
{
case 1: printf("\t\t\t 進制轉(zhuǎn)換\n\n");
ANY_ANY(S);
break;
case 0: printf("\t\t\t 謝謝使用!再見!:\n");
printf("\t\t\t");
exit(0);
}
24、
}
} 5 程序調(diào)試與測試
在vc++6.0運行界面如圖5.1所示:數(shù)制轉(zhuǎn)換函數(shù)調(diào)試結(jié)果截圖
圖5.1為數(shù)制轉(zhuǎn)換程序運行界面
5.1十進制轉(zhuǎn)換為任意進制,結(jié)果如圖5.2—5.5所示:
(1)輸入合法數(shù)據(jù):
圖5.2為十進制到二進制的轉(zhuǎn)換
圖5.3為十進制到八進制的轉(zhuǎn)換
圖5.4為十進制到十六進制的轉(zhuǎn)換
(2)輸入非法數(shù)據(jù):
圖5.5 輸入非法數(shù)據(jù)
5.2任意進制轉(zhuǎn)化為十進制,結(jié)果如圖5.6—5.9所示:
(1)輸入合法數(shù)據(jù):
圖5.6為二進制到十進制的轉(zhuǎn)換
圖5.7為八 25、進制到十進制的轉(zhuǎn)換
圖5.8為十六進制到十進制的轉(zhuǎn)換
(2)輸入非法數(shù)據(jù):
圖5.9對小數(shù)不能正確轉(zhuǎn)換
5.3任意進制間的轉(zhuǎn)換,結(jié)果如圖5.10—5.13所示:
(1)輸入合法數(shù)據(jù):
圖5.10為二進制到八進制的轉(zhuǎn)換
圖5.11為八進制到十六進制的轉(zhuǎn)換
圖5.12為十六進制到二進制的轉(zhuǎn)換
(2)輸入非法數(shù)據(jù):
圖 5.13 對非法數(shù)據(jù)不能正確判斷
5.4 程序運行結(jié)束,如圖5.14所示:退出界面結(jié)果截圖:
圖5.14為程序退出界面
總結(jié)
通過本次課程設計,提高了自己對于程序總體思路的把握,以及對程序的分析和理解。更能熟練的運用整型數(shù) 26、組進行取整求余從而進行進制間的轉(zhuǎn)換。能通過switch語句進行判斷選擇處理,使自己通過程序設計,真正的在實踐中把課本所學的知識熟練的運用。所完成的數(shù)制轉(zhuǎn)換器系統(tǒng)實現(xiàn)的二進制、八進制十六進制和十進制之間轉(zhuǎn)換等功能,除此之外不能實現(xiàn)小數(shù)的轉(zhuǎn)化問題、判斷對輸入數(shù)字的判斷是符合要求和對輸入不合法字符檢驗并提示的功能。
希望以后可以實現(xiàn)上述兩個問題,首先是改進程序,使其能實現(xiàn)小數(shù)的轉(zhuǎn)化,和和判斷對輸入數(shù)字的判斷是符合要求,對輸入不合法字符檢驗并提示的功能。
這次課程設計是我對c語言知識進行了系統(tǒng)的、有條理的復習,對許多知識點都加深了記憶。我了解到c語言的提高,通過編寫復雜的程序,這樣可以開闊思路,檢驗自己對各章節(jié)使用的靈活度,檢驗自己在學習中的漏洞。同時這次課程的制作,為我畢業(yè)設計的制作打下了堅定的基礎。
參考文獻
[1]嚴蔚敏 ,吳偉民 .數(shù)據(jù)結(jié)構(c語言版)[M] 北京: 清華大學出版社 2007
[2]羅建軍,朱丹軍,顧剛.C++程序設計教程(第2版)[M] 北京: 高等教育出版社 2007
[3]李虹,楊靜麗.C語言程序設計 [M] 南京: 南京大學出版社 2010
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025《增值稅法》高質(zhì)量發(fā)展的增值稅制度規(guī)范增值稅的征收和繳納
- 深入學習《中華人民共和國科學技術普及法》推進實現(xiàn)高水平科技自立自強推動經(jīng)濟發(fā)展和社會進步
- 激揚正氣淬煉本色踐行使命廉潔從政黨課
- 加強廉潔文化建設夯實廉政思想根基培育風清氣正的政治生態(tài)
- 深入學習2024《突發(fā)事件應對法》全文提高突發(fā)事件預防和應對能力規(guī)范突發(fā)事件應對活動保護人民生命財產(chǎn)安全
- 2023年四年級數(shù)學上冊第一輪單元滾動復習第10天平行四邊形和梯形作業(yè)課件新人教版
- 2023年四年級數(shù)學上冊第14單元階段性綜合復習作業(yè)課件新人教版
- 2023年四年級數(shù)學上冊易錯清單十五課件新人教版
- 2023年四年級數(shù)學上冊易錯清單七課件西師大版
- 2023年五年級數(shù)學下冊易錯清單六作業(yè)課件北師大版
- 2023年五年級數(shù)學下冊易錯清單二作業(yè)課件北師大版
- 2023年五年級數(shù)學下冊四分數(shù)的意義和性質(zhì)第10課時異分母分數(shù)的大小比較作業(yè)課件蘇教版
- 2023年五年級數(shù)學下冊周周練四作業(yè)課件北師大版
- 2023年五年級數(shù)學下冊六折線統(tǒng)計圖單元復習卡作業(yè)課件西師大版
- 2023年四年級數(shù)學上冊6除數(shù)是兩位數(shù)的除法單元易錯集錦一作業(yè)課件新人教版