文章目录

  • 一、项目简介
    • 1. 概述
    • 2. 意义
    • 3. 软件卖点
    • 4. 软件创新点
    • 5. 主要功能
  • 二、项目架构
    • 1. 登录注册模块
    • 2. 首页设计模块
    • 3. 图书管理模块
    • 4. 用户管理模块
    • 5. 订单管理模块
  • 三、项目关键设计
    • 1. 数据库设计
    • 2. 关键功能及代码
  • 四、效果图
    • 1. 登录注册
    • 2. MainActivity
    • 3. 其他界面
  • 五、项目源码

一、项目简介

1. 概述

OBT(old book trade)深大旧书交易平台,是专门为深大学生量身定制的二手教科书、二手课外书等书籍的交换平台。同学们用过的教科书、课外书都可以用在本平台上换成需要的教科书或者课外书。旧书交易系统是为师生服务的公益平台项目,旨在实现书籍回收利用、促进学习交流、节省学生开销等宗旨。目前OBT已经完成安卓手机端的开发,未来将对第一版本进行完善,并择机开发ios版本和鸿蒙版本。

2. 意义

OBT旧书交易系统是一个专门为深大学生量身定做的二手书交易平台,其意义总结有以下几点:

1) 实现校内图书的回收利用,为绿色环保、开源节支贡献自己的一己之力;

2) 促进同学之间的交流与联系,切实解决卖书难、买书难的问题。

3) 不经过第三方商家,实现没有中间商赚差价,真正实现压低图书价格,平常在其他旧书店20块钱才买得到的书,在OBT上只需10元就能买到;

4) 探索使用Q点结算,不涉及金钱交易,真正实现图书互换。
经过我们前期的市场调研,目前深大大概有66.3%以上的学生有意愿购入和使用二手书,而他们迫于当前二手书交易的局限,只能从校外的旧书店用较高的价格购买。而OBT的推出,将有望于改变这一现状,实现每年5000册图书的交换,惠及深大3万多人。同时也将助力绿色环境建设,帮助贫困学生以较低价格获得心仪图书。

3. 软件卖点

A.避免资源浪费
很多同学的教材使用完之后,多数选择扔掉或者放着不用,这会造成极大的资源浪费。如果提供OBT这样一个平台,就能让资源循环利用。既能环保,又可以节省同学们的日常开支。

B.使用数据库驱动
鉴于教材的多种多样,我们根据深大的课程体系,按照年级、专业进行分类,并为每一本书贴上标签,分好编号,使得OBT平台更好地为深大学子服务。

C.不止于购书
OBT平台将提供论坛专区,用于同学们在上面分享读书笔记,看书心得,或者是分享考试复习资料,探讨学习问题等,将会是一个校内的专属学习论坛。

4. 软件创新点

A.交易方式不同
与传统交易平台不同,OBT将采用类似于“物物交换”的交易模式,所有交易不涉及金钱,“卖”出去的书籍将根据定价和新旧程度获得一定数量的Q点,后续可以使用Q点“购入”自己需要的书籍。

B.为深大学子量身定做
将二手书在校内流传,一是避免了中间商赚差价,二是由于课程体系和教师差异不大,教材上的笔记等内容都能很好地被再利用。所购入的二手书也更加适合自己。

C.提供互评机制
与现行单方面的评价不同,OBT平台买卖双方都可对对方做出评价,评价包括打分和文字评论(可配上图片),系统将根据评价生成个人信用分,此外,当进行交易的时候,同学们可以根据评价选择适宜的买方或者卖方。

5. 主要功能

A. 非常细节地复现目前主流App的登录注册功能,带有正则表达式判断、随机图片验证码、以及手机验证码等功能。

B. 模拟淘宝、京东首页设计,具备“轮播广告位”,可以引入广告获取收益,从而维系平台的维护,并且利用优质广告丰富同学们的生活。

C. 和现有平台不同,OBT实现买卖一体化,只需要下载一个App就可以完成买、卖、售后相关操作,操作方便,节约手机内存。

D. 和现有平台不同,OBT不涉及金钱交易,单纯地使用Q点作为物与物交换的媒介,所有交易使用Q点进行结算,能够模拟实现书籍交换的机制。

E. 图书管理方面:实现基本的增删查改、以及根据特定条件、复合条件排序。有购物车功能。

F. 用户管理方面:用户可以上传头像、修改更新个人资料,多用户时还可以实现自由的添加、删除、切换等。

G. 订单管理方面:包含未支付、已支付、待收货、确认收货、评价等阶段属性。并根据图书卖家和买家对这些订单进行标标识,从数据库读取时采用嵌套查询的方式。

二、项目架构

本项目共包含五大模块:登录注册模块、首页设计模块、图书管理模块、用户管理模块、订单管理模块,每个模块之间的简单关系如图所示,整个项目的流程请参见中期报告。接下来,我们将逐一对每个模块的内容和功能进行详细的介绍。

1. 登录注册模块

(1)包含的活动和功能
登录注册模块主要包含三个活动的内容:LoginActivity(登录)、RegisterActivity(注册)、ForgotPasswordActivity(忘记密码)。其中每个活动包含的功能如下:

(2)流程图
如图所示,从左到右依次是登录、注册、找回密码的逻辑流程图。我们可以看到每一步的操作都非常严谨地保证了系统的安全性,对账号的保护包括但不限于人机,另外对用户的开放度也做到适度并友好,用户可以轻松修改并找回自己的密码,同时还可以更换自己喜欢的头像。

(2)前后端相关代码
如表2所示,罗列出该模块设计的相关代码文件。

2. 首页设计模块

(1)包含的活动和功能
首页设计模块主要包括两个活动:HomeFm(首页模块)和SearchActivity(搜索活动)。其中每个活动包含的功能如表3所示。

(2)流程图
如图所示,从左到右依次是轮播广告位、智能推荐、搜索活动的流程图。可以看到,我们对轮播广告位的嵌入自然而合理,对于搜索功能的实现符合用户平常习惯,并且我们也不断更新用户的喜好,并根据喜好推荐相应内容。

(3)前后端相关代码
如表4所示,罗列出该模块设计的相关代码文件。

3. 图书管理模块

(1)包含的活动和功能
图书管理模块主要涉及:HomeFm(首页),CartFm(购物车),ShopFm(我的商店),AddNew(添加新书)四个活动。其中每个活动及其对应的功能如表5所示。

(2)流程图
如图4-2-4是我的商店(即卖家)图书管理,如图4-2-5是购物车的图书管理,图4-2-6是首页的图书管理。



(3)前后端代码
如表6所示,罗列出该模块设计的相关代码文件。

4. 用户管理模块

(1)包含的活动和功能
用户管理模块主要涉及MineFm、LoginActivity、RegisterActivity和ForgetPassWordActivity四个活动。其中每个活动对应的功能如表7所示。

(2)流程图
由于登录注册的流程图前面已经叙述过了,这里只叙述MineFm也即个人中心的流程图。

(3)前后端代码
如表8所示,罗列出该模块设计的相关代码文件。

5. 订单管理模块

这一模块由于项目时间有限,还没有实现用户界面,不过其他模块已经预留了相应的API接口,数据库也设计好了,后面会继续将项目做完整。

三、项目关键设计

1. 数据库设计

(1)登录注册模块
这一块的数据库主要分为两张表,一张是存放账号和密码的user表,一张是存放账号和详细信息的userInfo表。

这里主要要对几点进行说明:

A. 由于手机号、密码、学号这些不需要参与任何的运算,知识一串数字,因此采用varchar存储,这样可以有多少位就存多少位,节省空间。

B. 对于用户头像IMAGE,在java中,我们需要将一张图片先转为bitmap编码,然后再转为byte数组,然后转成String类型,最后使用blob存储。这里不用text,是因为其空间大小不足。

C. 将账号密码和账号信息分开存放,是为了安全起见,因为后面会有很多环节需要访问信息表,如果密码也放在信息里面,就很容易造成信息泄露。

D. 记住密码功能,是将密码保存到手机数据库中(使用SQLite),然后进入登录界面的时候自动填充。
(2)首页设计模块
这个模块主要涉及book表,从book里面选出相应的推荐书籍展示出来,然后点击购买或者加购操作会跳到其他对应的模块进行完成。

这里需要重点说明几点:

A. 每一本图书都有唯一的序列号BID,索引的时候都是根据BID索引的。

B. 每一本图书都适用SOLD标记是否已经售出,如果售出,其他用户便不能再加购或者购买,也不能展示在商品页。

C. 图书图片还是跟用户头像一样,适用Blob存储,解码和译码过程也大概一致。

D. CLASS主要用于对图书分类,方便后续的智能推荐和排序。

(3) 图书管理模块
图书管理模块会涉及到book表,购物车表,订单表等,分别对应展示、加购等操作,他们之间也存在一定的关系,比如一本书可以被多个购物车(以用户手机号作为索引)收藏,一个购物车也可以收藏多本数,因此他们是多对多的关系;而对于订单而言,因为一个订单只能有一本书,而一本书也只能对应一个订单,因此订单和书籍是一对一的关系。

这里需要重点说明几点:

A. 关于订单状态的说明:为了更节省空间地表示其状态,这里使用int型,我们规定-1表示未支付状态、1表示已支付未发货状态,2表示已发货未收货状态,3表示已收货状态,4表示订单完成(即卖方收到Q点)。

B. 其余的表在之前也相应介绍过,这里不再重复。注意,这里为了方便,使用账户登录密码作为支付密码。

C. 在用户和订单因为是1对多的关系,所以我们需要将用户的主码(手机号码)作为订单的外码。其余情况也类似。
(4)用户管理模块
这个模块主要涉及用户的一些信息,以及手机自身的SQLite数据库相关表(不同于mysql,不能多台手机共享),其中主要包括user表、userInfo表、userlist表(SQLite)。他们之间存在一些关系,比如user和userInfo是一一对应的,把密码分开其实是为了账号的安全,因为我们在使用app的过程中会经常性的访问数据表,如果密码放在一起,就很有可能会泄露。然后userlist和user是一对多的关系,userlist存放着添加在手机中的用户列表(包括密码),当用户切换时,可以自动取出账号密码去mysql数据库匹配。其数据表和ER图(只画出表之间的关系)如图所示。

这里需要重点说明几点:

A. 和主流的App一样,我们为了不增担手机的负担,只将用户的账号名和密码存放在userList中,并且为了保证密码的安全,我们在后端代码中实现了对密码的加密。

B. 对于User表,因为账号是惟一的,因此在匹配账号密码的过程中,我们加入条件limit 1,这样当找到一个匹配关系后就结束,不会浪费额外的不必要查询。

C. 对于phone和sid(学号),因为我们并不需要对其进行数据上的运算,而是将其作为一个索引值,所以使用varchar数据类型。考虑到一个学生只有一个学号,但是一个学生可以使用不同手机号码注册不同的账号,因此我们使用手机号码作为账号的主键,但是使用学号作为学生的实名认证。
(5)订单管理模块
这一模块主要涉及的到数据表有订单信息表和交易记录表,其中订单信息表主要包含一些重要的买卖双方的信息,比如交易双方账号、交易状态等,而交易记录表主要是记录相关的交易快照,存储着订单号和交易状态。交易记录和订单信息是一一对应的,交易记录的设置一是方便查询,二是作为订单重要的存根。

这里需要重点说明几点:

A. 为了节省空间,我们使用一个int型数据来记录不同的订单状态,比如使用0表示订单处于刚创建为付款状态,使用1表示订单已付款为发货状态,使用2表示订单已发货未收货状态,以此类推。

B. 另外,在每次订单创建的同时,我们要更新book,将图书设置为已售出,避免重复出售的情况。

2. 关键功能及代码

(1) 连接mysql
因为我们每次使用jdbc连接,都需要创建一个连接器,所以我们这里干脆将其写成一个Helper类,并且在里面放着我们的ip地址和密码,以及数据库的相关信息。

(2)正则表达式检查手机号、学号和密码的合法性
以检查密码合法性为例,我们设定密码长度6-16位,并且必须至少两种字符以上组合。首先我们要创建正则表达式,然后使用这个正则规则检查密码,根据检查结果我们给出用户不同的提示信息。

(3)向mysql数据库写入注册的账号密码和账号信息
这里我们获取用户的相关信息之后,建立数据库连接器,然后开启一个子线程写入,写入成功就是注册成功, 如果写入不成功给用户一定的回馈信息。

(4)注册和找回密码时,发送手机短信验证码,并检查验证码正确性
这一部分我们使用了第三方的SDK,有一部分免费的资源开放,具体的配置这里不展开细说,主要展示一下使用时的代码,我们通过网络向第三方服务器发送请求之后,该服务器会发送一个验证码到手机端,然后用户填写验证码之后,我们重新想第三方服务器发送请求验证验证码的正确性,通过返回的结果我们执行对应的操作。

(5)登录时,查看账号和密码是否匹配
这里依然适用mysql语句进行查询,为了查询快速,限制条件limit 1,即找到一个匹配结果后就返回。

(6)登录时,随机图片验证码的生成与匹配
这里的图片验证码是后台自己生成的,其逻辑也比较简单,就是随机生成四个字符,然后使用安卓自带的绘图工具将这四个字符画出来,加上一些干扰就完成了,为了方便使用,我们写了一个图片验证码的支撑类,其部分代码如图3-2-6所示,使用方法如图3-2-7所示。


(7)记住密码功能
主要使用checkbox供用户选择是否记住密码,如果记住密码,那么便将用户的密码存储到SQLite中,在下次进入的时候自动填充即可。

(8)在mysql中存储图片
将图片转成bitmap格式,再转成byte数组,最后转成String。

(9)轮播图的实现
在安卓开发当中,轮播图的概念在现行的主流App中时常见到,其主要的实现原理其实也并不复杂。主要的难点集中在几个方面:

A. 将图片设置成可以滑动模式:使用ViewPager可以将图片放入,并实现左右的滑动。

B. 如何实现自动轮播:使用Java的线程机制,用Thread#sleep设计定时器,定时向主线程发送信息,主线程接到信息后就可以更新UI了。

C. 如何在用户长按图片时停止自动播放,松开后又继续自动播放:这个主要是依赖安卓系统自带的监听器,监听用户是否长按,如果长按我们先暂停定时器即可。

(10)前端:设置沉静式标题栏

四、效果图

1. 登录注册

2. MainActivity


3. 其他界面

五、项目源码

完整代码请参加GitHub: https://github.com/JacksonKim-1024/Old-Book-Trade-OBT-

【Android开发】旧书交易系统(OBT),安卓购物软件开发,安卓聊天软件开发,数据库应用,安卓直连mysql数据库相关推荐

  1. MySQLi学习笔记 :一 1. 数据库的基本概念 2. MySQL数据库软件 安装-- 卸载--. 配置 3. SQL

    # MySQL数据库软件     1. 安装         * 参见<MySQL基础.pdf>     2. 卸载         1. 去mysql的安装目录找到my.ini文件    ...

  2. java day26【数据库的基本概念、MySQL数据库软件、SQL数据库的基本概念】

    第一章    数据库的基本概念 1. 数据库的英文单词: DataBase 简称 : DB 2. 什么数据库? * 用于存储和管理数据的仓库. 3. 数据库的特点: 1. 持久化存储数据的.其实数据库 ...

  3. android直接连接本地数据库文件,Android 直接连MySQL数据库

    1.Android平台下与服务器数据库通信的方法 在Android平台下,连接电脑服务器的MySQL.PostgreSQL.Oracle.Sybase.Microsoft SQLServer等数据库管 ...

  4. java小项目之成绩管理、排课软件、局域网聊天软件

    大三下,想把上个学期的一些东西整理一下.可能是突然有点想法吧. 我把答辩ppt以及文档要求还有项目文件夹全部都放在了我的github里面啦.点击打开链接 项目一 问题描述:教师在教学过程中,需要记录学 ...

  5. mysql数据库+ssh框架_SSH框架+Mysql数据库开发java web会员积分消费管理系统

    项目描述 会员消费管理:会员信息调取查询.会员消费商品添加金额计算.兑换商品等 会员管理:会员增删改查 积分管理:积分设置.商品积分设置等 积分兑换.数据库备份还原.折扣管理.商品管理等 运行环境 j ...

  6. 计算机毕业设计之android的二手车交易系统app(源码+系统+mysql数据库+Lw文档)

    该二手车信息软件采用JSP + Tomcat + Mysql+Android开发环境开发,是一款展示二手车信息,并提供卖方联系方式,让买家更方便地找到合适的二手车主的软件,系统分为前端和后端,前端采用 ...

  7. 基于android的二手车交易系统app

    该二手车信息软件采用JSP + Tomcat + Mysql+Android开发环境开发,是一款展示二手车信息,并提供卖方联系方式,让买家更方便地找到合适的二手车主的软件,系统分为前端和后端,前端采用 ...

  8. 基于android的二手车交易系统app-计算机毕业设计

    项目介绍 该二手车信息软件采用JSP + Tomcat + Mysql+Android开发环境开发,是一款展示二手车信息,并提供卖方联系方式,让买家更方便地找到合适的二手车主的软件,系统分为前端和后端 ...

  9. ChatGPT聊天软件开发

    ChatGPT聊天软件是一款基于OpenAI技术训练的智能AI对话软件,具有自然语言处理.问答系统.语音交互等多种功能.用户可以通过输入文字或语音与ChatGPT进行互动,询问问题,获取信息以及进行娱 ...

最新文章

  1. 河池学院计算机与信息工程学院官网 领导,关于成立我院宣传工作领导小组的方案...
  2. 国内勒索病毒疫情严重 每天十多万台电脑被感染
  3. 16-Understanding the Armv8.x extensions
  4. matlab 小技巧
  5. 《一线架构师实践指南》—— 读后总结
  6. [Nginx] – 性能优化 – 配置文件优化
  7. 前端—每天5道面试题(7)
  8. 如何在 Mac 上将PDF 转换为 Word?
  9. 转 如何通过ildasm/ilasm修改assembly的IL代码
  10. coreldraw怎么改成半圆形_cdr怎么把图形修剪成指定的形状?
  11. 高级运维工程师证书_运维人员需要考什么证 linux运维工程师考证
  12. 计算机专业毕设论文题目大全(二)
  13. 机翻福音-多种语言平行语料库资源
  14. 使用jquery validate结合zui作表单验证
  15. 手把手教你构建 C 语言编译器(4)- 递归下降
  16. 三国佚事——巴蜀之危 全送错信件问题
  17. 调试OpenGL ES应用程序
  18. 【diannaoxitong】总结网站被百度K站怎么快速恢复的方法
  19. 《网络编程》基本 UDP 套接字编程
  20. CF1472D Even-Odd Game

热门文章

  1. C++题目及答案(15)——质检员问题升级
  2. 推荐一个腾讯出品的Android UI框架 —— QMUI
  3. 埃斯顿三轴机器人编程_埃斯顿机器人核心技术研发及应用
  4. 关于量子力学的我们胡思乱想(一)
  5. Delving into Localization Errors for Monocular 3D Object Detection 论文学习
  6. android网络盒子改,废旧手机改造成电视盒子详细教程
  7. 双屏办公:一台主机接两个显示器
  8. php cache()类,对一个cache类的实际应用_php
  9. 楚汉争霸显示未创建服务器,楚汉争霸单机游戏
  10. 抓紧时间,先考张CCIE-EI证书