版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
序 學(xué)號11417214使程『計(jì)設(shè)計(jì)課程名稱: C語言課程設(shè)計(jì)題目: 編碼解碼 學(xué)生姓名: 劉塏 學(xué)院(系):信息學(xué)院專業(yè)班級:自動化112指導(dǎo)教師:周天彤專業(yè)技術(shù)職務(wù):設(shè)計(jì)時(shí)間:2012年6月11日2012年6月19日目錄1、 編碼解碼任務(wù)書2、 課程設(shè)計(jì)正文(1) 任務(wù)主要功能概述(2) 任務(wù)書基本要求分析和內(nèi)容描述(3) 系統(tǒng)的功能結(jié)構(gòu)框圖(4) C語言程序代碼(5) 系統(tǒng)使用說明書3、 課程設(shè)計(jì)日志及心得體會編碼解碼任務(wù)書一、 目的要求本課程設(shè)計(jì)任務(wù)的目的是要求學(xué)生按照分析、設(shè)計(jì)、編碼、調(diào)試和測試的軟件開發(fā)過程獨(dú)立完成一個(gè)簡單的數(shù)據(jù)壓縮解壓系統(tǒng),并能最終實(shí)現(xiàn)本系統(tǒng)的功能要求。二、 功能要求【題目描述】在壓縮算法中,有一種算法叫做游程壓縮算法,其算法是如果遇到多個(gè)連續(xù)相同的字節(jié),就先記錄該字節(jié)的連續(xù)的個(gè)數(shù),然后再記錄該字節(jié)。例如字符串AAABBCCCCCCAAA壓縮結(jié)果是3A2B6C3A,結(jié)果只需要8字節(jié)就存貯了原先14字節(jié)的內(nèi)容。不過這種方法有個(gè)缺點(diǎn),如果單個(gè)元素較多的時(shí)候,反而會大于原先壓縮前的內(nèi)容。例如AAABBCDEF結(jié)果是3A2B1C1D1E1F,大于原串長。因此設(shè)置一個(gè)特殊字節(jié)@,如果有連續(xù)出現(xiàn)的字符,就用一個(gè)@表示下面是壓縮數(shù)據(jù),然后接著一個(gè)連續(xù)個(gè)數(shù),再是被壓縮的字節(jié)。例如第一個(gè)例子中,被壓縮成@3A@2B@6C@3A第二個(gè)例子,被壓縮成@3A@2BCDEF。實(shí)現(xiàn)這種算法。并且考慮如何改良該算法。Windows提供一個(gè)壓縮工具compress.exe,可用來壓縮大文件,可以通過VC自帶的解壓縮庫lzexpand.dll來解壓縮。你的程序需要實(shí)現(xiàn)以下功能:字符串簡單編碼字符串簡單解碼字符串改進(jìn)編碼字符串改進(jìn)解碼
5.解壓縮由命令行5.解壓縮由命令行compress生成的壓縮文件?!绢}目要求】為各項(xiàng)操作功能設(shè)計(jì)一個(gè)菜單。應(yīng)用程序運(yùn)行后,先顯示這個(gè)菜單,然后用戶通過菜單項(xiàng)選擇希望進(jìn)行的操作項(xiàng)目;在第一,三個(gè)功能中,用戶輸入源文件名稱和目標(biāo)文件名稱,你的程序打開源文件,進(jìn)行編碼,結(jié)果放在目標(biāo)文件中,同時(shí)把結(jié)果顯示再屏幕上在第二,四個(gè)功能中,用戶輸入源文件名稱和目標(biāo)文件名稱,你的程序打開源文件,進(jìn)行解碼,結(jié)果放在目標(biāo)文件中,同時(shí)把結(jié)果顯示再屏幕上在功能5中,輸入壓縮文件名和解壓以后的文件名,直接解壓出結(jié)果文件?!据斎?輸出要求】應(yīng)用程序運(yùn)行后,先顯示一個(gè)菜單,然后用戶根據(jù)需要選擇相應(yīng)的操作項(xiàng)目。進(jìn)入每個(gè)操作后,根據(jù)程序的提示輸入相應(yīng)的信息;要求用戶輸入數(shù)據(jù)時(shí),要給出清晰、明確的提示信息,包括輸入的數(shù)據(jù)內(nèi)容、格式及結(jié)束方式等。課程設(shè)計(jì)正文一、 編碼解碼任務(wù)書主要功能概述編碼解碼任務(wù)書系統(tǒng)主要實(shí)現(xiàn)以下功能:1、 字符串簡單編碼。2、 字符串簡單解碼。3、 字符串改進(jìn)編碼。4、 字符串改進(jìn)解碼。5、 解壓縮由命令行compress生成的壓縮文件。6、 退出。【補(bǔ)充】執(zhí)行一個(gè)功能后,按enter鍵可以繼續(xù)選擇功能鍵,執(zhí)行下一個(gè)任務(wù)。在未退出的條件下,系統(tǒng)可以連續(xù)多次執(zhí)行上述的5個(gè)功能。二、 任務(wù)書基本要求分析和內(nèi)容描述【要求分析】(1) 為各項(xiàng)操作功能設(shè)計(jì)一個(gè)菜單。應(yīng)用程序運(yùn)行后,先顯示這個(gè)菜單,然后用戶通過菜單項(xiàng)選擇希望進(jìn)行的操作項(xiàng)目;(2) 在第一,三個(gè)功能中,用戶輸入源文件名稱和目標(biāo)文件名稱,你的程序打開源文件,進(jìn)行編碼,結(jié)果放在目標(biāo)文件中,同時(shí)把結(jié)果顯示再屏幕上(3) 在第二,四個(gè)功能中,用戶輸入源文件名稱和目標(biāo)文件名稱,你的程序打開源文件,進(jìn)行解碼,結(jié)果放在目標(biāo)文件中,同時(shí)把結(jié)果顯示再屏幕上(4) 在功能5中,輸入壓縮文件名和解壓以后的文件名,直接解壓出結(jié)果文件?!境绦蛞蟆浚?) 程序正確。能夠嚴(yán)格實(shí)現(xiàn)任務(wù)書中描述的功能;(2) 界面友好。盡可能使界面友好、直觀、易操作;(3) 風(fēng)格友好。源程序應(yīng)有良好的編碼風(fēng)格,使程序容易閱讀。【輸入/輸出要求】(1) 應(yīng)用程序運(yùn)行后,先顯示一個(gè)菜單,然后用戶根據(jù)需要選擇相應(yīng)的操作項(xiàng)目。進(jìn)入每個(gè)操作后,根據(jù)程序的提示輸入相應(yīng)的信息;(2) 要求用戶輸入數(shù)據(jù)時(shí),要給出清晰、明確的提示信息,包括輸入的數(shù)據(jù)內(nèi)容、格式及結(jié)束方式等。三、系統(tǒng)的功能結(jié)構(gòu)框圖四、C語言程序代碼//頭文件//#include<windows.h>#include<lzexpand.h>#pragmacomment(lib,"lz32.lib")#include<stdio.h>#include<conio.h>#include<stdlib.h>//定義全局變量//FILE*fp1,*fp2;charfilename1[50],filename2[50],a[100],b[100];inti,j,k,t;//打開源文件并讀出字符串//voidfun1()(i=0;printf("輸入源文件名:");scanf("%s",filename1);if((fp1=fopen(filename1,"r"))==NULL)(printf("cannotopenthefile");exit(1);}while(!feof(fp1))(a[i]=fgetc(fp1);t=i;i++;}fclose(fp1);}//打開目標(biāo)文件//voidfun2()(printf("輸入目標(biāo)文件名:");scanf("%s",filename2);if((fp2=fopen(filename2,"w"))==NULL)(printf("cannotopenthefile");exit(1);}}//字符串簡單編碼//voidjdbm()(j=0;k=1;fun1();fun2();printf("簡單編碼結(jié)果為:");for(i=0;i<t;i++)(if(a[i+1]!=a[i]||k==9)(b[j]=k+'0';b[j+1]=a[i];j=j+2;printf("%d%c",k,a[i]);fprintf(fp2,"%d%c",k,a[i]);k=1;}elsek++;}fclose(fp2);printf("\n");printf("按enter鍵繼續(xù)。");}//字符串簡單解碼//voidjdjm()(fun1();fun2();printf("簡單解碼結(jié)果為:");for(i=0;i<t;i+=2)(for(j=0;j<a[i]-48;j++)(printf("%c",a[i+1]);fputc(a[i+1],fp2);}}fclose(fp2);printf("\n");printf("按enter鍵繼續(xù)。");}//字符串改進(jìn)編碼//voidgjbm()(j=0;fun1();fun2();printf("改進(jìn)編碼結(jié)果為:");for(i=0;i<t;i++)if(a[i+1]!=a[i]||k==9)b[j]=k+'0';b[j+1]=a[i];j=j+2;if(k==1)printf("%c",a[i]);fprintf(fp2,"%c",a[i]);elseprintf("@%d%c",k,a[i]);fprintf(fp2,"@%d%c",k,a[i]);k=1;elsek++;}fclose(fp2);printf("\n");printf("按enter鍵繼續(xù)。");//字符串改進(jìn)解碼//voidgjjm()(fun1();fun2();printf("改進(jìn)解碼結(jié)果為:");for(i=0;i<t;)(if(a[i]=='@')(for(j=0;j<a[i+1]-48;j++)(printf("%c",a[i+2]);fprintf(fp2,"%c",a[i+2]);}i+=3;}else(printf("%c",a[i]);fprintf(fp2,"%c",a[i]);i++;}}fclose(fp2);printf("\n");printf("按enter鍵繼續(xù)。");}//解壓縮由命令行compress生成的壓縮文件//voidjy()(OFSTRUCTofs,oft;inti,j;printf("輸入源文件名:");scanf("%s",filename1);printf("輸入目標(biāo)文件名:");scanf("%s",filename2);i=LZOpenFile(filename1,&ofs,OF_READ);j=LZOpenFile(filename2,&oft,OF_CREATE|OF_WRITE);LZCopy(i,j);LZClose(i);LZClose(j);printf("\n");printf("按enter鍵繼續(xù)。");}//main函數(shù)//voidmain()(charp;loop:system("cls");printf("1、字符串簡單編碼\n");printf("2、字符串簡單解碼\n");printf("3、字符串改進(jìn)編碼\n");printf("4、字符串改進(jìn)解碼\n");printf("5、解壓縮由命令行compress生成的壓縮文件\n");printf("6、退出\n");printf("請選擇輸入選項(xiàng)[1、2、3、4、5、6]:>");while(p=getchar())(switch(p)(case'1':printf("**********************字符串簡單編碼**********************\n");jdbm();getchar();getchar();gotoloop;case'2':printf("**********************字符串簡單解碼**********************\n");jdjm();getchar();getchar();gotoloop;case'3':printf("**********************字符串改進(jìn)編碼**********************\n");gjbm();getchar();getchar();gotoloop;case'4':printf("**********************字符串改進(jìn)解碼**********************\n");gjjm();getchar();getchar();gotoloop;case'5':printf("**********************解壓縮由命令彳亍compress生成的壓縮文件**********************\n");jy();getchar();getchar();gotoloop;case'6':printf("**********************退出****mmm\n");exit(1);}}gotoloop;五、系統(tǒng)使用說明書(1) “編碼解碼”任務(wù)書明書有一個(gè)菜單。應(yīng)用程序運(yùn)行后,會顯示這個(gè)菜單,然后用戶通過菜單項(xiàng)的相應(yīng)鍵選擇希望進(jìn)行的操作項(xiàng)日。(2)在第一,三個(gè)功能中,用戶選擇功能鍵1或功能鍵3后,按提示輸入源文件名稱和目標(biāo)文件名稱,程序?qū)⒋蜷_源文件,進(jìn)行編碼,結(jié)果放在目標(biāo)文件中,同時(shí)把結(jié)果顯示再屏幕上。(3) 在第二,四個(gè)功能中,用戶選擇功能鍵2或功能鍵4后,按提示輸入源文件名稱和目標(biāo)文件名稱,程序?qū)⒋蜷_源文件,進(jìn)行解碼,結(jié)果放在目標(biāo)文件中,同時(shí)把結(jié)果顯示再屏幕上。(4) 在功能5中,用戶選擇功能鍵5后,輸入壓縮文件名和解壓以后的文件名,直接解壓出結(jié)果文件。(5) 一個(gè)功能任務(wù)執(zhí)行后,按enter鍵可以繼續(xù)選擇,多次執(zhí)行各項(xiàng)功能。通過菜單項(xiàng)選擇功能鍵6則直接退出。六、設(shè)計(jì)日志及心得體會第一天閱讀題目,和同學(xué)交流了,自己理解,確定思路,編寫了菜單。第二天分塊編寫了字符串簡單編碼和簡單解碼。第三天分塊編寫了字符串改進(jìn)編碼和改進(jìn)解碼。第四天查詢compress原理編碼的資料,結(jié)合網(wǎng)絡(luò)課堂的幫助,完成了jy函數(shù)編寫。第五天將輸入源文件和目標(biāo)文件的函數(shù)獨(dú)立出來。第六天對程序進(jìn)行了部分修改。完成了《課程設(shè)計(jì)說明書》。經(jīng)過艱苦奮斗,課程設(shè)計(jì)終于完成了?;叵肫渲械倪^程,既有快樂又有煩惱。剛開始上課時(shí),還在迷茫這門課程,想著《C語言程序設(shè)計(jì)》到底事學(xué)什么的,有什么用。不過,這些感受都是在對這門課程不了解的情況下產(chǎn)生的。后來慢慢的接觸多了,聽老師講的多了,了解多了,漸漸的產(chǎn)生了興趣。尤其是學(xué)到上機(jī)操作程序時(shí),經(jīng)過編譯,調(diào)試和運(yùn)行后,出現(xiàn)界面,當(dāng)時(shí)覺得很好奇,想真正的學(xué)好這門課程。通過一個(gè)學(xué)期的學(xué)習(xí),我掌握了基本知識。下學(xué)期的時(shí)候,才知道C語言還有課程設(shè)計(jì)。當(dāng)時(shí)有點(diǎn)心怯,感覺課程設(shè)計(jì)是很高深的東西,而我們學(xué)的東西很少,很零散,不知該怎么綜合到一起。剛看到課程設(shè)計(jì)題目時(shí),“編碼解碼”任務(wù)書,感覺應(yīng)該是很難完成的題目。經(jīng)過認(rèn)真的閱讀和理解題目,逐漸有了大概的思路。和同一組的同學(xué)相互交流各自對題目的理解后,對任務(wù)書的編寫思路更清晰了。把大題目分為一個(gè)個(gè)小的功能,小函數(shù)編寫后,感覺就簡單多了。我把整個(gè)程序的思路理清后,就開始著手認(rèn)真的分塊的寫程序,一個(gè)函數(shù)一個(gè)函數(shù)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度虛擬現(xiàn)實(shí)技術(shù)項(xiàng)目制式勞動合同范本3篇
- 2024醫(yī)療器械銷售代理授權(quán)委托協(xié)議6篇
- 2024年員工職務(wù)發(fā)明及知識產(chǎn)權(quán)保護(hù)與許可使用協(xié)議3篇
- 2024年機(jī)械設(shè)備搬運(yùn)服務(wù)合同3篇
- 2024年度異地戀情侶婚約保障與解除合同3篇
- 2024年度運(yùn)輸公司貨車司機(jī)勞動合同范本(含保密條款)2篇
- 2024年度消防水源及消防栓維保合同終止書3篇
- 2024年度中小企業(yè)遠(yuǎn)程工作員工勞動合同范本與網(wǎng)絡(luò)管理3篇
- 2024年度單位二手房產(chǎn)交易合同書3篇
- 2024年度魚苗養(yǎng)殖資源保護(hù)與可持續(xù)利用合同3篇
- 四川省綿陽市2024年七年級上學(xué)期數(shù)學(xué)期末考試試卷【附答案】
- 建筑工程施工合同:游泳館建設(shè)
- DB31-T 1305-2021 未成年人家庭監(jiān)護(hù)能力評估指南
- 南京工程學(xué)院《C語言程序設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 中建中建機(jī)械頂管專項(xiàng)方案范本
- 機(jī)動車檢測站程序文件(根據(jù)補(bǔ)充要求修訂)
- 精神科患者首次風(fēng)險(xiǎn)評估單
- 2024-2025學(xué)年 數(shù)學(xué)二年級上冊冀教版期末測試卷(含答案)
- 防沖撞升降柱安裝合同
- 2024年下半年安徽文都控股集團(tuán)限公司公開招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 《光伏電站運(yùn)行與維護(hù)》試題及答案一
評論
0/150
提交評論