当前位置:首页 期刊杂志

基于LAMP的网上订餐系统开发研究

时间:2024-05-04

张蕾

摘要:互联网的飞速发展给人们的生活提供了极大的便利,渗透到衣食住行的各个方面,网上订餐平台的开发很好地顺应了这一潮流。该文以网上订餐系统的设计与开发过程为例,介绍了网站开发的平台选择LAMP的依据、网站功能模块的系统设计和主要功能模块的详细设计,给出了主要功能模块的实现效果图和功能代码,为系统开发的研究提供参考。

关键词:开发平台;LAMP;系统设计;系统实现

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2017)31-0101-04

1 开发平台

LAMP是完全开源免费的网页开发平台,包括Linux操作系统、Apache服务器、MySQL数据库和PHP服务器脚本程序。与ASP.NET相比,LAMP平台具有通用、跨平台、高性能、低成本的优势,与JavaEE相比,LAMP平台则具有资源丰富、轻量易用和发展速度快、执行灵活的优势。也就是说,LAMP同时兼有低价格和高性能的特点,这使得LAMP在全球范围内应用非常广泛,下面分别从运行速度等9个方面对LAMP、JavaEE和ASP.NET三大开发平台进行对比,如表1所示。通过对比不难发现,LAMP架构相对本系统开发优势明显,这也是选择采用LAMP作为开发平台的主要原因。

2 系统设计

2.1 系统总体架构设计

系统开发基于LAMP开发平台,总体结构采用B/S三层体系架构,即表示层,逻辑层和数据层,分别对应客户端浏览器、Web服务器和数据库服务器。

2.2 系统功能模块划分

网上订餐系统从层次上划分,分为前台应用和后台应用两部分,前台应用主要包括用户个人信息管理、网上订餐和消费评价三个功能模块,后台应用则主要包括用户信息管理、订单信息管理和系统内容管理三个功能模块。系统对不同的用户进行了权限设置,不同用户仅能进行权限内的操作。系统总体功能结构如图1所示。

2.3 系统详细设计

通过对系统功能进行划分,确定了系统的26个核心子模块,下面仅以其中比较关键的几个模块为例进行详细阐述。

2.3.1 订餐模块设计

用户在客户端上搜索到合适的菜品信息选择订购后,订购模块首先判断用户是否登录,若未登录将自动跳转到注册登录界面。确定用户为注册会员并且已经登录以后,系统将根据用户信息和用户选择的菜品信息自动生成订单记录。用户继续订购时,系统将在用户已选择菜品的基础上为订单添加新选择的菜品信息。同时选择多项菜品时,系统仅生成一个订单编号,并在菜单信息表中存入所选的多项菜品记录。接下来通过获取用户送餐时间、联系方式和配送地址等信息,生成完整的订单记录。

2.3.2 菜品管理模块设计

菜品管理主要用于添加、修改和删除菜品信息,设置菜品推荐和菜品排行,及时为用户提供最新、准确、有效的菜品信息。下面以添加菜品信息为例对菜品管理的流程设计进行说明。食堂管理员在点击添加菜单后,系统将判断其是否登录,如果没有登录,页面将跳转至登录页面。登录完成后,系统自动返回添加菜品添加界面。食堂管理员在输入菜品名称、菜品价格,选择菜品种类,上传菜品照片,添加菜品描述和所属的食堂窗口后点击添加按钮,即可完成菜品信息的添加工作。

2.3.3 菜品推荐模块设计

为了更好的提升用户体验,推广食堂的各类菜品,进一步提高用户订餐效率,本文基于个性化推荐算法对菜品推荐模块进行了设计。该算法充分考虑了用户行为、菜品信息和用户信息等数据信息,通过问卷调查合理进行权重分配,计算出各类菜品的加权推荐值,针对不同用户喜好进行个性化推荐,以期实现较好的菜品推荐功能。本文设计的个性化推荐算法主要从用户行为、菜品与用户关联度、菜品相似度和菜品排行榜等方面入手,对菜品推荐功能进行设计,下面对算法的设计进行详细阐述。

1) 用户行为权值

用户的行为是反应用户喜好的重要的因素之一。通过记录用户的行为,对用户的搜索、查看、收藏、订购、评价等行为设置权重,用来表示用户对菜品的喜好程度,如表2所示。权重值根据经验和问卷调查获取。

2) 菜品与用户关联度

该模块主要通过用户信息与菜品信息,计算二者之间的关联度,从而推测出用户对菜品的喜好。涉及的菜品信息主要包括菜品名称和菜品类别,用户信息主要包括用户籍贯、性别和年龄。设用户籍贯为P,性别为S,年龄为A,则菜品Di和用户Mj的关联度可表示为:

[RDi,Mj=RTi,Pj+RTi,Sj+RTi,Aj] (1)

式中:[RTi,Pj]—表示菜品类型和用户籍贯的关联度;其值通过问卷调查获得。其余2个子式表示的含义与此类似。

3) 菜品相似度

菜品相似度主要通过对菜品信息进行加权计算来获得。用于计算菜品相似度的菜品信息主要包括:菜品名称、菜品关键词、菜品类别、所属食堂窗口。设菜品为D,菜品名称为N,菜品关键词为K,菜品类别为T,菜品所属食堂窗口为C,其权重分别为[WN]、[WK]、[WT]、[WC],则菜品可表示为[D={N,K,T,C}],从而可以得到菜品Di和菜品Dj的相似度计算公式如式(2)所示:

[SDi,Dj=WNNi∩NjNi∪Nj+WKKi∩KjKi∪Kj+WTTi∩TjTi∪Tj+WCCi∩CjCi∪Cj] (2)

式中:

[Ni∩Nj]—表示菜品Di和菜品Dj名称中包含相同字的数目;

[Ni∪Nj]—表示菜品Di和菜品Dj名称中互不相同字的数目;

其余3个子式表示的含义与此类似。

3 系统实现

3.1 网上订餐模块

当用户通过左侧导航栏或通过搜索功能选择食堂窗口后,系统将请求服务器跳转到相应的窗口页面,如图2(a)所示。左侧显示所选窗口的基本信息,包括菜品的口味和服務质量打分等。下方为所选窗口的展示的菜品信息,包括菜品名称、价格以及评价信息等。需要订购菜品时,点击菜品后的“+”图标,即将菜品加入购物车,同时菜品后将出现“-”号图标,以实现对购物车中菜品的删除功能。一种菜品选择结束后,可以继续浏览和添加其他菜品,如图2(b)所示。全部菜品选择完毕,点击确定按钮即可完成订单的生成。

網上订餐模块关键代码如下:

<?php

class Shopcar

{

public $dishesList=array();

public function checkDishes($dishes)

{ for($i=0;$i

{

if($this→dishesList[$i]['name']==$dishes['name'])

return $i;}return -1; }

public function add($dishes)

{

$i=$this→checkDishes($dishes);

if($i==-1)

array_push($this→dishesList,$dishes);

else

$this→dishesList[$i]['num']+=$dishes['num'];}

public function delete($dishes)

{

$i=$this→checkDishes($dishes);

if($i!=-1)

array_splice($this→dishesList,$i,1);}

public function show()

{ return $this→dishesList;}

}

?>

3.2 评价打分模块

用户在完成订餐后,系统将提示用户对菜品的口味满意度和服务满意度进行评价打分。评价分数将作为菜品信息的一部分显示给其他用户,系统则可根据所有用户的评价进行加权计算获得菜品的综合评价分数,方便用户按照评价打分情况对菜品列表进行排序,优先选择评价较好的菜品。用户评价界面如图3所示。

评价打分模块的实现关键代码如下:

var score = $(this).attr("rate");

$("#myRate").html("您的评价:"+score+"");

$.ajax({

type: "post",

url: "post.php",

data:"score="+score,

success: function(msg){

if(msg==1){

$("#myRate").html("您已评分!");

}else if(msg==2){

$("#myRate").html("您评过分了!");

}else

{ getRate(msg); }

} });

3.3 菜品管理模块

菜品管理模块主要用于食堂管理员对菜品信息进行添加、删除和修改操作。图4为上传菜品信息的界面,用户通过下拉菜单可以选择窗口的位置和菜品的种类,通过文本框可以输入菜品名称、菜品描述、菜品价格、搜索关键词和菜品详细描述等,通过上传图片模块可以上传菜品的照片。上传完毕后,可以点击查看菜品列表,以客户的视角浏览、检查菜品信息。

上传菜品信息模块关键代码如下:

<?php

if ($_server['request_method'] == 'post') {

if (is_uploaded_file($_FILES['upfile']['tmp_name'])) {

$upfile = $_FILES['upfile'] ['dishesName'])) { print_r($_FILES['upfile']);

$name = $upfilep['name'];

$type = $upfile['type'];

$size = $upfile['size'];

$ dishesName = $upfile[' dishesName '];

$error = $upfile['error'];

if ($max_file_size< $size) {

echo '您上传的图片过大';

exit ();

}

if (!in_arrar($type, $uptypes)) {

echo '上传文件类型错误' . $type;

exit ();

}

if (!file_exists($destination_folder)) {

mkdir($destination_folder);

}

if (file_exists("upload/" . $_FILES["file"]["name"])) {

echo$_FILES["file"]["name"] . " already exists. ";

} else {

move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);

echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

}

$pinfo = pathinfo($name);

$ftype = $pinfo['extension'];

$destination = $destination_folder.time() . "." . $ftype;

if (file_exists($destination) && $overwrite != true) {

echo "同名的文件已经存在了";

exit ();

}

if (!move_uploaded_file($tmp_name, $destination)) {

echo "移動文件出错";

exit ();

}}

?>

参考文献:

[1] 肖萍. 基于LAMP平台的网站构建与分析[J]. 信息网络安全, 2012(4).

[2] 曾志明. 网站开发技术的比较研究[J]. 电脑知识与技术, 2010, 6(5):1075-1078.

[3] 何杭锋. 基于LAMP平台的WEB服务器架构[J]. 中国新技术新产品, 2011(22).

[4] 李鸿飞. 浅谈网站开发技术的发展与前景[J]. 中国新通信, 2012(5).

[5] 李卫军, 陈旭. 基于LAMP的网上订餐系统的设计研究[J]. 电脑知识与技术, 2014(21).

[6] 易明. 基于Web挖掘的个性化信息推荐[M]. 北京: 科学出版社, 2010.

[7] C-J. Zhang, A. Zeng. Behavior patterns of online users and the effect on information filtering [J]. Physica A, 2012(391).

[8] Wang D, Ma J. Recommendation Based on Frequent N-adic Concepts[M]. Web Technologies and Application[M]. Springer International publishing, 2014.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!