收藏 分销(赏)

基于android的手游应用商店的设计与实现.doc

上传人:精*** 文档编号:2418472 上传时间:2024-05-29 格式:DOC 页数:51 大小:2.52MB 下载积分:16 金币
下载 相关 举报
基于android的手游应用商店的设计与实现.doc_第1页
第1页 / 共51页
基于android的手游应用商店的设计与实现.doc_第2页
第2页 / 共51页


点击查看更多>>
资源描述
基于Android的手游应用商店的设计与实现 基于Android的手游应用商店的设计与实现 摘 要 随着科技的发展,二十一世纪成为了以网络化,信息化为核心的社会。网络商业化也成为了时下最热门的词汇。随着信息技术的不断更新,特别是07年谷歌公司推出了Android开放源码,让Android操作系统成为了移动平台的宠儿。本系统主要是针对Android移动平台,为广大使用群体提供手游(手机游戏)的下载,让用户能够体验最新、最热门的手游,并从中获得快乐。 本设计是一个基于Android手机的手游应用商店,并采用C/S作为开发模式。本文从系统需求、系统实际、代码实现几个方面介绍了整个软件的开发过程,这个系统采用JAVA、MySQL数据库,并利用MyEclipse、TOMCAT、Android SDK、ADT、AVD、DDMS等开发环境或者开发工具。 关键词:Android、Java、MyEclipse、SQLite、MySQL。 The Design and Implementation of Android-based Mobile Games App Store Abstract With the development of science and technology of the twenty-first century to become a network, information as the core of society. Commercial network has also become the hottest vocabulary. With the continuous updating of information technology, especially in 2007 Google launched the Android open source, so that became the darling of the Android operating system for mobile platforms. The system is mainly for the Android mobile platform, for the majority of user groups provide mobile game download, allowing users to experience the latest and most popular mobile games, and derive pleasure. The design is an Android-based mobile phone application store tour hands, and using C / S as a development model. From the system requirements, the system actually, code describes several aspects of the software development process, this system uses JAVA, MySQL database, and using MyEclipse, TOMCAT, Android SDK, ADT, AVD, DDMS, such as the development environment or development tools . Keywords: Android, Java, MyEclipse, SQLite, MySQL. 目 录 摘 要 I 第一章 绪论 1 1.1 开发背景 1 1.2 开发目的 1 1.3 主要内容 1 第二章 系统理论与技术 1 第三章 系统分析与设计 1 3.1 功能需求 1 3.1.1 客户端 1 3.1.2 服务端 2 3.1.2功能模块图 2 3.2 模块结构与流程 3 3.2.1 客户端 3 3.2.2 服务端 7 3.3 数据库设计 11 3.3.1 数据库表及其结构 11 3.3.2 数据 12 3.3.3 客户端数据库的连接 12 3.3.4 服务器数据库的连接 14 3.4 系统结构 14 3.4.1 部署图 14 3.4.2 类图 14 3.5 执行概念 16 第四章 系统实现 16 4.1 Android环境搭建 16 4.2 客户端 18 4.2.1 用户登录 18 4.2.2 用户注册 20 4.2.3 游戏浏览 22 4.2.4 游戏下载 25 4.2.5 软件管理 27 4.3 服务端 29 4.3.1 响应客户端登录请求 29 4.3.2 用户信息管理 32 第五章 结束语 34 致谢 35 参考文献 36 IV 第一章 绪论 1.1 开发背景 1.2 开发目的 1.3 主要内容 第二章 系统理论与技术 第三章 系统分析与设计 3.1 功能需求 随着3G时代的到来,手机应用越来越普遍,加之国民手机持有量更是爆炸式增长。为了方便Android手机用户能随时随地下载手游,获取手游咨询,于是提出本系统的主要功能。 3.1.1 客户端 1、界面 1)登录、注册界面 2)左侧菜单界面 3)手游列表查看界面 4)手游详情查看界面 5)手游文件管理界面 2、功能 1)实现客户端与服务器之间的连接 2)实现登录、注册功能 3)实现手游信息列表展示功能,并能断点下载手游 4)实现手游搜索功能 5)实现手机软件的卸载功能 6)实现客户端自动更新功能 7)实现对手游的评价功能 3.1.2 服务端 1、界面 1)管理员登录界面 2)用户、手游、评价的信息管理界面 2、功能 1)向客户端提供用户、手游列表、以及评价列表信息 2)实现添加、删除、修改客户端用户信息 3)实现添加、删除、修改手游信息 4)实现添加、删除、修改手游评价信息 3.1.3功能模块图 功能模块图如3-1所示: 图3-1功能模块图 3.2 用例解说 3.2.1用户用例解说 主要参与者 用例 用户 1.客户端用户 用户 1. 用户注册 2. 用户登录客户端 3. 查看手游列表信息 4. 查看手游详情 5. 查看评论 6. 发表留言 7. 下载手游 8. 卸载应用 用例ID号 UC-1 用例名称 用户注册 参与者 用户 描述 用户进入客户端首页,打开菜单并点击注册 前置条件 用户进入注册界面 后置条件 用户按照要求填写相关注册信息 主干过程 1. 用户进入首页 2. 打开左侧菜单,点击注册 分支过程 a) 用户进入客户端 1.1填写注册信息 1.2点击注册 优先级 中 使用频率 需要积分的应用注册并登录才能下载 特别需求 注意和问题 用例ID号 UC-2 用例名称 用户登录 参与者 用户 描述 用户登录进入客户端 前置条件 用户已进入客户端 后置条件 主干过程 1. 登录 分支过程 b) 进入登录界面 1.填写登录信息 2.点击登录 优先级 中 使用频率 需要积分手游必须登录才能下载 特别需求 注意和问题 用例ID号 UC-3 用例名称 查看手游列表信息 参与者 用户 描述 用户进入客户端后,查看手游列表信息 前置条件 后置条件 主干过程 1. 查看手游列表信息 分支过程 c) 查看手游列表信息 1. 进入客户端 2. 用户选择查看不同类别的手游 优先级 低 使用频率 高 特别需求 注意和问题 用例ID号 UC-4 用例名称 查看手游详情 参与者 用户 描述 用户进入客户端,点击一个手游 前置条件 用户进入客户端 后置条件 主干过程 1. 用户查看手游列表 2. 点击手游进入手游详情界面 分支过程 d) 用户查看手游列表 1.用户查看手游列表 2.用户选中一个手游 3.进入手游详情界面 优先级 中 使用频率 高 特别需求 注意和问题 用例ID号 UC-5 用例名称 查看评论 参与者 用户 描述 前置条件 用户已进入手游详情界面 后置条件 主干过程 1. 进入详情界面 2. 点击评论按钮进入查看评论 分支过程 e) 查看手游的评论信息 1.进入手游的详情界面 2.点击评论按钮,进入评论信息界面 优先级 高 使用频率 特别需求 注意和问题 用例ID号 UC-6 用例名称 发表评论 参与者 用户 描述 用户点击评论按钮后,弹出发表评论的对话框 前置条件 打开发表评论的对话框 后置条件 主干过程 1. 点击评论按钮 2. 弹出评论对话框 分支过程 f) 用户发表评论 1. 点击评论按钮 2. 打开评论对话框 3. 填写评论信息 4. 点击发表按钮 5. 完成评论发表 优先级 中 使用频率 特别需求 注意和问题 用例ID号 UC-7 用例名称 下载手游 参与者 用户 描述 用户点击手游列表以及详情界面中的下载按钮开始下载手游 前置条件 后置条件 主干过程 3. 用户点击下载按钮 分支过程 g) 下载手游 1.用户点击下载按钮 2.需要积分的手游需要先登录,在用户积分足够的情况下可以下载手游 3.在点击下载按钮后按钮上显示暂停,用户再次点击后可暂停手游下载 4.用户在下载管理界面可以对下载中的手游进行暂、继续以及删除等操作 优先级 高 使用频率 特别需求 需要积分的手游需在登录并积分足够的情况下才能下载 注意和问题 用例ID号 UC-8 用例名称 下载应用 参与者 用户 描述 用户进入应用卸载界面,卸载选中的应用 前置条件 后置条件 主干过程 4. 用户卸载应用 分支过程 h) 应用卸载 1.用户进入应用卸载界面 2.选中需要卸载的应用 3.点击卸载按钮 4.卸载选中的应用 优先级 低 使用频率 特别需求 注意和问题 3.2.2 管理员用例解说 主要参与者 用例 管理员 2.服务端管理员 管理员 1. 登录 2. 客户端用户信息的增加、删除 3. 手游信息的增删查改 4. 手游评论信息的删除 用例ID号 UC-1 用例名称 管理员登陆 参与者 管理员 描述 管理员通过系统所预设的账号和密码登录系统 前置条件 管理员账号和密码 后置条件 主干过程 1. 管理员登陆 分支过程 a) 管理员登陆 1.1填写账号、密码 1.2登录系统 优先级 高 使用频率 特别需求 注意和问题 用例ID号 UC-2 用例名称 客户端用户信息的增加、删除 参与者 管理员 描述 登录系统后,在管理模块中添加、删除用户 前置条件 管理员登陆系统 后置条件 主干过程 2. 管理员登陆 分支过程 b) 管理员登陆 1.1添加、删除用户 1.2退出系统 优先级 高 使用频率 特别需求 注意和问题 用例ID号 UC-3 用例名称 手游信息的增删查改 参与者 管理员 描述 登录系统后,在手游信息管理模块中对信息进行增删查改 前置条件 管理员登陆系统 后置条件 主干过程 1. 添加、删除、修改、查询手游信息 分支过程 a) 添加、删除、修改、查询手游信息 1.1 登录系统 1.2 进入管理界面 1.3 更新信息 1.4 退出系统 优先级 高 使用频率 特别需求 注意和问题 用例ID号 UC-4 用例名称 删除留言 参与者 管理员 描述 管理员可以登陆后通过管理模块处理用户留言 前置条件 管理员已经登录系统 后置条件 主干过程 5. 登录系统 6. 删除留言 分支过程 b) 删除留言 1.登录系统 2.删除留言 3.退出系统 优先级 低 使用频率 特别需求 使用系统功能必须登录 注意和问题 3.3 模块结构与流程 3.3.1 客户端 客户端概要设计如表3-1: 客户端模块 简要说明 登录模块 在连接上服务器的前提下登录成功 注册模块 在连接上服务器的前提下注册成功 手游浏览模块 从服务器中读取数据,并把数据封装显示在手游列表中 手游评价信息浏览模块 从服务器中读取数据,并把数据封装显示在手游评价列表中 手游搜索模块 向服务器发送请求数据并获取返回数据,然后把数据封装显示在手游搜索列表中 自动更新模块 从服务器中读取最新版本的数据,与本地进行比较,提示用户更新 手游下载模块 使用多线程断点技术,从服务器下载手游 表3-1 客户端概要设计表 图3-2 客户端登录注册模块流程图 图3-3 客户端版本更新模块流程图 图3-4 客户端手游下载模块流程图 图3-5 客户端整体流程图 3.3.2 服务端 服务端概要设计如表3-2: 服务端模块 简要说明 向客户端提供数据 接收客户端的请求数据,然后向客户端发送相对应的数据 管理员登录 只有指定用户才能进行登录本服务端信息管理系统 客户端用户信息增删查改 提供客户端用户信息的增加、删除、查询、修改的功能 手游信息增删查改 提供手游信息的增加、删除、查询、修改的功能 手游评价信息增删查改 提供手游评价信息的增加、删除、查询、修改的功能 表3-2 服务端概要设计表 图3-6 服务端登录模块流程图 图3-7 服务端向客户端提供数据模块流程图 图3-8 服务端数据管理模块流程图 3.3 数据库设计 数据库结构组织和数据库文件设计要根据不同用途,使用要求等,来决定数据库的整体组织形式等一系列问题。 数据库,顾名思义,是存放数据的仓库,只不过这个仓库是在计算机存储设备上的,而且数据是按一定格式存放。数据库中的数据按一定模型组织描述和存储。具有较小的重复度,较高的数据独立性和易扩张性,并且可以被一定范围内的各种用户共享。在涉及数据库的软件开发中,需要根据有待解决的问题性质,规模,以及所采用的前端程序创建工具等。做出合适的数据库类型选择。 在该项目中建立了两个数据库,客户端和服务器各一个,用这种设计方式主要是为用户减少许多不必要的流量浪费,如果只创建一个服务器数据库的话,用户每次连接上服务器时都会将服务器的所有资源全部接受一遍,但是事实上该项目并不需要实时的更新数据,因为有些菜品的信息可能很久都不会有变动,所以考虑在客户端也创建一个数据库把服务器端发送过来的数据存储在本地数据库中,当服务器有更新时只需要传递改变的数据就可以实现更新。 3.3.1 数据库表及其结构 客户端数据库(SQLite) DownloadInfo表:编号,文件名,包名,图标链接,下载链接,下载进度,文件长度,文件详细信息链接,文件存储路径。 服务端数据库(MySQL) User表:编号,头像链接,用户名,性别,生日,手机,邮箱,等级,经验, 金币,注册时间,礼包数,收藏数,评论数。 Game表:编号,标题,图标链接,包名,版本号,评价等级,描述,金币数, 奖励金币数,游戏类别,文件大小,下载数量,下载链接,详情编 号,作者编号。 GameDetail表:编号,标签,详情图片链接,评论链接; Author表:编号,姓名,作者链接。 Comment表:编号,评分,评论内容,评论日期,手游编号,评论者编号。 3.3.2 数据 系统E-R(实体-联系)图用来描述数据关系模型,可以用来建立数据模型。本系统共有6个实体,其关系如图3-9所示。 图3-9 手游应用商店实体关系图 3.3.3 客户端数据库的连接 客户端的数据库创建代码如下所示: public class FileDownDBOpenHelper extends SQLiteOpenHelper { private static final String DBNAME = "wormhelp.db"; private static final int VERSION = 1; public FileDownDBOpenHelper(Context context) { super(context, DBNAME, null, VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE IF NOT EXISTS " + FileDownColumns.TABLE_NAME_FILEDOWN + " (_id integer primary key autoincrement, " +FileDownColumns.NAME+ " varchar(100), " +FileDownColumns.FILENAME+ " varchar(100), " +FileDownColumns.PACKAGENAME+ " varchar(100), " +FileDownColumns.ICONPATH+ " varchar(100), " +FileDownColumns.DOWNPATH + " varchar(100), " +FileDownColumns.FILESAVEPATH + " varchar(100), " +FileDownColumns.FILELENGHT + " INTEGER, " +FileDownColumns.DETAILURL + " varchar(100), " +FileDownColumns.PROGRESS+ " INTEGER )"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + FileDownColumns.TABLE_NAME_FILEDOWN); onCreate(db); } } 客户端数据库链接代码(主要代码)如下所示: 3.3.4 服务器数据库的连接 3.4 系统结构 本系统采用HTTP协议来进行数据传输。采用C/S结构,客户端为基于Android操作系统平台的智能手机,主要的业务逻辑则服务器端来实现,数据存储在数据库服务器 3.4.1 部署图 系统部署如图3.7所示,客户端采用基于Android操作系统平台的智能手机,服务器端包括服务器、图形界面化工具和数据库服务器,主要处理业务逻辑和对数据的增删改查。 图3-10 系统部署图 3.4.2 类图 根据已建立的用例图确定要建立的对象类并确定属性和操作。通过检查类的定义,分析问题的需求和运用该领域知识来确定类的属性。根据系统功能需求和系统设计需要确定类的操作,本系统有6个实体类,分别为下载信息实体类(DownloadInfo)、用户实体类(User)、评论实体类(Comment)、手游实体类(Game)、手游详情实体类(GameDetail)、手游作者实体类(Author),如图3-11所示。图3-11 实体类图 3.5 执行概念 本系统时序图如图3-12所示: 图3-12 时序图 1、 客户端发送请求给服务器,服务器的后台Action负责处理数据。 2、 服务器业务逻辑处理会调用Service,进行数据处理。 3、 Service调用Dao,Dao把数据保存到数据库DB中。 4、 DAO返回结果给Service,Servie进行数据处理后将结果返回给Action。 5、 Action把结果返回给客户端。 第四章 系统实现 4.1 Android环境搭建 任何事物要运行,都要有它的环境,Android也有它的环境才能够运行,下面介绍Android的开发环境配置. 搭建开发环境需要的软件: 1. 操作系统:Windows 7或Linux 2. 软件包:Android SDK(Software Development kit Java Development kit) 、ADT(Android Develoopment Tool) 3. DE环境:Eclipse IDE+ADT Eclipse3.3以上 4. JDK:Java Runtime Environment虚拟机 、(JDK)Java Development kit 5. 安装Android SDK:首先要下载SDK,可以在这个网址下载Http:// ,如图4-1,选择相应的系统进行安装 图4-1 SDK下载 6. 安装Android ADT插件 运行Eclipse,选择help->install new software 选择add,将会弹出一个框,如图4-2 所示 图4-2 ADT的安装 4.2 客户端 4.2.1 用户登录 用户登录界面如下: 图4-3 手游商店登录界面 登录代码(主要部分): //先判断用户名和密码是否为空,然后向服务器发送登录请求 ...判空处理... @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); map.put("name", name); map.put("pass", pass); return map; } //从服务器获取返回结果后,客户端进行处理 private void handleLoginInfo(LoginInfo info) { if (info == null) { WormToast.shortToast(getApplicationContext(), Rwork_wrong); return; } //将登录状态记录下来 PreferenceUtil.setPrefInt(getApplicationContext(), PreferenceUtil.USER_LOGIN_STATE, info.getState()); if (info.getState() == LoginInfo.LOGIN_STATE_FAIL) { WormToast.shortToast(getApplicationContext(), R.string.login_login_fail); } else if (info.getState() == LoginInfo.LOGIN_STATE_SUCCESS) { MyApplication.sUserInfo = info.getUserInfo(); //登录成功后,返回到主界面 setResult(RESULT_OK); finish(); } } 4.2.2 用户注册 注册界面如下: 图4-4 注册界面 注册代码(主要部分): //先进行字段判空等处理,然后向服务器发送注册请求 ...判空处理... @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); map.put("name", name); map.put("pass", pass); map.put("email", email); return map; } private void handleRegisterInfo(RegisterInfo info){ if(info == null){ WormToast.shortToast(getApplicationContext(), Rwork_wrong); return; } //将注册状态记录下来 LoginInfo.saveLoginState(getApplicationContext(), info.getState()); if (info.getState() == RegisterInfo.REGISTER_STATE_FAIL) { WormToast.shortToast(getApplicationContext(), R.string.register_fail); } else if (info.getState() == RegisterInfo.REGISTER_STATE_ERROR) { WormToast.shortToast(getApplicationContext(), R.string.register_error); } else if (info.getState() == RegisterInfo.REGISTER_STATE_SUCCESS) { MyApplication.sUserInfo = info.getUserInfo(); //注册成功后,返回到登录界面 setResult(RESULT_OK); finish(); } } 4.2.3 游戏浏览 主界面截图: 图4-5 游戏浏览主界面截图 主要代码: //向服务器发送数据请求,并处理返回结果 StringRequest request = new StringRequest(path, new Listener<String>() { public void onResponse(String json) { loading = false; loadingViewUtil.hideLoadingView(); pullListView.onRefreshComplete(); if (json != null) { if (!isNext) { //解析返回的Json数据 BestGame game = JsonHomeUtil.getBastGameFromJson(json); if (game != null) { // 头部viewpager size = game.getAdvertisements().getResults().size(); if (size > 0) { vpAdapter.bindData(game.getAdvertisements().getResults()); vpHead.setAdapter(vpAdapter); initDots(size); switchDot(0); // 每隔4秒钟切换一张图片 isPagerAutoTurn = true; mHandler.postDelayed(viewPagerTask, 4 * 1000); } // 下方listview if (game.getPackages() != null) { nextPath = game.getPackages().getNext(); lvAdapter = new GameLVAdapter(getActivity()); lvAdapter.bindAata(((game.getPackages().getResults()))); pullListView.setAdapter(lvAdapter); } } } else { // 下方listview加载 Package package1 = JsonHomeUtil.getPackagesFromJson(json); if (package1 != null && lvAdapter != null) { nextPath = package1.getNext(); lvAdapter.appendData(package1.getResults()); lvAdapter.notifyDataSetChanged(); } } } } }, new ErrorListener() { public void onErrorResponse(VolleyError error) { layoutNoNetworkutil.showNoNetworkLayout(); } }); 4.2.4 游戏下载 手游下载截图如图4-6所示: 图4-6 手游下载管理界面 手游下载的主要代码如下所示: //添加一个下载任务 public void onClick(View v) { ...一些判断处理... downloadManager.addNewDownload(result, Util.getFilePath(result.getDownload()), // 如果目标文件存在,接着未完成的部分继续下载。服务器不支持 RANGE 时将从新下载。 true, // 如果从请求返回信息中获取到文件名,下载完成后自动重命名。 false,null); while (downloadInfo == null) { downloadInfo=downloadManager.getDownloadInfo(result.getDownload(); } //下载状态回调 requestCallBack(downloadInfo, holder); ... } //将下载请求添加到下载线程中 public void addNewDownload(...) throws DbException { ...数据处理... HttpUtils http = new HttpUtils(); http.configRequestThreadPoolSize(maxDownloadThread); HttpHandler<File> handler = http.download(result.getDownload(), target, autoResume, autoRename, new ManagerCallBack(downloadInfo, callback)); ... returnDownloadCount(); } //下载线程 @Override public void run() { ... try { HttpURLConnection http = (HttpURLConnection) downUrl.openConnection(); ...初始化请求... int startPos = block * (threadId - 1) + downLength; int endPos = block * threadId -1; //设置请求的数据范围,实现断点下载 http.setRequestProperty("Range", "bytes=" + startPos + "-"+ endPos); ... InputStream inStream = http.getInputStream(); ...读取数据... } catch (Exception e) { ... } } } 4.2.5 软件管理 设置界面如图4-7所示: 图4-7 软件卸载截图 // 机身可用内存,内存总大小 public void setDateInternalMemory() { File path = Environment.getDataDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long totalSize = stat.getBlockCount() * blockSize; long availableSize = stat.getAvailableBlocks() * blockSize; // 内存总大小 String DATE = Formatter.formatFileSize(getActivity(), totalSize); String date = Formatter.formatFileSize(getActivity(), availableSize); // 可用内存 String useDate = Formatter.formatFileSize(getActivity(), totalSize - availableSize); pgb_unload_memory_instory.setMax(100); int progress = (int) ((float) (totalSize - availableSize) / totalSize * 100); pgb_unload_memory_instory.s
展开阅读全文

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


开通VIP      成为共赢上传

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

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

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

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

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

客服