收藏 分销(赏)

网上购书系统课程设计-毕业论文.doc

上传人:可**** 文档编号:2660229 上传时间:2024-06-04 格式:DOC 页数:19 大小:695KB 下载积分:10 金币
下载 相关 举报
网上购书系统课程设计-毕业论文.doc_第1页
第1页 / 共19页
网上购书系统课程设计-毕业论文.doc_第2页
第2页 / 共19页


点击查看更多>>
资源描述
课 程 设 计 课程名称___数据库 __________ 题目名称___网上购书系统_______ 学生学院____计算机____________ 专业班级 学 号 学生姓名 指导教师_______左亚尧________ 2012年 1 月 16 日 1 引言 3 1.1课程设计选题 4 1.2 课程设计的目的 4 1.3 本选题的背景 4 2 系统分析和设计 4 2.1 功能及性能分析 4 2.1.1 功能需求 4 2.1.2 性能需求 4 2.1.3 数据流图 5 2.2 系统的开发环境 5 2.3 系统的总体设计 6 3 数据库设计 6 3.1 数据库概念结构 7 3.1.1 数据库中各表的数据描述如下: 7 3.1.2 E-R图(各表ER图关系) 9 3.2 数据库逻辑结构 10 3.2.1 关系模型及优化 10 3.2.2 视图的设计 10 3.3 数据库的实现 10 3.3.1 表 10 3.3.2 安全性设计 11 3.3.3 一般性设计 11 4 详细设计与实现 14 4.1 文件目录结构设计及说明 14 4.2 注册模块程序说明 15 4.3 登录模块程序说明 15 4.4 购物车模块说明 16 4.5 书籍管理模块 18 结论 21 参考文献 21 1 引言 1.1课程设计选题 《网上购书系统》 1.2 课程设计的目的 通过数据库系统课程设计,熟悉了Mysql数据库管理系统的结构与组成;掌握了Mysql数据库管理系统的应用技术和的使用;应用ASP开发工具实践了《在线考试系统》的数据库应用系统的设计方法、开发过程和SQL SERVER数据库的管理与维护。最终达到掌握数据库管理系统的使用和开发,提高分析问题、解决问题和实践应用能力。 1.3 本选题的背景 随着互联网的普及和发展,电子商务在互联网的潮流中扮演着重要的角色,改变着人们的日常生活情况。网上购物不仅是一种潮流也是对人们的生活有巨大的的便利。我们不乏看到许多的百货的电子商务商城,本课程设计是设计一个网上购书系统,让买书在互联网进行。 2 系统分析和设计 2.1 功能及性能分析 2.1.1 功能需求 主要功能需求主要有: l 产品(书籍)管理:主要是书籍的管理,管理书籍的名称、书籍介绍、价格等,主要是管理员有此权限。 l 订单管理:主要功能是把会员通过网站订购的产品,以列表的形式展示出来,并且能够修改记录的状态,来区分未结算订单和结算订单之间的状态。 l 会员管理:主要包括会员注册、登录等,以及会员登录后提供的结算功能。令会员有购物车管理的功能。 l 商品搜索:提供搜索框,给予搜索功能。主要根据用户输入的关键字,搜索与关键字匹配的产品名称和介绍。 2.1.2 性能需求 数据一致性:一旦管理员增加了书籍在商品库中,会员能够实时的看到,体现数据的一致性。用户增加到购物车的书籍要实时增加,购物车中的书籍一旦经过结算应当改变相应的状态。 2.1.3 数据流图 网上购书系统整体流图如下: 2.2 系统的开发环境 开发平台与运行环境:Windows7 + PHP5.4.3 + Mysql5.5.24 + Apache2.2.22 2.3 系统的总体设计 总体布局和框架 各个功能设计流程图略。 以下为网站包含文件(共13个文件夹和14PHP应用脚本程序,详细在详细设计中给出) 3 数据库设计 3.1 数据库概念结构 3.1.1 数据库中各表的数据描述如下: Ø 产品数据表(o_product):产品数据表用于记录管理员上传的产品信息,有产品名称,产品介绍,市场价,商城价。如下: 字段 数据类型 长度 NULL 默认值 字段说明 id int 4 Not null Auto_increment 产品编号 自增 title varchar 200 null 产品名称 intro text null 产品介绍 price int 6 Null 市场价格 mprice int 6 null 商城价格 fileid varchar 200 null 附件id commend varchar 10 null 推荐 images varchar 200 null 图片名称 Ø 产品附件数据表(o_files):产品附件数据库,用于保存与产品相关的图片文件信息。 字段 数据类型 长度 NULL 默认值 字段说明 id int 4 Not null Auto_increment 编号 自增主键 fileid varchar 200 null 产品id filetitle varchar 255 null 附件标题 filename varchar 200 Null 文件名称 filetype varchar 200 null 文件类型 Ø 会员数据表(o_members):会员数据表,用于记录网站会员的登录,以及姓名、电话、地址等信息。 字段 数据类型 长度 NULL 默认值 字段说明 id int 4 Not null Auto_increment 会员编号自增主 email varchar 200 null 注册email password varchar 255 null 会员密码 nickname varchar 100 Null 昵称 truename varchar 100 null 真实姓名 sex int 4 null 性别 telphone varchar 100 null 固定电话 mobile varchar 100 null 移动电话 address text null 通讯地址 admin int 4 null 是否为管理员 Ø 订单数据表(o_order):会员结算后,产生的购物清单保存在订单数据表中,便于管理人员查看会员已经购买的物品。 字段 数据类型 长度 NULL 默认值 字段说明 id int 4 Not null Auto_increment 订单编号自增主 pid int 4 null 产品id mid int 4 null 会员id price int 6 Null 价格 number Int r 4 null 数量 total int 6 null 总价 over int 4 null 是否购买 3.1.2 E-R图(各表ER图关系) 3.2 数据库逻辑结构 3.2.1 关系模型及优化 所有的表都是自增主键ID,所以都符合3NF,无需另外优化 3.2.2 视图的设计 无视图设计 3.3 数据库的实现 3.3.1 表 该系统共设置了四个表目,各表目结构如下: Ø 产品数据表(o_product):产品数据表用于记录管理员上传的产品信息,有产品名称,产品介绍,市场价,商城价。 Ø 产品附件数据表(o_files):产品附件数据库,用于保存与产品相关的图片文件信息。 Ø 会员数据表(o_members):会员数据表,用于记录网站会员的登录,以及姓名、电话、地址等信息。 Ø 订单数据表(o_order):会员结算后,产生的购物清单保存在订单数据表中,便于管理人员查看会员已经购买的物品。 3.3.2 安全性设计 权限的设置,只有管理员有插入新图书的权限。 3.3.3 一般性设计 主要是对数据库表的两种完整性进行设计: 实体完整性:通过设置主键都已实现。 参照完整性:产品数据表与产品附件数据表相联系,插入、删除、和更新数据都要同步,会员表和订单表相联系 建表主要代码: SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; -- -- 数据库:'onlinestort' -- -- -------------------------------------- -- -- 表的结构:'o_product' -- CREATE TABLE `o_product` ( `id` int(4) NOT NULL auto_increment, `title` varchar(200) default NULL, `intro` text, `price` int(6) default NULL, `mprice` int(6) default NULL, `fileid` varchar(200) default NULL, `commend` varchar(10) default 'NO', `images` varchar(200) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; -- -- 表的结构:'o_files' -- CREATE TABLE `o_files` ( `id` int(4) NOT NULL auto_increment, `fileid` varchar(200) default NULL, `filetitle` varchar(255) default NULL, `filename` varchar(200) default NULL, `filetype` varchar(100) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; -- -- 表的结构'o_members' -- CREATE TABLE `o_members` ( `id` int(4) NOT NULL auto_increment, `email` varchar(200) default NULL, `password` varchar(200) default NULL, `nickname` varchar(100) default NULL, `truename` varchar(100) default NULL, `sex` int(4) default NULL, `telphone` varchar(100) default NULL, `mobile` varchar(100) default NULL, `address` text, `admin` int(4) default '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; -- -- 表的结构 'o_order' -- CREATE TABLE `o_order` ( `id` int(4) NOT NULL auto_increment, `pid` int(4) default NULL, `mid` int(4) default NULL, `price` int(6) default NULL, `number` int(4) default NULL, `total` int(6) default NULL, `over` int(4) default '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; 4 详细设计与实现 4.1 文件目录结构设计及说明 根目录下包含17个对象,三个文件夹和14个PHP应用脚本程序。 Index.php:网站首页 Cart.php:购物车程序 Global.php:全局配置文件,数据库配置等 Login.php:登录认证程序 Product.php:书籍列表程序 Regiseter.php:用户注册 Search.php:书籍搜索 Store.php:书籍详情页面 User.php:用户密码修改 User_order.php:用户订单管理 User_product.php:用户书籍管理 User_product_upload.php:书籍图片上传程序 Class:核心类程序文件夹 Folder:书籍图片上传文件夹 Templates:页面模板文件存放文件夹 网站首页: 4.2 注册模块程序说明 用户点击首页导航注册按钮,则会跳转到regiseter.php页面,填写表单进行注册,这时与会员数据表(o_member)进行交互,如果没有出现用户名重名,邮箱重复使用等情况则可通过注册。如下图: 4.3 登录模块程序说明 用户点击首页导航登录按钮,进入登录页面,输入登录邮箱和密码,如果邮箱和密码与会员数据表的数据相符则会提示登录成功,并跳转到修改密码页面。如下图 登录成功后: 4.4 购物车模块说明 用户在书籍列表中选择书籍后进入书籍详细页,选择放入购物车按钮,书籍进入用户购物车页面内。购物车模块有结算功能,用户在购物车页面的书籍复选框中选择商品勾选,勾选完毕后即可点击结算按钮。 代码: <?php session_start (); include 'global.php'; //获取以GET方法传递到本页的数据 if (isset ( $_GET ["id"] )) { $g->setSql ( "select id,title,mprice from #_product where fileid = '" . strval ( $_GET ["id"] ) . "'" ); $p = NULL; $g->loadObject ( $p ); $cart->addItem ( $p->id, $p->title, 1, $p->mprice ); } //获取以POST方法传递到本页的数据 if (isset ( $_POST ["do"] )) { switch ($_POST ["do"]) { case "cart" : if (count ( $_POST ["cid"] ) > 0) { foreach ( $_POST ["cid"] as $v ) { $g->setSql ( "select id,title,mprice from #_product where id = '" . $v . "'" ); $p = NULL; $g->loadObject ( $p ); $cart->addItem ( $p->id, $p->title, 1, $p->mprice ); } } break; case "delete": if(count($_POST["cid"])>0){ foreach($_POST["cid"] as $v){ $cart->removeItem($v); } } break; case "order" : if(isset($_SESSION["i"])){ $cartArray = $cart->listArray(); if(count($_POST["cid"])>0){ $total = 0; foreach($_POST["cid"] as $id){ $order = ""; $order["pid"] = $cartArray[$id]["id"]; $order["mid"] = $_SESSION["i"]["id"]; $order["price"] = $cartArray[$id]["price"]; $order["number"] = $cartArray[$id]["number"]; $sprice = $cartArray[$id]["price"]*$cartArray[$id]["number"]; $order["total"] = $sprice; $g->insertObject("#_order",$order); $total += $sprice; } //清空购物车数据 $cart->clear(); //显示结算数据,并返回首页 $g->alert("结算成功,共计费用:".$total."元","index.php",5); }else{ $g->alert("请选择确定购买的产品","cart.php",1); } }else{ $g->alert("注册用户请 <a href='login.php'>登录</a> 后再进行结算,非注册用户请 <a href='register.php'>注册</a> 后再登录。","login.php",5); } break; } } ?> 4.5 书籍管理模块 书籍管理模块涉及到产品数据表和产品附件数据表的操作,书籍管理模块为会员管理表admin 表项为1的用户拥有。用于管理上传图书信息,插入产品数据表和产品附件数据表。 如下图: 用例:增加一本叫做《人人都是产品经理》的书: 效果如下: 代码: <?php //表单处理代码 if(isset($_POST["do"])){ $action = strval($_POST["do"]); $error = ""; switch($action){ case "addProduct": $f = $_POST; if($f["title"]==""){ $error .= "书籍名称不能为空<br>"; } $g->setSql("select id from #_product where title = '".$f["title"]."'"); $g->query(); if($g->getLines()>0){ $error .= "产品已经存在<br>"; } if($error==""){ /*****创建文件夹代码开始****/ $path = $pathSign = "/"; $path = "folder/".$uid."/".date("Y")."/".date("m")."/".date("d"); $dirArray = explode ( $pathSign, $path."/thumbnail" ); $tempDir = ''; foreach ( $dirArray as $dir ) { $tempDir .= $dir . $pathSign; $isFile = file_exists ( $tempDir ); clearstatcache (); if (! $isFile && ! is_dir ( $tempDir )) { @mkdir ( $tempDir, 0777 ); } } /******创建文件夹代码结束***/ $p["title"] = $f["title"]; $p["intro"] = $f["intro"]; $p["price"] = $f["price"]; $p["mprice"] = $f["mprice"]; $p["fileid"] = md5(time().$uid); $p["commend"] = $f["commend"]; $p["images"] = $path; $g->insertObject("#_product",$p); $g->alert('添加书籍成功','user_product.php',1); }else{ $g->alert($error,'user_product.php'); } break; case "delete": if(count($_POST["cid"])>0){ foreach($_POST["cid"] as $k=>$v){ $g->setSql("delete from #_product where id = '".$v."'"); $g->query(); } echo '删除成功'; }else{ echo '请选择要删除的记录'; } break; case "commend": if(count($_POST["cid"])>0){ foreach($_POST["cid"] as $k=>$v){ $g->setSql("update #_product set commend = 'YES' where id = '".$v."'"); $g->query(); } echo '推荐成功'; }else{ echo '请选择要上传图片的记录'; } break; case "upload": if(count($_POST["cid"])>0){ $upid = end($_POST["cid"]); $g->setSql("select fileid from #_product where id = '".$upid."'"); $g->query(); $up = $g->loadRow(); echo '<script>window.location.href="user_product_upload.php?upid='.$up[0].'";</script>'; }else{ echo '请选择要推荐的记录'; } break; } } ?> <!---------产品列表开始---------> <?php $header = array("ID","书籍名称","市场价","商城价","推荐"); $g->setSql("select id,title,price,mprice,commend from #_product"); $g->query(); $data = $g->loadRowList(1); $toolbar = array( "delete" =>array("value"=>"删除","action"=>""), "commend" =>array("value"=>"推荐","action"=>""), "upload" =>array("value"=>"上传图片","action"=>"user_product_upload.php") ); echo $table->normal($header,$data,true,$toolbar); ?> 结论 本网站是网上购书系统,我是参照网上购物系统来做的,经过测试,还有一个写Bug存在,比如在上传书籍图片上存在问题,会出现图片上传成功,缩略图的转化还不成功的情况,具体原因还有待debug。另外一个问题就是结算后出现的页面产生乱码,理想状态是应该显示结算成功,并给出结算金额,这都有待接下来的继续探索。这次课程设计操作采用了PHP+Mysql的模式,收获很多,了解到了数据库功能的强大,能支撑起一个系统的流畅运行。虽然数据库的设计有固定的步骤,不过我还是认为要灵活使用各个步骤,做到敏捷的开发。我想在这次课设的原型上继续完善系统,做一个大学城的图书分享网站的设计。希望能借此继续加强自己的数据库设计能力。 参考文献 [1] 潘凯华,刘中华. PHP 开发实战1200例(第一卷). 清华大学出版社,2011.01 [2] Ryan stephens,Ron Plew,Arie D.Jones著,王 崧 等译. 轻松掌握SQL 第五版.电子工业出版社,2009.10 19
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服