图书管理系统.docx
《图书管理系统.docx》由会员分享,可在线阅读,更多相关《图书管理系统.docx(43页珍藏版)》请在冰豆网上搜索。
图书管理系统
图书管理系统
1.课程设计的目的
随着社会的发展,每天都有数以十万、百万计的图书/期刊问世,图书馆的图书和期刊也在迅速的增加。
面对这些数量庞大的图书管理,需要处理复杂的读者信息,频繁的借还图书信息,图书增减信息,如果仍然采用传统的人工管理方法,既费时费力,更容易出错。
信息技术的发展给图书的管理带来了新的机遇。
使用图书管理系统对图书馆进行管理,这不仅解决了一系列的弊端和问题,更加提高了工作效率。
推行图书管理自动化的基本目标,在於把图书馆由「图书管理的农业社会」带入「图书馆的工业社会」,并以创新具工业化作业精神的服务制度,来满足读者的资讯需求。
图书馆唯有迈向自动化,才能面对资讯消费者新奥的需求。
图书馆自动化的主要目标,在於加强服务而不在於精简人力。
换言之,其效益不在於节省现有的人力、物力,而在於提供许多尚未自动化作业时,所无法提供之服务,期望以最快的速度将资讯传递给读者做最适当之运用。
以信息化高效管理代替旧的手工作坊。
开发图书借阅系统,进一步提高办学效益和现代化信息管理水平。
建立学院数字化WEB图书管理系统,为广大师生提供方便、快捷的资料信息获取渠道和手段。
减轻图书管理员的负担,节省人力物力开支。
本课题设计并实现了基于Web的图书馆管理系统,该系统采用现今比较流行的ASP.NET语言,结合SQLServer数据库,实现了图书的借阅、查询、管理等基本功能。
系统不仅维护方便,节省了图书馆的资源,方便图书馆进行图书管理,同时,用户也能够更容易更直观的查询书籍、管理藏书,使借书、还书、查书的过程大大简化,更加的方便和容易。
总之,建立图书馆的计算机自动化管理系统,不但可以大大提高图书馆图书流通率,而且推动了社会文化生活的进步。
2.设计方案论证
2.1系统实现功能
主要工作是实现了图书信息功能,图书借还功能等。
图书信息功能是实现了图书的数字管理,能方便管理员快速查看图书信息;借书功能,用户可以通过此功能选择是否借出检索的书籍;还书功能,读者可以查看自己所借书籍信息;管理员可以查看借书还书历史和违规书籍信息;查看书籍具体信息,管理员可以查看书籍的具体信息以及在图书馆的存储状态。
2.2系统分析
2.2.1系统开发的可行性分析
可行性分析(FeasibilityAnalysis)也称为可行性研究,是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。
可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
为了确定开发具有可行性,对本系统主要进行了以下四个方面的分析。
(1)经济可行性。
经济可行性主要是对项目的经济效益进行评价。
可利用现有的服务器,装上IIS服务器软件,即可成为一台IIS服务器,客户只要连上INTERNET利用自己的机器即可使用系统,对企业不构成经济的负担,系统成本主要集中在系统软件的开发上,当系统投入运行后可以为企事业单位节约大量的人力,物力。
所带来的效益远远大于系统软件的开发成本。
在经济上完全可行。
本系统对系统开发者来说并不需要太高的成本支出,只是对系统的管理者付出管理报酬即可,而且开发周期不需要太长,节省了人力、物力、财力资源,所以本系统在经济上是可行的。
(2)技术上的可行性。
技术上的可行性分析主要是分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。
在软件方面,本系统采用的是ASP进行开发,前台网页设计使用的是MicrosoftVisualStudio2010,而数据库系统采用的是MicrosoftSQL2005。
通过分析,在软、硬件方面现有工具与环境完全可以实现系统的开发,因此具有技术上的可行性。
(3)时机可行性。
时机可行性是分析系统开发时机是否成熟。
目前越来越多的应用程序都已经是转向基于Web的开发,并且Internet已经广泛使用,因此系统的设计具有时机可行性。
(4)法律可行性。
本系统开发不会侵犯他人、集体或国家利益,不存在侵权等问题,不违反国家法律,因此具有法律可行性。
综上所述,本系统开发目标已明确,在技术和经济等方面具备可行性,并且投入少、见效快,因此系统的开发是完全可行的。
2.2.2需求分析
长期以来,人们使用传统的人工方式管理图书馆的日常业务,其操作流程比较繁琐。
在借书时,读者首先将要借的书和借阅证交给工作人员,工作人员然后将每本书的信息卡片和读者的借阅证放在一个小格栏里,最后在借阅证和每本书贴的借阅条上填写借阅信息。
在还书时,读者首先将要还的书交给工作人员,工作人员然后根据图书信息找到相应的书卡和借阅证,并填写相应的还书信息,了解用户的明确需求,WEB图书管理系统需要满足来自三方面的需求,这三个方面分别是图书借阅者、图书馆工作人员和图书馆管理人员。
图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;图书馆工作人员对图书借阅者的借阅及还书要求进行操作,同时形成借书或还书报表给借阅者查看确认;图书馆管理人员的功能最为复杂,包括对工作人员、图书借阅者、图书进行管理和维护,及系统状态的查看、维护并生成催还图书报表。
图书借阅者可直接查看图书馆图书情况,如果图书借阅者根据本人借书证号和密码登录系统,还可以进行本人借书情况的查询和维护部分个人信息。
一般情况下,图书借阅者只应该查询和维护本人的借书情况和个人信息,若查询和维护其他借阅者的借书情况和个人信息,就要知道其他图书借阅者的借书证号和密码。
这些是很难得到的,特别是密码,所以不但满足了图书借阅者的要求,还保护了图书借阅者的个人隐私。
图书馆工作人员有修改图书借阅者借书和还书记录的权限,所以需对工作人员登陆本模块进行更多的考虑。
在此模块中,图书馆工作人员可以为图书借阅者加入借书记录或是还书记录,并打印生成相应的报表给用户查看和确认。
图书馆管理人员功能的信息量大,数据安全性和保密性要求最高。
本功能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、工作人员和管理人员信息查看及维护。
图书馆管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、添加、删除和修改图书借阅者的基本信息,浏览、查询、统计图书馆的借阅信息,但不能添加、删除和修改借阅信息,这部分功能应该由图书馆工作人员执行,但是,删除某条图书借阅者基本信息记录时,应实现对该图书借阅者借阅记录的级联删除。
并且还应具有生成催还图书报表,并打印输出的功能。
2.3数据库设计
(1)管理员权限设置表tb_admSet,如表1所示。
只有系统分配的用户才能操作图书馆管理系统,而用户的权限又各不相同。
表1管理员权限设置表
字段名
数据类型
长度
主键否
描述
userName
Varchar
80
否
管理员名称
systemSet
bit
1
否
系统设置
readerManage
bit
1
否
读者管理
bookManage
bit
1
否
图书管理
bookBorrow
bit
1
否
图书借还
systemSearch
bit
1
否
系统查询
(2)图书借阅表tb_bookBorrow,如表2所示。
图书借阅信息实体,用于存储所有图书借阅情况的信息,以准确地记录每本图书的借阅信息。
表2图书借阅表
字段名
数据类型
长度
主键否
描述
bookBarcode
varchar
50
否
图书条形码
bookName
varchar
20
否
图书名称
borrowTime
datetime
8
否
借阅日期
returnTime
datetime
8
否
应还日期
readerBarCode
varchar
50
否
读者条形码
readerName
varchar
20
否
读者姓名
isReturn
bit
1
否
是否归还
(3)书架信息表tb_bookcase,如表3所示。
图书馆对图书的分类,通常是将不同类型的图书分别放置在相应类型的书架上。
书架信息实体,用于存储图书馆中所有的书架信息。
表3书架信息表
字段名
数据类型
长度
主键否
描述
bookcaseID
Int
4
是
书架编号
bookcaseName
varchar
80
否
书架名称
(4)图书信息表tb_bookInfo,如表4所示。
不同的图书,会有不同的图书信息。
对这些图书信息进行详细的记录,方便了图书的分类和查询。
图书信息实体,用于存储所有图书的相关信息。
表4图书信息表
字段名
数据类型
长度
主键否
描述
bookBarCode
varchar
100
是
图书条形码
bookName
varchar
100
否
图书名称
bookType
int
4
否
图书类型
bookcase
int
4
否
书架类别
bookConcern
varchar
100
否
出版社名称
author
varchar
80
否
作者名称
price
money
8
否
图书价格
borrowSum
int
4
否
借阅次数
(5)图书类型信息表tb_bookType如表5所示。
图书馆会有不同类型的图书,为了避免图书归类发生混乱,必须建立一个图书类型信息实体,用于存储图书的类型信息。
表5图书类型信息表
字段名
数据类型
长度
主键否
描述
typeID
Int
4
否
图书类型编号
typeName
varchar
50
否
类型名称
borrowDay
Int
4
否
可借天数
(6)图书馆信息表tb_library,如表6所示。
每个事物都会有其自身的历史背景,图书馆也不例外。
为了记录图书馆的历史背景及其相关的信息,需要建立一个图书馆信息实体,用于存储图书馆的有关信息。
表6图书馆信息表
字段名
数据类型
长度
主键否
描述
libraryName
varchar
80
否
图书馆名称
curator
varchar
80
否
馆长名称
tel
varchar
100
否
联系电话
address
varchar
200
否
联系地址
email
varchar
100
否
电子邮件
net
varchar
200
否
网址
upbuildTime
datetime
8
否
建馆时间
remark
varchar
500
否
备注
(7)读者类型信息表tb_readerType,如表7所示。
在读者群体中,会有不同的分类,例如借阅图书的读者可能是教师、学生和市民等,所以对读者人群进行有效的分类是至关重要的。
读者类型信息实体,用于存储读者的类型信息。
表7读者类型信息表
字段名
数据类型
长度
主键否
描述
id
int
4
是
类型编号
type
varchar
50
否
类型名称
num
varchar
50
否
可借数量
(8)读者信息表tb_readerInfo,如表8所示。
当有读者借阅图书时,要对读者的各项信息进行记录,以方便归还图书和已借阅图书的历史查询,读者信息实体,用于存储所有借阅图书的读者信息。
表8读者信息表
字段名
数据类型
长度
主键否
描述
readerBarCode
varchar
50
是
读者条形码
readerName
varchar
50
否
读者名称
sex
char
10
否
读者性别
readerType
varchar
50
否
读者类型
certificateType
Varchar
50
否
证件类型
certificate
Varchar
50
否
证件号码
tel
Varchar
50
否
联系电话
email
Varchar
50
否
电子邮件
remark
varchar
500
否
备注
(9)管理员信息表tb_user,如表9所示。
当管理员登录图书馆管理系统时,需要通过登录窗口验证成功后才能进入系统主页。
管理员信息实体,用于存储管理员的登录名称和登录密码。
表9管理员信息表
字段名
数据类型
长度
主键否
描述
userId
int
4
是
管理员编号
userName
varchar
50
否
管理员名称
userPwd
varchar
50
否
管理员密码
3.设计结果与分析
本网站共分系统设置、读者管理、图书管理、图书借还、系统查询以及更改口令等几大模块,其母版界面如图1所示。
图1母版页
3.1登录界面
登录界面,用户需要密码登录,进入系统,登录设计效果图如图2所示。
图2登录界面
其代码设计如下:
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
publicpartialclassLogin:
System.Web.UI.Page
{
OperatorClassoperatorclass=newOperatorClass();
AdminManageadminmanage=newAdminManage();
ReaderManagereadermanage=newReaderManage();
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidbtnLogin_Click(objectsender,EventArgse)
{
if(txtAdmin.Text==string.Empty)
{
Response.Write("");
return;
}
else
{
DataSetadminds=null;
DataSetreaderds=null;
adminmanage.Name=txtAdmin.Text;
adminmanage.Pwd=txtPwd.Text;
adminds=adminmanage.Login(adminmanage);
readermanage.ID=txtPwd.Text;
readermanage.Name=txtAdmin.Text;
readerds=readermanage.ReaderLogin(readermanage);
if(adminds.Tables[0].Rows.Count>0&&txtCode.Text==Request.Cookies["CheckCode"].Value)
{
Session["Name"]=txtAdmin.Text;
Response.Redirect("Global/Default.aspx");
}
elseif(readerds.Tables[0].Rows.Count>0&&txtCode.Text==Request.Cookies["CheckCode"].Value)
{
Session["Name"]=txtAdmin.Text;
Session["readid"]=txtPwd.Text;
Session["role"]="Reader";
Response.Redirect("Global/Default.aspx");
}
else
{
Response.Write("");
}
}
}
protectedvoidbtnCancel_Click(objectsender,EventArgse)
{
txtAdmin.Text=txtPwd.Text=txtCode.Text=string.Empty;
}
}
3.2读者管理
3.2.1读者信息的添加与修改
输入读者的各项信息,即可添加或修改读者信息,如图3所示。
图3添加/修改读者信息页面
代码如下:
publicpartialclassReaderManage_AddReader:
System.Web.UI.Page
{
ValidateClassvalidate=newValidateClass();
RTypeManagertypemanage=newRTypeManage();
ReaderManagereadermanage=newReaderManage();
protectedvoidPage_Load(objectsender,EventArgse)
{
this.Title="添加/修改读者信息页面";
if(!
IsPostBack)
{
if(Request["readerid"]==null)
{
btnAdd.Enabled=true;
txtReaderID.Text=readermanage.GetReaderID();
txtBirthday.Text=txtDate.Text=DateTime.Now.ToShortDateString();
txtDate.Text=txtDate.Text=DateTime.Now.ToShortDateString();
}
else
{
btnSave.Enabled=true;
txtReaderID.Text=Request["readerid"].ToString();
readermanage.ID=txtReaderID.Text;
DataSetreaderds=readermanage.FindReaderByCode(readermanage,"tb_reader");
txtReader.Text=readerds.Tables[0].Rows[0][1].ToString();
ddlSex.SelectedValue=readerds.Tables[0].Rows[0][2].ToString();
ddlRType.SelectedValue=readerds.Tables[0].Rows[0][3].ToString();
txtBirthday.Text=readerds.Tables[0].Rows[0][4].ToString();
ddlPaperType.SelectedValue=readerds.Tables[0].Rows[0][5].ToString();
txtPaperNum.Text=readerds.Tables[0].Rows[0][6].ToString();
txtTel.Text=readerds.Tables[0].Rows[0][7].ToString();
txtEmail.Text=readerds.Tables[0].Rows[0][8].ToString();
txtDate.Text=readerds.Tables[0].Rows[0][9].ToString();
txtOper.Text=readerds.Tables[0].Rows[0][10].ToString();
txtRemark.Text=readerds.Tables[0].Rows[0][11].ToString();
}
DataSettypeds=rtypemanage.GetAllRType("tb_readertype");
ddlRType.DataSource=typeds;
ddlRType.DataTextField="name";
ddlRType.DataBind();
}
}
protectedvoidbtnAdd_Click(objectsender,EventArgse)
{
ValidateFun();
readermanage.ID=txtReaderID.Text;
readermanage.Name=txtReader.Text;
if(readermanage.FindReaderByName(readermanage,"tb_reader").Tables[0].Rows.Count>0)
{
Response.Write("");
return;
}
readermanage.Sex=ddlSex.Text;
readermanage.Type=ddlRType.Text;
readermanage.Birthday=Convert.ToDateTime(txtBirthday.Text);
readermanage.PaperType=ddlPaperType.Text;
readermanage.PaperNum=txtPaperNum.Text;
readermanage.Tel=txtTel.Text;
readermanage.Email=txtEmail.Text;
readermanage.CreateDate=Convert.ToDateTime(txtDate.Text);
readermanage.Oper=txtOper.Text;
readermanage.Remark=txtRemark.Text;
readermanage.AddReader(readermanage);
Response.Redirect("ReaderManage.aspx");
}
protectedvoidbtnSave_Click(objectsender,EventArgse)
{
ValidateFun();
readermanage.ID=txtReaderID.Text;
readermanage.Name=txtReader.Text;
readermanage.Sex=ddlSe