基于PHP+Smarty的订餐网站设计与实现

时间:2022-10-12 10:35:15

基于PHP+Smarty的订餐网站设计与实现

摘要:通过对订餐网站的需求分析,给出了网站系统功能结构图,明确了系统开发中要采用模块化的设计思想。网站选用B/S工作模式,用PHP+Apache+MYSQL+Smarty+PDO来开发系统。该文主要介绍了数据库的设计、公共配置文件的设计和购物车模块的关键代码。

关键词:PHP;Smarty;模板

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)19-0058-02

随着互联网的发展,人们在日常生活中通过网络购物已经非常普及,小到服装,大到汽车、房子都可以通过互联网来便捷购买。随着互联网网速的不断升级,“互联网+” 深深扎根于旅行、住宿、电影等生活服务类行业,一台电脑、一部智能手机就能代劳所有事情。2016年3月17日,上海市浦东新区市场监督管理局正式向盒马外卖颁发全国第一张“专业网络订餐许可证”,这意味着网上外卖正式进入“许可证”时代。网络订餐是一个全新的业态,明确了它的餐饮服务经营范围只能在互联网领域。

1 系统的功能分析

一个完整的网络订餐系统,除了要能够展示卖家提供的所有商品以外,还需要根据商家的需求,能重点展示商家推荐的商品、套餐、最新商品、最近开展的促销活动等功能;同时还要能够满足用户分门别类的查询各类商品、反馈意见给商家等个性化的需求。系统分为前台页面与后台管理两部分,前台页面主要是为点餐者 服务,后台主要为餐厅经营者服务。基于以上的调查分析,确立了本网站前台所需要满足的功能。网站前台的整体功能结构如图 1所示:

2 系统设计

本系统采用 B/S 工作模式,选择了PHP+Apache+MySQL来开发。以Windows7为开发平台,以Apache为Web服务器,以MySQL为后台数据库。同时使用Smarty模板以及PDO数据库连接层来搭建MVC结构。系统界面使用 Dreamweaver 设计,采用DIV+CSS进行布局,让网站的表现和结构分离,使用这种方式能在团队开发中更容易分工合作而减少相互关联性。

Smarty是一个用PHP写出的模板引擎,它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。,使程序员改变程序的逻辑内容不会影响到美工的页面设计,美工重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显得尤为重要。PDO是PHP5.1以上版本附带的数据库连接层,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力;与ADODB和MDB2相比,PDO更高效。

2.1系统数据库设计

本网站根据需求,设计出能够满足用户需求的各种实体以及他们之间的关系。其中,实体包括:用户、商品、订单等。通过对网上订餐系统的内容和数据流程分析,设计的数据项和数据结构如下:

用户信息。包括的数据项有用户姓名、用户密码、用户手机号、用户地址、订购等。

商品信息。包括的数据项有商品名称、商品编号、商品类型、商品价格、商品折扣、商品库存、商品上架时间等。

留言信息。包括的数据项有用户编号、留言标题、留言内容、留言时间等。

活动信息。包括的数据项有活动名称、活动时间、活动内容、活动图片等。

订单信息。包括的数据项有用户编号、商品数量、添加时间、商品价格等。

根据以上的数据结构和数据项建立数据库。

2.2 数据库连接、管理类文件和Smarty模板配置类文件的设计

1)选择安装Smarty的目录。从安全性考虑,可以将Smarty安装在web程序文档目录以外的地方,再将Smarty安装目录地址包含在PHP.INI文件中的include_path选项即可。

同时,在\system目录下,创建templates、templates_c、configs、cache目录,用来放置模板文件、缓存文件等相关文件。

2)在system目录下,建立system.class.inc文件、system.inc文件和system.smarty.inc文件。其中system.smarty.inc.php 文件用来定义smarty模板类,指定各种文件的存储位置;system.inc.php文件用来进行数据库连接、类的实例化;system.class.inc.php文件用来定义数据库连接类和数据库管理类。其中,system.inc.php的部分关键代码如下:

require("./system/system.smarty.inc.php"); //包含Smarty配置类

require("./system/system.class.inc.php"); //包含数据库连接和操作类

$connobj=new ConnDB("mysql","localhost","root","123456","db_xd");//数据库连接类实例化

$conn=$connobj->GetConnId(); //执行连接操作,返回连接标识

$admindb=new AdminDB();//数据库操作类实例化

$seppage=new SepPage();//分页类实例化

$usefun=new UseFun();//使用常用函数类实例化

$smarty=new SmartyProject();//调用smarty模板

function unhtml($params){

extract($params);

$text=$content;

global $usefun;

return $usefun->UnHtml($text);

}

$smarty->register_function("unhtml","unhtml"); //注册模板函数

?>

2.3 功能模块的开发

程序核心代码采用 PHP 开发完成。网站设定游客可以在网页上浏览各种餐饮,如果需要订餐则必须要注册为网站用户,只有登录成功后才能进行餐饮预订和使用购物车的功能。

2.3.1会员注册和登陆页面设计

本网站整体采用清爽简洁的设计风格。根据订餐网站的特点,为了使网站易用,在用户注册时,必填的信息较少,只需要填写用户名、密码、手机号和地址信息。同时,为了防止恶意注册,在用户注册页面使用了验证码功能。通过PHP随机函数产生一个4位的随机数,再通过DG函数库,将数字验证码转换为图片格式,然后使用函数创建一个背景图片并增一些干扰元素,来防止验证码被OCR软件识别。

2.3.2商品展示页面设计

根据用户点餐的特点以及用户查询餐饮的习惯,网站将餐饮的展示分为最新产品、热门产品、套餐和产品名录几个页面。每个页面根据主题展示相应的餐饮,同时,每种餐饮都有独立的介绍页面。在商品预订时,通过SESSION记录用户的登陆状态,如果用户没有登陆则需要登陆后才能进行商品预订。

2.3.3购物车设计

订餐网站的购物车类似于其他电商网站的购物车功能,用于存放用户选择的餐饮,同时记录用户所选餐饮的数量、价格、总结等相关信息。当用户进入购物车页面后,可以对餐饮的数量进行修改;也可以将所选的产品移除出购物车。在对餐饮的品种、数量、价格等信息进行确认后,即可提交订单。购物车功能的部分关键代码如下:

session_start();

$member=$_SESSION['member'];

if($member){

$smarty->assign('member',$member);

$scsql = "select * from shopping where username='".$member."' ";

$scarr = $admindb->ExecSQL($scsql,$conn);

if($scarr[0]['csell']==""){

echo "

";

echo " alert('购物车中暂时没有商品!');location=('index.php');";

}

$n=0;

$s=0;

//print_r($scarr);

//$res=$scarr->fetchAll(PDO::FETCH_ASSOC);

for($i=0;$i

$n=$n+$scarr[$i]['csell'];

$s=$s+$scarr[$i]['csell']*$scarr[$i]['cprice'];

}

$smarty->assign('scarr',$scarr);

$smarty->assign('n',$n);

$smarty->assign('s',$s);

$smarty->display("shopcar.tpl");

}else{

echo " alert('请先登录!');location=('index.php');";

}

3 结束语

本网站主要实现了餐饮的分类查询,用户可以在网站上根据个人的需求来选择相应的餐饮或者套餐;能将所选的餐饮加入购物车,并能在购物车中修改订餐信息;用户能将个人意见反馈给网站管理员等实用的功能。本网站是基于PHP+Smarty开发完成的,可移植性好,具有模块化开发,分合灵活的特点。后期可以灵活的添加订单跟踪、预约送餐时间等功能,来进一步完善本网站。

参考文献:

[1] 缪东东. 基于PHP 的高职院校学生考勤管理系统的研究[J]. 福建电脑,2013(10):127-129.

[2] 陈书益,黄永慧.开源视频服务器软件MJPG-stream的应用与研究[J].电子设计工程,2012,20(50):172-176.

[3] 扎卡斯,姆克皮克.Ajax高级程序设计[M].徐锋,译.北京:人民邮电出版社,2008.

上一篇:Flex团队:让创意“穿越”到现实 下一篇:商业银行在互联网时代的金融创新研究