版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
序 學號11417214使程『計設計課程名稱: C語言課程設計題目: 編碼解碼 學生姓名: 劉塏 學院(系):信息學院專業(yè)班級:自動化112指導教師:周天彤專業(yè)技術(shù)職務:設計時間:2012年6月11日2012年6月19日目錄1、 編碼解碼任務書2、 課程設計正文(1) 任務主要功能概述(2) 任務書基本要求分析和內(nèi)容描述(3) 系統(tǒng)的功能結(jié)構(gòu)框圖(4) C語言程序代碼(5) 系統(tǒng)使用說明書3、 課程設計日志及心得體會編碼解碼任務書一、 目的要求本課程設計任務的目的是要求學生按照分析、設計、編碼、調(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,大于原串長。因此設置一個特殊字節(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生成的壓縮文件。【題目要求】為各項操作功能設計一個菜單。應用程序運行后,先顯示這個菜單,然后用戶通過菜單項選擇希望進行的操作項目;在第一,三個功能中,用戶輸入源文件名稱和目標文件名稱,你的程序打開源文件,進行編碼,結(jié)果放在目標文件中,同時把結(jié)果顯示再屏幕上在第二,四個功能中,用戶輸入源文件名稱和目標文件名稱,你的程序打開源文件,進行解碼,結(jié)果放在目標文件中,同時把結(jié)果顯示再屏幕上在功能5中,輸入壓縮文件名和解壓以后的文件名,直接解壓出結(jié)果文件?!据斎?輸出要求】應用程序運行后,先顯示一個菜單,然后用戶根據(jù)需要選擇相應的操作項目。進入每個操作后,根據(jù)程序的提示輸入相應的信息;要求用戶輸入數(shù)據(jù)時,要給出清晰、明確的提示信息,包括輸入的數(shù)據(jù)內(nèi)容、格式及結(jié)束方式等。課程設計正文一、 編碼解碼任務書主要功能概述編碼解碼任務書系統(tǒng)主要實現(xiàn)以下功能:1、 字符串簡單編碼。2、 字符串簡單解碼。3、 字符串改進編碼。4、 字符串改進解碼。5、 解壓縮由命令行compress生成的壓縮文件。6、 退出?!狙a充】執(zhí)行一個功能后,按enter鍵可以繼續(xù)選擇功能鍵,執(zhí)行下一個任務。在未退出的條件下,系統(tǒng)可以連續(xù)多次執(zhí)行上述的5個功能。二、 任務書基本要求分析和內(nèi)容描述【要求分析】(1) 為各項操作功能設計一個菜單。應用程序運行后,先顯示這個菜單,然后用戶通過菜單項選擇希望進行的操作項目;(2) 在第一,三個功能中,用戶輸入源文件名稱和目標文件名稱,你的程序打開源文件,進行編碼,結(jié)果放在目標文件中,同時把結(jié)果顯示再屏幕上(3) 在第二,四個功能中,用戶輸入源文件名稱和目標文件名稱,你的程序打開源文件,進行解碼,結(jié)果放在目標文件中,同時把結(jié)果顯示再屏幕上(4) 在功能5中,輸入壓縮文件名和解壓以后的文件名,直接解壓出結(jié)果文件。【程序要求】(1) 程序正確。能夠嚴格實現(xiàn)任務書中描述的功能;(2) 界面友好。盡可能使界面友好、直觀、易操作;(3) 風格友好。源程序應有良好的編碼風格,使程序容易閱讀?!据斎?輸出要求】(1) 應用程序運行后,先顯示一個菜單,然后用戶根據(jù)需要選擇相應的操作項目。進入每個操作后,根據(jù)程序的提示輸入相應的信息;(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) “編碼解碼”任務書明書有一個菜單。應用程序運行后,會顯示這個菜單,然后用戶通過菜單項的相應鍵選擇希望進行的操作項日。(2)在第一,三個功能中,用戶選擇功能鍵1或功能鍵3后,按提示輸入源文件名稱和目標文件名稱,程序?qū)⒋蜷_源文件,進行編碼,結(jié)果放在目標文件中,同時把結(jié)果顯示再屏幕上。(3) 在第二,四個功能中,用戶選擇功能鍵2或功能鍵4后,按提示輸入源文件名稱和目標文件名稱,程序?qū)⒋蜷_源文件,進行解碼,結(jié)果放在目標文件中,同時把結(jié)果顯示再屏幕上。(4) 在功能5中,用戶選擇功能鍵5后,輸入壓縮文件名和解壓以后的文件名,直接解壓出結(jié)果文件。(5) 一個功能任務執(zhí)行后,按enter鍵可以繼續(xù)選擇,多次執(zhí)行各項功能。通過菜單項選擇功能鍵6則直接退出。六、設計日志及心得體會第一天閱讀題目,和同學交流了,自己理解,確定思路,編寫了菜單。第二天分塊編寫了字符串簡單編碼和簡單解碼。第三天分塊編寫了字符串改進編碼和改進解碼。第四天查詢compress原理編碼的資料,結(jié)合網(wǎng)絡課堂的幫助,完成了jy函數(shù)編寫。第五天將輸入源文件和目標文件的函數(shù)獨立出來。第六天對程序進行了部分修改。完成了《課程設計說明書》。經(jīng)過艱苦奮斗,課程設計終于完成了?;叵肫渲械倪^程,既有快樂又有煩惱。剛開始上課時,還在迷茫這門課程,想著《C語言程序設計》到底事學什么的,有什么用。不過,這些感受都是在對這門課程不了解的情況下產(chǎn)生的。后來慢慢的接觸多了,聽老師講的多了,了解多了,漸漸的產(chǎn)生了興趣。尤其是學到上機操作程序時,經(jīng)過編譯,調(diào)試和運行后,出現(xiàn)界面,當時覺得很好奇,想真正的學好這門課程。通過一個學期的學習,我掌握了基本知識。下學期的時候,才知道C語言還有課程設計。當時有點心怯,感覺課程設計是很高深的東西,而我們學的東西很少,很零散,不知該怎么綜合到一起。剛看到課程設計題目時,“編碼解碼”任務書,感覺應該是很難完成的題目。經(jīng)過認真的閱讀和理解題目,逐漸有了大概的思路。和同一組的同學相互交流各自對題目的理解后,對任務書的編寫思路更清晰了。把大題目分為一個個小的功能,小函數(shù)編寫后,感覺就簡單多了。我把整個程序的思路理清后,就開始著手認真的分塊的寫程序,一個函數(shù)一個函數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 優(yōu)化中小金融機構(gòu)金融產(chǎn)品與服務結(jié)構(gòu)的策略
- 2024無人機買賣合同范本
- 2025年度環(huán)保工程咨詢與實施合同3篇
- 2024年:醫(yī)療設備簡易購銷協(xié)議3篇
- 2024特許連鎖經(jīng)營合同標的詳細規(guī)定
- 二零二五年度大型戶外廣告制作及安裝合同協(xié)議2篇
- 2024租賃房屋補充協(xié)議
- 2024新能源汽車融資租賃協(xié)議
- 二建建設工程法規(guī)及相關(guān)知識-二級建造師《建設工程法規(guī)及相關(guān)知識》黑鉆押題1129
- 二零二五年度工廠員工績效考核與勞動合同樣本3篇
- 機動車檢測站程序文件(根據(jù)補充要求修訂)
- 廣東省廣州市2022-2023學年高二上學期期末考試化學試題
- 人教版-六年級上數(shù)學-扇形統(tǒng)計圖單元測試(含答案)
- 2023年題工會基礎知識試題及答案
- 光伏運營維護管理方案
- 防沖撞升降柱安裝合同
- 專題21 現(xiàn)在分詞(五年真題+八省模擬+寫作升格)【含答案解析】
- 培訓學校銷售分析和總結(jié)
- 房產(chǎn)行業(yè)智慧房產(chǎn)交易與服務平臺
- 江蘇省徐州市2023-2024學年高一上學期1月期末抽測試題 物理 含解析
- 規(guī)培醫(yī)師年度述職報告
評論
0/150
提交評論