android studio实现小吃商城,android课程设设计_android studio购物app-程序员宅基地

技术标签: java  android-studio  android  android studio  addroid开发  源码软件  intellij idea  

Android移动开发 课程设计

项目名称:小吃云商城(云小吃app)

源码文末获取

1.任务要求

1.1 设计任务

本门课程的目的是训练运用移动开发技术,独立设计和开发APP的能力。本课程设计在完成移动开发技术等基础课程之后,集中一周时间让学生选择特定设计方案与内容独立完成Android APP设计与编程工作,以巩固和提高相关语法和相关应用技术。

1.2 设计要求

设计简单的APP。APP中至少包括5个以上的Activity页面。要求有数据库连接,并进行简单的交互。至少包括以下控件和元素:文本框、按钮、下拉列表、单选按钮、复选按钮、文本、ListView或GridView等。

2.APP功能

该APP包含个10个Activity,每个Activity的功能(附运行图)及写Activity的操作说明。

2.1、登录页面

登录活动的运行结果如图2.1所示。在文本框里填写密码后,如果账号与数据库账号匹配,对应的密码与数据库密码相匹配,则进入主页面。否则,提示密码用户名或者密码错误。
![在这里插入图片描述](https://img-blog.csdnimg.cn/1d8bc16
cdcfa4ce080c3fc40281a9bf8.png)

2.2、注册页面

用户点击新用户按钮来到软件注册页面,用户输入自己的注册信息,
当输入的用户名小于4位数时 将弹出提示用户名必须大于4 请重新输入,如图2.2-1
当用户输入的手机号步符合手机号标准时将弹出提示请输入11位手机号,如图2.2-2
当输入的密码少于6位数时将弹出提示密码为6-12位。同时将密码归空,如图2.2-3
当选择性别后将弹出提示所选中的性别如 图2.2-4
选择城市的方式为下拉列表,选中即可见 如 图2.2-5、
当信息已在数据库中已经注册过提示用户已存在如 图2.2-6
后端程序将对比两次密码是否一致 一致则才能注册成功

在这里插入图片描述
在这里插入图片描述

当输入信息正确后点击注册按钮 ,后端代码将注册信息写入数据库user表储存。用来记录用户信息和登录,浏览,下单操作。注册成功后将弹出提示注册册成功同时直接跳到登录页面如 图2.2-7
在这里插入图片描述

2.3、密码修改页面

当用户忘记自己的登录密码可以点击忘记密码按钮前往密码修改页面进行密码修改操作2.3-1
如果输入的信息在数据库中,并且用户输入符合的信息修改 密码修改成功后将弹出提示 修改成功同时自动跳回到登录页面 如图 2.3-2
在这里插入图片描述
如果修改用户步存在 弹出提示 用户名手机不匹配修改失败如图 2.3-3
在输入修改信息的时候页需要验证两次密码 如果账号存在输入的密码确认正确 则才能注册成功,如果两次密码不一致,则弹出提示两次密码不一致 修改失败 如图 2.3 -4
在这里插入图片描述

2.4、app 欢迎界面

当我们打开app 并非直接进入app 首页 而是先来到app 的欢迎页面。
这时一个app 最基本要有的功能。App欢迎页面如图 2.4-1
在这里插入图片描述

2.5、app首页

App首页 有小吃搜索功能 有广告轮播图 有小吃推荐序列 首页如图 2.5-1
可以点击浏览商品 并将收藏小吃和将小吃加入购物车 浏览完可以返回到上一页如图 2.5-2
在这里插入图片描述

2.6、小吃点分类点菜页

点击点菜页之后可以来到 分类点菜页面。
页面给将小吃按照城市分类,将全国各地有名小吃, 以列表的形式分类展现在用户面前。用户可以随意点击自己喜爱的城市的小吃, 页可以点击小吃进行详情浏览, 或直接点击有加号并将其加入到购入车内方便统一下单 。小吃分类浏览页面如图 2.6-1、2.6-3

在这里插入图片描述

2.7、购物车页面及功能

在购物车系统页面如果监测到购物查没有小吃上坪则显示 显示空空页的下单提示页 如图2.7-1
将小吃商品添加到购物车后,在购物车系统页面监测到有小吃数据,可以通过点击小吃页面上的 加号 和减号 改变小吃下单数量 ,购物车后端程序将自动计算出购物车的商品小吃价格合计并显示在页面上。 2.7-2
在这里插入图片描述

2.8、删除购物车页面下

进入购物车页面可以看到自己添加的小吃数据,接下来可以删除购物车数据,点击右下角的删除按钮将弹出弹窗提示删除确认,点击确认删除后可以删除购物车数据,当数据删除成功后,系统将弹出提示已清空数据库。然后回到空购物车页面。如图 2.8-1删除购物车数据确认图示 、2.8-2 购物车删除完成提示返回空页面图示
在这里插入图片描述

2.9、购物车单下单付款页面

进入购物车页面可以清晰的看到已经添加到购物车的数据,后端将计算出所有商品的价格合计。当用户点击用户下单支付后会跳出支付确认页面。在支付确认页面 用户可以添加备注信息,选择支付方式进行支付,app 将提供多种支付方式供用户选择。当用户支付成功后,系统后端程序将下单数据逐条添加到数据库中,作为用户下单凭据,和数据的保存方便,后续查看, 修改,删除等操作。同时下单成功后下单完成的数据也将从购物车数据中清楚。页面将提示下单成功。并且回到未下单或者空购物车显示页面给。
支付确认图如图 2.9-1 支付成功后提示与跳转页面给图示如图 2.9-2
在这里插入图片描述

2.10、“我的”个人中心页面

个人中心页面。个人中心是一个app必须应该具备的页面。在我们的云小吃app来到个人中心页面可以看到自己的账号信息(用户名,和id,头像信息)。在我的页面有查看订单,查看待付款,查看待评价,查看退款、支付设置地址管理修改地址通用设置 、退出登录 等功能。“我的”页面如图 2.10-1
在“我的”页面,如果你是未登录状态。将不能看到自己的个人信息,页面账号信息处将提示为未登录。如果点击页面上的功能入口后,后端程序将先判断当前是否为账号登录状态,如果未登录状态,系统将提示 当前未登录 并且不能进入查看相关内容。因为点击功能模块是查看和操作与账号相关的内容,未登录状态系统找不到要执行用户的操作,就将提示“未登录”。如图2.10-2
如果用户已经登录后将查看到自己的信息内容。后端程序将登录信息持久化并返回islogin 当需要执行操作时会先判断当前是否为登录状态。在登录状态下用户点击头像是将弹出提示:“已登录”。并能点击相关功能入口,查看和操作相关数据内容。
登录状态如图 2.10-3 。登录后可以点击页面相关功能入口查看相关和操作相关内容,如图2.10-4点击我的订单页面。登录成功后点击退出登录将退回到未登录状态页面。
在这里插入图片描述
在这里插入图片描述

2.11、我的订单页面

我的订单页面是查看我们下单成功后的小吃页面。当用户点击“我的订单”后后端程序将根据当前登录用户的账号查询数据库中该用户的订单记录显示到订单页面上。顶订单页面可查看订单信息。搜索查找订单信息。可以对订单进行相关删除、退款等管理操作。在订单页面点击左上角返回按钮将返回到上一个页面。订单页面如图 2.11-1
在这里插入图片描述

2.12、地址管理页面

在“我的”页面点击地址管理将跳转到地址管理页面,后端程序根据当前用户名查询用户的地址信息并将用户的地址信息显示到地址管理页面。用户可以点击地址信息进行地址管理的修改和删除操作。在地址管理页面点击添加地址将进入地址添加页面。
地址管理页面如图:2.12-1,点击地址跳转删除确认如图 2.12-2.

在这里插入图片描述

2.13、添加地址页面

在地址管理页面点击添加地址进入地址增加页面。用户在地址添加页面输入地址信息后,点击添加按钮,后端程序将地址信息添加到数据库地址表(address)中存储,添加成功后页面将弹出提示“添加成功”并返回到查看页面。方便地址的管理。
添加地址页面如图 2.13-1,地址添加成功如图 2.13-2。

在这里插入图片描述

2.14、删除地址页面

在地址管理中点击相应的低画质 可以进入到删除地址界面。用户可以点击删除确认 删除自己不用的地址信息。后台将根据地址id 删除对应的数据库中的内容。
地址删除如图 2.14-1 删除后成功提示 如图 2.14-2.
在这里插入图片描述

3.数据库设计

Sqlite数据库名为OrderStore.db。共有3个表,表名分别为:user(用户数据表)、orders(订单数据面表)、address(地址数据表)。

3.1、user表

usert表记录用户注册信息,表结构如下表3.1所示。
在这里插入图片描述

3.2、orders表

orders表记录用户订单信息,表结构如图3.2-1
在这里插入图片描述

3.3、address表

address表记录用户地址信息。表结构如图3.3-1
在这里插入图片描述

4.特色创意

5.1、清晰的程序结构

在这里插入图片描述

5.2、轮播图

主要代码
乱播控件布局

<ViewFlipper
        android:id="@+id/flipper"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:outAnimation="@anim/left_in"
        android:inAnimation="@anim/right_out"
        tools:ignore="MissingConstraints">
    <ImageView
            android:id="@+id/imageView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#ffffff"
            android:src="@drawable/lunbotu3" />

    <ImageView
            android:id="@+id/imageView2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#ffffff"
            android:src="@mipmap/orderguanggao" />
    <ImageView
            android:id="@+id/imageView3"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#ffffff"
            android:src="@drawable/sack" />
    <ImageView
            android:id="@+id/imageView4"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#ffffff"
            android:src="@drawable/lunbotu2" />
</ViewFlipper>

Java中的主要代码

ViewFlipper flipper;
flipper = findViewById(R.id.flipper);
flipper.startFlipping();

资源文件
设置轮播效果进出方向及时间

left_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
            android:duration="1000"
            android:fromXDelta="100%p"
            android:toXDelta="0" />

</set>
right_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
            android:duration="1000"
            android:fromXDelta="0"
            android:toXDelta="-100%p"/>

</set>

5.3、ui设计

在这里插入图片描述

5.4、登录持久化

主要代码

* 登录状态
 */
private static boolean isLogin;

public static MyApplication getInstance() {
    
    return appContext;
}

public static List<Snack> getCartSnacks() {
    
    return cartSnacks;
}

public static User getUser() {
    
    return user;
}

public static void setUser(User user) {
    
    MyApplication.user = user;
}

/**
 * 是否登录
 *
 * @return <tt>true</tt>: 已经登录, <tt>false</tt>: 未登录
 */
public static boolean isLogin() {
    
    return isLogin;
}

public static void isLogin(boolean isLogin) {
    
    MyApplication.isLogin = isLogin;
}


// 登录运行 
private void checkLogin() {
    
    // 检查持久化的数据
    if (UserDao.isLogin()) {
    
        // 已登录
        MyApplication.isLogin(true);
        MyApplication.setUser(UserDao.getUser());
    } else {
    
        // 未登录
        MyApplication.isLogin(false);
        MyApplication.setUser(null);
    }
}

5.5、清晰的层次图如图 5.5-1

									图5.6-1、层次图

在这里插入图片描述

5.6、数据库ER图如图5.7-1

图5.6-1数据库ER图 图5.6-1数据库ER图

5.程序代码

代码太长 我已打包到云端

下载源码

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hjjshua/article/details/125227768

智能推荐

python3 os.system 异步执行_Python执行系统命令的方法 os.system(),os.popen(),commands-程序员宅基地

文章浏览阅读3.8k次。最近在做那个测试框架的时候发现 Python 的另一个获得系统执行命令的返回值和输出的类。1.最开始的时候用 Python 学会了 os.system() 。这个方法是拥塞的。os.system('ping www.baidu.com')2.通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出。这个方法是后台执行,不影响后续脚本运行..._os.system异步执行

CM+CDH安装搭建全过程(总结版)_cloudera manager server gc cpu usage is at 10% or -程序员宅基地

文章浏览阅读2.9k次。目录第一次搭建CM、CDH第二次搭建CM、CDH搭建环境:搭建过程:报错过程:总结复盘:第三次搭建CM、CDH搭建环境:搭建过程:报错过程:总结复盘:第四次搭建CM、CDH搭建环境:搭建过程:报错过程:总结复盘:第一次搭建CM、CD..._cloudera manager server gc cpu usage is at 10% or more of total process time

内核开发调试printk_printk 头文件-程序员宅基地

文章浏览阅读706次。进行内核开发调试在进行驱动开发的过程中往往要打印一些信息来查看是否正确类似于printf,以下将介绍在内核开发常用的调试方法。.(第一次写文章,内容可能不咋样勿喷呀)内容一、printk介绍二、如何查看并修改消息级别在应用程序采用printf打印调试、内核驱动采用printk打印调试。printk函数打印数据到console缓冲区,打印的格式方类似printf。printk函数说明头文件:<linux/kernel.h>int printk(KERN_XXX const_printk 头文件

Kafka原理、部署与实践——深入理解Kafka的工作原理和使用场景,全面介绍Kafka在实际生产环境中的部署_kafka如何负载使用一台对外的机器-程序员宅基地

文章浏览阅读2.5k次。随着互联网的发展,网站的流量呈爆炸性增长,传统的基于关系型数据库的数据处理无法快速响应。而NoSQL技术如HBase、MongoDB等被广泛应用于分布式数据存储与处理,却没有提供像关系型数据库一样的ACID特性、JOIN操作及完整性约束。因此,很多公司或组织开始转向Apache Spark、Flink、Beam等新一代大数据处理框架来处理海量数据。然而,由于新一代大数据处理框架依赖于HDFS等文件系统,导致集群规模扩容困难、成本高昂。另一方面,云计算平台的出现让用户可以快速部署、扩展大数据处理集群。_kafka如何负载使用一台对外的机器

麒麟KYLINOS桌面操作系统2303上安装tigervnc_麒麟系统电脑安装vncserver-程序员宅基地

文章浏览阅读1.4k次。hello,大家好啊,今天给大家带来在麒麟桌面操作系统2303上安装tigervnc的文章,本篇文章给大家讲述如何安装并且远程连接使用,后面会给大家更新如何将tigervnc做成桌面图标点击即可开启及关闭,欢迎大家浏览分享转发。_麒麟系统电脑安装vncserver

EPS方圆预发机说明书-程序员宅基地

文章浏览阅读324次。预发机说明书_eps方圆预发机说明书

随便推点

第九十四篇 Spark+HDFS centos7环境搭建_spark写入hdfs需要用户名密码吗-程序员宅基地

文章浏览阅读2.6k次。一、安装包下载:Spark 官网下载: https://spark.apache.org/downloads.htmlHadoop 官网下载: https://hadoop.apache.org/releases.html目前使用Spark 版本为: spark-2.4.3 Hadoop版本为: hadoop-2.10.1二、配置自登陆检测是否可以自登陆,不需要密码则配置正常:ssh localhost在搭建Hadoop环境时,出现localhost.localdomain: Permis_spark写入hdfs需要用户名密码吗

Node.js_node可以使用什么命令 ,它会自动找到该文件下的start指令,执行入口文件。-程序员宅基地

文章浏览阅读280次。nodejs。_node可以使用什么命令 ,它会自动找到该文件下的start指令,执行入口文件。

linux图片相似度检测软件下载,移动端图像相似度算法选型-程序员宅基地

文章浏览阅读293次。概述电商场景中,卖家为获取流量,常常出现重复铺货现象,当用户发布上传图像或视频时,在客户端进行图像特征提取和指纹生成,再将其上传至云端指纹库对比后,找出相似图片,杜绝重复铺货造成的计算及存储资源浪费。该方法基于图像相似度计算,可广泛应用于安全、版权保护、电商等领域。摘要端上的图像相似度计算与传统图像相似度计算相比,对计算复杂度及检索效率有更高的要求。本文通过设计实验,对比三类图像相似度计算方法:感..._linux 图片相似度对比

java isprime函数_判断质数(isPrime)的方法——Java代码实现-程序员宅基地

文章浏览阅读3.8k次。判断质数(isPrime)的方法——Java代码实现/** 质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数* 100以内质数表2 3 5 7 11 13 17 19 23 29 31 37 41 43 4753 59 61 67 71 73 79 83 89 97质数具有许多独特的性质:(1)质数p的约数只有两个:1和p。(2)初等数学基本定理:..._java isprime

2.小白学uvm验证 - uvm_objection 和 uvm_component_uvm_object accessor 参数的意义-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏41次。1. uvm_objection 和 uvm_component 基础  uvm_objection 和 uvm_component 是 uvm 中两大基础类,刚开始学习的时候,对两个东西认识不深,以为它们俩差不多,谁知道它两是一个是“爷爷”,一个是孙子的关系,两者贯穿整个 uvm 验证方法学。至于为什么要划分 uvm_object 和 uvm_component 呢,是因为前任在验证的过程中发..._uvm_object accessor 参数的意义

Url 访问大小写敏感问题解决-程序员宅基地

文章浏览阅读2.7k次。2019独角兽企业重金招聘Python工程师标准>>> ..._yii2 url 大小写

推荐文章

热门文章

相关标签