多媒体技术课程设计报告

上传人:泽*** 文档编号:73043353 上传时间:2022-04-10 格式:DOC 页数:20 大小:591.50KB
收藏 版权申诉 举报 下载
多媒体技术课程设计报告_第1页
第1页 / 共20页
多媒体技术课程设计报告_第2页
第2页 / 共20页
多媒体技术课程设计报告_第3页
第3页 / 共20页
资源描述:

《多媒体技术课程设计报告》由会员分享,可在线阅读,更多相关《多媒体技术课程设计报告(20页珍藏版)》请在装配图网上搜索。

1、二九二一学年第二 学期应用技术学院课程设计报告书课程名称:多媒体技术班级:09级网络工程学号:姓名:指导教师:二一年六月目录1.需求分析 .21.1课程设计题目 .21.2课程设计要求 .21.3系统功能需求分析 .22.概要设计 .33.详细设计 .43.1界面设计 .43.2行程编码设计 .114.程序调试 .144.1源文件的压缩 .144.2源文件的解压 .165.总结.1911. 需求分析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解 码:打开(选择已压缩的文件)保存(选择目标文件)开始解码查看所存目标文件是否解压成功2. 概要设计系统总体框架:压缩打开源文件得到源文件解压检错纠错33. 详细设计本次课程设计中我主要负责界面设计和行程编码,故作以下详细介绍。3.1 界面设计界面设计如图3-1 所示:图 3-1界面设计代码如下:package DMTcode;import java.io.File;import javax.swing.JFileCho

4、oser;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() jPan

5、el1 = new javax.swing.JPanel();jButton1 = new javax.swing.JButton();jLabel1 = new javax.swing.JLabel();jTextField1 = new javax.swing.JTextField();4jLabel2 = new javax.swing.JLabel();jTextField2 = new javax.swing.JTextField();jButton2 = new javax.swing.JButton();jButton4 = new javax.swing.JButton();j

6、Button5 = 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

7、.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.Ac

8、tionListener() 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()

9、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( 开始解码 ); jBu

10、tton5.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton5ActionPerformed(evt);5);javax.swing.GroupLayoutjPanel1Layout=newjavax.swing.GroupLayout(jPanel1);jPanel1.setLayout(jPanel1Layout);jPanel1Layout.setHorizontalGroup(jPanel1La

11、yout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addGap(38, 38, 38).addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLa yout.Alignment.LEADING, false).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,jPanel1Layout.create

12、SequentialGroup().addComponent(jLabel2).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jTextField2).addGroup(jPanel1Layout.createSequentialGroup().addComponent(jLabel1).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jTextField1,java

13、x.swing.GroupLayout.PREFERRED_SIZE, 174, javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.REL ATED, 103, Short.MAX_VALUE).addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).addComponent(jButton2).addComponent(jButt

14、on1).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)

15、.addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup()6.addGap(17, 17, 17).addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent

16、(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(jTextFiel

17、d2,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).addC

18、omponent(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.Bord

19、erLayout.PAGE_START);jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(文件信息);jPanel2.setPreferredSize(new java.awt.Dimension(442, 40);jLabel3.setText(源文件大小:);jLabel4.setText(目标文件大小:);javax.swing.GroupLayoutjPanel2Layout=newjavax.swing.GroupLayout(jPanel2);jPanel2.setLayout(jPanel2Layout

20、);jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel2Layout.createSequentialGroup().addGap(29, 29, 29).addComponent(jLabel3).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.REL ATED, 268, Short.MAX_VALUE)7.addCompo

21、nent(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).

22、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.a

23、ddActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton3ActionPerformed(evt););jLabel9.setText(纠正: );javax.swing.GroupLayoutjPanel3Layout=newjavax.swing.GroupLayout(jPanel3);jPanel3.setLayout(jPanel3Layout);jPanel3Layout.setHorizontalG

24、roup(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(jLabel

25、7).addPreferredGap(javax.swing.LayoutStyle.ComponentPlace ment.RELATED, 321, Short.MAX_VALUE).addComponent(jLabel9).addGap(186, 186, 186).addGroup(jPanel3Layout.createSequentialGroup().addComponent(jLabel8).addPreferredGap(javax.swing.LayoutStyle.ComponentPlace8ment.RELATED, 278, Short.MAX_VALUE).ad

26、dComponent(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(jPanel3Layo

27、ut.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel3Layout.createSequentialGroup().addContainerGap().addComponent(jLabel5).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jLabel6).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacemen

28、t.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).add

29、Component(jLabel8).addComponent(jButton3).addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE);getContentPane().add(jPanel3, java.awt.BorderLayout.SOUTH); pack();/ private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) / TODO add your handling code here: JFileChooser

30、chooser=new JFileChooser();chooser.showOpenDialog(jLabel1); jTextField1.setText(chooser.getSelectedFile().getPath().toString();jLabel3.setText(源文件大小:+chooser.getSelectedFile().length()+字节);9f1=chooser.getSelectedFile();private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) / TODO add y

31、our 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 jButton3ActionPerforme

32、d(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

33、&jTextField2.getText()=null)JOptionPane.showMessageDialog(null, 还没有设置文件呢!);elsetrymybyte1=myOp.importFile(f1);mybyte2=myOp.zipCode(mybyte1);myOp.exportFile(f2, mybyte2);jLabel4.setText(目标文件大小:+f2.length()+字节);rndChooser=(int)(Math.random()*mybyte2.length);targetBit=mybyte2rndChooser;jLabel5.setText(

34、字节值: +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()=

35、null)JOptionPane.showMessageDialog(null, 还没有设置文件呢! ); elsetrymybyte1=myOp.importFile(f1);mybyte2=myOp.unzipCode(mybyte1);myOp.exportFile(f2, mybyte2);10jLabel4.setText(目标文件大小:+f2.length()+字节);rndChooser=(int)(Math.random()*mybyte2.length);targetBit=mybyte2rndChooser;jLabel5.setText(字节值: +String.valu

36、eOf(targetBit);jLabel6.setText(字节二进制编码:+myOp.hammingCode(targetBit)0);jLabel7.setText( 字节海明编码: +myOp.hammingCode(targetBit)1); catch(Exception e)public static void main(String args) java.awt.EventQueue.invokeLater(new Runnable() public void run() new NewJFrame().setVisible(true););private javax.swin

37、g.JButton jButton1;private javax.swing.JButton jButton2;private javax.swing.JButton jButton3;private javax.swing.JButton jButton4;private javax.swing.JButton jButton5;private javax.swing.JLabel jLabel1;private javax.swing.JLabel jLabel2;private javax.swing.JLabel jLabel3;private javax.swing.JLabel j

38、Label4;private javax.swing.JLabel jLabel5;private javax.swing.JLabel jLabel6;private javax.swing.JLabel jLabel7;private javax.swing.JLabel jLabel8;private javax.swing.JLabel jLabel9;private javax.swing.JPanel jPanel1;private javax.swing.JPanel jPanel2;private javax.swing.JPanel jPanel3;private javax

39、.swing.JTextField jTextField1;private javax.swing.JTextField jTextField2;3.2 行程编码设计由界面中的开始解码调用行程编码的函数,其代码如下:public static byte zipCode(byte mycode)byte tempArray=new byte10000000;/构建一个足够大的临时数组;int lengthArray=new int4;/临时的存位数长度的数组11lengthArray0=-127;int i=1;int n=0;int mycount=1;doif(mycodei=mycodei

40、-1)mycount+;i+;elsetempArrayn=mycodei-1;n+;if(mycount127)tempArrayn=(byte)lengthArray0;n+;if(lengthArray1=mycount/127)127)lengthArray2=lengthArray1/127;lengthArray1=127;tempArrayn=(byte)lengthArray1;n+;tempArrayn=(byte)lengthArray2;elsetempArrayn=(byte)lengthArray1;n+;tempArrayn=0;n+;lengthArray3=my

41、count%127;tempArrayn=(byte)lengthArray3;elsetempArrayn=(byte)mycount;mycount=1;n+;i+;while(i127)tempArrayn=(byte)lengthArray0;n+;if(lengthArray1=mycount/127)127)lengthArray2=lengthArray1/127;12lengthArray1=127;tempArrayn=(byte)lengthArray1;n+;tempArrayn=(byte)lengthArray2;elsetempArrayn=(byte)length

42、Array1;n+;tempArrayn=0;n+;lengthArray3=mycount%127;tempArrayn=(byte)lengthArray3;elsetempArrayn=(byte)mycount;byteresult=newbyten+1;/定义一个新数组,存放压缩后实际大小的图像文件for(int count=0;countresult.length;count+)resultcount=tempArraycount;System.out.println( 目前的字节是 : +result.length); return result;public static by

43、te unzipCode(byte myrecode)byte tempArray=new byte10000000;int lengthBit;int n=0;for(int i=0;imyrecode.length;)if(myrecodei+1=-127)if(myrecodei+3=0) myrecodei+3=1;lengthBit=myrecodei+2*myrecodei+3*127+myrecodei+4;for(int l=0;llengthBit;l+)tempArrayn=myrecodei;n+;i+=5;elsefor(int m=0;mmyrecodei+1;m+)

44、tempArrayn=myrecodei;n+;i+=2;13byte result=new byten+1;/定义一个新数组,存放压缩后实际大小的图像文件for(int count=0;countresult.length;count+)resultcount=tempArraycount;System.out.println(解压后目前的字节是: +result.length);JOptionPane.showMessageDialog(null, 解压成功! );return result;4. 程序调试我做的行程编码,只对其做了调试。程序调试步骤如下:4.1 源文件的压缩首先点击界面中

45、的打开按钮,选择123.bmp 图片,点击打开;如图4-1 所示:14图 4-1选择打开,然后点击界面保存按钮,在文件名中输入 321,点击保存;如图 4-2 所示:图 4-2点击界面的开始编码按钮;出现如图4-3 所示:图 4-3点击确定;出现如图4-4 所示:15图 4-4由文件的字节大小可以确定图片的压缩过程已经完成。4.2 源文件的解压点击界面的打开按钮,打开文件名为321 的文件;如图 4-5 所示:图 4-5点击打开,再点击界面的保存按钮,输入132.bmp;如图 4-6 所示:16图 4-6点击保存,如图4-7 ;点击界面的开始解码按钮,出现如图4-8 所示:图 4-7图 4-8由此解压过程结束。如图 4-9 所示 , 可知压缩文件 321,解压文件 132,和源文件 123 的属性,从而可17知设计成功,调试完成。图 4-9185. 总结通过本次多媒体课程设计,我深入学习了使用 Java 来设计程序界面,并且学会了调用行程编码函数。 在设计的过程中遇到了不少问题, 其中最难解决的问题就是在调用行程编码时,对 Java 掌握不熟悉,出现了链接问题,通过对程序的调试以及同组伙伴的帮助, 发现了问题的所在, 从而解决了问题; 最后在老师的帮助和同组伙伴的同心协力下, 我们顺利的完成了课程设计的内容, 我在此由衷的感谢老师和同组的伙伴。19

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!