图书馆管理系统Web程序设计课程设计.docx
《图书馆管理系统Web程序设计课程设计.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统Web程序设计课程设计.docx(30页珍藏版)》请在冰点文库上搜索。
图书馆管理系统Web程序设计课程设计
洛阳理工学院
课程设计报告
课程名称Web程序设计课程设计
设计题目图书馆管理系统
专业计算机科学与技术
完成日期2014.6.27
课程设计任务书
设计题目:
图书馆管理系统
设计容与要求:
1、问题描述
了解网上图书馆管理相关流程,实现B/S模式的图书馆管理系统。
2、基本要求
(1)数据库设计要符合式要求。
(2)能对图书按照)等信息进行添加、删除、修改操作。
(3)提供必要查询功能,例如输入图书名称,能查找出该图书的相关信息,并展示图书信息。
(4)针对图书馆管理系统,锻炼学生的分析、设计能力,培养学生对软件文档规的书写能力;
(5)以图书馆管理业务为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型;完成图书馆管理系统的软件可行性分析、项目开发计划、需求规格说明、概要设计和详细设计(结构化设计方法和面向对象设计方法可任选一种);
(6)做好答辩工作
指导教师:
刁文广
2014年6月19日
课程设计评语
成绩:
指导教师:
年月日
目 录
第1章需求分析
1.1编写目的
编写本报告的目的是明确本系统的详细需求,提供给使用单位确认系统的功能和性能,并在此基础上进行修改和完善,同时作为设计人员进行软件设计的依据和使用单位的验收标准。
1.2可行性分析
1.2.1背景分析
近年来,随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规和实用的图书管理系统,对图书资料进行集中统一的管理。
另一方面,IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。
图书管理工作面对大量的可模块化处理的信息,是当今信息革命的一个重要阵地。
我们开发图书管理信息系统就是采用现代化的信息管理方式代替手工管理方式,提高图书管理工作效率,作到信息的规管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。
1.2.2经济可行性
目标系统开发需求比较低,加上具有成熟的软硬件环境,所以在软硬件的支出上十分有限。
而且,目标系统并不是十分的复杂,开发的周期较短,人员经济支出有限。
当系统开发完实际运行后,将很大程度上提高计算机的功能,在为使用者带来便利的同时,也为系统的进一步推广创造了条件。
这带来的经济回报将远超过支出,并且最重要的一点是该软件的开发可以给我们对系统的开发有个全面的认识。
从经济角度考虑,此信息系统开发可行。
1.1.3技术可行性
此次信息系统开发是大学专业知识的一次综合应用与提高,我以自己的电脑完成系统开发。
我的电脑能满足系统开发的要求。
硬件完全可以胜任、从技术角度考虑,我将参考与查阅相关信息来完成此系统、因此此信息系统开发可行。
1.3功能需求分析
1.3.1待开发系统概述
立足于校园实际,着眼于未来发展,建成符合标准化协议、通用性较强、实用的系统,以提高图书信息的现代化管理水平,实现信息资源的共享。
图书管理系统是一种基于集中统一规划的数据库数据管理新模式。
在对图书、读者的管理,其实是对图书、读者数据的管理。
本系统的建成无疑会为管理者对图书管理系统提供极大的帮助。
使用该系统之后,图书馆管理人员可以管理读者的登记、图书的购入、借出、归还以及注销等;还可以查询某位读者、某本图书的借阅情况,对当前借阅情况给出一些统计,给出统计表格,以全面掌握图书的流通情况。
本系统的宗旨是提高图书管理工作的效率,减少相关人员的工作量,使学校的图书管理工作真正做到科学、合理的规划,系统、高效的实施。
1.3.2产品功能
(1)登录系统:
注销用户、系统退出。
(2)管理:
用户管理、图书管理、读者管理、借阅管理。
(3)查询:
图书查询、读者查询、借阅查询。
(4)报表打印:
所有图书、借出图书、库存图书、所有读者。
(5)帮助:
使用说明、关于。
(6)图书管理员不定期地对图书信息进行添加、修改和删除等操作,在图书尚未归还的情况下不能对图书信息进行删除。
也可以对读者信息进行添加、修改、删除等操作,在读者还有未归还的图书的情况下不能进行删除读者信息。
系统管理员主要进行图书管理员权限的设置、读者类别信息的设置、图书类别的设置以及罚款和赔偿标准的设置、数据备份和数据恢复等处理。
1.4系统性能分析
为了保证系统能够长期、安全、稳定、可靠、高效的运行,图书管理系统应该满足以下的性能需求:
1.系统处理的准确性和及时性
系统处理的准确性和及时性是系统的必要性能。
在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学校对信息处理的需求。
2.系统的开放性和系统的可扩充性
图书管理系统在开发过程中,应该充分考虑以后的可扩充性。
例如用户查询的需求也会不断的更新和完善。
3.系统的易用性和易维护性
图书管理系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。
这就要求系统能够提供良好的用户接口,易用的人机交互界面。
要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。
4.系统的标准性
系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。
所有这些都要符合主流国际、国家和行业标准。
第2章数据库设计
2.1数据库概念级设计(E-R图)
2.1.1实体图
图2-1管理员实体图
管理员实体的属性有:
登陆ID、密码。
图2-2读者实体图
读者实体的属性有:
卡号、密码、、班级、性别等。
图2-3图书实体图
图书实体的属性有:
书号、书架、书名、单价、等。
2.1.2系统E-R图
图2-4系统E-R图
2.2数据库逻辑级设计
表2-1读者信息表
序号
字段名
类型(宽度、精度)
取值约束
空否
默认值
主键/外键
注释
1
ReaderNum
varchar
15
否
无
是
卡号
2
Psw
varchar
20
否
无
是
密码
3
readerName
varchar
20
否
无
是
4
Class
Varchar
50
否
无
否
班级
5
Xibie
Varchar
50
否
无
否
系别
6
Sex
Varchar
20
否
无
否
性别
7
Borrownum
Int
15
否
无
否
已借数量
8
Other
varchar
50
否
无
否
其它
表2-2图书信息表
序号
字段名
类型(宽度、精度)
取值约束
空否
默认值
主键/外键
注释
1
bookid
varchar
15
否
无
是
条形码
2
publish
varchar
20
否
无
否
3
bookname
varchar
20
否
无
否
书名
4
bookwriter
Varchar
50
否
无
否
作者
5
price
float
5
否
无
否
单价
6
bookclass
Varchar
20
否
无
否
类型
7
Shujia
Varchar
20
否
无
否
书架
8
Kucun
Int
15
否
无
否
库存
表2-3管理员信息表
序号
字段名
类型(宽度、精度)
取值约束
空否
默认值
主键/外键
注释
1
adminid
varchar
15
否
无
是
ID
2
adminpwd
varchar
20
否
无
是
密码
表2-4借阅信息表
序号
字段名
类型(宽度、精度)
取值约束
空否
默认值
主键/外键
注释
1
ReaderNum
varchar
15
否
无
是
卡号
2
bookid
varchar
20
否
无
是
条形码
3
Borrowdate
varchar
20
否
无
否
借出日期
4
Senedate
varchar
20
否
无
否
应还日期
第3章概要设计
3.1系统功能设计
图3-1系统功能图
3.2系统功能描述
1.登录模块
输入用户名和密码,如果用户名和密码正确,进入主控制平台;否则提示用户明确的错误信息。
2.系统管理模块
(1)用户管理子模块:
用于系统管理员进行用户权限设置和用户的浏览,包括用户密码的用户权限的更改,同时为保障系统安全需要进行输入检验,并进行必要的信息提示。
一般用户不能使用该项功能。
(2)重新登录子模块:
其作用是提供用户在不退出系统的情况下可以用另外的账户登录系统。
(3)退出系统子模块;退出系统。
3.读者管理子模块
(1)查询读者子模块:
用于查询特定读者的账号及其他信息。
(2)管理读者子模块:
用于管理由于各种原因引起的读者加入与减少,提供读者的添加删除及浏览功能。
4.图书管理子模块
包括以下几个功能模块:
(1)查询图书子模块:
用于查询图书借阅情况,帮助读者了解是否剩余有自己需要的图书。
(2)图书管理子模块:
用于在新书上架及图书因为各种原因丢失情况下图书的添加删除,将图书信息录入数据库。
(3)图书档案管理子模块:
对图书进行添加,删除,修改
(4)图书类型管理:
添加,删除图书的种类。
以便读者更快的查询到所需的书籍。
5.借书还书模块:
(1)借书子模块:
用于显示并更新借书记录。
(2)还书子模块:
用于显示并更新还书记录。
(3)借书总表子模块:
用于显示图书借阅信息。
6.报表管理模块:
包括读者报表,图书报表和借书报表,管理员表。
第4章详细设计与实现
4.1详细设计概述
依据软件工程的基本原理,详细设计阶段的根本任务是确定应该怎样具体实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在系统实现阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。
具体来说就是把经过总体设计得到的各个模块详细的加以描述。
AdminManage类:
包含添加、删除、修改管理员的方法。
BookcaseManage类:
书架信息的添加、删除、修改。
BookManage类:
图书信息的添加、删除、修改。
DataBase类:
数据库的创建。
BrrowandBackManage类:
图书的借还操作方法的类。
ReaderManage类:
主要包含读者的添加,删除,修改信息的操作的方法。
Images文件夹:
程序中用到的图片放在此文件夹中。
4.2系统详细设计
4.2.1登陆页面
登陆页面采用简单的DIV分层和CSS布局,以及表格table以及背景图的结合设计出一个简洁的登陆界面,其中验证码是包含一个随机数生成的Random类的方法生成的。
图4-1登陆页面设计
后台代码如下:
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("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("Default.aspx");
}
else
{
Response.Write("");
}
}
}
protectedvoidbtnCancel_Click(objectsender,EventArgse)
{
txtAdmin.Text=txtPwd.Text=txtCode.Text=string.Empty;
}
}
4.2.2图书添加
图书添加页面有多个Label,TextBox控件,以及一定数量DropdownList控件调用BookManage类中的方法进行图书的添加。
图4-2添加图书页面
后台代码如下:
publicpartialclassBookManage_AddBook:
System.Web.UI.Page
{
ValidateClassvalidate=newValidateClass();
BookcaseManagebookcasemanage=newBookcaseManage();
BTypeManagebtypemanage=newBTypeManage();
BookManagebookmanage=newBookManage();
protectedvoidPage_Load(objectsender,EventArgse)
{
this.Title="添加修改图书¦信息页面";
if(!
IsPostBack)
{
DataSetbcaseds=bookcasemanage.GetAllBCase("tb_bookcase");
ddlBCase.DataSource=bcaseds;
ddlBCase.DataTextField="name";
ddlBCase.DataBind();
DataSetbtypeds=btypemanage.GetAllBType("tb_booktype");
ddlBType.DataSource=btypeds;
ddlBType.DataTextField="typename";
ddlBType.DataBind();
if(Request["bookcode"]==null)
{
btnAdd.Enabled=true;
txtInTime.Text=DateTime.Now.ToShortDateString();
}
else
{
btnSave.Enabled=true;
txtBCode.ReadOnly=txtBName.ReadOnly=true;
txtBCode.Text=Request["bookcode"].ToString();
bookmanage.BookCode=txtBCode.Text;
DataSetbookds=bookmanage.FindBookByCode(bookmanage,"tb_bookinfo");
txtBName.Text=bookds.Tables[0].Rows[0][1].ToString();
ddlBType.SelectedValue=bookds.Tables[0].Rows[0][2].ToString();
txtAuthor.Text=bookds.Tables[0].Rows[0][3].ToString();
txtTranslator.Text=bookds.Tables[0].Rows[0][4].ToString();
txtPub.Text=bookds.Tables[0].Rows[0][5].ToString();
txtPrice.Text=bookds.Tables[0].Rows[0][6].ToString();
txtPage.Text=bookds.Tables[0].Rows[0][7].ToString();
ddlBCase.SelectedValue=bookds.Tables[0].Rows[0][8].ToString();
txtStorage.Text=bookds.Tables[0].Rows[0][9].ToString();
txtInTime.Text=bookds.Tables[0].Rows[0][10].ToString();
txtOper.Text=bookds.Tables[0].Rows[0][11].ToString();
}
}
}
protectedvoidbtnAdd_Click(objectsender,EventArgse)
{
ValidateFun();
bookmanage.BookCode=txtBCode.Text;
if(bookmanage.FindBookByCode(bookmanage,"tb_bookinfo").Tables[0].Rows.Count>0)
{
bookmanage.BookName=txtBName.Text;
bookmanage.Type=ddlBType.SelectedValue;
bookmanage.Author=txtAuthor.Text;
bookmanage.Translator=txtTranslator.Text;
bookmanage.PubName=txtPub.Text;
bookmanage.Price=Convert.ToDecimal(txtPrice.Text);
bookmanage.Page=Convert.ToInt32(txtPage.Text);
bookmanage.Bcase=ddlBCase.SelectedValue;
bookmanage.Storage=Convert.ToInt32(txtStorage.Text)+Convert.ToInt32(bookmanage.FindBookByCode(bookmanage,"tb_bookinfo").Tables[0].Rows[0][9].ToString());
bookmanage.InTime=Convert.ToDateTime(txtInTime.Text);
bookmanage.Oper=txtOper.Text;
bookmanage.UpdateBook(bookmanage);
}
else
{
bookmanage.BookName=txtBName.Text;
bookmanage.Type=ddlBType.SelectedValue;
bookmanage.Author=txtAuthor.Text;
bookmanage.Translator=txtTranslator.Text;
bookmanage.PubName=txtPub.Text;
bookmanage.Price=Convert.ToDecimal(txtPrice.Text);
bookmanage.Page=Convert.ToInt32(txtPage.Text);
bookmanage.Bcase=ddlBCase.SelectedValue;
bookmanage.Storage=Convert.ToInt32(txtStorage.Text);
bookmanage.InTime=Convert.ToDateTime(txtInTime.Text);
bookmanage.Oper=txtOper.Text;
bookmanage.AddBook(bookmanage);
}
Response.Redirect("BookManage.aspx");
}
protectedvoidbtnSave_Click(objectsender,EventArgse)
{
ValidateFun();
bookmanage.BookCode=txtBCode.Text;
bookmanage.BookName=txtBName.Text;
bookmanage.Type=ddlBType.SelectedValue;
bookmanage.Author=txtAuthor.Text;
bookmanage.Translator=txtTranslator.Text;
bookmanage.PubName=txtPub.Text;
bookmanage.Price=Convert