




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
序 學(xué)號11417214使程『計設(shè)計課程名稱: C語言課程設(shè)計題目: 編碼解碼 學(xué)生姓名: 劉塏 學(xué)院(系):信息學(xué)院專業(yè)班級:自動化112指導(dǎo)教師:周天彤專業(yè)技術(shù)職務(wù):設(shè)計時間:2012年6月11日2012年6月19日目錄1、 編碼解碼任務(wù)書2、 課程設(shè)計正文(1) 任務(wù)主要功能概述(2) 任務(wù)書基本要求分析和內(nèi)容描述(3) 系統(tǒng)的功能結(jié)構(gòu)框圖(4) C語言程序代碼(5) 系統(tǒng)使用說明書3、 課程設(shè)計日志及心得體會編碼解碼任務(wù)書一、 目的要求本課程設(shè)計任務(wù)的目的是要求學(xué)生按照分析、設(shè)計、編碼、調(diào)試和測試的軟件開發(fā)過程獨立完成一個簡單的數(shù)據(jù)壓縮解壓系統(tǒng),并能最終實現(xiàn)本系統(tǒng)的功能要求。二、 功能要求【題目描述】在壓縮算法中,有一種算法叫做游程壓縮算法,其算法是如果遇到多個連續(xù)相同的字節(jié),就先記錄該字節(jié)的連續(xù)的個數(shù),然后再記錄該字節(jié)。例如字符串AAABBCCCCCCAAA壓縮結(jié)果是3A2B6C3A,結(jié)果只需要8字節(jié)就存貯了原先14字節(jié)的內(nèi)容。不過這種方法有個缺點,如果單個元素較多的時候,反而會大于原先壓縮前的內(nèi)容。例如AAABBCDEF結(jié)果是3A2B1C1D1E1F,大于原串長。因此設(shè)置一個特殊字節(jié)@,如果有連續(xù)出現(xiàn)的字符,就用一個@表示下面是壓縮數(shù)據(jù),然后接著一個連續(xù)個數(shù),再是被壓縮的字節(jié)。例如第一個例子中,被壓縮成@3A@2B@6C@3A第二個例子,被壓縮成@3A@2BCDEF。實現(xiàn)這種算法。并且考慮如何改良該算法。Windows提供一個壓縮工具compress.exe,可用來壓縮大文件,可以通過VC自帶的解壓縮庫lzexpand.dll來解壓縮。你的程序需要實現(xiàn)以下功能:字符串簡單編碼字符串簡單解碼字符串改進編碼字符串改進解碼
5.解壓縮由命令行5.解壓縮由命令行compress生成的壓縮文件?!绢}目要求】為各項操作功能設(shè)計一個菜單。應(yīng)用程序運行后,先顯示這個菜單,然后用戶通過菜單項選擇希望進行的操作項目;在第一,三個功能中,用戶輸入源文件名稱和目標文件名稱,你的程序打開源文件,進行編碼,結(jié)果放在目標文件中,同時把結(jié)果顯示再屏幕上在第二,四個功能中,用戶輸入源文件名稱和目標文件名稱,你的程序打開源文件,進行解碼,結(jié)果放在目標文件中,同時把結(jié)果顯示再屏幕上在功能5中,輸入壓縮文件名和解壓以后的文件名,直接解壓出結(jié)果文件?!据斎?輸出要求】應(yīng)用程序運行后,先顯示一個菜單,然后用戶根據(jù)需要選擇相應(yīng)的操作項目。進入每個操作后,根據(jù)程序的提示輸入相應(yīng)的信息;要求用戶輸入數(shù)據(jù)時,要給出清晰、明確的提示信息,包括輸入的數(shù)據(jù)內(nèi)容、格式及結(jié)束方式等。課程設(shè)計正文一、 編碼解碼任務(wù)書主要功能概述編碼解碼任務(wù)書系統(tǒng)主要實現(xiàn)以下功能:1、 字符串簡單編碼。2、 字符串簡單解碼。3、 字符串改進編碼。4、 字符串改進解碼。5、 解壓縮由命令行compress生成的壓縮文件。6、 退出?!狙a充】執(zhí)行一個功能后,按enter鍵可以繼續(xù)選擇功能鍵,執(zhí)行下一個任務(wù)。在未退出的條件下,系統(tǒng)可以連續(xù)多次執(zhí)行上述的5個功能。二、 任務(wù)書基本要求分析和內(nèi)容描述【要求分析】(1) 為各項操作功能設(shè)計一個菜單。應(yīng)用程序運行后,先顯示這個菜單,然后用戶通過菜單項選擇希望進行的操作項目;(2) 在第一,三個功能中,用戶輸入源文件名稱和目標文件名稱,你的程序打開源文件,進行編碼,結(jié)果放在目標文件中,同時把結(jié)果顯示再屏幕上(3) 在第二,四個功能中,用戶輸入源文件名稱和目標文件名稱,你的程序打開源文件,進行解碼,結(jié)果放在目標文件中,同時把結(jié)果顯示再屏幕上(4) 在功能5中,輸入壓縮文件名和解壓以后的文件名,直接解壓出結(jié)果文件?!境绦蛞蟆浚?) 程序正確。能夠嚴格實現(xiàn)任務(wù)書中描述的功能;(2) 界面友好。盡可能使界面友好、直觀、易操作;(3) 風(fēng)格友好。源程序應(yīng)有良好的編碼風(fēng)格,使程序容易閱讀?!据斎?輸出要求】(1) 應(yīng)用程序運行后,先顯示一個菜單,然后用戶根據(jù)需要選擇相應(yīng)的操作項目。進入每個操作后,根據(jù)程序的提示輸入相應(yīng)的信息;(2) 要求用戶輸入數(shù)據(jù)時,要給出清晰、明確的提示信息,包括輸入的數(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);}//打開目標文件//voidfun2()(printf("輸入目標文件名:");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ù)。");}//字符串改進編碼//voidgjbm()(j=0;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;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ù)。");//字符串改進解碼//voidgjjm()(fun1();fun2();printf("改進解碼結(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("輸入目標文件名:");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、字符串改進編碼\n");printf("4、字符串改進解碼\n");printf("5、解壓縮由命令行compress生成的壓縮文件\n");printf("6、退出\n");printf("請選擇輸入選項[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("**********************字符串改進編碼**********************\n");gjbm();getchar();getchar();gotoloop;case'4':printf("**********************字符串改進解碼**********************\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ù)書明書有一個菜單。應(yīng)用程序運行后,會顯示這個菜單,然后用戶通過菜單項的相應(yīng)鍵選擇希望進行的操作項日。(2)在第一,三個功能中,用戶選擇功能鍵1或功能鍵3后,按提示輸入源文件名稱和目標文件名稱,程序?qū)⒋蜷_源文件,進行編碼,結(jié)果放在目標文件中,同時把結(jié)果顯示再屏幕上。(3) 在第二,四個功能中,用戶選擇功能鍵2或功能鍵4后,按提示輸入源文件名稱和目標文件名稱,程序?qū)⒋蜷_源文件,進行解碼,結(jié)果放在目標文件中,同時把結(jié)果顯示再屏幕上。(4) 在功能5中,用戶選擇功能鍵5后,輸入壓縮文件名和解壓以后的文件名,直接解壓出結(jié)果文件。(5) 一個功能任務(wù)執(zhí)行后,按enter鍵可以繼續(xù)選擇,多次執(zhí)行各項功能。通過菜單項選擇功能鍵6則直接退出。六、設(shè)計日志及心得體會第一天閱讀題目,和同學(xué)交流了,自己理解,確定思路,編寫了菜單。第二天分塊編寫了字符串簡單編碼和簡單解碼。第三天分塊編寫了字符串改進編碼和改進解碼。第四天查詢compress原理編碼的資料,結(jié)合網(wǎng)絡(luò)課堂的幫助,完成了jy函數(shù)編寫。第五天將輸入源文件和目標文件的函數(shù)獨立出來。第六天對程序進行了部分修改。完成了《課程設(shè)計說明書》。經(jīng)過艱苦奮斗,課程設(shè)計終于完成了?;叵肫渲械倪^程,既有快樂又有煩惱。剛開始上課時,還在迷茫這門課程,想著《C語言程序設(shè)計》到底事學(xué)什么的,有什么用。不過,這些感受都是在對這門課程不了解的情況下產(chǎn)生的。后來慢慢的接觸多了,聽老師講的多了,了解多了,漸漸的產(chǎn)生了興趣。尤其是學(xué)到上機操作程序時,經(jīng)過編譯,調(diào)試和運行后,出現(xiàn)界面,當時覺得很好奇,想真正的學(xué)好這門課程。通過一個學(xué)期的學(xué)習(xí),我掌握了基本知識。下學(xué)期的時候,才知道C語言還有課程設(shè)計。當時有點心怯,感覺課程設(shè)計是很高深的東西,而我們學(xué)的東西很少,很零散,不知該怎么綜合到一起。剛看到課程設(shè)計題目時,“編碼解碼”任務(wù)書,感覺應(yīng)該是很難完成的題目。經(jīng)過認真的閱讀和理解題目,逐漸有了大概的思路。和同一組的同學(xué)相互交流各自對題目的理解后,對任務(wù)書的編寫思路更清晰了。把大題目分為一個個小的功能,小函數(shù)編寫后,感覺就簡單多了。我把整個程序的思路理清后,就開始著手認真的分塊的寫程序,一個函數(shù)一個函數(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年岳陽職業(yè)技術(shù)學(xué)院高職單招語文2019-2024歷年真題考點試卷含答案解析
- 2025年山東文化產(chǎn)業(yè)職業(yè)學(xué)院高職單招語文2019-2024歷年真題考點試卷含答案解析
- 2025年安徽審計職業(yè)學(xué)院高職單招(數(shù)學(xué))歷年真題考點含答案解析
- 左心力衰竭護理查房
- 電腦不能放課件解決方案
- 簡約清新 手繪花卉 答辯模板
- 2023年下半年工作總結(jié)與計劃匯報
- 腦梗死病人鼻飼飲食護理
- 昆明市第二中學(xué)2024-2025學(xué)年高三第二次(5月)過關(guān)檢測試題物理試題含解析
- 上海外國語大學(xué)賢達經(jīng)濟人文學(xué)院《建設(shè)工程招投標與合同管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 檢驗科2025年度臨床指導(dǎo)計劃
- 小學(xué)部編版語文六年級下冊第四單元《綜合性學(xué)習(xí):奮斗的歷程》說課課件(含教學(xué)反思)
- GB/T 37864-2019生物樣本庫質(zhì)量和能力通用要求
- GB 19641-2015食品安全國家標準食用植物油料
- 教科版科學(xué)五年級下冊《生物與環(huán)境》單元教材解讀及教學(xué)建議
- 《雷雨》小學(xué)語文一等獎優(yōu)秀課件
- 腎性貧血護理課件
- 綠 化 苗 木 進 場 驗 收 單
- 4D現(xiàn)場管理培訓(xùn)ppt課件(PPT 45頁)
- 軍隊經(jīng)濟適用住房建設(shè)管理辦法
- 全州朝鮮族小學(xué)校小班化教育實施方案
評論
0/150
提交評論