黃文碧(湖北大學(xué)圖書(shū)館,湖北武漢430062)
?
基于ASP.NET開(kāi)發(fā)圖書(shū)館報(bào)紙記到系統(tǒng)*
黃文碧
(湖北大學(xué)圖書(shū)館,湖北武漢430062)
[摘要]針對(duì)國(guó)內(nèi)圖書(shū)館對(duì)報(bào)紙管理的需要,利用ASP.NET技術(shù)和SQL后臺(tái)數(shù)據(jù)庫(kù)開(kāi)發(fā)一個(gè)簡(jiǎn)單、實(shí)用、高效的圖書(shū)館報(bào)紙記到系統(tǒng)。從需求分析、結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、頁(yè)面設(shè)計(jì)以及模塊功能的實(shí)現(xiàn)等多方面介紹了系統(tǒng)。
[關(guān)鍵詞]圖書(shū)館報(bào)紙記到系統(tǒng)ASP.NET
[分類號(hào)]G255.3
*本文系國(guó)家自然科學(xué)基金青年基金項(xiàng)目“跨學(xué)科研究對(duì)科研生產(chǎn)力演化的作用機(jī)制——基于高??鐚W(xué)科組織的分析”(71403104);教育部人文社會(huì)科學(xué)研究青年基金項(xiàng)目“跨學(xué)科研究與科研生產(chǎn)力:基于高??鐚W(xué)科組織的分析”(14YJCZH005);浙江省自然科學(xué)基金青年基金項(xiàng)目“高??鐚W(xué)科組織科研生產(chǎn)力演化機(jī)理研究”(LQ13G30016)成果。
報(bào)紙是一種內(nèi)容豐富、傳播速度快、反映動(dòng)態(tài)信息的紙質(zhì)媒體,具有知識(shí)性、時(shí)效性、新聞性等特點(diǎn)[1]。長(zhǎng)久以來(lái),報(bào)紙一直都是圖書(shū)館文獻(xiàn)資源的重要組成部分。各圖書(shū)館在其訂閱上少則幾十種,多則上百種、上千種。每天面對(duì)大量的到館報(bào)紙記到工作,圖書(shū)管理員基本采用的是卡片手工記到、Excel電子表格等辦公軟件記到;甚至很多圖書(shū)館并無(wú)記到管理,直接上架陳列。這種處理方式往往造成館員工作量大、報(bào)紙陳列分散、零亂、無(wú)規(guī)律,后期裝訂和回溯工作操作困難,報(bào)紙缺失等現(xiàn)象。
筆者通過(guò)調(diào)查發(fā)現(xiàn),當(dāng)前大多數(shù)圖書(shū)管理系統(tǒng)都側(cè)重于對(duì)圖書(shū)和期刊的管理,而并沒(méi)有報(bào)紙管理模塊。比如國(guó)內(nèi)主流的兩大圖書(shū)管理系統(tǒng):ILAS系統(tǒng)、匯文系統(tǒng)皆沒(méi)有針對(duì)報(bào)紙管理的模塊,圖書(shū)館員只能另想辦法來(lái)開(kāi)展報(bào)紙的記到工作。因此開(kāi)發(fā)出一個(gè)簡(jiǎn)便、實(shí)用的報(bào)紙記到系統(tǒng)是非常必要的。它不僅能讓圖書(shū)管理員從繁瑣的工作中解脫出來(lái),也能保證報(bào)紙到館的完整性、有序性,并對(duì)后期的下架、裝訂、回溯、查詢等工作提供有效的支持。
筆者選擇ASP.NET技術(shù)來(lái)開(kāi)發(fā)B/S模式的圖書(shū)館報(bào)紙記到系統(tǒng)軟件,開(kāi)發(fā)環(huán)境應(yīng)用的是Vistual Studio 2005,通過(guò)IIS來(lái)進(jìn)行網(wǎng)頁(yè)的發(fā)布,客戶可通過(guò)瀏覽器來(lái)對(duì)系統(tǒng)進(jìn)行管理操作,以實(shí)現(xiàn)報(bào)紙記到、催缺、查詢、統(tǒng)計(jì)等多項(xiàng)功能。
2.1 ASP.NET技術(shù)介紹
ASP.NET作為Microsoft Visual.NET的重要組成部分之一,是Intranet和Internet開(kāi)發(fā)Web應(yīng)用程序的新一代開(kāi)發(fā)工具。ASP.NET是建立在公共語(yǔ)言運(yùn)行庫(kù)上的編程框架,可用于服務(wù)器上生成功能強(qiáng)大的Web程序,它與早期ASP版本相比擁有更多的優(yōu)勢(shì)[2]。
第一,性能更加強(qiáng)大。ASP.NET是在服務(wù)器上運(yùn)行的編譯好的公共語(yǔ)言代碼,與過(guò)去不同的是,它可以利用早期綁定、實(shí)時(shí)編譯、緩存服務(wù)和本機(jī)優(yōu)化來(lái)提高其性能。第二,世界級(jí)的工具支持。ASP.NET框架下集成了開(kāi)發(fā)環(huán)境中的大量工具箱和設(shè)計(jì)器供開(kāi)發(fā)人員選用。第三,更簡(jiǎn)潔、易用。ASP.NET使執(zhí)行窗口請(qǐng)求提交、客戶端身份驗(yàn)證等常見(jiàn)任務(wù)變得更加容易。第四,可管理性。ASP.NET采用的是基于文本的分層系統(tǒng),由于其配置信息是以純文本形式存儲(chǔ)的,因此可在沒(méi)有本地管理工具的幫助下,只需通過(guò)復(fù)制必要文件到服務(wù)器即可應(yīng)用新設(shè)置。第五,可擴(kuò)展性強(qiáng)。ASP.NET是一個(gè)設(shè)計(jì)完整的機(jī)構(gòu),開(kāi)發(fā)人員可以在適當(dāng)?shù)牡胤讲迦氪a,也可使用自己編譯的自定義組件來(lái)進(jìn)行擴(kuò)展新組件和新功能。最后,安全性強(qiáng)。借助其內(nèi)置的Windows身份驗(yàn)證以及基于每個(gè)應(yīng)用程序的配置,從而達(dá)到保證應(yīng)用程序安全的目的。
2.2系統(tǒng)需求分析
圖書(shū)館報(bào)紙記到系統(tǒng)其核心功能為報(bào)紙記到管理,并以此為中心衍生出相關(guān)的輔助功能,如報(bào)紙催缺、報(bào)紙查詢、報(bào)紙信息管理、工作量統(tǒng)計(jì)等。報(bào)紙記到是對(duì)每天到館的報(bào)紙進(jìn)行記到操作,將其名稱、卷期、訂購(gòu)號(hào)、價(jià)格等信息分別錄入信息系統(tǒng)中;報(bào)紙催缺是對(duì)于時(shí)間已到期而尚未到館的報(bào)紙,系統(tǒng)能自動(dòng)輸出目錄,提示管理員該報(bào)紙缺失,并顯示報(bào)紙的詳細(xì)信息,方便與報(bào)紙供應(yīng)方及時(shí)聯(lián)系,進(jìn)行補(bǔ)缺,從而達(dá)到保持館藏報(bào)紙連續(xù)性和完整性的目的;報(bào)紙信息管理,實(shí)現(xiàn)管理員對(duì)已錄入信息系統(tǒng)中的報(bào)紙信息進(jìn)行管理性操作,如錯(cuò)誤更改、信息添加、信息刪除等,以便于保證報(bào)紙信息的正確性和有序性;工作量統(tǒng)計(jì),圖書(shū)館管理員可通過(guò)此功能查詢到自己一段時(shí)間內(nèi)報(bào)紙記到工作量的統(tǒng)計(jì)數(shù)據(jù)。
2.3系統(tǒng)功能模塊結(jié)構(gòu)分析
根據(jù)系統(tǒng)需求分析,可清楚確定5個(gè)功能模塊:記到模塊、催缺模塊、應(yīng)到數(shù)據(jù)管理模塊、報(bào)紙信息系統(tǒng)管理模塊、工作量統(tǒng)計(jì)模塊。同時(shí)為保證系統(tǒng)的安全性,需設(shè)置管理員模塊,實(shí)現(xiàn)用戶登錄系統(tǒng)時(shí)的身份驗(yàn)證,以防止其他人的誤操作。本系統(tǒng)在設(shè)計(jì)之初主要針對(duì)圖書(shū)館管理員單一用戶,暫未考慮其他權(quán)限用戶操作,在今后實(shí)際操作中如需進(jìn)行新的權(quán)限劃分,可增添其他用戶模塊。
3.1數(shù)據(jù)庫(kù)技術(shù)介紹
報(bào)紙記到系統(tǒng)采用的是Microsoft SQL Server 2005。該數(shù)據(jù)庫(kù)技術(shù)十分全面,最為突出的特點(diǎn)有3個(gè):商務(wù)智能(BI)、可編程性和安全性。在商務(wù)智能方面,集成數(shù)據(jù)分析、整合和報(bào)表功能,提供更好的決策支持;提供一種新的數(shù)據(jù)模型,用于簡(jiǎn)化異源數(shù)據(jù)間的連通性問(wèn)題;提供對(duì)XML/A的集成支持;提供更成熟的數(shù)據(jù)挖掘工具。在可編程性方面,SQL Server 2005能更好地實(shí)現(xiàn)與.NET的集成,它將CLR直接植入數(shù)據(jù)庫(kù)引擎,使開(kāi)發(fā)人員能夠用VB、C+等多種語(yǔ)言直接編程,從而達(dá)到與.NET程序框架的緊密協(xié)作。在安全性方面,它默認(rèn)的安全配置、固有的數(shù)據(jù)加密以及強(qiáng)制口令策略等功能,能有效地保證程序更可靠地運(yùn)行[3]。
3.2數(shù)據(jù)庫(kù)表設(shè)計(jì)
本報(bào)紙記到系統(tǒng)數(shù)據(jù)庫(kù)名為ems,它含有newspaper、weekmod、record、duerecord、users、newsboy6個(gè)基礎(chǔ)數(shù)據(jù)庫(kù)表格。
①newspaper為報(bào)紙基本信息表。其作用是記錄報(bào)紙的名字、訂購(gòu)號(hào)、價(jià)格、登記信息等。如表1所示。
表1 newspaper
表2 weekmod
表3 duerecord
ASP.NET結(jié)構(gòu)是通常意義上的三層架構(gòu)(3-tier architec?ture):表現(xiàn)層(UI)、業(yè)務(wù)邏輯層(BLL)、數(shù)據(jù)訪問(wèn)層(DAL)。區(qū)分層次的目的即為了實(shí)現(xiàn)“高內(nèi)聚,低耦合”的思想?;诖嗽?,本系統(tǒng)在體系結(jié)構(gòu)設(shè)計(jì)上也采用三層結(jié)構(gòu),這樣做的目的主要是使項(xiàng)目結(jié)構(gòu)層數(shù)更清楚、可視度高、分工更明確,有利于周期系統(tǒng)維護(hù)與后期功能拓展和系統(tǒng)升級(jí)。這三層結(jié)構(gòu)分別為:頁(yè)面表示層(USL)、業(yè)務(wù)邏輯層(BLL)、數(shù)據(jù)訪問(wèn)層(DAL)。
①頁(yè)面表示層(USL):負(fù)責(zé)與用戶交互,接受用戶輸入和呈現(xiàn)服務(wù)器端傳來(lái)的數(shù)據(jù)給用戶。
②業(yè)務(wù)邏輯層(BLL):接收客戶端請(qǐng)求并將請(qǐng)求傳送給數(shù)據(jù)訪問(wèn)層,然后將處理結(jié)果傳回客戶端。
③數(shù)據(jù)訪問(wèn)層(DAL):該層功能為直接操作數(shù)據(jù)庫(kù),針對(duì)數(shù)據(jù)的增添、刪除、修改、查找等。
5.1數(shù)據(jù)訪問(wèn)層的實(shí)現(xiàn)
系統(tǒng)的數(shù)據(jù)庫(kù)配置信息寫(xiě)在vitual studio工具自動(dòng)生成的主配置文件web.config中。web.config文件是一個(gè)XML文本文件,它用來(lái)儲(chǔ)存ASP.NETWeb應(yīng)用程序的配置信息(如最常用的設(shè)置ASP.NETWeb應(yīng)用程序的身份驗(yàn)證方式),它可以出現(xiàn)在應(yīng)用程序的每一個(gè)目錄中[4]。示例代碼如下所示:
其中server指定服務(wù)器的名稱,database屬性指定數(shù)據(jù)庫(kù)的名稱。而uid和pwd分別指定鏈接數(shù)據(jù)庫(kù)時(shí)使用的用戶名和密碼。
系統(tǒng)的類文件都放在vitual studio默認(rèn)的App_Code文件夾中,每一個(gè)類文件都實(shí)現(xiàn)了調(diào)用相應(yīng)存儲(chǔ)過(guò)程實(shí)現(xiàn)相應(yīng)數(shù)據(jù)庫(kù)表的操作,比如weekmod.cs實(shí)現(xiàn)了對(duì)表weekmod的增刪等操作。類文件GenericDataAccess.cs創(chuàng)建統(tǒng)一的數(shù)據(jù)庫(kù)操作接口。
指定數(shù)據(jù)庫(kù)鏈接信息后,GenericDataAccess.cs通過(guò)使用DbProviderFactories.GetFactory來(lái)創(chuàng)建一個(gè)DbCommand實(shí)例,示例代碼如下:
public static DbCommand createcommand()
{ string providename = ConfigurationManager.Con? nectionStrings["newspaper"].ProviderName;
string connectstring = ConfigurationManager. ConnectionStrings["newspaper"].ConnectionString;
//從上文的newspaper字符串中獲取數(shù)據(jù)庫(kù)配置信息
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需要實(shí)現(xiàn)一個(gè)數(shù)據(jù)庫(kù)插入操作,則可調(diào)用上面的函數(shù),從而實(shí)現(xiàn)代碼的復(fù)用。
通過(guò)在數(shù)據(jù)庫(kù)中建立存儲(chǔ)過(guò)程就可以實(shí)現(xiàn)數(shù)據(jù)的插入操作,示例代碼如下:
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
系統(tǒng)的數(shù)據(jù)操作是通過(guò)以上流程來(lái)實(shí)現(xiàn)的,即首先通過(guò)web.config中的connectionStrings來(lái)定義數(shù)據(jù)庫(kù)的連接字符串,然后GenericDataAccess.cs中的函數(shù)creatcommand來(lái)創(chuàng)建一個(gè)統(tǒng)一的dbcommand實(shí)例,如果要實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中表單的操作,只需要具體化dbcommand實(shí)例就可以了。這種寫(xiě)法使得每個(gè)類文件分工明確,使用起來(lái)非常方便,并加快了開(kāi)發(fā)速度。同時(shí),對(duì)數(shù)據(jù)庫(kù)的操作也采用了存儲(chǔ)過(guò)程,簡(jiǎn)化了操作過(guò)程。因此筆者認(rèn)為這是一個(gè)比較優(yōu)化的方案。其他的存儲(chǔ)過(guò)程可以參照上面的做法。
5.2報(bào)紙記到功能
5.2.1記到功能模塊頁(yè)面設(shè)計(jì)(newrecord.aspx)
①報(bào)紙記到功能是本系統(tǒng)的重要功能,也是用的最多的功能。所以用戶界面必須方便、簡(jiǎn)潔、友好。該頁(yè)面由兩個(gè)輸入框和一個(gè)提交按鈕組成。
②管理員操作流程如下:輸入郵發(fā)代號(hào)——〉確認(rèn)檢索天數(shù)(系統(tǒng)為默認(rèn)14天)——〉點(diǎn)擊提交。提交郵發(fā)代碼和檢索天數(shù)后,系統(tǒng)會(huì)自動(dòng)計(jì)算所檢索天數(shù)(從當(dāng)天開(kāi)始算起以前相應(yīng)天數(shù),含當(dāng)天)內(nèi)該報(bào)紙應(yīng)記到的報(bào)紙(按照到報(bào)周期表,這些報(bào)紙應(yīng)該到),并自動(dòng)生成列表,點(diǎn)擊生成列表項(xiàng)中前面的按鈕,系統(tǒng)對(duì)該日期的報(bào)紙記到,即在record表中新增了一條數(shù)據(jù)。更新newrecord.aspx頁(yè)面,方便查看記到結(jié)果和進(jìn)行下一步操作。如圖1所示。
圖1 記到頁(yè)面
③在頁(yè)面中也要對(duì)輸入框進(jìn)行事件處理,實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊輸入框時(shí),自動(dòng)清除以前的數(shù)據(jù)項(xiàng)。對(duì)“enter”鍵事件進(jìn)行處理,實(shí)現(xiàn)按“enter”鍵時(shí),能進(jìn)行提交操作。從而使界面的操作更為方便和人性化。
5.2.2記到功能模塊業(yè)務(wù)邏輯流程(newrecord.aspx.cs)
①業(yè)務(wù)邏輯層函數(shù)獲取頁(yè)面?zhèn)鬟f過(guò)來(lái)的郵發(fā)代號(hào)(id)后,通過(guò)數(shù)據(jù)庫(kù)層查詢表“newspaper”來(lái)獲取該郵發(fā)代號(hào)的情況:A:查無(wú)此刊,返回錯(cuò)誤信息;B:查有此刊物,轉(zhuǎn)到②。
②業(yè)務(wù)邏輯層函數(shù)結(jié)合參數(shù)“檢索天數(shù)”,用循環(huán)函數(shù)從當(dāng)前日期開(kāi)始對(duì)該報(bào)紙每天的記到情況進(jìn)行判斷。循環(huán)函數(shù)如下:
for(int i=1;i 一般有下列情況: A:當(dāng)前所查詢報(bào)紙已經(jīng)記到,即表record中已經(jīng)存在所查日期記錄,則將當(dāng)前查詢?nèi)掌趶漠?dāng)天推前相應(yīng)天數(shù),示例代碼如下: dt=DateTime.Now.AddDays(-i)//i如上文為前推天數(shù) B:當(dāng)前所查詢報(bào)紙未記到,即表示數(shù)據(jù)庫(kù)表record中不存在所查日期記錄,則需要查詢當(dāng)前所查日期是否為應(yīng)到數(shù)據(jù)。 要查詢當(dāng)前日期是否是應(yīng)到數(shù)據(jù),需要對(duì)數(shù)據(jù)庫(kù)表weekmod進(jìn)行操作,比如當(dāng)前所查日期通過(guò)運(yùn)算。例如星期二,如果在查詢weekmod中,表項(xiàng)Tuesday的數(shù)值為0,則為應(yīng)到數(shù)據(jù);為1則是非應(yīng)到數(shù)據(jù)。因?yàn)閷?duì)于同一個(gè)郵發(fā)代號(hào),在表weekmod中,可能有多項(xiàng)數(shù)據(jù)與之對(duì)應(yīng)。同時(shí)系統(tǒng)在通過(guò)查詢表weekmod來(lái)確定被查詢?nèi)掌趯?duì)應(yīng)星期幾,是否為應(yīng)到報(bào)紙時(shí),必須先找到距離當(dāng)前查詢?nèi)掌谧罱牡谝粋€(gè),且字段startdate值要小于當(dāng)前查詢?nèi)掌跀?shù)據(jù)項(xiàng)。然后通過(guò)查詢表weekmod來(lái)確定被查詢?nèi)掌诘膶?duì)應(yīng)星期是否為應(yīng)到報(bào)紙。 如果返回結(jié)果表明該日期不在應(yīng)到周期內(nèi),則將上文for循環(huán)中的參數(shù)i加1,進(jìn)入下個(gè)循環(huán);如果在應(yīng)到周期內(nèi),則自動(dòng)生成一個(gè)單選項(xiàng),并顯示到頁(yè)面上。 以上為頁(yè)面邏輯設(shè)計(jì),下一步需要實(shí)現(xiàn)記到功能,即單擊生成的單選項(xiàng),觸發(fā)按鈕事件,實(shí)現(xiàn)記到,到此整個(gè)記到模塊完成。需要說(shuō)明的是,每記到一次,頁(yè)面都需要重新刷新,以生成新的狀態(tài)。 5.3應(yīng)到數(shù)據(jù)管理模塊 5.3.1應(yīng)到數(shù)據(jù)管理模塊功能實(shí)現(xiàn) 應(yīng)到數(shù)據(jù)管理模塊是管理按照到報(bào)周期每一年應(yīng)該到的刊物的相關(guān)數(shù)據(jù)。這些數(shù)據(jù)由表duerecord來(lái)存儲(chǔ),它是實(shí)現(xiàn)報(bào)紙催缺功能的基礎(chǔ)。比如《人民日?qǐng)?bào)》按照到報(bào)周期是每天,那么duerecord這個(gè)表中應(yīng)該詳細(xì)存儲(chǔ)其每天的到館信息。本系統(tǒng)中這些信息都是通過(guò)自動(dòng)生成代碼來(lái)生成的。 5.3.2應(yīng)到數(shù)據(jù)管理模塊頁(yè)面設(shè)計(jì) 這個(gè)模塊包含3個(gè)頁(yè)面,分別為編輯應(yīng)到報(bào)紙信息(du?erecord.aspx),單個(gè)生成應(yīng)到報(bào)紙數(shù)據(jù)(singlegeneriteduere?cord.aspx),批量生成應(yīng)到報(bào)紙數(shù)據(jù)(batchgener iteduerecord. aspx)。編輯應(yīng)到報(bào)紙信息功能只是簡(jiǎn)單的對(duì)表duerecord的管理,實(shí)現(xiàn)更新和刪除操作。單個(gè)生成應(yīng)到報(bào)紙是實(shí)現(xiàn)某份報(bào)紙某年的應(yīng)到數(shù)據(jù),一般用在當(dāng)報(bào)紙周期變更時(shí),需要單個(gè)生成。批量生成應(yīng)到數(shù)據(jù)某年份所有報(bào)紙的應(yīng)到數(shù)據(jù),一般在開(kāi)學(xué)年初時(shí)生成該數(shù)據(jù)。 ①單個(gè)生成報(bào)紙數(shù)據(jù)功能的頁(yè)面實(shí)現(xiàn)(singlegeneritedu?erecord.aspx) 這里需要兩個(gè)文本控件和一個(gè)提交按鈕共同完成提交操作。這兩個(gè)控件分別為:輸入郵發(fā)代號(hào)文本控件、輸入年份文本控件。 ②單個(gè)生成報(bào)紙數(shù)據(jù)功能的功能實(shí)現(xiàn)(singlegeneriteduere?cord.aspx.cs) 詳細(xì)流程如下: 第一步:通過(guò)年份信息,得出該年份最大日期為該年的12月31日,最小日期為該年的1月1日。 第二步:取當(dāng)前日期為該年12月31日,計(jì)算其星期值,如上文代碼,然后通過(guò)查詢表weekmod來(lái)確定被查詢?nèi)掌诘膶?duì)應(yīng)星期是否為應(yīng)到報(bào)紙(如上文代碼)。如果返回結(jié)果表明該日期不在應(yīng)到周期內(nèi),則將當(dāng)前日期減1天,即12月30號(hào),進(jìn)入下個(gè)循環(huán);如果在應(yīng)到周期內(nèi),則向表duerecord中插入相應(yīng)信息。該過(guò)程的實(shí)現(xiàn)代碼與上文大同小異,這里不再給出示例。 ③批量生成應(yīng)到報(bào)紙數(shù)據(jù)的頁(yè)面實(shí)現(xiàn)(batchgeneritedu?erecord.aspx) 這個(gè)頁(yè)面只需要一個(gè)輸入框來(lái)獲取年份信息,一個(gè)da?tagrid控件來(lái)顯示生成的數(shù)據(jù)項(xiàng),需要自定義一個(gè)項(xiàng)來(lái)實(shí)現(xiàn)功能按鈕的功能。 ④批量生成應(yīng)到報(bào)紙數(shù)據(jù)的功能實(shí)現(xiàn)(batchgeneritedu?erecord.aspx.cs) 詳細(xì)流程如下: 第一步:查詢表newspaper中沒(méi)有生成應(yīng)到報(bào)紙數(shù)據(jù)的項(xiàng),并將數(shù)據(jù)綁定到頁(yè)面上的datagrid控件中。 第二步:?jiǎn)螕魣D5中的“生成”按鈕,生成單個(gè)的報(bào)紙記到數(shù)據(jù)。生成單個(gè)報(bào)紙記到數(shù)據(jù)的實(shí)現(xiàn)方法與前面相同。 5.4催缺模塊 5.4.1催缺模塊頁(yè)面設(shè)計(jì)(stat.aspx) 催缺模塊實(shí)現(xiàn)的功能為導(dǎo)出兩個(gè)時(shí)間點(diǎn)內(nèi)未到的刊物。所以頁(yè)面由兩個(gè)calendar控件和一個(gè)提交按鈕組成。calendar控件的作用是顯示一個(gè)日歷,用戶可通過(guò)該日歷導(dǎo)航到任意一年的任意一天。 5.4.2催缺模塊功能實(shí)現(xiàn)(stat.aspx.cs) 基本原理:對(duì)比時(shí)間一與時(shí)間二在表duerecord中存在,但在表record中不存在的數(shù)據(jù)項(xiàng),然后顯示在頁(yè)面上。 基本設(shè)計(jì)過(guò)程為:用一個(gè)datatable實(shí)例來(lái)存儲(chǔ)返回來(lái)的數(shù)據(jù),再將databale中的數(shù)據(jù)項(xiàng)存儲(chǔ)在excel文件中實(shí)現(xiàn)自動(dòng)生成文件功能。由于需要催缺的報(bào)紙數(shù)據(jù)一般不多,也可以將產(chǎn)生的數(shù)據(jù)項(xiàng)直接顯示在頁(yè)面上,進(jìn)而呈現(xiàn)在管理員面前,使用起來(lái)也很簡(jiǎn)潔、方便。 5.5報(bào)紙信息管理模塊 這個(gè)模塊實(shí)現(xiàn)的功能是對(duì)newspaper、record、duerecord等表的增刪改操作。因?yàn)檫@些操作具有普適性,所以這里不再闡述。值得注意是,ASP.NET的datagrid控件支持自動(dòng)實(shí)現(xiàn)更新和刪除操作,能減少開(kāi)發(fā)的難度和時(shí)間,充分體現(xiàn)ASP.NET在其系統(tǒng)開(kāi)發(fā)的強(qiáng)大控件功能。由于datagrid控件功效優(yōu)越,本系統(tǒng)也采用了這種方法。 5.6統(tǒng)計(jì)查詢模塊 工作量統(tǒng)計(jì)模塊實(shí)現(xiàn)了查詢某個(gè)管理員在某段時(shí)間內(nèi)記到的報(bào)紙數(shù)。所以頁(yè)面由一個(gè)輸入框(輸入工作人員ID)、兩個(gè)calendar控件(選擇一個(gè)時(shí)間段)和提交按鈕組成?;驹頌椴樵儽韗ecord中在兩個(gè)時(shí)間點(diǎn)內(nèi)某個(gè)工作人員記到的數(shù)據(jù)項(xiàng)的數(shù)目,其實(shí)現(xiàn)過(guò)程與前面有類似性,開(kāi)發(fā)中可查考上述方法和代碼。 5.7系統(tǒng)的初始化和管理 第一次使用報(bào)紙記到系統(tǒng),需要初始化報(bào)紙信息、報(bào)紙周期表等信息后系統(tǒng)才能使用。因?yàn)閳?bào)紙出版商有時(shí)要調(diào)整出報(bào)周期,比如原來(lái)是星期二出刊,現(xiàn)在改成星期四(即到報(bào)周期改變),為了應(yīng)對(duì)變化,要采取相應(yīng)操作,即報(bào)紙周期每一次改變時(shí),必須新增報(bào)紙周期而不能采用更改操作。然后重新生成該報(bào)紙的duerecord數(shù)據(jù),表duerecord應(yīng)該在每年初始統(tǒng)一生成。對(duì)于中途休刊的報(bào)紙,要在刪除表duere?cord的相應(yīng)數(shù)據(jù),以適應(yīng)變化。對(duì)增刊,即號(hào)外的報(bào)紙,需要單獨(dú)新增一條record數(shù)據(jù)來(lái)與之對(duì)應(yīng)。 本系統(tǒng)通過(guò)試用和不斷地調(diào)試,現(xiàn)已投入使用。其簡(jiǎn)潔、實(shí)用的功能使報(bào)紙記到工作簡(jiǎn)單化,將圖書(shū)館管理員從繁雜的手工處理中解放出來(lái),得到了相關(guān)人員的認(rèn)可。同時(shí)報(bào)紙記到系統(tǒng)也實(shí)現(xiàn)了報(bào)紙信息的規(guī)范化、有序化管理,并對(duì)每年下架、裝訂、回溯等工作提供了有效的支持,對(duì)圖書(shū)館發(fā)展來(lái)說(shuō)具有很強(qiáng)的現(xiàn)實(shí)意義。隨著圖書(shū)館工作的發(fā)展和進(jìn)一步細(xì)化,報(bào)紙記到工作也會(huì)隨之發(fā)生變化,對(duì)產(chǎn)生的新的功能需求,本系統(tǒng)預(yù)留了很大的設(shè)計(jì)空間,以便于在今后實(shí)踐中不斷改進(jìn)和完善。 參考文獻(xiàn): [1]王浩,謝昕,郭靜.論圖書(shū)館的報(bào)紙管理與功能拓展[J].中國(guó)報(bào)業(yè),2012(7下):227-228. [2]求是科技.ASP.NET數(shù)據(jù)庫(kù)管理系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2005:1-5. [3] Solid Quality Learning,王為.SQL Server 2005從入門到精通[M].北京:清華大學(xué)出版社,2006:1-3. [4] web.config.百度百科[OL].[2014-06-24].http://baike.baidu. com/view/1365881.htm?fr=aladdin. 黃文碧男,1980年生。雙學(xué)士,館員,文獻(xiàn)建設(shè)部副主任。研究方向:信息管理。 收稿日期:(2014-10-15;責(zé)編:楊新寬。)6 結(jié)語(yǔ)