版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rè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)以下功能:字符串簡單編碼字符串簡單解碼字符串改進(jìn)編碼字符串改進(jìn)解碼
5.解壓縮由命令行5.解壓縮由命令行compress生成的壓縮文件?!绢}目要求】為各項操作功能設(shè)計一個菜單。應(yīng)用程序運行后,先顯示這個菜單,然后用戶通過菜單項選擇希望進(jìn)行的操作項目;在第一,三個功能中,用戶輸入源文件名稱和目標(biāo)文件名稱,你的程序打開源文件,進(jìn)行編碼,結(jié)果放在目標(biāo)文件中,同時把結(jié)果顯示再屏幕上在第二,四個功能中,用戶輸入源文件名稱和目標(biāo)文件名稱,你的程序打開源文件,進(jìn)行解碼,結(jié)果放在目標(biāo)文件中,同時把結(jié)果顯示再屏幕上在功能5中,輸入壓縮文件名和解壓以后的文件名,直接解壓出結(jié)果文件?!据斎?輸出要求】應(yīng)用程序運行后,先顯示一個菜單,然后用戶根據(jù)需要選擇相應(yīng)的操作項目。進(jìn)入每個操作后,根據(jù)程序的提示輸入相應(yīng)的信息;要求用戶輸入數(shù)據(jù)時,要給出清晰、明確的提示信息,包括輸入的數(shù)據(jù)內(nèi)容、格式及結(jié)束方式等。課程設(shè)計正文一、 編碼解碼任務(wù)書主要功能概述編碼解碼任務(wù)書系統(tǒng)主要實現(xiàn)以下功能:1、 字符串簡單編碼。2、 字符串簡單解碼。3、 字符串改進(jìn)編碼。4、 字符串改進(jìn)解碼。5、 解壓縮由命令行compress生成的壓縮文件。6、 退出。【補充】執(zhí)行一個功能后,按enter鍵可以繼續(xù)選擇功能鍵,執(zhí)行下一個任務(wù)。在未退出的條件下,系統(tǒng)可以連續(xù)多次執(zhí)行上述的5個功能。二、 任務(wù)書基本要求分析和內(nèi)容描述【要求分析】(1) 為各項操作功能設(shè)計一個菜單。應(yīng)用程序運行后,先顯示這個菜單,然后用戶通過菜單項選擇希望進(jìn)行的操作項目;(2) 在第一,三個功能中,用戶輸入源文件名稱和目標(biāo)文件名稱,你的程序打開源文件,進(jìn)行編碼,結(jié)果放在目標(biāo)文件中,同時把結(jié)果顯示再屏幕上(3) 在第二,四個功能中,用戶輸入源文件名稱和目標(biāo)文件名稱,你的程序打開源文件,進(jìn)行解碼,結(jié)果放在目標(biāo)文件中,同時把結(jié)果顯示再屏幕上(4) 在功能5中,輸入壓縮文件名和解壓以后的文件名,直接解壓出結(jié)果文件?!境绦蛞蟆浚?) 程序正確。能夠嚴(yán)格實現(xiàn)任務(wù)書中描述的功能;(2) 界面友好。盡可能使界面友好、直觀、易操作;(3) 風(fēng)格友好。源程序應(yīng)有良好的編碼風(fēng)格,使程序容易閱讀。【輸入/輸出要求】(1) 應(yīng)用程序運行后,先顯示一個菜單,然后用戶根據(jù)需要選擇相應(yīng)的操作項目。進(jìn)入每個操作后,根據(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);}//打開目標(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("請選擇輸入選項[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ù)書明書有一個菜單。應(yīng)用程序運行后,會顯示這個菜單,然后用戶通過菜單項的相應(yīng)鍵選擇希望進(jìn)行的操作項日。(2)在第一,三個功能中,用戶選擇功能鍵1或功能鍵3后,按提示輸入源文件名稱和目標(biāo)文件名稱,程序?qū)⒋蜷_源文件,進(jìn)行編碼,結(jié)果放在目標(biāo)文件中,同時把結(jié)果顯示再屏幕上。(3) 在第二,四個功能中,用戶選擇功能鍵2或功能鍵4后,按提示輸入源文件名稱和目標(biāo)文件名稱,程序?qū)⒋蜷_源文件,進(jìn)行解碼,結(jié)果放在目標(biāo)文件中,同時把結(jié)果顯示再屏幕上。(4) 在功能5中,用戶選擇功能鍵5后,輸入壓縮文件名和解壓以后的文件名,直接解壓出結(jié)果文件。(5) 一個功能任務(wù)執(zhí)行后,按enter鍵可以繼續(xù)選擇,多次執(zhí)行各項功能。通過菜單項選擇功能鍵6則直接退出。六、設(shè)計日志及心得體會第一天閱讀題目,和同學(xué)交流了,自己理解,確定思路,編寫了菜單。第二天分塊編寫了字符串簡單編碼和簡單解碼。第三天分塊編寫了字符串改進(jìn)編碼和改進(jìn)解碼。第四天查詢compress原理編碼的資料,結(jié)合網(wǎng)絡(luò)課堂的幫助,完成了jy函數(shù)編寫。第五天將輸入源文件和目標(biāo)文件的函數(shù)獨立出來。第六天對程序進(jìn)行了部分修改。完成了《課程設(shè)計說明書》。經(jīng)過艱苦奮斗,課程設(shè)計終于完成了?;叵肫渲械倪^程,既有快樂又有煩惱。剛開始上課時,還在迷茫這門課程,想著《C語言程序設(shè)計》到底事學(xué)什么的,有什么用。不過,這些感受都是在對這門課程不了解的情況下產(chǎn)生的。后來慢慢的接觸多了,聽老師講的多了,了解多了,漸漸的產(chǎn)生了興趣。尤其是學(xué)到上機(jī)操作程序時,經(jīng)過編譯,調(diào)試和運行后,出現(xiàn)界面,當(dāng)時覺得很好奇,想真正的學(xué)好這門課程。通過一個學(xué)期的學(xué)習(xí),我掌握了基本知識。下學(xué)期的時候,才知道C語言還有課程設(shè)計。當(dāng)時有點心怯,感覺課程設(shè)計是很高深的東西,而我們學(xué)的東西很少,很零散,不知該怎么綜合到一起。剛看到課程設(shè)計題目時,“編碼解碼”任務(wù)書,感覺應(yīng)該是很難完成的題目。經(jīng)過認(rèn)真的閱讀和理解題目,逐漸有了大概的思路。和同一組的同學(xué)相互交流各自對題目的理解后,對任務(wù)書的編寫思路更清晰了。把大題目分為一個個小的功能,小函數(shù)編寫后,感覺就簡單多了。我把整個程序的思路理清后,就開始著手認(rèn)真的分塊的寫程序,一個函數(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冀少版八年級生物上冊專項突破5微生物的結(jié)構(gòu)特點及作用課件
- 電工電子教案整流電路
- 《回族維吾爾族民俗風(fēng)情》教案
- 中考化學(xué)專項復(fù)習(xí):根據(jù)化學(xué)方程式的簡單計算
- 電商平臺農(nóng)產(chǎn)品質(zhì)量承諾書
- 屋頂創(chuàng)業(yè)園區(qū)租賃協(xié)議
- 政府公務(wù)車輛租賃協(xié)議
- 交通運輸電子招投標(biāo)技術(shù)探討
- 企事業(yè)單位標(biāo)識牌施工合同
- 城市綠化管理員聘用樣本
- GB 253-2008煤油
- 投標(biāo)報價明顯低于采購預(yù)算價說明函
- 小學(xué)三年級下冊綜合實踐活動.奇妙的水果-(16張)ppt
- 介紹南充特色文化課件
- 中醫(yī)病歷書寫基本規(guī)范
- 擠出機(jī)螺桿組合原理和應(yīng)用教育課件
- 五年級上冊美術(shù)《船》-課件
- 《三黑和土地》ppt一
- 健康教育學(xué)【完整版】課件
- 工商企業(yè)管理專業(yè)案例分析報告
- 中外美術(shù)史年表
評論
0/150
提交評論