网上购书系统课程设计-毕业论文.doc
《网上购书系统课程设计-毕业论文.doc》由会员分享,可在线阅读,更多相关《网上购书系统课程设计-毕业论文.doc(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- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网上 购书 系统 课程设计 毕业论文
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文