WEB技术 课 程 设 计
设计题目: 网上书店系统 学 期: 专业班级: 学 号: 姓 名: 成 绩:
目录
1、概述 .................................................................... 3
1.1简介..……………………………………………………………………………………...3
1.2网站的建设.………………………………………………………………………………3 2、可行性分析 .............................................................. 3
2.1网站建设目标的管理可行性 ............................................ 3 2.2网站建设目标的经济可行性…………………………………………………………..3 2.3网站建设目标的技术可行性……………………………………………………………3
2.4网站建设目标可能存在的问题…………………………………………………………3 3、需求分析 ................................................................ 3
3.1目标客户描述 ....................................................................................................................... 3 3.2网站为用户提供的服务 ....................................................................................................... 4 3.3网站的结构组织……………………………………………………………………………4
3.4网站的技术实现方式……………………………………………………………………..4 3.5网站的网页框架结构分析与设计………………………………………………………. 4、网站建设概要设计 ........................................................ 4 4.1网站的数据模型分析与设计………………………………………………………………4 4.2网站的功能模型分析与设计………………………………………………………………5 4.3网站的网页框架结构分析与设计…………………………………………………………8 5、网站的建设详细设计 ...................................................... 9
5.1 网站的数据库设计 ............................................................................................................ 9 5.2网站的程序文件设计与编写 ............................................................................................. 11
6.网站的程序调试与运行………………………………30 参考文献…………………………………………………33
题目
1.概述
1.1简介
网络书店时一个基于Internet的网上图书销售程序。本系统经过测试基本上没有什么大的错误,
但是一些功能限于时间问题暂时还未实现,有待进一步开发和改进。 1.2 网站建设的目标
用户可以 Internet登陆书店,浏览其中的图书信息,可以将书店中感兴趣的书加入到购物车中,可以对要买的书下订单。系统管理员会处理订单。通过此系统,采用B2C进行电子商务交易。
2.可行性分析
2.1网站建设目标的管理可行性
开发此网站在于建立一个操作简单的在线售书系统,方便管理人员简单化售书,方便消费者查看自己需要的图书,与网站管理者联系。及时提出自己的需求。而管理人员也不必 时刻值守于电脑前。
2.2网站建设目标的经济可行性
网站建设只需租用一台服务器,一台电脑,网站管理人员只需一两个即可,程序简单,实现起来花费很少。服务器的运行维护较简单,维持运行费用较低。市场推广费用也较少。
2.3网站建设目标的技术可行性
采用的工具:
1、 Microsoft Visual Studio.NET 2005,试用C#语言和ASP.NET开发 2、 Microsoft SQL Server2000
2.4网站建设目标可能存在的问题
忽视其中出现意外情况可能带来的风险,忽视了网站宣传需要的费用。
3.需求分析
3.1目标客户描述
本系统操作简单面向全国可在网上消费的客户,目标客户即为需要操作简单的销售系统的网上书店管理人员。
3.2网站为用户提供的服务
根据用户需求,系统设计的主要功能如下: 1、 向用户提供图书浏览
2、 用户可以根据多种方式查询自己喜爱的图书 3、 用户可以把自己想买的书添加到购物车 4、 用户可以对图书进行评论
在需求分析中,主要采用业务流程图、数据流程图、数据字典等工具进行描述和分析。
3.3网站的结构组织
系统采用从上到下的结构化系统开发方法,分为三个阶段:系统分析、系统设计、系统实施。程序结构为B/S结构。
3.4网站的技术实现方式
系统采用从上到下的结构化系统开发方法,分为三个阶段:系统分析、系统设计、系统实施。程序结构为B/S结构。
在 sqlserver 企业管理器中,建立,这个比较简单的,首先在 安全性--〉数据库链接 上点右键 ,在出现的菜单中点 新建数据库链接 ,然后会弹出一个界面,需要我们填写的有:链接服务器(这是一个名字,自己根据情况自行定义,以后就要通过他进行远程访问了),提供程序名称(这个就是选择数据驱动,根据数据库类型来选择,不能乱选,否则链接不上的),数据源(对于sqlserver就是远程数据库服务器的主机名或者IP,对于 oracle 就是在 oracle net config 中配置的别名),安全上下文用户和口令(也就是远程服务器的用户和口令)。
4.网站建设概要设计
4.1网站的数据模型分析与设计
图书相关信息表Book
字段 Id Type Name Author Translator Publisher Price Discount Cover Discription Hits Sales Status 说明 图书编号 图书类型Id 书名 作者 译者 出版商 价格 折扣 封面 图书介绍 点击次数 销量 库存状态 数据类型 Int(4) Int(4) Varchar(100) varchar(30) varchar(30) Varchar(100) Decimal(9) Decimal(9) Image(16) Text(16) Int(4) Int(4) *Bit(1) 备注 主键 外键,参考Booktype表 不可为空 不可为空 可为空 不可为空 不可为空 可为空 可为空 不可为空 可为空 可为空 默认值1
4.2网站的功能模型分析与设计
用户管理模块: (1)图书浏览
图书浏览 图书分类 (2)图书评论
热门图书 推荐图书 最新图书 图书评论 输入用户名 输入正确的的E-mail 输入标题和内容并提交
(3)缺书登记
缺书登记 登录页面 否 是否登录 输入信息提交
(4)购物车和图书订单
购物车 登录页面 否 是否登录 添加想要买的书 查看购物车的书 下订单购买
(5)图书搜索 (6)用户注册
注册用户 不存在 不合法 用户名是否存在 注册资料是否合法 注册用户资料
管理员操作模块: (1)账号管理
账号管理 要求以管理员身份登录 是否以管理员身份登录 否 是 浏览查看所有账户信息 进行管理
(2)图书管理
图书管理 要求以管理员身份登录 是否以管理员身份登录 否 是 浏览查看所有图书信息 添加图书 (3)订单处理
删除图书
订单处理 要求以管理员身份登录 是否以管理员身份登录 否 是 根据用户订单查找相应图书 组织送货、收款
(3)缺书处理
缺书处理 要求以管理员身份登录 是否以管理员身份登录 否 是 查看用户提交的缺书信息 购进新的图书
4.3网站网页框架结构分析与设计 类图(Class Diagram)是描述类、接口、协作以及它们之间关系的图,用来显示系统中各个类的静态结构。类图的设计是体现一个系统逐渐成形的标志,也是系统设计中最核心的部分。
5.网站建设详细设计
5.1网站数据库设计
1.图书类型表BookType
字段 说明 数据类型 备注 Id Name Memo 图书类型编号 类型名 备注 Int(4) Varchar(50) varchar(200) 主键 不可为空 可为空 2.图书评论表Comment
字段 Id BookId UserName E-mail Caption Content PublishDate 说明 评论编号 图书Id 评论者用户名 评论者E-mail 评论标题 评论内容 评论日期 数据类型 Int(4) Int(4) Varchar(50) Varchar(50) Varchar(100) Text(16) Datatime(8) 备注 主键 外键,参考Book表 可为空 可为空 可为空 不可为空 不可为空,默认getdate() 3.用户信息表UserInfo
字段 Id Name Password Mail 说明 用户编号 用户名 密码 E-mail 数据类型 Int(4) Varchar(30) Varchar(32) varchar(30) 备注 主键 不可为空 不可为空 不可为空 4.缺书登记表LackRecord
字段 Id UserId Name Publisher Reply 说明 用户Id 书名 出版商 管理员回复信息 数据类型 Int(4) Int(4) Varchar(50) Varchar(50) varchar(1000) 备注 主键 外键,参考UserInfo表 不可为空 不可为空 可为空 5.图书收藏表TempStore
字段 BookId UserId 说明 图书Id 用户Id 数据类型 Int(4) Int(4) 备注 主键,外键,参考Book表 主键,外键,参考UserInfo表 6.订单信息表Orders
字段 Id UserId OrderDate Status 说明 编号 用户Id 下订单日期 订单处理状态 数据类型 Int(4) Int(4) Datetime(8) Bit(1) 备注 主键 外键,参考UserInfo表 默认值getdate() 默认值0 7.订单细目信息表OrderDetails
字段 Id OrderId BookId Quantity 说明 订单Id 图书Id 图书数量 数据类型 Int(4) Int(4) Int(4) Int(4) 备注 主键 外键,参考Order表 外键,参考Book表 默认值1
5.2网站程序文件设计与编写
base.cs (基类:封装对数据库操作的方法)
public Base() { }
protected static int ExecuteSql(string strSQL) {
SqlConnection myCn = new SqlConnection(strConn);
// TODO: Add constructor logic here
SqlCommand myCmd = new SqlCommand(strSQL,myCn); try
}
{ }
catch(System.Data.SqlClient.SqlException e) { } finally { }
myCmd.Dispose(); myCn.Close();
myCn.Open();
myCmd.ExecuteNonQuery(); return 0;
throw new Exception(e.Message);
protected static int ExecuteSqlEx(string strSQL) {
SqlConnection myCn = new SqlConnection(strConn);
SqlCommand myCmd = new SqlCommand(strSQL,myCn); try {
myCn.Open();
SqlDataReader myReader = myCmd.ExecuteReader(); if(myReader.Read()) { } else {
return 0;
}
}
}
throw new Exception(\"Value Unavailable!\");
catch(System.Data.SqlClient.SqlException e) { } finally { }
myCmd.Dispose(); myCn.Close();
throw new Exception(e.Message);
protected static DataSet ExecuteSql4Ds(string strSQL) {
SqlConnection myCn = new SqlConnection(strConn); try { }
catch(System.Data.SqlClient.SqlException e) { } finally
myCn.Open();
SqlDataAdapter sda = new SqlDataAdapter(strSQL,myCn); DataSet ds = new DataSet(\"ds\"); sda.Fill(ds); return ds;
throw new Exception(e.Message);
}
{ }
myCn.Close();
protected static int ExecuteSqls(string[] strSQLs) {
SqlConnection myCn = new SqlConnection(strConn); SqlCommand myCmd = new SqlCommand(); int j=strSQLs.Length;//获取数组长度
try { }
catch(System.Data.SqlClient.SqlException e) { }
SqlTransaction myTrans = myCn.BeginTransaction();
throw new Exception(e.Message); myCn.Open();
try {
myCmd.Connection = myCn;
myCmd.Transaction = myTrans;//配置myCmd变量的属性
foreach(string str in strSQLs) {
myCmd.CommandText = str; myCmd.ExecuteNonQuery();
}
}
}
myTrans.Commit(); return 0;
catch(System.Data.SqlClient.SqlException e) { } finally { }
myCmd.Dispose(); myCn.Close();
myTrans.Rollback();
throw new Exception(e.Message);
}
#endregion
2.图书浏览模块
private void BindDataList()
private void initMessage() {
DataRow myDr;
myDr=myBook.GetBookDetail(int.Parse(ViewState[\"BookId\"].ToString())); lb_BookName.Text=myDr[\"name\"].ToString();
lb_BookType.Text=myDr[\"BookTypeName\"].ToString();
img_ClickCount.Width = Unit.Pixel(Convert.ToInt32(myDr[\"Hits\"].ToString())); lb_Image.Text=myDr[\"image\"].ToString ();
{ }
DataView myDv;
myDv=myComment.GetCommentByBookId(int.Parse(ViewState[\"BookId\"].ToString())); dl_Comment.DataSource =myDv; dl_Comment.DataBind();
lb_Author.Text=myDr[\"Author\"].ToString(); lb_Translator.Text=myDr[\"Translator\"].ToString(); lb_Press.Text=myDr[\"publisher\"].ToString(); lb_Price.Text=myDr[\"Price\"].ToString(); lb_Discount.Text=myDr[\"Discount\"].ToString(); if((bool)myDr[\"Status\"]) lb_Status.Text=\"Yes\"; else
lb_Status.Text=\"No\";
ta_Description.Value =myDr[\"Description\"].ToString();
}
lb_Description.Text=myDr[\"Description\"].ToString();
图书评论模块
public partial class Comment : System.Web.UI.UserControl {
DBProjectGuide.Book myBook = new DBProjectGuide.Book();
DBProjectGuide.Comment myComment = new DBProjectGuide.Comment(); protected void Page_Load(object sender, EventArgs e) {
DataView myDv1;//声明视图变量
System.Data.SqlClient.SqlDataReader myDr;//声明数据适配器 myDv1 = myComment.GetCommentTop10();//获得图书评论论信息 dg_CommentBook.DataSource = myDv1;//配置数据源 dg_CommentBook.DataBind();//绑定 } }
缺书登记模块
private void btnAdd_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
try {
DBProjectGuide.BookShop.LackRecord lr = new
DBProjectGuide.BookShop.LackRecord();
lr.UserId = int.Parse(Session[\"UserID\"].ToString()); lr.Name = this.txtName.Text.Trim(); lr.Publisher = this.txtPublisher.Text.Trim(); lr.Add();
}
}
ShowMsg(\"Add lack book record successful!\",0); Bind();
catch(Exception ex) { }
ShowMsg(ex.Message,1);
购物车订单模块
protected void btn_CleanCart_Click(object sender, System.EventArgs e)
{
System.Web.UI.WebControls.CheckBox tempCB;
HttpCookie cookie=new HttpCookie(\"HugoShopBookCart\"); for(int i=0;i if(!Object.Equals(tempCB,null)) { if (!tempCB.Checked) } } } { } string id; string count; id=dg_Cart.Items[i].Cells[0].Text; count=dg_Cart.Items[i].Cells[5].Text; if (count.Trim()==\"\") count=\"0\"; cookie.Values.Add(id,count); TimeSpan ts = new TimeSpan(0,0,10,0); cookie.Expires=DateTime.Now + ts; Response.AppendCookie(cookie); Response.Redirect(\"AddToCart.aspx\"); 图书搜索模块 private void btnSearch_Click(object sender, System.Web.UI.ImageClickEventArgs e) { string Name = this.txtName.Text; string Author = this.txtAuthor.Text.Trim(); string Translator = this.txtTranslator.Text.Trim(); string Publisher = this.txtPublisher.Text.Trim(); string TypeId = this.drp.Items[this.drp.SelectedIndex].Value; string str = \"\"; } if(int.Parse(TypeId)>=0) { } if(Author.Length>0) { } if(Name.Length>0) { } if(Translator.Length>0) { } if(Publisher.Length>0) { } Response.Redirect(\"GoSearch.aspx?Condition=\" + str); str += \" And Publisher Like '%\" + Publisher + \"%'\"; str += \" And Translator Like '%\" + Translator + \"%'\"; str += \" And Name Like '%\" + Name + \"%'\"; str += \" And Author Like '%\" + Author + \"%'\"; str += \" And TypeId=\" + TypeId; 用户注册模块 protected void Button1_Click(object sender, EventArgs e) { DBProjectGuide.BookShop.User user = new DBProjectGuide.BookShop.User(); try { user.Name = this.txtName.Text.Trim(); user.Password = this.txtPwd.Text.Trim(); user.Mail = this.txtEmail.Text.Trim(); user.Add(); this.lblInfo.Text = \"Register successful!\"; this.lblInfo.ForeColor = Color.Blue; this.HyperLink1.Visible = true; if (this.txtCity.Text.Trim() != \"\") { SetCityCookie(this.txtCity.Text); } } catch (Exception ex) { this.lblInfo.Text = ex.Message; } } } 账号管理模块(后台) private void btnDelete_Click() int i,j = DataGrid1.Items.Count; for(i=0;i sb.Append(DataGrid1.Items[i].Cells[3].Text.Trim()); sb.Append(\"','\"); { CheckBox cb = new CheckBox(); StringBuilder sb = new StringBuilder(); } string strNames = sb.ToString(); try { } catch { } lblInfo.Text = \"Delete failed!\"; DBProjectGuide.BookShop.User.DeleteGroup(strNames); lblInfo.Text = \"Delete accomplished!\"; Response.Redirect(\"ManageUser.aspx\"); private void btnCheckAll_Click() { CheckBox cb = new CheckBox(); } int i,j = DataGrid1.Items.Count; for(i=0;i 图书管理模块(后台) private void dg_Book_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { System.Web.UI.WebControls.Image TempImg; TempImg=(System.Web.UI.WebControls.Image)e.Item.FindControl(\"ib_delete\") ; if(object.Equals(TempImg,null)==false) { TempImg.Attributes.Add(\"onClick\",\"javascript:return confirm('你能确定要删除此书籍 类型吗?')\"); private void dg_Book_DeleteCommand(object source, } } System.Web.UI.WebControls.DataGridCommandEventArgs e) { int BookId; try { BookId=int.Parse(e.Item.Cells[0].Text.Trim()); MyBook.DeleteBookById(BookId); GridBind(); } catch(Exception er) { ShowErrMsg(er.Message) ; private void dg_Book_PageIndexChanged(object source, } private void ShowErrMsg(string err) { } string str; str=\"\"; ErrorMsg.Visible=true; ErrorMsg.Text=str; } System.Web.UI.WebControls.DataGridPageChangedEventArgs e) { } ViewState[\"Page\"]=e.NewPageIndex.ToString(); GridBind(); private void dg_Book_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e) } { } if (ViewState[\"Sort\"].ToString()==e.SortExpression) else ViewState[\"Sort\"]=e.SortExpression ; GridBind(); ViewState[\"Sort\"]=e.SortExpression + \" desc\"; 订单处理模块(后台) private void Datagrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { try { int oid = int.Parse(this.Datagrid1.DataKeys[e.Item.ItemIndex].ToString()); DBProjectGuide.BookShop.Order.Deal(oid); ShowMsg(\"Deal successful!\",0); } } Bind(); catch(Exception ex) { } ShowMsg(ex.Message,1); private void Datagrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e) { } if(ViewState[\"Sort\"].ToString() == e.SortExpression) { } else { } Bind(); ViewState[\"Sort\"] = e.SortExpression; ViewState[\"Sort\"] += \" desc\"; 缺书处理模块(后台) private void btnReply_Click(object sender, System.Web.UI.ImageClickEventArgs e) { try { DBProjectGuide.BookShop.LackRecord lr = new DBProjectGuide.BookShop.LackRecord(); } catch(Exception ex) { } this.btnReply.Visible = false;}} ShowMsg(ex.Message,1); lr.ID = int.Parse(ViewState[\"Id\"].ToString()); lr.Reply = this.txtReply.Text.Trim(); lr.SetReply(); ShowMsg(\"Update record successful!\",0); Bind(); 6.网站程序调试与运行 1. .图书浏览模块 2. 缺书登记模块 3. 购物车订单模块 4. 图书搜索模块 5. 用户注册模块 6. 账号管理模块(后台) 7. 图书管理模块(后台) 8. 订单处理模块(后台) 9. 缺书处理模块(后台) 参考文献 [1] 李爱军,任正坤. 超市网上购物系统的设计与实现. 机械工程与自动化,2006, 139(6). [2] 盘宏华. 基于ASP和ACCESS的网上书店设计与实现. 重庆科技学院学报(自然科学版),2006,8(3),105-108. [3] 许积年, 徐伟平. 基于ASP技术的网上购物实验平台的实现. 中国科技论文统计源期刊,实验技术与管理, 2005,(22),64-66. [4] 李建国. 基于ASP技术的网上购物系统的设计与实现. 福建电脑,2008,(2),122-123. [5] 李武. 基于ASP技术的网上购物系统研究与设计. 安徽大学学报(自然科学版),2003,27(2), 31-34. [6] 邹海荣. 网上购物诚信问题及其对策浅析.商场现代化,2007,(493), 101-102. 因篇幅问题不能全部显示,请点此查看更多更全内容