目 录
1 引言 1
1.1 课题背景与意义 1
1.2 课题现状与可研究性 1
1.3 本论文研究内容和结构安排 1
2 系统基础概述 2
2.1 软件开发环境 2
2.2 L,Linux操作系统 2
2.3 A,Apache服务器 2
2.4 M,Mysql数据库 3
2.5 P,PHP语言 3
2.5.1 简洁的语法 3
2.5.2 跨平台性强 3
2.5.3 效率高 3
2.5.4 面向对象 3
2.6 ThinkPHP框架 4
2.6.1 基于LAMP 4
2.6.2 实现MVC模式 4
2.6.3 单一入口 5
2.7 本章小结 5
3 菜篮子价格查询系统的设计 6
3.1 系统概述 6
3.2 系统模型 6
3.3 系统概要设计 7
3.3.1 登录模块 7
3.3.2 用户注册模块 8
3.3.3 用户信息管理模块 9
3.3.4 管理后台用户模块 11
3.3.5 地区管理模块 12
3.3.6 商品信息管理模块 13
3.3.7 商品价格管理模块 14
3.3.8 管理员权限管理模块 16
3.3.9 查询商品价格走势模块 17
3.4 系统结构 17
3.4.1 物理结构 18
3.4.2 逻辑结构 18
3.5 系统功能 19
3.5.1 后台功能 19
3.5.2 前台功能 19
3.6 本章小结 19
4 菜篮子价格查询系统的实现 20
4.1 数据库设计 20
4.1.1 前台数据库 20
4.1.2 后台数据库 21
4.2 主要类的详细设计 24
4.2.1 后台类的设计 24
4.2.2 前台类的设计 26
4.3 功能实现模块 26
4.3.1 登录模块 26
4.3.2 地区管理模块 28
4.3.3 商品信息管理模块 31
4.3.4 管理商品价格模块 33
4.3.5 管理员权限管理模块 33
4.4 本章小结 33
5 总结与展望 34
5.1 总结 34
5.2 展望 34
致 谢 35
参 考 文 献 36
英 文 摘 要 37
3菜篮子价格查询系统的设计
3.1系统概述
经过分析,大致了解客户端和服务器的功能模块需求。了解了需求以后就进入了系统设计的阶段,系统主要采用了面向对象的设计模式,使用用例图对系统的行为进行建模,并使用时序图或活动图对各用例加以描述。
面向对象设计中UML图能够清晰地表达一个系统的结构以及内部类的交互。其中用例图用于对系统的功能以及与系统进行交互的外部事物建模。通过找出与系统交互的外部事物,并说明它们如何与系统交互,易于对系统进行探讨和理解。时序图是用于描述每个用例中的用户需求,详细描述对象之间以及对象与参与者之间交互的过程。活动图是描述动作、动作的执行顺序以及动作的输入与输出的图。本论文将通过分析各用例中主要事件流的序列图来对整个系统的结构进行设计[10]。
系统在设计上有两点基本的要求:
(1)严格按照分层思想进行系统设计;分层思想对于一个系统而言是极其重要的。首先,在开发阶段,类与类、包与包之间的关系标识明确,程序员对代码思路就相当清晰了。另一个方面,在完成系统之后,系统的分层思想对维护工作也带来了方便。同时,出于安全性能的考虑,分层思想使内部数据处理逻辑与界面完全隔离,系统的用户不能接触到数据处理的层面,这对于系统的安全性起着至关重要的作用。
(2)按照“低耦合、高内聚”的思想进行设计,注重代码的复用;这已经不是一个新鲜的概念了,“低耦合、高内聚”一方面使系统更为清晰,与此同时,系统运行的效率也会有相当的提高。对于同一种处理逻辑而言,假如输入的变量不相同而采用了不同的函数来处理,开销将是难于估计的。基于这个理由,代码复用的好处就得到充分地体现。采用同一个处理逻辑来尽可能处理同一类的操作,不仅减少多余的代码,对于层与层之间衔接的速度也起着非常重要的作用。
3.2 系统模型
经过分析,已经大致了解用户和管理员的功能模块需求。了解了需求以后就进入了系统设计的阶段,本论文主要采用了面向对象的设计模式,使用用例图对系统的行为进行建模。如图:
(1)用例图综述
此用例图由3参与者和15用例组成。此用例的目的是为了让客户更好地了解本菜篮子价格查询系统的功能实现,以及各部分之间的关系。
由上图可以看出用户通过登录系统前台,进入系统可以查询商品信息,其中商品信息包括某地区某市场的价格等,可查询商品价格走势,修改用户信息,修改用户密码等。而管理员登录进入系统后台,对系统内容进行管理:可增删查改用户,设置用户权限,增删查改商品信息;超级管理员继承管理员,拥有系统的所有权限,除了管理员的权限外,还拥有设置管理员权限。这就是本项目的大致框架功能。
(2)参与者描述:
参与者包括有:用户、管理员、超级管理员。
用户:即使用系统前台的主要参与者。
管理员:是本系统后台的管理者,管理有权限限制。
超级管理员:继承管理员,拥有管理系统后台的最高权限。
3.3 系统概要设计
系统概要设计主要根据系统的功能模块进行设计
3.3.1登录模块
用例名:登录
前置条件:已获取登录账号
功能简述:输入用户账号、密码及验证码信息,若输入用户账号、密码及验证码信息准确无误,本文转载自http://www.biyezuopin.vip/onews.asp?id=13343则成功登录进入系统;若输入的用户账号、密码及验证码信息中,其中之一有误,则提示输入信息有误,登录失败。
<?php
//$modifyimg_url="Public/upload/img/";
include_once 'Common/common.php';
$upload_url="Runtime/Temp/img/upload/";
$modifyimg_url="Runtime/Temp/img/modify/";if ($_SERVER['REQUEST_METHOD'] == 'POST'){//删除会员以前的头像if(file_exists($MemberFace)) {unlink($MemberFace);}$MemberFace = sliceBanner("",$modifyimg_url);echo json_encode($MemberFace);exit;}function sliceBanner($UserName="",$modifyimg_url="./"){$x = (int)$_POST['x'];$y = (int)$_POST['y'];$w = (int)$_POST['w'];$h = (int)$_POST['h'];$pic = $_POST['src'];//剪切后小图片的名字//$str = explode(".",$pic);//图片的格式//$type = $str[1]; //图片的格式$type=strrchr($pic,'.');//图片的格式$pathinfor=pathinfo($pic);if($UserName===""){$filename=$pathinfor["basename"];$UserName=substr_replace($filename, "", strrpos($filename,'.'));}$filename = $UserName. $type; //重新生成图片的名字$uploadBanner = $pic;if(!file_exists($modifyimg_url)){mkdirs($modifyimg_url);}$sliceBanner = $modifyimg_url.$filename;//剪切后的图片存放的位置//创建图片$src_pic = getImageHander($uploadBanner);$dst_pic = imagecreatetruecolor($w, $h);imagecopyresampled($dst_pic,$src_pic,0,0,$x,$y,$w,$h,$w,$h);switch ($type){case '.gif':imagegif($dst_pic,$sliceBanner);break;case '.jpg':imagejpeg($dst_pic, $sliceBanner);break;case '.png':imagepng($dst_pic, $sliceBanner);break;default:imagepng($dst_pic, $sliceBanner);break;}imagedestroy($src_pic);imagedestroy($dst_pic);//删除已上传未裁切的图片if(file_exists($uploadBanner)) {unlink($uploadBanner);}$picsize=getimagesize($sliceBanner);$width=$picsize[0];$height=$picsize[1];$size=round($width*$height/1024,2);$img=array('name'=>$filename,'pic'=>$sliceBanner,'size'=>$size,'width'=>$width,'height'=>$height);//返回新图片的位置return $img;}//初始化图片function getImageHander ($url) {$size=@getimagesize($url);switch($size['mime']){case 'image/jpeg': $im = imagecreatefromjpeg($url);break;case 'image/gif' : $im = imagecreatefromgif($url);break;case 'image/png' : $im = imagecreatefrompng($url);break;default: $im=false;break;}return $im;}
?>