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

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:mqkxxmvo
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:通过对订餐网站的需求分析,给出了网站系统功能结构图,明确了系统开发中要采用模块化的设计思想。网站选用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 "";
  }
  $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 "";
  }
  3 结束语
  本网站主要实现了餐饮的分类查询,用户可以在网站上根据个人的需求来选择相应的餐饮或者套餐;能将所选的餐饮加入购物车,并能在购物车中修改订餐信息;用户能将个人意见反馈给网站管理员等实用的功能。本网站是基于PHP Smarty开发完成的,可移植性好,具有模块化开发,分合灵活的特点。后期可以灵活的添加订单跟踪、预约送餐时间等功能,来进一步完善本网站。
  参考文献:
  [1] 缪东东. 基于PHP 的高职院校学生考勤管理系统的研究[J]. 福建电脑,2013(10):127-129.
  [2] 陈书益,黄永慧.开源视频服务器软件MJPG-stream的应用与研究[J].电子设计工程,2012,20(50):172-176.
  [3] 扎卡斯,姆克皮克.Ajax高级程序设计[M].徐锋,译.北京:人民邮电出版社,2008.
其他文献
目的:观察cC1 DNA疫苗和蛋白质疫苗联合免疫对诱导BALB/c小鼠免疫应答的影响。方法:雌性BALB/c小鼠随机分为4组:A组(DNA疫苗组),质粒DNA以10d间隔免疫3次;B组(联合免疫组),质粒DNA以1
我科于1997年起应用栓塞硬化治疗(先用无水乙醇行瘤腔内栓塞后用明矾加氨甲喋呤行硬化术[1])血管畸形487例次,其中静脉畸形439例次(90.1%),动静脉畸形48例次(9.9%).治疗过程
摘要:Sysprep系统封装与部署技术是微软提供的一种计算机系统的快速部署技术,该文介绍了该技术方法在医院信息系统运维中的应用,着重阐述了封装技术和自动部署的主要原理以及封装过程的定制,对封装的流程、操作方法作以及封装后镜像的升级作了介绍。该技术解决了医院运维工作中,重新安装系统过于繁杂、耗时的难题,提高了工作效率。  關键词:Sysprep;系统封装部署;系统运维  中图分类号:TP311 文献
水旱灾害风险是安徽省最主要的自然灾害风险。通过引入哈德罗-多马模型得到的自然灾害风险增长模型表明,实际经济增长率越高,自然灾害的风险也越高。因此,要降低自然灾害风险,必
目的:观察泪道探通加注药物治疗慢性泪囊炎的疗效.方法:随机选择慢性泪囊炎患者120眼分为A(70眼)和B(50眼)两组.用α-糜蛋白酶、林可霉素、地塞米松三联冲洗液将泪囊内的脓性
摘要:该文是基于企业安全审计系统需求,通过系统的软件开发分析与设计,结合企业安全审计系统相关模块的规划与设计,共同完成了对企业安全审计系统的实现和开发。同时,介绍了企业安全审计系统的测试模型和方法,以及企业安全审计系统的测试计划和方法,希望给同类系统的研究者提供支持和帮助。  关键词:企业安全审计系统;模块设计;测试模型  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(20
目的:探讨曲美他嗪(trimetazidine,TMZ)对心肌缺血再灌注损伤(RI)的保护作用及其机制. 方法:50只SD雄性大鼠随机分为假手术组、生理盐水组和药物组(TMZ 5或10 mg/kg),共4组,
全球经济一体化的客观发展现状及世贸组织体系的法律要求,促进了各国外资立法对外商投资准入采取逐渐自由化的态势.本文通过列举若干国家外资法关于外商投资准入的立法变迁,
目的:分析立体定向显微手术治疗高血压脑出血的疗效.方法:用立体定向辅助开颅显微手术治疗高血压脑出血30例,一次清除血肿量达80%~90%.结果:30例患者中生活能自理16例,生活部
摘要:三维展示系统可以融GIS与虚拟现实港口于一体,所创建的三维数字模型不仅能形象直观地展现港口三维虚拟场景,还会使观众在浏览时,有身临其境般的感受,利用LOD技术提高图片显示速度,使观众浏览更加顺畅,另外,提供各种服务接口可广泛应用于港口区域发展规划、重点项目建设、资源调查与动态监测、公共应急管理、港城规划建设等领域,为政府宏观决策、公共管理和应对突发事件等提供科学依据。  关键词:三维数字模型