數(shù)制轉(zhuǎn)換課程設(shè)計(jì)說(shuō)明書(shū)_第1頁(yè)
數(shù)制轉(zhuǎn)換課程設(shè)計(jì)說(shuō)明書(shū)_第2頁(yè)
數(shù)制轉(zhuǎn)換課程設(shè)計(jì)說(shuō)明書(shū)_第3頁(yè)
數(shù)制轉(zhuǎn)換課程設(shè)計(jì)說(shuō)明書(shū)_第4頁(yè)
數(shù)制轉(zhuǎn)換課程設(shè)計(jì)說(shuō)明書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

專業(yè)基礎(chǔ)綜合課程設(shè)計(jì)設(shè)計(jì)說(shuō)明書(shū)進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn)學(xué)生姓名學(xué)號(hào)班級(jí)成績(jī)指導(dǎo)教師數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院2023年6月29日

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)評(píng)閱書(shū)題目進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn)學(xué)生姓名學(xué)號(hào)指導(dǎo)教師評(píng)語(yǔ)及成績(jī)成績(jī):教師署名:年月日答辯教師評(píng)語(yǔ)及成績(jī)成績(jī):教師署名:年月日教研室意見(jiàn)總成績(jī):室主任署名:年月日注:指導(dǎo)教師成績(jī)60%,答辯成績(jī)40%,總成績(jī)合成后按五級(jí)制記入。

課程設(shè)計(jì)任務(wù)書(shū)2023—2023學(xué)年第二學(xué)期專業(yè):計(jì)算機(jī)應(yīng)用技術(shù)學(xué)號(hào):姓名:課程設(shè)計(jì)名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)設(shè)計(jì)題目:進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn)完畢期限:自2023年6月18日至2023年6月29日共2周設(shè)計(jì)依據(jù)、規(guī)定及重要內(nèi)容(可另加附頁(yè)):計(jì)算機(jī)中數(shù)據(jù)的存儲(chǔ)形式是0,1代碼,也就是以二進(jìn)制的形式進(jìn)行存儲(chǔ),運(yùn)用c或vc++結(jié)合數(shù)據(jù)結(jié)構(gòu)等基礎(chǔ)知識(shí),按以下規(guī)定實(shí)現(xiàn)各種進(jìn)制的轉(zhuǎn)換。任務(wù)規(guī)定:1)闡述設(shè)計(jì)思想,畫(huà)出流程圖;2)能完畢用戶輸入的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制、八進(jìn)制、十六進(jìn)制及其他進(jìn)制數(shù),以及將其他任意進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制的功能;3)除十進(jìn)制認(rèn)為的其他進(jìn)制之間的互相轉(zhuǎn)換功能的實(shí)現(xiàn);4)將用戶的輸入及規(guī)定的結(jié)果能相應(yīng)打印輸出;5)應(yīng)用較好的界面設(shè)計(jì),說(shuō)明程序測(cè)試方法;6)按照格式規(guī)定完畢課設(shè)說(shuō)明書(shū)。設(shè)計(jì)規(guī)定:1)問(wèn)題分析和任務(wù)定義:根據(jù)設(shè)計(jì)題目的規(guī)定,充足地分析和理解問(wèn)題,明確問(wèn)題規(guī)定做什么?(而不是怎么做?)限制條件是什么?擬定問(wèn)題的輸入數(shù)據(jù)集合。2)邏輯設(shè)計(jì):對(duì)問(wèn)題描述中涉及的操作對(duì)象定義相應(yīng)的數(shù)據(jù)類型,并按照以數(shù)據(jù)結(jié)構(gòu)為中心的原則劃分模塊,定義主程序模塊和各抽象數(shù)據(jù)類型。邏輯設(shè)計(jì)的結(jié)果應(yīng)寫(xiě)出每個(gè)抽象數(shù)據(jù)類型的定義(涉及數(shù)據(jù)結(jié)構(gòu)的描述和每個(gè)基本操作的功能說(shuō)明),各個(gè)重要模塊的算法,并畫(huà)出模塊之間的調(diào)用關(guān)系圖;3)具體設(shè)計(jì):定義相應(yīng)的存儲(chǔ)結(jié)構(gòu)并寫(xiě)出各函數(shù)的偽碼算法。在這個(gè)過(guò)程中,要綜合考慮系統(tǒng)功能,使得系統(tǒng)結(jié)構(gòu)清楚、合理、簡(jiǎn)樸和易于調(diào)試,抽象數(shù)據(jù)類型的實(shí)現(xiàn)盡也許做到數(shù)據(jù)封裝,基本操作的規(guī)格說(shuō)明盡也許明確具體。具體設(shè)計(jì)的結(jié)果是對(duì)數(shù)據(jù)結(jié)構(gòu)和基本操作做出進(jìn)一步的求精,寫(xiě)出數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的類型定義,寫(xiě)出函數(shù)形式的算法框架;4)程序編碼:把具體設(shè)計(jì)的結(jié)果進(jìn)一步求精為程序設(shè)計(jì)語(yǔ)言程序。同時(shí)加入一些注解和斷言,使程序中邏輯概念清楚;5)程序調(diào)試與測(cè)試:采用自底向上,分模塊進(jìn)行,即先調(diào)試低層函數(shù)??梢约兪煺莆照{(diào)試工具的各種功能,設(shè)計(jì)測(cè)試數(shù)據(jù)擬定疑點(diǎn),通過(guò)修改程序來(lái)證實(shí)它或繞過(guò)它。調(diào)試對(duì)的后,認(rèn)真整理源程序及其注釋,形成格式和風(fēng)格良好的源程序清單和結(jié)果;6)結(jié)果分析:程序運(yùn)營(yíng)結(jié)果涉及對(duì)的的輸入及其輸出結(jié)果和具有錯(cuò)誤的輸入及其輸出結(jié)果。算法的時(shí)間、空間復(fù)雜性分析;7)編寫(xiě)課程設(shè)計(jì)報(bào)告;以上規(guī)定中前三個(gè)階段的任務(wù)完畢后,先將設(shè)計(jì)說(shuō)明數(shù)的草稿交指導(dǎo)老師面審,審查合格后方可進(jìn)入后續(xù)階段的工作。設(shè)計(jì)工作結(jié)束后,經(jīng)指導(dǎo)老師驗(yàn)收合格后將設(shè)計(jì)說(shuō)明書(shū)打印裝訂,并進(jìn)行答辯。指導(dǎo)教師(簽字):教研室主任(簽字):批準(zhǔn)日期:年月日摘要:本次課程設(shè)計(jì)設(shè)計(jì)了一個(gè)任意進(jìn)制之間轉(zhuǎn)換的軟件程序系統(tǒng),開(kāi)發(fā)本系統(tǒng),解決任意進(jìn)制之間的互相轉(zhuǎn)換,系統(tǒng)重要有以下幾個(gè)模塊:任意進(jìn)制轉(zhuǎn)換為十進(jìn)制、十進(jìn)制轉(zhuǎn)換為任意進(jìn)制以及兩者組合實(shí)現(xiàn)任意進(jìn)制間的互相轉(zhuǎn)換。本軟件程序系統(tǒng)在windows2023/XP系統(tǒng)下,以MicrosoftVisualC++6.0為運(yùn)營(yíng)軟件環(huán)境,采用C/C++語(yǔ)言進(jìn)行編寫(xiě),操作簡(jiǎn)樸明了,實(shí)際解決各進(jìn)制數(shù)之間的轉(zhuǎn)換。

目錄1課題描述……………12問(wèn)題分析和任務(wù)定義………………23邏輯設(shè)計(jì)……………34具體設(shè)計(jì)……………75程序調(diào)試與測(cè)試…………………105.1十進(jìn)制轉(zhuǎn)換為任意進(jìn)制………………105.2任意進(jìn)制轉(zhuǎn)化為十進(jìn)制………………115.3任意進(jìn)制間的轉(zhuǎn)換……………………12總結(jié)…………………18參考文獻(xiàn)……………19

1課題描述在計(jì)算機(jī)內(nèi)部,數(shù)據(jù)是以二進(jìn)制表達(dá)的,而人們習(xí)慣上使用的是十進(jìn)制數(shù),所以計(jì)算機(jī)從我們這里接受到十進(jìn)制數(shù)后,要通過(guò)翻譯,把十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)才干進(jìn)行解決,該系統(tǒng)可以根據(jù)用戶的規(guī)定,用C語(yǔ)言來(lái)編寫(xiě)這個(gè)程序,實(shí)現(xiàn)二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制之間的互相轉(zhuǎn)化,以及任意進(jìn)制間的互相轉(zhuǎn)換。系統(tǒng)開(kāi)發(fā)基于Windows2023/Xp平臺(tái),以VisualC++6.0等作為開(kāi)發(fā)工具。

2問(wèn)題分析和任務(wù)定義數(shù)制轉(zhuǎn)換程序是規(guī)定任意兩種數(shù)間的互相轉(zhuǎn)化,本次課程設(shè)計(jì)以任意進(jìn)制間轉(zhuǎn)換為中心實(shí)現(xiàn)二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制、十八進(jìn)制之間的互相轉(zhuǎn)化。其轉(zhuǎn)換方式大體相同,從低進(jìn)制數(shù)向高進(jìn)制數(shù)轉(zhuǎn)換進(jìn)行乘數(shù)累加,反之則逐步求余,最終進(jìn)行分布計(jì)算得到想要的結(jié)果。本次系統(tǒng)程序,重要有兩大模塊組成,即任意進(jìn)制轉(zhuǎn)換為十進(jìn)制、十進(jìn)制轉(zhuǎn)換為任意進(jìn)制,這兩部分共同組成了對(duì)任意進(jìn)制數(shù)的轉(zhuǎn)換的實(shí)現(xiàn),通過(guò)菜單選擇,讓用戶實(shí)現(xiàn)自己想要的結(jié)果。最后打印輸出結(jié)果。

3邏輯設(shè)計(jì)數(shù)值轉(zhuǎn)換轉(zhuǎn)換系統(tǒng),涉及八個(gè)子函數(shù)模塊,其中菜單函數(shù)模塊定義為整型,其余字符轉(zhuǎn)換函數(shù)解決模塊都根據(jù)函數(shù)所需定義數(shù)據(jù)類型。數(shù)制轉(zhuǎn)換解決系統(tǒng)中用棧來(lái)儲(chǔ)存處十進(jìn)制以外的數(shù),將一個(gè)指定進(jìn)制的數(shù),從低到高一位一位取出,并計(jì)算出每位的十進(jìn)制值,然后乘以其數(shù)基的特定冪指數(shù),得出這一位數(shù)的十進(jìn)制值,將所有各位的十進(jìn)制值相加得出這個(gè)數(shù)的十進(jìn)制值,然后再將該十進(jìn)制數(shù)轉(zhuǎn)換為指定數(shù)制的數(shù),此過(guò)程采用求余法進(jìn)行,用這個(gè)十進(jìn)制數(shù)作為被除數(shù),用指定的數(shù)基作除數(shù),連續(xù)求余,得出的余數(shù)依由個(gè)位到十位等的順序組成新數(shù),即得指定數(shù)制的數(shù)。邏輯設(shè)計(jì)如圖3.1所示。結(jié)束結(jié)束主菜單始開(kāi)數(shù)函擇選退出程序進(jìn)制轉(zhuǎn)換返回主菜單任意進(jìn)制之間任意進(jìn)制到十十到任意進(jìn)制圖3.1設(shè)計(jì)思想流程圖3.1程序流程圖(1)主函數(shù)main()流程圖,如圖3.2所示主菜單始開(kāi)主菜單始開(kāi)作操擇選0操作1操作十到任意進(jìn)制任意進(jìn)制到十任意進(jìn)制之間結(jié)束(2)十進(jìn)制轉(zhuǎn)換為任意進(jìn)制流程圖,如圖3.3所示開(kāi)始開(kāi)始intq,i=0,b,c=0,n=0;傳的參數(shù)賦b,b>0?i++對(duì)b求余,賦給qq=q+48將q值轉(zhuǎn)換為十六進(jìn)制補(bǔ)碼壓棧操作,調(diào)用入棧函數(shù)求商操作,將商賦給bi=ni>0輸出轉(zhuǎn)換結(jié)果i--結(jié)束nnnyyy判斷b是否為要轉(zhuǎn)換的數(shù)字類型y重新輸入n圖3.3為十進(jìn)制到任意進(jìn)制轉(zhuǎn)換流程圖(3)任意進(jìn)制到十進(jìn)制的轉(zhuǎn)換,如圖3.4所示開(kāi)始開(kāi)始inti=0,j=0,y,d,c=-1;intv=0,r=0,sum=0;inti=0,j=0,y,d,c=-1;intv=0,r=0,sum=0;i++,n++,q=b%m傳的參數(shù)賦b,b>0?輸出轉(zhuǎn)換結(jié)果i=nnyi--結(jié)束i>0yy對(duì)b求余,賦給qq=q+48nn將q值轉(zhuǎn)換為十六進(jìn)制補(bǔ)碼入棧操作,對(duì)棧頂元素操作i++,n++,q=b%m傳的參數(shù)賦b,b>0?輸出轉(zhuǎn)換結(jié)果i=nnyi--結(jié)束i>0yy對(duì)b求余,賦給qq=q+48nn將q值轉(zhuǎn)換為十六進(jìn)制補(bǔ)碼入棧操作,對(duì)棧頂元素操作圖3.4為任意進(jìn)制到十進(jìn)制轉(zhuǎn)換流程圖4具體設(shè)計(jì)#include<stdio.h>#include<stdlib.h>#include<math.h>#include<ctype.h>#include<process.h>#include<malloc.h>#include<string.h>#defineOK1#defineERROR0#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT10typedefcharStatus;typedefstruct{ int*base;int*top; intstacksize;//當(dāng)前已分派的存儲(chǔ)空間,以元素為單元}SqStack;chars1[20];chars2[10];intInitStack(SqStack&S)//構(gòu)造一個(gè)空棧{ S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int)); if(!S.base)//空棧的標(biāo)志return(ERROR); S.top=S.base; S.stacksize=STACK_INIT_SIZE; returnOK;} Statusclearstack(SqStack&S)//清空棧{ S.top=S.base; returnOK;}StatusPush(SqStack&S,inte)//壓棧(插入元素e為新的棧頂元素){if(S.top-S.base>=S.stacksize) { S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int)); if(!S.base)return(OVERFLOW);//存儲(chǔ)分派失敗 S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; }S.top=S.base; S.top++; //先插入數(shù)據(jù)元素,再移動(dòng)棧頂指針 *S.top=e; returnOK;}charStackEmpty(SqStack*S)//判斷棧是否為空{(diào)if(S->top==S->base)returnOK;elsereturnERROR;}intANY_TEN(intn)//任意進(jìn)制轉(zhuǎn)化為十進(jìn)制{ inti=0,j=0,y,d,c=-1;intv=0,r=0,sum=0; chart[20];printf("請(qǐng)輸入您要轉(zhuǎn)化的數(shù):");scanf("%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("輸入有誤!請(qǐng)輸入數(shù)字:\n"); printf("請(qǐng)輸入您要轉(zhuǎn)化的數(shù):");scanf("%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; } returnsum;}voidTEN__ANY(SqStack&S,inta,intm)//十進(jìn)制轉(zhuǎn)換為任意進(jìn)制{intq,i=0,b,c=0,n=0; b=(int)a; if(isdigit(b)) printf("輸入錯(cuò)誤\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]);}intANY_ANY(SqStack&S)//任意進(jìn)制間的轉(zhuǎn)換{ intm,z,n,sum; printf("請(qǐng)輸入源進(jìn)制和目的進(jìn)制(2,8,10,16):");scanf("%d",&n);scanf("%d",&m);printf("\n");printf("將%d進(jìn)制轉(zhuǎn)換為%d進(jìn)制",n,m); printf("\n");printf("\n"); sum=ANY_TEN(n); InitStack(S); TEN__ANY(S,sum,m); return(OK);}intmenu_select(){ intc;do{printf("\n");printf("\t\t2、8、10、16進(jìn)制間的互相轉(zhuǎn)換\t\n\n\n");printf("\t\t1.進(jìn)制轉(zhuǎn)換\t\n\n");printf("\t\t0.謝謝使用\t\n\n");printf("\t\t請(qǐng)輸入你需要進(jìn)行的操作1/0:\n\n\n");fflush(stdin);scanf("%d",&c);}while(c<0||c>1);return(c);}voidmain(){SqStackS;intn,m;floata;for(;;){switch(menu_select()) {case1:printf("\t\t\t進(jìn)制轉(zhuǎn)換\n\n");ANY_ANY(S); break;case0:printf("\t\t\t謝謝使用!再見(jiàn)!:\n"); printf("\t\t\t"); exit(0); } }}

5程序調(diào)試與測(cè)試在vc++6.0運(yùn)營(yíng)界面如圖5.1所示:數(shù)制轉(zhuǎn)換函數(shù)調(diào)試結(jié)果截圖圖5.1為數(shù)制轉(zhuǎn)換程序運(yùn)營(yíng)界面5.1十進(jìn)制轉(zhuǎn)換為任意進(jìn)制,結(jié)果如圖5.2—5.5所示:(1)輸入合法數(shù)據(jù):圖5.2為十進(jìn)制到二進(jìn)制的轉(zhuǎn)換圖5.3為十進(jìn)制到八進(jìn)制的轉(zhuǎn)換圖5.4為十進(jìn)制到十六進(jìn)制的轉(zhuǎn)換(2)輸入非法數(shù)據(jù):圖5.5輸入非法數(shù)據(jù)5.2任意進(jìn)制轉(zhuǎn)化為十進(jìn)制,結(jié)果如圖5.6—5.9所示:(1)輸入合法數(shù)據(jù):圖5.6為二進(jìn)制到十進(jìn)制的轉(zhuǎn)換圖5.7為八進(jìn)制到十進(jìn)制的轉(zhuǎn)換圖5.8為十六進(jìn)制到十進(jìn)制的轉(zhuǎn)換

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論