信息论与编码课程设计实验报告

信息论与编码课程设计实验报告
信息论与编码课程设计实验报告

计算机与信息学院

信息论与编码课程设计实验报告

专业班级

信息安全11-1班

学生姓名及学号

课程教学班号

0001 任课教师

实验指导教师

实验地点

逸夫科技楼507

2013~2014学年第一学期

实验一:对任意的符号序列(abbcccdddddeeeeee)进行n元Huffman的编码实现

一、问题描述

Huffman编码是一种常用的压缩编码方法,是Huffman与1952年为压缩文本文件建立的。它的基本原理是按照概率大小的顺序排列信源符号,并设法按逆顺序分配码字字长,使编码的码字为可辨识的。Huffman码是最佳码。

本次课程设计主要是实现对任意的符号序列进行n元Huffman的编码。

二、基本要求

本程序需要达到的要求是:由使用者输入信源符号(如:abbcccdddddeeeeee)、编码的元数(n)。后运行程序,程序输出每个符号的编码以及信源符号串的编码。再将编码结果输入,译码得出原序列。

三、测试数据

1.

输入符号序列为:abbcaddacaeffghgi 元数为:5

四、算法思想

本算法的n元编码过程实现如下:

(1)将q 个信源按概率分布大小依次排列;

(2)计算实际所需的信源符号数【根据公式:q =(n - 1)θ+ n】;

(3)用0,1,2,……,n-1分别代表概率最小的n个信源符号,并将这n个概率最小的信源符号合并成一个新的符号,并将这n个符号标记为true。使得标记为false的符号数为q-n+1 个,构成的新信源S1;

(4)把信源S1的符号仍按概率大小依递排列,并将其最后n 个概率最小的符号合并成一个符号,并分别用0,1,2,……,r-1码符号表示。这样就形成了标记为false的q-2(n-1)个符号组成的信源S2;

(5)依次继续下去,直至信源最后只剩下n个符号为止。将这最后n个信源符号分别用n 进制符号0,1,?,r-1 表示;

(6)最后,通过递归函数从最后一级缩减信源开始,向前返回,就得出各信源符号所对应的码符号序列,即相应的码字。

译码过程如下:

(1)将输入的字符串转换成char类型数组,取出第一个字符,作为起始字符;

(2)将取出的字符与编码后的编码结果进行比对。若一致则输出与编码结果对应的符号,

并将char数组中的下一个字符作为起始字符。否则取char数组的前两个进行比对,如此循环下去。

五、模块划分

1.计算实际需要的符号数

for(int i=0;i

times[i]=0;

for(int i=0;i

for(int j=0;j

if (sign[i]==get_sign[j])times[i]++;

}

//System.out.print(times[i]+" ");

}

for(int i=0;;){

if((real_sum=i*(n-1)+n)

else break;

}

2.建立Huffman结点

class HuffmanNode { //建立Huffman编码结点

public int frequency;

public boolean flag;

public char name;

public String code;

public HuffmanNode next;

HuffmanNode(char name,int frequency,boolean flag){

https://www.360docs.net/doc/3a8606956.html,=name;

this.frequency=frequency;

this.flag=flag;

this.code="";

this.next=null;

}

}

3. 对HUFFMAN结点数组进行排序

if(circle_times==1){

for(int i=0;i

for(int j=i+1;j

if(node_array[i].frequency>node_array[j].frequency){

HuffmanNode x;

x=node_array[i];

node_array[i]=node_array[j];

node_array[j]=x;

}

}

}

}

if(circle_times!=1){

int j=real_sum-1;

for(int i=real_sum-2;i>=0;i--){

if(node_array[i].frequency>node_array[j].frequency){

HuffmanNode x;

x=node_array[i];

node_array[i]=node_array[j];

node_array[j]=x;

j--;

}

}

}

4. 给出每个符号的码符号

for(int i=0;i

if(count2!=n&&node_array[i].flag==false){

String temp=null;

temp=Integer.toString(count2);

//System.out.println(temp);

node_array[i].code=temp;

//System.out.println(node_array[i].name+" "+node_array[i].code);

count2++;

}

}

5. 合并n个符号

node_array[real_sum]=new

HuffmanNode('*',combine,false);//建立新的huffman结点

for(int i=0;i

if(count!=n&&node_array[i].flag==false&&false_num!=n){

combine=combine+node_array[i].frequency;

count++;

node_array[i].flag=true;

node_array[i].next=node_array[real_sum];

//System.out.println(node_array[i].name+" "+node_array[i].next.frequency);

}

}

//System.out.println(combine);

node_array[real_sum].frequency=combine;

real_sum++;

6.输出码符号序列的递归程序

public void encode(HuffmanNode hn){

if(hn.next!=null&&hn.next.code!=null){

if(hn.next.flag!=false){

encode(hn.next);

hn.code=hn.next.code+hn.code;

hn.flag=false;

}

else

hn.code= hn.next.code+ hn.code;

//System.out.println(hn.code);

}

}

7.译码程序

class ButtonListener2 implements ActionListener{

public void actionPerformed(ActionEvent e){

String s = e.getActionCommand();

if("开始译码" == s){

ta.append("译码结果为:"+"\n");

String get_yima;

get_yima=tf3.getText();

char yima_array[];

yima_array=get_yima.toCharArray();

String str=String.valueOf(yima_array[0]);

for(int i=0;i

for(int j=0;j

//System.out.println(str);

if(str.equals(node_array[j].code)&&node_array[j].name!='*'){

ta.append(String.valueOf(node_array[j].name));

str="";

//System.out.println("0");

break;

}

}

if(i<=yima_array.length-2){

str=str+String.valueOf(yima_array[i+1]);

}

}

}

}

}

六、源程序

import javax.swing.*;

import java.awt.Color;

import java.awt.event.*;

class HuffmanNode { //建立Huffman编码结点

public int frequency;

public boolean flag;

public char name;

public String code;

public HuffmanNode next;

HuffmanNode(char name,int frequency,boolean flag){

https://www.360docs.net/doc/3a8606956.html,=name;

this.frequency=frequency;

this.flag=flag;

this.code="";

this.next=null;

}

}

class N_Huffman_Jframe extends JFrame{

static public int n;

static public int sum;

static public int real_sum;

static public char sign[]=new char[50];//存放输入的符号

static public int times[]=new int[50];

ButtonListener bl =new ButtonListener();

ButtonListener2 b2 =new ButtonListener2();

JTextField tf1=new JTextField();

JTextField tf2=new JTextField();

JTextField tf3=new JTextField();

JTextArea ta=new JTextArea();

///////////////////////////////////////////////////////////// N_Huffman_Jframe(String title){

super(title);

this.setSize(500,360);

this.setLocation(400, 200);

addWindowListener( // 窗口监听器

new WindowAdapter() {

public void windowClosing(WindowEvent e) { // 关闭所有窗体

System.exit(0);

}

}

);

JPanel p=new JPanel();

p.setLayout(null);

JLabel l1=new JLabel("请输入符号序列");

l1.setFont(new java.awt.Font("微软雅黑",4,15));

l1.setBounds(10, 13, 120,20);

tf1.setBounds(125, 10,350, 30);

JLabel l2=new JLabel("元数");

l2.setBounds(355, 58, 50,20);

l2.setFont(new java.awt.Font("微软雅黑",4,15));

tf2.setBounds(395,55,80, 30);

JButton ok=new JButton("确认");

ok.setBounds(355, 100, 120, 35);

ok.setBackground(Color.white);

ok.setFont(new java.awt.Font("微软雅黑",4,15));

ok.addActionListener(bl);

JLabel l4=new JLabel("需要译码序列");

l4.setFont(new java.awt.Font("微软雅黑",4,15));

l4.setBounds(10, 250, 90, 20);

tf3.setBounds(110, 245, 365, 30);

JButton yima=new JButton("开始译码");

yima.setBounds(170, 282, 200, 30);

yima.setBackground(Color.white);

yima.setFont(new java.awt.Font("微软雅黑",4,15));

yima.addActionListener(b2);

ta.setBounds(15, 50, 330, 180);

ta.setLineWrap(true);

JScrollPane jsp=new JScrollPane(ta);

jsp.setBounds(15, 50, 330, 180);

this.add(p);

p.add(l1);

p.add(tf1);

p.add(l2);

p.add(tf2);

p.add(ok);

p.add(l4);

p.add(tf3);

p.add(yima);

p.add(jsp);

this.setVisible(true);

}

//////////////////////////////////////////////递归函数public void encode(HuffmanNode hn){

if(hn.next!=null&&hn.next.code!=null){

if(hn.next.flag!=false){

encode(hn.next);

hn.code=hn.next.code+hn.code;

hn.flag=false;

}

else

hn.code= hn.next.code +hn.code;

//System.out.println(hn.code);

}

}

HuffmanNode node_array[]=new HuffmanNode[200];

class ButtonListener implements ActionListener{ public void actionPerformed(ActionEvent e){ String s = e.getActionCommand();

if("确认" == s){

ta.setText("");

String str=tf1.getText();

String str2=tf2.getText();

n=Integer.parseInt(str2);

char get_sign[]=str.toCharArray();

sign[0]=get_sign[0];

//////////////////////计算输入的符号数

int jj=0;//sum = 1;

for(int i=0;i

int t=0;

for(int m=0;m

if(sign[m]!=get_sign[i])t++;

}

if(t==jj){

sign[jj]=get_sign[i];

jj++;//符号数

}

}

sum=jj;

//System.out.println(sign);//sign 为符号数组

//System.out.println("符号数为:"+sum+"\n");

//////////////////////////////////////////////////////计算真实需要的符号数

for(int i=0;i

times[i]=0;

for(int i=0;i

for(int j=0;j

if (sign[i]==get_sign[j])times[i]++;

}

//System.out.print(times[i]+" ");

}

for(int i=0;;){

if((real_sum=i*(n-1)+n)

else break;

}

//System.out.println("\n"+"huffman编码需要的符号数:"+real_sum);

//System.out.println("");

///////////////////////////////////////////////////建立Huffman结点数组

int ii;

int cha=real_sum-sum;

for(ii=0;ii

node_array[ii]=new HuffmanNode('*',0,false);

}

for(;ii

node_array[ii]=new

HuffmanNode(sign[ii-cha],times[ii-cha],false);

}

/*for(int i=0;i

System.out.println(node_array[i].name+"

"+node_array[i].frequency+" "+node_array[i].flag);

}*/

////////////////////////////////////////////////////开始编码…………………………

int circle_times=1;//记录while循环的次数

while(true){

int count=0;

int count2=0;

int combine=0;//每次n个符号频率相加的值

int false_num=0;

for(int i=0;i

if(node_array[i].flag==false)

false_num++;

}

//////////////////////////////////////////对HUFFMAN 结点数组进行排序

if(circle_times==1){

for(int i=0;i

for(int j=i+1;j

if(node_array[i].frequency>node_array[j].frequency){

HuffmanNode x;

x=node_array[i];

node_array[i]=node_array[j];

node_array[j]=x;

}

}

}

}

if(circle_times!=1){

int j=real_sum-1;

for(int i=real_sum-2;i>=0;i--){

if(node_array[i].frequency>node_array[j].frequency){

HuffmanNode x;

x=node_array[i];

node_array[i]=node_array[j];

node_array[j]=x;

j--;

}

}

}

//输出排序

/*for(int i=0;i

System.out.println(node_array[i].name+"

"+node_array[i].frequency+" "+node_array[i].flag);

}

System.out.print("\n");*/

//////////////////////////////////////////给每个符号的码符号

for(int i=0;i

if(count2!=n&&node_array[i].flag==false){

String temp=null;

temp=Integer.toString(count2);

//System.out.println(temp);

node_array[i].code=temp;

//System.out.println(node_array[i].name+" "+node_array[i].code);

count2++;

}

}

//////////////////////////////////////// 合并n个符号!!!!!

node_array[real_sum]=new

HuffmanNode('*',combine,false);//建立新的huffman结点

for(int i=0;i

if(count!=n&&node_array[i].flag==false&&false_num!=n){

combine=combine+node_array[i].frequency;

count++;

node_array[i].flag=true;

node_array[i].next=node_array[real_sum];

//System.out.println(node_array[i].name+" "+node_array[i].next.frequency);

}

}

//System.out.println(combine);

node_array[real_sum].frequency=combine;

real_sum++;

/////////////////////////////////////////////////////

if(false_num==n)

break;

circle_times++;

}

///////////////////////////////////////////////////////// for(int i=0;i

node_array[i].flag=true;

for(int i=0;i

encode(node_array[i]);

}

//System.out.println("");

for(int i=0;i

if(node_array[i].name!='*'){

ta.append(node_array[i].name+"

"+node_array[i].code);

ta.append("\n");

}

}

/*for(int i=0;i

if(node_array[i].next!=null)

System.out.println(node_array[i].name+" "+node_array[i].next.frequency);

}*/

for(int i=0;i

for(int j=0;j

if(get_sign[i]==node_array[j].name){

ta.append(node_array[j].code);

}

}

}

ta.append("\n");

}

}

}

class ButtonListener2 implements ActionListener{ public void actionPerformed(ActionEvent e){

String s = e.getActionCommand();

if("开始译码" == s){

ta.append("译码结果为:"+"\n");

String get_yima;

get_yima=tf3.getText();

char yima_array[];

yima_array=get_yima.toCharArray();

String str=String.valueOf(yima_array[0]);

for(int i=0;i

for(int j=0;j

//System.out.println(str);

if(str.equals(node_array[j].code)&&node_array[j].name!='*'){

ta.append(String.valueOf(node_array[j].name));

str="";

//System.out.println("0");

break;

}

}

if(i<=yima_array.length-2){

str=str+String.valueOf(yima_array[i+1]);

}

}

}

}

}

}

public class n_huffman_encode {

public static void main(String args[]){

N_Huffman_Jframe nhj=new N_Huffman_Jframe("n元Huffman编码");

}

}

七、测试情况

本程序测试结果符合实际,正确的输出了输入信源符号的Huffman编码并正确译码。

实验三:对一灰度图像进行与Huffman结合的游程编码

的设计实现

一、问题描述

游程编码又称“运行长度编码”或“行程编码”,是一种统计编码,该编码属于无损压缩编码,是栅格数据压缩的重要编码方法。对于二值图有效。

游程编码的基本原理是:用一个符号值或串长代替具有相同值的连续符号,使符号长度少于原始数据的长度。只在各行或者各列数据的代码发生变化时,一次记录该代码及相同代码重复的个数,从而实现数据的压缩。

本次课程设计主要是实现对任意的符号序列进行游程编码,并将游程编码与Huffman 编码、等长编码进行结合。最后再将得到的编码结果进行译码,输出原来的符号序列。

二、基本要求

本程序需要达到的要求是:由使用者输入灰度图像矩阵的行数(m)、列(n)以及数灰度图像矩阵序列(如:5553444444332322)。后运行程序,程序输出与Huffman编码、等长编码结合的又称编码。再将编码结果输入,译码得出原矩阵。

三、测试数据

1.

输入行数:3 列数:3 灰度图像矩阵为:111222333

四、算法思想

本程序编码的算法思想如下:

(1)将输入的序列存入二维数组,并以行为单位记录符号出现的个数。

(2)将符号名以及出现次数记录到rlc_node数组;

(3)将rlc_node数组中的符号名进行Huffman编码,出现次数进行等长编码;

(4)输出结果。

本程序译码的算法思想如下:

(1)首先,声明一个标识,f=1时进行Huffman译码,其思想同实验一,译码之后将f=0;

(2)当f=0时,进行等长编码译码,将等长编码的二进制转换成十进制,输出结果并将f=1,如此循环下去,直到译完所有的码符号序列。

五、模块划分

1.建立游程编码结点

class rlc_node{

public int name;

public int times;

rlc_node(){

https://www.360docs.net/doc/3a8606956.html,=0;

this.times=0;

}

rlc_node(int name,int times){

https://www.360docs.net/doc/3a8606956.html,=name;

this.times=times;

}

}

2.建立等长编码结点

class dc_node{

public String name;

public int code_array[];

public String code;

public int length;

dc_node(){

this.code_array=new int[50];

https://www.360docs.net/doc/3a8606956.html,="";

this.length=0;

this.code="";

for(int i=0;i<50;i++)

this.code_array[i]=0;

}

}

3. 将矩阵存入二维数组

int a[][]=new int[m][n];//存放矩阵

int count1;

int ii;

int jj;

String get=tf4.getText();

char get1[]=get.toCharArray();

//System.out.println(get1.length);

for(count1=0;count1

for(ii=0;ii

for(jj=0;jj

String temp;

temp=String.valueOf(get1[count1]);

count1++;

a[ii][jj]=Integer.parseInt(temp);

//System.out.print(temp);

}

}

}

4. 形成数对

rlc_node node_array[]=new rlc_node[n*m];

for(int i=0;i

int count2=1;

for(int j=0;j

if(a[i][j]==a[i][j+1]){

count2++;

if(j+1==n-1){

node_array[num]=new

rlc_node(a[i][j],count2);

count2=1;

num++;

}

}

else{

node_array[num]=new

rlc_node(a[i][j],count2);

count2=1;

num++;

if(j+1==n-1){

node_array[num]=new

rlc_node(a[i][j+1],1);

count2=1;

num++;

}

}

}

}

5. 进行等长编码

for(int i=0;i

int p;

int q=Integer.parseInt(bb[i].name);

int j=0;

int count_length=0;

if(q!=0){

while(q!=0){

p=q%2;

bb[i].code_array[j]=p;

j++;

q=q/2;

count_length++;//确定等长编码编码长度

}

bb[i].length=count_length;

}

}

for(int i=0;i

if(max_length

max_length=bb[i].length;

}

for(int i=0;i

for(int j=max_length-1;j>=0;j--){

bb[i].code=bb[i].code+bb[i].code_array[j];

}

//System.out.println(bb[i].code);

}

6.进行译码

public void actionPerformed(ActionEvent e){

String s = e.getActionCommand();

if("开始译码"== s){

rlc_node yima_array[]=new rlc_node[num];

ta.append("译码如下:"+"\n");

char get_yima[];

get_yima=ta2.getText().toCharArray();

String str="";

int f=1;

rlc_node dd[]=new rlc_node[num];

int dd_num=0;

for(int i=0;i

if(f==1){//huffman

for(int j=0;j

if(str.equals(node_array_h[j].code)&&node_array_h[j].name!='*'){

ta.append(String.valueOf(node_array_h[j].name));

dd[dd_num]=new rlc_node();

dd[dd_num].name=Integer.parseInt(String.valueOf(node_array_h[j].n ame));

str="";

f=0;

i=i-1;

break;

}

}

if(i<=get_yima.length-2&&f==1){

str=str+String.valueOf(get_yima[i]);

}

}

else{

if(i

String str2="";

for(int j=0;j

str2=str2+get_yima[i];

i++;

}

i=i-1;

for(int j=0;j

if(str2.equals(cc[j].code)){

ta.append(cc[j].name);

dd[dd_num].times=Integer.parseInt(cc[j].name);

dd_num++;

break;

}

}

//i=i-1;

f=1;

}

}

}

ta.append("\n");

ta.append("矩阵为:");

for(int i=0;i

for(int j=0;j

ta.append(String.valueOf(dd[i].name));

}

}

ta.append("\n");

}

}

六、源程序

import java.awt.Color;

import java.awt.event.*;

import javax.swing.*;

class HuffmanNode2 {

public int frequency;

public boolean flag;

public char name;

public String code;

public HuffmanNode2 next;

HuffmanNode2(char name,int frequency,boolean flag){ https://www.360docs.net/doc/3a8606956.html,=name;

this.frequency=frequency;

this.flag=flag;

this.code="";

this.next=null;

}

}

class rlc_node{

public int name;

public int times;

rlc_node(){

https://www.360docs.net/doc/3a8606956.html,=0;

this.times=0;

课程设计实验报告

竭诚为您提供优质文档/双击可除 课程设计实验报告 篇一:课程设计(综合实验)报告格式 课程设计报告 (20XX--20XX年度第一学期) 名称:题目:院系:班级:学号:学生姓名:指导教师:设计周数: 成绩:日期:《软件设计与实践》课程设计计算机系软件设计与实践教学组 20XX年1月14 日 《软件设计与实践》课程设计 任务书 一、目的与要求 1.了解网络爬虫的架构和工作原理,实现网络爬虫的基本框架;2.开发平台采用JDK1.60eclipse集成开发环境。 二、主要内容 1.了解网络爬虫的构架,熟悉网页抓取的整个流程。

2.学习宽度优先和深度优先算法,实现宽度crawler应用程序的编写、调试和运行。 3.学习主题爬行及内容分析技术。 4.实现网络爬虫的基本框架。 三、进度计划 四、设计成果要求 1.要求按时按量完成所规定的实验内容; 2.界面设计要求友好、灵活、易操作、通用性强、具有实用性; 3.基本掌握所采用的开发平台。五、考核方式 平时成绩+验收+实验报告。 学生姓名:于兴隆指导教师:王蓝婧20XX年1月2日 一、课程设计的目的与要求1.目的: 1.1掌握crawler的工作原理及实现方法;1.2了解爬虫架构; 1.3熟悉网页抓取的整个流程及操作步骤; 1.4掌握宽度优先,深度优先算法,并实现宽度crawler 应用程序的编写、调试和运行;1.5掌握主题爬行及内容分析技术;1.6实现一个最基础的主题爬虫的过程;1.7理解pageRank算法,并编程验证;二、设计正文 网络爬虫研究与应用 [摘要]:本文通过对网络爬虫研究的逐步展开,讨论了爬虫的相关概念与技术,并通过实验设计了简单的基于宽度

单片机电子时钟课程设计实验报告

单片机电子时钟课程设 计实验报告 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号: 班级:自动化1211 指导老师:阮海容 目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路 PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。 3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。

电子电路课程设计密码锁(满分实验报告)

密码锁设计报告 摘要: 本系统是由键盘和报警系统所组成的密码锁。系统完成键盘输入、开锁、超时报警、输入位数显示、错误密码报警、复位等数字密码锁的基本功能。 关键字:数字密码锁GAL16V8 28C64 解锁与报警 1

目录: 一、系统结构与技术指标 1、系统功能要求 (4) 2、性能和电气指标 (5) 3、设计条件 (5) 二、整体方案设计 1、密码设定 (6) 2、密码判断 (6) 3、密码录入和判断结果显示 (6) 4、系统工作原理框面 (7) 三、单元电路设计 1、键盘录入和编码电路图 (8) 2、地址计数和存储电路 (12) 3、密码锁存与比较电路 (12) 2

4、判决与结果显示电路 (14) 5、延时电路 (15) 6、复位 (17) 7、整机电路图 (19) 8、元件清单……………………………………………19四、程序清单 1、第一片GAL (21) 2、第二片GAL (23) 五、测试与调整 1、单元电路测试 (25) 2、整体指标测试 (26) 3、测试结果 (26) 六、设计总结 1、设计任务完成情况 (27) 2、问题及改进 (27) 3、心得体会 (28) 3

一、系统结构与技术指标 1.系统功能要求 密码锁:用数字键方式输入开锁密码,输入密码时开锁;如 果输入密码有误或者输入时间过长,则发出警报。 密码锁的系统结构框图如下图所示,其中数字键盘用于输入 密码,密码锁用于判断密码的正误,也可用于修改密码。开锁LED1亮表示输入密码正确并开锁,报警LED2亮表示密码有误或者输入时间超时。 开锁green 键盘密码锁 错误red 4

vf课程设计实验报告模板

vf 课程设计实验报告模板 经济管理学院 学生信息管理系统的设计与实现 09年12 月28 日 、课程设计的目的和意义 当今,人类正在步入一个以智力资源的占有和配置,知识生产、分配和使用为最重要因素的知识经济时代,为了适应知识经济时代发展的需要,大力推动信息产业的发展,我们通过对学生信息管理系统的设计,来提高学生的操作能力,及对理论知识的实践能力,从而提高学生的基本素质,使其能更好的满足社会需求。 学生信息管理系统是一个简单实用的系统,它是学校进行学生管理的好帮手。 此软件功能齐全,设计合理,使用方便,适合各种学校对繁杂的学生信息进行统筹管理,具有严格的系统使用权限管理,具有完善的管理功能,强大的查询功能。它可以融入学校的信息管理系统中,不仅方便了学生信息各方面的管理,同时也为教师的管理带来了极大地便利。 我们进行本次课程设计的主要目的是通过上机实践操作,熟练掌握数据库的设 计、表单的设计、表单与数据库的连接、SQL语言的使用和了解它的功能:数据定 义、数据操纵、数据控制,以及简单VF程序的编写。基本实现学生信息的管理, 包括系统的登录、学生信息的录入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除,并对Visual FoxPro6.0 的各种功能有进一步的了解,为我们更进一步深入的学习奠定基础,并在实践中提高我们的实际应用能力,为我们以后的学习和工作提供方便,使我们更容易融入当今社会,顺应知识经济发展的趋势。 - 1 -

、系统功能设计 通过该系统可以基本实现学生信息的管理,包括系统的登录、学生信息的录 入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除。系统 功能模块如下图所示。 学生信息管理系统主界面 登录 管理 学学学学学 生生生生生 信信信信信 息息息息息 录查浏修删 入询览改除 三、系统设计内容及步骤 3.1创建项目管理文件 1.启动foxpro 系统,建一个项目管理器,命名为“学生管理”。 哑 目f ■ 也 电 岂同左 矣 氏H. 0 存 JI 蛋誤曾

信息论与编码实验报告.

本科生实验报告 实验课程信息论与编码 学院名称信息科学与技术学院 专业名称通信工程 学生姓名 学生学号 指导教师谢振东 实验地点6C601 实验成绩 二〇一五年十一月二〇一五年十一月

实验一:香农(Shannon )编码 一、实验目的 掌握通过计算机实现香农编码的方法。 二、实验要求 对于给定的信源的概率分布,按照香农编码的方法进行计算机实现。 三、实验基本原理 给定某个信源符号的概率分布,通过以下的步骤进行香农编码 1、将信源消息符号按其出现的概率大小排列 )()()(21n x p x p x p ≥≥≥ 2、确定满足下列不等式的整数码长K i ; 1)(l o g )(l o g 22+-<≤-i i i x p K x p 3、为了编成唯一可译码,计算第i 个消息的累加概率 ∑ -== 1 1 )(i k k i x p p 4、将累加概率P i 变换成二进制数。 5、取P i 二进制数的小数点后K i 位即为该消息符号的二进制码。 四、源程序: #include #include #include #include #include using namespace std; int main() { int N; cout<<"请输入信源符号个数:";cin>>N; cout<<"请输入各符号的概率:"<

int i,j; for(i=0;i

信息论与编码实验报告材料

实验报告 课程名称:信息论与编码姓名: 系:专 业:年 级:学 号:指导教 师:职 称:

年月日 目录 实验一信源熵值的计算 (1) 实验二Huffman 信源编码. (5) 实验三Shannon 编码 (9) 实验四信道容量的迭代算法 (12) 实验五率失真函数 (15) 实验六差错控制方法 (20) 实验七汉明编码 (22)

实验一信源熵值的计算 、实验目的 1 进一步熟悉信源熵值的计算 2 熟悉Matlab 编程 、实验原理 熵(平均自信息)的计算公式 q q 1 H(x) p i log2 p i log2 p i i 1 p i i 1 MATLAB实现:HX sum( x.* log2( x));或者h h x(i)* log 2 (x(i )) 流程:第一步:打开一个名为“ nan311”的TXT文档,读入一篇英文文章存入一个数组temp,为了程序准确性将所读内容转存到另一个数组S,计算该数组中每个字母与空格的出现次数( 遇到小写字母都将其转化为大写字母进行计数) ,每出现一次该字符的计数器+1;第二步:计算信源总大小计算出每个字母和空格出现的概率;最后,通过统计数据和信息熵公式计算出所求信源熵值(本程序中单位为奈特nat )。 程序流程图: 三、实验内容 1、写出计算自信息量的Matlab 程序 2、已知:信源符号为英文字母(不区分大小写)和空格输入:一篇英文的信源文档。输出:给出该信源文档的中各个字母与空格的概率分布,以及该信源的熵。 四、实验环境 Microsoft Windows 7

五、编码程序 #include"stdio.h" #include #include #define N 1000 int main(void) { char s[N]; int i,n=0; float num[27]={0}; double result=0,p[27]={0}; FILE *f; char *temp=new char[485]; f=fopen("nan311.txt","r"); while (!feof(f)) { fread(temp,1, 486, f);} fclose(f); s[0]=*temp; for(i=0;i='a'&&s[i]<='z') num[s[i]-97]++; else if(s[i]>='A'&&s[i]<='Z') num[s[i]-65]++; } printf(" 文档中各个字母出现的频率:\n"); for(i=0;i<26;i++) { p[i]=num[i]/strlen(s); printf("%3c:%f\t",i+65,p[i]); n++; if(n==3) { printf("\n"); n=0; } } p[26]=num[26]/strlen(s); printf(" 空格:%f\t",p[26]);

电子商务系统分析与设计课程设计实验报告范本

电子商务系统分析与设计课程设计实 验报告

江苏科技大学 电子商务系统分析与设计课程设计 网上书城系统的开发 学生姓名张颖 学号 班级08404121 指导老师 成绩 经济管理学院信息管理系 1月8日 目录 一.系统规划 (4)

1.2初步调查 (5) 1.3确定电子商务模式和模型 (6) 1.4可行性分析和可行性分析报告 (6) 二.系统分析 (8) 2.1系统调查 (8) 2.2需求规格说明书 (9) 2.2.1 引言 (9) 2.2.2项目概述 (9) 2.2.3需求规定 (10) 2.2.4环境要求 (16) 2.3组织结构分析 (17) 2.4业务流程分析 (17) 2.5数据流程分析 (19) 三.系统设计 (21) 3.1系统总体结构 (21) 3.2网络基本结构 (22) 3.3系统平台选择 (22) 3.4应用系统方案 (23) 3.4.1各功能模块简要描述 (23) 3.4.4数据库设计 (24) 3.4.5用户界面设计 (31)

3.5.1客户端要求 (32) 3.5.2服务器端要求 (32) 3.5.3系统测试 (32) 四.支付系统设计 (39) 4.1支付协议选择 (39) 4.2支付系统数据流程分析 (39) 4.3支付系统安全需求分析 (41) 4.4支付系统总体设计 (42) 4.5支付系统功能 (44) 4.6交易流程设计 (46) 4.7支付系统安全设计 (47) 五.心得体会 (47) 一.系统规划 1.1明确用户需求 随着当今社会新系统大度的提高,网络的高速发展,计算机已被广泛应用于各个领域,因而网络成为人们生活中不可或缺的一部分。互联网用户应经接受了电子商务,网购成为一种时尚潮流。

程序设计课程设计实验报告

《程序设计》课程设计姓名: 学号: 班级:软件工程14班 指导教师: 成绩:

1.消除类游戏 【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n,m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m 个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 测试数据二 输出说明: 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 【功能实现】 #include #include<> usingnamespacestd;

{ intm,n,i,j; inttemp; cin>>n>>m; temp=m; m=n; n=temp; int*map=newint[m*n]; int*mark=newint[m*n]; int*tmap=map; int*tmark=mark; intdif=0; ount=0; } p rintf("请输入要输入数的个数\n"); s canf("%d",&n);/*输入要输入数的个数*/ f or(i=0;idata1[j+1].number)

《信息论与信源编码》实验报告

《信息论与信源编码》实验报告 1、实验目的 (1) 理解信源编码的基本原理; (2) 熟练掌握Huffman编码的方法; (3) 理解无失真信源编码和限失真编码方法在实际图像信源编码应用中的差异。 2、实验设备与软件 (1) PC计算机系统 (2) VC++6.0语言编程环境 (3) 基于VC++6.0的图像处理实验基本程序框架imageprocessing_S (4) 常用图像浏览编辑软件Acdsee和数据压缩软件winrar。 (5) 实验所需要的bmp格式图像(灰度图象若干幅) 3、实验内容与步骤 (1) 针对“图像1.bmp”、“图像2.bmp”和“图像3.bmp”进行灰度频率统计(即计算图像灰度直方图),在此基础上添加函数代码构造Huffman码表,针对图像数据进行Huffman编码,观察和分析不同图像信源的编码效率和压缩比。 (2) 利用图像处理软件Acdsee将“图像1.bmp”、“图像2.bmp”和“图像 3.bmp”转换为质量因子为10、50、90的JPG格式图像(共生成9幅JPG图像),比较图像格式转换前后数据量的差异,比较不同品质因素对图像质量的影响; (3) 数据压缩软件winrar将“图像1.bmp”、“图像2.bmp”和“图像3.bmp”分别生成压缩包文件,观察和分析压缩前后数据量的差异; (4) 针对任意一幅图像,比较原始BMP图像数据量、Huffman编码后的数据量(不含码表)、品质因素分别为10、50、90时的JPG文件数据量和rar压缩包的数据量,分析不同编码方案下图像数据量变化的原因。 4、实验结果及分析 (1)在VC环境下,添加代码构造Huffman编码表,对比试验结果如下: a.图像1.bmp:

【实验报告】大学物理实验课程设计实验报告

大学物理实验课程设计实验报告北方民族大学 大学物理实验(设计性实验) 实验报告 指导老师:王建明 姓名:张国生 学号:XX0233 学院:信息与计算科学学院 班级:05信计2班 重力加速度的测定 一、实验任务 精确测定银川地区的重力加速度 二、实验要求 测量结果的相对不确定度不超过5% 三、物理模型的建立及比较 初步确定有以下六种模型方案: 方法一、用打点计时器测量

所用仪器为:打点计时器、直尺、带钱夹的铁架台、纸带、夹子、重物、学生电源等. 利用自由落体原理使重物做自由落体运动.选择理想纸带,找出起始点0,数出时间为t的p点,用米尺测出op的距离为h,其中t=0.02秒×两点间隔数.由公式h=gt2/2得g=2h/t2,将所测代入即可求得g. 方法二、用滴水法测重力加速度 调节水龙头阀门,使水滴按相等时间滴下,用秒表测出n个(n取 50―100)水滴所用时间t,则每两水滴相隔时间为t′=t/n,用米尺测出水滴下落距离h,由公式h=gt′2/2可得g=2hn2/t2. 方法三、取半径为r的玻璃杯,内装适当的液体,固定在旋转台上.旋转台绕其对称轴以角速度ω匀速旋转,这时液体相对于玻璃杯的形状为旋转抛物面重力加速度的计算公式推导如下: 取液面上任一液元a,它距转轴为x,质量为m,受重力mg、弹力n.由动力学知: ncosα-mg=0(1) nsinα=mω2x(2) 两式相比得tgα=ω2x/g,又tgα=dy/dx,∴dy=ω2xdx/g, ∴y/x=ω2x/2g.∴g=ω2x2/2y. .将某点对于对称轴和垂直于对称轴最低点的直角坐标系的坐标x、y测出,将转台转速ω代入即可求得g.

个人信息管理系统毕业课程设计实验报告

(此文档为word格式,下载后您可任意编辑修改!) 山东交通学院 目录 1.系统分析 (2) 1.1系统需求分析 (2) 1.2项目规划 (2) 1.3系统功能结构分析 (3) 1.4设计目的分析 (3) 2.数据库系统设计 (4) 2.1数据表概要设计 (4) 2.2数据库逻辑结构设计 (4) 3.应用程序设计 (5) 3.1界面设置 (5) 3.2关键技术 (15) 4.系统安装 (20) 建立数据源 (20) 5.设计体会 (21) 参考文献 (22)

摘要 随着经济社会的发展,计算机已被应用到社会生活的各个领域。与此同时,互联网作为信息技术的通信桥梁连接着全球的计算机,而网站作为网络信息主要的表现形式而且还是互联网信息的主要承载者,在网络上表现出其及其重要的地位,并发挥着极其重要的作用。无论是在国内还是国外都得以迅速的发展和壮大,并被人们重视和关注。互联网已经彻底的改变了世界,互联网的世界里蕴藏着无限的可能,在这种情况下,各行各业及其个人、单位、工厂、企事业等等在网上构筑属于自己的网络信息平台,保护自己的网络资源并在互联网上开辟自己的市场和消费群体,以及构造自己的数字化世界和加强全球范围内不同地域的人们联系交流等等活动也就显的日益重要。于是各种各样的网站便如雨后春笋般地出现鱼龙混杂且良莠不齐。因此,个人信息的管理就显得尤为重要了。不仅可以更好的保护个人信息,对日常的使用也会提供很大的方便。关键词:个人信息管理系统;数据集;数据库;Visual C++6.0。 1.系统分析 1.1系统需求分析 在做本系统前,我对系统的需求做了如下分析: 1)登录权限:在登录权限的分析上我们规定必须凭借用户名和密码才可登陆,进行管理。 2)使用者功能:首先说明一下,我们的系统用户对象是个人。关于其本系统的功能,大致可分为日记管理,通讯录管理,备忘录管理,以及个人财务管理;日记管理,其中包括用户对日记编号,时间,地点,事件、人物的查询、

信息论与编码实验报告

实验一 绘制二进熵函数曲线(2个学时) 一、实验目的: 1. 掌握Excel 的数据填充、公式运算和图表制作 2. 掌握Matlab 绘图函数 3. 掌握、理解熵函数表达式及其性质 二、实验要求: 1. 提前预习实验,认真阅读实验原理以及相应的参考书。 2. 在实验报告中给出二进制熵函数曲线图 三、实验原理: 1. Excel 的图表功能 2. 信源熵的概念及性质 ()()[] ()[]())(1)(1 .log )( .) ( 1log 1log ) (log )()(10 , 110)(21Q H P H Q P H b n X H a p H p p p p x p x p X H p p p x x X P X i i i λλλλ-+≥-+≤=--+-=-=≤≤? ?????-===??????∑ 单位为 比特/符号 或 比特/符号序列。 当某一符号xi 的概率p(xi)为零时,p(xi)log p(xi) 在熵公式中无意义,为此规定这时的 p(xi)log p(xi) 也为零。当信源X 中只含有一个符号x 时,必有p(x)=1,此时信源熵H (X )为零。 四、实验内容: 用Excel 和Matlab 软件制作二进熵函数曲线。根据曲线说明信源熵的物理意义。 (一) Excel 具体步骤如下: 1、启动Excel 应用程序。 2、准备一组数据p 。在Excel 的一个工作表的A 列(或其它列)输入一组p ,取步长为0.01,从0至100产生101个p (利用Excel 填充功能)。

3、取定对数底c,在B列计算H(x) ,注意对p=0与p=1两处,在B列对应位置直接输入0。Excel中提供了三种对数函数LN(x),LOG10(x)和LOG(x,c),其中LN(x)是求自然对数,LOG10(x)是求以10为底的对数,LOG(x,c)表示求对数。选用c=2,则应用函数LOG(x,2)。 在单元格B2中输入公式:=-A2*LOG(A2,2)-(1-A2)*LOG(1-A2,2) 双击B2的填充柄,即可完成H(p)的计算。 4、使用Excel的图表向导,图表类型选“XY散点图”,子图表类型选“无数据点平滑散点图”,数据区域用计算出的H(p)数据所在列范围,即$B$1:$B$101。在“系列”中输入X值(即p值)范围,即$A$1:$A$101。在X轴输入标题概率,在Y轴输入标题信源熵。 (二)用matlab软件绘制二源信源熵函数曲线 p = 0.0001:0.0001:0.9999; h = -p.*log2(p)-(1-p).*log2(1-p); plot(p,h) 五、实验结果

南邮课程设计实验报告

课程设计I报告 题目:课程设计 班级:44 姓名:范海霞 指导教师:黄双颖 职称: 成绩: 通达学院 2015 年 1 月 4 日

一:SPSS的安装和使用 在PC机上安装SPSS软件,打开软件: 基本统计分析功能包括描述统计和行列计算,还包括在基本分析中最受欢迎的常见统计功能,如汇总、计数、交叉分析、分类比较、描述性统计、因子分析、回归分析及聚类分析等等。具体如下: 1.数据访问、数据准备、数据管理与输出管理; 2.描述统计和探索分析:频数、描述、集中趋势和离散趋势分析、分布分析与查看、正态性检验与正态转换、均值的置信区间估计; 3.交叉表:计数;行、列和总计百分比;独立性检验;定类变量和定序变量的相关性测度; 4.二元统计:均值比较、T检验、单因素方差分析; 5.相关分析:双变量相关分析、偏相关分析、距离分析; 6.线性回归分析:自动线性建模、线性回归、Ordinal回归—PLUM、曲线估计; 7.非参数检验:单一样本检验、双重相关样本检验、K重相关样本检验、双重独立样本检验、K重独立样本检验; 8.多重响应分析:交叉表、频数表; 9.预测数值结果和区分群体:K-means聚类分析、分级聚类分析、两步聚类分析、快速聚类分析、因子分析、主成分分析、最近邻元素分析; 10. 判别分析; 11.尺度分析; 12. 报告:各种报告、记录摘要、图表功能(分类图表、条型图、线型图、面积图、高低图、箱线图、散点图、质量控制图、诊断和探测图等); 13.数据管理、数据转换与文件管理; 二.数据文件的处理 SPSS数据文件是一种结构性数据文件,由数据的结构和数据的内容两部分构成,也可以说由变量和观测两部分构成。定义一个变量至少要定义它的两个属性,即变量名和变量类型其他属性可以暂时采用系统默认值,待以后分析过程中如果有需要再对其进行设置。在spss数据编辑窗口中单击“变量视窗”标签,进入变量视窗界面,即可对变量的各个属性进行设置。 1.创建一个数据文件数据 (1)选择菜单【文件】→【新建】→【数据】新建一个数据文件,进入数据编辑窗口。窗口顶部标题为“PASW Statistics数据编辑器”。 (2)单击左下角【变量视窗】标签进入变量视图界面,根据试验的设计定义每个变量类型。

中南大学电工电子课程设计实验报告

中南大学 电工电子技术课程设计报告 题目:可编程乐曲演奏器的设计 学院:信息科学与工程学院 指导老师:陈明义 专业班级: 姓名: 学号:

前言 随着科学技术发展的日新日异,电工电子技术在现代社会生产中占据着非常重要的地位,因此作为二十一世纪的自动化专业的学生而言,掌握电力电子应用技术十分重要。 电工电子课程设计的目的在于进一步巩固和加深所学电工电子基本理论知识。使学生能综合运用相关关课程的基本知识,通过本课程设计,培养我们独立思考的能力,学会和认识查阅学习我们未学会的知识,了解专业工程设计的特点、思路、以及具体的方法和步骤,掌握专业课程设计中的设计计算、软件编制,硬件设计及整体调试。设计过程中还能树立正确的设计思想和严谨的工作作风,达到提高我们的设计能力的目标。 从理论到实践,往往看似简单,实则是有很大的差距的,通过课程设计,可以培养我们学到很多东西,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的学到知识,从而提高自己的实际动手能力和独立思考的能力。 在次,特别感谢老师给我们以实践动手的机会,让我们对以前的知识以复习,整合,并从理论走向实践,相信我们都会在这次课程设计中学到很多!!!

目录 前言 (2) 正文 第一章系统概述 (4) 系统功能 (4) 系统结构 (4) 实验原理 (4) 整体方案 (5) 第二章单元电路的设计与分析 (5) 音频发生器的设计 (5) 节拍发生器的设计 (6) 读取存储器数据 (7) 选择存储器地址 (8) 控制音频电路设计 (8) 第三章电路的安装与调试 (9) 第四章结束语 (9) 元器件明细表 (10) 参考文献 (10) 附录 (11)

计算机网络课程设计实验报告

中南大学课程设计报告 课程:计算机网络课程设计 题目:基于Winpcap的网络流量统计分析 指导教师:张伟 目录 第一章总体设计 一、实体类设计 --------P3 二、功能类设计 --------P3 三、界面设计 --------P3

第二章详细设计 一、实体类实现 --------P4 二、功能类实现 --------P4 三、界面实现 --------P5 第三章源代码清单及说明 一、CaptureUtil.java --------P7 二、MyPcapPacketHandler.java --------P9 三、PacketMatch.java --------P9 四、Windows.java --------P13 第四章运行结果 --------P19 第五章心得体会 --------P21 第一章总体设计 一、实体类设计 TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计 二、功能类设计 (1)网卡获取 (2)包的抓捕

(3)包的处理 三、界面设计 (1)布局 (2)按钮功能连接 第二章第二章详细设计 一、实体类实现 TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计。 本程序采用Java编写,基于win10pcap。Win10pcap是winpcap在win10系统上的适用版本。Java对于winpcap使用jnetpcap进行支持。对于TCP、UPD、ICMP、ARP、广播数据包五种类型的包,在jnetpcap的jar包中大部分已经封装好了相关的实体类型。对应如下:ARP 实体类:https://www.360docs.net/doc/3a8606956.html,work.Arp; UPD 实体类:https://www.360docs.net/doc/3a8606956.html,work.Icmp;

c课程设计实验报告

c课程设计实验报 告

中南大学 本科生课程设计(实践)任务书、设计报告 (C++程序设计) 题目时钟控件 学生姓名 指导教师 学院交通运输工程学院 专业班级 学生学号 计算机基础教学实验中心 9月7日 《C++程序设计基础》课程设计任务书

对象:粉冶、信息、能源、交通工程实验2101学生时间: .6 2周(18~19周) 指导教师:王小玲 1.课程设计的任务、性质与目的 本课程设计是在学完《C++程序设计基础》课程后,进行的一项综合程序设计。在设计当中学生综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的应用程序系统。经过此设计进一步提高学生的动手能力。并能使学生清楚的知道开发一个管理应用程序的思想、方法和流程。 2.课程设计的配套教材及参考书 ●《C++程序设计》,铁道出版社,主编杨长兴刘卫国。 ●《C++程序设计实践教程》,铁道出版社,主编刘卫国杨长兴。 ●《Visual C++ 课程设计案例精编》,中国水力电力出版社,严华峰等编著。 3.课程设计的内容及要求 (1)自己任选一个题目进行开发(如画笔、游戏程序、练习打字软件等),要求利用MFC 工具操作实现。 (2)也可选一个应用程序管理系统课题(如:通讯录管理系统;产品入库查询系统;学生成绩管理;图书管理 等);

设计所需数据库及数据库中的数据表,建立表之间的关系。 设计所选课题的系统主封面(系统开发题目、作者、指导教师、日期)。 设计进入系统的各级口令(如系统管理员口令,用户级口令)。 设计系统的主菜单。要求具备下列基本功能: ●数据的浏览和查询 ●数据的统计 ●数据的各种报表 ●打印输出 ●帮助系统 多种形式的窗体设计(至少有查询窗体、输入窗体) 注意:开发的应用程序工作量应保证在2周时间完成,工作量不能太少或太多。能够2人合作,但必须将各自的分工明确。 4.写出设计论文 论文基本内容及撰写顺序要求: ●内容摘要 ●系统开发设计思想 ●系统功能及系统设计介绍 ●系统开发的体会

电子CAD课程设计实验报告

一.课程设计的目的 课程设计以电子线路CAD软件设计原理为基础,重点在硬件设计领域中实用的电子线路设计软件的应用。掌握电子线路设计中使用CAD的方法。为后继课程和设计打下基础。 通过电路设计,掌握硬件设计中原理图设计、功能仿真、器件布局、在线仿真、PCB设计等硬件设计的重要环节。 二.课程设计题目描述和要求 2.1振荡电路的模拟和仿真。 由555定时器构成多谐波振荡电路,用模拟的示波器观察输出的信号,熟悉555定时器构成多谐波振荡电路的基本原理,熟悉proteus的基本操作,和各元器件的查找。 2.2 8051单片机 用80c51单片机完成以下功能:(1)构成流水灯的控制电路,使八个流水灯轮流点亮。(2)构成音乐播放的简单电路。(3)构成串口通信电路,完成信息在单片机和串口之间的传播。(4)构成8255键盘显示模块。(5)构成A/D和D/A 转换模块。 首先用模拟器件构成基本电路,然后在单片机中加入驱动程序,运行仿真,最后对电路进行调整校正,完成相关功能。 熟悉单片机实现相关功能的基本原理,对单片机有个框架的了解。学习用proteus仿真单片机电路中不同模块间的组合,扩展单片机电路的功能。 三.课程设计报告内容。 3.1设计原理 3.1.1振荡电路仿真的原理 振荡电路原理: 555管脚功能介绍: 1脚为地。2脚为触发输入端;3脚为输出端,输出的电平状态受触发器控制,而触发器受上比较器6脚和下比较器2脚的控制。 当触发器接受上比较器A1从R脚输入的高电平时,触发器被置于复位状态,3脚输出低电平; 2脚和6脚是互补的,2脚只对低电平起作用,高电平对它不起作用,即电压小于1Ucc/3,此时3脚输出高电平。6脚为阈值端,只对高电平起作用,低电

数字电子钟课程设计方案实验报告

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计任务书2016/2017 学年第一学期 学生姓名:张涛学号:1405024119 李子鹏学号:1405024125 课程设计题目:数字电子钟的设计 起迄日期:2017年1月4日~2017年7月10日 课程设计地点:科学楼 指导教师:姚爱琴 2017年月日

课程设计任务书

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计开题报告2016/2017 学年第一学期 题目:数字电子钟的设计 学生姓名:张涛学号:1405024119 李子鹏学号:1405024125 指导教师:姚爱琴 2017 年 1 月 6 日

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计说明书2016/2017 学年第二学期 题目:数字电子钟的设计 学生姓名:张涛学号:1405024119 李子鹏学号:1405024125 指导教师:姚爱琴 2017 年月日

目录 1 引言 (6) 2 数字电子钟设计方案 (6) 2.1 数字计时器的设计思想 (6) 2.2数字电路设计及元器件参数选择 (6) 2.2.1秒信号电路 (6) 2.2.2 时、分、秒计数器 (7) 2.2.3 计数显示电路 (8) 2.2.4校时电路 (9) 2.2.5 整点报时电路 (10) 2.2.6 总体电路 (10) 2.3 安装与调试 (11) 2.3.1 数字电子钟PCB图 (11) 3 设计单元原理说明 (11) 3.1 555定时器原理 (12) 3.2 计数器原理 (12) 3.3 译码和数码显示电路原理 (12) 3.4 校时电路原理 (12) 4 心得与体会 (12)

信息论与编码实验报告

信息论与编码实验报告-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

实验一关于硬币称重问题的探讨 一、问题描述: 假设有N 个硬币,这N 个硬币中或许存在一个特殊的硬币,这个硬币或轻 或重,而且在外观上和其他的硬币没什么区别。现在有一个标准天平,但是无刻度。现在要找出这个硬币,并且知道它到底是比真的硬币重还是轻,或者所有硬币都是真的。请问: 1)至少要称多少次才能达到目的; 2)如果N=12,是否能在3 次之内将特殊的硬币找到;如果可以,要怎么称? 二、问题分析: 对于这个命题,有几处需要注意的地方: 1)特殊的硬币可能存在,但也可能不存在,即使存在,其或轻或重未知; 2)在目的上,不光要找到这只硬币,还要确定它是重还是轻; 3)天平没有刻度,不能记录每次的读数,只能判断是左边重还是右边重,亦或者是两边平衡; 4)最多只能称3 次。 三、解决方案: 1.关于可行性的分析 在这里,我们把称量的过程看成一种信息的获取过程。对于N 个硬币,他们 可能的情况为2N+1 种,即重(N 种),轻(N 种)或者无假币(1 种)。由于 这2N+1 种情况是等概率的,这个事件的不确定度为: Y=Log(2N+1) 对于称量的过程,其实也是信息的获取过程,一是不确定度逐步消除的过程。 每一次称量只有3 种情况:左边重,右边重,平衡。这3 种情况也是等概率 的,所以他所提供的信息量为: y=Log3 在K 次测量中,要将事件的不确定度完全消除,所以 K= Log(2N+1)/ Log3 根据上式,当N=12 时,K= 2.92< 3 所以13 只硬币是可以在3 次称量中达到

【VIP专享】电子技术课程设计实验报告

电子技术课程设计实验报告 学院:物联网工程学院 班级:自动化1204 姓名:XXX 学号:1070412428 同组成员:XXX 二〇一四年六月

目录 一、实验名称 (3) 二、实验任务和要求 (3) 三、实验电路 (a)系统框图 (3) (b)总电路原理图 (4) (c)总电路管脚图 (5) 四、单元电路及原理分析 (1)+5V电源电路 (5) (2)正弦波发生及波形变换电路 (6) (3)单稳态定时电路 (7) (4)频率计数显示电路 (7) (5)超量程指示电路 (8) (6)控制电路 (9) 五、元器件列表 (10) 六、安装与调试 1、使用仪器仪表 (10) 2、安装 (10) 3、调试 (11) 4、调试中出现的故障、原因及排除方法 (14) 七、收获和体会 (15)

一、实验名称 正弦波发生、频率测量显示电路 二、实验任务和要求 正弦波振荡频率100~1000Hz,输出信号幅度5±5%V; (1)用3位数码管显示振荡频率; (2)能自动连续测量、显示频率,测量周期为4S; (3)用中规模集成电路实现。 三、实验电路 (a)系统框图 图1-1 正弦波发生电路组成框图 (b)总电路原理图

原理图分析:正弦波振荡器自激振荡产生正弦波输出信号,波形变换电路将正弦波变换成方波,方波输入到计数器中,由计数器对输入方波信号进行计数,计数器的计数结果在译码显示中显示;控制电路部分输出定时触发信号、超量程复位信号和清零信号,定时触发信号输入到单稳态定时电路中,单稳态定时电路将定时触发信号给计数器,计数器在定时周期内对方波信号进行计数;超量程复位信号和计数器输出的超量程指示同时控制超量程指示电路部分,发光二极管发光进行超量程指示;清零信号输入到计数器中,在计数超过量程时计数器清零。

相关文档
最新文档