




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书题目:网上书店系统设计院 系:信息技术系 专业班级: 08计算机科学与技术学 号: 学生姓名: 指导教师: 2010年 6月 20日目 录1 系统概述11.1.1开发背景21.1.2 可行性分析21.1.3系统需求分析22 设计任务书3 2.1 研究方案和目标3 2.2 任务要求和主要内容33.本组课题及本人任务34.系统总体设计44.1系统规划44.2用户行为分析44.3系统功能设计55.系统详细设计65.1设计目标65.2构建开发环境65.3模块的详细设计75.3.1模块的创建7 数据库模块的创建7 创建图书表信息7 图书信息类别表的创建8 用户的创建8 创建购物车信息8 创建管理员信息表9 创建订单信息表95.3.2模块的实现9 用户登录及其注册9 书籍的详细信息10 书籍类别信息10 书籍的会员打折12 书籍的搜索功能12 用户购物车13 用户信息管理176数据库设计与实现187主要数据表结构20网上书店系统设计1 系统概述1.1.1开发背景 internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。作为internet上一种先进的,易于被人们所接受的信息检索手段,world wide web(简称www)发展十分迅速,成为目前世界上最大的信息资源宝库。据估计,目前internet上已有上百万个web站点,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,建设一个好的web站点对于一个机构的发展十分重要。近年来,随着网络用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术在internet中的广泛应用,web站点向用户提供的服务将越来越丰富,越来越人性化。我们发现这样一个事实,一个用户在访问一个网站时一般来讲只对该网站的部分内容感性趣,而且这种兴趣会持续一段时间。这点启发了我们,如果能根据用户的喜好为不同的用户显示其个性化的页面,即着重显示该用户感兴趣的内容,将为用户节约大量的检索时间,而且这样的网页显然是更具有吸引力的。一些站点已经在这方面作出了一定的尝试,通常采用的方法是,在用户登陆时为其提供一系列的选项,使用户能够对站点进行一些自主的设置。这样做能够使站点呈现一定程度的个性化,但是对用户来讲,还是比较烦琐,而且在用户了解一个站点前让其对站点进行设置,其结果未免有些粗糙。于是我们构想了这样一种方案,对用户登陆后的动作进行跟踪,分析,发掘用户点击的规律,即用户先后点击的关联规则,这样,在用户点击一个主题(链接)之后,系统能够自动生成一页面,其中包含了该主题下用户经常关注的内容(若干链接),这样便在无须用户作出任何额外工作的情况下实现了为用户量身订做的个性化页面。要实现这样的功能,离不开后台数据库的支持。用户验证信息,收集到的用户点击信息,主题层次信息,分析得出的关联规则表等大量的数据都由数据库管理系统管理。本文中数据库服务器端采用了microsoft access数据库作为odbc(open database connectivity )数据源,并以先进的ado(activex data objects)技术进行数据库存取等操作,使web与数据库紧密联系起来。整个个性化页面生成系统主要由使用dreamweaver_mx开发的关联规则采掘系统和利用iis+asp技术实现的个性化web页面生成器两部分组成。关联规则采掘系统对数据库中的历史记录进行分析,产生用户关联规则表;页面生成器则负责记录用户行为和根据关联规则表动态生成用户个性化web页面。二者通过数据库服务器和web服务器连接。本文作者主要完成web服务器端的用户管理、图书目录管理、图书信息录入管理、书店定单管理、图书的浏览和查找、书店购物结帐功能模块的设计、实现与完善以及整个实验网站的组织建立和测试工作。国外的web商务系统应用起步较早,所以应用的领域比较广,网络销售已经 在人们日常消费中占到一定比例,web商务系统也比较成熟。人们可以以网络这个媒体,足不出户就可以搜索、查询到自己需要的信息、购买自己需要的商品。我国电子商务的发展起源于70年代的edi应用,我国海关是最早引入edi进行报关,经过几年的完善发展目前企业可以通过上网申请报关。1.1.2 可行性分析技术可行性:该系统是基于web的b/s结构的系统,服务器端程序采用asp脚本语言,数据库采用sql server 2008。asp脚本语言和sql server 2008的结合完全可以完成系统的目标,并且系统开发人员目前已经掌握两上述两个工具,所以该系统的开发在技术上是可行的。时间可行性:开发时间需要1个月左右,前20天主要用于系统分析、设计、实现,后10天主要用于对系统进行调试和测试。人员可行性:本系统的开发需要2人,一人负责系统前台普通用户模块的开发,另一人负责系统后台管理用户模块的开发,开发小组经过短期学习和培训是可以达到人员要求的。1.1.3系统需求分析l 由于用户的计算机水平有限,要求有良好的人机交流界面。l 管理系统会员,由于网站采用了会员系统,要求有较好的权限管理。l 数据计算自动完成,尽量减少人工干预。l 用户购买完书籍后能够安全退出系统。2 设计任务书2.1 研究方案和目标网上书店系统属于b2c电子商务网站系统,它能够绕过中介(如批发商、销售商或经销商)建立与客户的直接联系,可以为用户提供书籍的详细信息,用户可以在线购买书籍,管理购物车,确定订单。本题目是设计一个软件系统,按照软件工程的一般方法和过程,从软件需求分析开始,经过概要设计、详细设计,最后选择相应的开发平台或工具设计出实现系统功能的软件系统。本系统架构可采用b/s/s(browser/web server/db server)三层结构,即基于web的文件访问。客户端采用通用的浏览器。后台数据管理可采用access、sql server等,设计相应的数据库,实现数据的存储。设计的主要内容在web server端选择相应的脚本编写技术或web应用程序设计语言设计实现系统功能的程序。2.2 任务要求和主要内容根据学院科技处对学院教师科研工作的管理流程的分析,开发出一个b/s结构的系统。本系统功能基本要求在以下几个方面:1. 系统前台,即普通用户模块。普通用户能够注册、修改、自己的用户信息,浏览、查询网站图书情况,并进行图书的订购。2. 系统后台管理,即管理员用户模块。管理员能够对普通用户提交的信息进行审核并作出审核标记记入数据库中,能够对普通会员的账户进行管理,对图书信息进行管理,对会员的订单信息进行处理。3.本组课题及本人任务本组课题为实现创建、运行一个网上书店,进行网上书店的运行(有用户并产生订单),并对书店进行维护,调整,对用户的操作、网站运行、图书的管理、订单的处理。本人任务是对网站的前台系统进行设计,模块的实现:实现前台的用户注册、基本信息管理、用户登录、书籍信息显示、书籍的搜索功能、用户购物车管理、订单模块。本人的所有开发工作都要围绕该模块的需求来做。4.系统总体设计4.1系统规划根据网上书店系统的功能需求,可以将其分为前台网站系统和后台管理系统两大部分。l .前台网站系统 前台网站系统主要包括以下基本功能模块:l 用户注册功能模块l 用户基本信息管理功能模块l 用户登录功能模块l 书籍信息限售股功能模块l 书籍搜索功能模块l 用户购物车管理模块l 用户订单管理模块l 后台管理系统后台管理系统主要包括以下基本功能模块:l 管理员对用户信息管理模块l 图书信息管理模块l 对用户订单处理模块4.2用户行为分析在实现本网上书店系统之前,需要从用户的角度进行用户行为分析,进而确定系统的目标。网络用户在使用网上书店购图书时,典型行为如 图14.3系统功能设计网上书城前台网站系统功能结构网上书城后台网站系统功能结构5.系统详细设计5.1设计目标 本系统是为了方便用户实现网上购书而设计的,采用人机对话的方式,界面友好,浏览查询图书准确快速。并且系统采用了sql sever2008作为后台数据库,数据存储安全可靠。 1)对于前台网站用户,实现如下功能:l 图书查询、浏览功能l 用户购买图书功能l 用户购物车管理l 系统运行稳定,安全可靠 2)对于后台网站用户,实现如下功能:l 后台管理人员的管理l 会员信息管理l 图书及图书类别管理l 订单的处理,对用户的订单实时的发货5.2构建开发环境 1)开发环境l 网站开发环境:microsoft visual studio 2008 sp1l 网站开发语言:asp.net+c#l 网站后台数据库:sql sever 2008 2)服务器端l 操作系统:windows 2003 sever l web服务器:iis 6.0l 数据库服务器:sql sever 2008l 浏览器:ie 6.0l 网站服务器运行环境:m framework sdk v2.0 3)客户端l 浏览器: ie6.0l 分辨率:最佳效果1024*7685.3模块的详细设计5.3.1模块的创建数据库模块的创建use mastergoif exists (select namefrom sys.databasewhere name= nwebshop)drop database webshopgocreate database webshopon primary(name = n webshop_data,filename = nd:webshop_data.mdf,size =5120kb,maxsize=unlimited,filegrowth=10%)log on(name =nwbdshop_log,filename = nd:webshop_data.log,size =1024kb,maxsize=2048gb,filegrowth=1024kb)go创建图书表信息 create table book( bookid int identify(1,1) primary key,category varchar(50),name varchar(100)not null,author varchar(30)not null,part varchar(50)not null,publisher varchar(100)not null,price decimal(9)not null,discount decimal(9),pic varchar(100)not null,descriptions text not null,hits int null,statuss bit default(1))图书信息类别表的创建create table dbo.category(id int identity(1,1) not null,desn varchar(200) null,parentid int null,orderby int null,remark text null, constraint pk_category primary key clustered (id asc)with (ignore_dup_key = off) on primary) on primary textimage_on primaryend用户的创建create table dbo.userinfo(userid int identity(1,1) not null,username varchar(50) null,pwd varchar(255) null,address varchar(200) null,email varchar (30) not null,constraint pk_user primary key clustered (id asc)with (ignore_dup_key = off) on primary) on primary textimage_on primaryend创建购物车信息create table dbo.cart(id int identity(1,1) not null,orderno varchar(50) null,userid int null,totalnumber int null,totalmoney money null,orderdate datetime null,state int null, constraint pk_orderform primary key clustered (id asc)with (ignore_dup_key = off) on primary) on primaryend创建管理员信息表 create table admins(adminid int identity(1,1) primary key,name varchar(30) not null,pwd varchar(50) not null,)创建订单信息表create table orders(orderid int identity(1,1)primary key,username varchar(50) not null,bookname varchar(50) not null,amount int not null,orderdate datetime default (getdate() not null,ststus bit default(0) not null, )5.3.2模块的实现用户登录及其注册public partial class register : system.web.ui.page protected void page_load(object sender, eventargs e) if (!ispostback) /产生验证码 lblvalidator.text = new randomcode().randomnum(4); protected void imagebutton2_click(object sender, imageclickeventargs e) / 判断验证码是否填写正确 if (this.txtvalidator.text.trim() = this.lblvalidator.text) string username = this.txtusername.text; string userpwd = this.txtuserpwd.text; string useremail = this.txtuseremail.text; users user = new users(); /调用用户类的adduser()方法,添加用户 user.adduser(username, userpwd, useremail); /注册成功提示,并跳转到首页 response.write(alert(恭喜您,注册成功,请登录!);location=default.aspx); else response.write(alert(验证码错误!); 书籍的详细信息public partial class bookdetail : system.web.ui.page protected void page_load(object sender, eventargs e) string bookid=request.querystringbookid; book book = new book(); sqldatareader dr=book.getbookinfo(bookid); this.detailsview1.datasource = dr; this.detailsview1.databind(); protected void linkbutton1_click(object sender, eventargs e) response.write(history(-1);); 书籍类别信息public partial class categoryview : system.web.ui.page protected void page_load(object sender, eventargs e) if (!ispostback) string connstr = configurationmanager.appsettingsconnstring; sqlconnection conn = new sqlconnection(connstr); string sql = select * from category; sqldataadapter dr = new sqldataadapter(select * from category, conn); dataset ds = new dataset(); dr.fill(ds, category); dataview dv = ds.tablescategory.defaultview; foreach (datarowview datav in dv) treenode tn = new treenode(); tn.text = datavname.tostring(); tn.value = datavcategoryid.tostring(); tn.expanded = false; this.treeview1.nodes.add(tn); conn.close(); string connstr2 = configurationmanager.appsettingsconnstring; sqlconnection conn2 = new sqlconnection(connstr2); conn2.open(); sqldataadapter dr2 = new sqldataadapter(select * from book where category=程序设计, conn2); dataset ds2 = new dataset(); dr2.fill(ds2, category); this.gridview1.datasource = ds2.tablescategory.defaultview; this.gridview1.databind(); protected void treeview1_selectednodechanged(object sender, eventargs e) /this.label1.text = this.treeview1.selectednode.text; string category = this.treeview1.selectednode.text; string connstr = configurationmanager.appsettingsconnstring; sqlconnection conn = new sqlconnection(connstr); conn.open(); sqldataadapter dr = new sqldataadapter(select * from book where category= + category + , conn); dataset ds = new dataset(); dr.fill(ds, category); this.gridview1.datasource = ds.tablescategory.defaultview; this.gridview1.databind(); protected void gridview1_pageindexchanging(object sender, gridviewpageeventargs e) 书籍的会员打折public partial class discountbook : system.web.ui.page protected void page_load(object sender, eventargs e) showall(); public void showall() database db = new database(); string sql = select * from book where part=特价书籍; dataset ds = db.getdataset(sql); this.gridview1.datasource = ds; this.gridview1.databind(); db.closeconn(); 书籍的搜索功能public partial class searchbook : system.web.ui.page protected void page_load(object sender, eventargs e) string searchbook = request.querystringname.tostring(); database db = new database(); /string sql = select * from book where name like %+searchbook+%; string sql = select * from book where name = + searchbook ; dataset ds= db.getdataset(sql); if (ds = null) response.write(alert(抱歉,无相关记录); this.label1.text = 抱歉,无相关记录!; else this.gridview1.datasource = ds; this.gridview1.databind(); 用户购物车public partial class usercart : system.web.ui.page protected void page_load(object sender, eventargs e) if (convert.tostring(sessionusername) =) response.write(alert(请先注册或登录!);location=default.aspx); else if (!ispostback) if (request.querystringbookid != null) string bookname = convert.tostring(request.querystringbookid); decimal price = convert.todecimal(request.querystringprice); string username = convert.tostring(sessionusername); cart cart = new cart(); cart.add(username, bookname,price); showall(); public void showall() cart cart = new cart(); dataset ds = cart.getusercart(convert.tostring(sessionusername); this.gridview1.datasource = ds; this.gridview1.databind(); protected void gridview1_rowcancelingedit(object sender, gridviewcancelediteventargs e) gridview1.editindex = -1; showall(); protected void gridview1_rowdatabound(object sender, gridviewroweventargs e) protected void gridview1_rowdeleting(object sender, gridviewdeleteeventargs e) int cartid = convert.toint32(gridview1.datakeyse.rowindexcartid.tostring(); cart cart = new cart(); cart.del(cartid); showall(); protected void gridview1_rowediting(object sender, gridviewediteventargs e) gridview1.editindex = e.neweditindex; protected void gridview1_rowupdating(object sender, gridviewupdateeventargs e) /更新操作 int cartid =convert.toint32( gridview1.datakeyse.rowindex.values0); int amount = convert.toint32(textbox)(gridview1.rowse.rowindex.findcontrol(txtamount).text); cart cart = new cart(); cart.update(amount, cartid); gridview1.editindex = -1; showall(); protected void gridview1_rowdeleting1(object sender, gridviewdeleteeventargs e) int id =convert.toint32( gridview1.datakeyse.rowindex.values0); cart cart = new cart(); cart.del(id); gridview1.editindex = -1; showall(); protected void gridview1_rowcancelingedit1(object sender, gridviewcancelediteventargs e) gridview1.editindex = -1; showall(); protected void gridview1_rowediting1(object sender, gridviewediteventargs e) gridview1.editindex = e.neweditindex; showall(); /编辑购书数量 protected void gridview1_rowupdating1(object sender, gridviewupdateeventargs e) int id = convert.toint32(gridview1.datakeyse.rowindex.values0); int amount = convert.toint32(textbox)gridview1.rowse.rowindex.findcontrol(txtamount).text); cart cart = new cart(); cart.update(id,amount); gridview1.editindex = -1; showall(); protected void gridview1_pageindexchanging(object sender, gridviewpageeventargs e) gridview1.pageindex = e.newpageindex; showall(); protected void gridview1_selectedindexchanged(object sender, eventargs e) protected void ckb_all_checkedchanged(object sender, eventargs e) checkbox chkall = (checkbox)gridview1.headerrow.cells0.findcontrol(ckb_all); if (chkall.checked) foreach (gridviewrow gr in gridview1.rows) checkbox chk = (checkbox)gr.cells0.findcontrol(ckb_select); if (!chk.checked) chk.checked = true; else foreach (gridviewrow gr in gridview1.rows) checkbox chk = (checkbox)gr.cells0.findcontrol(ckb_select); if (chk.checked) chk.checked = false; /清空购物车 protected void imagebutton2_click(object sender, imageclickeventargs e) /imagebutton2.attributes.add(onclick,javascript:return confirm(sure?); imagebutton2.attributesonclick = javascript:return confirm(确认清空吗?); cart cart = new cart(); string username = sessionusername.tostring(); cart.clear(username); showall(); /用户将所选书籍下达为订单 protected void imagebutton3_click(object sender, imageclickeventargs e) foreach(gridviewrow gr in gridview1.rows) try checkbox chk = (checkbox)gr.cells0.findcontrol(ckb_select); label lblamount = (label)gr.cells4.findcontrol(lblamount); string bookname = gr.cells2.text; int amount = convert.toint32(lblamount.text); int id = convert.toint32(gr.cells1.text); string username = sessionusername.tostring(); if (chk.checked) orders order = new order
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025安徽蚌埠市怀远县教育局所属事业单位紧缺专业人才引进(校园招聘)15人模拟试卷附答案详解(模拟题)
- 2025内蒙古赤峰市红山区崇文实验学校教师招聘14人模拟试卷完整答案详解
- 2025湖南资兴市面向本市农村订单定向医学生、基层医疗卫生机构本土化专科层次人才培养医学生考核招聘15人考前自测高频考点模拟试题及答案详解(考点梳理)
- 广本安全驾驶课程培训课件
- 协议书协议书5篇
- 广播电视基础知识课件
- 2025年三亚市直属学校赴高校面向2025年应届毕业生招聘81人模拟试卷(含答案详解)
- 小学学生安全培训总结课件
- 小学外出培训安全承诺书课件
- Hydroxylamine-生命科学试剂-MCE
- 2025鄂尔多斯市城市建设投资集团招聘92人考试参考题库及答案解析
- 国家中医药管理局《中医药事业发展“十五五”规划》全文
- 2025年全国企业员工全面质量管理知识竞赛题库及答案(共132题) - 副本
- GB/T 23904-2009无损检测超声表面波检测方法
- GB/T 18043-2013首饰贵金属含量的测定X射线荧光光谱法
- 海绵城市总结课件
- 农产品增值税进项税额核定扣除办法课件
- 压疮预防及护理操作流程
- 政治学基本原理-精选课件
- 会计学全套课件第一学期公开课一等奖省优质课大赛获奖课件
- 公开课第一课素描基础入门课件
评论
0/150
提交评论