2024年3月15日发(作者:)

需求分析、

本图书管理系统就是将传统图书馆业务的手工操作转变成由计算机馆理,即

图书馆的图书期刊、音像资料等各种载体文献的采编、典藏、流通、检索及常规

业务管理等工作,利用计算机技术,使得图书馆的管理更智能、更有效的进行,

最终的目的以方便图书借阅者方便借阅及管理者高效、方便管理为目的。

1、 图书馆管理系统需求,通过调查,要求系统需要有以下功能:

⑴ 由于操作人员的计算机知识普遍较差,要求有良好的人机界面;

⑵ 由于该系统的使用对象多,要求有较好的权限管理;

⑶ 原始数据修改简单方便,支持多条件修改

⑷ 方便的数据查询,支持多条件查询;

⑸ 在相应的权限下,删除数据方便简单,数据稳定性好;

⑹ 数据计算自动完成,尽量减少人工干预;

2、 开发环境

本系统的设计是在Windows 2003以上中文版操作系统环境下,用C#语言实

现功能,使用Microsoft Visual Studio 2010平台下开发设计的。数据库是使

用SQL server 2000中文版,它是基于客户机/服务器体系结构的多线程、高性

能的数据库管理系统。由于它具有对数据集中进行管理,保证数据的安全性和完

整性,可以优化系统性能,支持开放性等优点,在各个行业中都得到了广泛的应

用。

3、 系统设计目标

系统功能依据用户需求而设计,主要包括信息管理对象的特征、事物流程的

内容和数据流量,根据用户需求和方便用户使用的原则确定相应的功能模块。

本系统为学校的图书馆信息而设计,实现信息处理的自动化、规范化,主要

用于处理图书日常借阅和还书、图书入库、各种查询操作,系统具有以下功能。

1)图书借阅处理

2)图书与读者信息查询与修改、删除

3)图书入库与图书的信息修改、删除

4)员工信息的修改、删除

4、 系统功能设计

要求系统实现图书馆日常管理事务最主要的功能,包括图书的借出于还回,

图书信息的录入、修改和查询,读者信息的录入、修改和查询,员工信息的录入、

修改和查询。实现这些基本功能,组建了图书管理系统的基本框架,根据功能的

关联关系和集中分组的原则,将系统细化的结构图。

5、 系统的性能要求

当用户在暂时不进行任何操作时,退出登陆。用户只能在许可的权限范围内

进行对系统的操作。系统需要具有一定容错能力和数据恢复能力,为了让客户满

意延迟尽量保持在用户可以忍受的范围内。

系统将来要面对系统扩充方面的变动,诸如在线支付等方面;系统需要提供

简单的查询条件保存与提取功能;系统没有选择模块化,对于今后系统扩展有一

定影响。

6、 系统功能需求

密码设置:每个操作员均有自己的密码,可以防止非本系统人员进入本系统;

又因每个人的权限不一致,故可以防止越权操作。

资料维护:为了存放图书、读者档案的全部数据,本系统将每一本图书和每

位读者的信息进行管理。系统维护包括对各种表记录的修改、删除、添加等操作。

系统查询:可以按图书编号、借阅证编号等相关信息进行查询

系统管理:进行员工管理、数据备份和数据恢复。

其它操作:包括修改密码、添加用户、页面设置等

总体设计

1、 设计目标

本系统是根据图书馆的具体需求应用而开发的,能够实现图书的管理工作,

学校图书管理系统的开发主要要实现的目标有以下几个方面:

◆ 界面设计美观,人机交互界面友好,数据存储安全、可靠。

◆ 信息分类清晰、准确。

◆ 强大的查询功能,保证数据查询的灵活性。

◆ 实现对图书借阅和归还过程的全程数据信息跟踪。

◆ 提供图书借阅排行榜,为图书管理员提供了真实的数据信息。

◆ 提供灵活、方便的权限设置功能,使整个系统的管理分工明确。

◆ 具有易维护性和易操作性,系统运行稳定,安全可靠。

2、 系统总体功能模块设计

根据需求分析与系统功能设计目标,结合实际情况,图书借阅信息管理主要

功能为用户的设定、读者管理、数据的录入和发布、数据的修改、数据的删除等。

系统交互:

系统总体结构:

3、 各子系统管理功能描述

Windows部分的程序由登录界面和主界面构成,主界面又由各个子界面组

成。其程序结构图如图:

(1)系统管理

1、 角色管理

不同的角色对本系统具有不同的操作权,用户角色分为两种:

a、系统管理员:拥有本系统提供的所有功能,可对其他用户进行管理。

b、读者:即一般的图书借阅对象,拥有查询功能。

2、 用户管理

对本系统的用户进行管理,具有操作又添加、删除用户,修改所属角色和密码。

3、 密码修改

供当前用户修改自己的登录密码。

(2)图书入库管理

1、 新书分类编目入库

图书馆工作人员将新购进的书按照学科种类编目,给予唯一的书号,然后上

架入库,图书信息录入图书信息表中。

2、 更新库存图书信息

更新库存图书信息包括借书更新和还书更新,当借书或还书的行为发生时要

同时记录在借书信息和图书信息表中。

(3)查询功能

查询图书的信息,查询读者的借阅情况。

(4)借书/还书管理

1、 借书管理

当读者借书时,系统根据借书证号识别读者身份,核对读者的借书信息作出

判断是否可以借书、还可借几本,借阅后记录在借书信息并修改书库图书信息。

2、 还书管理

当读者还书时,系统根据借书证号识别读者身份,核对读者的借书信息作出

判断是否超期、是否罚款及罚款多少,还书成功后修改图书书库信息。

4、 数据库设计

数据是整个系统运行的基础,数据库设计的合理性直接影响数据库应用系统

的功能实现和效率。数据库概念结构设计是在需求分析的基础上,设计出能够满

足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。

这个阶段不用考虑所采用的数据库管理系统、操作系统类型、机器类型等问题。

计算机信息系统以数据库为核心,在数据库管理系统支持下,进行信息收集、

整理、存储、检索、更新、加工、统计和传播等操作。数据库系统是在文件系统

的基础上发展而来的,经历了层次数据库、网状数据库、关系数据库三个阶段。

各实体间关系图:

1、 界面设计

登录界面设计:

进入网上图书馆后,会进入登陆页面,当访问者输入用户ID和密码后,按确认即会进

入我的账户页面,此后便可进行各种操作了。

图书借阅界面设计:

当有学生借书时,图书馆工作人员往往要进行核对,确定该学生是否可以借书或者有

书尚未归还等,学生则需要提供所借图书的信息。

图书归还界面设计:

还书只要将要还的书交给图书馆工作人员,工作人员会根据图书的编号从借书记录中消

去该记录。“图书编号”是整个还书过程中唯一要处理的数据。

图书续借管理界面设计:

续借过程只需要提供图书编号,图书馆工作人员即可根据该编号进行续借操作。续借

必须在借书的一个月内进行,工作人员会根据输入图书编号返回情况进行判断是否可续借。

图书信息管理界面设计:

图书馆引进新书时需要向系统输入该书的各种信息,之后才能上架。除了新书引进外,

由于输入错误等原因,有时候还需要对一本书的信息进行修正,同样也要涉及众多的信息。

报表管理界面设计:

图书馆常常会进行各类调查统计,比如统计目前共有那些书等等。调查统计的结果将以

报表的形式进行汇总输出,以便进一步处理。报表功能可用于实现各种条件的查询统计。

密码管理界面设计:

为了确保安只有图书馆工作人员才可以使用图书馆管理系统,并且只有正确输入密码之

后,才能允许图书馆管理员使用图书馆管理系统进行借书还书等各种操作。

2、 关键代码

(1)图书借阅页面代码

首先判断读者是否还可以借书,再根据具体的条件进行进行图书借阅

protected void btnBookSearch_Click(object sender, EventArgs e)

{ if (32(()) > 0)

{ if (() != "")

{ string bookBarCode = ;

//创建SQL语句在图书信息表中查询符合图书条形码条件的记录

string sql = "select * from tb_bookInfo where bookBarCode='" +

bookBarCode + "'";

DataSet ds = aset(sql);

if ([0]. > 0)

{ urce = ds; //获取数据源

yNames = new string[] { "bookBarCode" };

nd(); //绑定GridView控件

}

else

RegisterStartupScript("", "");

}

else

{ RegisterStartupScript("", "");

} }

else

{ RegisterStartupScript("", "");

}

(2)登录判断代码

对其当前的登录页面权限进行判断,如果您是学生请您选择读者,如果您是管理员请

您选择管理员登录选择不同的权限将会跳转不同的登录页

public partial class entry :

{ protected void Page_Load(object sender, EventArgs e)

{ if (!IsPostBack)

{ Session["userName"] = null;

Session["entryType"] = null;

}

}

protected void btnEntry_Click(object sender, EventArgs e)

{ string userName = ;

string Pwd = ;

Session["entryType"]= edValue;

string cs = Session["entryType"].ToString();

string sql;

if (Session["entryType"] == "reader")

{ sql = "select count(*) from tb_readerInfo where readerBarCode=@name and

readerPass=@pass ";

}

else

{ sql = "select count(*) from tb_user where userName=@name and

userPwd=@pass ";

}

if (ql(sql, userName, Pwd))

{ Session["userName"] = userName;

ct("");

}

else

{ RegisterStartupScript("", "");

}

(3)图书归还代码块

protected void gvBookReturn_SelectedIndexChanging(object sender,

GridViewSelectEventArgs e)

{ string bookBarCode =

ys[ectedIndex].ng();

DateTime returnDate =

Time([ectedIndex].Cells[4].Text);

DateTime todayDate = ;

TimeSpan ts = todayDate - returnDate;

int daysDate = ;

string strLagMoney =

[ectedIndex].Cells[7].Text;

int lagMoney = 32(ing(0,

- 5));

string strHire = [ectedIndex].Cells[6].Text;

int hire = 32(ing(0, - 5));

string hint = "";

string[] sqlT ;

int i = 0;

if (daysDate > 0)

{ sqlT = new string[3];

sqlT[i++] = "update tb_readerInfo set money=money - " + lagMoney *

daysDate + " where readerBarCode = '" + + "' ";

hint = "您的图书归还期已过" + daysDate + "天,将抠除" + lagMoney *

daysDate + "元金额";

}

else

{ sqlT = new string[2];

}

sqlT[i++] = "update tb_bookInfo set stock=stock+1 where bookBarCode='" +

bookBarCode + "'";

sqlT[i] = "delete tb_bookBorrow where bookBarCode='" + bookBarCode + "' and

readerBarCode='" + + "' ";

if (ansaction(sqlT))

{ bindReaderInfo();

RegisterStartupScript("", "");

}

else

{ RegisterStartupScript("", "");

}

}

(4)图书档案查询模块

根据图书的条形码,图书类别,图书的名,图书的作者,图书的出版社的绑定进行查

询,然后根据绑定的内容输入相对应的条件进行查询

public void bindBookType()

{ string typeSql = "select * from tb_bookType";

urce = aset(typeSql);

xtField = "typeName";

lueField = "typeID";

nd();

}

protected void ddlCondition_SelectedIndexChanged(object sender, EventArgs e)

{ if (() == "bookType")

{ e = false;

e = true;

e = false;

bindBookType();

}

else

{ e = true;

e = true;

e = false;

}

}

protected void btnSearch_Click(object sender, EventArgs e)

{ string Condition = ;

string key = "";

if (e)

{ key = edValue;

}

else

key = ;

sql = "select * from view_bookInfo where " + Condition + " like '%" + key

+ "%'";

bindBookInfo(sql);

= "";

}

public void bindBookInfo(string sql)

{ urce = aset(sql);

nd();

}