软件设计安卓开发报告.docx
- 文档编号:9680349
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:23
- 大小:300.23KB
软件设计安卓开发报告.docx
《软件设计安卓开发报告.docx》由会员分享,可在线阅读,更多相关《软件设计安卓开发报告.docx(23页珍藏版)》请在冰豆网上搜索。
软件设计安卓开发报告
通信与信息工程学院
2015/2016学年第2学期
软件设计实验报告
模块名称Android开发
专业通信工程
学生班级
学生学号
学生姓名
指导教师
设计题目
1.安卓开发班级圈app
2.安卓开发企业移动安全巡检系统
任务要求
1.能配置Android的应用开发环境,并在此环境下开发。
2.使用Android移动开发技术实现围绕班级的应用。
3.设计企业移动安全巡检系统的基本功能并用Android移动开发技术实现;要求有图形界面及事件处理;设计数据模型并在Oracle中建立表(或使用其他数据库)。
实验设备及软件
1.硬件:
兼容机一台、Android开发实验箱
2.软件:
JDK1.7;Eclipse,Tomcat7.0;Oracle9i数据库
同组人员学号及姓名
一人一组
参考文献
[1]王诚等.Java编程实用技术.北京:
人民邮电出版社, 2012
[2]王诚等.Android移动互联应用开发教学实验箱实验指导书,2014
报告内容
一.实验目的
本软件设计是在理论课程的基础上,重点培养学生的动手编程能力,通过搭建开发环境、能够根据需求分析,系统设计及详细设计,最终编码测试运行,了解软件项目的开发过程,熟悉开发工具、熟练掌握使用一门语言。
根据大纲提供的题目和要求,实现其功能。
二.实验内容
下载JDK软件包到本地;设置环境变量;提示符下运行java程序;安装MyEclipse开发环境,并在此环境下安装Android包,安装Tomcat应用服务器。
根据一个课程相关的app应用,从需求出发,分析设计内容及功能,能够实现围绕班级的分享、发帖、回复、关注等内容,建立模型并开发,经过测试、调整,实现系统编程,以理解掌握Android开发技术。
根据一个企业移动安全巡检的应用,从需求出发,分析实际系统的数据模型及编程模式,进行企业安全巡检系统设计并开发,完成的主要功能经过测试、调整,实现相关编程,以理解掌握如何应用Android移动开发技术。
三.实验过程
3.1安装过程
1.在官网上下载jdk1.7,安装后,配置环境变量,分别设置classpath和path环境变量,具体设置见下图:
系统属性---高级---环境变量,新建Classpath,设置它的jdk路径,classpathD:
\android_e\jdk1.7\libpath后加一个;D:
\android_e\jdk1.7\bin即可,这时候我们在程序中输入cmd,调出dos窗口,输入java,看到一长串的东西,说明安装成功,这时我们输入java-version,可以看到dos窗口上显示所安装的jdk版本。
安装tomcat服务器
1、首先是Tomcat的获取和安装。
上Apache的官方网站下载,开源免费,下载很快。
这是两种不同的下载,一个是普通安装版本,一个是解压安装版本。
使用起来是一样的,只是在普通安装版本中有一些界面可提供对Tomcat的快捷设置,而且普通安装会将Tomcat作为系统服务进行注册。
2、Tomcat的运行环境搭建。
(解压版)安装(就是解压)完成后如下:
Tomcat的启动是一个bat文件(Windows下),在bin目录下。
双击即可。
我一开始安装了好多次,都没有成功,后来请教了别人,调出dos窗口,在里面输入安装的tomcat的bin路径,它提示说没有找到jdk,后来上网查了才知道:
如果启动不成功,一般的情况是控制台出来一下立即消失,说明Tomcat没有找到Java的运行时环境。
简单理解,就是Tomcat找不到JDK,没办法运行。
御史我“告诉”它JDK的安装路径,即在环境变量里新建JAVA_HOME(不区分大小写),指向JDK安装目录。
如下:
这样,Tomcat就配置好了,启动就OK。
启动Tomcat,在浏览器地址栏输入http:
//localhost:
8080/如果看到关于Tomcat的介绍,说明配置成功,当时还是小小地激动了一下。
接下来就是将tomcat配置进eclipsejavaee了,
【Windows】->【Preferences】->【server】-edit
Finishok就行
在下方server处出现我们要安装的那个tomcat,安装成功
3.2界面布局
这两周我渐渐熟悉了常用的UI组件,UI布局,UI元素。
能够简单的编写界面的布局(XML)文件。
从新建工程到一头雾水,建了几个工程才慢慢了解到到底在哪几个目录下写xml文件还是写java文件,文件中提到的string图片,只要是系统软件里没有的都要手动添加进去。
根据下图我们可以看到:
MainBody.java,Main.xml,Strings.xml,AndroidManifest.xml这四个文件。
MainBody.java这是我们创建的java文件,他主要是实现项目的功能。
Main.xml实现窗体界面的布局和显示。
Strings.xml这是Main.xml程序中的变量登记表。
AndroidManifest.xml这是窗体页面登记表。
LinearLayout表示一行的布局。
这整个窗体布局器中只有一行,可见这个界面就只有一行,即整块手机屏幕区域。
TextView表示一个组件,用于显示一个文本区域,并且可以看到,这个文本是来看hello这个变量。
android:
layout_width="fill_parent"表示设置宽度,为充满整个窗体。
android:
layout_height="wrap_content"表示设置高度,为默认尺寸。
对简单的按钮的会编一点了,比如androidid="@+id/btn_save"中androidid设置这个空间的id;@+id就是在我的R.java文件新加一个id;/btn_save就是新加的id。
用Android:
layout_marginLeft,意思是距离左边框的距离;用android:
layout_marginRight,意思是距离右边框的距离。
同理,android:
layout_marginTop:
距离上边框android:
layout_marginBottom:
距离下边框。
android:
layout_alignParentRight="true"使当前控件的右端和父控件的右端对齐。
这里属性值只能为true或false,默认false。
android:
layout_marginLeft="10dip"使当前控件左边空出相应的空间。
android:
layout_toLeftOf="@id/ok"使当前控件置于id为ok的控件的左边。
android:
layout_alignTop="@id/ok",使当前控件与id控件的上端对齐。
3.3功能的实现
3.3.1添加功能基本方法
界面出来了,但你会发现窗体上的组件没有任何作用,所以接下来我们就需要为窗体上的组件添加上相应的功能。
登陆界面的功能是当我们输入正确的帐户和密码之后,自动将页面跳转到新的页面中去。
即接下来要实现的就是从输入框中获取信息,按登陆按钮时自动核对信息。
这时我们需要在MainBody.java文件中来实现这些功能。
onCreate()就是我们的主程序入口,相当于Main()函数,在程序中第一个执行的主线程。
也许我们会产生疑问,我们刚刚编写的窗体界面是如何与这个功能程序关联的呢?
细心的人可以看到setContentView(R.layout.main);这句代码,正是这个代码确定了本程序的具体布局也是显示窗体的功能。
下面让我们来添加窗体的按钮的监听器,监听屏幕上对象。
当按下按钮时产生相应的功能。
我们使用命名内部类的方式创建Lister监听对象,OnClickListener是一个接口,创建对象后还需要实现它里面的方法体,该接口中只有一个方法体onClick(Viewv);接下来实现监听器内的方法麻烦就来了,如何知道窗体上点中的是哪个按钮呢?
如何获得在Main.xml布局管理器中创建的组件呢?
这时我们可以回到第二步“显示窗体”中或查看我们的Main.xml文件中,我们会发现,在我们创建组件时,都加上了android:
id="@+id/person_name"这样一段代码,只是斜杠后面的名称都不一样,这就是我们给每个组件设置的ID号,这个ID号会在R.java文件中自动注册,并且全部是静态变量,既然是静态变量,那我们就可以跨类使用R.java文件中注册的ID号来对Main.xml中的对象操作了,如果我这样说不能明白,那只要知道我们可以通过使用对象的ID号来对组件操作就行了。
那我们从ViewV这个窗体对象中来获取被操作的对象ID,通过v.getId()方法来获得一个整形数值;用switch()语句来判断相应的操作,对应的值就是R.id.名称。
通过这种方式我们就可以确定在窗体上点击了什么按钮,当然还需要对按钮对象加上这个监听方法就OK了。
接着我们完善一下当按下“登陆”按钮时,触发的下一事件,即判断帐户和密码输入框中是否有内容以及内容是否正确。
我们知道了如何获取按钮的操作方法了,那么文本输入框的操作方法获取方式是否以前面一样呢?
如果我们尝试后会知道,我们虽然可以通过ID获取文本输入框这个对象,却无法通过这种方法获取文本输入框中的内容。
那么这里我们就需要把这个ID的对象实例化了,根据它的ID来实例化这个对象,其实每个组件都可以被实例化,这里我们也看到了,需要通过实例化后的组件对象才能添加刚才我们创建的监听方法,这里需要注意,帐户和密码输入框两个组件都定义成了全局变量,这样方便在监听方法中直接引用。
3.3.2设计流程
3.3.3具体功能实现
1.关于发帖
最简单的方法,发帖后将生成的数据存到数据库,然后刷新论坛列表页。
2.关于点赞功能
数据库字段里面有个“赞”的字段,当用户点击该图片,onclick事件内进行数据库操作:
每次点击就添加+1,后Update该对应的ID的“赞”字段。
建立服务器,使用 php asp nodejs等 语言,接受 app 传来的请求, 然后访问数据库。
不过时间太短,我只安装了服务器,并不会用,只是建了一个数据库。
3.Android中利用App实现消息推送机制的实现
步骤/方法
消息推送机制
服务器器端需要变被动为主动,通知客户一些开发商认为重要的信息,无论应用程序是否正在运行或者关闭。
独立进程,无论程序是否正在运行,我们都要能通知到客户,我们需要一个独立进程的后台服务。
我们需要一个独立进程的后台服务。
在androidmanifest.xml中注册service时,有一个android:
process属性,如果这个属性以"."开头,则为此服务开启一个全局的独立进程,如果以":
"开头则为此服务开启一个为此应用私有的独立进程。
通知用户和点击查看,停止服务,viewsourceprint?
1stopservice(newintent(myactivity.this,messageservice.class));
2setmessagepush(false);//设置配置文件或数据库中flag为false
运行一下,停止服务。
退出线程,实践证明,thread的stop()方法并不可靠。
但是我们有其他的办法。
退出线程有两种方法。
第一种方法,强制退出。
viewsourceprint?
1//杀死该线程所在的进程,自然就退出了
2system.exit(0);第二种方法,设置isrunning为false。
4.关于分享的核心代码
public void onClickShare(View view) {
Intent intent=new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_SUBJECT, "分享");
intent.putExtra(Intent.EXTRA_TEXT, "终于可以了");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(Intent.createChooser(intent, getTitle()));
}
5.关于评论功能
获取到评论人的ID 然后提交你的回复内容,你的用户ID,当前评论的ID 然后点击回复 发送给服务器 他自己处理去吧。
点击评论的时候,前台就记录当前回复是针对哪条评论id,提交的时候一并存起来。
3.3数据库的建立
1.数据库我下载的是MySQL,这个相对比较简单,对于我这个新手来说,数据库用这个软件是比较轻松的。
下面来创建一个数据:
mysql>CREATEDATABASEtest;//创建一个数据库
mysql>usetest;//指定test为当前要操作的数据库
mysql>CREATETABLEuser(nameVARCHAR(20),passwordVARCHAR(20));//创建一个表user,设置两个字段。
mysql>INSERTINTOuserVALUES('huzhiheng','123456');//插入一条数据到表中
2.打开Eclipse,创建一个项目(my),
操作:
右键点击my--->buildPath--->addexternalArchiver...选择jdbc驱动,点击确定。
我的项目列表:
3。
驱动已经导入,下面我们来写一个程序验证一下
importjava.sql.*;
publicclassMysqlJdbc{
publicstaticvoidmain(Stringargs[]){
try{
Class.forName("com.mysql.jdbc.Driver");//加载MYSQLJDBC驱动程序
//Class.forName("org.gjt.mm.mysql.Driver");
System.out.println("SuccessloadingMysqlDriver!
");
}
catch(Exceptione){
System.out.print("ErrorloadingMysqlDriver!
");
e.printStackTrace();
}
try{
Connectionconnect=DriverManager.getConnection(
"jdbc:
mysql:
//localhost:
3306/test","root","198876");
//连接URL为jdbc:
mysql//服务器地址/数据库名,后面的2个参数分别是登陆用户名和密码
System.out.println("SuccessconnectMysqlserver!
");
Statementstmt=connect.createStatement();
ResultSetrs=stmt.executeQuery("select*fromuser");
//user为你表的名称
while(rs.next()){
System.out.println(rs.getString("name"));
}
}
catch(Exceptione){
System.out.print("getdataerror!
");
e.printStackTrace();
}
}
}
点击运行程序:
SuccessloadingMysqlDriver!
SuccessconnectMysqlserver!
huzhiheng
出现上面结果,说明连接数据库成功。
网上找了个例子,往MySQL的user表中插入100条数据,以此来熟悉MySQL。
importjava.sql.*;
publicclassMyjproject{
publicstaticvoidmain(Stringargs[])
{
try{
Class.forName("com.mysql.jdbc.Driver");//加载MYSQLJDBC驱动程序
//Class.forName("org.gjt.mm.mysql.Driver");
System.out.println("SuccessloadingMysqlDriver!
");
}
catch(Exceptione){
System.out.print("ErrorloadingMysqlDriver!
");
e.printStackTrace();
}
try{
Connectionconnect=DriverManager.getConnection("jdbc:
mysql:
//localhost:
3306/test","root","198876");
intnum=100;
PreparedStatementStatement=connect.prepareStatement("INSERTINTOuserVALUES(?
?
)");
for(inti=0;i { Statement.setString(1,"chongshi"+i); Statement.setString(2,"bo"+i); Statement.executeUpdate(); } //}catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock //System.out.println("Anerrorhasoccurred: "+e.toString()); //e.printStackTrace(); }catch(SQLExceptione) { } } } SQliteAndroidSQLite的应用简易的车间情况管理系统1.用到类似表单的界面。 界面美观清晰。 2.搭建ListViewWIdget组件。 单击列表项即可对其删除修改。 3.实现了对车间信息的增,删,改,查。 四.实验结果 该班级圈实现了动态登陆,点击登陆按钮, 五.问题及解决: 关于修改代码过程中遇到了种种问题,经过多次上网搜索和自己亲自摸索实践总结出了一点东西: 1.在修改了资源文件后,出现“"cannotberesolvedorisnotafield",解决方法如下: a.删除R.Java文件,这时,系统会重新生成一个R.java; b.删除java代码中的”importAndroid.R“文件。 2安卓开发中Theme.AppCompat.Light的解决方法 styles.xml中 error: Errorretrievingparentforitem: Noresourcefoundthatmatchesthegivenname 'Theme.AppCompat.Light'. 解决方法: 在Eclipse中打开任意一个.java文件,输入android.R.style.这时你会看到一个提示列表,仔细看看,再对比一下,看哪个与原有的最接近就选择哪个。 用将下划线替换成"."就可了。 将 改为 Theme.Light"> 同理,将 改为 Theme.Holo.Light.DarkActionBar"> 3.还有一个是重复引用问题,比如: xmlns: android="namespaceprefix"xmlns"foundfortagTableLayout 解决方案: scrollview中已经引用了xmlns,下面那个tablelayout就不能再用了,后面的地址一样,去掉就可以了。 当然除了代码修改,还有整个模拟器的运行,以及将我们制作的app在手机上完美运行也是遇到重重困难的,比如手机版本问题。 打开SDK安装目录,找到SDKManager.exe(windows平台),点击运行。 点Tools菜单,选中About,弹出信息框就可以看到SDK版本。 minSdkVersion=“8”,说明该应用在只能安装在大于等于android系统APIlevel为8(android2.2)的系统上,尽量要让minSdkVersion的值大于等于我们用到的API接口的开始被支持的最低版本。 这样可以让不支持该接口的android系统不能安装我们的应用,防止应用在一些手机上因兼容性问题而崩溃。 出现乱码 安卓App真机测试显示乱码,怎么解决? 后台使用Tomcat服务器,mysql数据库,数据成功添加并正常显示在数据库中,但是手机中就变成了问号,用的是服务器返回json字符串,对于这种问题,一般都是默认编码问题。 看一下你项目的编码是不是UTF-8。 六.心得体会 通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。 例如: 要的布局(或者控件),在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。 对一些点击、选中、按键等处理的事件,界面之间的跳转Intent管理,通过Bundle对数据在界面之间进行传输。 自学了一点数据库知识。 在Android编程过程中巩固熟悉了Java知识是必须的。 要深入系统的学习Android,不仅仅是有Java和Android应用开发,必须要具备java,C/C++高级编程才能深入的涉及AndroidFramework和Android内核开发。 成为Android开发的高素质人才。 所以
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 开发 报告