项目概述
随着科学技术的不断提高和社会经济的不断发展,一些农产品的销售逐渐的落后于社会信息化的潮流之中,尤其是一些年龄较大的中老年人来说是极为不便的,国家大力倡导并十分重视三农问题,倡导推动农村农业的发展,为农民增收,带动农民收入的提高;顺应互联网的潮流,大量的应用软件,出现在了我们的面前,对于智能手机上的应用软件提出了更高的要求,一个基于安卓技术的商城购物系统能够为用户提供一个方便日常操作的便捷在线销售购买一体化的购物功能,他能够满足广大的农民售卖农产品的需求,也为城市居民提供了绿色健康的有机农产品,为供需双方提供了一个共赢的平台。
2.项目需求分析
本软件正是为了实现手机线上农产品销售购买一体化而设计开发的,其中所包含的相关技术主要有:Android平台,sqllite数据库,Java语言等技术,能够实现订餐,购物车,视频播放控制,农产品商品信息浏览,登录,注册以及重置密码等功能。用户在前台进行注册之后,登录客户端即可完成视频播放,浏览农产品,添加购物车等功能;运行测试表明:该系统功能完善、运行顺畅稳定,具有一定的商业实用价值。
3.开发环境
Android Studio
变量名:Path,
变量值:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
JDK安装目录D:\mysql\Java\jdk1.8.0_202
4.界面设计
4.1重置密码功能设计
用户进入到忘记密码的界面之后,进行相关的信息的填写,若填写的信息正确且存在,则更新密码信息;忘记/修改功能:用户在忘记密码或者密码存在泄露的情况下,需要进行密码的修改 以保证自己的业务可以进行办理操作;忘记/修改功能的主要顺序是:
- 用户输入手机号;
- 两次输入密码(注:两次密码正确);
- 若信息正确利用数据库语句更新语句进行数据库信息的更新;
利用线性布局的有关组合留出空白,将页面布置程如图的情况,在线性布局中放置button按钮组件,TextView组件,以及edittext组件构成相关的布局页面,为用户的相关操作提供便利;使软件可以获取组件中的相关信息,进行activity的页面跳转。
4.2登陆注册界面的实现
Button,TextView,TextEdit,ImageView,RatioButton,scrollview等基本控件的使用;多个Activities之间的切换;使用Android本地数据库来管理用户信息。
设置整个RelativeLayout的内边距为20dp,给界面留白。让编辑框的左边对齐到父控件的左边,右边对齐到父控件的右边,将passwordView放到usernameView的下面,以保证二者的相对位置不变。
主布局为垂直布局,第一个TextView控件布置,显示“用户注册”字样,第一个LinearLayout控件,包含一个TextView控件和EditView控件,用于提醒用户输入和获取账号信息
//注册
//实例化DBHelper,调用内部的方法,传入其中的参数,进行数据库的查询操作;
DatebaseHelper2 datebaseHelper2=newDatebaseHelper2(getApplicationContext());
Cursor c=datebaseHelper2.loginquery(acc);
//找控件
4.3系统首页界面
home.xml布局文件添加控件ImageView,EditText,match parent,放置videoview获取网络视频,进行视频播放,利用三个button进行绑定操作,实现对于视频播放、暂停、停止的控制;父布局来决定当前控件的大小 wrap parent控件内容决定当前控件的大小android:background修改背景图片,界面美观整洁
4.4农产品商城界面
shopping.xml中LinearLayout线性布局,添加控件ImageView,TextView,Button,listview,插入图片,添加文字,按钮的组件互通
添加会给出对话框的提示:
AlertDialog.Builder builder=new AlertDialog.Builder(nongchanpinlist.this);
builder.setTitle("批量添加确认");//为对话框设置标题
builder.setIcon(R.drawable.ic_launcher_background);//为对话框设置图标
builder.setMessage("您确定要将所选产品加入购物车中吗");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(nongchanpinlist.this, "添加成功", Toast.LENGTH_SHORT).show();
Intent intent =new Intent();
intent.setClass(nongchanpinlist.this,home.class);
startActivity(intent);
}
});
builder.setNegativeButton("取消",null);
builder.create().show();
4.5购物车界面
点击下单按钮事件触发器,显示下单备注提示框@OnClick(R.id.placeBuyBtn)
final ContentValues values=new ContentValues();
values.put("name",String.valueOf(image.get(position1).get("title")));
values.put("neirong", String.valueOf(image.get(position1).get("content")));
values.put("price", "$10.00");
final DatebaseHelper2 dbHelper1=new DatebaseHelper2(getApplicationContext());
String g=Integer.toString(dbHelper1.insertshoping(values));
将相关的商品信息调用数据库语句中的方法,将信息写入到数据库中,完成购物车购物信息的添加,更新和浏览。
4.6商品详情界面
为button按钮设置监听,用户对于信息进行一个监测,当用户点击listview的对应位置,利用intent进行页面的跳转,展示对应商品详情页面。
4.7 点击事件功能跳转
<Button//按钮添加
android:text="设置"//文本名称
android:id="@+id/my_btn6"//id为btn的控件索引
创建一个我的myFragement的classl类的java文件extends Fragment子类继承父类.
onCreateView()fragment创建frag对应视图
Inflate加载layout布局文件fragment_my
findViewById (R.id.my_btn6); 引用.R文件里的引用名
setOnClickListener添加一个点击事件监听器
onClick{intent组件互通跳转activity .java界面
startActivity(intent);启动
5.数据存储
5.1构建数据库,建成数据库表格
private static final String DB_NAME="bankapp";
private static final String TABLE_NAME1 = "userTable";
private static final String TABLE_NAME4= "shopping";
private static final String CREATE_TABLE1 = "create table if not exists userTable(_id integer primary key autoincrement,account text,passwd text,phone text)";
private static final String CREATE_TABLE4 = "create table if not exists shopping(_id integer primary key autoincrement,name text,neirong text,price text)";
private SQLiteDatabase db;
private Object userTable;
public DatebaseHelper2(@Nullable Context context) {
super(context, DB_NAME, null, 1);}
public DatebaseHelper2(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);}
@Override
//创建数据库含有表TABLE_NAME1
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE1);
db.execSQL(CREATE_TABLE4);}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists " + TABLE_NAME1);
db.execSQL("drop table if exists " + TABLE_NAME4);
onCreate(db);
5.2数据库操作语句调用方法
public int insertshoping(ContentValues values){
SQLiteDatabase db=getWritableDatabase();
long count= db.insert(TABLE_NAME4, null, values);
return (int)count;
}
public int insertuser(ContentValues values){
SQLiteDatabase db=getWritableDatabase();
long count= db.insert(TABLE_NAME1, null, values);
return (int)count;
}
//查询
public Cursor query(String tablename) {
//数据库的查询操作,返回Cursor对象
SQLiteDatabase db = getWritableDatabase();
Cursor c = db.query(tablename, null, null, null, null, null, null);
return c;
}
6.项目开发与实现
登陆注册忘记密码,首页农产品商城浏览,商品详情,添加购物车,查看我的购物车,下单的实现
7.开发总结
基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如:要的布局(或者控件),在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的跳转Intent管理,通过Bundle对数据在界面之间进行传输。
(各种功能的实现就是增删改查功能的组合)在此次的实验过程中,我对于功能的实现有了更为深刻的认识,之前思考问题的时候,总是在想功能如何实现,感觉很难,在此次的实验过程中,自完全是自己实现了存款和取款的操作,在这个过程中,自己对于功能的实现,有了更为深刻的认识,功能的实现就是对于数据库的增删改查功能的组合,在思考和实现各种功能的时候,要从增删改查入手,这样就能较好的实现各种功能;不过在慢慢的学习过程中理解,在编程过程中会更加深刻。在学习新语言的收获之外,在编程过程中对于功能的实现、一些异常的处理还有界面的设计也有很深的感触。要做好系统,要考虑到需求。对于数据库操作来说,是要向数据库中插入数据还是更新数据。而且要考虑到各个方面异常的处理。比如用户名、密码错误怎么办,输入信息错误怎么处理,更新数据库要转入那个页面等问题。让我们了解了目前流行的安卓项目的构成和运作原理。有当我们真正地将知识运用于实践时,才会发觉学习的各种好处,还会教会我们一些书本中没有的知识.“增删改查”yyds!!
Android是一种很错的手机系统,使用起来简单,而且可以根据自己的需求选择适合自己的版本,非常的方便。我要多多学习关于android的知识,在未来,将android系统研发的更加人性化,使用起来更加的舒适。