安卓(Androidstudio)课程设计,期末

您所在的位置:网站首页 android期末试卷 安卓(Androidstudio)课程设计,期末

安卓(Androidstudio)课程设计,期末

2023-08-13 11:52| 来源: 网络整理| 查看: 265

Android程序设计与实践

课程设计报告  

 

 

 

 

 

 

姓    名:               梁                     

学    号:           2019                     

专    业:                计算机科学与技术           

项目名称:                族 迹                         

指导教师:                                             

课程设计日期: 2021年12月6日至 2021年12月19日

 

  

 

 

 

 

 

 

2021年12月19日

 

 

Android程序开发课程设计记录单

学号

 

姓名

 

性别

 

指导教师

          

项目名称

            族迹

项目描述

了解各民族的风俗习惯,拓展自己的视野。

项目评语

 

 

 

分项成绩

平时成绩

实践能力

设计报告

 

 

 

总成绩

 

等级

 

目 录

   

 

 

目录

第一章 概述

第二章 需求分析

2.1 项目背景

2.2 项目需求

第三章 相关技术

3.1 Android studio介绍

一、应用程序

二、应用程序框架

三、系统运行库

3.2 关键技术研究

第四章 概要设计

4.1  系统体系结构

4.2  用户界面设计

4.2.1动画载入界面

4.2.2登录注册界面

4.2.3进入系统主首页界面

4.2.4朋友圈界面

4.2.5“我的”界面

第五章 页面设计

5.1  系统体系结构

5.2  用户登录界面设计

5.3  用户界面设计

5.3.1主页界面

5.3.1.1民族服饰页面

5.3.1.2手工艺品页面

5.3.1.3传统建筑页面

5.3.2朋友圈界面

5.3.3“我的”界面

5.3.3.1我的收藏

5.3.3.2我的书友页面

5.3.3.3我的共享页面

5.4数据库表的展现

1. Zhucebiao表:用来存放用户账号密码信息

2. Haoyou表:用来APP里的好友信息

3. tb_tiezi表:用来存放用户发布的帖子

第六章 详细设计

6.1  注册界面模块

6.2  用户登录界面模块

6.3 用户主页面“首页”

6.3.1首页跳转页面“服饰、工艺、建筑”

6.4  朋友圈页面模块

6.5  “我的”界面模块

6.5.1 “我的”界面-我的收藏

6.5.2 “我的”界面-好友管理

6.5.3 “我的”界面-反馈建议

第七章 结论

 

 

 

 

 

第一章 概述

近年来,随着媒体和信息技术的快速发展, 国内外的智能手机发展趋势越来越好,随着人们生活水平的提高,人们对于智能手机功能的需求量也相对增加,智能手机的涉及范围已经布满全世界, 因为智能手机具有优秀的操作系统、 可自由安装各类软件、 完全大屏的全触屏式操作感这三大特性, 所以完全终结了前几年的键盘式手机。

随着智能手机的发展, Android 系统也广泛发展起来,收到用户普遍欢迎。 Android 系统作为智能手机系统, 因其自由及开放源代码使得它具有极强的竞争力。2014 第一季度 Android 平台已占所有移动广告流量来源的 42.8%,首度超越IOS。

本课题要求:设计的族迹APP是一个致力于民族元素的APP,主要针对的是社会上喜爱民族风以及对中华传统文化充满兴趣的各种人群。 民族风是中华民族文化艺术的瑰宝,而族迹则是为喜爱中国民族传统文化的大众提供交流的平台。

族迹APP主要完成的功能:首页界面(民族服饰、手工艺品、传统建筑、其他)点击进入相应的界面后,点击“了解更多”会跳转一个网址,查看更多的内容。朋友圈(发布朋友圈、好友朋友圈),我的界面(我的收藏、好友管理、反馈建议、关于APP)。

 

第二章 需求分析 2.1 项目背景

随着社会的进步,尤其是计算机技术与网络的发展,人们对于数据传输,远程控制的实时性要求越来越高,这就使得计算机技术的发展越来越面向网络。现代学校管理无疑成为网络应用的典型代表,这些年电脑计算机的速度质的提高,成本的下降,IT互联网大众趋势的发展。我们使用电脑的高效率才处理数据信息成为可能。学生学籍管理系统的出现,正是管理人员与信息数据,计算机的进入互动时代的体现。友好的人机交互模式,清晰简明的图形界面,高效安全的操作使得我们对成千上万的的信息的管理得心入手。通过这个系统,可以做到了解信息迅速,科学统计和快速的查询各个民族的风俗习惯,从而扩展青少年的以及成人的认知能力。毋庸置疑,切实有效的把计算机管理引入学校教务管理中,对于促进学校管理制度,提高学校教学质量与办学水平有着显著意义。提高青少年的动手、动脑的能力,为国家的发展奠定基础。

2.2 项目需求

本项目主要目的是为用户展示一些有关民族的消息,设计的意义是让用户足不出户的了解到最新资讯。 让更多的人群了解到中华民族的多样性,趣味性,价值性,以及传播性,这就是族迹的意义所在。 

对好友管理的操作,如查看、修改、删除。在该应用的构建中的重点就在数据储存方面, 通过设计该应用熟练掌握了数据储存的技术。

项目的色调主要以简洁为主,更好的使用人们的眼球。界面原型大多采用界面图形大多采用椭圆轮廓,给用户的视觉效果显得不生硬,十分圆润。整体布局合理符合规定,界面简单,操作简易,易于用户上手,适合年龄范围广。

族迹APP的基本控制可以用下图来进行一个说明:

如图2-1所示:

 

 

 

图2-1 族迹APP视图分布

 

整个程序基于Android技术开发,准页面分为首页、朋友圈、我的三大主页面。在首页中可以分别点击民族服饰、手工艺品、传统建筑显示相应的图片和信息。当点击“朋友圈”的时候,你可以发布查看好友发布的信息,并且你可以发布你的信息。当你点击“我的”时候,有我的收藏、好友管理、反馈建议、关于App,有什么建议可以在反馈建议中发表你的看法。在好友管理页面 可以实现添加、查询、修改、删除好友。我们绘制了一个管理员操作流程图,以便更好地传达我们的意思,提高使用体验。如图2-2所示:

 

 

 

 

图2-2 开发流程

 

第三章 相关技术 3.1 Android studio介绍

A2017年6月,英创公司在ESM6802+10.1”LCD的硬件平台上成功运行Android 7.1.1原生操作系统。2017年8月,ESM6802 Android 版可以支持GPIO、串口、以太网、U盘。后续将进一步完善对CAN、SPI、I2C、WIFI、4G等接口的支持。

Google公司专门为开发Android应用程序提供了集成开发环境Android Studio,涵盖了所有Android应用开发相关的功能。Android应用程序主要使用Java语言编写,要用到开发工具集SDK(Software Development Kit,提供java编译工具、Android系统API等,可以直接在Android Studio中下载)。当应用程序中要直接访问硬件,或者需要提高运行效率时,需要将访问硬件、复杂逻辑部分使用C/C++实现。要在Android Studio中开发编译C/C++代码,需要用到工具集NDK(Native Development Kit,提供C/C++编译工具、API、打包工具等,可直接在Android Studio中下载)。使用NDK可以将C/C++源码编译成动态链接库,供Java调用。由于Java语言要调用C/C++函数需要用到JNI(Java Native Interface)技术,这就要求使用NDK开发C/C++时,C/C++源码要符合JNI规范要求。

一、应用程序

Android 会同一系列核心应用程序包一起发布,该应用程序包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。

二、应用程序框架

开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。隐藏在每个应用后面的是一系列的服务和系统, 其中包括:

(1)丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web浏览器。

(2)内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。

(3)资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。

(4)通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。

(5)活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。

     三、系统运行库

    开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。隐藏在每个应用后面的是一系列的服务和系统, 其中包括;

(1)丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web浏览器。

(2)内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的 数据

(3)资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。

(4)通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。

(5)活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。

3.2 关键技术研究

在安卓系统中,包含有四个基本组件,其中组件 Activity,Content Provider是可见的,而组件 Service 和 BroadcastReceiver 是不可见的,只会默默的在后台运行。

(1)Service

通过字面意思我们就可以知道 Service 是一种后代的服务程序,在通常情况下他是不会与用户有联系的,所以我们不需要对其设计一个可视化界面,只要它能够实现功能就可以了,他的任务是对可见的 Activity 以及一些数据源进行更新。而且它必须在 Android Manifest.xml 配置文件注册,只有这样才能实现其功能,为了实现这个,我们可以通过 startService()来实现启动一个 Service 的目的。

(2)Activity

在安卓系统中,程序的显示是依靠 Activity 实现的,需要通过 Views 来构建 UI 来达到显示信息的目的。我们经常把他做成一个用户的可视化界面。在安卓系统中的软件程序在一般情况下不是通过仅仅一个 Activity 组成的,而是需要多个才行。比如一个应用程序需要一个 Activity 来进行显示联系人,需要另外一个来编写信息,还需要一个来查看信息以及对应用程序进行修改。虽然一个程序应用了多个 Activity,但是每一个都是相对独立的。虽然单独每一个是独立的但是多个就可以组成了栈,我们将现在活跃的放在栈顶。对于安卓系统来说每一个 Activity 的生命周期受到系统的制约。

(3)Broadcast Receiver

与 Service 类似,我们通过字面意思就知道 Broadcast  Receiver 的作用为广播接收器,相比较处理组件级别系统响应的事件处理机制,Broadcast  Receiver的处理对象为系统级别的,尤其是在通过 Intent 来启动一个程序组件的时候,我们可以通过广播事件处理机制来监听和响应。它是对事件驱动程序进行处理的理想方式。

(4)Content Provider

当我们需要进行数据的保存以及检索的时候,Content  Provider 就可以发挥它的作用了,通过它我们可以实现程序间的数据互访,如果我们的权限足够高的话,我们可以比较方便的通过 Content Provider 访问很多数据,与此同时为了实现共享数据,我们也可以自己来定义Content Provider,这样也能实现访问功能。

 

第四章 概要设计 4.1  系统体系结构

整个系统由五大界面组成,主要分为登录界面,注册界面,首页,朋友圈,“我的”五大页面。

 

 

 

图4.1 系统总体流程图

 

 

4.2  用户界面设计 4.2.1动画载入界面

动画载入界面是点击进入遗迹APP后载入软件的动画页面。

4.2.2登录注册界面

 如果用户没有账号,点击“没有账号,前往注册”用户在注册页面进行注册账号,注册完成后,点击“已有帐号,前往登录”,通过账号密码登录到遗迹APP。

 

 

 

图4.2.2 用户登陆注册录界面

4.2.3进入系统主首页界面

用户通过账号和密码登录进入到首页,该页面包括了民族服饰、手工艺品、传统建筑三个按钮,点击进入相应的信息界面。还有比较流行、热度比较高的民族信息。

 

 

 

图4-2.3 族迹APP主页面

4.2.4朋友圈界面

当你进入到朋友圈界面,查看朋友所发表的信息,你也可以点击“发布朋友圈”按钮,进入到编辑状态,发表你此刻的心情和想说的话。以便于让你的朋友知道,你的状态。

 

                                                                                                                                   

 

 

图4.2.4 族迹APP“我的”界面

 

4.2.5“我的”界面

 

在此界面下有我的关注、我的点赞、我的发布、@我的、我的收藏、好友管理、反馈建议、关于APP等按钮。点击我的收藏按钮时,会进入你所收藏的民族事迹,以便于你下次想看的时候可以随时查看。点击好友管理界面的时候,你可以进行对你的好友进行添加、修改、删除、查询。如果你有好的想法或者对与APP不满再或者朋友发布的信息不太合法的时候,你可以进入到反馈建议界面,进行发表你的评论。如果你对遗迹APP不太了解的话,点击关于APP按钮,查看用法。

                                                                                                                                         

 

 

 

 

第五章 页面设计 5.1  系统体系结构

整个系统由fragment标签创建出来的三个页面,分别是首页、朋友圈、“我的”页面。并且在打开app后会首先进入用户登录页面,如果你没有账号,点击“还没有账号,点击注册”进行登录。注册完之后,输入账号和密码,进入首页。如图4-1-1所示

 

 

 

 

                                                                    图5-1-1 族迹app框架结构

 

 

5.2  用户登录界面设计

用户打开app后如图5-2-1、图5-2-2进入到用户登录页面,用户实现登录以及注册。

 

 

 

 

图5-2-1登录页面

      

 

 

 

                

 

图5-2-2用户注册页面

5.3  用户界面设计

该app由bottom navigation activity创建而成,分为三个fragment页面,分别是主页页面、借阅界面以及个人中心页面组成,如图所示。

           

                

 

 

 

图5-2-3主页页面           图5-2-4 朋友圈界面     图5-2-5“我的”页面

 

5.3.1主页界面

主页页面主要由民族服饰,手工艺以及传统建筑页面组成。

 

 

 

 

5.3.1.1民族服饰页面 

民族服饰页面主要查看不同民族服饰的各种介绍和相关信息。

                                                                                                                                                                                  

 

 

 

                                                                    图5-3-1民族服饰页面

5.3.1.2手工艺品页面

手工艺品页面主要查看不同民族服饰的各种介绍和相关信息。

 

 

 

 

 

                                                                    图5-3-2手工艺品页面

5.3.1.3传统建筑页面

传统建筑页面主要查看不同民族服饰的各种介绍和相关信息。

 

图5-3-3传统建筑页面

5.3.2朋友圈界面

朋友圈页面主要分享和交流功能,如图所示。

  

 

 

 

     

图5-3-4朋友圈和发布朋友圈页面

5.3.3“我的”界面

个人中心页面包含四个页面,分别是我的收藏、好友管理以及反馈建议页面。

5.3.3.1我的收藏

我的收藏页面主要展现我在APP里喜欢的东西。如图所示。

 

 

 

图5-3-5我的收藏页面

 

5.3.3.2我的书友页面

好友管理页面主要管理该app上的好友。如图所示。

 

 

 

图5-3-6好友管理页面

 

5.3.3.3我的共享页面

反馈建议页面主要展现对于APP的意见反馈。如图所示。

 

 

 

图5-3-7反馈建议页面

5.4数据库表的展现 zhucebiao表:用来存放用户账号密码信息

                                                                                                                                                                              

                                                                      图5-4-1账号密码表

 

 

 

haoyou表:用来APP里的好友信息

                                                                                                                                                                                   

                                                                        图5-4-2好友管理表

 

 

pengyouquan表:用来存放用户发布的帖子

           

                                                                                                                                                                                      

图5-4-3朋友圈

 

 

 

 

 

第六章 详细设计 6.1  注册界面模块

Main2Activity代码如下:

    public class Main2Activity extends AppCompatActivity {

    private EditText et1,et2;

    String s1;

    String s2;

    MyHelper myHelper;

    ToggleButton toggleButton;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main2);

        myHelper=new MyHelper(this);

        et1=(EditText) findViewById(R.id.zhucezhanghaoText);

        et2=(EditText) findViewById(R.id.zhucemimaText2);

        toggleButton = (ToggleButton) findViewById(R.id.toggleButton);

 

        toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override

            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

 

                if(isChecked){

                    //如果选中,显示密码

                    et2.setTransformationMethod(HideReturnsTransformationMethod.getInstance());

                }else{

                    //否则隐藏密码

                    et2.setTransformationMethod(PasswordTransformationMethod.getInstance());

                }

                et2.setSelection(et2.length());

            }

        });

 

    }

    public void  zhucehao(View view){

        add();

    }

    public void add(){

        //      Toast.makeText(Main2Activity.this, "注册成功,请返回登录", Toast.LENGTH_SHORT).show();

        s1=et1.getText().toString();

        s2=et2.getText().toString();

        SQLiteDatabase db = myHelper.getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put("zhanghao",s1);

        values.put("mima",s2);

        db.insert("zhucebiao",null,values);

        db.close();

        Toast.makeText(Main2Activity.this, "注册成功,请返回登录", Toast.LENGTH_SHORT).show();

    }

 

    public void fanhuidenglu(View view) {

 

        Intent intent=new Intent(Main2Activity.this,MainActivity.class);

        startActivity(intent);

 

    }

 

}

6.2  用户登录界面模块

MainActivity .java代码如下:

    private void init() {

       public class MainActivity extends AppCompatActivity{

    private EditText et1,et2;

    MyHelper myHelper;

    ToggleButton toggleButton;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        et1=findViewById(R.id.dengluzhanghaoText);

        et2=findViewById(R.id.denglumimaText2);

        myHelper=new MyHelper(this);

        toggleButton = (ToggleButton) findViewById(R.id.toggleButton);

 

        toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override

            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

 

                if(isChecked){

                    //如果选中,显示密码

                    et2.setTransformationMethod(HideReturnsTransformationMethod.getInstance());

                }else{

                    //否则隐藏密码

                    et2.setTransformationMethod(PasswordTransformationMethod.getInstance());

                }

                et2.setSelection(et2.length());

            }

        });

    }

    public void qzhuce(View view) {

        Intent intent=new Intent(MainActivity.this,MainActivity.class);

        startActivity(intent);

    }

 

 

    public void denglu(View view) {

        String s1 = et1.getText().toString();

        String s2 = et2.getText().toString();

        SQLiteDatabase db = myHelper.getWritableDatabase();

        Cursor cursor = db.query("zhucebiao", null, null, null, null, null, null);

        boolean numkey = false;

        //        Toast.makeText(MainActivity.this, cursor.getCount()+"", Toast.LENGTH_SHORT).show();

        for (cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()) {

            String num = cursor.getString(cursor.getColumnIndex("zhanghao"));

            String key = cursor.getString(cursor.getColumnIndex("mima"));

            if (s1.equals(num.toString()) && s2.equals(key.toString())) {

                numkey = true;

                break;

            }

        }

        db.close();

        if (numkey) {

            Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();

            Intent intent = new Intent();

            intent.setClass(MainActivity.this, Main3Activity.class);

            startActivity(intent);

        } else {

            Toast.makeText(MainActivity.this, "账号密码不匹配", Toast.LENGTH_SHORT).show();

        }

    }

}

 

6.3 用户主页面“首页”

Main3Activity代码如下:

public class Main3Activity extends AppCompatActivity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main3);

        BottomNavigationView navView = findViewById(R.id.nav_view);

        // Passing each menu ID as a set of Ids because each

        // menu should be considered as top level destinations.

        AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(

               )

                .build();

        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);

        NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);

        NavigationUI.setupWithNavController(navView, navController);

        navView.setOnNavigationItemSelectedListener(item -> {

            if (item.getItemId() == R.id.main) {

                navController.navigate(R.id.main_fragment);

            } else if (item.getItemId() == R.id.dashboard) {

                navController.navigate(R.id.dashboard_fragment);

            } else if (item.getItemId() == R.id.notification) {

                navController.navigate(R.id.notification_fagment);

            }

            return false;

        });

    }

 

    public void chuantong(View view) {

        Intent intent=new Intent(Main3Activity.this, chuantong.class);

        startActivity(intent);

    }

 

    public void shougong(View view) {

        Intent intent=new Intent(Main3Activity.this,shougong.class);

        startActivity(intent);

    }

 

    public void minzu(View view) {

        Intent intent=new Intent(Main3Activity.this,minzu.class);

        startActivity(intent);

    }

 

 

}

6.3.1首页跳转页面“服饰、工艺、建筑”

 

minzu .java代码如下:

public class minzu extends AppCompatActivity {

 

    Button Btn1,Btn2,Btn3;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_home_minzu);

        Btn1=findViewById(R.id.btn_1);

        final Uri uri1=Uri.parse("https://baike.baidu.com/item/%E8%92%99%E5%8F%A4%E6%97%8F%E4%BC%A0%E7%BB%9F%E6%9C%8D%E9%A5%B0");

        Btn1.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Intent intent=new Intent(Intent.ACTION_VIEW,uri1);

                startActivity(intent);

            }

        });

 

        Btn2=findViewById(R.id.btn_2);

        final Uri uri2=Uri.parse("https://baike.baidu.com/item/%E8%97%8F%E6%97%8F%E6%9C%8D%E9%A5%B0/3498486");

        Btn2.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Intent intent=new Intent(Intent.ACTION_VIEW,uri2);

                startActivity(intent);

            }

        });

 

        Btn3=findViewById(R.id.btn_3);

        final Uri uri3=Uri.parse("https://baike.baidu.com/item/%E8%8B%97%E6%97%8F%E6%9C%8D%E9%A5%B0");

        Btn3.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Intent intent=new Intent(Intent.ACTION_VIEW,uri3);

                startActivity(intent);

            }

        });

    }

}

 

6.4  朋友圈页面模块

Pengyouquan.Java代码如下:

public class pengyouquan extends AppCompatActivity implements View.OnClickListener {

    MyHelper myHelper;

 

    private EditText mEtName, mEtPhone;

    private TextView mTvShow;

    private Button mBtnAdd, mBtnQuery, mBtnUpdate, mBtnDelete;

 

 

    @Override

 

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_pengyouquan);

        myHelper = new MyHelper(this);

        mEtName = (EditText) findViewById(R.id.et_name);

        mEtPhone = (EditText) findViewById(R.id.et_phone);

        mTvShow = (TextView) findViewById(R.id.tv_show);

        mBtnAdd = (Button) findViewById(R.id.btn_add);

        mBtnQuery = (Button) findViewById(R.id.btn_query);

        mBtnUpdate = (Button) findViewById(R.id.btn_update);

        mBtnDelete = (Button) findViewById(R.id.btn_delete);

        mBtnAdd.setOnClickListener(this);

        mBtnQuery.setOnClickListener(this);

        mBtnUpdate.setOnClickListener(this);

        mBtnDelete.setOnClickListener(this);

 

    }

 

 

 

    @Override

 

    public void onClick(View v) {

 

        String  phone;

 

        SQLiteDatabase db;

 

        ContentValues values;

 

        switch (v.getId()) {

 

            case R.id.btn_add:

 

                phone = mEtPhone.getText().toString();

                db = myHelper.getWritableDatabase();

                values = new ContentValues();

 

                values.put("phone", phone);

                db.insert("pengyouquan", null, values);

                Toast.makeText(this, "发布成功", Toast.LENGTH_SHORT).show();

                db.close();

                break;

            case R.id.btn_query:

                db = myHelper.getReadableDatabase();

                Cursor cursor = db.query("pengyouquan", null, null, null, null, null, null);

                if (cursor.getCount() == 0) {

                    mTvShow.setText("");

                    Toast.makeText(this, "你没有发布朋友圈", Toast.LENGTH_SHORT).show();

                } else {

                    cursor.moveToFirst();

                    mTvShow.setText( "你发布的内容是:" + cursor.getString(2));

                }

                while (cursor.moveToNext()) {

                    mTvShow.append("\n" + "你发布的内容是:" + cursor.getString(2));

                }

                cursor.close();

                db.close();

                break;

            case R.id.btn_update:

                db = myHelper.getWritableDatabase();

                values = new ContentValues();

                values.put("phone", phone = mEtPhone.getText().toString());

                db.update("pengyouquan", values, "name=?", new String[]{mEtName.getText().toString()});

                Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();

                db.close();

                break;

            case R.id.btn_delete:

                db = myHelper.getWritableDatabase();

                db.delete("pengyouquan", null, null);

                Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();

                mTvShow.setText("");

                db.close();

                break;

        }

    }

 

 

}

6.5  “我的”界面模块

Main3Activity.java代码如下:

public class Main3Activity extends AppCompatActivity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main3);

        BottomNavigationView navView = findViewById(R.id.nav_view);

        // Passing each menu ID as a set of Ids because each

        // menu should be considered as top level destinations.

        AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(

               )

                .build();

        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);

        NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);

        NavigationUI.setupWithNavController(navView, navController);

        navView.setOnNavigationItemSelectedListener(item -> {

            if (item.getItemId() == R.id.main) {

                navController.navigate(R.id.main_fragment);

            } else if (item.getItemId() == R.id.dashboard) {

                navController.navigate(R.id.dashboard_fragment);

            } else if (item.getItemId() == R.id.notification) {

                navController.navigate(R.id.notification_fagment);

            }

            return false;

        });

    }

    public void jiahaoyou(View view) {

        Intent intent=new Intent(Main3Activity.this,Jiahaoyou.class);

        startActivity(intent);

    }

    public void qushoucang(View view) {

        Intent intent=new Intent(Main3Activity.this,ShujuActivity.class);

        startActivity(intent);

    }

    public void fankui(View view) {

        Intent intent=new Intent(Main3Activity.this,fankui.class);

        startActivity(intent);

    }

 

}

6.5.1 “我的”界面-我的收藏

ShujuActivity.Java代码如下:

   public class ShujuActivity extends AppCompatActivity {

    private List consList=new ArrayList();

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_shuju);

        initData();

        ShujuAdapter adapter=new ShujuAdapter(ShujuActivity.this,R.layout.item,consList);

        ListView listView=(ListView) findViewById(R.id.listView);

        listView.setAdapter(adapter);

    }

 

    private void initData(){

        Shuju gongju = new Shuju(1,"手工艺工具","工具各种各样,功能各不同", R.drawable.tupiavnfive);

        consList.add(gongju);

        Shuju pingzi = new Shuju(1,"瓶身彩绘","精美的画像出自匠人之手", R.drawable.pingiz);

        consList.add(pingzi);

        Shuju yifu = new Shuju(1,"古代衣裳","每一件古时留下的衣物都是财产", R.drawable.yifu);

        consList.add(yifu);

        Shuju niren = new Shuju(1,"捏泥人","一个个栩栩如生的正在诞生", R.drawable.niren);

        consList.add(niren);

        Shuju wudao = new Shuju(1,"民族舞","56个民族每个民族有每个民族的舞蹈", R.drawable.wudao);

        consList.add(wudao);

        Shuju laoren = new Shuju(1,"民间高人","高人大多存在于民间", R.drawable.laoren);

 

        consList.add(laoren);

        Shuju fangzi = new Shuju(1,"雄伟建筑","古今中外的雄伟建筑有很多很多", R.drawable.fangzi);

        consList.add(fangzi);

        Shuju shanzi = new Shuju(1,"民族风情","山好水好人美建筑宏伟", R.drawable.shanzi);

        consList.add(shanzi);

    }

 

}

6.5.2 “我的”界面-好友管理

Jiahaoyou.java代码如下:

public class Jiahaoyou extends AppCompatActivity implements View.OnClickListener {

    MyHelper myHelper;

 

    private EditText mEtName, mEtPhone;

    private TextView mTvShow;

    private Button mBtnAdd, mBtnQuery, mBtnUpdate, mBtnDelete;

 

 

    @Override

 

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_jiahaoyou);

        myHelper = new MyHelper(this);

        mEtName = (EditText) findViewById(R.id.et_name);

        mEtPhone = (EditText) findViewById(R.id.et_phone);

        mTvShow = (TextView) findViewById(R.id.tv_show);

        mBtnAdd = (Button) findViewById(R.id.btn_add);

        mBtnQuery = (Button) findViewById(R.id.btn_query);

        mBtnUpdate = (Button) findViewById(R.id.btn_update);

        mBtnDelete = (Button) findViewById(R.id.btn_delete);

        mBtnAdd.setOnClickListener(this);

        mBtnQuery.setOnClickListener(this);

        mBtnUpdate.setOnClickListener(this);

        mBtnDelete.setOnClickListener(this);

 

    }

 

 

 

    @Override

 

    public void onClick(View v) {

 

        String name, phone;

 

        SQLiteDatabase db;

 

        ContentValues values;

 

        switch (v.getId()) {

 

            case R.id.btn_add:

                name = mEtName.getText().toString();

                phone = mEtPhone.getText().toString();

                db = myHelper.getWritableDatabase();

                values = new ContentValues();

                values.put("name", name);

                values.put("phone", phone);

                db.insert("haoyou", null, values);

                Toast.makeText(this, "添加成功", Toast.LENGTH_SHORT).show();

                db.close();

                break;

            case R.id.btn_query:

                db = myHelper.getReadableDatabase();

                Cursor cursor = db.query("haoyou", null, null, null, null, null, null);

                if (cursor.getCount() == 0) {

                    mTvShow.setText("");

                    Toast.makeText(this, "无记录", Toast.LENGTH_SHORT).show();

                } else {

                    cursor.moveToFirst();

                    mTvShow.setText("好友名:" + cursor.getString(1) + "账号:" + cursor.getString(2));

                }

                while (cursor.moveToNext()) {

                    mTvShow.append("\n" + "好友名:" + cursor.getString(1) + "账号:" + cursor.getString(2));

                }

                cursor.close();

                db.close();

                break;

            case R.id.btn_update:

                db = myHelper.getWritableDatabase();

                values = new ContentValues();

                values.put("phone", phone = mEtPhone.getText().toString());

                db.update("haoyou", values, "name=?", new String[]{mEtName.getText().toString()});

                Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();

                db.close();

                break;

            case R.id.btn_delete:

                db = myHelper.getWritableDatabase();

                db.delete("haoyou", null, null);

                Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();

                mTvShow.setText("");

                db.close();

                break;

        }

    }

 

 

}

 6.5.3 “我的”界面-反馈建议

Fankui.java代码如下:

public class fankui extends AppCompatActivity {

 

    private Button button;

    private EditText editText;

    private String content;

 

    public void initView() {

        button = findViewById(R.id.ok_button);

        editText = findViewById(R.id.edit_et);

    }

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_fankui);

        initView();

        initControl();

    }

    private void initControl() {

        button.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                content = editText.getText().toString();

                if (!TextUtils.isEmpty(content)) {

                    // post网络请求

                    Toast.makeText(fankui.this, "提交成功!", Toast.LENGTH_SHORT).show();

                } else {

                    Toast.makeText(fankui.this, "输入不能为空", Toast.LENGTH_SHORT).show();

                }

            }

        });

    }

}ublic class MD5Utils {

   

                   第七章 结论

 

    本次作业,是对我潜力的进一步锻炼,也是一种考验,在实习中我学到了许多新的知识。     一个项目的开发过程并不总是一帆风顺的,其中难免会遇到困难,使编程无法继续下去。例如在使用Fragment编写底部导航栏后,当前页面Java的编译的难点,数据库连接和页面跳转的问题。      针对程序设计过程中遇到的困难,我们采取了积极有效的解决方法:团队讨论、上网搜索及向有经验的人员请教。发现程序是在获取EditText输入的值时出现了错误,导致程序功能无法实现。最终经过反复的调试及测试,解决了上述的难点,实现了数据库连接、页面跳转等功能。     我们在困难中又学到了很多知识并把它们运用到了项目中,使其布局更加好看,功能更加完善。 总之,本次的Android开发课程设计收获很大,我不仅巩固了之前上课学到的知识,而且在开发过程中遇到问题解决问题,在这个过程中又学到了很多的新东西,可以说是受益匪浅。  

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3