农产品商城简单demo-Android

news2024/11/16 14:07:11

项目概述

随着科学技术的不断提高和社会经济的不断发展,一些农产品的销售逐渐的落后于社会信息化的潮流之中,尤其是一些年龄较大的中老年人来说是极为不便的,国家大力倡导并十分重视三农问题,倡导推动农村农业的发展,为农民增收,带动农民收入的提高;顺应互联网的潮流,大量的应用软件,出现在了我们的面前,对于智能手机上的应用软件提出了更高的要求,一个基于安卓技术的商城购物系统能够为用户提供一个方便日常操作的便捷在线销售购买一体化的购物功能,他能够满足广大的农民售卖农产品的需求,也为城市居民提供了绿色健康的有机农产品,为供需双方提供了一个共赢的平台。

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重置密码功能设计

用户进入到忘记密码的界面之后,进行相关的信息的填写,若填写的信息正确且存在,则更新密码信息;忘记/修改功能:用户在忘记密码或者密码存在泄露的情况下,需要进行密码的修改 以保证自己的业务可以进行办理操作;忘记/修改功能的主要顺序是:

  1. 用户输入手机号;
  2. 两次输入密码(注:两次密码正确);
  3. 若信息正确利用数据库语句更新语句进行数据库信息的更新;

利用线性布局的有关组合留出空白,将页面布置程如图的情况,在线性布局中放置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系统研发的更加人性化,使用起来更加的舒适。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/164545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二章 搜索求解

人工智能中的搜索&#xff1a; 搜索算法的形式化描述&#xff1a;<状态、动作、状态转移、路径、测试目标> 状态&#xff1a;从原问题转化出的问题描述。 动作&#xff1a;从当前时刻所处状态转移到下一时刻所处状态。 状态转移&#xff1a;对某一时刻对应状态进行某一…

泛型的学习

这里写目录标题一、泛型的使用自定义泛型类泛型方法说明泛型在继承方面的体现通配符的使用有限制条件的通配符的的使用每日一考一、泛型的使用 1、jdk5.0新增特性 2、在集合中使用泛型 ①集合接口或集合类在jdk5.0时都修改为带泛型的结构 ②实例化集合时&#xff0c;可以指明具…

是Spring啊!

一.概念spring概念一个包含了众多工具方法的 IoC 容器okk~~分析一下这句话意思,众多方法,IoC 是形容词,容器是名词 -> 众多方法:比如一个类里有许多方法, 容器:存储的东西 重点就是IoC是什么?Ioc2.1解释IoC -> Inversion of Control 控制反转 -> 对象的生命周期 ->…

Git版本控制工具详解

1、版本控制 1.1、认识版本控制&#xff08;版本控制&#xff09; 什么是版本控制&#xff1f; 版本控制的英文是Version control&#xff1b;是维护工程蓝图的标准作法&#xff0c;能追踪工程蓝图从诞生一直到定案的过程&#xff1b;版本控制也是一种软件工程技巧&#xff…

红米 12C earth 秒解锁 跳过168小时 红米note12 note12pro note12pro+系列机型解锁bl root教程步骤Fastboot

最近上手体验了Redmi 12C/红米12C&#xff0c;这是红米新推出的百元机&#xff0c;起售价699元&#xff0c;464G版本&#xff0c;具有不错的性能&#xff0c;具有5000mAh大电池&#xff0c;具有双频wifi&#xff0c;支持双卡双待&#xff0c;支持SD卡扩展等。 如果你近期想要给…

UTF-8和Unicode

文章目录Unicode与网络传输Unicode网络传输UTF&#xff1a;Unicode Transformation Format UTF-8是在网络上传输Unicode的一个转换标准&#xff0c;发送时将字符串Unicode转为UTF-8&#xff0c;接收时将字节转为Unicode&#xff0c;就完成来字符串的传输 Unicode与网络传输 U…

移动端 - 搜索组件(search-list篇)

移动端 - 搜索组件(search-input篇) 移动端 - 搜索组件(suggest篇) 这里我们需要去封装搜索历史组件 这一个组件还是很简单的, 但是逻辑部分需要根据实际的需求来进行书写; 所以这里我不太好去写实际的代码, 不过可以提供我的思路(主要的就是去实现增, 删, 改, 查) 第一步: 首…

【STL】string的常见接口使用

目录 1、string类的基础概念 2、string类的常见接口说明及应用 2.1、string类的成员函数 constructor&#xff08;构造函数&#xff09; destructor&#xff08;析构函数&#xff09; operator&#xff08;赋值&#xff09; string类对象的容量操作 迭代器 string类…

【vue2】组件基础与组件传值(父子组件传值)

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;组件基础概念与全局|局部组件的写法、组件之间传值&#xff08;父传子、子传父&#xff…

rcfile和orcfile

一、数据存储要考虑哪些方面 数据加载时间 Facebook数仓每天存储的数据量超过20TB&#xff0c;数据加载既有磁盘I/O又有网络传输&#xff0c;时间占用大 快速的数据查询 低的空间占用 数据压缩/数据编码 适合多种查询模式 如果所有人都查相同的字段&#xff0c;那么就可以针…

QT添加使用图片与UI资源

QT添加使用图片与UI资源1 QT添加使用图片资源1.1 添加新文件1.2 添加QT - QT Resources File 【UI资源文件】1.3 命名资源包名称 并 添加到项目文件1.4 .pro 文件发生变化 art.qrc1.5 点击qrc文件&#xff0c;添加现有文件 - 添加进去的图片文件可以进行正常引用。1.6 修改样式…

分布式任务处理xxljob

7.1 分布式任务处理 7.1.1 什么是分布式任务调度 视频上传成功需要对视频的格式进行处理&#xff0c;如何用Java程序对视频进行处理呢&#xff1f;这里有一个关键的需求就是当视频比较多的时候我们如何可以高效处理。 如何去高效处理一批任务呢&#xff1f; 1、多线程 多线…

通过Docker启动DB2,并在Spring Boot整合DB2

1 简介 DB2是IBM的一款优秀的关系型数据库&#xff0c;简单学习一下。 2 Docker安装DB2 为了快速启动&#xff0c;直接使用Docker来安装DB2。先下载镜像如下&#xff1a; docker pull ibmcom/db2:11.5.0.0 启动数据库如下&#xff1a; docker run -itd \--name mydb2 \--…

Allegro如何导入和导出Pin Delay操作指导

Allegro如何导入和导出Pin Delay操作指导 在做PCB设计等长设计的时候,Pin Delay是个非常重要的数据,关系到信号的长度,Allegro支持把Pin Delay数据导入到PCB中,并且还支持导出,如下图 具体操作如下 导入Pin Delay,选择File选择Import

图论基础: 邻接矩阵与邻接表(c++实现)

文章目录邻接矩阵邻接表邻接矩阵 邻接矩阵&#xff08;Adjacency Matrix&#xff09;是表示顶点之间相邻关系的矩阵。 设G(顶点&#xff0c;边)&#xff1a;G(V,E)是一个图。其中V{v1,v2,…,vn} [1] 。G的邻接矩阵是一个具有下列性质的n阶方阵&#xff1a; 无向图的邻接矩阵…

手眼标定,9点标定过程及其运算

在工业领域常常会遇到将相机安装在机器手中&#xff0c;由相机快速引导机器手进行工作的方式。其中9点标定的作用是将图像的坐标转化为机器手的坐标。 9点标定的作用意义&#xff1a; 1.计算像素当量&#xff0c;通过9点标定后的计算&#xff0c;可以得出一个由像素值转化为机器…

水平分表、分库和垂直分表、分库和公共表的代码实现和讲解

文章目录一、环境准备二、水平分表1.概念2.代码三、水平分库1.概念2.代码四、垂直分表1.概念2.代码五、垂直分库1.概念2.代码六、公共表1.概念2.代码一、环境准备 操作系统&#xff1a;Win10数据库&#xff1a;MySQL5.7JDK&#xff1a;64位 jdk1.8.0_202应用框架&#xff1a;s…

DOS和DDOS攻击和防御(ATTACK)

目录 一、DOS攻击和DDOS攻击的区别 第一、我们可以从他们两个的英文全称上来看初步的区别 第二、攻击方法不同 二、DOS和DDOS攻击的实现方式 1.DOS攻击 1、SYN Flood(是DOS和DDOS攻击方式之一) 2、UDP洪水攻击 3、Ping洪流攻击 4、teardrop攻击 5、Land攻击 6、Smurf攻击 7、Fr…

【 uniapp - 黑马优购 | 登录与支付 1】登录组件布局实现、用户信息布局与渲染

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大二在校生&#xff0c;讨厌编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;小新爱学习. &#x1f43c;个人WeChat&#xff1a;见文末 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;…

设计模式-原型模式

设计模式-原型模式一 官方定义二 案例演示解决方案一 - 一般实现方式实现过程案例分析解决方案二使用场景实现过程一实现过程 二案例分析三 浅拷贝和深拷贝浅拷贝问题演示实现过程案例分析解决方案-----深拷贝实现方式一&#xff1a;重写clone()方法扩展思考一 官方定义 原型模…