图书馆标准管理系统文档_第1页
图书馆标准管理系统文档_第2页
图书馆标准管理系统文档_第3页
图书馆标准管理系统文档_第4页
图书馆标准管理系统文档_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ASP.NET图书馆管理系统文档1.1开发背景伴随现代图书流通市场竞争愈演愈烈,怎样以一个新管理方法提升图书流通信息反馈速度、降低库存占用、加紧资金周转、提升工作效率,已经成为图书企业提升竞争力关键。信息技术发展给图书企业管理带来了新力量,经过图书馆管理系统对图书企业经营运作全程管理,不仅使企业摆脱了人工管理所固有一系列弊端和问题,更关键是提升了工作效率,进而提升了企业经济效益。经过管理系统对企业管理,为企业发展提供了大量、关键性数据,企业依据这些数据,能够立即作出决议,进行调整,使之能够愈加好地把握市场销售规律,适应市场改变,在猛烈行业竞争中赢得一席之地。1.2需求分析长久以来,大家使用传统人工方法管理图书馆日常业务,其操作步骤比较繁琐。在借书时,读者首先将要借书和借阅证交给工作人员,工作人员将每本书信息卡片和读者借阅证放在一个小格栏里,然后在借阅证和每本书贴借阅条上填写借阅信息。在还书时,读者首先将要还书交给工作人员,工作人员依据图书信息找到对应书卡和借阅证,并填写对应还书信息。从上述描述中能够发觉,传统手工步骤存在着种种不足。首先处理借书、还书业务步骤效率很低;其次处理能力比较低,一段时间内,所能服务读者人数只能是很有限。为此,图书信息管理系统需要为企业处理上述问题,提供快速图书信息检索功效及快捷图书借阅、归还步骤。1.3系统设计1.3.1系统目标依据图书馆日常图书管理工作需求和图书借阅管理步骤,该系统实施后,应达成以下目标。●界面设计友好、美观,数据存放安全、可靠。●基础信息设置确保图书信息和读者信息分类管理。●强大查询功效,确保数据查询灵活性。●实现对图书借阅、续借、归还过程全程信息服务跟踪。●设置读者借阅和图书借阅排行榜,为图书馆管理提供真实数据信息。●提供借阅到期提醒功效,使管理者能够立即了解到期图书借阅信息。●提供管理员修改自己密码功效,确保系统安全性。●提供灵活、方便权限设置功效,使整个系统管理分工明确。●采取人机对话操作方法,方便管理员日常操作。●系统要最大程度地实现易维护性和易操作性。1.3.2业务步骤图图书馆管理系统系统步骤图1.1所表示。图1.1系统步骤图1.3.3系统功效结构依据图书馆管理系统特点,能够将其分为系统设置、读者管理、图书管理、图书借还、系统查询等部分,其中各个部分及其包含具体功效模块图1.2所表示。图1.2系统功效结构图1.3.4系统预览为使读者对图书馆管理系统有初步了解,下面给出系统中多个页面。系统登录页面图1.3所表示,系统主页图1.4所表示。图书借阅页面图1.5所表示,图书归还页面图1.6所表示。图书管理页面图1.7所表示,图书信息打印页面图1.8所表示。图1.3系统登录页面图1.4系统主页图1.5图书借阅页面图1.6图书归还页面图1.7图书管理页面图1.8图书信息打印页面1.3.5构建开发环境1.网站开发环境网站开发环境:MicrosoftVisualStudio集成开发环境。网站开发语言:ASP.NET+C#。网站后台数据库:SQLServer。开发环境运行平台:WindowsXP(SP2)/Windows(SP4)/WindowsServer(SP1)服务器端操作系统:WindowsServer(SP1)。Web服务器:Internet信息服务管理器。数据库服务器:SQLServer。浏览器:速达。网站服务器运行环境:Microsoft.NETFrameworkSDKv2.0。用户端浏览器:速达。分辨率:最好效果:1024x768像素。1.3.6数据库设计本系统采取SQLServer数据库,名称为:db_tsrj,其中包含9张表。下面分别给出数据表概要说明、数据表E-R图及关键数据表结构。1.数据库概要说明从读者角度出发,为了使读者对本系统数据库中数据表有一个更清楚认识,我们设计了一个数据表树形结构图,图1所表示,其中包含系统全部数据表。图1.9数据库并结构2.数据库概要设计经过对本系统需求分析、系统步骤设计和系统功效结构确实定,计划出系统中使用数据库实体对象,具体说明以下。只有系统分配用户才能够操作图书馆管理系统,而用户权限又各不相同。管理员权限设置信息实体E-R图图1.10所表示。图1.10管理员权限设置信息实体E-R图图书借阅信息实体,用于存放全部图书借阅情况信息,以正确地统计每本图书借阅情况。图书借阅信息实体E-R图图1.11所表示。图书馆对图书分类,通常是将不一样类型图书分别放置在对应类型书架上。书架信息实体,用于存放图书馆中全部书架信息。书架信息实体ER图图1.12所表示。图1.11图书借阅信息实体E-R图图1.12书架信息实体E-R图不一样书,会有不一样图书信息。对这些信息进行具体统计,方便了图书分类和查询。图书信息实体,用于存放全部图书相关信息。图书信息实体E-R图图1.13所表示。图1.13图书信息实体E-R图图书馆中会有不一样类型图书,为了避免图书归类发生混乱,必需建立一个图书类型信息实体,用于存放图书类型信息。图书类型信息实体E-R图图1.14所表示。图1.14图书类型信息实体E-R图每个事物全部会有其本身历史背景,图书馆也不例外。为了统计图书馆历史背景及其相关信息,需要建立一个图书馆信息实体,用于存放和图书馆相关信息。图书馆信息实体E-R图图1.15所表示。图1.15图书馆信息实体E-R图当有读者借阅图书时,要对读者各项信息进行统计,以方便归还图书和已借阅图书历史查询。读者信息实体,用于存放全部借阅图书读者信息。读者信息实体E-R图图1.16所表示。图1.16读者信息实体E-R图在读者群体中,会有不一样分类,比如借阅图书读者可能是老师、学生和一般市民等,所以对读者人群进行有效分类是至关关键。读者类型信息实体,用于存放读者类型信息。读者类型信息实体E-R图图1.17所表示。图1.17读者类型信息实体E-R图当管理员登录图书馆管理系统时,需要经过登录窗口验证成功后才能进入系统主页。管理员信息实体,用于存放管理员登录名称和登录密码。管理员信息信息实体E-R图图1.18所表示。图1.18管理员信息信息实体E-R图数据库逻辑结构设计在设计完数据库实体E-R图以后,需要依据实体E-R图设计数据表结构。下面给出关键数据表数据结构和用途。●tb_admSet(管理员权限设置表)。表tb_admSet用于保留和管理员设置相关信息,该表结构如表1.1所表示。表1.1管理员权限设置表字段名数据类型长度是否关键描述userNamevarchar80否管理员名称systemSetbit1否系统设置readerManagebit1否读者管理bookManagebit1否图书管理bookBorrowbit1否图书借还systemSearchbit1否系统查询●tb_bookBorrow(图书借阅表)。表tb_bookBorrow用于保留全部已借阅图书信息,该表结构如表1.2所表示。表1.2图书借阅表字段名数据类型长度是否主键描述bookBarcodevarchar50否图书条形码bookNamevarchar20否图书名称borrowTimedatetime8否借阅日期returnTimedatetime8否应还日期readerBarCodevarchar50否读者条形码readerTimevarchar20否读者姓名isReturnbit1否是否归还●tb_bookcase(书架信息表)。表tb_bookcase用于保留书架具体信息,该表结构如表1.3所表示。字段名数据类型长度是否主键描述bookcaseIDint4是书架编号bookcaseNamevarchar80否书架名称●tb_bookInfo(图书信息表)。表tb_bookInfo用于保留和图书相关全部信息,该表结构如表1.4所表示。字段名数据类型长度是否主键描述bookBarCodevarchar100是图书条形码bookNamevarchar100否图书名称bookTypeint4否图书类型bookcaseint4否书架类型bookConcernvarchar100否出版社名称authorvarchar80否作者名称pricemoney8否图书价格borrowSumint4否借阅次数●tb_bookType(图书类型信息表)。表tb_bookType用于保留图书类型信息,该表结构如表1.5所表示。字段名数据类型长度是否主键描述typeIDint4否图书类型编号typeNamevarchar5否类型名称borrowDayint10否可借天数●tb_library(图书馆信息表)。表tb_library用于保留和图书馆相关信息,该表结构如表1.6所表示。字段名数据类型长度是否主键描述libraryNamevarchar80否图书馆名称curatorvarchar80否馆长名称telvarchar100否联络电话addressvarchar200否联络地址emailvarchar100否电子邮件netvarchar200否网址upbuildTimedatetime8否建管时间remarkvarchar500否备注●tb_readerInfo(读者信息表)。表tb_readerInfo用于保留全部读者信息,该表结构如表1.7所表示。字段名数据类型长度是否主键描述readerBarCodevarchar50否读者条形码readerNamevarchar50否读者名称sexchar10否读者性别readerTypevarchar50否读者类型certificateTypevarchar50否证件类型certificatevarchar50否证件号码telvarchar50否联络电话emailvarchar50否电子邮件remarkvarchar500否备注●tb_readerType(读者类型信息表)。表tb_readerType用于保留全部读者类型信息,该表结构如表1.8所表示。字段名数据类型长度是否主键描述idint4是类型编号typevarchar50否类型名称numvarchar50否可借数量●tb_user(管理员信息表)。表tb_user用于保留全部管理员信息,该表结构如表1.9所表示。字段名数据类型长度是否主键描述userIdint4是管理员编号userNamevarchar50否管理员名称userPwdvarchar50否管理员密码1.3.7文件夹组织机构为了便于读者对本网站学习,在此将网站文件组织结构展示出来,图1.19所表示。图1.19系统文件组织结构图1.4公共类设计在开发过程中,常常会用到部分公共模块,如数据库连接及操作类、字符串处理类等,所以,在开发系统前首先需要设计这些公共模块。下面将具体介绍图书馆管理系统中所需要数据库操作类。数据库操作类用来完成数据库连接操作,和数据库查询、添加、删除和修改操作。将这多个操作编写到一个公共类里,能够降低反复代码编写,有利于代码维护。在dataOperate类中一共定义了5个方法,下面分别对这多个方法进行分析。首先在命名空间区域引用usingSystem.Data.SqlClient命名空间。代码以下:usingSystem.Data.SqlClient;●creatCon()方法。creatCon()方法用来连接数据库,此方法返回类型为SqlConnection。代码以下:例程01publicstaticSqlConnectioncreatCon(){//生成SqlConnection一个对象用于连接数据库SqlConnetcioncon=newSqlConnection("server=.;database=db_WL;uid=sa;pwd=;"); returncon;}●execSQL()方法execSQL(stringsql)方法用来添加、插入和删除数据。此方法返回一个布尔型值,用来表示添加、插入和删除数据是否成功,实施成功返回true,不然返回false。调用此方法时应传入一个string类型参数,此参数表示所要实施SQL语句。代码以下:例程02publicstaticboolexecSQL(stringsql){//创建连接对象SqlConnectioncon=createCon();con.Open();SqlCommandcom=newSqlCommand(sql,con);try{//实施SQL语句com.ExecuteNonQuery();//关闭连接对象con.Close();}catch(Exceptione){con.Close();//实施失败返回falsereturnfalse;}//实施成功返回truereturntrue;}●selsSQL()方法execSQL(stringsql)方法用来查找数据是否存在。此方法返回一个布尔型值,用来表示是否查找到数据,如查找到数据则返回true,不然返回false。调用此方法时应传入一个string类型参数,此参数表示所要实施SQL语句。代码以下:例程03publicstaticboolseleSQL(stringsql){Inti;SqlConnectioncon=createCon();con.Open();SqlCommandcom=newSqlCommand(sql,con);try{ i=Convert.ToInt32(com.ExecuteScalar());con.Close();}catch(Exceptione){con.Close();returnfalse;}if(i>0){returntrue;}else{returnfalse;}}●getDataset()方法getDataset(stringsqlstringtable)方法用来查找并返回多行数据。此方法返回一个Dataset数据集。在调用此方法时应传入两个string类型参数,第一个参数表示所要实施SQL语句,第二个参数表示表名。代码以下:例程04publicstaticDataSetgetDataset(stringsql,stringtable){SqlConnectioncon=createCon();con.Open();DataSetds;SqlDataAdaptersda=newSqlDataAdapter(sql,con);ds=newDataSet();sda.Fill(ds,table);returnds;}●getRow()方法getRow(stringsql)方法用来查找并返回一行数据。此方法返回一个SqlCommand对象。在调用此方法时应传入一个string类型参数,此参数表示所要实施SQL语句。代码以下:例程05publicstaticSqlDataReadergetRow(stringsql){SqlConnectioncon=createCon();con.Open();SqlCommandcom=newSqlCommand(sql,con);returncom.ExecuteReader();}1.5网站首页设计 1.5.1网站首页概述管理员经过系统登录模块验证后,能够登录到图书馆管理系统主页。系统主页关键包含Banner信息栏、导航栏、借阅排行榜和版权信息4部分。网站首页运行效果图1.20所表示图1.20图书馆管理系统首页1.5.2网站首页技术分析在开发网站时,假如使用GridView控件显示信息,为其添加一个自动编号列,是一个比较有用功效,能够一目了然地看到目前页共有多少条统计。在图书馆管理系统首页开发中用到了这一技术,实现根据借阅次数多少进行排名功效。在实现自动编号功效时,关键触发了GridView控件RowDataBound事件,该事件具体说明以下。RowDataBound事件:展现GridView控件之前,该控件中每一行全部必需绑定到数据源中一条统计。将某个数据行绑定到GridView控件中数据以后,将引发RowDataBound事件。网站首页在实现自动编号功效时,关键是经过在GridView控件RowDataBound事件中动态修改GridView控件中第一列值实现。GridView控件RowDataBound事件中实现代码以下:if(e.Row.RowIndex!=-1)//判定GridView控件中是否有值{intid=e.Row.RowIndex+1;//将目前行索引加上一赋值给变量ide.Row.Cells[0].Text=id.ToString();//将变量id值传给GridView控件每一行单元格中}1.5.3网站首页实现过程1.设计步骤(1)在该网站中新建一个Web窗体,将其命名为index.aspx,用于显示网站首页。(2)在Web窗体中添加Table表格,用于页面布局。(3)在Table表格中添加相关服务器控件,控件属性设置其用途如表1.10所表示。控件类型控件名称关键属性设置控件用途gvBookTaxisAutoGenerateColumns属性设置为False(去掉GridView控件自动生成列)显示图书借阅排行榜Header.ascx均为默认值网站导航功效Bottom.ascx均为默认值网站版本信息表1.10页面中控件属性及用途实现代码首先导入必需命名空间usingSystem.Data.SqlClient.引入命名空间代码以下:usingSystem.Data.SqlClient;在page_Load单击事件中,利用Session对象判定用户登录状态,假如Session中存在变量为空,说明用户未登录,页面将跳转到登录页面;假如用户已登录,则调用自定义方法bindBookInfo().代码以下:protectedvoidPage_Load(objectsender,EventArgse){if(Session["userName"]!=null)//判定用户是否登录{bindBookInfo();//调用自定义方法用来绑定图书借阅排行}elseResponse.Redirect("entry.aspx");//跳转到登录页面}bindBookInfo()自定义方法用来显示图书借阅排行榜,在此方法中使用数据库操作类中getDataset()方法,查找出借阅率高图书信息绑定到GridView控件上。实现代码以下:protectedvoidbindBookInfo(){stringsql="selecttop10*fromtb_bookInfoorderbyborrowSumdesc";//设置SQL语句gvBookTaxis.DataSource=dataOperate.getDataset(sql,"tb_bookInfo");//获取图书信息数据源gvBookTaxis.DataBind();//绑定GridView控件}在图书信息表中,图书类型存放是类型编号,为了查看方便将图书类型编号转换为类型名称。此功效在GridView控件RowDataBound事件中实现,在此事件中先获取图书类型编号,经过编号在图书类型表中获取类型名称,将类型名称绑定到图书类型列中。实现代码以下:protectedvoidgvBookTaxis_RowDataBound(objectsender,GridViewRowEventArgse){if(e.Row.RowIndex!=-1)//判定GridView控件中是否有值{intid=e.Row.RowIndex+1;//将目前行索引加上一赋值给变量ide.Row.Cells[0].Text=id.ToString();//将变量id值传给GridView控件每一行单元格中}if(e.Row.RowType==DataControlRowType.DataRow){//绑定图书类型stringbookType=e.Row.Cells[3].Text.ToString();//获取图书类型编号stringtypeSql="select*fromtb_bookTypewhereTypeID="+bookType;SqlDataReadertypeSdr=dataOperate.getRow(typeSql);typeSdr.Read();//读取一条数据e.Row.Cells[3].Text=typeSdr["typeName"].ToString();//设置图书类型//绑定书架stringbookcase=e.Row.Cells[4].Text.ToString();//获取书架编号stringcaseSql="select*fromtb_bookcasewherebookcaseID="+bookcase;SqlDataReadercaseSdr=dataOperate.getRow(caseSql);caseSdr.Read();e.Row.Cells[4].Text=caseSdr["bookcaseName"].ToString();//设置书架//设置鼠标悬停行颜色e.Row.Attributes.Add("onMouseOver","Color=this.style.backgroundColor;this.style.backgroundColor='lightBlue'");e.Row.Attributes.Add("onMouseOut","this.style.backgroundColor=Color;");}}1.6管理员设置模块1.6.1管理员设置模块管理员设置模块关键包含查看管理员列表、添加管理员、管理员权限设置和删除管理员4个功效。选择"系统设置"/"管理员设置"命令,进入到管理员设置页面。在此页面中将显示全部管理员名称和管理员拥有权限。管理员设置页面图1.21所表示。图1.21管理员设置页面单击"添加管理员"链接按钮将弹出添加管理员网页对话框,在此对话框中能够添加新管理员,新添加管理员默认拥有图书借还权限和系统查询权限,图1.22所表示。图1.22添加管理员单击"权限设置"链接按钮将弹出管理员权限网页对话框,在此对话框中能够设置某一个管理员所拥有权限。比如某个管理员不拥有系统设置权限,则"系统设置"一栏全部功效将不能使用,图1.23所表示。图1.23设置管理员权限1.6.2管理员设置模块技术分析在添加新管理员时,在管理员权限设置表中也应该将新管理员添加到其中。此功效关键利用触发器来实现。触发器在应用程序中能够替换繁琐程序代码,完成对应功效。因为触发器能够查询其它表,而且能够包含复杂Transact-SQL语句,所以能够实现强制性、复杂业务规则或要求。触发器实质是一个特殊存放过程,不过它和表却是紧密联络,离开了表它将不复存在。触发器不像存放过程那样需要调用才能实施,而是在对表中数据进行增、删、改(INSERT、DELETE、UPDATE)操作时被触发而实施。触发器能够包含复杂Transact-SQL语句。在触发器内无设置回滚,能够将触发它语句所在事务全部回滚,这么检测到错误时能够回滚事务以撤销错误。在MicrosoftSQLServer中使用触发器优点可概括以下:触发器能够实现外键约束功效,实现对表级联修改。触发器能够实现核查约束功效。而且其功效更为强大。假如对表中数据进行了增、删、改操作,使用触发器能够依据修改前后差异,采取对应对策。许可在一个表中针对不一样增、删、改操作设置多个触发器,以完成各类不一样任务。触发器在SQLServer中基础应用可大致概括为Insert型触发器、Update型触发器、Delete型触发器、嵌套型触发器和递归型触发器。添加管理员模块使用是Insert型触发器,下面介绍触发器创建。创建Insert触发器:需用到两个表,一个表为管理员信息表tb_user,用来存放新添加管理员信息;另一个表为管理员权限设置表tb_admSet,用来存放每个管理员管理权限。在管理员信息表中添加一个新管理员信息同时,也应将新添加管理员名称添加到管理员权限设置表中。在查询分析器里建立Insert型触发器语法以下:userdb_tsrj/*判定表中是否有名为addUser触发器*/IFEXISTS(SELECTnameFROMsysobjectsWHEREname='addUser'ANDtype='p')DROPPROCEDUREaddUserGOcreatetriggeraddUserontbUserforinsertasinsertintotb_admSet(userName)selectinserted.userNamefrominserted1.6.3查看管理员信息页实现过程1.设计步骤(1)在该网站新建一个Web窗体,将其命名为userManage.aspx,用于显示管理员信息。(2)在Web窗体中添加Table表格,用于页面布局。(3)在Table表格中添加相关服务器控件,控件属性设置及其用途如表1.11所表示。控件类型控件名称关键属性设置控件用途gvAdmSetAutoGenerateColumns属性设置为False(去掉GridView控件自动生成列)显示管理员具体信息Header.ascx均为默认值网站导航功效bottom.ascx均为默认值网站版本信息为了方便读者了解GridView控件设置,在此给出GridView控件前台代码:<asp:GridViewID="gvAdmSet"runat="server"AutoGenerateColumns="False"CellPadding="4"ForeColor="#333333"GridLines="None"Width="815px"OnRowDeleting="gvAdmSet_RowDeleting"><FooterStyleBackColor="#507CD1"Font-Bold="True"ForeColor="White"/><Columns><asp:BoundFieldDataField="userName"HeaderText="管理员名称"/><asp:CheckBoxFieldDataField="systemSet"HeaderText="系统设置"ReadOnly="True"/><asp:CheckBoxFieldDataField="readerManage"HeaderText="读者管理"/><asp:CheckBoxFieldDataField="bookManage"HeaderText="图书管理"/><asp:CheckBoxFieldDataField="bookBorrow"HeaderText="图书借还"/><asp:CheckBoxFieldDataField="systemSearch"HeaderText="系统查询"/><asp:TemplateFieldHeaderText="权限设置"><ItemTemplate><ahref="#"onclick="window.open('admSet.aspx?userName=<%#Eval("userName")%>','','width=292,height=176');">权限设置</a></ItemTemplate></asp:TemplateField><asp:CommandFieldShowDeleteButton="True"HeaderText="删除"/></Columns><SelectedRowStyleBackColor="#D1DDF1"ForeColor="#333333"Font-Bold="True"/><PagerStyleBackColor="#2461BF"ForeColor="White"HorizontalAlign="Center"/><HeaderStyleBackColor="#99C89D"Font-Bold="True"ForeColor="White"/><AlternatingRowStyleBackColor="White"/><RowStyleBackColor="#EFF3FB"/><EditRowStyleBackColor="#2461BF"/></asp:GridView>2.实现代码在页面加载事件中,首先判定用户是否登录,假如用户已登录,则判定此用户是否拥有管理此页面权限,拥有此权限将调用bindUserManage()自定义方法显示全部管理员信息。实现代码以下:protectedvoidPage_Load(objectsender,EventArgse){if(Session["userName"]!=null)//判定管理员是否登录{if(getSet())//判定是否拥有权限{bindUerManage();}elseResponse.Write("<script>alert('您没有此权限');location='index.aspx';</script>");}else{Response.Redirect("entry.aspx");//返回到登录页面}}在bindUserManage()自定义方法中,调用数据库操作类中getDataset()方法获取全部管理员信息,实现代码以下:publicvoidbindUerManage(){stringsql="select*fromtb_admSet";gvAdmSet.DataSource=dataOperate.getDataset(sql,"tb_admSet");//获取数据源gvAdmSet.DataKeyNames=newstring[]{"userName"};//设置主键字段gvAdmSet.DataBind();//绑顶GridView控件显示管理员信息}删除管理员功效经过GridView控件中RowDelete()事件来实现,在此事件中获取该管理员登录名,经过登录名使用数据库操作类中execSQL()方法将此管理员删除,最终需要重新绑定管理员信息。实现代码以下:rotectedvoidgvAdmSet_RowDeleting(objectsender,GridViewDeleteEventArgse){stringuserName=this.gvAdmSet.DataKeys[e.RowIndex].Value.ToString();//获取主键字段stringsql="deletefromtb_admSetwhereuserName='"+userName+"'";dataOperate.execSQL(sql);//删除管理员信息bindUerManage();//重新绑定管理}1.6.4管理员权限设置页实现过程1.设计步骤(1)在该网站中新建一个Web窗体,将其命名为admSet.aspx,用于设置管理员权限。(2)在Web窗体中添加Table表格,用于页面布局。(3)在Table表格中添加相关服务器控件,控件属性设置及其用途如表1.12所表示。表1.12页面中控件属性设置及用途控件类型控件名称关键属性设置控件用途txtUserName将ReadOnly属性设置为“True”(设置文本框是否为只读属性)显示管理员登录名cekboxSystemSet均为默认值显示并设置管理员系统设置权限ceckboxBookBorrow均为默认值显示并设置管理员图书借还权限ceckboxReaderManage均为默认值显示并设置管理员读者管理权限ceckboxSystemSearch均为默认值显示并设置管理员系统查询权限ceckboxBookManage均为默认值显示并设置管理员图书管理权限btnSave均为默认值保留目前设置按钮btnClose均为默认值关闭此页面按钮2.实现代码在页面加载事件中判定页面是否是首次加载,假如页面是首次加载,则调用bindUser()自定义方法显示目前用户拥有权限。实现代码以下:staticstringuserName;protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){bindUser();//调用自定义方法显示该管理员目前拥有权限}}在bindUser()自定义方法中经过查看管理页面传入管理员登录名,在数据库中读取此管理员目前拥有权限并将权限信息显示出来。实现代码以下:publicvoidbindUser(){userName=Request.QueryString["userName"].ToString();//获取管理员登录名txtUserName.Text=userName;//显示管理员登录名stringsql="select*fromtb_admSetwhereuserName='"+userName+"'";SqlDataReadersdr=dataOperate.getRow(sql);sdr.Read();//读取一条统计cekboxSystemSet.Checked=Convert.ToBoolean(sdr["systemSet"]);//显示是否拥有系统设置权限ceckboxSystemSearch.Checked=Convert.ToBoolean(sdr["systemSearch"]);//显示是否拥有系统查询权限ceckboxReaderManage.Checked=Convert.ToBoolean(sdr["ReaderManage"]);//显示是否拥有读者管理权限ceckboxBookManage.Checked=Convert.ToBoolean(sdr["bookManage"]);//显示是否拥有图书管理权限ceckboxBookBorrow.Checked=Convert.ToBoolean(sdr["bookBorrow"]);//显示是否拥有图书借还权限}当修改完目前管理员权限后将管理员权限信息更新到管理员权限设置表中,此操作是在“保留”按钮Click事件中实现。在此事件中获取目前设置管理员权限信息,使用数据库操作类中execSQL()方法将数据库中权限信息更新。实现代码以下:protectedvoidbtnSave_Click(objectsender,EventArgse){bytesystemSet=Convert.ToByte(cekboxSystemSet.Checked);//获取系统管理权限bytesystemSearch=Convert.ToByte(ceckboxSystemSearch.Checked);//获取系统查询权限bytereaderManage=Convert.ToByte(ceckboxReaderManage.Checked);//获取读者管理权限bytebookManage=Convert.ToByte(ceckboxBookManage.Checked);//获取图书管理权限bytebookBorrow=Convert.ToByte(ceckboxBookBorrow.Checked);//获取图书借还权限stringsql="updatetb_admSetsetsystemSet="+systemSet+",systemSearch="+systemSearch+",readerManage="+readerManage+",bookManage="+bookManage+",bookBorrow="+bookBorrow+"whereuserName='"+userName+"'";if(dataOperate.execSQL(sql)){RegisterStartupScript("","<script>alert('设置成功!');opener.location.reload();window.close();</script>");}else{RegisterStartupScript("","<script>alert('设置失败!')</script>");}}1.6.5单元测试在获取管理员某项权限时,使用CheckBox控件Checked属性获取一个布尔类型值,此值表示目前控件选中状态。假如使用此值更新管理员权限设置表会出现以下错误:错误原因:没有将布尔类型值转换。在管理员权限设置表中存放字段类型为bit.处理方法:将CheckBox控件Checked属性获取布尔类型值转换为byte类型。转换代码以下:Convert.ToByte(CheckBox.Checked).1.7图书档案管理模块设计1.7.1图书档案管理模块概述图书档案管理模块关键包含查看图书具体信息、添加图书信息、修改图书信息、删除图书信息和打印图书具体信息5个功效。选择“图书管理”/“图书档案管理”命令,进入到图书管理页面。页面运行效果图1.24所表示。图1.24图书档案管理页面单击"添加图书信息"或“修改”链接按钮,将弹出添加或修改图书信息网页对话框,图1.25所表示。图1.25添加或修改图书信息对话框1.7.2图书档案管理模块技术分析在打印图书具体信息时用到了,SOLServer视图功效。视图是一个常见数据库对象,可将查询结果以虚拟表形式存放在数据库中。视图并不在数据库以存放数据集形式存在。视图结构和内容是建立在对表查询基础上,和表一样包含行和列。视图中内容是由查询定义来,而且视图和查询全部是经过SOL语句定义,它们有着很多相同之处,但又存在很多不一样之处。存放:视图存放为数据库设计一部分,而查询则不是。视图能够严禁全部用户访问数据库中基表而要求用户只能经过视图操作数据。这种方法能够保护用户和应用程序不受一些数据库修改影响,一样也能够白虎数据表安全性。排序:能够排序任何查询果,不过只有当视图包含TOP自居是才能排序视图。加密:能够加密视图,但不能加密查询。视图能够使用Teansact-SOL创建,使用是 CREATEVIEW语句。语法以下:CREATEVIEWview_name[(column[,...n])][WITH<view_attribute>[,...n]]ASselect_statement[WITHCHECKOPTION]参数说明以下:View_name:视图名称。Column:定义视图中字段名。假如没有指定,则视图将取得和SELECT语句中字段名相同名称。但对于一下情况则必需指定字段名:视图是从多个奥中产生,对于表中有数据列重名时。当列是算术表示式中、函数常量派生得到。当初图中某列不一样于表中列名称时。WITH<view_attribute>:其中<view_attribute>有一下3种参数。ENCRTPTIONG:表示对视图文本进行加密。SCHMABINDING:将视图绑定在架构上。指定SCHMABINDING时select_statement必需包含所引用表、视图或用户定义函数两部分名称(owner.object).VIE_METADATA:表示假如某一查询中引用该视图元数据信息,而不是以个基表或表。AS:视图要实施操作.Select_statement:定义视图查询语句。该语句能够引用多个表或其它视图。在CREATEVIEW语句中,对于查询语句有以下限制。不能包含COMPUTER或COMPUTERBY子句。不能包含ORDERBY子句。除非在SELECT语句中选择列表中也有一个TOP子句。不能包含INTO关键字。不能引用临时表或变量。WITHCHECKOPTION:要求在视图上实施全部数据修改语句全部必需符合由select_statement设置准则。经过视图修改统计,WITHCHECKOPTION能够确保提交修改后仍可经过视图修改数据。使用CHECKVIEW语句创建视图时,只要在查询分析器重写入对应文本。代码以下:createviewview_bookInfoasselecta.bookBarCode,a.bookName,b.typeName,c.bookcaseName,a.bookConcern,a.author,a.pricefromtb_bookInfoasainnerjointb_bookTypeasbona.bookType=b.typeIDinnerjointb_bookcaseascona.bookcase=c.bookcaseID控件类型控件名称关键属性设置及用途控件用途gvBookManageAllowPaging属性设置为True(许可分页)AutoGenerateColumns属性设置为False(去掉GridView控件生成列)PageSize属性设置为10(每页显示10条数据)显示图书具体信息HyperLink1将UavigateUrl属性设置为“~/bookInfoPrint.aspx”(需要跳转路径)跳转到打印图书具体信息页面header.ascx均为默认值网站导航功效bottom.ascx均为默认值网站版本信息表1.13控件属性设置及用途1.7.3查看图书具体信息页面实现过程设计步骤在该网页中建立一个web窗体,将其命名为bookinfomanage.aspx,用于显示图书具体信息。在web窗体中添加table表格,用于页面布局。在table表格中添加相关服务器控件,控件属性设置及用途如表4.13所表示.为了方便读者了解GridView控件设置,在此给出GridView控件前台代码。代码以下:<asp:GridViewID="gvBookManage"runat="server"AllowPaging="True"AutoGenerateColumns="False"CellPadding="4"ForeColor="#333333"GridLines="None"OnPageIndexChanging="gvBookManage_PageIndexChanging"OnRowDataBound="gvBookManage_RowDataBound"OnRowDeleting="gvBookManage_RowDeleting"Width="815px"><FooterStyleBackColor="#507CD1"Font-Bold="True"ForeColor="White"/><Columns><asp:BoundFieldDataField="bookBarCode"HeaderText="图书条形码"/><asp:BoundFieldDataField="bookName"HeaderText="图书名称"/><asp:BoundFieldDataField="bookType"HeaderText="图书类型"/><asp:BoundFieldDataField="bookcase"HeaderText="图书书架"/><asp:BoundFieldDataField="bookConcern"HeaderText="出版社"/><asp:BoundFieldDataField="author"HeaderText="作者"/><asp:BoundFieldDataField="price"HeaderText="图书定价"/><asp:BoundFieldDataField="borrowSum"HeaderText="借阅次数"/><asp:TemplateFieldHeaderText="修改"><ItemTemplate><ahref="#"onclick="window.open('addBookInfo.aspx?ID=<%#Eval("bookBarCode")%>','','width=340,height=371')">修改</a></ItemTemplate></asp:TemplateField><asp:CommandFieldHeaderText="删除"ShowDeleteButton="True"/></Columns><RowStyleBackColor="#EFF3FB"/><EditRowStyleBackColor="#2461BF"/><SelectedRowStyleBackColor="#D1DDF1"Font-Bold="True"ForeColor="#333333"/><PagerStyleBackColor="#99C89D"ForeColor="White"HorizontalAlign="Center"/><HeaderStyleBackColor="#99C89D"Font-Bold="True"ForeColor="White"/><AlternatingRowStyleBackColor="White"/></asp:GridView>实现代码在页面加载事件中,判定用户是否登录,假如用户已登录,则判定此用户是否含有管理此页面权限,拥有此权限将调用自定义bindBook()方法显示全部图书具体信息。实现代码以下protectedvoidPage_Load(objectsender,EventArgse){if(Session["userName"]!=null)//判定管理员是否登录{if(getSet())//判定是否拥有权限{bindBook();//自定义方法显示图书具体信息}elseResponse.Write("<script>alert('您没有此权限);location='index.aspx';</script>");}else{Response.Redirect("entry.aspx");//返回到登录页面}}在自定义bindBook()方法中,调用数据库操作类中getDataset()方法取得图书具体信息,将GridView控件数据库设getDataset()方法返回值并设置主键字段。实现代码以下:publicvoidbindBook(){stringsql="select*fromtb_bookInfo";gvBookManage.DataSource=dataOperate.getDataset(sql,"tb_bookInfo");//获取图书信息数据源gvBookManage.DataKeyNames=newstring[]{"bookBarCode"};//设置主键字段gvBookManage.DataBind();//绑定GridView控件}在Gruidview控件RowDataBound事件中,将图书类型编号和书架编号替换成文本。在此事件中获取图书类型和书架编号,经过,编号在数据库中找到对应名称并将其替换。试下代码以下:protectedvoidgvBookManage_RowDataBound(objectsender,GridViewRowEventArgse){if(e.Row.RowType==DataControlRowType.DataRow){//设置图书类型stringbookType=e.Row.Cells[2].Text.ToString();//获取图书类型编号stringtypeSql="select*fromtb_bookTypewhereTypeID="+bookType;SqlDataReadertypeSdr=dataOperate.getRow(typeSql);typeSdr.Read();//读取一条统计e.Row.Cells[2].Text=typeSdr["typeName"].ToString();//设置书架stringbookcase=e.Row.Cells[3].Text.ToString();//获取书架编号stringcaseSql="select*fromtb_bookcasewherebookcaseID="+bookcase;SqlDataReadercaseSdr=dataOperate.getRow(caseSql);caseSdr.Read();//读取一条统计e.Row.Cells[3].Text=caseSdr["bookcaseName"].ToString();e.Row.Attributes.Add("onMouseOver","Color=this.style.backgroundColor;this.style.backgroundColor='lightBlue'");e.Row.Attributes.Add("onMouseOut","this.style.backgroundColor=Color;");}}删除图书信息在GridView控件RowDelecting事件中实现,在此事件中获取改行图书信息条形码,依据条形码删除此图书信息。实现代码以下:protectedvoidgvBookManage_RowDeleting(objectsender,GridViewDeleteEventArgse){stringbarCode=gvBookManage.DataKeys[e.RowIndex].Value.ToString();//获取改行图书条形码stringsql="deletefromtb_bookInfowherebookBarCode='"+barCode+"'";dataOperate.execSQL(sql);//将此条图书信息删除bindBook();//调用自定义方法重新绑定图书信息}GetSet()自定义方法用来判定此用户是否拥有管理此页面权限,此方法返回一个布尔型值。当此值为True是表示用户拥有管理此页面权限,为Fales时则没有管理此页面权限,实现代码以下:publicboolgetSet(){stringuserName=Session["userName"].ToString();//获取管理员登录名stringsql="select*fromtb_admSetwhereuserName='"+userName+"'";SqlDataReadersdr=dataOperate.getRow(sql);sdr.Read();//读取一条统计returnConvert.ToBoolean(sdr["systemSet"]);//返回是否拥有权限}为了方便图书信息查询和提升页面性能,使用了GridView控件自带分页功效此功效需要设置AllowPaging属性为True,并在GridView控件PageIndexChanging事件中设置目前页面索引。实现代码以下:protectedvoidgvBookManage_PageIndexChanging(objectsender,GridViewPageEventArgse){gvBookManage.PageIndex=e.NewPageIndex;//设置目前页索引gvBookManage.DataBind();//重新绑定GridView控件}1.4.7添加和修改图书信息页面实现过程1.设计步骤在该网站新建一个web窗体,将其命名为addBookInfo.aspx,用于添加或修改图书信息。在web窗体中添加Table表格,用于页面布局。在Table表格中添加相关服务器控件,控件属性设置及其用途如表1.14所表示.表1.14控件属性设置及其用途控件类型控件名称关键属性设置及用途控件用途txtBarCode将ReadOnly属性设置为True(设置文本框是否为只读属性)显示图书条形码txtBookName均为默认值显示或修改图书名称txtAuthor均为默认值显示或修改图书作者txtBookConcer均为默认值显示或修改图书出版社txtPrice均为默认值显示或修改图书价格ddlBookType均为默认值显示或设置图书类型ddlBookcase均为默认值显示或设置书架btnSave均为默认值保留目前图书设置按钮btnClose均为默认值关闭窗口按钮实现代码在页面加载时间中依据图书管理页面传入值,来判定目前对图书信息操作,假如添加新图书信息将传入值为add,假如对图书信息进行修改将闯进值为图书条码信息。判定出对图书信息多人操作后依据对应操作实现不一样功效,添加新图书信息操作将调用自定义barcode()方法生成新图书条形码,修改图书信息操作则调用自定义bindBookInfo()方法显示图书具体信息,实现代码以下。privatestringid="";protectedvoidPage_Load(objectsender,EventArgse){id=Request.QueryString["ID"].ToString();//获取对图书操作方法if(!IsPostBack)//判定是否是首次加载{bindBookType();//自定义方法绑定图书类型bindBookcase();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论