实验五 数据结构综合应用

20162317袁逸灏 实验五 数据结构综合应用

实验内容

  1. 实验五-1-编译、运行、测试

    1. git clone 小组项目
    2. 编译项目,提交编译成功截图(全屏,要有学号信息)
    3. 提交运行过程中的截图(全屏,要有学号信息)
  2. 实验五-2-代码修改

    1. 在小组项目中,找一个合适的地方添加一个按钮,点击显示自己的学号
    2. 提交运行截图(全屏,要有学号信息)

实验要求

  1. 分析系统架构
  2. 编译、运行、测试系统
  3. 修改系统
  4. 分析数据结构、排序、查找算法的应用

实验过程

1.实验五-1-编译、运行、测试

这个实验考察的是学生对于代码项目的运用,包括:克隆项目,将代码编译以及将代码运行。

  • git clone 小组项目

  • 将项目编译

  • 提交运行过程中的截图

2. 实验五-2-修改代码

这个实验考察的是我们对安卓类的代码使用的熟悉程度。

  • 在一个合适的地方添加一个按钮,点击显示自己的学号

(我选择是在主封面做多一个按键)首先,在主封面的布局文件中添加一个按键组件...

然后返回主封面活动的类中添加该组件的指针以及将该按键进行实例化并注册监听事件...

最后在onClick方法中实现需要的功能

最后效果:

实验知识点

  • Android代码的使用
  • 项目的基本操作

实验总结

分析系统架构

关于系统架构,主要分位三种:

  1. 逻辑架构:软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口,商业逻辑元件,等等。
  2. 物理架构:软件元件是怎样放到硬件上的。
  3. 系统架构:系统的非功能性特征,如可扩展性、可靠性、强壮性、灵活性、性能等。

一、逻辑架构

对于我们小组项目的逻辑架构,主要有的就是用户界面

对于用户来说,刚进入游戏,首先看到的是主界面

界面中有两个按钮:

  • 开始游戏:点击后会进行活动跳转
  • 结束游戏:点击后进程会被杀死,然后退出游戏

点击开始游戏后,进入到选车界面

点击对应车辆即可使用对应车辆进入游戏。此外,选车界面还有一个搜索框,输入想用的车辆也可以达到同样的效果。

当用户输入的车辆不存在的时候,它会用弹窗告诉你没有对应车辆在可选的车库中。


选好车辆后,会进入音乐选择界面

点击对应音乐名称的位置即可在游戏中听到对应的音乐作为背景音乐。此外,选音乐界面还有一个搜索框。输入想听的,乐库中存在的音乐,也可以达到同样的效果。

当用户输入的音乐不存在的时候,它会用弹窗的形式告诉你没有对应的音乐在可选的乐库中。


选好音乐之后就会进入正式的游戏界面

在游玩过程中,会有障碍物的其他车辆出现,当碰撞到的时候就会游戏结束

但用户可以使用子弹将其他车辆击破,但障碍物不可。

游戏共有10关,每关需要达到的目标分数不同,当10关都通过就会出现通关界面


总的来说,我们的逻辑架构就是:

二、物理架构

我们的项目是一个app软件,硬件是手机。将软件安装到硬件的方式是:通过将项目打包成apk,然后在手机上进行安装。

三、系统架构

因为这是Alpha阶段冲刺出来的产物,所以功能还不仅完善,如每种敌人都是要打三下才能打烂,子弹只有一种,用户选择的歌曲只能是乐库提供的等,功能还比骄地单一,可以说还有许多潜力,所以可扩展性是比较强的,同时也相当灵活。在后期的开发中会尽可能地添加更多更完善的功能。

但在于可靠性、稳定性来说游戏还是有保证的,测试至今。游戏没有出现线程卡死的情况,游戏的运行也是可以保持1s20帧的正常速度。

编译、运行、测试系统

详细操作看:实验五-1-编译、运行、测试

修改系统

详细操作看:实验五-2-修改代码

分析数据结构、排序、查找算法的应用

分析数据结构、排序、查找算法的应用

根据要求,游戏中要包含某种数据结构的算法。根据《Java程序涉及与数据结构教程第二版》中所介绍的,数据结构算法主要包含:索引和查找、排序、栈、队列、树、堆、图。我们小组选取的是索引和查找

  • 索引

关于索引:我们小组使用的是哈希索引

 //车辆查找方法
    private boolean Searching(String carName){
        boolean judge = false;
        HashMap hashMap = new HashMap();
        hashMap.put("Flash", R.drawable.car1play);
        hashMap.put("Lightening", R.drawable.car2play);
        hashMap.put("Flat", R.drawable.car4play);
        hashMap.put("Taxi", R.drawable.car3play);
        try {
            //哈希查找
            CarID= (int) hashMap.get(carName);
            judge= true;
        }catch (Exception e){
            Toast.makeText(this,"Can't find the car",Toast.LENGTH_SHORT).show();
        }
        return judge;
    }

我们在车辆选择的一类中使用的哈希索引。我们用车名作为关键字,联系的是图片的id。这一方法是当使用搜索框搜索车辆的时候使用的方法。当在车辆选择界面中的搜索框中输入车辆名的时候,会在哈希表中找该关键字所对应的下标,从而返回车辆图片的id。从而实现用户可以通过查找来查找自己心仪的车辆来进行游戏。

  • 查找

我们小组项目涉及的查找因为数据量不大,难度也不大。因此我们小组使用的是线性查找方法

  //线性查找方法
    public static int  linearSearch(String[] data, String target){
        boolean judge = false;
        int index =0;
        while (index < data.length){
            if(data[index].equals(target)){
                judge = true;
                break;
            }
            index++;
        }
        if (!judge){
            index = -1;
        }
        return index;
    }
 String target = findSong.getText().toString();
            int resultIndex = Searching.linearSearch(songName,target);

查找方法使用在音乐选择方法中,有两个数组。下标对应,一个用来放歌曲的名字,一个数组用来放曲目的id。将用户在搜索框中输入的歌曲名,会调用线性查找来看曲名的数组中是否存在对应的曲目,找到之后会获取对应的曲目id,最后传到主活动中播放曲目。

posted @ 2017-12-15 18:24  FunnyOne  阅读(362)  评论(0编辑  收藏