# SuSheTong
**Repository Path**: popupspace/su-she-tong
## Basic Information
- **Project Name**: SuSheTong
- **Description**: 宿舍通安卓商城项目-专科毕业设计
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 0
- **Created**: 2022-09-26
- **Last Updated**: 2025-06-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 基于安卓的购物软件的设计与开发
## 第一章 绪论
### 1.1 背景
随着科学技术的进步,加之交通运输的发展。网购已然成为当今社会购物的一种新趋势,在此之中,线上购物平台通常扮演着不可或缺的角色。而安卓平台凭借着稳定的性能和更易扩展的特性,成为各购物网站的不可过缺的购物平台。
### 1.2 购物软件的发展现状
淘宝、京东等购物软件作为当今购物软件中的巨头。以淘宝天猫为例,每年双十一,天猫都会放出很大优惠吸引用户购物,以下是淘宝天猫历年双十一的成交份额。
| 时间 | 交易额 |
| ------ | ------------------------------ |
| 2020年 | 4982亿元 |
| 2019年 | 2684亿元 |
| 2018年 | 2135亿元,首次突破2000亿大关。 |
| 2017年 | 1682亿元 |
| 2016年 | 1207亿元 |
| 2015年 | 912.17亿元 |
| 2014年 | 571亿元 |
| 2013年 | 362亿元 |
由此,我们不难发现,购物平台的交易额在逐年提高,相应着,每个人对于购物软件的使用频率也在变多,所以购物软件的发展情况还是很好的。
### 1.3 论文主要任务
本论文的主要任务是帮助读者了解项目相关的技术,以及明白本项目的设计模式,让读者对安卓购物网站有新的认识。
### 1.4 论文的结构
本论文通过对项目由浅入深的介绍,让读者从项目设计到项目实现以及后期项目测试等环节有新的认识。
## 第二章 技术分析
### 2.1 Android系统
安卓是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。Android官方推荐使用Kotlin语言作为开发语言。但本项目主要采用Java语言开发,并且采用Google官方SDK库作为开发库。
### 2.2 开发平台
本项目采用AndroidStudio软件开发,并且采用Huawei Nova4(Android版本:10,Emui版本:10.0.0)作为演示样机开发。
### 2.3 Java语言
在Android中Java语言作为一种开发语言,可以实现软件的动态功能。
### 2.4 MariaDB数据库
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。因为Mysql被Oracle公司收购,在之后可能会收费,为减少后期维护难度,本项目实用MariaDB数据库。
### 2.5 Xml技术
Android系统采用xml文件作为界面文档和矢量图文档等,所以xml当之无愧成为本项目中的一个重要技术。
### 2.6 Json技术
相较于实用xml来进行服务器与软件交互,Json更加简洁高效,所以本项目采用Json作为服务器与软件的交互语言。
### 本章小结
本项目采用以上平台和技术结合开发。当然以上平台和技术不一定是开发此项目的最佳配合,但我认为次啊用以上技术可以降低此项目的开发难度和开发周期。
## 第三章 项目设计
### 3.1 商品陈列
本项目采用仿照淘宝的购物界面。下图是本项目的原始设计图 。
### 3.2 购物车与付款
本项目采用用户本地储存加上数据库云端储存用户购物车,具体形式为,当用户在本地浏览并且添加购物车时候,此时,在本地对此数据进行储存。当检测到用户退出软件,或者软件后台非正常死亡前进行最后云端备份,当检测到用户的购物车有新改变时,将率先使用本地备份,因为购物软件的同时使用量通常比比较大,当每个用户修改购物车时,就直接云端备份,会对服务器造成很大压力,所以本项目采用优先本地储存的模式。
用户付款操作采用微信和支付宝的支付接口,当用户支付成功后,将产生一个交易单号,可以根据此交易单号查询付款状态。
### 3.3 数据库设计
本项目数据库设计如下
#### 3.3.1 用户表
| 列名 | 数据类型 | 说明 |
| -------- | ------------------------------ | ------------ |
| userid | Int primary key auto_increment | 用户ID |
| username | varchar | 用户昵称 |
| pwd | varchar | 密码 |
| phone | varchar | 用户手机号码 |
| email | varchar | 电子邮箱 |
| Power1 | varchar | 等级 |
| sex | varchar | 性别 |
| Yu_e | Int | 余额 |
#### 3.3.2 商品表
| 列名 | 数据类型 | 说明 |
| -------- | ------------------------------ | ------ |
| id | Int primary key auto_increment | 商品ID |
| Name | varchar | 名称 |
| fujia | varchar | 规格 |
| jiaqian | varchar | 价格 |
| shuliang | Int | 数量 |
| tupian | varchar | 图片 |
| miaoshu | varchar | 描述 |
#### 3.3.3 订单表
| 列名 | 数据类型 | 说明 |
| ---- | ----------------------------- | ---- |
| Id | Int primary key auto_increment | 订单ID |
| shijian | varchar | 订单时间 |
| kewu | varchar | 客户 |
| shouhuodizhi | varchar | 收获地址 |
| Jie_e | Int | 总价 |
| mingxi | varchar | 订单 明细 |
| zhuangtai | varchar | 状态 |
| phone | varchar | 电话 |
### 本章小结
本章主要介绍了本项目的设计及其的部分功能实现,通过上述数据库的设计,基本可以实现项目的注册、商品浏览、购买、支付等流程。
## 第四章 功能实现
### 4.1 用户注册
```java
switch (v.getId()) {
//点击Login页面中的登陆按钮
case R.id.login_login:
//对数据进行为空检测,判断
String lg_phone = lg_et_phone.getText().toString();
String lg_password = lg_et_password.getText().toString();
if (lg_phone.isEmpty()) {
ToastTool.error(this, "手机号为空!!!");
return;
}
if (lg_password.isEmpty()) {
ToastTool.error(this, "密码为空!!!");
return;
}
//如果数据不为空,则储存数据
userData = new UserData(lg_phone, lg_password);
Toast.makeText(this, "电话:" + userData.getPhone() + "\n密码:" + userData.getPassword(), Toast.LENGTH_SHORT).show();
break;
//点击Login页面的注册按钮
case R.id.login_register:
//对全局变量userName和passWord进行为空检测
//实现功能,在登陆界面输入的电话号和密码会同步到注册界面
//跳转前,将数据储存起来
//跳转语句
lg_phone = lg_et_phone.getText().toString();
lg_password = lg_et_password.getText().toString();
userData = new UserData(lg_phone, lg_password);
RegisterView();
//跳转后,把数据赋值给对应控件
rg_et_phone.setText(userData.getPhone());
rg_et_password.setText(userData.getPassword());
break;
//点击register页面中的注册按钮
case R.id.register_login:
//对全局变量userName和passWord进行为空检测
//实现功能,在注册界面输入的电话号和密码会同步到登陆界面
//跳转前,将数据储存起来
String rg_phone = rg_et_phone.getText().toString();
String rg_verification = rg_et_verification.getText().toString();
String rg_password = rg_et_password.getText().toString();
String rg_username = rg_et_username.getText().toString();
String rg_email = rg_et_email.getText().toString();
if (rg_phone.isEmpty()) {
ToastTool.error(this, "手机号为空!!!");
return;
}
if (rg_password.isEmpty()) {
ToastTool.error(this, "密码为空!!!");
return;
}
if (!rg_verification.equals(verification)) {
ToastTool.error(this, "验证码输入错误!!!");
return;
}
//判断密码是否匹配成功
if (!rg_isEquate) {
ToastTool.error(this, "密码输入错误!!!");
return;
}
if (rg_username.isEmpty()) {
ToastTool.error(this, "昵称为空!!!");
return;
}
if (rg_email.isEmpty()) {
ToastTool.error(this, "邮箱为空!!!");
return;
}
userData = new UserData(rg_phone, rg_password, rg_username, rg_email);
//跳转语句
LoginView();
//跳转后,把数据赋值给对应控件
lg_et_phone.setText(userData.getPhone());
lg_et_password.setText(userData.getPassword());
break;
case R.id.register_verification_get:
ToastTool.tip(this,"目前未使用短信接口,输入12345即可");
break;
}
```
注册界面如下
### 4.2 用户登录
```java
switch (v.getId()) {
//点击Login页面中的登陆按钮
case R.id.login_login:
//对数据进行为空检测,判断
String lg_phone = lg_et_phone.getText().toString();
String lg_password = lg_et_password.getText().toString();
if (lg_phone.isEmpty()) {
ToastTool.error(this, "手机号为空!!!");
return;
}
if (lg_password.isEmpty()) {
ToastTool.error(this, "密码为空!!!");
return;
}
//如果数据不为空,则储存数据
userData = new UserData(lg_phone, lg_password);
Toast.makeText(this, "电话:" + userData.getPhone() + "\n密码:" + userData.getPassword(), Toast.LENGTH_SHORT).show();
break;
```
登录界面如下
### 4.3 页面框架
主页框架,采用安卓BottomNavigationView控件作为此项目的底部导航栏

具体代码如下
```xml
```
### 4.4 商品陈列
商品展示页
布局文件代码如下
```xml
```
商品分类页
实现代码如下
```xml
```
## 第五章 项目测试
### 5.2 软件测试的内容
#### 5.1.1 数据展示测试
本项目数据采用服务器动态传送数据,Android端动态刷新的形式进行显示,所以Android的动态显示数据作为此项目的重要测试内容。
测试截图
#### 5.1.2 注册登录测试
以下是注册测试
以下是登录测试
## 参考文献及项目
CircleRefreshLayout(圆形下拉刷新库):https://github.com/tuesda/CircleRefreshLayout)
Fastjson(Json解析工具):https://github.com/alibaba/fastjson
PhotoView(图片展示工具):https://github.com/chrisbanes/PhotoView