移动终端与服务器站点之间的通信通常部署在两种软件架构中,即B/S和C/S架构。B/S是浏览器/服务器的缩写,C/S是客户机/服务器的缩写。考虑到易于维护和系统升级,本设计采用了B/S架构。浏览器是指安装在移动终端上的Web浏览器,服务器站点分为Web服务器和数据库两部分,与移动终端共同构成3层[4]。
B/S软件布局具有以下优点:(1)无需安装专用APP;(2)B/S架构可直接放置在广域网上;(3)无需升级多个终端软件就能在服务器站点进行维护和升级。
在这种体系结构中,业务性能很容易通过web浏览器实现,当用户通过web浏览器提交表单时,将信息提供给Internet服务器以满足用户的需求。Internet服务器执行所需的分析查询,数据库服务器执行,然后使用标准HTML语言将数据库服务器的查询结果返回到web浏览器。
该平台的构建能够不断提升校园形象,不断深化学校的精神文明建设,体现出可持续发展的要求,减少一些有用资源的浪费。更重要的是能够满足大学生之间快节奏的生活方式,满足他们的供求需要,为双方构建一个信任交易平台。
系统细化数据流图
系统层次图
层次图用来描绘软件的层次结构,该系统主要分为3个层次,主要有购物车操作、搜索商品信息操作、浏览商品操作、发布商品操作以及个人信息操作,高校物品交易系统的层次图:
系统前台业务流程图
用户在访问网站时,匿名用户可以进行商品的浏览以及搜索功能,也可以查看商品的各个分类,当用户想要购买商品或添加购物车时,必须进行用户的注册以及登录,当用户登录成功后,在个人账户页面可以查看个人资料、发布商品、查看我的发布、查看我的购物车以及查看我的购买等信息。用户可以从首页或者购物车页进行商品的购买,提交订单选择支付方式即可完成商品的购买,系统前台工作流程图[12]如图4-2所示:
主界面的实现
首先设计好主界面的大体布局,运用html语言设计好页面的大体格式,应用Bootstrap框架中的CSS设计好网页的样式,搭配好网页的色调,让主界面更加的美观、直接。能够让用户了解该系统的大体功能,让用户拥有舒适的体验感。在主页面中主要体现了该系统的搜索、注册、登录、购物车、分类以及我的账户等功能,最终所设计的主界面样式:
在该系统的主界面中,匿名用户可以进行商品的浏览以及商品的搜索功能,用户可以查看到商品的名称、图片、价格以及详细介绍等内容。如果用户想应用其他功能,必须先进行用户的注册以及登录,用户成功登录后,可以查看我的账户,进行商品的添加购物车、发布商品以及购买商品等操作。
在商品成功添加后,所有的商品会在首页进行展示,展示的顺序会按照商品添加的顺序进行排列,先添加的商品会出现在首页的前面。
随着使用该系统的用户逐渐增多,所添加的商品也逐渐增多,在首页页面展示的时候需要使用分页功能,SpeedPHP框架能够使得该功能的实现变得简单,分页功能的实现代码如下所示:
function actionKind(){ $page = (int)arg("p", 1); $product = new Model("product"); $condition = array("sptype"=>arg("kind")); $this->xinxi= $product->findAll($condition, null, "*", array($page, 9)); $this->pager = $product->page; $this->display("kind.html"); }
用户注册登录
当用户想应用其他功能时,需要进行用户注册,用户输入用户名、邮箱、手机号、性别、密码并同意本站条款,确认相关信息无误后,点击注册按钮即可实现用户的成功注册,如果信息输入有误,则注册不成功。注册页面如下图所示:
用户注册核心代码:
function actionRegistered(){ $password=md5(arg("password")); $newrow = array( "username" => arg("username"), "email" => arg("email"), "phone" => arg("phone"), "gender" => arg("gender"), "password" => $password, ); $condition=array('phone'=>arg("phone")); $user = new Model("user"); $examples = $user->find($condition); if (empty($example)) { $result = $user->create($newrow); $this->tips("注册成功!", url("main", "account")); } else { } }
用户登录
用户注册成功之后进行登录,用户输入注册时对应的姓名及密码,这里为了用户的方便记忆,我们通常将姓名输入为手机号码,如果姓名和密码与数据库user中的手机号和密码相匹配,则登录成功,否则登录失败,此外,我们设置了登录有效时间为两个小时,超出这个时间需要从新进行登录才可以使用一些权限。登录界面如图所示:
用户登录核心代码:
function actionLogin(){ $user = new Model("user"); $pwd = md5(arg("pwd")); $example =$user->find(array('phone'=>arg("userid"),'password'=>$pwd)); if (empty($example)) { $this->tips("账号或者密码错误", url("main", "account")); } else { setcookie("user",arg("userid"),time()+7200); $this->tips("登录成功", url("main", "personal"));} }
用户登录成功后,成功跳转到个人资料界面,在个人资料界面我们可以进行个人信息的修改,个人资料页面及修改个人信息页面如下图所示:
商品管理的实现
在商品的每页中我们都可以看见商品的分类导航条,我们将所有添加的商品分为书籍、食品、美妆、服装、生活用品以及其他六大类,方便用户的分类查找。分类大导航条如下图所示:
搜索商品
用户在主界面搜索框中输入想要查找的商品名称,点击右侧的搜索按钮,即可找到想要购买的商品信息情况,如图4-7所示:
搜索商品核心代码:
function actionsou(){ $page = (int)arg("p", 1); $product = new Model("product"); $condition = array('spname' =>arg("sousuo")); $this->xinxi= $product->findAll($condition,null,"*",array($page, 9)); $this->pager = $product->page; $this->display("kind.html"); }
发布商品
用户在登录成功后,可以查看个人的基本信息情况并可以进行相关信息的修改,这时,用户就可以发布自己想要交易的商品信息了,用户输入商品名称、商品价格、商品种类、商品简介以及上传商品的图像之后,点击提交商品按钮即可完成商品的上传功能,在发布商品图像的时候,设计了一个存放上传图片的地址,目的是让所有发布商品的人都能看见商品的图片。
用户发布商品核心代码:
function actionSave(){ if (isset($_COOKIE["user"])) { if($_FILES["file"]["error"]){ $filename="null"; } else{if(($_FILES["file"]["type"]=="image/png"||$_FILES["file"]["type"] =="image/jpeg")&&$_FILES["file"]["size"] "user"); $spsn = new Model("spsn"); $result = $spsn->find($condition); $fileName=$_FILES['file']['name']; $name=explode('.',$fileName); $newPath=strval($result["sn"]).'.'.$name[1]; $filename ="./updown/".$newPath; $pic=substr($filename,1); $filename =iconv("UTF-8","gb2312",$filename); if(file_exists($filename)) { echo"该文件已存在"; } else { move_uploaded_file($_FILES["file"]["tmp_name"],$filename); } } else{ $this->tips("文件类型不对", url("main", "goods")); } } $newrow = array( "spname" => arg("spname"), "spprice" => arg("spprice"), "sptype" => arg("sptype"), "spabstract" => arg("spabstract"), "username" =>$_COOKIE["user"], "spid" => $result["sn"], "spimage" => $newPath ); $product = new Model("product"); $result2 = $product->create($newrow); $sn = $result["sn"] + 1; $newrow = array("sn" => $sn); $spsn->update($condition, $newrow); $this->tips("发布成功", url("main", "goods")); } else { $this->tips("尚未登录", url("main", "account")); } }
用户发布了自己的闲置物品后即可查看我的发布页面,里边显示了自己所发布的所有商品信息情况,勾选商品前的复选框点击撤销发布就可以完成发布的撤销操作。我的发布页如下图所示:
商品加入购物车
用户在查看商品的详细信息时可以随手将商品加入购物车当中,登录后的用户可以查看我的购物车,有两种查看方式,一是在首页右上角点击购物车按钮即可查看,二是点击我的账户,在我的账户中可以查看我的购物车,在我的购物车页勾选商品名称前面的复选框即可对商品进行删除与购买操作。我的购物车页如下图4-10所示:
商品加入购物车核心代码:
function actionjoin(){ if (isset($_COOKIE["user"])) { $condition = array("spid"=>arg("caseid")); $product = new Model("product"); $result = $product->find($condition); $gwc = new Model("gwc"); $newrow = array( "username" => $_COOKIE["user"], "cid" => $result["spid"], "cprice" => $result["spprice"], "cstate" => $result["spstate"], "cname" => $result["spname"], ); $condition3 =array( "cid"=>arg("caseid"), "username"=>$_COOKIE["user"], ); $example=$gwc->find($condition3); if (empty($example)) { $flag=$gwc->create($newrow); } $condition2=array("username"=>$_COOKIE["user"]); $page = (int)arg("p", 1); $this->xinxi = $gwc->findAll($condition2,null,"*",array($page, 9)); $this->pager = $gwc->page; $this->display("gwc.html"); }else{ $this->tips("尚未登录", url("main", "account")); } }
商品购买
用户购买商品分为两种购买方式,一个是在浏览商品详细信息时进行购买,另一种是在购物车页进行购买:
在商品详情页购买代码:
function actionbuy(){ if (isset($_COOKIE["user"])) { $condition = array("spid"=>arg("caseid")); $product = new Model("product"); $result = $product->find($condition); $bought = new Model("bought"); $newrow = array( "username" => $_COOKIE["user"], "bid" => $result["spid"], "bprice" => $result["spprice"], "bname" => $result["spname"], ); $condition3 =array( "bid"=>arg("caseid"), "username"=>$_COOKIE["user"], ); $example=$bought->find($condition3); if (empty($example)) { $flag=$bought->create($newrow); $example2=$bought->find($condition3); $newrow2=array("spstate"=>$example2["bstate"]); $product->update($condition,$newrow2); } $condition2=array("username"=>$_COOKIE["user"]); $page = (int)arg("p", 1); $this->xinxi = $bought->findAll($condition2,null,"*",array($page, 9)); $this->pager = $bought->page; $this->display("bought.html"); }else{ $this->tips("尚未登录", url("main", "account"));}}
在购物车页购买核心代码:
function actionbuy2(){ if (isset($_COOKIE["user"])) { if (empty(arg('choose'))) { $this->tips("未选择", url("main", "gwc")); }else{ $choose = arg('choose'); $gwc = new Model("gwc"); foreach ($choose as $key => $value) { $condition = array("spid"=>$value); $product = new Model("product"); $result = $product->find($condition); $bought = new Model("bought"); $newrow = array( "username" => $_COOKIE["user"], "bid" => $result["spid"], "bprice" => $result["spprice"], "bname" => $result["spname"], ); $condition3 =array( "bid"=> $value, "username"=>$_COOKIE["user"], ); $example=$bought->find($condition3); if (empty($example)) { $flag=$bought->create($newrow); $example2=$bought->find($condition3); $newrow2=array("spstate"=>$example2["bstate"]); $product->update($condition,$newrow2); } $condition4=array("cid"=> $value,"username"=>$_COOKIE["user"]); $gwc->delete($condition4); //dump($example); } $condition2=array("username"=>$_COOKIE["user"]); $page = (int)arg("p", 1); $this->xinxi = $bought->findAll($condition2,null,"*",array($page, 9)); $this->pager = $bought->page; $this->display("bought.html"); } }else{ $this->tips("尚未登录", url("main", "account")); } }
文章版权声明
1 原创文章作者:清风伴明月,如若转载,请注明出处: https://www.52hwl.com/34831.html
2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈
3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)
4 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别