当前位置:文档之家› Java数据结构课程设计

Java数据结构课程设计

Java数据结构课程设计
Java数据结构课程设计

JAVA 数据结构课程设计报告

( 2010 -- 2011 年度第 一 学期)

扫雷游戏

专业 信息管理与信息系统

学生姓名 高俊红 班级 B 信管091 学

0910406131 指导教师 胡 辉 完成日期

2011年1月18日

扫雷游戏

目录

目录 (2)

1概述 (1)

1.1 课程设计目的 (1)

1.2 课程设计内容 (1)

2系统需求分析 (1)

2.1 基本要求 (1)

2.2 主体功能 (2)

开发环境 (2)

3系统总体设计 (2)

3.1设计要求 (2)

3.2 MineGame.java(主类) (3)

3.3 MineArea.java (3)

3.4 Block.java (4)

3.5 BlockView.java (4)

3.6 LayMines.java (4)

3.7 Record.java (4)

3.8 ShowRecord.java (4)

4系统详细设计 (4)

4.1 MineGame类 (4)

4.2 MineArea类 (7)

4.3 Block类 (9)

4.4 BlockView类 (10)

4.5 LayMine类 (11)

4.6 record类 (12)

5测试 (15)

5.1 测试方案 (15)

5.2 测试结果 (15)

6小结 (16)

参考文献 (17)

附录 (18)

附录1源程序清单 (18)

JA V A数据结构课程设计报告(2011)

扫雷游戏

1 概述

1.1 课程设计目的

《JAVA数据结构》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA数据结构》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

1.2 课程设计内容

1、使用Java语言编写一个很有趣的扫雷游戏。扫雷游戏的运行效果图如图1-1。

图1-1 扫雷游戏的运行效果图

2 系统需求分析

2.1 基本要求

1、扫雷游戏分为初级、中级和高级三个级别,扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。单击游戏菜单可以选择“初级”、“中级”和“高级”货“查看英雄版”。

1

扫雷游戏

2、选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器。

3、用户要揭开某个方块,可单击它。若所揭方块下有雷,用户便输了这一局,若所揭方块下无雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。

4、如果用户认为某个方块下埋着雷,单击右键可以再方块上标识一个用户认为是雷的图标,级给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。

5、扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。

2.2 主体功能

1、用户可以自定义级别并且可以任意输入雷数;

2、具有计时功能,即显示用户完成移动盘子所花费的时间;

3、自动保存扫雷英雄榜。

开发环境

开发平台: Microsoft Window XP1

开发工具: JDK1.6.0-20

3 系统总体设计

3.1设计要求

在设计扫雷游戏时,可以编写7个Java源文件:MineGame.java、MineArea.java、Block.java、BlockView.java、LayMines.java、Record.java、和ShowRecord.java。

扫雷游戏除了上述7个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如File、JButton和JLable等类。扫雷游戏所用到的一些重要的类以及之间的组合关系如图

3-1所示。

2

JA

V A 数据结构课程设计报告(2011)

3

图3-1 类之间的组合关系

3.2 MineGame.java (主类)

MineGame 类负责创建扫雷游戏的主窗口,该文件含有main 方法,扫雷游戏从该类开始执行。MineGame 类主要有三种类型的成员,分别是:File 、MineArea 和ShowRecord 对象。我们将在后面的详细设计中阐述MineGame 类中的主要成员的作用。MineGame 类创建的窗口以及其中的主要成员对象如图3-2所示。

图3-2 CalculatorWindow 窗口及主要的成员对象

3.3 MineArea.java

MineArea 类创建的对象是MineGame 类最重要的成员之一,代表“扫雷区域”。该类的成员变量中有5种重要类型的对象:Block 、BlockView 、LayMine 和Record 。MineArea 类的主要成员的作用将在后面的详细设计中阐述。

MineGame

File MineArea ShowRecord

Block BlockView LayMines Record

JLable JButton

扫雷游戏

4

3.4 Block.java

Block 类是雷区中“方块”的类封装,含有关于“方块”的属性以及操作,即负责为雷区创建代表“方块”的Block 对象。

3.5 BlockView.java

BlockView 是JPanel 容器的子类,BlockView 创建的对象负责为Block 对象提供视图,以便用户通过该视图与Block 对象交互。BlockView 对象使用一个标签和按钮为Block 对象提供视图,标签和按钮按着卡片布局(CardLayout)层叠在一起,默认状态下按钮遮挡住标签。当用户单击按钮后,如果Block 对象是雷,BlockView 对象中的标签显示的是雷的图标;如果Block 对象不是雷,标签显示的是当前Block 对象周围的总数。

3.6 LayMines.java

LayMines 类对象不需要视图,在游戏中不需要看见对象。LayMines 对象使用随机算法指定LayMines 对象中的哪些Block 对象是雷,哪些Block 对象不是雷。

3.7 Record.java

Record 类是JDialog 对话框的子类,当用户扫雷成功时,Record 对象负责保存用户的成绩到文件。

3.8 ShowRecord.java

ShowRecord 类是JDialog 对话框的子类,当用户查看扫雷的最好成绩时,ShowRecord 对象负责读取文件数据的界面。

4系统详细设计

4.1 MineGame 类

效果图

MineGame 创建的窗口效果如图4-1所示。

JA V A数据结构课程设计报告(2011)

图4-1MineGame创建的窗口

(2)UML图

MineGame类是Javax.swing包中JFrame的一个子类,并实现了ActionListener接口。标明该类的主要成员变量和方法的UML图如图4-2所示。

图4-2 MineGame类的UML图

以下是UML图中有关数据和方法的详细说明。

1)成员变量

bar和fileMenu提供菜单操作,单机游戏菜单中的选项为“初级”、“中级”和“高级”或“扫雷英雄榜”。

mineArea是扫雷区域,提供有关扫雷的主要功能。

“英雄榜”负责存放三个级别的扫雷最好成绩。

showHeroRecord负责显示英雄榜中的数据。

2)方法

MineGame()是构造方法,负责完成窗口的初始化。

actionPerformed(ActionEvent)方法是MineGame类实现的ActionListener接口中的方法,该方法负责执行菜单发出的有关命令。用户选择菜单中的菜单项可触发ActionEvent事件,导致actionPerformwd(ActionEvent)方法执行相应的操作,例如将mineArea创建的雷区设置为初级、中级或高级等。

5

扫雷游戏

Main(String[])方法是程序运行的入口方法。

(3)代码(MineGame.java)

import java.awt.event.*;

import java.awt.*;

import javax.swing.*;

import javax.swing.border.*;

import java.util.*;

import java.io.*;

public class MineGame extends JFrame implements ActionListener{ JMenuBar bar;

JMenu fileMenu;

JMenuItem 初级,中级,高级,扫雷英雄榜;

MineArea mineArea=null;

File 英雄榜=new File("英雄榜.txt");

Hashtable hashtable=null;

ShowRecord showHeroRecord=null;

MineGame(){

mineArea=new MineArea(16,16,40,1);

add(mineArea,BorderLayout.CENTER);

bar=new JMenuBar();

fileMenu=new JMenu("游戏");

初级=new JMenuItem("初级");

中级=new JMenuItem("中级");

高级=new JMenuItem("高级");

扫雷英雄榜=new JMenuItem("扫雷英雄榜");

fileMenu.add(初级);

fileMenu.add(中级);

fileMenu.add(高级);

fileMenu.add(扫雷英雄榜);

bar.add(fileMenu);

setJMenuBar(bar);

初级.addActionListener(this);

中级.addActionListener(this);

高级.addActionListener(this);

扫雷英雄榜.addActionListener(this);

hashtable=new Hashtable();

hashtable.put("初级","初级#"+999+"#匿名");

hashtable.put("中级","中级#"+999+"#匿名");

hashtable.put("高级","高级#"+999+"#匿名");

if(!英雄榜.exists()){

try{FileOutputStream out=new FileOutputStream(英雄榜); ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(hashtable);

objectOut.close();

out.close();

}

catch(IOException e){}

}

showHeroRecord=new ShowRecord(this,hashtable);

setBounds(100,100,280,380);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

validate();

6

JA V A 数据结构课程设计报告(2011)

7

}

public void actionPerformed(ActionEvent e){ if(e.getSource()==初级){

mineArea.initMineArea(8,8,10,1); setBounds(100,100,200,280); }

if(e.getSource()==高级){

mineArea.initMineArea(22,22,99,3); setBounds(100,100,350,390); }

if(e.getSource()==扫雷英雄榜){ if(showHeroRecord!=null) showHeroRecord.setVisible(true); }

validate(); }

public static void main(String args[]){ new MineGame(); } }

4.2 MineArea 类

(1)效果图

MineArea 创建的扫雷区的效果如图4-3所示。

图4-3 MineArea 创建的扫雷区域效果图

(2)UML 图

MineArea 是javax.swing 包中JPanel 容器的子类。实现了ActionListener 和

MouseListener 接口,所创建的对象:mineArea 是MineGame 类中最重要的成员之一,作为一个容器添加到MineGame 窗口的中心。标明MineArea 类的主要成员变量、方法以及和MineGame 类之间组合关系的UML 如图4-4所示。

扫雷游戏

图4-4 NumberButton 类的UML图

以下是UML图中有关数据和方法的详细说明。

1)成员变量

Block是Block类型的数组,用来确定雷区有多少需要进行扫雷的方块。

BlockView是BlockView类型的数组,负责为block数组中的Block对象提供视图。

lay是LayMines类型的对象,负责设置block数组中的哪些方块是雷或不是雷。

Record负责提供保存成绩的界面,是一个对话框,默认不可见。用户只有扫雷成功后(用时最少),才可以看见该对话框。

reStart是一个按钮对象,用户单击它重新开始游戏。

time是计时器对象,负责计算用户的用时。

2)方法

initMineArea(int,int,int,int)方法可根据参数提供的数据设置雷区的宽度、高度、雷的数目以及雷区的级别。

actionPerformed(ActionEvent)是MineArea类实现的ActionListener接口中的方法。当用户单击blockView中的某个方法时,actionPerformed(ActionEvent)方法负责执行有关算法,例如,当用鼠标左键单击方块上的按钮后,若该方块下有雷,actionPerformed(ActionEvent)方法将使用户输掉本局,若该方块下无雷,actionPerformed(ActionEvent)方法将显示Blockview对象中的标签,该标签,该标签上市一个数字,该数字代表当前方块的周围的8个方块中共有多少颗雷。

Show()方法是一个递归方法。actionPerformed(ActionEent)方法执行时将调用show

方法进行扫雷。

8

JA V A数据结构课程设计报告(2011)

mousePressed(MouseEvent)方法是MineArea类实现的MouseListener接口中的方法,当用户按下鼠标右键时,mousePressed(MouseEvent)方法负责让方块上显示一个探雷标记。

InquireWin()方法用来判断用户是否扫雷成功,如果成功该方法负责让record对话框可见。所谓扫雷成功是指不仅找到了全部的雷而且用时最少。

(3)代码(MineArea.java)

参见附录1.2。

4.3 Block类

(1)效果图

Block对象负责封装雷区中方块中的数据以及对这些数据的操作,外观效果由BlockView负责提供(见面后的BlockView类)。

(2)UML图

Block类创建的对象是数组block的单元中的对象。Block型数组block是MineArea 类的重要成员之一。标明Block类的主要成员变量、方法以及和MineArea类之间的组合关系的UML图如图4-5所示。

图4-5 Block类的UML图

以下是UML图中有关数据和方法的详细说明。

1)成员变量

.name是方块上的名字。

.aroundMineNumber是方块周围雷的数目。

.mineIcon是方块上雷的图标。

.isMine用来表示方块是否被标记。

.isOpen用来表示方块是否被挖开。

9

扫雷游戏

10

2)方法

.setAroundMineNumber(int)方法用来设置aroundMineNumber 的值。 .getAroundMineNumber()方法用来获取aroundMineNumber 的值。 (3)代码(Block.java) 参见附录1.3。

4.4 BlockView 类

(1)效果图

BlockView 创建的对象负责为Block 对象提供视图,以便用户通过该视图与Block 对象交互。BlockView 对象使用一个标签和按钮为Block 对象提供视图,标签和按钮按着卡片布局(CardLayout)层叠在一起,默认状态按钮遮挡住标签。当用户单击按钮后,如果Block 对象是雷吗,BlockView 对象中的标签显示的是雷的图标;如果Block 对象不是雷,标签显示的是周围雷的总数,效果如图4-6所示。

图4-6 BlockView 对象

(2)UML 图

BlockView 类是javax.swing 包中JPanel 类的一个子类,创建的对象是数组blockView 的单元中的对象。BlockView 型数组blockView 是MineArea 类的重要成员之一。标明BlockView 类的主要成员变量和方法以及和MineArea 类之间的组合关系的UML 图如图4-7所示。

以下是UML图中有关数据和方法的详细说明。

成员变量

.blockNameOrIcon用来显示Block对象的name、number和mineIcon属性。

.blockCover用来遮挡blockNameOrIcon。

.card卡片式布局。

2)方法

.giveView(Block block)方法给参数指定的Block对象提供视图,如果Block对象的isMine 属性为true,即方块是雷,那么blockNameOrIcon标签上设置的文本就是Block对象的name属性的值,同时blockNameOrIcon标签上设置的图标就是Block对象的mineIcon指定的图标。如果Block对象的isMine属性为false,blockNameOrIcon标签上设置的文本就是Block对象的aroundMineNumber属性的值,即周围雷的数目。

.seeBlockNameOrIcon()方法让用户看见视图中的标签,无法看见按钮。

.seeBlockCover()方法让用户看见视图中的按钮,无法看见标签。

(3)代码(BlockView.java)

参加附录1.4.

4.5 LayMine类

(1)效果图

LayMines对象使用随机算法指定MineArea对象中的哪些Block对象是雷,哪些对象不是雷,没有可现实的效果图。

(2)UML图

11

扫雷游戏

LayMines创建的对象lay是MineArea中的重要成员,表明该类的主要成员变量和方法以及和MineArea类之间组合关系的UML图如图4-8所示。

图4-8 LayMines类的UML图

以下是UML图中有关数据和方法的详细说明。

1) 成员变量

mineIcon用来存放一个格式为gif的图像。

2)方法

layMinesForBlock(Block[][],int)方法对参数指定的Block数组进行设置,其中int参数指定雷的数目。当指定Block数组中某个单元中的方块是雷时,就将该方块上的图标设置为mineIcon。当指定Block数组中某个单元的方块不是雷时,就将该方块的名字设置为周围的雷的数目。

(3)代码(LayMines.java)

参见附录1.5.

4.6 record类

(1)效果图

Record创建的对象负责提供保存成绩的界面,效果如图4-9所示。

图4-9 保存成绩对话框

(2)UML图

Record是javax.swing包中JDialog对话框的子类,并实现了ActionListener接口。Record 创建的对象:record是MineArea类的成员之一,当用户扫雷成功时,该对象提供了保存成绩

12

JA V A数据结构课程设计报告(2011)

到文件的界面。标明Record类的主要成员变量、方法以及和MineArea类质检组合关系的UML 图如图4-10所示。

图4-10 Record类的UML图

以下是UML图中有关数据和方法的详细说明。

1)成员变量

.textName提供用户扫雷优胜者输入姓名。

.用户单击“确定”按钮,可以保存成绩。

2)方法

.actionPerformed(ActionEvent)方法是Record类实现的ActionListener接口中的方法,当用户单击“确定”按钮后,该方法被执行,所执行的操作就是获取用户输入的名字和用时,然后调用writeRecord(String,String)方法将信息写入到“英雄榜”中。

.writeRecord(String,String)负责将有关信息,例如扫雷的用时、扫雷的级别以及扫雷优胜者的姓名等信息写入到“英雄榜”文件。

(3)代码(Record.java)

参见附录1.6.

4.7 ShowRecord类

(1)效果图

ShowRecord创建的对象负责提供显示成绩的界面,效果如图4-11所示。

13

扫雷游戏

图4-11 显示成绩对话框

(2)UML图

ShowRecord是javax.swing包中JDialog对话框的子类,并实现了ActionListener接口。ShowRecord创建的对象showHeroRecord是MineGame类(主类)的成员之一,当用户选择查看“英雄榜”菜单项时,该对话框可见,提供了查看扫雷的最好成绩的界面。标明ShowRecord类的主要成员变量、方法以及和MineGame类之间组合关系的UML图如图4-12所示

图4-12 ShowRecord类的UML图

以下是UML图中有关数据和方法的详细说明。

1)成员变量

.file存放文件的引用。

.用户单击“显示成绩”按钮,可以看见各个级别扫雷的最好成绩。

.用户单击“重新记分”按钮,可以将“英雄榜”中的成绩恢复为初始值。

2)方法

14

JA V A 数据结构课程设计报告(2011)

15

.actionPerformed(ActionEvent)方法是ShowRecord 类实现的ActionListener 接口中的方法,当用户单击“显示成绩”按钮后,该方法被执行,所执行的操作就是调用readAndShow()方法。

.readAndShow()方法负责读取存放在文件中的各个级别的扫雷最好成绩以及扫雷者姓名,并显示这些相关信息。

(3)代码(ShowRecord.java) 参见附录1.7。

5 测试

5.1 测试方案

1.至此已经完成该工资管理系统程序的编制。下面看看程序的实现效果吧。运行该程序,出现用户登录对话框图。如图5-1。

图5-1 效果图

2.一般来说,对程序测试有两种测试方法:如果已经知道了软件系统应具有的功能,可通过测试来看每个功能是否都能正常使用;如果知道程序的内部工作过程,可以通过测试来检测程序内部是否按照规格说明书的规定正常进行。前一种方法称为黑盒测试,后一种方法称为白盒测试。黑盒测试又称为功能测试,白盒测试又称为结构测试。本系统属于一个小型系统,我在测试时候主要采用了黑盒测试的方法,对系统分模块,分功能进行测试,为了高效率的测试,主要设计了如下的模块测试方案,对每模块的测试中,根据方案确定了具体的数据,输入数字并计算结果,检测结果的正确性以及程序的运行状况。

5.2 测试结果

经过以上方案周密的测试后,检测程序运行良好。可以完成扫雷游戏的功能。如图5-2。

扫雷游戏

16

图5-2 测试结果图

6 小结

经过两周的设计和开发,扫雷游戏已完成,其功能经过测试基本符合需求。但是由于毕业设计时间较短,所以该系统还有许多不尽如人意的地方,比如系统图不够美观等多方面问题。这些都有待进一步改善。通过这次课程设计,我掌握了一种新的数据库系统开发工具JDK1.6。它使用面向对象的开发技术,能够轻松开发出功能强大的专门针对用户。此外,我还认识到应该注意细节问题,虽然是很小的问题,但可以提高自己的编程能力,而且还可以培养自己编程的严谨性,同时还可以为我以后的编程积累经验。编写完这个扫雷游戏,我感觉很吃力,因为这个游戏涉及到好多算法。

感触最深的就是我们真的要扎扎实实的打基础,并且我感觉到只要我们自己肯下功夫学习,我们也可以做出很好的东西,不需要每次都抄袭别人的,只有自己的才是最珍贵的。另外,通过这次课程设计,提高了自己运用所学的基础知识和技能,独立解决一般的计算机编程问题。

JA V A数据结构课程设计报告(2011)

参考文献

1、耿祥义、张跃平,JAVA 2实用教程(第三版),清华大学出版社,2006

2、耿祥义、张跃平,JAVA课程设计(第二版),清华大学出版社,2009.8

3、叶核亚,数据结构(Java)(第二版),电子工业大学出版社,2008

17

扫雷游戏

附录

附录1 源程序清单

附录1.1 MineGame类源程序

import java.awt.event.*;

import java.awt.*;

import javax.swing.*;

import javax.swing.border.*;

import java.util.*;

import java.io.*;

public class MineGame extends JFrame implements ActionListener{ JMenuBar bar;

JMenu fileMenu;

JMenuItem 初级,中级,高级,扫雷英雄榜;

MineArea mineArea=null;

File 英雄榜=new File("英雄榜.txt");

Hashtable hashtable=null;

ShowRecord showHeroRecord=null;

MineGame(){

mineArea=new MineArea(16,16,40,1);

add(mineArea,BorderLayout.CENTER);

bar=new JMenuBar();

fileMenu=new JMenu("游戏");

初级=new JMenuItem("初级");

中级=new JMenuItem("中级");

高级=new JMenuItem("高级");

扫雷英雄榜=new JMenuItem("扫雷英雄榜");

fileMenu.add(初级);

fileMenu.add(中级);

fileMenu.add(高级);

fileMenu.add(扫雷英雄榜);

bar.add(fileMenu);

setJMenuBar(bar);

初级.addActionListener(this);

中级.addActionListener(this);

高级.addActionListener(this);

扫雷英雄榜.addActionListener(this);

hashtable=new Hashtable();

hashtable.put("初级","初级#"+999+"#匿名");

hashtable.put("中级","中级#"+999+"#匿名");

hashtable.put("高级","高级#"+999+"#匿名");

if(!英雄榜.exists()){

try{FileOutputStream out=new FileOutputStream(英雄榜); ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(hashtable);

objectOut.close();

out.close();

}

catch(IOException e){}

}

18

贸易壁垒案例

日本是世界最大紫菜消费国,年需求量约100亿张,但日本对紫菜进口多年来只对韩国紫菜发放约2.4亿张的进口配额,我国紫菜产品对日出口一直为零。江苏省紫菜协会于今年年初向商务部提出贸易壁垒调查申请,他们认为,日本政府对紫菜进口维持的配额管理措施违反了WTO相关协定的规定,对中国紫菜进入日本市场造成阻碍,构成贸易壁垒。4月22日, 商务部正式立案对日本紫菜进口管理措施进行贸易壁垒调查。 “这对国内其他行业是一个借鉴”,江苏省紫菜协会秘书长端木怡燕在接受《天下周刊》记者采访时表示。10月21日,国家商务部已经发布公告,决定中止由该协会提出的对日本紫菜进口管理措施进行的贸易壁垒调查。分析人士认为,在国内部分行业频频遭遇国外贸易壁垒调查的情况下,中国政府根据企业申请首次对外国政府实施的进口管理措施开展的贸易壁垒调查有望扳回一局,中国紫菜有望明年进入日本市场。 入世后首次对他国贸易壁垒调查 10月21日,商务部发布第65号公告,依据《对外贸易壁垒调查暂行规则》第二十二条的规定,决定中止对日本紫菜进口管理措施进行的贸易壁垒调查。由此,历时半年的我国“贸易壁垒调查第一案”正式宣告中止。业内人士认为,此案之所以引起广泛关注,是因为这是中国加入WTO后,由国内产业提出申请的第一起贸易壁垒调查案。 据端木怡燕介绍,“贸易壁垒调查第一案”的发生,源于商务部于2004年2月25日正式收到的江苏省紫菜协会代表下属107个会员提交的贸易壁垒调查申请。针对日本政府多年来通过进口配额、批准及原产地限制措施,只对韩国紫菜开放市场、不让中国紫菜进入的歧视性做法,江苏省紫菜协会请求对日本关于紫菜进口实施的限制措施进行贸易壁垒调查,并要求在此基础上与日本政府进行磋商,以促使其取消对中国紫菜的进口限制措施。 据了解,日本是世界最大紫菜消费国,年需求量约100亿张,但日本对紫菜进口实施配额管理以来,多年来只对韩国紫菜发放约2.4亿张的进口配额,我国紫菜产品对日出口一直为零。江苏省紫菜协会于今年年初向商务部提出的贸易壁垒调查申请中称,日本政府对紫菜进口维持的配额管理措施违反了WTO相关协定的规定,对中国紫菜进入日本市场造成阻碍,导致中国紫菜产品无法对日出口,引发减产、失业等一系列问题,构成贸易壁垒。4月22日,商务部正式立案对日本紫菜进口管理措施进行贸易壁垒调查。 赴日韩调查考察摸底细 商务部在公告中表示,发布立案公告后,商务部通知了申请人。2004年4月27日,商务部通过日本驻华大使馆向日本政府正式提交了立案公告文本。同日,调查机关通过日本驻华大使馆向日本政府有关部门提供了调查问卷。同年5月,调查机关向国内部分企业发放了调查问卷。调查期间,调查机关共收到日本政府、江苏省紫菜协会、宁波市瑾州锦锋水产食品有限公司、山东丰华食品有限公司提交的答卷。2004年6月,调查机关派出工作人员赴日本进行了调查取证。实地调查期间,调查人员向日本政府有关部门、日本有关行业协会及相关企业了解了被调查措施,并实地考察了日本千叶县紫菜共同贩卖所,对答卷人提交材料的完整性、真实性和准确性进行了调查。 据江苏省紫菜协会介绍,为了调查了解日本和韩国的紫菜生产现状、产业政策、流通体制、行业管理等方面的情况,尤其是考察中国紫菜出口日本的可行性,2003年8月20日~9月4日,由江苏省紫菜协会组团,省海洋与渔业局、

数据结构课程设计报告模板

《数据结构I》三级项目报告 大连东软信息学院 电子工程系 ××××年××月

三级项目报告注意事项 1. 按照项目要求书写项目报告,条理清晰,数据准确; 2. 项目报告严禁抄袭,如发现抄袭的情况,则抄袭者与被抄袭者均 以0分计; 3. 课程结束后报告上交教师,并进行考核与存档。 三级项目报告格式规范 1. 正文:宋体,小四号,首行缩进2字符,1.5倍行距,段前段后 各0行; 2. 图表:居中,图名用五号字,中文用宋体,英文用“Times New Roman”,位于图表下方,须全文统一。

目录 一项目设计方案 (3) 二项目设计分析 (4) 三项目设计成果 (4) 四项目创新创业 (5) 五项目展望 (6) 附录一:项目成员 (6) 附录二:相关代码、电路图等 (6)

一项目设计方案 1、项目名称: 垃圾回收 2、项目要求及系统基本功能: 1)利用数据结构的知识独立完成一个应用系统设计 2)程序正常运行,能够实现基本的数据增加、删除、修改、查询等功能3)体现程序实现算法复杂度优化 4)体现程序的健壮性 二项目设计分析 1、系统预期实现基本功能: (结合本系统预期具体实现,描述出对应基本要求(增、删、改、查等)的具体功能) 1. 2. 3. 4. 5. 6. 7. 2、项目模块功能描述 (基本分为组织实施组织、程序功能模块编写、系统说明撰写等。其中程序功能子模块实现) 模块一: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 模块二: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 模块n: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

数据结构课程设计题目2010

一、数据结构课程设计要求 1.学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。有问题及时主动通过各种方式与教师联系沟通。 2.学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。 3.课程设计按照教学要求需要两周时间完成,两周中每天(按每周5天)至少要上2小时的上机来调试C 或C++语言设计的程序,总共至少要上机调试程序20小时。属教师安排上机时间学生不得缺席。 二、数据结构课程设计题目 1. 运动会分数统计(限1 人完成) 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 功能要求: 1) 可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分, 3) 可以按学校编号或名称、学校总分、男女团体总分排序输出; 4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 5) 数据存入文件并能随时查询 6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称 输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构; 测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明; 2. 飞机订票系统(限1 人完成) 任务:通过此系统可以实现如下功能: 录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)

国际贸易贸易壁垒对中国的影响及解决对策

国际贸易壁垒对中国的影响文献综述 国贸061 李玥 2020206110 【中文摘要】 2009年9月,美国要求针对中国轮胎进行特殊保障措施调查,由此以轮胎特保案为代表的新一轮贸易保护在全球范围,尤其针对中国展开。国际贸易壁垒对中国产生了一系列影响,中国也对此实施了相应措施。本文具体从贸易壁垒对中国的影响和对应措施两方面综述国内外学者和各组织的观点。 【关键字】贸易壁垒、贸易保护、轮胎特保案 一、轮胎特保案的影响综述 2009年4月20日美国钢铁工人联合会向美国国际贸易委员会递交的一份议案,该议案要求针对中国轮胎进行特殊保障措施调查。4月29日,美国国际贸易委员会正式启动特保调查。美国国际贸易委员会曾于6月初举行了第一次听证会。9月中旬,美国总统奥巴马将最终决定是否对中国轮胎产品采取特保限制措施。此举一出,在全球范围内引起轩然大波,这是否意味着新一轮贸易保护在全球的开展,尤其是针对中国的行为。对此,社会各界有不同的观点。 就轮胎特保案而言,现在主要分为两派观点:一方认为中国轮胎进口造成美国轮胎工人失业,而另一方观点则认为这是典型的贸易保护主义行为。 代表美国轮胎工人的美国钢铁工人联合会认为,中国轮胎进口严重危害了美国轮胎生产商的经济利益,造成了轮胎工人的失业,因为中国轮胎的价格只是美国轮胎价格的一半,对此他们要求对中国轮胎产品采取特保限制措施。其中,美国贸易代表柯克6月29日提议,要求对中国进口轻型乘用车轮胎连续3年分别征收55%、45%和35%的关税,该案涉资约17亿美元。 而另一方包括了美国轮胎产业协会、美国轮胎自由贸易联盟、美国汽车贸易政策理事会和美国零售业领导者协会等业界组织及美国轮胎进口商和专家学者则纷纷就美国对华轮胎特保调查案表态,认为此举不仅不会保护美国轮胎生产商和工人就业,反而会

数据结构课程设计报告

《数据结构与算法》课程设计报告 学号: 班级序号: 姓名: 指导教师: 成绩: 中国地质大学信息工程学院地理信息系统系 2011年12 月

1.需求规格说明 【问题描述】 利用哈夫曼编码进行对已有文件进行重新编码可以大大提高减小文件大小,减少存储空间。但是,这要求在首先对一个现有文件进行编码行成新的文件,也就是压缩。在文件使用时,再对压缩文件进行解压缩,也就是译码,复原原有文件。试为完成此功能,写一个压缩/解压缩软件。 【基本要求】 一个完整的系统应具有以下功能: (1)压缩准备。读取指定被压缩文件,对文件进行分析,建立哈夫曼树,并给出分析结果(包括数据集大小,每个数据的权值,压缩前后文件的大小),在屏幕上输出。 (2)压缩。利用已建好的哈夫曼树,对文件进行编码,并将哈夫曼编码及文件编码后的数据一起写入文件中,形成压缩文件(*.Haf)。 (3)解压缩。打开已有压缩文件(*.Haf),读取其中的哈夫曼编码,构建哈夫曼树,读取其中的数据,进行译码后,写入文件,完成解压缩。 (4)程序使用命令行方式运行 压缩命令:SZip A Test.Haf 1.doc 解压缩命令:SZip X Test.Haf 2.doc或SZip X Test.Haf 用户输入的命令不正确时,给出提示。 (5)使用面向对象的思想编程,压缩/解压缩、哈夫曼构建功能分别构建类实现。 2.总体分析与设计 (1)设计思想: 1、压缩准备:1> 读文件,逐个读取字符,统计频率 2> 建立哈夫曼树 3> 获得哈弗曼编码 2、压缩过程: 1> 建立一个新文件,将储存权值和字符的对象数组取存储在文件头

数据结构实验总结报告

数据结构实验总结报告 一、调试过程中遇到哪些问题? (1)在二叉树的调试中,从广义表生成二叉树的模块花了较多时间调试。 由于一开始设计的广义表的字符串表示没有思考清晰,处理只有一个孩子的节点时发生了混乱。调试之初不以为是设计的问题,从而在代码上花了不少时间调试。 目前的设计是: Tree = Identifier(Node,Node) Node = Identifier | () | Tree Identifier = ASCII Character 例子:a(b((),f),c(d,e)) 这样便消除了歧义,保证只有一个孩子的节点和叶节点的处理中不存在问题。 (2)Huffman树的调试花了较长时间。Huffman编码本身并不难处理,麻烦的是输入输出。①Huffman编码后的文件是按位存储的,因此需要位运算。 ②文件结尾要刷新缓冲区,这里容易引发边界错误。 在实际编程时,首先编写了屏幕输入输出(用0、1表示二进制位)的版本,然后再加入二进制文件的读写模块。主要调试时间在后者。 二、要让演示版压缩程序具有实用性,哪些地方有待改进? (1)压缩文件的最后一字节问题。 压缩文件的最后一字节不一定对齐到字节边界,因此可能有几个多余的0,而这些多余的0可能恰好构成一个Huffman编码。解码程序无法获知这个编码是否属于源文件的一部分。因此有的文件解压后末尾可能出现一个多余的字节。 解决方案: ①在压缩文件头部写入源文件的总长度(字节数)。需要四个字节来存储这个信息(假定文件长度不超过4GB)。 ②增加第257个字符(在一个字节的0~255之外)用于EOF。对于较长的文件,

会造成较大的损耗。 ③在压缩文件头写入源文件的总长度%256的值,需要一个字节。由于最后一个字节存在或不存在会影响文件总长%256的值,因此可以根据这个值判断整个压缩文件的最后一字节末尾的0是否在源文件中存在。 (2)压缩程序的效率问题。 在编写压缩解压程序时 ①编写了屏幕输入输出的版本 ②将输入输出语句用位运算封装成一次一个字节的文件输入输出版本 ③为提高输入输出效率,减少系统调用次数,增加了8KB的输入输出缓存窗口 这样一来,每写一位二进制位,就要在内部进行两次函数调用。如果将这些代码合并起来,再针对位运算进行一些优化,显然不利于代码的可读性,但对程序的执行速度将有一定提高。 (3)程序界面更加人性化。 Huffman Tree Demo (C) 2011-12-16 boj Usage: huffman [-c file] [-u file] output_file -c Compress file. e.g. huffman -c test.txt test.huff -u Uncompress file. e.g. huffman -u test.huff test.txt 目前的程序提示如上所示。如果要求实用性,可以考虑加入其他人性化的功能。 三、调研常用的压缩算法,对这些算法进行比较分析 (一)无损压缩算法 ①RLE RLE又叫Run Length Encoding,是一个针对无损压缩的非常简单的算法。它用重复字节和重复的次数来简单描述来代替重复的字节。尽管简单并且对于通常的压缩非常低效,但它有的时候却非常有用(例如,JPEG就使用它)。 变体1:重复次数+字符 文本字符串:A A A B B B C C C C D D D D,编码后得到:3 A 3 B 4 C 4 D。

数据结构课程设计报告java最小生成树

上海电力学院 数据结构(JAVA)课程设计 题目:____最小生成树_______ 学生姓名:_****___________ 学号:_____*******_______ 院系:计算机科学与技术学院 专业年级: ______*****___级 20**年 *月**日

目录 1.设计题目 (1) 2.需求分析 (1) 1)运行环境 (1) 2)输入的形式和输入值的范围 (1) 3)输出的形式描述 (1) 4)功能描述 (1) 5)测试数据 (1) 3.概要设计 (1) 1)抽象数据类型定义描述 (1) .2)功能模块设计 (1) 3)模块层次调用关系图 (2) 4.详细设计。实现概要设计中定义的所有的类的定义及类中成员函数,并对主要的模块写出伪码算法。 (2) 5.调试分析。包括调试过程中遇到的问题及解决的方法、算法的时间空间复杂性分析、经验体会。 (6) 6.用户使用说明。详细列出每一步的操作说明。 (7) 7. 测试结果 (7) 8.附录:程序设计源代码 (9)

一、设计题目 1).问题描述 若要在 n 个城市之间建设通信网络,只需要架设n-1 条线路即可。如何以最低的经济代价建设这个通信网,是一个网的最小生成树问题。 2). 基本要求 以邻接多重表存储无向带权图,利用克鲁斯卡尔算法或普瑞姆算法求网的最小生成树。 二、需求分析 1)运行环境 软件在JDK运行,硬件支持windows系统 2)输入的形式和输入值的范围 自动生成顶点数据在10~20之间;各个顶点之间权值在25~50之间;通过程序改动亦可生成已知顶点权值之间的最小生成树,需将随机生成代码改为edge edge[]={new edge(0,1,16),new(0,2,18)......}; 将已知顶点、权值通过其函数输入再生成其所对应最小生成树。 3)输出的形式描述 输出随机生成顶点个数以及各个顶点之间权值;然后输出本次生成顶点之间构成的最小生成树。

数据结构课程设计

福建工程学院课程设计 课程:数据结构课程设计 题目: 1.综合应用 2.折半查找 3.快速排序 专业:软件工程 班级:1101 座号:3110305129 姓名:潘聪 2012 年 6 月26 日

设计题目1:综合应用 一、问题描述 有N名学生,每名学生含有如下信息:学号、姓名、某四门课的成绩,并计算其总分,用一结构数组表示之。然后实现以下功能: (1)将这些数据存放至文件stuf.dat中; (2)将文件中的数据读出至结构数组中,并显示之; (3)输出总分最高分和最低分的名字; (4)输出总分在340分,单科成绩不低于80分的名单; (5)求出各科平均分数; (6)按总分排名; (7)输出补考名单。 二、解决问题的算法思想描述 (1)子函数:首先确定需要的子函数,总共7个,对应的功能分别是题目要求的七项(2)主函数:主函数中,要设计出易于使用的人机界面,就必须要用到switch 。 (3)文件的存放读取,必须要用到文件的函数,fopen,fread,fclose等。 (4)把每个学生的信息定义在一个结构数组中,利用结构数组更加方便。 (5)各科成绩排名用冒泡排序即可。 (6)输出总分,补考名单,各科的平均分都比较简单。 三、设计 1. 数据结构的设计和说明 //定义结构体 typedef struct { int num; //学号 char name[10]; //姓名 int score1; //语文 int score2; //数学 int score3; //物理 int score4; //化学 }student; student stu[MAX]; //结构数组 2.模块结构图及各模块的功能:

数据结构课程设计报告模板

课程设计说明书 课程名称:数据结构 专业:班级: 姓名:学号: 指导教师:成绩: 完成日期:年月日

任务书 题目:黑白棋系统 设计内容及要求: 1.课程设计任务内容 通过玩家与电脑双方的交替下棋,在一个8行8列的方格中,进行棋子的相互交替翻转。反复循环下棋,最后让双方的棋子填满整个方格。再根据循环遍历方格程序,判断玩家与电脑双方的棋子数。进行大小判断,最红给出胜负的一方。并根据y/n选项,判断是否要进行下一局的游戏。 2.课程设计要求 实现黑白两色棋子的对峙 开发环境:vc++6.0 实现目标: (1)熟悉的运用c语言程序编写代码。 (2)能够理清整个程序的运行过程并绘画流程图 (3)了解如何定义局部变量和整体变量; (4)学会上机调试程序,发现问题,并解决 (5)学习使用C++程序来了解游戏原理。 (6)学习用文档书写程序说明

摘要 本文的研究工作在于利用计算机模拟人脑进行下黑白棋,计算机下棋是人工智能领域中的一个研究热点,多年以来,随着计算机技术和人工智能技术的不断发展,计算机下棋的水平得到了长足的进步 该程序的最终胜负是由棋盘上岗双方的棋子的个数来判断的,多的一方为胜,少的一方为负。所以该程序主要运用的战术有削弱对手行动战术、四角优先战术、在游戏开局和中局时,程序采用削弱对手行动力战术,即尽量减少对手能够落子的位置;在游戏终局时则采用最大贪吃战术,即尽可能多的吃掉对手的棋子;而四角优先战术则是贯穿游戏的始终,棋盘的四角围稳定角,不会被对手吃掉,所以这里是兵家的必争之地,在阻止对手进角的同时,自己却又要努力的进角。 关键词:黑白棋;编程;设计

数据结构课程设计

<<数据结构>> 课 程 设 计 班级:111004 姓名:董丽美 学号:111004122 指导教师:史延新 完成日期:2013 _07 _10

题目一:约瑟夫环问题 【问题描述】约瑟夫(Joseph)问题的一种描述是:编号为1,2,…,n 的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m 的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出列顺序。【基本要求】利用单向循环链表存储结构模拟此过程,按照出列的顺序打印出各人的编号。 【测试数据】m的初值为20;n=7,7个人的密码依次为:3,1,7,2,4,8,4,首先m值为6(正确的出列顺序应为:6,1,4,7,2,3,5) 一 .需求分析 1.用单循环链表存储并遍历及删除节点的方法,计算并输出约瑟夫环的问题。 2.环中总人数和节点信息由用户输入,且均为正整数。3.在窗口界面输出出列顺序的编号。 二.概要设计

1.设定链表的抽象数据类型定义: ADT List{ 数据对象:D={a(i)|a(i)∝Elemset,i=1,2,…,n,n>=0} 数据关系:R1={|a(i-1),a(i)∝D,i=2,…,n}基本操作: InitList(&L) 操作结果:构造一个空的线性表 ListInsert(&L,i,e) 初始条件:线性表L已经存在。 操作结果:在L中第i个位置之前插入新的数据元素 e,L的长度增加1。 ListDelete(&L,i,&e) 初始条件:线性表L已经存在且非空,1<=i<=ListLength(L)。操作结果:删除L的第i个数据元素,并用e返回其值,L 的长度减1 。 } 2.算法的基本思想: 根据题目要求,采用单循环线性表的基本操作来实现约瑟夫环问题。首先根据所给信息生成链表节点并插入,根据节点记录密码及其所在链表中的顺序,由给出的初始访问值进行遍历,当变量i增量等于所给的值(即关键字)时,指针所指的节点处的顺序值即为所需输出的顺序号。每输出一次顺

中国最重要的贸易壁垒

中国最重要的贸易壁垒 2012年10月31日 来源:东西网 作者:史剑道(传统基金会亚洲经济事务的高级研究员) 编者按:本文为翻译国外专家的文章,反映来自对方的观点,仅供国内智库研究者参考。 我叫史剑道,是传统基金会亚洲经济事务的高级研究员。以下证词仅代表我个人,与传统基金会的任何官方立场无关。 每一个国家都会设置贸易壁垒以保护本国知识产权,每一个国家也都会有好的和坏的贸易伙伴。此外,还有不容小觑的对手——某些国家的经济规模意味着其政策对经济的倾斜。 按照美国商贸易代表团的看法,中国是知识产权侵权最为严重的国家之一。同时也存在着最过分的贸易补贴系统,限制外商进入中国市场。中国目前是全球第二大经济体,但这些问题都是致命的。 脆弱的知识产权保护直击中美贸易的核心。不幸的是,目前还未完全明确要如何提高对中美贸易核心的保护。简单的报复可能是合理的,但是不会有用。 因此,为了更加方便管理,我们应该更加关注其补贴。补贴使得大量廉价中国商品充斥于美国市场,这对美国消费者而言是有利的,但是在美国对中国的出口方面是完全不利的。在这种补贴政策下,美国的商品和服务被大量排挤,中国某些企业从中受益。美国应该致力于减少中国借由补贴建立的贸易壁垒。 面对中国贸易壁垒时,国会应该:1)寻求通过间接激励促进中国加强知识产权保护的方式。比如加强跨太平洋伙伴关系中有关知识产权的条款约束;2)在双边会谈中要求中国减少对优先发展经济的补贴。特别地,应要求放宽产业中基本的反竞争管制;3)强调汇率问题,因为这也是影响知识产权补贴的一个次要因素。 贸易壁垒问题在中国周边国家也广泛存在,但这很难对付,降低中国的贸易壁垒将在全球范围内起到一个正面积极的作用。 一、知识产权:正在破坏贸易关系 委员会关注知识产权是完全合理的,创新源于知识产权的保障,脆弱的知识产权保护会抑制创新。美国的比较优势就是创新,因此出口产品主要以计算机和医疗设备为主,还包括医药和其他先进设备。创新还激发了包括教育到娱乐等领域的服务竞争力。这是美国与其他国家进行贸易的真实情况。

数据结构课程设计报告

编号 课程设计 题目 1、一元稀疏多项式计算器 2、模拟浏览器操作程序 3、背包问题的求解 4、八皇后问题 二级学院计算机科学与工程学院 专业计算机科学与技术 班级 2011级 37-3班 学生姓名 XX 学号 XXXXXXXXXX 指导教师 XXXXX 评阅教师 时间 1、一元稀疏多项式计算器 【实验内容】 一元稀疏多项式计算器。

【问题描述】 设计一个一元稀疏多项式简单计算器。 【需求分析】 其基本功能包括: (1)输入并建立多项式; (2)输出多项式,输出形式为整数序列为:n,c1,e1,c2,e2,……,cn,en,其中n 是多项式的项数,ci,ei分别是第i项的系数和指数,序列按指数降序排序;(3)多项式a和b相减,建立多项a+b; (4)多项式a和b相减,建立多项式a-b; (5)计算多项式在x处的值; (6)计算器的仿真界面(选做); 【概要设计】 -=ADT=- { void input(Jd *ha,Jd *hb); void sort(dnode *h)

dnode *operate(dnode *a,dnode *b) float qiuzhi(int x,dnode *h) f",sum); printf("\n"); } 【运行结果及分析】 (1)输入多项式:

(2)输出多项式(多项式格式为:c1x^e1+c2x^e2+…+cnx^en): (3)实现多项式a和b相加: (4)实现多项式a和b相减: (5)计算多项式在x处的值:

2、模拟浏览器操作程序 【实验内容】 模拟浏览器操作程序 【问题描述】 标准Web浏览器具有在最近访问的网页间后退和前进的功能。实现这些功能的一个方法是:使用两个栈,追踪可以后退和前进而能够到达的网页。在本题中,要求模拟实现这一功能。 【需求分析】 需要支持以下指令: BACK:将当前页推到“前进栈”的顶部。取出“后退栈”中顶端的页面,使它成为当前页。若“后退栈”是空的,忽略该命令。 FORWARD:将当前页推到“后退栈”的顶部。取出“前进栈”中顶部的页面,使它成为当前页。如果“前进栈”是空的,忽略该命令。 VISIT:将当前页推到“后退栈”的顶部。使URL特指当前页。清空“前进栈”。 QUIT:退出浏览器。 假设浏览器首先加载的网页URL是:http:

最新数据结构实训总结

精品文档 这次课程设计的心得体会通过实习我的收获如下1、巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。2、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。4、通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。从刚开始得觉得很难,到最后把这个做出来,付出了很多,也得到了很多,以前总以为自己对编程的地方还不行,现在,才发现只要认真做,没有什么不可能。 编程时要认真仔细,出现错误要及时找出并改正,(其中对英语的要求也体现出来了,因为它说明错误的时候都是英语)遇到问题要去查相关的资料。反复的调试程序,最好是多找几个同学来对你的程序进行调试并听其对你的程序的建议,在他们不知道程序怎么写的时候完全以一个用户的身份来用对你的用户界面做一些建议,正所谓当局者迷旁观者清,把各个注意的问题要想到;同时要形成自己的编写程序与调试程序的风格,从每个细节出发,不放过每个知识点,注意与理论的联系和理论与实践的差别。另外,要注意符号的使用,注意对字符处理,特别是对指针的使用很容易出错且调试过程是不会报错的,那么我们要始终注意指针的初始化不管它怎么用以免不必要麻烦。 通过近两周的学习与实践,体验了一下离开课堂的学习,也可以理解为一次实践与理论的很好的连接。特别是本组所做的题目都是课堂上所讲的例子,在实行之的过程中并不是那么容易事让人有一种纸上谈兵的体会,正所谓纸上得来终觉浅绝知此事要躬行。实训过程中让我们对懂得的知识做了进一步深入了解,让我们的理解与记忆更深刻,对不懂的知识与不清楚的东西也做了一定的了解,也形成了一定的个人做事风格。 通过这次课程设计,让我对一个程序的数据结构有更全面更进一步的认识,根据不同的需求,采用不同的数据存储方式,不一定要用栈,二叉树等高级类型,有时用基本的一维数组,只要运用得当,也能达到相同的效果,甚至更佳,就如这次的课程设计,通过用for的多重循环,舍弃多余的循环,提高了程序的运行效率。在编写这个程序的过程中,我复习了之前学的基本语法,哈弗曼树最小路径的求取,哈弗曼编码及译码的应用范围,程序结构算法等一系列的问题它使我对数据结构改变了看法。在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,也从中发现自己平时学习的不足和薄弱环节,从而加以弥补。 精品文档

数据结构实验——JAVA版可视化实现最短路径算法

长沙理工大学 《数据结构》课程设计报告 杭宸 学 院 计算机与通信工程 专 业 计算机科学与技术 班 级 计科11-1 学 号 36 学生姓名 杭宸 指导教师 黄敏 课程成绩 完成日期 2013年7月4日

课程设计成绩评定 学院计算机与通信工程专业计算机科学与技术 班级计算机1101 学号201150080136 学生姓名杭宸指导教师黄敏 完成日期2013年7月4日 指导教师对学生在课程设计中的评价 评分项目优良中及格不及格课程设计中的创造性成果 学生掌握课程内容的程度 课程设计完成情况 课程设计动手能力 文字表达 学习态度 规范要求 课程设计论文的质量 指导教师对课程设计的评定意见 综合成绩指导教师签字 2009年9月15日

用java的方式实现可视化的Dijkstra最短路径算法(无向图) 学生:杭宸指导老师:黄敏 摘要在这个学期,我学习了数据结构这门课程,正是这门课程让我正真地开始懂得了一些基础的编程思想,而通过这次的实习我更是成功实现了数据结构可视化,具体化的想法。在整个学期中,我主要使用面向对象的JAVA语言进行编程,深刻地感受到面向对象的优势,因此在本次试验中,我采用了JAVA语言。另外在本次试验的3天中,我走过了不少弯路,不在此一一列举,具体遇到的问题详见正文部分。最后也是真心感谢各位老师的倾力栽培和对我任性(没用使用大众的C语言)的包容。不过有些功能尚未实现,请老师能够指导。 1 引言 本次实验,主要的目的有两个,一是实现图的可视化操作,二是进行最短路径算法的实践学习。这个算法能够普遍运用于地图查询,工程安排,交通路线规划等许多方面,可见熟练掌握这种算法是非常重要的。 正因为此次我使用的语言在我们年级中比较罕见,所以会尽可能详细得将代码进行注释,以便读者理解。 正如大家所知,编程语言有三种重要的思想——面向机器、面向过程和面向对象。而面向地分析问题,能够把具有相似属性以及相似处理方法的事物归为一类进行操作,而且能够有继承、重载、覆盖等各类手段,这使得针对某一类对象问题的处理不再单一,这种思想和人类的自然思想很像,更加容易使人们理解。而JAVA的各种强大的jar包蕴含着丰富的类库,比起C语言更加容易实现诸如可视化、多媒体文件处理等功能,而单纯在数据结构与算法分析层面,JAVA就可以通过在类的内部建立自己的一个对象代替了指针,有效地避免了函数返回容易出错的问题,而且JAVA存在垃圾回收机制,被遗弃的对象不需要用函数释放空间。在众多理由下,我选择了这个语言进行本次课程设计。 我将会依次介绍算法和可视化两大部分。这么做是为了强调算法的重要性,因为算法是程序的灵魂,没有好的算法,就难以实现节省空间时间的目的,甚至会使得程序的结果出错。而且算法比起可视化的操作也好懂些,可视化的操作需要一定的开发经验才能够明白。 预备知识: JAVA的类大致如下: public class XXX{ 变量 public XXX(){ 构造函数可以有参也可以无参,也可以重载 } public void(或者变量)(){ }带变量的要返回,没带变量的用return;是直接挑出函数 } 主函数: public static void main(String args[]){String 是字符串 } 在带有主函数的类中,如果主函数要调用本类的变量或者是其他函数,请在定义时加上static,不过构造函数是不能够加static的,要注意啊。另外JAVA没有友元函数,而且变量的赋值操作只能写在类的所有方法之前或者方法中,在方法外面不能够定义变

数据结构课程设计

郑州工业应用技术学院 课程设计说明书 题目:手机信息数据检索 姓名:王港 院(系):信息工程学院 专业班级:16级计算机科学与技术6班 学号:1601110241 指导教师:王礼云 成绩: 时间:2018 年 1 月 2 日至2018 年 1 月12

郑州工业应用技术学院 课程设计任务书 题目手机信息数据检索 专业、班级16级计算机科学与技术6班学号1601110241姓名王港 主要内容: 开发一个手机信息数据检索,使管理员可以很好的管理回收的手机,避免平时废旧手机没有作用,不知道如何去处理旧的手机等问题。减轻废旧手机资源的浪费。本废旧手机回收系统利用单链表实现了基本信息的添加。管理员能够对各种信息进行修改,例如手机信息添加,手机信息删除,密码修改,退出系统。 基本要求: 1、巩固并加深学生对数据结构基本算法的理解; 2、认识面向过程和面向对象两种设计方法的区别; 3、进一步掌握和应用VC++6.0 集成开发环境; 4、提高运用对于数据结构的理解,增强了我解决实际问题的能力; 5、初步掌握开发小型实用软件的基本方法。 主要参考资料: [1]谭浩强. C语言基础课程[M].北京:清华大学出版社,2009. [2]刘振安. C程序设计课程设计[M].北京:机械工业出版社,2016. [3]滕国文. 数据结构课程设计[M].北京:清华大学出版社, 2010. [4]吴伟民. 数据结构[M].北京:清华大学出版社, 2017. 完成期限:2018.1.2-2018.1.12 指导教师签名: 课程负责人签名: 2018 年1 月12 日

摘要 21世纪以来,经济高速发展,人们生活发生了日新月异的变化,特别是手机普及到每个人生活的各个领域。但对于手机的回收越来越不适应现在社会的发展。计算机技术的飞速发展,也为我们带来了巨大的便利。为了适应现代人们回收旧手机方便的愿望。手机信息管理系统软件能够为我们现如今手机回收带来巨大的便利。 我国现如今已经成为手机产品的生产消费大国,伴随着通信技术的迅猛发展,手机更新换代的速度不断提高。特别是追求时尚潮流的大学生群体手机的更换频率增加更快。随着智能手机产品不断推陈出新,手机更新换代的周期也在缩短。据业内人士估计,我国存量闲置手机至少以亿计,但旧手机的回收率却不到2%,旧手机的处置成为一大问题。 中国目前废旧手机的回收现状和回收模式,造成我国手机回收效率低下,更是对垃圾回收产业带来了巨大的冲击,同时目前,我国年废旧手机产生量约上亿部,大部分闲置家中,未能有效回收利用。既浪费了资源,又威胁居民身心健康,造成环境污染。在分析我国废旧手机回收利用现状的基础上,提出了完善废旧手机回收的法律制度、增强消费者环保意识、构建绿色环保废旧手机回收利用新模式等建议。本手机信息数据检索为回收手机的人管理废旧的手机使用,使用单链表实现,对于信息的增加删除效率比较高,可以很方便的进行各种信息管理,对于数据的管理可以让我们更好的面对管理手机的繁杂工作。 关键字:信息检索;冒泡算法;单链表

数据结构课程设计报告

数据结构课程设计 设计说明书 TSP 问题 起止日期:2016 年 6 月27 日至2016 年7 月 1 日 学生姓名 班级 学号 成绩 指导教师( 签字) 2016 年7 月 1 日

目录 第1 章需求分析.................................................................................1... 1.1 简介 (1) 1.2 系统的开发背景 (1) 1.3 研究现状 (1) 第2 章概要设计.................................................................................2... 2.1 系统开发环境和技术介绍 (2) 2.2 系统需求分析 (2) 2.2.1 总体功能分析 (2) 2.2.2 核心功能分析 (3) 第3 章详细设计...................................................................................4... 3.1 系统开发流程 (4) 3.2 系统模块设计 (4) 3.3 系统结构 (6) 3.2 系统流程图 (6) 第4 章调试分析...................................................................................7... 4.1 程序逻辑调试 (7) 4.2 系统界面调试 (8) 第5 章测试结果...................................................................................9... 5.1 测试环境 (9) 5.2 输入输出测试项目 (9) 5.3 测试结果 (10) 结论.....................................................................................................1..1.. 参考文献................................................................................................1..1. 附录.......................................................................................................1..2..

数据结构课程设计——综合查找算法的实现.

目录 目录 (2) 一、问题描述 (3) 二、问题分析 (4) 三、数据结构描述 (4) 四、算法设计 (5) 1、流程图 (5) 2、具体算法 (5) 五、详细程序清单 (8) 六、程序运行结果 (19)

一、问题描述 1、顺序表查找的问题描述 顺序查找又称为线性查找,它是一种最简单、最基本的查找方法。从顺序表的一端开始,依次将每一个数据元素的关键字值与给定Key进行比较,若某个数据元素的关键字值等于给定值Key,则表明查找成功;若直到所有的数据元素都比较完毕,仍找不到关键字值为Key 的数据元素,则表明查找失败。 2、有序表的查找问题描述 折半查找也称为二分查找,作为二分查找对象的数据必须是顺序存储的有序表,通常假定有序表是按关键字值从小到大排列有序,即若关键字值为数值,则按数值有序;若关键字值是字符数据,则按对应的Unicode码有序。二分查找的基本思想:首先取整个有序表的中间记录的关键字值与给定值相比较,若相等,则查找成功;否则以位于中间位置的数据元素为分界点,将查找表分为左右两个子表,并判断待查找的关键字值Key是在左子表还是在右子表,再在子表中重复上述步骤,直到待查找的关键字值Key的记录或子表长度为0。 3、哈希表查找的问题描述 在哈希表上进行查找的过程是要给定要查找的关键字的值,根据构造哈希表时设定的哈希函数求得哈希地址,若此哈希地址上为空,即没有数据元素,则查找不成功;否则比较关键字,若相等,则查找成功;若不相等,则根据构造哈希表时设置的处理冲突的方法找下一个地址,知道某个位置上为空或者关键字比较相等为止。 哈希表是在关键字和存储位置之间直接建立了映像,但由于冲突的产生,哈希表的查找过程仍然是一个和关键字比较的过程。因此,仍需用平均查找长度来衡量哈希表的查找效率。查找过程中与关键字比较的次数取决于构造哈希表是选择的哈希函数和处理冲突的方法。哈希函数的“好坏”首先影响出现冲突的频率,假设哈希函数是均匀的,即它对同样一组随机的关键字出现冲突的可能性是相同的。因此哈希表的查找效率主要取决于构造哈希表时处理冲突的方法。 4、二叉排序树的查找问题描述 在顺序表的3种查找方法中,二分查找具有最高的效率,但是由于二分查找要求表中记录按关键字有序,且不能用链表做存储结构,因此当表的插入、删除操作非常频繁时,为维护表的有序性,需要移动表中很多记录。这种由移动记录引起的额外时间开销,就会抵消二分查找的优点。这里讨论的不仅是二叉排序树具有二分查找的效率,同时又便于在查找表中进行记录的增加和删除操作。 5、界面设计模块问题描述 设计一个菜单模式界面,让用户可以选择要查找的方式,界面上还有退出按钮,可以退出程序。界面要求简洁明了,便于使用。 6、按钮动作命令模块问题描述 在设计好图形界面后,就必须对相应的按钮进行事件驱动程序设计。运行Java图形用户界面程序时,程序与用户交互,比如说,在框架中显示多个按钮,当点击按钮时,就会从按钮触发一个事件。同时,查找的操作必须要有输入和输出,则需要使用对话框和命令窗口进行输入关键字和输出结果。

数据结构课程设计报告

《数据结构课程设计》报告 题目:课程设计题目2教学计划编制 班级:700 学号:09070026 姓名:尹煜 完成日期:2011年11月7日

一.需求分析 本课设的任务是根据课程之间的先后的顺序,利用拓扑排序算法,设计出教学计划,在七个学期中合理安排所需修的所有课程。 (一)输入形式:文件 文件中存储课程信息,包括课程名称、课程属性、课程学分以及课程之间先修关系。 格式:第一行给出课程数量。大于等于0的整形,无上限。 之后每行按如下格式“高等数学公共基础必修6.0”将每门课程的具体信息存入文件。 课程基本信息存储完毕后,接着给出各门课程之间的关系,把每门课程看成顶点,则关系即为边。 先给出边的数量。大于等于0的整形。 默认课程编号从0开始依次增加。之后每行按如下格式“1 3”存储。此例即为编号为1的课程与编号为3的课程之间有一条边,而1为3的前驱,即修完1课程才能修3课程。 例: (二)输出形式:1.以图形方式显示有向无环图

2.以文本文件形式存储课程安排 (三)课设的功能 1.根据文本文件中存储的课程信息(课程名称、课程属性、课程学分、课程之间关系) 以图形方式输出课程的有向无环图。 拓展:其显示的有向无环图可进行拖拽、拉伸、修改课程名称等操作。 2.对课程进行拓扑排序。 3.根据拓扑排序结果以及课程的学分安排七个学期的课程。 4.安排好的教学计划可以按图形方式显示也可存储在文本文件里供用户查看。 5.点击信息菜单项可显示本人的学好及姓名“09070026 尹煜” (四)测试数据(见六测设结果)

二.概要设计 数据类型的定义: 1.Class Graph即图类采用邻接矩阵的存储结构。类中定义两个二维数组int[][] matrix 和Object[][] adjMat。第一个用来标记两个顶点之间是否有边,为画图服务。第二个 是为了实现核心算法拓扑排序。 2.ArrayList list用来存储课程信息。DrawInfo类是一个辅助画图的类,其中 包括成员变量num、name、shuxing、xuefen分别代表课程的编号、名称、属性、 学分。ArrayList是一个DrawInfo类型的数组,主要用来在ReadFile、DrawG、DrawC、SaveFile、Window这些类之间辅助参数传递,传递课程信息。 3.Class DrawInfo, 包括int num;String name;String shuxing;float xuefen;四个成员变量。 4.Class Edge包括int from;int to;double weight;三个成员变量。 5.Class Vertex包括int value一个成员变量。 主要程序的流程图: //ReadFile.java

相关主题
文本预览
相关文档 最新文档