我的安卓大作业

gitee地址

https://gitee.com/zjp666777/android-big-homework.git

一、业务需求分析

(1)、登录注册功能,注册输入账号与密码以及二次确认密码,可以通过查询数据库判断是否已经有输入的账户名,并且在数据库创建时用unique关键字设置了账户的唯一性,登录时根据数据库账号密码进行匹配,如符合则登录成功,否则给出相应提示。登录成功后保存登录用户的id传到其他页面进行其他发表以及查询对应发表的动态的功能。

(2)、app首页是每一个用户发表的来自他们自己记录的梦日记,用列表的方式进行显示。

(3)、发表界面,点击发表按钮时首先判断是否在登录状态,如在登录状态则可以进行发表,否则弹出未登录,需先登录。

(4)、消息页面,显示用户信息,点击此界面的个人信息将会判断是否在登录状态,如在登录则进入修改信息页面。点击我发布的动态之后会跳转到显示个人发布过的信息的页面。

我的安卓大作业_第1张图片

二、数据库设计分析

数据库名称:drem.db

两张表:user表和dremcontentinfo表

user表记录用户账号密码,包括用户id(u_id)、账号(account)、密码(password).

dremcontentinfo表记录用户对应的发表的梦日记内容,包括日记id(id)、对应用户id(u_id)、日记内容(dremcontent)。

三、开发工具和环境

开发工具为android studio 4.0.1gradle6.1.1版本

四 、项目目标描述

  1)、根据数据库账户密码进行登录、注册。

2)、首页用列表展示出所有用户发表的梦日记内容,

3)、发表内容也根据登录时保存的登录id,发表到指定id用户的日记内容,

4)、信息页面展示跳转到查看所登录id发表过的内容的页面以及个人信息的更改。

我的安卓大作业_第2张图片

Java文件:

adapte包里为适配器:dongtaiBaseAdapter.java是渲染个人发布列表用的,myBaseAdapter.java是渲染全部梦日记列表用的。

bean包为实体:HomeDataBean.java里设置了变量数组HomeContentText
HomeContentImage 并用一键生成了getset方法用于获取与设置数据。
 
  
fragment包存放fragment文件:首页HomeFragment.java、发表页AddFragment.java、消息页:MessageFragment.java
 
  
SQLiteHelper包存放了数据库相关的MyHelper.java文件:此文件初始化数据库,创建数据库表、和一些数据库查询添加操作。
 
  
utils包存放SaveChangePersonInfo.java:用于修改个人信息页面的数据存储与获取。保存数据到到xml文件。
ChangePersonInfoActivity.java文件:修改个人信息所对应的activity文件,里面做一些跳转事件,和数据调用数据存储方法。
 
  
DongtaiActivity.java文件:MainActivity.java文件中获取到登录之后的用户id,以此来渲染出所对应的梦日记列表。
 
  
LoginActivity.java文件:登录页面所对应的activity,写了find方法根据账户查找信息,如果存在并且符合的话,返回对应id,进行跳转到首页,并且发送返回的idMainActivity.java。点击注册跳转到注册页面。
 
  
MainActivity.java文件:初次创建项目时自带的activity文件,此文件里面完成了首页、发表页、信息页三个fragment的隐藏与显示,主要运用FragmentTransaction transaction=fragmentManager.beginTransaction()transaction.add()transaction.showtransaction.hide()进行fragment实例化、显示与隐藏。
并且这个文件接收登录页面传过来的用户id,并为其他页面提供这个id
 
  
PersonInfoActivity.java文件:个人信息页面对应的activity,调用ChangePersonInfoActivity.java文件里的getPersonInfo方法调取xml文件里的数据,这里只是为了使用这个知识点,其实应该配合数据库来实现数据的展示的。返回按钮的点击事件跳转页面。
 
  
RegisterActivity.java文件:注册页面对应的activity文件,xml布局文件里的输入框内容的获取并且监听注册与跳转登录按钮的监听。并且通过本文件里的find方法查询是否已经存在输入的账号,进行业务逻辑处理。
 
  
YindaoActivity.java文件:引导页面对应的activity文件,这个是后来添加的页面

handler.postDelayed()方法,与线程,功能为3秒后跳转到首页,并且设置了AndroidManifest.xml文件里的内容,让app进入时从此java文件对应的页面进入。

 
  

Layout包里的xml布局文件:

activity _add_fragment.xml:发表页fragment

activity _bottom_menu.xml:底部菜单

activity _change_person_info.xml:修改个人信息页

activity _dongtai.xml:对应用户发表的动态列表页

activity _home_fragment.xml:首页fragment,

activity _login.xml:登录页

activity _main.xml:展示首页、发表页、消息页三个fragment的页面。引用底部按钮组件。

activity _message_fragment.xml:消息页fragment。

activity _person_info.xml:个人信息展示页。

activity _register.xml:注册页面。

activity_yindao.xml:引导页。

list_dongtai_item: activity _dongtai.xml文件里列表所用到元素项。

list_home_item_layout.xml: activity _home_fragment.xml首页里用到的列表项元素。

values包里样式xml文件:

colors.xml:系统自带四个颜色。

string.xml:此文件里有此app页面标题的文字内容为(AndroidBigHomework)
    
styles.xml:此文件定义了一个全局的按钮的样式,文字颜色为白色(#FFFFFF)与背景(@drawable/btn_style),背景是drawable包里的btn_style.xml文件定义的样式。

五 .功能描述

(1)、app运行之后在初始化时期,创建完两张表之后,插入id为1账号为admin密码为123的账户,并且预添加两条用这个用户id的相关的梦日记内容。

(2)、app运行后首先进入引导页,引导页为一个图片页,通过java代码线程相关,实现3秒后进入到首页。

(3)、进入到首页之后就会显示出由初始数据库时创建的两条梦日记内容,由listView加适配器展示生成,这里只是动态展示了发表内容,并没有设置其他发表时间或者用户昵称相关的数据,只是用静态数据展示生成。

(4)、此时进入到首页之后,因为我们事先已经创建了一个用户信息,但是并没有登录,通过判断是否已经登录,来动态显示首页的登录按钮还是退出登录按钮(按钮的是否可见java代码操作setVisibility()属性),
(5)、通过

final Integer accountid= ((MainActivity)getActivity()).getAccountId();

来获取全局的账户id是否为null,如果为null则是为登陆状态,如果有值则是在登录状态。

  6)、从首页进入之后就可以通过底部菜单栏跳转到发表fragment、消息fragment,和登录注册页,同时跳转的时候在对应页面都会获取到MainActivityaccountid是否有值,如果有值才可以发表,并且进行页面的跳转,否则会弹出提示尚未登录,请先登录。

  7)、点击发表页跳转之后,进入到该页面,页面就显示出输入框,和发表按钮,这样显然是危险的,所以在java代码里设置了判断验证,接受从MainActivity传入的账号id,如果为空则提示尚未登录请先登录,如果有值则可以进行发表,发表时会带上对应登录的id,让梦日记内容对应到所登录用户上。

   8)、消息页里点击个人信息会跳转到个人信息页面,这里会展示出三个信息、这里的数据刚开始展示的时候是静态数据,可以通过点击修改信息按钮进入到修改页面,然后在输入框输入对应内容之后进行数据存储,存储为xml文件,并且返回到个人信息页面之后,有三个信息随之被更改为输入的信息。这里为了使用到这个存储数据的知识点,实际应该调用对应的用户的数据库信息。

   9)、点击消息页里的我发表过的动态会同样先验证是否在登录状态,如已登录则跳转到相应页面。这个页面显示的是所登录用户本人发表过的梦日记内容,通过MainActivity传来的用户id进行数据库的查询。

  

 
  

六、心得体会

本次安卓大作业的收获是巩固上课所学知识,例如数据存储、数据传值、数据库操作、布局的制作,列表、适配器、fragment的再次学习,以及方法的封装,实体类放到bean包中

,适配器类放到adapter包中,数据存取等工具方法放到utils包中,数据库相关放到SQLiteHelper包中。

遇到问题之后首先会通过网上搜索,通过调试程序解决报错问题,再者再去问同学进行查看。

你可能感兴趣的:(安卓,android,git)