Android Studio移动应用开发任务教程微课版教案4.docx

上传人:b****4 文档编号:5403075 上传时间:2022-12-16 格式:DOCX 页数:41 大小:511.20KB
下载 相关 举报
Android Studio移动应用开发任务教程微课版教案4.docx_第1页
第1页 / 共41页
Android Studio移动应用开发任务教程微课版教案4.docx_第2页
第2页 / 共41页
Android Studio移动应用开发任务教程微课版教案4.docx_第3页
第3页 / 共41页
Android Studio移动应用开发任务教程微课版教案4.docx_第4页
第4页 / 共41页
Android Studio移动应用开发任务教程微课版教案4.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

Android Studio移动应用开发任务教程微课版教案4.docx

《Android Studio移动应用开发任务教程微课版教案4.docx》由会员分享,可在线阅读,更多相关《Android Studio移动应用开发任务教程微课版教案4.docx(41页珍藏版)》请在冰豆网上搜索。

Android Studio移动应用开发任务教程微课版教案4.docx

AndroidStudio移动应用开发任务教程微课版教案4

教学单元:

移动应用开发(9)

授课班级:

授课时间:

2

教学地点:

教学目的:

⏹应知:

1、了解SharedPreferences存储;

2、了解基本SQL语句的使用

⏹应会:

1、会使用SharedPreferences存放配置信息;

2、会使用基本SQL语句实现数据库的增删改查;

3、能完成简单Android程序的开发

教学重点、难点:

1.SharedPreferences的使用

2.SQL语句的使用

教学方法:

根据本堂课教学内容的重点与难点,教学过程中主要采用以下教学方法:

1.在理论教学上,主要在钉钉平台上进行,以讲授和教学演示为主,通过提问引导学生发现问题、分析问题,掌握Android软件开发的基本概念和流程。

2.在实践教学上,采用“实例引导,项目驱动”的方式讲授。

通过实现相关实例,在实例基础上改造拓宽,真正实现“学以致用”。

钉钉和QQ相结合,采用演示、实践和讨论相结合的模式。

3.注重教学整体过程设计,依托网络平台,将课前预习、课中讲授与演练和课后练习与讨论答疑有机结合,不断摸索提高教学效果。

 

教学过程设计:

备注:

1.课程设计

(1)回顾上次课的内容,提出在Android中如何存储数据的问题

(2)简单介绍Android本地存储的几种方式。

(3)以记住密码功能为例,讲解SharedPreferences的使用。

(4)首先,将QQDemoV2改名为QQDemoV3

(5)添加成员变量etQQName、etQQPwd和chkRememberPwd

(6)通过findViewById()方法获取布局文件中的相应控件

(7)实现当用户单击“登录”按钮时,如果勾选了“记住密码”选项,则首先将用户输入QQ号码和密码记录在SharedPreferences中,然后再跳转到“MainActivity”。

btnLogin.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

if(chkRememberPwd.isChecked()){

SharedPreferencessettings=getSharedPreferences();"setting",MODE_PRIVATE);

SharedPreferences.Editoreditor=settings.edit();

editor.putString("qqnum",etQQName.getText().toString());

editor.putSting("pwd",etQQPwd.getText().toString());

mit();

}

Intentintent=newIntent(LoginActivity.this,MainActivity.class);

startActivity(intent);

}

});

(8)了解学生进度

 

(9)运行后,打开AndroidStudio菜单,单击“Tool-”→“Android”→“AndroidDeviceMonitor”命令,打开DDMS,切换到“FileExplore”,可以在相应的目录下找到“setting.xml”文件

注意,此时模拟器可能会因为权限问题,无法看到相应的信息,需要进行授权

DDMS中权限的处理(安装模拟器选用带GoogleApis选项的,不要带GooglePlay选项的)

进入cmd,切换到C:

\Users\adminn\AppData\Local\Android\sdk\platform-tools

运行adbroot

运行adbremount(大多数情况,已经可以看到相应目录了,如果不行则进行逐层授权)

获取root权限

运行adbshell

键入su

使用chmod777/data命令逐层授权

(10)在LoginActivity.java文件中,在onCreate()方法的末尾添加如下代码,实现当用户下次打开应用时,自动填入QQ号码和密码。

SharedPreferencessettings=getSharedPreferences("setting",MODE_PRIVATE);

etQQName.setText(settings.getString("qqnum",""));

etQQPwd.setText(settings.getString("pwd",""));

(11)了解学生进度

(12)回顾SQL基本语句

以系统的登录和联系人功能为例。

首先,我们需要实现系统登录,那么,我们需要有一张用户表----QQ_Login,这个表至少需要保存qq_num和qq_pwd,我们再看联系人界面,我们可以看到每个用户都有头像、名字、在线模式和签名,这些信息也需要保存,那么,是不是也应该添加在QQ_Login表中呢?

另外,我们发现我们在联系人界面中,将联系人按照所属国家的不同进行了分组,那我们如何标识一个联系人属于哪个国家呢?

----新建列belong_country。

(13)安装SQLiteExpert个人版,创建一个数据库TestDB,然后创建一张表QQ_Login,分别设置qq_num、qq_pwd、qq_name、qq_img、qq_online、qq_action和belong_country。

总结,如何创建一张表,如何定义列

切换到DDL页,查看相应的生成

CREATETABLE[QQ_Login](

[qq_num]VARCHARPRIMARYKEYNOTNULL,

[qq_name]VARCHAR,

[qq_pwd]VARCHAR,

[qq_img]INT,

[qq_online]VARCHAR,

[qq_action]VARCHAR,

[belong_country]VARCHAR);

切换到SQL页,练习insert语句,分别插入刘备、曹操、孙权和关羽

insertintoQQ_login(qq_num,qq_name,qq_pwd,qq_img,qq_online,qq_action,belong_country)

values('1001','刘备','123456',1001,'4G在线','天天向上','蜀')

练习select语句,查询所有数据,提问如果要实现登录,应如何查询

select*fromQQ_Loginwhereqq_num='1001'andqq_pwd='123456'

练习update语句,修改关羽所属国家,

updateQQ_Loginsetbelong_country='魏’

执行的结果是什么?

引出为什么要设置主键,主键的作用是做什么的

练习delete语句,删除一条关羽这条记录

(14)了解学生进度

(15)思考一下,如果我们要实现联系人功能,需要如何设计数据库。

也就是描述谁是谁的联系人,我们是在QQ_Login表中设计,还是需要另外建一张表?

如果是另外建,应该如何设计?

----观察联系人界面所需的信息,哪些是重复的信息?

能否去掉这些重复信息?

---表的主键是什么?

(16)结束本次课程,进入讨论答疑环节。

作业:

相关习题

教学单元:

移动应用开发(10)

授课班级:

授课时间:

2

教学地点:

教学目的:

⏹应知:

1、了解SQLite数据库;

2、了解如何使用程序访问SQLite数据库;

⏹应会:

4、会使用SQLiteOpenHelper创建和管理数据库;

5、能实现登录功能;

6、能完成简单Android程序的开发

教学重点、难点:

3.SQLiteOpenHelper的使用

4.实现登录功能

教学方法:

根据本堂课教学内容的重点与难点,教学过程中主要采用以下教学方法:

4.在理论教学上,主要在钉钉平台上进行,以讲授和教学演示为主,通过提问引导学生发现问题、分析问题,掌握Android软件开发的基本概念和流程。

5.在实践教学上,采用“实例引导,项目驱动”的方式讲授。

通过实现相关实例,在实例基础上改造拓宽,真正实现“学以致用”。

钉钉和QQ相结合,采用演示、实践和讨论相结合的模式。

6.注重教学整体过程设计,依托网络平台,将课前预习、课中讲授与演练和课后练习与讨论答疑有机结合,不断摸索提高教学效果。

 

教学过程设计:

备注:

1.课程设计

(1)回顾上次课的内容,提出在Android中如何访问SQLite数据库的问题。

(2)在Java中我们通常采用JDBC访问数据库,但因为JDBC会消耗较多的系统资源,所以Android采用专门的一些API来访问SQLite----SQLiteDatabase。

(3)一个SQLiteDatabase的实例就代表了一个SQLite的数据库,通过SQLiteDatabase实例的一些方法,我们可以执行SQL语句,对数据库进行增、删、查、改的操作。

主要是execSQL和rawQuery方法。

(4)但是,如何获得和管理SQLiteDatabase对象呢----SQLiteOpenHelper,简单介绍SQLiteOpenHelper。

(5)以登录功能为例,展示SQLiteOpenHelper的使用

(6)新建dbutils包,在该包下,新建类“MyDbHelper”,继承自SQLiteOpenHelper,并重写相关方法

构造器方法:

采用默认形式

这里,我们需要实现登录功能,主要使用QQ_Login表,所以我们需要在onCreate方法中创建一个数据表QQ_Login,并为其添加初始的数据

 

publicclassMyDbHelperextendsSQLiteOpenHelper{

publicMyDbHelper(Contextcontext,Stringname,

SQLiteDatabase.CursorFactoryfactory,intversion){

super(context,name,factory,version);

}

@Override

publicvoidonCreate(SQLiteDatabasedb){

Stringsql="CREATETABLE[QQ_Login]("+

"[qq_num]VARCHAR(20)PRIMARYKEYNOTNULL,"+

"[qq_name]VARCHARNOTNULL,"+

"[qq_pwd]VARCHARNOTNULL,[qq_img]INT,"+

"[qq_online]VARCHAR,[qq_action]VARCHAR,"+

"[belong_country]VARCHAR);";

db.execSQL(sql);

initData(db);

}

privatevoidinitData(SQLiteDatabasedb){

Stringcountries[]=newString[]{"蜀","魏","吴"};

Stringnums[][]=newString[][]{

{"1001","1002","1003","1004","1005","1006"},

{"2001","2002","2003"},{"3001","3002","3003"}};

Stringnames[][]=newString[][]{

{"刘备","关羽","张飞","赵云","黄忠","魏延"},

{"曹操","许褚","张辽"},{"孙权","鲁肃","吕蒙"}};

inticons[][]=newint[][]{

{R.drawable.liubei,R.drawable.guanyu,R.drawable.zhangfei,

R.drawable.zhaoyun,R.drawable.huangzhong,

R.drawable.weiyan},

{R.drawable.caocao,R.drawable.xuchu,R.drawable.zhangliao},

{R.drawable.sunquan,R.drawable.lusu,R.drawable.lvmeng}

};

Stringsql="insertintoQQ_Login(qq_num,qq_name,qq_pwd,qq_img,

+"qq_online,qq_action,belong_country)"+

"values(?

?

?

?

?

?

?

)";

for(inti=0;i

for(intj=0;j

db.execSQL(sql,newObject[]{nums[i][j],names[i][j],

"123456",icons[i][j],"4G在线",

"天天向上",countries[i]});

}

}

@Override

publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){

}

}

(7)了解学生进度

(8)根据QQ_Login表的定义,修改“cn.edu.szpt.qqdemov3.beans”包中的QQContact类,添加两个成员变量,以及对应的getter和setter方法和构造器方法。

privateStringnum;

privateStringbelong_country;

(9)切换到LoginActivity.java中,修改onCreate()方法中,登录按钮的监听器处理代码,实现本地数据库验证功能。

首先采用拼接SQL语句的方式实现,演示SQL注入式攻击,然后强调必须使用参数形式,

btnLogin.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

MyDbHelperhelper=newMyDbHelper(getApplicationContext(),

"QQ_DB",null,1);

SQLiteDatabasedb=helper.getReadableDatabase();

Stringsql="select*fromQQ_Loginwhereqq_num=?

andqq_pwd=?

";

Cursorcursor=db.rawQuery(sql,newString[]{

etQQName.getText().toString(),

etQQPwd.getText().toString()});

if(cursor.moveToNext()){

//登录成功,跳转到登录后界面

}else{

Toast.makeText(getApplicationContext(),"用户名或密码错误",

Toast.LENGTH_LONG).show();

}

}

});

(10)了解学生进度

(11)因为我们每次访问数据库都需要创建MyDbHelper对象,如果我们后面数据库名称和版本发生变化,我们需要修改的地方太多,所以,我们可以把这些信息放在一个常量里面。

(12)在dbutils包中,新建类“Db_Params”,以静态常量形式存放数据库的相关参数。

并修改相应的代码

publicclassDb_Params{

publicstaticfinalStringDB_NAME="QQ_DB";

publicstaticfinalintDB_VER=1;

}

(13)登录成功后,我们需要在界面上显示登录用户的头像,并显示与之相关的消息信息和联系人信息,因此,我们需要在多个类中使用当前登录的用户信息,为了方便使用,我们在MainActivity.java中,添加一个公有的静态变量loginedUser,用以存放登录用户的相关信息。

当登录成功后,跳转到MainActivity之前,添加如下语句,将登录用户的信息保存在loginedUser。

MainActivity.loginedUser=newQQContactBean(

cursor.getString(cursor.getColumnIndex("qq_num")),

cursor.getString(cursor.getColumnIndex("qq_name")),

cursor.getInt(cursor.getColumnIndex("qq_img")),

cursor.getString(cursor.getColumnIndex("qq_online")),

cursor.getString(cursor.getColumnIndex("qq_action")),

cursor.getString(cursor.getColumnIndex("belong_country")));

(14)当登录成功后,更新联系人界面上的登陆用户头像。

打开QQContactFragment.java文件,添加成员变量logined_img指向界面中的ImageView控件

privateImageViewlogined_img;

在onCreateView()方法中,通过findViewById()方法找到相应的控件,然后实现登录用户头像显示功能。

logined_img=(ImageView)view.findViewById(R.id.imgLoginIcon);

logined_img.setImageResource(MainActivity.loginedUser.getImg());

(15)结束本次课程,进入讨论答疑环节。

作业:

相关习题

教学单元:

移动应用开发(11)

授课班级:

授课时间:

6

教学地点:

教学目的:

⏹应知:

1、了解SQLite数据库的使用;

2、了解如何使用程序访问SQLite数据库;

⏹应会:

7、会使用DialogFragment创建对话框;

8、能实现联系人显示、添加和删除功能;

9、能完成简单Android程序的开发

教学重点、难点:

5.实现联系人显示、添加和删除

6.DialogFragment的使用

教学方法:

根据本堂课教学内容的重点与难点,教学过程中主要采用以下教学方法:

7.在理论教学上,主要在钉钉平台上进行,以讲授和教学演示为主,通过提问引导学生发现问题、分析问题,掌握Android软件开发的基本概念和流程。

8.在实践教学上,采用“实例引导,项目驱动”的方式讲授。

通过实现相关实例,在实例基础上改造拓宽,真正实现“学以致用”。

钉钉和QQ相结合,采用演示、实践和讨论相结合的模式。

9.注重教学整体过程设计,依托网络平台,将课前预习、课中讲授与演练和课后练习与讨论答疑有机结合,不断摸索提高教学效果。

 

教学过程设计:

备注:

1.课程设计

(1)回顾上次课的内容,提出本课的目标是实现联系人界面中的显示功能

(2)要实现联系人的管理,我们需要新建一张表QQ_Contact,用以记录每个用户的联系人关系,其中contactId为主键,自动增量;qq_num表示联系人的QQ号码;belong_qq表示联系人所属用户的QQ号码。

(3)这张表描述了每个用户有哪些联系人,但是我们观察一下联系人的界面,发现我们还需要每个联系人的信息,比如头像、姓名等。

那么这就涉及了表的连接,多表连接包括内连接、外连接、左外连接、右外连接。

SQLite只有内连接和左外连接,使用QQ_DB演示两种连接方式

(4)为了方便访问,我们再定义一个视图view_Contact,将QQ_Contact表左连接QQ_Login表,SQL语句如下:

SELECT

[u].[contactId],

[u].[belong_qq],

[v].*

FROM[QQ_Contact][u]

LEFTJOIN[QQ_Login][v]ON[u].[qq_num]=[v].[qq_num]

 

(5)了解学生进度

(6)这里,我们需要更新数据库QQ_DB,但是,onCreate方法只是在第一次创建数据库才会调用,因此,这里我们需要删除已创建的数据库,操作如下:

打开AndroidDeviceMonitor窗口。

找到data/data/…qqdemov3/databases/目录,删除QQ_DB和QQ_DB-journal两个文件。

(7)打开QQDemoV3工程中“cn.edu.szpt.qqdemov3.dbutils”包下的MyDbHelper.java文件,修改onCreate()方法,在initData(db)方法调用前添加如下代码。

//创建QQ_Contact表

sql="CREATETABLE[QQ_Contact]("+

"[contactId]INTEGERPRIMARYKEYAUTOINCREMENTNOTNULL,"

+"[qq_num]VARCHARNOTNULL,[belong_qq]VARCHARNOTNULL);";

db.execSQL(sql);

//创建view_Contact视图

sql="CREATEVIEW[view_Contact]AS"+

"SELECT[u].[contactId],[u].[belong_qq],[v].*FROM[QQ_Contact][u]"

+"LEFTJOIN[QQ_Login][v]ON[u].[qq_num]=[v].[qq_num];";

db.execSQL(sql);

(8)了解学生进度

(9)修改MyDbHelper类中的initData()方法用来初始化数据。

privatevoidinitData(SQLiteDatabasedb){

//。

省略相关数组的定义,和初始化。

此部分不变

Stringsql="insertintoQQ_Login(qq_num,qq_name,qq_pwd,qq_img,"+

"qq_online,qq_action,belong_country)values(?

?

?

?

?

?

?

)";

for(inti=0;i

for(intj=0;j

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1