


下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、二九 二一 學年第 二 學期應用技術學院課程設計報告書課程名稱:多媒體技術班 級:09 級網絡工程學 號:姓 名:指導教師:二 一 年 六 月目錄1. 需求分析 21.1 課程設計題目 21.2 課程設計要求 21.3 系統功能需求分析 22. 概要設計 33. 詳細設計 43.1 界面設計 43.2 行程編碼設計 114. 程序調試 144.1 源文件的壓縮 144.2 源文件的解壓 155. 總結 181. 需求分析1.1 課程設計題目信源與信道編 / 解碼練習1.2 課程設計要求1)要求利用程序設計軟件 (如 VC、Java、Matlab) 制作一個能完成信道編 / 解碼 (海明/CRC
2、碼) ,信源編/解碼(如行程編碼 )軟件。2)基本要求為編制軟件至少能根據所輸入的數據完成信源、信道編解碼,其中 信道編碼要求能產生 1-2 位隨機錯誤,且能糾 1 位錯,最后是能讀取 txt 文 件,或者直接讀取圖片來完成,如能對視頻完成則更佳。3)編寫的軟件編譯后能直接運行,驗證編 / 解碼效果,否則無效。1.3 系統功能需求分析? 操作環境(軟件、硬件及條件)Windws 9x/NT/2000/XP/2003NetBeans IDE 6.8? 系統功能此軟件是在 JAVA平臺下編寫的 ,能根據所輸入的數據完成信道 (海明碼)、 信源編解碼(行程編碼) ,其中信道編碼(海明碼)能產生 1
3、位隨機錯誤,且能 糾 1 位錯,最后是能直接讀取圖片或 txt 文件來完成。? 用戶操作流程編 碼:解 碼:2. 概要設計系統總體框架:3. 詳細設計本次課程設計中我主要負責界面設計和行程編碼,故作以下詳細介紹3.1 界面設計界面設計如圖 3-1 所示:圖 3-1 界面設計代碼如下: int rndChooser; byte targetBit; private int i; File f1,f2; byte mybyte1,mybyte2; public NewJFrame() initComponents(); this.setTitle("重慶大學 09 網絡工程 尹力 沈小波
4、 多媒體課程設計 "); SuppressWarnings("unchecked") ; private void initComponents() jPanel1 = = = = jLabel2 = jTextField2 = jButton2 = jButton4 = jButton5 = jPanel2 = jLabel3 = jLabel4 = jPanel3 = jLabel5 = jLabel6 = jLabel7 = jLabel8 = jButton3 = jLabel9 = 行程編碼文件 "); jButton1.setText(&qu
5、ot; 打開 "); jButton1ActionPerformed(evt););jLabel1.setText(" 源文件: ");jTextField1.setEnabled(false);jLabel2.setText(" 目標文件: "); jTextField2.setEnabled(false);jButton2.setText(" 保存 "); jButton2ActionPerformed(evt););jButton4.setText(" 開始編碼 "); jButton4Action
6、Performed(evt););jButton5.setText(" 開始解碼 "); jButton5ActionPerformed(evt););= Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addGap(38, 38, 38), jPanel1Layout.createSequentialGroup().addComponent(jLabel2)ELATED).addComponent(jTextField2) .addGroup(jPanel1Layout.createSeq
7、uentialGroup().addComponent(jLabel1)174, 103, Short.MAX_V ALUE).addComponent(jButton2).addComponent(jButton1) .addGap(50, 50, 50) .addComponent(jButton5).addComponent(jButton4).addContainerGap(98, Short.MAX_V ALUE);.addGroup(jPanel1Layout.createSequentialGroup().addGap(17, 17, 17).addComponent(jLabe
8、l1).addGap(7, 7, 7).addComponent(jLabel2).addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addComponent(jButton1).addComponent(jButton4).addComponent(jButton5).addComponent(jButton2).addContainerGap(11, Short.MAX_V ALUE);文件信息 ");40);jLabel3.setText(" 源文件大小: ");jLabel4.
9、setText(" 目標文件大小: ");= Alignment.LEADING).addGroup(jPanel2Layout.createSequentialGroup().addGap(29, 29, 29) 268, Short.MAX_V ALUE).addComponent(jLabel4).addGap(200, 200, 200);.addGroup(jPanel2Layout.createSequentialGroup().addComponent(jLabel3).addComponent(jLabel4).addContainerGap(17, Sho
10、rt.MAX_V ALUE);海明編碼信息 ");jLabel6.setText(" 字節二進制編碼: ");jLabel7.setText(" 字節海明編碼: ");jLabel8.setText(" 隨機出錯: ");jButton3.setText(" 校驗 "); jButton3ActionPerformed(evt););jLabel9.setText(" 糾正: ");= jPanel3.setLayout(jPanel3Layout);.addGap(26, 26, 2
11、6) 321, Short.MAX_V ALUE).addComponent(jLabel9).addGap(186, 186, 186)278, Short.MAX_V ALUE).addComponent(jButton3) .addGap(232, 232, 232).addGroup(jPanel3Layout.createSequentialGroup().addComponent(jLabel6).addComponent(jLabel5).addContainerGap(531, Short.MAX_V ALUE); jPanel3Layout.setVerticalGroup(
12、);pack();/ </editor-fold>/ TODO add your handling code here: JFileChooser chooser=new JFileChooser(); chooser.showOpenDialog(jLabel1); jTextField1.setText(chooser.getSelectedFile().getPath().toString(); jLabel3.setText(" 源文件大小: "+chooser.getSelectedFile().length()+" 字節 ");
13、f1=chooser.getSelectedFile();/ TODO add your handling code here:JFileChooser chooser1=new JFileChooser(); chooser1.showSaveDialog(jLabel1); f2=chooser1.getSelectedFile(); jTextField2.setText(chooser1.getSelectedFile().getPath().toString(); jLabel4.setText(" 目標文件大小: "+chooser1.getSelectedFi
14、le().length()+" 字節 "); jLabel8.setText(" 隨機出錯: "+myOp.revertAndCheckhammingCode()0);jLabel9.setText(" 糾正: "+myOp.revertAndCheckhammingCode()1);/ TODO add your handling code here:/* 調用編碼方法開始壓縮文件 */ if(jTextField1.getText()=null&&jTextField2.getText()=null)JOption
15、Pane.showMessageDialog(null, " 還沒有設置文件呢! ");elsetry mybyte1=myOp.importFile(f1); mybyte2=myOp.zipCode(mybyte1); myOp.exportFile(f2, mybyte2);jLabel4.setText(" 目標文件大小: "+f2.length()+" 字節 "); rndChooser=(int)(Math.random()*mybyte2.length); targetBit=mybyte2rndChooser;jLab
16、el5.setText(" 字節值: "+String.valueOf(targetBit);jLabel6.setText(" 字節二進制編碼: "+myOp.hammingCode(targetBit)0); jLabel7.setText(" 字節海明編碼: "+myOp.hammingCode(targetBit)1);catch(Exception e)/* 調用解碼碼方法開始解壓文件 */if(jTextField1.getText()=null&&jTextField2.getText()=null)JO
17、ptionPane.showMessageDialog(null, " 還沒有設置文件呢! ");elsetry mybyte1=myOp.importFile(f1); mybyte2=myOp.unzipCode(mybyte1); myOp.exportFile(f2, mybyte2);jLabel4.setText(" 目標文件大小: "+f2.length()+" 字節 "); rndChooser=(int)(Math.random()*mybyte2.length); targetBit=mybyte2rndChoos
18、er;jLabel5.setText(" 字節值: "+String.valueOf(targetBit);jLabel6.setText(" 字節二進制編碼: "+myOp.hammingCode(targetBit)0); jLabel7.setText(" 字節海明編碼: "+myOp.hammingCode(targetBit)1);catch(Exception e)public static void main(String args) public void run() new NewJFrame().setVisibl
19、e(true););3.2 行程編碼設計由界面中的開始解碼調用行程編碼的函數,其代碼如下:public static byte zipCode(byte mycode)byte tempArray=new byte10000000;/ 構建一個足夠大的臨時數組; int lengthArray=new int4;/ 臨時的存位數長度的數組 lengthArray0=-127;int i=1;int n=0;int mycount=1;doif(mycodei=mycodei-1)mycount+;i+;elsetempArrayn=mycodei-1;n+; if(mycount>127
20、)tempArrayn=(byte)lengthArray0;n+;if(lengthArray1=mycount/127)>127) lengthArray2=lengthArray1/127; lengthArray1=127;tempArrayn=(byte)lengthArray1; n+;tempArrayn=(byte)lengthArray2;else tempArrayn=(byte)lengthArray1; n+;tempArrayn=0;n+;lengthArray3=mycount%127; tempArrayn=(byte)lengthArray3;elsete
21、mpArrayn=(byte)mycount;mycount=1;n+;i+;while(i<mycode.length);if(i=mycode.length)tempArrayn=mycodei-1;n+;if(mycount>127)tempArrayn=(byte)lengthArray0;n+;if(lengthArray1=mycount/127)>127) lengthArray2=lengthArray1/127; lengthArray1=127; tempArrayn=(byte)lengthArray1; n+;tempArrayn=(byte)leng
22、thArray2;else tempArrayn=(byte)lengthArray1; n+;tempArrayn=0;n+;lengthArray3=mycount%127; tempArrayn=(byte)lengthArray3;else tempArrayn=(byte)mycount;byte result=new byten+1;/ 定義一個新數組,存放壓縮后實際大小的圖像文件 for(int count=0;count<result.length;count+)resultcount=tempArraycount;目前的字節是 : "+result.lengt
23、h);return result;public static byte unzipCode(byte myrecode)byte tempArray=new byte10000000;int lengthBit;int n=0;for(int i=0;i<myrecode.length;)if(myrecodei+1=-127)if(myrecodei+3=0) myrecodei+3=1; lengthBit=myrecodei+2*myrecodei+3*127+myrecodei+4;for(int l=0;l<lengthBit;l+) tempArrayn=myrecodei; n+;i+=5;elsefor(int m=0;m<myrecodei+1;m+) tempArrayn=myrecodei; n+;i+=2;byte result=new byten+1;/ 定義一個新數組,存放壓縮后實際大小的圖像文件 for(int count=0;count<resu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 研修伴我同行總結
- 財務部出納轉正述職報告
- 質量保證培訓
- 五年級上冊數學一課一練-第一單元 小數乘法 第6課時 解決問題(1)(含詳細解析)人教版
- 團隊協作能力增強計劃
- 孩子想象力培養的有效步驟
- 水務企業市場競爭力提升計劃
- 珠寶客服部半年工作總結
- 胎膜早破的護理常規
- 生產計劃中的庫存管理方法
- 污水池內防腐施工方案
- 關于對領導班子的意見和建議
- 火警火災處理標準流程
- TCCIAT 0043-2022 建筑工程滲漏治理技術規程
- 初中美術七年級下冊《第4課扮靚生活的花卉紋樣》課件
- 土建、裝飾、維修改造等零星工程施工組織方案設計技術標范文
- 宮頸癌病歷書寫模板
- summary-writing-概要寫作-優質課件
- 芭蕾基訓課程課時教案
- T∕CIC 049-2021 水泥窯用固體替代燃料
- 部編版高中語文必修下冊第八單元《單元導讀》教學設計
評論
0/150
提交評論