数据库课程设计
题目:网上购书系统
姓 名: 紫鱼要飞翔 学 号: 学 院: 信息学院 专 业:计算机科学与技术 指 导 教 师:
一、系统需求规格说明
1. 项目概述 1.1 项目的背景
随着互联网在中国的进一步普及应用,网上购书逐渐成为人们的网上行为之一。方便、便宜成为了它的特点,加强网站的管理,使之更好的为管理员及用户服务,是当前网上购书一项重要工作。 1.2 开发意义
网上书店的兴起对传统图书流通体系产生了强烈的冲击,有效的缩短了图书流通发行的环节,将广大读者、图书、出版者、发行者紧密的结合在一起,大大提高了图书流通量。网上购书突破了传统商务的障碍,无论对消费者、企业还是市场都有着巨大的吸引力和影响力,在新经济时期无疑是达到“多赢”效果的理想模式。 1.3 开发目标
对用户、书籍的信息进行完整的保存和管理; 能够准确地进行买书计价和结算; 2. 主要任务与性能要求 2.1. 主要任务
输入和修改信息,包括用户、书籍等;
买书记录与统计:记录用户买书的信息并计算书籍总价
用户查询:能够分别按照用户ID查询用户信息,如:姓名、住址等 2.2. 性能要求
数据精度:书籍单价和书籍总价要精确到小数点后2位(分);
时间特性:对系统的任何操作要达到立即响应,最大延迟时间不能超过3秒; 适应性:所有界面的信息要完整,操作要简单且符合用户的一般习惯,提示要明确,
对所有输入的数据要及时进行校验检查。
3. 人员分工 无 4. 计划安排
第1天:项目需求的分析讨论,确定系统最终的基本需求,编写《系统需求规格》;整体
设计,构建E-R图,进行逻辑结构和数据表的设计;
第2-3天:编程实现
第4天:测试及程序调试,编写和提交课程设计报告; 第5天:项目验收。
一、 系统设计
1.引言 1.1 目的
据中国网络信息中心(CNNIC)统计,2009中国网民规模达到3.84亿人,中国手机网民规模
年达到2.33亿人,网络购物用户规模1.08亿人。电子商务的优势在于其立足于互联网,突破了传统的时空观念,缩小了生产、流通、分配、消费之间的距离,大大提高了物流、资金流和信息流的有效传输和处理。发展到今天,网络消费心理比以往呈现出新的特征和趋势。追求时尚文化品位。在互联网时代,文化的全球性和地方性并存,人们的消费观念受到强烈的冲击,尤其青年人对以时尚文化为导向的产品有着强烈的购买动机,而电子商务恰恰能满足这一需求。
1.2 项目名称:网上购书系统 1.3 参考资料
1) 王珊 萨师煊,数据库系统概论(第四版),高等教育出版社,2006年5月 2)赵杰等SQL Server数据库管理、设计与实现教程 清华大学出版社 2004年3月 2.系统任务描述 1)人员角色
通过对医务室工作内容和要求的具体分析,确定本系统的相关用户角色主要有病人和工作人员,而工作人员又需要根据具体工作岗位的不同,划分为医生、收费员、发药员。此外,为保障系统的正常运转和对数据信息的良好维护,还需要有1-2名系统管理员。 2)主要任务
输入初始信息:包括会员(姓名、密码、地址、邮件等)、书籍(名称、作者、出版
商、出版时间、单价、库存等)信息;
修改信息:对上述信息进行修改,但处方的修改需要一定的权限要求; 查询和统计:按照会员的ID进行会员信息查询
系统维护:定期对系统的数据进行维护,主要是一般数据备份与恢复、用户权限调整、
药品盘点等。 3)就诊的业务流程
4)基本功能
用户信息管理:编辑(输入、修改、删除、浏览显示)用户信息 书籍信息管理:编辑(输入、修改、删除)记录书籍信息 购物车管理:删除、修改购物车里的书籍信息 用户查询:可查询会员信息
5)要求描述
人员权限设置为3级:1—会员; 2——领导; 3——系统管理员;
初始处理:对于订单信息,在购买后,要按照规则自动生成编号,并以此作为关键字,
处方则要每单有唯一的单据号。
查询统计处理:根据用户角色的不同,执行不同的查询统计;系统管理员可以对所有
信息进行查询统计;
3、概念设计
通过上述对网上购物系统的需求分析,确定该系统的E-R图如图1所示:
图1 网上购物系统的E-R图
其中各实体包含的属性如图2所示。
图2 各实体包含的属性
4.数据库逻辑结构设计
1)基本设计
此部分主要是将上述E-R图转换为相应的关系模式(依据转换原则)。综观项目的具体特点和整体处理要求,同时为便于系统内部的管理,在各实体原有信息的基础上,确定增加候选码,作为各关系的主键(关键字)、考虑联系确定外键。如:
1) 会员( userid ,姓名,密码,地址,邮箱)
2) 书籍( bookid ,书名,作者,出版社,出版时间、单价、库存量、总量、出售量、折扣、
图片)
3) 管理员(userid ,姓名,密码,地址,邮箱)
2)优化设计
由于角色将重复出现。为降低重复,提高准确性和处理速度,保证唯一性,同时又能够简化输入操作,方便修改和维护,特增加角色码本关系模式,导致原各关系中的名称均改为代码,如角色存储的是角色代码。下面是码本的具体组成举例:
角色码本(1、2、3 ,会员、领导、系统管理员)
5、 数据库物理设计
数据库物理设计完成数据库在物理设备上的存储结构与存取方法。建立数据库数据完整性约束(主键、外键、用户定义),支持相关数据处理的用户视图、索引等。
本例以MS SQL Server 2000作为数据库,因此,在进入SQL企业管理器并建立了数据库以后,通
过表设计器完成上述各表的建立。具体结果如下图3所示。
图3 系统数据表设计结果
6.主要功能实现
列出各功能的程序一览表、程序(要求有注释)和相应的主要界面截图。 1)登陆界面
Login.aspx: <%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeFile=\"login.aspx.cs\" Inherits=\"_Default\" %>
Login.aspx.cs: using System;
using System.Configuration; using System.Data; using System.Linq; using System.Web;
using System.Web.Security; using System.Web.UI;
using System.Web.UI.HtmlControls; using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts; using System.Xml.Linq;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
Session[\"username\"] = null;
btnEntry.Attributes.Add(\"onmouseover\", \"this.src='images/button/dl1.gif' \"); btnEntry.Attributes.Add(\"onmouseout\", \"this.src='images/button/dl0.gif' \");
ImageButton1.Attributes.Add(\"onmouseover\", \"this.src='images/button/tc1.gif' \"); ImageButton1.Attributes.Add(\"onmouseout\", \"this.src='images/button/tc0.gif' \");
ImageButton2.Attributes.Add(\"onmouseover\", \"this.src='images/button/zc1.gif' \"); ImageButton2.Attributes.Add(\"onmouseout\", \"this.src='images/button/zc0.gif' \"); } }
protected void btnEntry_Click(object sender, ImageClickEventArgs e) {
SqlDataReader rd = (SqlDataReader)SqlDataSource1.Select(DataSourceSelectArguments.Empty); Session[\"s\"] = null; if (rd.HasRows) {
Session[\"s\"] = txtName.Text; Response.Redirect(\"main.aspx\"); } }
protected void ImageButton2_Click(object sender, ImageClickEventArgs e) {
Response.Redirect(\"adduser.aspx\"); } }
2)注册界面
Adduser.asp: <%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeFile=\"adduser.aspx.cs\" Inherits=\"adduser\" %>
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
Adduser.aspx.cs: using System;
using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web;
using System.Web.Security; using System.Web.UI;
using System.Web.UI.HtmlControls; using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts; using System.Xml.Linq;
public partial class adduser : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
}
protected void Button1_Click(object sender, EventArgs e) {
Response.Redirect(\"login.aspx\");
}
protected void Button2_Click(object sender, EventArgs e) {
Response.Redirect(\"main.aspx\");
} }
3)主界面
主界面使用母板:
<%@ Master Language=\"C#\" AutoEventWireup=\"true\" CodeFile=\"MasterPage.master.cs\" Inherits=\"MasterPage\" %>
4)用户管理界面
用户注册.aspx
<%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeFile=\"用户注册.aspx.cs\" Inherits=\"用户注册\" %>
用户注册.aspx.cs
using System;
using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web;
using System.Web.Security; using System.Web.UI;
using System.Web.UI.HtmlControls; using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts; using System.Xml.Linq;
public partial class 用户注册 : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
}
protected void Button1_Click(object sender, EventArgs e) {
Response.Redirect(\"main.aspx\"); } }
5)查询用户界面
Updateuser.aspx: <%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeFile=\"updateuser.aspx.cs\" Inherits=\"updateregister\" %>
Updateuser.aspx.cs: using System;
using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web;
using System.Web.Security; using System.Web.UI;
using System.Web.UI.HtmlControls; using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts; using System.Xml.Linq;
public partial class updateregister : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
}
protected void Button1_Click(object sender, EventArgs e) {
Response.Redirect(\"main.aspx\");
} }
5)书籍管理界面
Viewbook.aspx: <%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeFile=\"viewbook.aspx.cs\" Inherits=\"viewbook\" %>
Viewbook.aspx.cs: using System;
using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web;
using System.Web.Security; using System.Web.UI;
using System.Web.UI.HtmlControls; using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts; using System.Xml.Linq;
public partial class viewbook : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) {
}
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e) {
}
protected void Button1_Click(object sender, EventArgs e) {
Response.Redirect(\"main.aspx\");
} }
5)订书界面
订书页面.aspx: <%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeFile=\"订书页面.aspx.cs\" Inherits=\"_Default\" %>
订书页面.aspx.cs:
using System;
using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web;
using System.Web.Security; using System.Web.UI;
using System.Web.UI.HtmlControls; using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts; using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect(\"main.aspx\"); } }
6)购物车界面
Cart.aspx: <%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeFile=\"cart.aspx.cs\" Inherits=\"cart\" %>
Cart.aspx.cs: using System;
using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web;
using System.Web.Security; using System.Web.UI;
using System.Web.UI.HtmlControls; using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts; using System.Xml.Linq;
using System.Data.SqlClient;
public partial class cart : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
}
protected void Button1_Click(object sender, EventArgs e) {
SqlDataSource2.Insert();
Response.Redirect(\"mycar.aspx\"); }
protected void SqlDataSource2_Selecting(object sender, SqlDataSourceSelectingEventArgs e) {
SqlDataReader rd = (SqlDataReader)SqlDataSource1.Select(DataSourceSelectArguments.Empty); if (rd.HasRows) {
rd.Read();
e.Command.Parameters[\"@id\"].Value = Session[\"s\"];
e.Command.Parameters[\"@bookid\"].Value = rd[\"bookid\"].ToString(); e.Command.Parameters[\"@num\"].Value = TextBox1.Text;
e.Command.Parameters[\"@userid\"].Value = rd[\"userid\"].ToString(); } } }
Mycar.aspx: <%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeFile=\"mycar.aspx.cs\" Inherits=\"mycar\" %>
Mycar.aspx.cs: using System;
using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web;
using System.Web.Security; using System.Web.UI;
using System.Web.UI.HtmlControls; using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts; using System.Xml.Linq;
public partial class mycar : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
}
protected void Button1_Click(object sender, EventArgs e) {
Response.Redirect(\"main.aspx\"); } }
三.收获和体会
通过这次实训,更加深刻的理解了数据库的设计,表结构的重要性及各个表之间关系一定要清晰,属性的设置,字段的设置都要合适。也学会了ASP.NET中许多控件的使用,体会到了控件的方便与不变,由于控件的功能都是设定好的,使得无法自由的按照设想设计页面。
因篇幅问题不能全部显示,请点此查看更多更全内容