作者简介
|
钟元生,1968年生,江西财经大学教授,博士生导师,浙江大学博士,美国加州大学尔湾分校访问学者,江西省人民政府学位委员会学第一届、二届学科评议组成员,江西省普通高校本科教学指导委员会计算机类专家委员,江西省物联网与大数据工程技术研究中心主任,软件与通信工程学院学术委员会主任、教育技术学硕士点研究生导师组组长、教育技术研究所所长。
参与创办江西财经大学软件学院,曾任计算机应用技术、软件工程等专业硕士生导师,学校本科水平评估工作评建创优专家组副组长;国家职业技能鉴定专家委员会电子商务专业委员会委员,中国电子学会初级电子信息工程师职业资格认证工作委员会成员;省计算机学会理事;江西浙大校友会理事,浙江大学江财校友会副会长;科技部科技支撑计划会议评审专家、两届江西省研究生学位点评审专家、一届江西省教学成果奖评审专家;教育部主管、清华大学主办的《现代教育技术》期刊审稿专家;江西省教育厅大学生手机软件设计赛发起人、总策划;获江西财经大学“十大优秀研究生导师”和“教学十佳”等称号。 |
江西省大学生手机软件设计赛发起人、总策划和前三届竞赛承办专家委员会负责人,正在联合全国近百所高校举办全国大学生手机软件邀请赛。
主持国家自然科学基金1项、副主持2项;完成省级以上课题9项。获省级优秀教学成果奖4项(2项第一主持且获一等奖),出版专著2部,主编教材多部在清华大学出版社、电子工业出版社等处出版。
|
|
赵圣鲁,1990年生,江西信息应用职业技术学院教师,江西财经大学软件与通信工程学院教育技术学硕士毕业,研究方向为移动学习与手机软件开发技术方向,专攻手机软件开发人才培养,具有多年的App开发和教学经验。参编教材《App开发案例教程》(2015年清华大学出版社出版)。 |
前言
“互联网+”创业公司中,App是标配。现有教材多数重点讲述服务器端、客户端以及数据库等之一部分,对应于软件项目组中服务器程序员、Android/iOS程序员、数据库程序员等岗位,比较适合有一定规模的公司。目前许多培训机构以及高校都是按某一类岗位的要求来培养程序员的,要找到这类程序员更容易。
很多时候,企业希望程序员同时承担设计服务器端、客户端和数据库等多个岗位的任务,即有全栈工程师的能力,初创公司尤其如此。即使在程序员分工较细的公司,如果程序员具有全栈工程师的基本能力,不同岗位的程序员更易合作。
随着全国大学生“互联网+”创新创业竞赛的不断推进,许多学生都想将自己的好点子用App实现,往往就卡在最终App的实现上,创意落地难。
教材为满足全栈工程师的培养要求,既要有一个完整的综合案例,又要能将案例拆分为一个个可独立运行、可测试的小例子。读者边学边做,边检验自己的知识掌握程度,学完全书即完成完整项目。这类教材设计比较难,市面少见,本书尝试之。
本书案例选自早期“豹考通”App的简化版,介绍了该App的Android客户端程序、服务器端数据库、服务器管理程序开发以及App项目集成测试的全过程,并特设了“互联网+”创业思维训练内容,使全栈工程师培养更有价值。假定读者有一定的编程语言基础,对App开发和Android编程有一定的了解。
案例的有些代码较长,有些模块本书只列出关键代码,基于这些关键的代码讲解,读者可以访问教学资料的网站下载完整代码,边阅读代码边体验程序效果,并扩充或修改程序功能。为方便阅读,书中的每段代码都引入了代码编号,部分关键语句加了注释,并给出程序在资源包中的位置。
程序清单:Code0401\app\src\main\java\cn\jxufe\iet\code0401\ControLineActivity.java
1 private class MyItemSelectedListener implements AdapterView.OnItemSelectedListener {
2 @Override
3 public void onItemSelected(AdapterView> parent, View view,
4 int position, long id) {
5 switch (parent.getId()) {
6 case R.id.areaSpinner:// 如果是选择省份列表
7 sourceAreaId = position;
8 break;
9 case R.id.yearSpinner:// 如果是选择年份列表
…………
20 }
21 /*设置标题显示*/
22
…………
其中1、2、3……为代码行号,中间为代码实际内容,//后为注释内容。程序清单的位置也详细标注,便于读者查找下载。
在您阅读本书时,最好按照书中的步骤同时实际操作,加深印象,掌握关键技术,不建议仅直接打开源码运行、查看最后效果。编程基础较弱者,也可泛读全书、体验App开发流程和关键细节。尽量多在涉及相关技术时,参考相关教材或网络资源。
本书作为一种尝试,我们反复对案例选择和教材结构、教法、编法等进行研究与设计,历经一年半,撰写了几十个版本,进行了三次大规模修改,方得以展现在读者面前。尽管如此,依然有许多不尽人意的地方,如尚未完全实现方便的模块设计和集成测试,课后练习不够完善,学习效果过程检查点偏少。
为方便学习、交流与资源共享,我们提供了本书相关资源的下载地址,网址为:http://www.xs360.cn/book。
全书由钟元生担任主编,负责全书的方案设计、内容策划、案例分解、细节把握、质量控制和统编定稿工作。各章分工如下:钟元生完成第0章、第2章并与其他作者合作完成其余各章的撰写,赵圣鲁负责第1章、第4章、第5章、第12章,钟坚负责第3章、第11章,邹宇杰负责第6章、第7章,吴凯负责第8章、第9章、第10章,涂露露负责第13章,廖琪玲负责第14章。高成珍、陈海俊、曹权为“豹考通”教学版的前期开发作了重要贡献。
在此,特别感谢支持本书编写出版工作的江西财经大学软件与通信工程学院、江西高校出版社有关领导和老师的帮助。
希望本书的出版有助于“App开发实训”课程的教师备课;有助于教师更好地指导移动互联网软件方面的毕业设计,提高指导效率。不当之处,还望大家批评指正,以便将来再版时完善。
本书适合作为本专科“App开发”课程实训教材,供无项目经验学生开发App时参考,可作为大学生“互联网+”创新创业竞赛的实战参考书。
编者
于南昌江西财经大学麦庐园
2017 年 6 月
目录
第0章 导读................................................ 1
0.1 开发概述................................................ 1
0.2 App开发流程............................................... 1
0.3 案例介绍............................................... 5
0.4本书教学中所用到的学习案例代码................................................ 6
0.5 配置局域网运行和开发环境............................................... 7
0.6 本书内容简介............................................... 8
0.7 课后练习............................................... 8
第1章 App应用体验............................................... 9
1.1 “豹考通”项目介绍............................................... 9
1.2 开发环境配置............................................... 9
1.2.1 Java语言............................................... 9
1.2.2 Java环境配置............................................... 10
1.3 Android Studio下载和安装............................................... 20
1.3.1 Android Studio下载............................................... 20
1.3.2 Android Studio 安装............................................... 20
1.3.3 创建第一个项目:HelloWorld............................................... 26
1.3.4创建一个虚拟机设备............................................... 29
1.4 “豹考通”服务端集成包运行............................................... 33
1.5 “豹考通”Android端程序导入运行............................................... 35
1.5.1项目导入............................................... 35
1.5.2 客户端运行效果图............................................... 38
1.5.3 “豹考通”项目客户端结构图............................................... 39
1.6 课后练习............................................... 42
第2章 项目需求分析............................................... 43
2.1 功能需求分析............................................... 43
2.1.1 需求获取............................................... 43
2.1.2 功能分析............................................... 43
2.1.3系统UML建模............................................... 44
2.2 系统用例分析............................................... 45
2.2.1系统用例图............................................... 45
2.2.2系统用例描述............................................... 45
2.3 项目数据库分析............................................... 50
2.3.1 数据库基本概念............................................... 50
2.3.2 数据库设计的基本过程............................................... 50
2.3.3 系统所涉的实体及其属性............................................... 51
2.4 课后练习............................................... 54
第3章 App全栈开发微案例............................................... 55
3.1 微案例介绍............................................... 55
3.2 本地数据版App案例............................................... 56
3.2.1 Android界面设计............................................... 56
3.2.2 Android功能实现............................................... 60
3.3 网络数据版App案例............................................... 63
3.3.1 建立MySQL数据库............................................... 63
3.3.2 设计网络服务器............................................... 67
3.3.2.1 建立数据库连接类............................................... 67
3.3.2.2 建立省控线实体类............................................... 73
3.3.2.3 数据库操作类的实现............................................... 74
3.3.2.4 Servlet类的实现............................................... 76
3.3.3 Android功能实现............................................... 82
3.3.3.1 建立实体类............................................... 82
3.3.3.2 建立服务器访问工具类............................................... 84
3.3.3.3 修改demo.java Activity文件............................................... 88
3.4 课后练习............................................... 90
第4章 无对话框的单页面设计............................................... 91
4.1 本章案例实现流程............................................... 91
4.2 “历年省控线查询”模块实现............................................... 93
4.2.1 界面设计............................................... 93
4.2.2 Spinner实现下拉列表选项............................................... 98
4.2.3 事件监听器............................................... 101
4.2.4 ListVIew列表............................................... 102
4.3 “历年录取线查询”模块实现............................................... 107
4.3.1 界面设计............................................... 107
4.3.2 历年录取线筛选条件栏实现............................................... 116
4.3.3 事件监听器............................................... 119
4.3.4 ListView列表............................................... 123
4.4 课后练习............................................... 134
第5章 含对话框单页面界面设计............................................... 137
5.1 本章案例实现流程............................................... 137
5.2 “报考咨询”模块实现............................................... 139
5.2.1 界面设计............................................... 139
5.2.2 “问题列表”的实现............................................... 143
5.2.3 “问题回复”对话框实现............................................... 148
5.3 “个人基本信息”模块实现............................................... 149
5.3.1 界面设计............................................... 149
5.3.2 SharedPreferences实现个人信息存储............................................... 153
5.3.3 “个人基本信息填写对话框”模块实现............................................... 155
5.4 课后练习............................................... 163
第6章 多页面切换效果设计............................................... 165
6.1 本章案例流程............................................... 165
6.2多页面切换效果了解............................................... 166
6.3页面切换框架实现............................................... 167
6.3.1 项目结构............................................... 167
6.3.2 Tabhost界面布局文件设计............................................... 170
6.3.3 为选项卡添加样式............................................... 174
6.3.4 初始化选项卡设计............................................... 176
6.4 为选项卡对应添加内容............................................... 179
6.4.1 创建空fragment布局文件及其加载类............................................... 179
6.4.2 事件监听实现多页面切换............................................... 185
6.5 多页面内容填充............................................... 188
6.5.1 替换page1.xml页面为“省控线页面”............................................... 188
6.5.1.1 替换xml布局文件............................................... 189
6.5.1.2 替换java类............................................... 192
6.5.2 替换page2页面为“录取线查询”页面............................................... 208
6.5.2.1替换xml布局文件............................................... 208
6.5.2.2 替换java类............................................... 213
6.6 课后练习............................................... 224
第7章 绘制趋势图............................................... 225
7.1 本章案例流程............................................... 225
7.2 绘图功能了解............................................... 226
7.3 项目结构............................................... 227
7.4 趋势图页面框架实现............................................... 229
7.4.1 趋势图java类的建立............................................... 229
7.4.2 在xml文件中引用自定义的趋势图控件............................................... 232
7.5 用绘图类绘制坐标轴............................................... 234
7.5.1 使用Paint类设置画笔............................................... 234
7.5.2 创建onDraw()方法............................................... 235
7.5.3 绘制趋势图的坐标轴............................................... 236
7.5.3.1 绘制x轴、y轴直线............................................... 236
7.5.3.2 绘制坐标轴的箭头............................................... 239
7.5.3.3 绘制坐标轴上的文字............................................... 241
7.6 用绘图类绘制趋势线-源数据来自数组............................................... 244
7.6.1 创建模拟数据............................................... 244
7.6.2 根据源数据绘制信息点............................................... 247
7.6.2.1 绘制x轴上的信息............................................... 247
7.6.2.2 根据源数据绘制趋势图............................................... 253
7.7 用绘图类绘制趋势线-源数据来自录取线页面............................................... 269
7.7.1 编写按钮点击事件和业务逻辑............................................... 269
7.7.1.1 基本实现过程............................................... 269
7.7.1.2 使用Android Studio导入Gson包............................................... 272
7.7.2 编写趋势图相关Activity和Fragment............................................... 274
7.7.2.1 编写趋势图Fragment类............................................... 275
7.7.2.2 编写趋势图的Activity............................................... 279
7.7.2.3 为ResultActivity进行注册............................................... 281
7.8 课后练习............................................... 283
第8章 使用工具管理SQLite数据库............................................... 285
8.1 了解SQLite............................................... 287
8.2 SQLite优点............................................... 287
8.3 SQLite使用入门............................................... 289
8.3.1 安装使用SQLite............................................... 289
8.3.2 SQLite常用操作............................................... 292
8.4 创建SQLite数据库--bkt............................................... 294
8.4.1 创建数据库............................................... 294
8.4.2 创建地区表(area)............................................... 295
8.4.3 插入地区表(area)数据............................................... 296
8.4.4 创建学校表(school)............................................... 297
8.4.5 导入学校表(school)数据............................................... 298
8.5 课后练习............................................... 304
第9章 SQLite数据库的操作模块设计............................................... 305
9.1 本章案例流程............................................... 305
9.2 用SQL代码创建数据库及表...............................................306
9.2.1 项目结构...............................................306
9.2.2 案例实现............................................... 306
9.3 SQLite数据库存储............................................... 315
9.3.1 SQLiteDataBase类............................................... 316
9.3.2 SQLiteOpenHelper类............................................... 316
9.3.3 Cursor接口............................................... 317
9.3.4 ContentValues类............................................... 317
9.4 使用SQL语句操作数据库............................................... 318
9.5 从SQLite获取ListView列表项的值............................................... 319
9.5.1 项目结构............................................... 319
9.5.2 案例流程模块............................................... 319
9.5.3 定义全局变量类............................................... 320
9.5.4 数据库操作辅助类............................................... 321
9.5.5 替换地区(area)表数据............................................... 326
9.5.6 替换学校(school)表数据............................................... 329
9.6 课后练习............................................... 331
第10章 使用MySQL管理网络数据库............................................... 333
10.1 MySQL数据库的构建............................................... 333
10.1.1 MySQL的应用范围............................................... 333
10.1.2 MySQL的优缺点............................................... 333
10.1.3 MySQL安装............................................... 334
10.2 数据库可视化工具安装和介绍............................................... 339
10.2.1 Navicat for MySQL下载............................................... 339
10.2.2 Navicat for MySQL安装............................................... 341
10.3 “豹考通”项目数据分析与设计............................................... 344
10.4 数据库表设计............................................... 344
10.4.1 各表的结构设计............................................... 344
10.4.2 建库、建表操作............................................... 350
10.4.3 使用SQL语句建表............................................... 353
10.4.4 SQL语句讲解............................................... 357
10.4.5 制作推荐报告举例............................................... 360
10.5 项目数据导入与导出............................................... 364
10.5.1 Excel表格导入数据库表............................................... 364
10.5.2 SQL文件导入库............................................... 369
10.5.3 数据导出............................................... 371
10.6 课后练习............................................... 375
第11章 App网络服务器管理程序设计............................................... 377
11.1 服务器开发背景知识............................................... 377
11.1.1 JSP简介............................................... 377
11.1.2 Tomcat服务器............................................... 377
11.1.3 服务器与客户端交互图解............................................... 382
11.2 了解Java Web技术............................................... 383
11.2.1 DAO设计模式............................................... 383
11.2.2 认识Java Web程序的目录结构............................................... 384
11.3 Java Web 核心技术............................................... 385
11.3.1 JavaBean技术............................................... 385
11.3.2 运行你的第一个Java Web程序............................................... 385
11.3.3 Servlet技术............................................... 388
11.3.4 掌握HttpServletRequest类............................................... 389
11.3.5 掌握HttpServletResponse类............................................... 390
11.3.6 实战演练............................................... 390
11.4 设计App服务器数据库工具类............................................... 392
11.4.1 JDBC技术...............................................393
11.4.2 数据库连接类的实现............................................... 393
11.5设计App服务器业务逻辑类............................................... 397
11.5.1 建立实体类............................................... 397
11.5.2 数据库操作类的实现............................................... 399
11.5.3 练习............................................... 406
11.6设计App服务器Servlet类............................................... 407
11.6.1 省控线Servlet类的实现............................................... 407
11.6.2 练习............................................... 412
11.7 设计“豹考通”服务器问题模块............................................... 412
11.7.1 建立问题模块实体类............................................... 412
11.7.2 数据库问题模块操作类............................................... 414
11.7.3问题模块Servlet类............................................... 420
11.8 课后练习............................................... 422
第12章 App客户端与服务器交互设计............................................... 423
12.1 客户端和服务端数据交互基础............................................... 423
12.1.1 HttpClient............................................... 423
12.1.2 网络服务器端返回结果解析—JSON解析............................................... 425
12.2 本章案例实现流程............................................... 426
12.3 第三方Jar包导入............................................... 427
12.4 客户端与服务端交互工具类设计............................................... 430
12.5 “省控线查询”模块与服务端交互的实现............................................... 434
12.5.1“省控线查询”模块与服务端交互流程............................................... 434
12.5.2 获取服务端数据............................................... 435
12.5.3 显示省控线数据列表............................................... 436
12.6 “历年录取线查询”模块与服务端交互的实现............................................... 438
12.6.1 “历年录取线查询”模块与服务端交互实现流程............................................... 438
12.6.2 获取服务端学校录取线和专业录取线 ...............................................439
12.6.3 显示学校录取线和专业录取线列表............................................... 441
12.7 “报考咨询”模块与服务端交互的实现............................................... 443
12.7.1“报考咨询”模块与服务端交互流程............................................... 443
12.7.2 获取历史问题列表............................................... 444
12.7.3 “提问”模块实现............................................... 446
12.7.4 “问题回复”模块实现............................................... 447
12.7.5 “查询问题”模块实现............................................... 450
12.8 课后练习............................................... 450
第13章 App集成测试............................................... 451
13.1 单元测试............................................... 451
13.1.1 黑盒测试............................................... 451
13.1.2 白盒测试............................................... 453
13.2 集成测试............................................... 459
13.2.1 MySQL数据库测试............................................... 459
13.2.2 Jave Web服务器访问MySql数据库集成测试............................................... 460
13.2.3 Android客户端访问Java Web服务器集成测试............................................... 462
13.3 “豹考通”案例集成测试流程............................................... 464
13.3.1 集成测试流程...............................................464
13.3.2 本书案例代码集成架构............................................... 480
13.4 课后练习............................................... 481
第14章 App全栈工程师创业思维训练............................................... 483
14.1 App全栈工程师创业思维训练的价值............................................... 483
14.1.1 有利于App全栈工程师自身的长远发展............................................... 483
14.1.2 有利于高校开展“互联网+”双创人才培养工作............................................... 484
14.2 App全栈工程师创业思维训练基础............................................... 484
14.2.1 掌握定位理论,选好创业项目............................................... 484
14.2.2 了解创新者的窘境,思考创业项目的创新路径............................................... 485
14.2.3 理解精益创业,试探创业项目的商业模式............................................... 486
14.2.4 提升用户体验,推动创业项目成长............................................... 487
14.2.5 合理设置股权结构,保证初创公司长治久安和不断成长............................................... 488
14.3 “互联网+”创业思维训练实践............................................... 489
14.3.1 总体安排............................................... 489
14.3.2 “互联网+”创业思维实验安排............................................... 490
14.3.3 “互联网+”创业思维实验举例............................................... 492
14.4 课后练习............................................... 495
|