间的多对多的订购关系转换为订单表。会员与商品之间的多对多的评论关系转换为订单表。
表4-1 会员表
列名 id name pwd QQ dongjie email sfzh tel tishi huida dizhi youbian truename 类型 int varchar varchar int varchar varchar varchar varchar varchar varchar varchar varchar varchar 长度 4 25 50 11 4 25 25 25 50 50 100 25 25 是否为空 否 否 否 否 否 是 是 是 是 是 是 是 是 是否主键 是 否 否 否 否 否 否 否 否 否 否 否 否 是否外键 否 否 否 否 否 否 否 否 否 否 否 否 否 说明 编号,自增 姓名 密码 QQ号 冻结状态 邮件 地址 手机 提示问题 答案 地址 邮编 真实姓名
表4-2 管理员表
列名 id name pwd tel realname 类型 int varchar varchar varchar datetime 长度 4 25 25 25 25 是否为空 否 否 否 否 是 是否主键 是 否 否 否 否 是否外键 否 否 否 否 否 说明 编号,自增 姓名 密码 手机号 真实姓名
表4-3 商品表 列名 id mingcheng jianjie dengji xinghao 类型 int varchar text varchar varchar 长度 4 25 5 25 是否为空 否 否 否 否 是 是否主键 是 否 否 否 否 是否外键 否 否 否 否 否 说明 编号,自增 名称 描述 等级 型号 tupian shuliang tuijian typeid pinpai huiyuanjia shichangjia addtime varchar int int int varchar varchar varchar varchar 200 4 4 4 25 25 25 25 是 是 是 是 是 是 是 否 否 否 否 否 否 否 否 否 否 否 否 是 否 否 否 否 图片 数量 是否推荐 类型 品牌 会员价 市场价 添加时间
表4-4 公告表 列名 id title context time 类型 int varchar text varchar 长度 4 20 50 是否为空 否 否 否 是 是否主键 是 否 否 否 是否外键 否 否 否 否 说明 编号,自增 标题 内容 添加日期
表4-5 分类表
列名 id typename 类型 int varchar 长度 4 50 是否为空 否 否 是否主键 是 否 是否外键 否 否 说明 编号,自增 类型名
表4-6 订单表
列名 id dingdanhao spc slc shouhuoren sex dizhi youbian tel email shfs 类型 int varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar 长度 4 125 125 125 25 2 125 10 25 25 25 是否为空 否 否 否 否 否 否 否 否 否 是 是 是否主键 是 否 否 否 否 否 否 否 否 否 否 是否外键 否 否 是 否 否 否 否 否 否 否 否 说明 编号,自增 订单号 商品编号 数量 收货人 性别 地址 邮编 联系电话 邮件 送货方式 zfff time xiadanren total zt varchar varchar varchar int varchar 25 25 25 11 25 否 否 否 否 否 否 否 否 否 否 否 否 是 否 否 支付方式 时间 下单人 总价 状态
表4-7 评价表 列名 id userid spid title content time 类型 int int int varchar text varchar 长度 4 4 4 200 是否为空 否 是 是 是 是 否 是否主键 是 否 否 否 否 否 是否外键 否 是 是 是 是 是 说明 编号,自增 会员编号 商品编号 标题 内容 添加日期 4.2.2数据库表之间联系
图4-4 数据库表关系图
第五章 详细设计与实现
5.1前台模块设计与实现
ThinkPHP框架基于MVC设计模式。ThinkPHP中的MVC分层体现在: 模型(M):模型的定义由Model类来完成。
控制器(C):应用控制器(核心控制器App类)和Action控制器都承担了控制器的角色,Action控制器完成业务过程控制,而应用控制器负责调度控制。
视图(V):由View类和模板文件组成,模板做到了100%分离,可以独立预览和制作。
根据上文对网上商城的分析,前台模块共设计五个Action控制器类:IndexAction类、GonggaoAction类、ProductAction类、UserAction类和PublicAction类。这五个控制器类都继承ThinkPHP框架Action控制器基类—Action类。其中IndexAction类是系统默认的控制器类,而PublicAction类用于进行初始化等操作。GonggaoAction类负责与公告相关的某些操作,ProductAction类负责与商品相关的一些操作,DingdanAction类负责处理与订单相关的一些操作,UserAction类负责与会员相关的一些操作。前台模块控制器类图如图5-1所示。
Action Class#name#view#error+__construct()#isAjax()+display()+assign()GonggaoAction Class+showgg()+showgonggao()IndexAction Class+index()ProductAction Class+lookinfo()+addgouwuche()+gouwu1()+removegwc()+shownew()+showtuijian()+showhot()+showfenlei()+hightfind()+dohightfind()+findsp()+savepj()+showpj()+savedd()+showdd()+finddd()+qrdd()UserAction Class+chkusernc()+savereg()+changeinfo()+chkpassword()+chkuser()+logout()+mypwd()+showpwd()PublicAction Class+_initialize()
图5-1 前台模块控制器类图
ThinkPHP框架中,Model模型类与数据库中的表或视图一一对应。通过Model模型类可直接对数据库中的表尽享增加、删除、修改和查询等操作。由于前台模块不需要与管理员员进行交互,所以前台模块共设计六个模型类:DingdanModel类、GonggaoModel类、PingjiaModel、ShangpinModel类、TypeModel类和UserModel类。六个模型类都继承ThinkPHP框架模型类—Model类。前台模块模型类图如图5-2所示。
Model Class#db#name#dbname+__construct()+add()+save()+delete()+select()AdminModel ClassShangpinModel ClassGonggaoModelPingjiaModel ClassTypeModel ClassUserModel
图5-2 后台模块模型类图
5.1.1注册模块设计与实现
ThinkPHP框架基于模块和操作的方式进行访问,网站的所有的模块和操作都通过URL的参数来访问和执行。单击主页上会员注册标签,系统解析URL参数,调用UserAction类的reg()方法。由于UserAction类未定义reg()方法,系统自动调用模板文件reg.html,显示会员注册界面。在该界面输入相关信息,点击提交按钮即可完成注册。本次设计运用JavaScrip技术对表单输入的内容进行了校验。点击提交按钮后,系统调用UserAction类的savereg()方法。该方法通过UserModel模型类从数据库中获取相关信息,判断会员名是否已存在。若不存在则显示注册成功。若会员名已注册,则返回会员注册页面。会员注册页面如图所示