图书案例sql.docx

上传人:b****6 文档编号:8432732 上传时间:2023-01-31 格式:DOCX 页数:29 大小:20.17KB
下载 相关 举报
图书案例sql.docx_第1页
第1页 / 共29页
图书案例sql.docx_第2页
第2页 / 共29页
图书案例sql.docx_第3页
第3页 / 共29页
图书案例sql.docx_第4页
第4页 / 共29页
图书案例sql.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

图书案例sql.docx

《图书案例sql.docx》由会员分享,可在线阅读,更多相关《图书案例sql.docx(29页珍藏版)》请在冰豆网上搜索。

图书案例sql.docx

图书案例sql

图书管理系统

一.系统设计目的和内容:

图书管理系统主要目的是对图书馆种类繁多的书籍进行管理,并且合理管理好用户的借还信息。

提高图书馆的工作效率,降低管理成本。

其开发主要包括后台数据库的建立和维护,以及前端应用程序的开发。

前者要求建立起数据一致性各完整性强、数据安全性好的数据库。

而后者则要求应用程序具有功能完备、易用等特点。

因此本系统结合开放式图书馆的要求,采用.NET技术各SQLSERVER2000数据库进行系统的开发。

二.系统需求分析:

1.书目查询管理:

根据一定的条件对图书进行查询,并可以查看图书的详细信息,查询范围出版社、书名、作者等查询项目进行任意条件的组合查询。

2.权限维护管理:

系统管理员可以在此模块中,对已有的图书信息进行修改,

并对用户信息进行管理。

3、用户信息管理:

用户登录该系统后,可以进行图书的借阅和归还操作,还可

修改密码、查询借阅信息等。

三.系统总体设计

四.数据库设计

4.1数据库的需求分析:

本系统使用SQLSERVER2000作为应用程序的数据库。

考虑到系统的实际需求,系统至少需要四张数据库表,具体如下:

1.图书信息数据表(BOOKINFO):

用于图书馆的所有已录入的书目信息,这是本系统最为关键的数据部分,包括图书号、图书名、图书作者、出版时间、索取号、价格和图书条码。

2.

名字:

密码

别名:

描述:

用户和管理员进入管理系统的条件.

定义:

1{数字或字符}8.

位置:

管理员信息

用户信息

名字:

管理员号

别名:

描述:

管理员在图书馆中的惟一的标识.

定义:

1{数字}5.

位置:

管理员信息

名字:

借阅号

别名:

描述:

用户在图书馆中借还书的惟一的标识.

定义:

1{数字}8.

位置:

借阅信息

名字:

用户号

别名:

描述:

此用户在图书馆中的惟一的标识.

定义:

1{数字}8.

位置:

用户信息

借阅信息

名字:

图书号

别名:

描述:

此书在图书馆中的惟一的标识.

定义:

1{数字}8.

位置:

图书信息

借阅信息

用户信息表(USER):

用户ID、用户名、密码、地址、E-MAIL、电话。

3.借阅信息表(LENDINFO):

ID、用户ID、图书ID、借阅时间、归还时间、归还与否。

4.管理员信息表(MANGER):

管理员ID、密码。

数字字典

4.4物理设计

对数据库建立索引,索引语句在SQL语句中。

Createuniqueindexbook_idONbookinfo(bookid)

Createuniqueindexuser_idONuser(userid)

Createuniqueindexlend_idONlendinfo(lendid)

4.5SQL语句的实现

创建数据库名为library

CREATEDATABASELIBRARY

创建员工基本信息

CREATETABLEBookInfo

(bookidint(4)NOTNULLUNIQUE,

booknamevarchar(100),

pubnamevarchar(100),

bookauthorvarchar(50),

seriesvarchar(50),

ISBNvarchar(50),

SearchNOvarchar(50),

PubDatesmalldatetime(4),

Pricefloat(8),

Barcodevarchar(50)

);

CREATETABLELendInfo

LendIDint(4)NOTNULLUNIQUE,

BookIDint(4)NOTNULLUNIQUE,

UserIDvarchar(50)NOTNULLUNIQUE,

LendDatesmalldatetime(4),

ReturnDatesmalldatetime(4),

IsBackint(4)

);

CREATETABLEmanage

manageidint(4)NOTNULLUNIQUE,

Passchar(10)

);

CREATETABLEusers

useridint(4)NOTNULLUNIQUE,

usernamechar(10),

passchar(10),

emailchar(50),

phonechar(10),

addressvarchar(50),

BookNumint(4)

);

4.6创建视图

创建关于书名的视图,因为查询时需要绑定。

Createviewbook_name

As

Selectbookid,pubname,bookauthor,bookname,searchNO

FROMBOOKINFO

WHEREbookname=’ASP程序设计’;

创建关于用户名的视图,因为查询时需要绑定。

Createviewuser_name

As

Selectuserid,username,phone,address,email

FROMusers

WHEREusername=’1’;

4.7创建存储过程

创建建表的存储过程

USELIBRARY

GO

CREATEPROCEDUREcreatetables

AS

CREATETABLEBookInfo

(bookidint(4)NOTNULLUNIQUE,

booknamevarchar(100),

pubnamevarchar(100),

bookauthorvarchar(50),

seriesvarchar(50),

ISBNvarchar(50),

SearchNOvarchar(50),

PubDatesmalldatetime(4),

Pricefloat(8),

Barcodevarchar(50)

);

CREATETABLELendInfo

LendIDint(4)NOTNULLUNIQUE,

BookIDint(4)NOTNULLUNIQUE,

UserIDvarchar(50)NOTNULLUNIQUE,

LendDatesmalldatetime(4),

ReturnDatesmalldatetime(4),

IsBackint(4)

);

CREATETABLEmanage

manageidint(4)NOTNULLUNIQUE,

Passchar(10)

);

CREATETABLEusers

useridint(4)NOTNULLUNIQUE,

usernamechar(10),

passchar(10),

emailchar(50),

phonechar(10),

addressvarchar(50),

BookNumint(4)

);

GO

4.8创建触发器

创建关于书号和用户号的触发器,分别在BOOKINFO.USERS中修改bookid和userid时,在LENDINFO中也会有相应的修改。

CREATETRIGGERBookidChange

ONBOOKINFO

AFTERUPDATE

AS

IFUPDATE(bookid)

BEGIN

DECLARE@book_idasint

DECLARE@old_book_idasint

SELECT@book_id=bookidinserted

SELECT@old_book_id=bookiddeleted

UpdateLENDINFO

SETLENDINFO.bookid=@book_id

WHERELENDINFO.bookid=@old_book_id

END

CREATETRIGGERUserIdChanges

ONUSERS

AFTERUPDATE

AS

IFUPDATE(userid)

BEGIN

DECLARE@user_idasint

DECLARE@old_user_idasint

SELECT@user_id=useridinserted

SELECT@old_user_id=useriddeleted

UpdateLENDINFO

SETLENDINFO.userid=@user_id

WHERELENDINFO.userid=@old_user_id

END

五、使用ER/STUDIO完成数据库设计

六、代码实现

6.1“图书管理系统”的功能模块图

系统主界面:

ImportsSystem.Data.SqlClient

ImportsSystem.IO

PublicClasssearchN

InheritsSystem.Web.UI.Page

PrivateconnectingstringAsString

PrivatemyConnAsSqlConnection

PrivatedsAsDataSet

PrivatemyAdapterAsSqlDataAdapter

ProtectedWithEventsHyperLink1AsSystem.Web.UI.WebControls.HyperLink

ProtectedWithEventsradiobutton1AsSystem.Web.UI.WebControls.RadioButton

ProtectedWithEventsdropdownlist1AsSystem.Web.UI.WebControls.DropDownList

ProtectedWithEventsbutton1AsSystem.Web.UI.WebControls.Button

PrivatemyCmdAsSqlCommand

PublicSubOpen()

myConn.Open()

EndSub

PublicSubClose()

myConn.Close()

EndSub

PublicSubFill(ByValsqlstrAsString)

myAdapter=NewSqlDataAdapter(sqlstr,myConn)

ds=NewDataSet

myAdapter.Fill(ds)

EndSub

PrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load

'在此处放置初始化页的用户代码

connectingstring="datasource=(local);Database=library;uid=sa;pwd=123456;"

myConn=NewSqlConnection(connectingstring)

IfNotIsPostBackThen

IfNotSession("UserID")IsNothingThen

IfAllowBooking(Session("UserID"))=TrueThen

EndIf

EndIf

EndIf

EndSub

'privatebind

PublicFunctionGetRowsNum(ByValsqlstrAsString)AsInteger

IfmyConn.State=ConnectionState.ClosedThen

myConn.Open()

EndIf

Fill(sqlstr)

Close()

Returnds.Tables(0).Rows.Count

EndFunction

PublicFunctionAllowBooking(ByValUserIDAsString)AsBoolean

DimsqlstrAsString="select*fromUserInfo,RoleInfowhereUserInfo.RoleID=RoleInfo.RoleIDandAllowBooking=1andUserID='"+UserID+"'"

IfGetRowsNum(sqlstr)=0Then

ReturnFalse

Else

ReturnTrue

EndIf

EndFunction

PublicSubBindDBGrd(ByValsqlstrAsString,ByValmyDBGrdAsDataGrid)

IfmyConn.State=ConnectionState.ClosedThen

myConn.Open()

EndIf

Fill(sqlstr)

myDBGrd.DataSource=ds.Tables(0).DefaultView

myDBGrd.DataBind()

EndSub

PublicSubBindDBGrd(ByValsqlstrAsString,ByValmyDBGrdAsDataGrid,ByValSortExpAsObject)

IfmyConn.State=ConnectionState.ClosedThen

myConn.Open()

EndIf

Fill(sqlstr)

DimdvAsDataView=ds.Tables(0).DefaultView

dv.Sort=SortExp

myDBGrd.DataSource=dv

myDBGrd.DataBind()

EndSub

PrivateSubBindGrid()

IfNotSession("sqlstr")IsNothingThen

DimsqlstrAsString=CType(Session("sqlstr"),String)

BindDBGrd(sqlstr,ResultGrid)

Session("sqlstr")=sqlstr

EndIf

EndSub

PrivateSubbutton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handlesbutton1.Click

DimsignAsString=""

IfAnyChoice.Checked=TrueThen

sign="%"

EndIf

DimsqlstrAsString="select*fromBookInfowhere1=1"

sqlstr+="and"+dropdownlist1.SelectedValue+"like'"+sign+txtContent.Text.ToString.Trim+sign+"'"

Session("sqlstr")=sqlstr

BindGrid()

EndSub

PrivateSubResultGrid_PageIndexChanged(ByValsourceAsObject,ByValeAsSystem.Web.UI.WebControls.DataGridPageChangedEventArgs)HandlesResultGrid.PageIndexChanged

ResultGrid.CurrentPageIndex=e.NewPageIndex

BindGrid()

EndSub

PrivateSubResultGrid_SortCommand(ByValsourceAsObject,ByValeAsSystem.Web.UI.WebControls.DataGridSortCommandEventArgs)HandlesResultGrid.SortCommand

DimsqlstrAsString

Ifviewstate("sortexp")IsNothingThen

viewstate("sortexp")=e.SortExpression.ToString

ElseIfviewstate("sortexp")=e.SortExpression.ToStringThen

viewstate("sortexp")+="desc"

Else

viewstate("sortexp")=e.SortExpression.ToString

EndIf

IfNotSession("sqlstr")IsNothingThen

sqlstr=CType(Session("sqlstr"),String)

BindDBGrd(sqlstr,ResultGrid,Viewstate("sortexp"))

EndIf

EndSub

PublicSubExecNonSql(ByValsqlstrAsString)

IfmyConn.State=ConnectionState.ClosedThen

myConn.Open()

EndIf

myCmd=NewSqlCommand(sqlstr,myConn)

myCmd.ExecuteNonQuery()

myCmd.Dispose()

Close()

EndSub

EndClass

可以根据书名,内容进行查询,我们选取任意匹配:

如上图所示最上方为自定义用户控件:

bar

点击权限维护:

ImportsSystem.Data.SqlClient

PublicClassuser

InheritsSystem.Web.UI.Page

PrivateconnectingstringAsString

PrivatemyConnAsSqlConnection

PrivatedsAsDataSet

PrivatemyAdapterAsSqlDataAdapter

ProtectedWithEventsButton2AsSystem.Web.UI.WebControls.Button

ProtectedWithEventsLabel1AsSystem.Web.UI.WebControls.Label

ProtectedWithEventsLabel2AsSystem.Web.UI.WebControls.Label

ProtectedWithEventsTextBox1AsSystem.Web.UI.WebControls.TextBox

ProtectedWithEventsLabel3AsSystem.Web.UI.WebControls.Label

ProtectedWithEventsTextBox2AsSystem.Web.UI.WebControls.TextBox

ProtectedWithEventsLogin_trnameAsSystem.Web.UI.HtmlControls.HtmlTableRow

ProtectedWithEventsLogin_trpasswordAsSystem.Web.UI.HtmlControls.HtmlTableRow

PrivatemyCmdAsSqlCommand

PrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load

'在此处放置初始化页的用户代码

connectingstring="datasource=(local);Database=library;uid=sa;pwd=123456;"

myConn=NewSqlConnection(connectingstring)

EndSub

PublicFunctionCheckUserberInfo(ByValUserstrAsString,ByValPwdstrAsString)AsInteger

IfmyConn.State=ConnectionState.ClosedThen

myConn.Open()

EndIf

DimsqlstrAsString

IfPwdstr=""Then

sqlstr="select*frommanagewheremanageid='"+Userstr.Trim+"'andPassisnull"

Else

sqlstr="select*frommanagewheremanageid='"+Userstr.Trim+"'andPass='"+Pwdstr+"'"

EndIf

Fill(sqlstr)

Ifds.Tables(0).Rows.Count=0Then

Close()

Return-1

EndIf

ds.Clear()

Close()

Return1

EndFunction

PublicSubOpen()

myConn.Open()

EndSub

PublicSubClose()

myConn.Close()

EndSub

PublicSubFill(ByValsqlstrAsString)

myAdapter=NewSqlDataAdapter(sqlstr,myConn)

ds=NewDataSet

myAdapter.Fill(ds)

EndSub

PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click

IfCheckUserberInfo(TextBox1.Text,TextBox2.Text)=1Then

Session("UserID")=TextBox1.Text.ToString

Response.Redirect("delete.aspx")

Else

Response.Write

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1