【千纸诗书】—— PHP/MySQL二手书网站后台开发之项目设计
前言:这个项目是毕设时候做的,我负责后台数据操作部分,已经很久了,这次回顾这部分,是为了复习PHP和MySQL的知识,正好现在在公司也负责的是后台管理系统的业务。第一篇【项目概况】附上毕业论文部分节选。项目github地址:https://github.com/66Web/php_book_store,欢迎Star。
![]() |
| 欢迎界面&首页 |
![]() |
| 后台管理系统 |
一、总体结构设计
本系统分为两个部分:前台管理系统和后台管理系统。前台管理系统包含有:书籍展示、图书检索、用户信息管理、购物车、订单等功能模块。后台管理系统包含有:书籍管理、分类管理、用户管理、评论管理、订单管理等功能模块。系统支持主流客户端——PC端。
前台管理系统,通过登录判断用户。如果没有登录,用户以游客身份浏览网站,只能查询书籍信息,不能进行交易。如果登录成功,用户则以会员身份拥有用户中心和书架,可以进行添加购物车、填写订单等操作,进而完成交易。
在图书检索功能中,用户可以通过模糊查询或高级查询,查找到自己想找的图书。用户登录成功后,将喜欢的图书收藏到个人书架中,方便以后查阅。在个人中心,用户可以修改个人信息、管理联系方式、发布出售图书、管理订单记录。购物车功能中,一次性记录图书信息,如果用户没有提交订单,退出登录或关闭浏览器,就清空购物车。
后台管理系统,通过登录验证管理员。如果验证成功,管理员可以对网站信息进行更新、修改和删除等操作,实现对系统的日常维护。
图书出售信息发布系统分为两个部分:用户发布和管理员发布。用户根据自己的需求,可以发布自己的闲置图书,并对出售信息进行管理。管理员负责网站官方发布,出售网站统一回收的图书,并管理包括用户发布在内的所有图书出售信息。
在订单管理功能中,用户可以看到自己购买图书的订单,也可以看到客户购买自己图书的订单,方便用户之间直接进行交易。用户在确认收货成功之后,会开通评论功能,在所购买的图书详情中,显示已购买客户的评论信息。所有用户的订单与评论,后台管理员统一进行管理。
总体结构设计如图所示。

二、概念模型设计
从应用需求出发,系统可以分为:会员、管理员、二手书类别、二手书信息、书架、订单、订单状态、联系方式、评论,九个实体。
采用先逐一分析实体属性以及实体间的关系,设计局部E-R图,然后再合并为全局E-R图的方法,对整体的概念模型进行设计。
全局E-R图如图所示:

三、逻辑模型的设计
将二手书交易网站系统包含的9个实体的E-R图进行概念-关系模式的转化,可得到关系模式如表3-1所示:

为了满足网站对性能的实际需求,提高数据的查找和管理效率,将上述关系结构做出下列优化。
考虑到订单管理和个人信息管理的功能需求,订单信息表和用户信息表中的联系方式是相同的,因此为了简化数据表,将收货人联系方式从订单信息表和用户信息表中分离出来,单独建联系方式表。
书架信息表的设置是为了实现用户对二手书籍的收藏功能,仅包含两个字段:用户ID和二手书编号。用户ID与会员信息表中的用户ID组成外键,二手书编号与二手书检索表中的二手书编号组成外键,二者共同组成复合主键。是1对n关系的经典数据表结构。
为了实现限制用户管理客户订单的权限,在二手书信息表中,设置供货商字段,默认为0,表示管理员发布的二手书。用户发布的二手书,供货商字段值设置为对应的用户ID,即通过判断客户购买二手书信息中的供货商字段显示用户出售二手书的订单。
实现方案将在下一节作具体阐述。
四、数据库设计实现
根据上一节逻辑模型的分析,系统需要分为:会员表、管理员表、二手书信息表、二手书类别表、书架表、评论表、联系方式表、订单状态表、订单表这九个数据表。表3-2至表3-7分别展示了几个主要的数据表。
会员表user:包含6个字段,其中id为主键。

二手书类别表class:包含2个字段,其中id为主键。

二手书信息表book:包含13个字段,其中id为主键。

联系方式表touch:包含6个字段,其中id为主键。

订单状态表status:包含2个字段,其中id为主键。

订单表indent:包含12个字段,其中id为主键。

注:转载请注明出处
【千纸诗书】—— PHP/MySQL二手书网站后台开发之项目设计的更多相关文章
- 【千纸诗书】—— PHP/MySQL二手书网站后台开发之知识点记录
前言:使用PHP和MySQL开发后台管理系统的过程中,发现有一些通用的[套路小Tip],这里集中记录一下.结合工作中ing的后台业务,我逐渐体会到:除了技术知识外.能使用户体验好的“使用流程设计”积累 ...
- 【千纸诗书】—— PHP/MySQL二手书网站后台开发之功能实现
前言:前一篇温习了网站开发需要掌握的基础知识,这一篇重点梳理一下各个功能模块的[详细设计与实现].项目github地址:https://github.com/66Web/php_book_store, ...
- 【千纸诗书】—— PHP/MySQL二手书网站后台开发之基础知识
前言: 在具体回顾每一个功能的实现前,还是有必要先温习一些项目涉及到的PHP.MySQL[语法基础].项目github地址:https://github.com/66Web/php_book_stor ...
- JavaWeb网站后台开发记录手册
1.javaweb网站后台开发 1.封装DBTools类 1.注册数据库驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); 2 ...
- 1小时轻松上手springmvc,视频网站后台开发
由于最近半年一直在用springboot,但是也不能忘了本,于是把springmvc重新练了下,做了个前端传个表单,后台接收并显示的界面,该项目可以上传视频的URL,然后前端进行页面的播放,项目采用s ...
- 做php网站后台开发,在Linux系统上进行更好吗?
1. PHP是开源软件,它在bsd/linux/win下都有很好的正式版及孪生版.并非开发php就必须要在linux下进行.主机服务商们习惯性的把asp与php分为两个主机系列几进行销售.由于asp只 ...
- 做php网站后台开发,在Linux系统上进行更好吗?【转载】
1. PHP是开源软件,它在bsd/linux/win下都有很好的正式版及孪生版.并非开发php就必须要在linux下进行.主机服务商们习惯性的把asp与php分为两个主机系列几进行销售.由于asp只 ...
- 转战网站后台与python
这么长时间了,迷茫的大雾也逐渐散去,正如标题所写的一样,转战网站后台开发.这段时间没怎么写博客,主要还是太忙,忙着期末考试的预习,以及服务器的搭建,python的学习,还有各种各样杂七杂八的小事,就像 ...
- Mysql在大型网站的应用架构演变
原创文章,转载请注明: 转载自http://www.cnblogs.com/Creator/本文链接地址: Mysql在大型网站的应用架构演变 本文已经被多处转载,包括CSDN推荐以及码农周刊等等,阅 ...
随机推荐
- python基础===python内置函数大全
python python内建函数 一.数学运算类 abs(x) 求绝对值1.参数可以是整型,也可以是复数2.若参数是复数,则返回复数的模 complex([real[, imag]]) 创建一个复数 ...
- Perl语言入门--3--文件读取与写入
现有文件test.txt,内容为:"123\n456" 1,打开文本test.txt #!/usr/bin/perl open d,"test.txt"; d ...
- 移动开发之css3实现背景渐变效果
前段时间由于手机项目需要实现一个背景渐变功能, 开始是想切个小背景图平铺下, 后来想到css3可以实现,如是用下面的代码就实现了. .sec_case_list li span{ backgro ...
- js加载条
<html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv=" ...
- Pycharm上python和unittest两种姿势傻傻分不清楚【转载】
前言 经常有人在群里反馈,明明代码一样的啊,为什么别人的能出报告,我的出不了报告:为什么别人运行结果跟我的不一样啊... 这种问题先检查代码,确定是一样的,那就是运行姿势不对了,一旦导入unittes ...
- SpringMVC框架入门配置 IDEA下搭建Maven项目(zz)
SpringMVC框架入门配置 IDEA下搭建Maven项目 这个不错哦 http://www.cnblogs.com/qixiaoyizhan/p/5819392.html
- 使用MybatisGenerator自动生成Model,Mapping和Mapper文件
Mybatis和Hibernate都是持久层框架,MyBatis出现的比Hibernate晚,这两种框架我都用过,对于二者的优势我的感触不深,个人感觉MyBatis自动生成model,Mapping, ...
- qt include_directories没用
include_directories之后在.cpp文件中include.h文件没有路径补全说明qt没有找到该.h文件 问题解决: 在add_executable里加入那个.cpp文件就可以了 因为c ...
- springBoot 发布war包
1.packaging 改为war <packaging>war</packaging> 2.剔除内置tomcat <dependency> <groupId ...
- typescript 定义全局变量以及扩展原生js对象
使用“declare global”操作即可. 项目根目录下新建myDeclareFile.d.ts declare global { interface Navigator { mediaSessi ...

