数据库课程设计图书馆管理系统.docx
- 文档编号:28634312
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:33
- 大小:524.21KB
数据库课程设计图书馆管理系统.docx
《数据库课程设计图书馆管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计图书馆管理系统.docx(33页珍藏版)》请在冰豆网上搜索。
数据库课程设计图书馆管理系统
一课题名称
图书馆管理系统
二设计目的和要求、任务
通过本次课程设计,加深对数据库原理以及相关程序设计语言的理解和应用水平。
通过设计实际的数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。
三需求分析
、能够存储一定图书信息,并方便有效的进行相应的书籍数据操作和管理,这主要包括:
1) 图书信息的录入、删除及修改。
2) 图书信息的多关键字检索查询。
3) 图书的出借、返还及超期罚款或丢失赔偿。
、能够对读者、管理员、采购员进行相应的信息存储与管理,这其中包括:
1) 读者信息的登记、删除及修改。
2)管理员信息的增加、删除及修改。
3)采购员信息的增加、删除及修改。
4) 读者资料的统计与查询。
、能够提供一定的安全机制,提供数据信息授权访问,防止随意删改、查询。
、对于借阅即将到期的读者能够及时通过邮箱发送提示信息;对于拖欠罚款的读者给予锁定并通过邮箱提醒;对于长久不还书提及拖欠罚款进行联系。
、对查询、统计的结果能够列表显示。
四总体功能设计
此图书馆系统登录用户分为三类采购员,管理员,读者用户
采购员用户功能:
管理员用户功能:
读者用户功能:
系统总体功能:
五数据库设计
根据要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。
图书管理信息系统可以划分的实体有:
图书实体、读者实体、管理员实体,采购者实体,借阅实体,图书类型实体E-R图如下:
根据E-R得到关系模式,根据实际情况,出版社跟图书类型一般都固定的,单独作为一个实体,用出版社号,跟图书类型号跟图书联系起来;
管理员:
管理员号,管理员姓名,管理员密码,管理员电话
采购员:
采购者号,采购者姓名,采购者密码,采购者电话
读者:
读者姓名,读者密码,读者联系方式,读者借阅数量,读者状态
图书:
图书号,图书名,图书状态,作者名,出版社号,图书类型号,价格
出版社:
出版社号,出版社名称
图书类型:
图书类型号,图书类型名称
借阅:
读者号,图书号,借阅日期,还书日期,罚款
各实体表格的数字字典
管理员表Admin
采购员表
读者表reader:
图书表book
图书类别表booktype
出版社表publish
借阅表borrow
(4)创建各个表sql语句
admin表
CREATETABLE[dbo].[admin](
[aid][numeric](18,0)NOTNULL,
[aname][nvarchar](50)NOTNULL,
[apwd][nvarchar](50)NOTNULL,
[atel][numeric](11,0)NOTNULL,
CONSTRAINT[PK_admin]PRIMARYKEYCLUSTERED
(
[aid]ASC
)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS =ON)ON[PRIMARY]
)ON[PRIMARY]
buyer表
CREATETABLE[dbo].[buyer](
[buyerid][numeric](18,0)NOTNULL,
[buyername][nvarchar](50)NOTNULL,
[buyerpwd][nvarchar](50)NOTNULL,
[buyertel][numeric](18,0)NOTNULL,
CONSTRAINT[PK_buyer]PRIMARYKEYCLUSTERED
(
[buyerid]ASC
)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS =ON)ON[PRIMARY]
)ON[PRIMARY]
reader表
CREATETABLE[dbo].[reader](
[rid][numeric](18,0)NOTNULL,
[rname][nvarchar](50)NOTNULL,
[rpwd][nvarchar](50)NOTNULL,
[re_mail][nvarchar](50)NOTNULL,
[rnum][smallint]NOTNULL,
[rstate][smallint]NOTNULL,
CONSTRAINT[PK_reader]PRIMARYKEYCLUSTERED
(
[rid]ASC
)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS =ON)ON[PRIMARY]
)ON[PRIMARY]
book表
CREATETABLE[dbo].[book](
[bid][numeric](18,0)NOTNULL,
[bname][nvarchar](100)NOTNULL,
[bstate][nvarchar](10)NOTNULL,
[bauthor][nvarchar](50)NOTNULL,
[bpublishid][numeric](18,0)NOTNULL,
[btypeid][nchar](10)NOTNULL,
[bprice][nvarchar](100)NOTNULL,
CONSTRAINT[PK_book]PRIMARYKEYCLUSTERED
(
[bid]ASC
)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS =ON)ON[PRIMARY]
)ON[PRIMARY]
booktype表
CREATETABLE[dbo].[booktype](
[btypeid][nchar](10)NOTNULL,
[typename][nvarchar](50)NOTNULL,
CONSTRAINT[PK_booktype]PRIMARYKEYCLUSTERED
(
[btypeid]ASC
)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS =ON)ON[PRIMARY]
)ON[PRIMARY]
publish表
CREATETABLE[dbo].[publish](
[bpublishid][numeric](18,0)NOTNULL,
[publishname][nvarchar](50)NOTNULL,
CONSTRAINT[PK_publish]PRIMARYKEYCLUSTERED
(
[bpublishid]ASC
)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS =ON)ON[PRIMARY]
)ON[PRIMARY]
borrow表
CREATETABLE[dbo].[borrow](
[rid][numeric](18,0)NOTNULL,
[bid][numeric](18,0)NOTNULL,
[start_date][date]NOTNULL,
[end_date][date]NOTNULL,
[payment][nvarchar](100)NULL,
PRIMARYKEYCLUSTERED
(
[rid]ASC,
[bid]ASC
)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS =ON)ON[PRIMARY]
)ON[PRIMARY]
(5)创建表关系
六应用程序设计
对于不同的用户登录系统所看到的页面不同,拥有的权限不相同,正如上面功能图所示:
对于读者而言主要有检索图书,借阅图书,归还图书,违章缴费得功能;对于管理员是系统中权限最高的用户,如对用户的增加,删改,编辑,对读者违章缴费的进行收取费用;在设计次系统中,管理员将增删图书的功能下架给采购员,采购员分担管理员一下事物。
正如前面所说,系统分成不同的用户,设计出3个表,在实际操作中发现其实用户在一张表里面更容易设计,增加一个用户类型属性就可以。
但这是后话,所以在设计系统的时候代码冗余较多,为了实现不同的用户不同的功能,每类用户对应不同的页面,以此达到控制权限。
由于系统并完成定时的功能,所以在判断读者未及时归还书籍,将用户锁定,以及所欠的费用,通过触发借书事件之前,调用成员函数来判断。
七调试运行情况
(1)登录:
对各种用户出现不同的菜单项
管理员登录
采购员登录
读者登录
protectedvoidsure_Click(objectsender,EventArgse)
{
stringyzm=this.yzm.Text.ToString().Trim();//首先进行验证码判断
if(yzm.ToUpper()!
=Session["CheckCode"].ToString().Trim())
{
Page.ClientScript.RegisterStartupScript(Page.Gettype(),DateTime.Now.Ticks.ToString(),"
\\r\\n\\r\\n'+'验证码错误!
');");
this.yzm.Text="";
}
else//验证码正确之后进行用户名跟密码判断
{
SqlConnectioncon=sqlcon.getConnection();
con.Open();
if(type.SelectedValue=="1")//对读者进行验证
{
strings="select*fromreaderwhererid='"+userid.Text.ToString()+"'andrpwd='"+userpwd.Text.ToString()+"'";//传值实现sql语句
DataTabledt=newDataTable();
SqlDataAdaptersda=newSqlDataAdapter();
sda.SelectCommand=newSqlCommand(s,con);
sda.Fill(dt);
sda.Dispose();
con.Dispose();
con.Close();
if(dt.Rows.Count>0)//存在读者
{
Session["id"]=dt.Rows[0][0].ToString();//保留读者信息
Session["type"]="left3.html";//菜单为读者菜单
Response.Redirect("main.aspx");//跳到主页面
}
else
{
Response.Write("
'用户名或密码错误!
')");
userid.Text="";
userpwd.Text="";
this.yzm.Text="";
}
dt.Dispose();
}
elseif(type.SelectedValue=="2")//对管理员进行验证
{
strings="select*fromadminwhereaid='"+userid.Text.ToString()+"'andapwd='"+userpwd.Text.ToString()+"'";//传值实现sql语句
DataTabledt=newDataTable();
SqlDataAdaptersda=newSqlDataAdapter();
sda.SelectCommand=newSqlCommand(s,con);
sda.Fill(dt);
sda.Dispose();
con.Dispose();
con.Close();
if(dt.Rows.Count>0)//存在管理员
{
Session["id"]=dt.Rows[0][0].ToString();//保留管理员信息
Session["type"]="left.html";//菜单为管理员菜单
Response.Redirect("main.aspx");//跳到主页面
}
else
{
Response.Write("
'用户名或密码错误!
')");
userid.Text="";
userpwd.Text="";
this.yzm.Text="";
}
}
elseif(type.SelectedValue=="3")//对采购者进行验证
{
strings="select*frombuyerwherebuyerid='"+userid.Text.ToString()+"'andbuyerpwd='"+userpwd.Text.ToString()+"'";//传值实现sql语句
DataTabledt=newDataTable();
SqlDataAdaptersda=newSqlDataAdapter();
sda.SelectCommand=newSqlCommand(s,con);
sda.Fill(dt);
sda.Dispose();
con.Dispose();
con.Close();
if(dt.Rows.Count>0)//存在采购者
{
Session["id"]=dt.Rows[0][0].ToString();//保留采购者信息
Session["type"]="left2.html";//菜单为采购者菜单
Response.Redirect("main.aspx");//跳到主页面
}
else
{
Response.Write("
'用户名或密码错误!
')");
userid.Text="";
userpwd.Text="";
this.yzm.Text="";
}
}
con.Close();
con.Dispose();
}
}
读者
protectedvoidname()
{
stringtable="";
stringid="";//获取当前用户类型
if(Session["type"].ToString()=="left.html")
{
table="admin";
id="aid";
}
elseif(Session["type"].ToString()=="left2.html")
{
table="buyer";
id="buyerid";
}
elseif(Session["type"].ToString()=="left3.html")
{
table="reader";
id="rid";
}
SqlConnectioncon=sqlcon.getConnection();
con.Open();
SqlDataAdaptersda=newSqlDataAdapter();
sda.SelectCommand=newSqlCommand("select*from"+table+"where"+id+"="+Session["id"].ToString()+" ",con);//从读者表中读取信息
DataTabledt=newDataTable();//一次显示信息
sda.Fill(dt);
TxtRid.Text=dt.Rows[0][0].ToString();
TxtRname.Text=dt.Rows[0][1].ToString();
TxtRpwd.Text=dt.Rows[0][2].ToString();
TxtRe_mail.Text=dt.Rows[0][3].ToString();
sda.Dispose();
con.Close();
con.Dispose();
}
protectedvoidsure_Click(objectsender,EventArgse)
{
if(TxtRpwd.Text.ToString()==dt.Rows[0][2].ToString())//至此之前,页面加载的时候,先读取用户信息,保留在表里面,之后判段原先密码是否正确
{
stringtable="";//获取用户类别
//stringname="";
stringpwd="";
stringid="";
if(Session["type"].ToString()=="left.html")
{
table="admin";
//name="aname";
id="aid";
pwd="apwd";
}
elseif(Session["type"].ToString()=="left2.html")
{
table="buyer";
//name="buyername";
id="buyerid";
pwd="buyerpwd";
}
elseif(Session["type"].ToString()=="left3.html")
{
table="reader";
//name="rname";
id="rid";
pwd="rpwd";
}
strings="update"+table+"set"+pwd+"='"+TxtRe_mail.Text.ToString()+"'where"+id+"='"+dt.Rows[0][0].ToString()+"'";//更用户密码
SqlConnectioncon=sqlcon.getConnection();
con.Open();
SqlCommandcmd=newSqlCommand(s,con);
if(cmd.ExecuteNonQuery()>0)
{
Response.Write("
')");
}
TxtRpwd.Text="";
TxtRe_mail.Text="";
TextBox1.Text="";
con.Close();
con.Dispose();
}
else
{
TxtRpwd.Text="";
TxtRe_mail.Text="";
TextBox1.Text="";
Response.Write("
')");
}
}
privatevoidshowbook()//按条件检索图书
{
SqlConnectioncon=sqlcon.getConnection();
con.Open();
strings="select*frombookviewwhere["+select.SelectedValue+"]='"+simple.Text.ToString()+"'";//在数据库建立试图将book表,booktype表,publish表联系起来,则查出来如图所示效果
SqlDataAdaptersda=newSqlDataAdapter();
sda.SelectCommand=newSqlCommand(s,con);
sda.Fill(dt);//将查询结果存储到table里面
if(dt.Rows.Count>0)//存在图书
{
GridView1.DataSource=dt;//绑定显示
GridView1.DataBind();
}
else
{
Response.Write("
')");
}
con.Close();
con.Dispose();
}
多字段检索(条件不一定要全部输入)
privatestringjudge()//对字段判断,返回执行条件
{
strings="";
if(txtid.Text.Trim()!
="")
{
s="bid='"+txtid.Text.Trim()+"'";
}
if(txtname.Text.Trim()!
="")
{
if(s.Trim()=="")
{
s+="bname='"+txtname.Text.Trim()+"'";
}
else
{
s+="andbname='"+txtname.Text.Trim()+"'";
}
}
if(txtauthor.Text.Trim()!
="")
{
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 图书馆 管理 系统
