随着我国国民经济的稳步发展,我国的大学生也越来越多,但是大部分学生都是没有时间和环境去自己做饭的,有很多也不会做,而很多食堂的菜品有难以下咽,所以很多人就采取了订餐的方式来进行购买美食,但是现在很多网站都是只能进行点餐,而没有智能推荐功能,本系统在原来的外卖基础上增加了智能推荐功能。
本设计以BS为架构,PHP语言为基础,MYSQl为数据存储,设计一个校园餐饮配送系统,本系统可以直接通过浏览器进行浏览,甚至学生可以通过统计在床上和课间对菜品进行预订,而且系统会根据用户的习惯智能推荐对应的菜品给用户,这样就大量了节省了时间,把多余的时间投入到学习中去。
本系统实现了基本的注册登录,菜谱分类,新闻功能,在线订餐,订单管理,修改密码,在线留言等功能,能够让用户更加快捷有效的让订餐外卖系统进行操作
校园订餐系统首页部分界面:
前台首页是浏览者打开一个网站后第一眼看到的网页,网站能不能吸引浏览者,在很大程度上取决于首页做得怎么样。首页包含内容虽然丰富但不杂乱,色彩搭配要合理,整体风格要独特。网站前台首页的运行结果上图所示
菜品详情界面
订餐系统购物车部分界面:菜品结算主要是在页面自动生成订单号填写,收货人,性别,收货地址,邮编,联系电话,邮箱,邮寄方式,付款方式,订单时间,下单人,总金额,订单留言,送货时间等数据项信息,系统会自动判断输入项的合法性,通过页面验证后,执行添加操作
用户结算部分界面:点击结算订单按钮,执行ordersAdd.php页面,在此页面自动获取订单号,商品的编号,商品的数量,收货人,性别,收货地址,邮编,联系电话,邮箱,邮寄方式,付款方式,订单时间,下单人,订单状态,总金额,订单留言,送货时间等信息,点击添加数据按钮,执行 代码片段,与数据库表orders进行交互,执行mysql的sql语句inser into orders,保存页面信息到数据表orders里进行存储。
用户评价界面:菜品评价的添加主要是在页面填写评价标题,评论内容等数据项信息,系统会自动判断输入项的合法性,通过页面验证后,执行添加操作
菜品信息添加界面:菜品信息的添加主要是在页面填写菜品名称,菜品介绍,菜品型号,菜品图片,菜品数量,卖出次数,会员价,市场价,菜品类别id,添加时间,等数据项信息,系统会自动判断输入项的合法性,通过页面验证后,执行添加操作
<?php
error_reporting(E_ALL ^ E_NOTICE);
$conn=@mysql_connect("localhost","root","root") or die("数据库链接失败".mysql_error());
mysql_select_db("daizu",$conn) or die("数据库链接失败".mysql_error());
mysql_query('set names utf8');
//设置时区
date_default_timezone_set('asia/shanghai');
define('SYS_ROOT', str_replace("\\", '/', dirname(__FILE__)));
define('File_ROOT', SYS_ROOT."/upload/");
define('IMG_ROOT', SYS_ROOT . "/upload/");
@extract($_POST);
@extract($_GET);
function getfirst($sql)
{
$res=mysql_query($sql);
$rows=mysql_fetch_array($res);
return $rows;
}
//
function getcount($sql){
$res=mysql_query($sql);
return mysql_num_rows($res);
}
function get_name($id,$table)
{
$sql="select * from $table where id='$id'";
$rows=getfirst($sql);
return $rows[name];
}
//遍历创建目录
function Remkdir($path) {
if (!file_exists($path)) {
Remkdir(dirname($path));
@mkdir($path, 0777);
}
}
//上传图片
function upload_image($inputname, $image=null, $type='upimages', $width=440) {
$n = time().rand(1000,9999).'.jpg';
$z = $_FILES[$inputname];
if ($z && strpos($z['type'], 'image')===0 && $z['error']==0) {
if (!$image) {
Remkdir( IMG_ROOT . '/' . "{$type}/" );
$image = "{$type}/{$n}";
$path = IMG_ROOT . '/' . $image;
} else {
Remkdir( dirname(IMG_ROOT .'/' .$image) );
$image = "{$type}/{$n}";
$path = IMG_ROOT . '/' .$image;
}
//echo $path ;
move_uploaded_file($z['tmp_name'], $path);
//echo $image;exit;
return $image;
}
return $image;
}
//获取文件后缀名
function get_extend($file_name)
{
$extend = pathinfo($file_name);
$extend = strtolower($extend["extension"]);
return $extend;
}
//文件上传实现
function upload_file($inputname, $file=null)
{
$year = date('Y'); $day = date('md');
$z = $_FILES[$inputname];
$file_ext=get_extend($z['name']);
$n = time().rand(1000,9999).".".$file_ext;
if ($z && $z['error']==0) {
if (!$file) {
Remkdir( File_ROOT . '/' . "{$day}" );
$file = "{$day}/{$n}";
$path = File_ROOT . '/' . $file;
} else {
Remkdir( File_ROOT . '/' . "{$day}" );
$file = "{$day}/{$n}";
$path = File_ROOT . '/' .$file;
}
//echo $path ;
move_uploaded_file($z['tmp_name'], $path);
//echo $file;exit;
return $file;
}
return $file;
}
//分页函数.
function get_pager($url, $param, $count, $page = 1, $size = 10)
{
$size = intval($size);
if($size < 1)$size = 10;
$page = intval($page);
if($page < 1)$page = 1;
$count = intval($count);
$page_count = $count > 0 ? intval(ceil($count / $size)) : 1;
if ($page > $page_count)$page = $page_count;
$page_prev = ($page > 1) ? $page - 1 : 1;
$page_next = ($page < $page_count) ? $page + 1 : $page_count;
$param_url = '?';
foreach ($param as $key => $value)$param_url .= $key . '=' . $value . '&';
$pager['url'] = $url;
$pager['start'] = ($page-1) * $size;
$pager['page'] = $page;
$pager['size'] = $size;
$pager['count'] = $count;
$pager['page_count'] = $page_count;
if($page_count <= '1')
{
$pager['first'] = $pager['prev'] = $pager['next'] = $pager['last'] = '';
}
else
{
if($page == $page_count)
{
$pager['first'] = $url . $param_url . 'page=1';
$pager['prev'] = $url . $param_url . 'page=' . $page_prev;
$pager['next'] = '';
$pager['last'] = '';
}
elseif($page_prev == '1' && $page == '1')
{
$pager['first'] = '';
$pager['prev'] = '';
$pager['next'] = $url . $param_url . 'page=' . $page_next;
$pager['last'] = $url . $param_url . 'page=' . $page_count;
}
else
{
$pager['first'] = $url . $param_url . 'page=1';
$pager['prev'] = $url . $param_url . 'page=' . $page_prev;
$pager['next'] = $url . $param_url . 'page=' . $page_next;
$pager['last'] = $url . $param_url . 'page=' . $page_count;
}
}
return $pager;
}
?>
目 录2
1 绪论4
1.1 开发背景4
1.2 开发意义4
1.3 校园餐饮配送系统的优势5
2 开发技术介绍5
2.1 开发技术综述5
2.2 开发技术详细说明6
2.2.1 Apache6
2.2.2 Mysql7
2.2.3 Php7
3 需求分析9
3.1 可行性分析9
3.1.1 技术可行性9
3.1.2 经济可行性9
3.1.3 操作可行性9
3.1.4 法律可行性9
3.2 需求分析10
3.3 功能用例图10
3.4 性能需求11
3.4.1 软件环境11
3.4.2 硬件环境12
4 总体设计12
4.1 功能模块设计12
4.2 数据库设计13
4.2.1 数据项设计13
4.2.2 数据表说明14
4.2.3 数据表结构14
5 详细设计16
5.1 网站前台模块16
5.1.1 网站首页16
5.1.2 用户注册登录17
5.1.3 搜索菜品19
5.1.4 在线订餐20
5.1.5 我的订单20
5.1.6 菜品评价21
5.2 网站后台模块21
5.2.1 菜品类别管理21
5.2.2 菜品管理22
5.2.3 订单管理23
5.2.4 菜品评价23
6 系统运行与测试24
6.1 软件测试的目的24
6.2 软件测试的重要性24
6.3 测试环境24
6.4 测试方法24
结束语25
参考文献25
致谢27