收藏 分销(赏)

多媒体技术课程设计报告.docx

上传人:xrp****65 文档编号:8877457 上传时间:2025-03-06 格式:DOCX 页数:19 大小:282.59KB
下载 相关 举报
多媒体技术课程设计报告.docx_第1页
第1页 / 共19页
多媒体技术课程设计报告.docx_第2页
第2页 / 共19页
点击查看更多>>
资源描述
二○○九 ~二○一○ 学年第 二 学期 应用技术学院 课程设计报告书 课程名称: 多媒体技术 班 级: 09级网络工程 学 号: 姓 名: 指导教师: 二○一○ 年 六 月 目录 1.需求分析 2 1.1课程设计题目 2 1.2课程设计要求 2 1.3系统功能需求分析 2 2.概要设计 3 3.详细设计 4 3.1界面设计 4 3.2行程编码设计 11 4.程序调试 14 4.1源文件的压缩 14 4.2源文件的解压 15 5.总结 18 1.需求分析 1.1课程设计题目 信源与信道编/解码练习。 1.2课程设计要求 1) 要求利用程序设计软件(如VC、Java、Matlab)制作一个能完成信道编/解码(海明/CRC码),信源编/解码(如行程编码)软件。 2) 基本要求为编制软件至少能根据所输入的数据完成信源、信道编解码,其中信道编码要求能产生1-2位随机错误,且能纠1位错,最后是能读取txt文件,或者直接读取图片来完成,如能对视频完成则更佳。 3) 编写的软件编译后能直接运行,验证编/解码效果,否则无效。 1.3系统功能需求分析 Ø 操作环境(软件、硬件及条件) Windws 9x/NT/2000/XP/2003 NetBeans IDE 6.8 Ø 系统功能 此软件是在JAVA平台下编写的 ,能根据所输入的数据完成信道(海明码)、信源编解码(行程编码),其中信道编码(海明码)能产生1位随机错误,且能纠1位错,最后是能直接读取图片或txt文件来完成。 Ø 用户操作流程 编 码: 打开(选择源文件) 保存(选择目标文件) 开始编码 校验 查看所存目标文件是否压缩成功 解 码: 打开(选择已压缩的文件) 保存(选择目标文件) 开始解码 查看所存目标文件是否解压成功 2.概要设计 系统总体框架: 压 缩 检 错 打开源文件 纠 错 得到源文件 解 压 3.详细设计 本次课程设计中我主要负责界面设计和行程编码,故作以下详细介绍。 3.1界面设计 界面设计如图3-1所示: 图3-1 界面设计代码如下: package DMTcode; import java.io.File; import javax.swing.JFileChooser; import javax.swing.JOptionPane; public class NewJFrame extends javax.swing.JFrame { int rndChooser; byte targetBit; private int i; File f1,f2; byte[] mybyte1,mybyte2; public NewJFrame() { initComponents(); this.setTitle("重庆大学 09网络工程 尹力 沈小波 多媒体课程设计"); } @SuppressWarnings("unchecked"); private void initComponents() { jPanel1 = new javax.swing.JPanel(); jButton1 = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); jTextField2 = new javax.swing.JTextField(); jButton2 = new javax.swing.JButton(); jButton4 = new javax.swing.JButton(); jButton5 = new javax.swing.JButton(); jPanel2 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jPanel3 = new javax.swing.JPanel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jButton3 = new javax.swing.JButton(); jLabel9 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("行程编码文件")); jButton1.setText("打开"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jLabel1.setText("源文件:"); jTextField1.setEnabled(false); jLabel2.setText("目标文件:"); jTextField2.setEnabled(false); jButton2.setText("保存"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); jButton4.setText("开始编码"); jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt); } }); jButton5.setText("开始解码"); jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton5ActionPerformed(evt); } }); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(38, 38, 38) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTextField2)) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 174, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 103, Short.MAX_VALUE) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jButton2) .addComponent(jButton1)) .addGap(50, 50, 50) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jButton5) .addComponent(jButton4)) .addContainerGap(98, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(17, 17, 17) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(7, 7, 7) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButton1) .addComponent(jButton4)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButton5) .addComponent(jButton2)))) .addContainerGap(11, Short.MAX_VALUE)) ); getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_START); jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(" 文件信息")); jPanel2.setPreferredSize(new java.awt.Dimension(442, 40)); jLabel3.setText("源文件大小:"); jLabel4.setText("目标文件大小:"); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(29, 29, 29) .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 268, Short.MAX_VALUE) .addComponent(jLabel4) .addGap(200, 200, 200)) ); jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(jLabel4)) .addContainerGap(17, Short.MAX_VALUE)) ); getContentPane().add(jPanel2, java.awt.BorderLayout.CENTER); jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("海明编码信息")); jLabel6.setText("字节二进制编码:"); jLabel7.setText("字节海明编码:"); jLabel8.setText("随机出错:"); jButton3.setText("校验"); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); jLabel9.setText("纠正:"); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addGap(26, 26, 26) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel7) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 321, Short.MAX_VALUE) .addComponent(jLabel9) .addGap(186, 186, 186)) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel8) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 278, Short.MAX_VALUE) .addComponent(jButton3) .addGap(232, 232, 232)) .addGroup(jPanel3Layout.createSequentialGroup() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel6) .addComponent(jLabel5)) .addContainerGap(531, Short.MAX_VALUE)))) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel5) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel6) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel7) .addComponent(jLabel9)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel8) .addComponent(jButton3)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); getContentPane().add(jPanel3, java.awt.BorderLayout.SOUTH); pack(); }// </editor-fold> private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: JFileChooser chooser=new JFileChooser(); chooser.showOpenDialog(jLabel1); jTextField1.setText(chooser.getSelectedFile().getPath().toString()); jLabel3.setText("源文件大小:"+chooser.getSelectedFile().length()+"字节"); f1=chooser.getSelectedFile(); } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // 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.getSelectedFile().length()+"字节"); } private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { jLabel8.setText("随机出错:"+myOp.revertAndCheckhammingCode()[0]); jLabel9.setText("纠正:"+myOp.revertAndCheckhammingCode()[1]); } private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: /*调用编码方法开始压缩文件*/ if(jTextField1.getText()==null&&jTextField2.getText()==null){ JOptionPane.showMessageDialog(null, "还没有设置文件呢!"); }else{ try{ mybyte1=myOp.importFile(f1); mybyte2=myOp.zipCode(mybyte1); myOp.exportFile(f2, mybyte2); jLabel4.setText("目标文件大小:"+f2.length()+"字节"); rndChooser=(int)(Math.random()*mybyte2.length); targetBit=mybyte2[rndChooser]; jLabel5.setText("字节值:"+String.valueOf(targetBit)); jLabel6.setText("字节二进制编码:"+myOp.hammingCode(targetBit)[0]); jLabel7.setText("字节海明编码:"+myOp.hammingCode(targetBit)[1]); }catch(Exception e){} } } private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) { /*调用解码码方法开始解压文件*/ if(jTextField1.getText()==null&&jTextField2.getText()==null){ JOptionPane.showMessageDialog(null, "还没有设置文件呢!"); }else{ try{ mybyte1=myOp.importFile(f1); mybyte2=myOp.unzipCode(mybyte1); myOp.exportFile(f2, mybyte2); jLabel4.setText("目标文件大小:"+
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服