数据库图书管理系统课程设计.docx
《数据库图书管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《数据库图书管理系统课程设计.docx(30页珍藏版)》请在冰点文库上搜索。
数据库图书管理系统课程设计
数据库图书管理系统课程设计
————————————————————————————————作者:
————————————————————————————————日期:
课程设计
课程设计名称:
数据库应用课程设计
专业班级:
学生姓名:
学号:
指导教师:
课程设计时间:
2011。
12.20—2010.12.24
计算机应用技术专业课程设计任务书
学生姓名
专业班级
学号
题目
图书管理系统
课题性质
A.工程设计
课题来源
D.自拟课题
指导教师
同组姓名
无
主要内容
图书管理系统开发:
互联网的不断发展使得网上售书越来越受现代人的欢迎,但好多的读者还是喜欢去书店浏览图书,借阅购买自己喜爱的书籍,但不能更方便、有效、快捷地实现店主、营业员、读者各自的功能,及相互之间的联系。
针对这一问题,我们开发了图书(销售)管理系统,该系统主要有四大模块:
前台管理模块,图书管理模块,用户管理模块和订单管理模块,各模块提供了数据的查询、插入、删除等功能,从而满足了用户的需求。
任务要求
综合运用所学的数据库基本知识,并能通过查阅相关文献材料,独立完成该课题的设计开发工作。
要求根据本课题设计出合理的数据结构,并实现前台管理模块,图书管理模块,用户管理模块和订单管理模块等功能模块。
前台开发工具采用VB.net开发工具;后台数据库选用SQLServer。
参考文献
1郑玲利,数据库原理与应用案例教程。
北京:
清华大学出版社,2008
2宣小平,但正刚,张文毅,数据库系统开发实例导航。
北京:
人民邮电出版社
3龚沛曾,袁科萍,杨志强。
数据库技术与应用【M】北京:
高等教育出版社,2008
4施伯乐,丁宝康,汪伟.数据库系统教程【M】北京:
高鞥教育出版社,2003
审查意见
指导教师签字:
教研室主任签字:
2010年11月16日
说明:
本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页
填表说明
1.“课题性质"一栏:
A.工程设计;
B.工程技术研究;
C.软件工程(如CAI课题等);
D.文献型综述;
E.其它。
2.“课题来源”一栏:
A.自然科学基金与部、省、市级以上科研课题;
B.企、事业单位委托课题;
C.校、院(系、部)级基金课题;
D.自拟课题。
国际学院学院课程设计成绩评价表
课程名称:
数据库应用课程设计
设计题目:
图书管理系统
专业:
班级:
姓名:
学号:
序号
评审项目
分数
满分标准说明
1
内容
思路清晰;语言表达准确,概念清楚,论点正确;实验方法科学,分析归纳合理;结论严谨,设计有应用价值。
任务饱满,做了大量的工作。
2
创新
内容新颖,题目能反映新技术,对前人工作有改进或突破,或有独特见解
3
完整性、实用性
整体构思合理,理论依据充分,设计完整,实用性强
4
数据准确、可靠
数据准确,公式推导正确
5
规范性
设计格式、绘图、图纸、实验数据、标准的运用等符合有关标准和规定
6
纪律性
能很好的遵守各项纪律,设计过程认真;
7
答辩
准备工作充分,回答问题有理论依据,基本概念清楚.主要问题回答简明准确。
在规定的时间内作完报告。
总分
综
合
意
见
指导教师2010年11月28日
1、需求分析
1.1课题背景
图书管理系统开发:
互联网的不断发展使得网上售书越来越受现代人的欢迎,但好多的读者还是喜欢去书店浏览图书,借阅购买自己喜爱的书籍,但不能更方便、有效、快捷地实现店主、营业员、读者各自的功能,及相互之间的联系.针对这一问题,我们开发了图书(销售)管理系统,该系统主要有四大模块:
前台管理模块,图书管理模块,用户管理模块和订单管理模块,各模块提供了数据的查询、插入、删除等功能,从而满足了用户的需求。
1。
2需完成的功能
●用户信息:
包括用户名和用户密码;在该模块中针对不同的用户设置了权限管理,并且对用户信息有查询、删除、修改的功能.
●有关图书信息的输入,包括图书编号、图书名称、作者、出版社、出版日期、价格;在该模块中可以分别按图书编号、图书名称实现数据的查询、录入、删除功能.
●图书类别信息:
包括类别编号、类别名称;在该模块中可以按类别编号实现数据的插入、查询、删除功能。
●图书销售信息:
包括图书编号、类别编号、价格、出售日期;在该模块中可以通过图书编号和类别编号实现数据的插入、查询、删除功能,
1.3运行环境
(1)操作系统:
MicrosoftWindows2000/Windowsxp
(2)数据库:
SQLServer数据库
(3)编程环境:
VisualStudio2008
2.概要设计
2.1系统功能分析
图书管理系统分为四大模块:
一.前台管理:
在该模块中再次细分,可划分为一下几个模块:
用户注册登录,用户信息修改,图书搜索,图书详细信息查询,购物车,用户付款,用户帮助和联系管理员。
网络用户进入该网站时,可以浏览图书主页面、查看页面提供的图书信息、搜索图书等.若网络用户需要购买、收藏图书时,他需要登录到系统(若未注册账号,他需要先进行注册再登录系统).系统用户分为管理员和一般用户。
系统用户根据自己的注册邮箱和密码登录系统.登录到系统后,管理员可以对图书信息进行查看,添加、删除、修改等,同时可以查看所有一般用户的基本信息及图书订单信息;而一般用户只能查看图书信息、搜索图书、购买图书、收藏图书,同时可以对自己的信息进行修改、完善等。
除此之外,一般用户还可以付款,查看帮助,联系管理员。
二.订单管理:
管理员可以对订单进行管理,判断用户是否确认购买购物车的图书,确认是否付款,是否发货,是否对该信息归档.
三.用户管理:
管理员可以查询用户信息,并可以删除用户信息。
四.图书管理:
管理员可以对图书进行添加、删除、修改;管理员还可以对图书进行分类。
2.2系统功能模块
通过系统功能层次图可以直观地理解系统的功能,并且有助于实现模块与模块以及各模块内的密切联系。
系统功能层次图如下:
2.3数据库设计
2.3。
1概念模型设计
概念数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型,所以使用E-R图来建立数据模型,直观地反映了各实体的属性及实体间相互联系.所以开发者必须收集一些基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典。
根据这些基本信息设计出功能齐全、使用方便的系统。
系统所处理的E-R图如下:
2。
3.2数据库逻辑设计
逻辑结构设计阶段的主要任务是把概念结构设计好的E—R图转换为与DBMS产品所支持的数据模型相符合的逻辑,即将实体型、实体的属性和实体型之间的联系转换为关系模式,为此建立了六个数据表:
(1)图书信息表:
包括的数据项有:
图书ID、书名、作者、出版社、图书简介、出版日期、图书类别号、定价、封面、销售量和库存量;其中图书ID是主属性
(2)用户信息表:
包括的数据项有:
邮箱、密码、昵称、性别、身份标号、头像、兴趣、居住地、自我介绍和管理员标示;其中邮箱是主属性。
(3)用户身份表:
包括的数据项有:
身份标号和身份名;其中身份标号是主属性。
(4)图书类别表:
包括的数据项有:
图书类别号和图书类别名;其中图书类别号是主属性。
(5)订单表:
包括的数据项有:
邮箱、图书ID和订货数量;其中邮箱和图书ID是主属性。
(6)收藏表:
包括的数据项有:
邮箱和图书ID;二者都是主属性。
1.。
图书类别表
列名
数据类型
长度
说明
图书类别号
Smallint
主键
类别名
Varchar
10
唯一约束,不为空
2。
图书信息表
列名
数据类型
长度
说明
图书ID
Varchar
8
主键
书名
Varchar
20
作者
Varchar
10
出版社
Varchar
20
图书简介
Ntext
出版日期
Datetime
图书类别号
Smallint
外键,参考图书类别表
定价
Float
封面
Varchar
50
具有唯一约束
销售量
Int
默认为0,用来找出热销书
浏览次数
Int
默认为0,用来找出重点关注书
库存量
Int
大于等于0
折扣价
Float
大于等于0
折扣
Float
大于0小于等于1
上架时间
Datetime
用来区别新书
问题:
封面如何设为唯一约束
3.用户登录表
列名
数据类型
长度
说明
邮箱
Varchar
30
主键
密码
Varchar
15
密码丢失验证码
Varchar
10
默认为0000
管理员标识
Bit
默认为0,表示一般用户;1表示管理员
4.用户信息表
列名
数据类型
长度
说明
邮箱
Varchar
30
主键
昵称
Varchar
10
性别
Bit
默认为0,表示男;1表示女
用户级别号
Smallint
外键,参考用户身份表,默认为1
头像
Varchar
50
兴趣
Ntext
居住地
Varchar
100
自我介绍
Ntext
账户余额
Float
默认为0
消费金额
Float
默认为0
3。
用户身份表
列名
数据类型
长度
说明
用户级别号
Smallint
主键
级别名
Varchar
10
唯一约束
5。
订单表
列名
数据类型
长度
说明
邮箱
Varchar
30
外键,参考用户登录表
图书ID
Varchar
8
外键,参考图书信息表
价钱
Float
不为空,默认为0
订货数量
Smallint
大于等于0
订购日期
Datetime
包含在主键中,避免不能多次购买统一ID的书
是否处理
Bit
默认为0
*备注:
邮箱、图书ID、订购日期为主键
6。
收藏表
列名
数据类型
长度
说明
邮箱
Varchar
30
外键,参考用户信息表
图书ID
Varchar
8
外键,参考图书信息表
*备注:
邮箱和图书ID为主键
2.3.3数据库表结构图
三详细设计
3。
1。
主要网页介绍
母版页:
MasterPage1.master用户未登录时母版页
MasterPage2。
master用户登录后母版页
功能:
(1):
提供图书关键字搜索功能.
(2):
提供图书分类,个人中心等链接
Master1.master用户未登录时注册页面的母版页
Master2.master个人中心、用户信息修改页面的母版页
Master3。
master用户登录后注册页面的母版页
Home。
aspx主页enroll.aspx用户注册页
login。
aspx用户登录页search_book.aspx查询书籍页
book_classify.aspx图书分类页bookmessage.aspx图书详细信息页
SelfCenter。
aspx个人中心页alter_user.aspx用户修改个人信息页
shopcar。
aspx购物车页admin_login.aspx管理员登录后台管理页
管理页面admin_default。
aspx,可用iFrame引用以下页面:
bookmanager.aspx图书管理页addbook.aspx添加图书页
UserSearch。
aspx查询用户信息页AddMoney。
aspx用户充值页
deluser。
aspx删除用户页order_manager.aspx订单管理页
top.ascx用户控件,被个人中心页面等引用
Validator.aspx验证码页面,用来随机生成验证码,在用户注册页面调用
3.2系统功能概述
前台功能概述
(1):
一般用户进入Home.aspx后能够查询本站所有的图书及其详细信息。
(2):
当用户需要购买图书时可以暂时将需要购买的图书放入购物车,在离开本站时登录账户(无账户时需先注册)既可一起结账购买。
(3):
当用户提交订单,收藏书籍或者登录个人中心时系统提示需要登录,如果没有账号则需要注册。
后台管理系统
管理员通过点击主页下方的管理入口进入管理员登录页面,输入用户名(admin)和密码(admin)之后登陆到后台管理页面,如下图:
管理员可以在后台管理系统中进行添加、删除、修改图书信息,查询、删除用户,给用户充值,管理订单等操作,从而实现图书销售管理。
3.3主要实现代码
(1)图书搜索、分类查询功能代码
查询页面后台代码:
protectedvoidEnglish_Click(objectsender,EventArgse)
{
Session["BookClassify”]=English.Text;//用来记录图书类别名
Response。
Redirect(”book_classify.aspx”);
}
……………………………………………………………………….。
protectedvoidSearch_btn_Click(objectsender,EventArgse)
{//根据下拉列表来选择查询图书条件
if(Seach_tb。
Text==”"){Lb_Search.Visible=true;return;}
elseLb_Search.Visible=false;
Session[”Search”]=Seach_tb.Text;
if(DDL_Search。
SelectedIndex==0)
{
Session["BookClassify”]=Seach_tb。
Text;
Session[”flag”]=”图书类别”;//标示查询条件
}
elseif(DDL_Search.SelectedIndex==1)Session[”flag”]=”作者”;
elseSession[”flag"]=”书名”;
Response。
Redirect("search_book.aspx");
}
查询结果页面后台代码:
protectedvoidPage_Load(objectsender,EventArgse)
{
this。
Page.Title=”搜索结果”;
if(!
IsPostBack){Datalistband();}
}
privatevoidDatalistband()
{
stringselectstr;
if(Session[”flag"]==null)return;
if(Session["flag”]=="图书类别”)//用来选择selectstr的内容,以便按查询条件读取数据库
{
selectstr="selectBookImage,BookName,Price,DiscountMoneyfromBookInfo,BookCatalogwhereBookInfo。
CatalogNum=BookCatalog.CatalogNumandCatalogName=’”+Session["BookClassify”]。
ToString()+”'";
}
elseif(Session[”flag”]==”作者")
{
selectstr="selectBookImage,BookName,Price,DiscountMoneyfromBookInfowhereAuthor=’”+Session["Search”]。
ToString()+”'";
}
else
selectstr=”selectBookImage,BookName,Price,DiscountMoneyfromBookInfowhereBookName='”+Session["Search”]。
ToString()+”'”;
stringsqlconnstr=ConfigurationManager。
ConnectionStrings["ConnectionString"].ConnectionString;
DataSetds=newDataSet();
using(SqlConnectionsqlconn=newSqlConnection(sqlconnstr))
{
SqlDataAdaptersqld=newSqlDataAdapter(selectstr,sqlconn);
sqld.Fill(ds,”tabbook”);
}
……………………………………………………………………………………………….
this。
DataList1。
DataSource=pds;
this.DataList1.DataBind();//数据邦定
}
(2)用户登录页面代码:
protectedvoidloginButton_Click(objectsender,ImageClickEventArgse)
{
if(TB_Mail.Text==””)Lb_Message。
Text="请输入您的Email地址”;
elseif(TB_Password。
Text=="”)Lb_Message.Text=”请输入您的登录密码。
”;
else
{
stringsqlconnstr=ConfigurationManager。
ConnectionStrings[”ConnectionString"]。
ConnectionString;
SqlConnectionsqlconn=newSqlConnection(sqlconnstr);
SqlCommandsqlcomm=newSqlCommand();
sqlcomm.Connection=sqlconn;
sqlconn.Open();
sqlcomm.CommandText="selectMailBox,PassWordfromLoginwhere(ManagerFlag=0)”;
SqlDataReadersqldatareader=sqlcomm。
ExecuteReader();
while(sqldatareader.Read())
{
if(TB_Mail。
Text==sqldatareader.GetString(0)&&TB_Password。
Text==sqldatareader。
GetString
(1))
{
Session[”UserName”]=TB_Mail.Text;//Session["UserName"];//标示用户是否登录,从而切换母板if(Session["UserName”]!
=null)
{
Session["masterpage”]="MasterPage2.master”;
}
if(Session["IsLogin”]==”true”)Response。
Redirect("shopcar.aspx”);
elseResponse.Redirect(”Home.aspx”);
}
}
Lb_Message.Text="账号或密码错误,请重新输入”;
}
}
(3)用户注册页面代码
protectedvoidBt_Sumbit_Click(objectsender,EventArgse)
{
if(Request.Cookies["yzmcode"]==null)return;
if(String。
Compare(Request.Cookies[”yzmcode”].Value,Txt_Validation。
Text,true)!
=0)
{//判断注册码是否输入正确
Lb_Validate.Text=”验证码错误,请输入正确的验证码.”;return;
}
elseif(!
Cb_clause。
Checked)Lb_Message.Visible=true;
else
{insert();
if(Lb_error。
Visible){MultiView1.ActiveViewIndex=0;return;}//判断邮箱是否注册过
MultiView1.ActiveViewIndex=1;
Lb_Mail。
Text=Txt_Mail.Text;
Session[”UserName”]=Txt_Mail。
Text;
Session["masterpage"]="MasterPage2.master”;
Session["master"]="~/Master/Master3.master";
}
}
protectedvoidinsert()//插入用户的注册数据到数据库
{
stringsqlconnstr=ConfigurationManager.ConnectionStrings["ConnectionString"]。
ConnectionString;
SqlConnectionsqlconn=newSqlConnection(sqlconnstr);
SqlCommandsqlcommand=newSqlCommand();
sqlcommand。
Connection=sqlconn;
sqlcommand.CommandText="insertintoLogin(MailBox,PassWord)values(@MailBox,@PassWord)";
sqlcommand。
Parameters。
AddWithValue(”@MailBox",Txt_Mail。
Text);
sqlcommand。
Parameters。
AddWithValue(”@PassWord”,Txt_Password.Text);
try{sqlconn.Open();sqlcommand.ExecuteNonQuery();Lb_error.Visible=false;}
catch(Exceptionex){Lb_error。
Visible=true;//邮箱注册过让Lb_error显示}
finally{sqlcommand=null;sqlconn.Close();sqlconn=null;}
}
(4)个人中心代码
prot