APP下载

基于ASP.NET开发图书馆报纸记到系统*

2015-05-13黄文碧湖北大学图书馆湖北武汉430062

图书馆学刊 2015年2期
关键词:控件页面报纸

黄文碧(湖北大学图书馆,湖北武汉430062)



基于ASP.NET开发图书馆报纸记到系统*

黄文碧
(湖北大学图书馆,湖北武汉430062)

[摘要]针对国内图书馆对报纸管理的需要,利用ASP.NET技术和SQL后台数据库开发一个简单、实用、高效的图书馆报纸记到系统。从需求分析、结构设计、数据库设计、页面设计以及模块功能的实现等多方面介绍了系统。

[关键词]图书馆报纸记到系统ASP.NET

[分类号]G255.3

*本文系国家自然科学基金青年基金项目“跨学科研究对科研生产力演化的作用机制——基于高校跨学科组织的分析”(71403104);教育部人文社会科学研究青年基金项目“跨学科研究与科研生产力:基于高校跨学科组织的分析”(14YJCZH005);浙江省自然科学基金青年基金项目“高校跨学科组织科研生产力演化机理研究”(LQ13G30016)成果。

1 引言

报纸是一种内容丰富、传播速度快、反映动态信息的纸质媒体,具有知识性、时效性、新闻性等特点[1]。长久以来,报纸一直都是图书馆文献资源的重要组成部分。各图书馆在其订阅上少则几十种,多则上百种、上千种。每天面对大量的到馆报纸记到工作,图书管理员基本采用的是卡片手工记到、Excel电子表格等办公软件记到;甚至很多图书馆并无记到管理,直接上架陈列。这种处理方式往往造成馆员工作量大、报纸陈列分散、零乱、无规律,后期装订和回溯工作操作困难,报纸缺失等现象。

笔者通过调查发现,当前大多数图书管理系统都侧重于对图书和期刊的管理,而并没有报纸管理模块。比如国内主流的两大图书管理系统:ILAS系统、汇文系统皆没有针对报纸管理的模块,图书馆员只能另想办法来开展报纸的记到工作。因此开发出一个简便、实用的报纸记到系统是非常必要的。它不仅能让图书管理员从繁琐的工作中解脱出来,也能保证报纸到馆的完整性、有序性,并对后期的下架、装订、回溯、查询等工作提供有效的支持。

笔者选择ASP.NET技术来开发B/S模式的图书馆报纸记到系统软件,开发环境应用的是Vistual Studio 2005,通过IIS来进行网页的发布,客户可通过浏览器来对系统进行管理操作,以实现报纸记到、催缺、查询、统计等多项功能。

2技术介绍与系统分析

2.1 ASP.NET技术介绍

ASP.NET作为Microsoft Visual.NET的重要组成部分之一,是Intranet和Internet开发Web应用程序的新一代开发工具。ASP.NET是建立在公共语言运行库上的编程框架,可用于服务器上生成功能强大的Web程序,它与早期ASP版本相比拥有更多的优势[2]。

第一,性能更加强大。ASP.NET是在服务器上运行的编译好的公共语言代码,与过去不同的是,它可以利用早期绑定、实时编译、缓存服务和本机优化来提高其性能。第二,世界级的工具支持。ASP.NET框架下集成了开发环境中的大量工具箱和设计器供开发人员选用。第三,更简洁、易用。ASP.NET使执行窗口请求提交、客户端身份验证等常见任务变得更加容易。第四,可管理性。ASP.NET采用的是基于文本的分层系统,由于其配置信息是以纯文本形式存储的,因此可在没有本地管理工具的帮助下,只需通过复制必要文件到服务器即可应用新设置。第五,可扩展性强。ASP.NET是一个设计完整的机构,开发人员可以在适当的地方插入代码,也可使用自己编译的自定义组件来进行扩展新组件和新功能。最后,安全性强。借助其内置的Windows身份验证以及基于每个应用程序的配置,从而达到保证应用程序安全的目的。

2.2系统需求分析

图书馆报纸记到系统其核心功能为报纸记到管理,并以此为中心衍生出相关的辅助功能,如报纸催缺、报纸查询、报纸信息管理、工作量统计等。报纸记到是对每天到馆的报纸进行记到操作,将其名称、卷期、订购号、价格等信息分别录入信息系统中;报纸催缺是对于时间已到期而尚未到馆的报纸,系统能自动输出目录,提示管理员该报纸缺失,并显示报纸的详细信息,方便与报纸供应方及时联系,进行补缺,从而达到保持馆藏报纸连续性和完整性的目的;报纸信息管理,实现管理员对已录入信息系统中的报纸信息进行管理性操作,如错误更改、信息添加、信息删除等,以便于保证报纸信息的正确性和有序性;工作量统计,图书馆管理员可通过此功能查询到自己一段时间内报纸记到工作量的统计数据。

2.3系统功能模块结构分析

根据系统需求分析,可清楚确定5个功能模块:记到模块、催缺模块、应到数据管理模块、报纸信息系统管理模块、工作量统计模块。同时为保证系统的安全性,需设置管理员模块,实现用户登录系统时的身份验证,以防止其他人的误操作。本系统在设计之初主要针对图书馆管理员单一用户,暂未考虑其他权限用户操作,在今后实际操作中如需进行新的权限划分,可增添其他用户模块。

3系统基础数据库设计

3.1数据库技术介绍

报纸记到系统采用的是Microsoft SQL Server 2005。该数据库技术十分全面,最为突出的特点有3个:商务智能(BI)、可编程性和安全性。在商务智能方面,集成数据分析、整合和报表功能,提供更好的决策支持;提供一种新的数据模型,用于简化异源数据间的连通性问题;提供对XML/A的集成支持;提供更成熟的数据挖掘工具。在可编程性方面,SQL Server 2005能更好地实现与.NET的集成,它将CLR直接植入数据库引擎,使开发人员能够用VB、C+等多种语言直接编程,从而达到与.NET程序框架的紧密协作。在安全性方面,它默认的安全配置、固有的数据加密以及强制口令策略等功能,能有效地保证程序更可靠地运行[3]。

3.2数据库表设计

本报纸记到系统数据库名为ems,它含有newspaper、weekmod、record、duerecord、users、newsboy6个基础数据库表格。

①newspaper为报纸基本信息表。其作用是记录报纸的名字、订购号、价格、登记信息等。如表1所示。

表1  newspaper

表2  weekmod

表3  duerecord

4系统体系结构设计

ASP.NET结构是通常意义上的三层架构(3-tier architec⁃ture):表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了实现“高内聚,低耦合”的思想。基于此原理,本系统在体系结构设计上也采用三层结构,这样做的目的主要是使项目结构层数更清楚、可视度高、分工更明确,有利于周期系统维护与后期功能拓展和系统升级。这三层结构分别为:页面表示层(USL)、业务逻辑层(BLL)、数据访问层(DAL)。

①页面表示层(USL):负责与用户交互,接受用户输入和呈现服务器端传来的数据给用户。

②业务逻辑层(BLL):接收客户端请求并将请求传送给数据访问层,然后将处理结果传回客户端。

③数据访问层(DAL):该层功能为直接操作数据库,针对数据的增添、删除、修改、查找等。

5系统功能模块的实现

5.1数据访问层的实现

系统的数据库配置信息写在vitual studio工具自动生成的主配置文件web.config中。web.config文件是一个XML文本文件,它用来储存ASP.NETWeb应用程序的配置信息(如最常用的设置ASP.NETWeb应用程序的身份验证方式),它可以出现在应用程序的每一个目录中[4]。示例代码如下所示:

其中server指定服务器的名称,database属性指定数据库的名称。而uid和pwd分别指定链接数据库时使用的用户名和密码。

系统的类文件都放在vitual studio默认的App_Code文件夹中,每一个类文件都实现了调用相应存储过程实现相应数据库表的操作,比如weekmod.cs实现了对表weekmod的增删等操作。类文件GenericDataAccess.cs创建统一的数据库操作接口。

指定数据库链接信息后,GenericDataAccess.cs通过使用DbProviderFactories.GetFactory来创建一个DbCommand实例,示例代码如下:

public static DbCommand createcommand()

{ string providename = ConfigurationManager.Con⁃ nectionStrings["newspaper"].ProviderName;

string connectstring = ConfigurationManager. ConnectionStrings["newspaper"].ConnectionString;

//从上文的newspaper字符串中获取数据库配置信息

DbProviderFactory factory = DbProviderFactories. GetFactory(providename);

DbConnection conn=factory.CreateConnection();conn.ConnectionString=connectstring;

DbCommand comm=conn.CreateCommand();

comm.CommandType=CommandType.StoredProce⁃dure;

return comm;}

如果weekmod.cs需要实现一个数据库插入操作,则可调用上面的函数,从而实现代码的复用。

通过在数据库中建立存储过程就可以实现数据的插入操作,示例代码如下:

Create PROCEDURE [dbo].[insertweekmod]

@monday1 int,@tuesday1 int,@wednesday1 int,@thurs⁃day1 int,@friday1 int,@daturday1 int,@sunday1 int,@start⁃date1 datetime,@id1 nvarchar(16)

AS SET NOCOUNT ON;

select*from weekmod where id=@id1 and startdate= @startdate1

if @@rowcount>0 begin return -1 end else INSERT INTO [weekmod]([monday],[tuesday],[wednesday],

[thursday],[friday],[daturday],[sunday],[startdate],[id])VALUES(@monday1,@tuesday1,@wednesday1,@thursday1,@friday1,@daturday1,@sunday1,@startdate1,@id1)return@@error

系统的数据操作是通过以上流程来实现的,即首先通过web.config中的connectionStrings来定义数据库的连接字符串,然后GenericDataAccess.cs中的函数creatcommand来创建一个统一的dbcommand实例,如果要实现对数据库中表单的操作,只需要具体化dbcommand实例就可以了。这种写法使得每个类文件分工明确,使用起来非常方便,并加快了开发速度。同时,对数据库的操作也采用了存储过程,简化了操作过程。因此笔者认为这是一个比较优化的方案。其他的存储过程可以参照上面的做法。

5.2报纸记到功能

5.2.1记到功能模块页面设计(newrecord.aspx)

①报纸记到功能是本系统的重要功能,也是用的最多的功能。所以用户界面必须方便、简洁、友好。该页面由两个输入框和一个提交按钮组成。

②管理员操作流程如下:输入邮发代号——〉确认检索天数(系统为默认14天)——〉点击提交。提交邮发代码和检索天数后,系统会自动计算所检索天数(从当天开始算起以前相应天数,含当天)内该报纸应记到的报纸(按照到报周期表,这些报纸应该到),并自动生成列表,点击生成列表项中前面的按钮,系统对该日期的报纸记到,即在record表中新增了一条数据。更新newrecord.aspx页面,方便查看记到结果和进行下一步操作。如图1所示。

图1 记到页面

③在页面中也要对输入框进行事件处理,实现鼠标点击输入框时,自动清除以前的数据项。对“enter”键事件进行处理,实现按“enter”键时,能进行提交操作。从而使界面的操作更为方便和人性化。

5.2.2记到功能模块业务逻辑流程(newrecord.aspx.cs)

①业务逻辑层函数获取页面传递过来的邮发代号(id)后,通过数据库层查询表“newspaper”来获取该邮发代号的情况:A:查无此刊,返回错误信息;B:查有此刊物,转到②。

②业务逻辑层函数结合参数“检索天数”,用循环函数从当前日期开始对该报纸每天的记到情况进行判断。循环函数如下:

for(int i=1;i

一般有下列情况:

A:当前所查询报纸已经记到,即表record中已经存在所查日期记录,则将当前查询日期从当天推前相应天数,示例代码如下:

dt=DateTime.Now.AddDays(-i)//i如上文为前推天数

B:当前所查询报纸未记到,即表示数据库表record中不存在所查日期记录,则需要查询当前所查日期是否为应到数据。

要查询当前日期是否是应到数据,需要对数据库表weekmod进行操作,比如当前所查日期通过运算。例如星期二,如果在查询weekmod中,表项Tuesday的数值为0,则为应到数据;为1则是非应到数据。因为对于同一个邮发代号,在表weekmod中,可能有多项数据与之对应。同时系统在通过查询表weekmod来确定被查询日期对应星期几,是否为应到报纸时,必须先找到距离当前查询日期最近的第一个,且字段startdate值要小于当前查询日期数据项。然后通过查询表weekmod来确定被查询日期的对应星期是否为应到报纸。

如果返回结果表明该日期不在应到周期内,则将上文for循环中的参数i加1,进入下个循环;如果在应到周期内,则自动生成一个单选项,并显示到页面上。

以上为页面逻辑设计,下一步需要实现记到功能,即单击生成的单选项,触发按钮事件,实现记到,到此整个记到模块完成。需要说明的是,每记到一次,页面都需要重新刷新,以生成新的状态。

5.3应到数据管理模块

5.3.1应到数据管理模块功能实现

应到数据管理模块是管理按照到报周期每一年应该到的刊物的相关数据。这些数据由表duerecord来存储,它是实现报纸催缺功能的基础。比如《人民日报》按照到报周期是每天,那么duerecord这个表中应该详细存储其每天的到馆信息。本系统中这些信息都是通过自动生成代码来生成的。

5.3.2应到数据管理模块页面设计

这个模块包含3个页面,分别为编辑应到报纸信息(du⁃erecord.aspx),单个生成应到报纸数据(singlegeneriteduere⁃cord.aspx),批量生成应到报纸数据(batchgener iteduerecord. aspx)。编辑应到报纸信息功能只是简单的对表duerecord的管理,实现更新和删除操作。单个生成应到报纸是实现某份报纸某年的应到数据,一般用在当报纸周期变更时,需要单个生成。批量生成应到数据某年份所有报纸的应到数据,一般在开学年初时生成该数据。

①单个生成报纸数据功能的页面实现(singlegeneritedu⁃erecord.aspx)

这里需要两个文本控件和一个提交按钮共同完成提交操作。这两个控件分别为:输入邮发代号文本控件、输入年份文本控件。

②单个生成报纸数据功能的功能实现(singlegeneriteduere⁃cord.aspx.cs)

详细流程如下:

第一步:通过年份信息,得出该年份最大日期为该年的12月31日,最小日期为该年的1月1日。

第二步:取当前日期为该年12月31日,计算其星期值,如上文代码,然后通过查询表weekmod来确定被查询日期的对应星期是否为应到报纸(如上文代码)。如果返回结果表明该日期不在应到周期内,则将当前日期减1天,即12月30号,进入下个循环;如果在应到周期内,则向表duerecord中插入相应信息。该过程的实现代码与上文大同小异,这里不再给出示例。

③批量生成应到报纸数据的页面实现(batchgeneritedu⁃erecord.aspx)

这个页面只需要一个输入框来获取年份信息,一个da⁃tagrid控件来显示生成的数据项,需要自定义一个项来实现功能按钮的功能。

④批量生成应到报纸数据的功能实现(batchgeneritedu⁃erecord.aspx.cs)

详细流程如下:

第一步:查询表newspaper中没有生成应到报纸数据的项,并将数据绑定到页面上的datagrid控件中。

第二步:单击图5中的“生成”按钮,生成单个的报纸记到数据。生成单个报纸记到数据的实现方法与前面相同。

5.4催缺模块

5.4.1催缺模块页面设计(stat.aspx)

催缺模块实现的功能为导出两个时间点内未到的刊物。所以页面由两个calendar控件和一个提交按钮组成。calendar控件的作用是显示一个日历,用户可通过该日历导航到任意一年的任意一天。

5.4.2催缺模块功能实现(stat.aspx.cs)

基本原理:对比时间一与时间二在表duerecord中存在,但在表record中不存在的数据项,然后显示在页面上。

基本设计过程为:用一个datatable实例来存储返回来的数据,再将databale中的数据项存储在excel文件中实现自动生成文件功能。由于需要催缺的报纸数据一般不多,也可以将产生的数据项直接显示在页面上,进而呈现在管理员面前,使用起来也很简洁、方便。

5.5报纸信息管理模块

这个模块实现的功能是对newspaper、record、duerecord等表的增删改操作。因为这些操作具有普适性,所以这里不再阐述。值得注意是,ASP.NET的datagrid控件支持自动实现更新和删除操作,能减少开发的难度和时间,充分体现ASP.NET在其系统开发的强大控件功能。由于datagrid控件功效优越,本系统也采用了这种方法。

5.6统计查询模块

工作量统计模块实现了查询某个管理员在某段时间内记到的报纸数。所以页面由一个输入框(输入工作人员ID)、两个calendar控件(选择一个时间段)和提交按钮组成。基本原理为查询表record中在两个时间点内某个工作人员记到的数据项的数目,其实现过程与前面有类似性,开发中可查考上述方法和代码。

5.7系统的初始化和管理

第一次使用报纸记到系统,需要初始化报纸信息、报纸周期表等信息后系统才能使用。因为报纸出版商有时要调整出报周期,比如原来是星期二出刊,现在改成星期四(即到报周期改变),为了应对变化,要采取相应操作,即报纸周期每一次改变时,必须新增报纸周期而不能采用更改操作。然后重新生成该报纸的duerecord数据,表duerecord应该在每年初始统一生成。对于中途休刊的报纸,要在删除表duere⁃cord的相应数据,以适应变化。对增刊,即号外的报纸,需要单独新增一条record数据来与之对应。

6 结语

本系统通过试用和不断地调试,现已投入使用。其简洁、实用的功能使报纸记到工作简单化,将图书馆管理员从繁杂的手工处理中解放出来,得到了相关人员的认可。同时报纸记到系统也实现了报纸信息的规范化、有序化管理,并对每年下架、装订、回溯等工作提供了有效的支持,对图书馆发展来说具有很强的现实意义。随着图书馆工作的发展和进一步细化,报纸记到工作也会随之发生变化,对产生的新的功能需求,本系统预留了很大的设计空间,以便于在今后实践中不断改进和完善。

参考文献:

[1]王浩,谢昕,郭静.论图书馆的报纸管理与功能拓展[J].中国报业,2012(7下):227-228.

[2]求是科技.ASP.NET数据库管理系统开发实例导航[M].北京:人民邮电出版社,2005:1-5.

[3] Solid Quality Learning,王为.SQL Server 2005从入门到精通[M].北京:清华大学出版社,2006:1-3.

[4] web.config.百度百科[OL].[2014-06-24].http://baike.baidu. com/view/1365881.htm?fr=aladdin.

黄文碧男,1980年生。双学士,馆员,文献建设部副主任。研究方向:信息管理。

收稿日期:(2014-10-15;责编:杨新宽。)

猜你喜欢

控件页面报纸
刷新生活的页面
答案
基于.net的用户定义验证控件的应用分析
让Word同时拥有横向页和纵向页
报纸
卖报纸
可以吃的报纸
关于.net控件数组的探讨
卖报纸
基于嵌入式MINIGUI控件子类化技术的深入研究与应用