版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
./南京理工大学课程设计说明书赵军旺__0906840442黄岳0906840419学院<系>:计算机科学与技术学院专业:计算机科学与技术题 目:Delphi软件课程设计——图书馆管理系统20xx9月目录一、概述·················································3二、需求分析··············································4三、系统设计···············································5四、系统实施···············································8五、系统测试···············································8六、收获和体会············································8七、附录··················································9八、参考文献·············································9概述项目背景:随着知识经济时代的迅速发展,由于以前广泛使用的管理书籍的方法都将慢慢淘汰。而如今积累的书籍越来越多,若是不对其进行有效地管理,对信息的查询就如大海捞针不得其所。本系统就是针对图书管理的要求而开发的。编写目的:现代化的图书馆也应该有现代化的管理系统。随着计算机与性能的不断提高,计算机已经在教学、科研、管理等方面得到越来越广泛的应用。同样,图书馆管理系统有效地管理也离不开计算机。一个良好的图书馆管理系统,不但可以方便管理人员实现图书馆的日常管理工作,更重要的是可以提高图书馆资源的利用效率,体现出图书馆的价值。软件定义:开发图书馆管理系统需要用到Delphi7,SQLServer2008.Delphi,是Windows平台下著名的快速应用程序开发工具<RapidApplicationDevelopment,简称RAD>。它的前身,即是DOS时代盛行一时的"BorlandTurboPascal",最早的版本由美国Borland〔宝兰〕公司于1995年开发。主创者为AndersHejlsberg。经过数年的发展,此产品也转移至Embarcadero公司旗下。Delphi是一个集成开发环境〔IDE〕,使用的核心是由传统Pascal语言发展而来的ObjectPascal,以图形用户界面为开发环境,透过IDE、VCL工具与编译器,配合连结数据库的功能,构成一个以面向对象程序设计为中心的应用程序开发工具。SQLServer2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQLServer版本。这篇文章详细介绍了MicrosoftSQLServer2008中的新的特性、优点和功能……在现今数据的世界里,公司要获得成功和不断发展,他们需要定位主要的数据趋势的愿景。微软的这个数据平台愿景帮助公司满足这些数据爆炸和下一代数据驱动应用程序的需求。微软将继续投入和发展以下的关键领域来支持他们的数据平台愿景:关键任务企业数据平台、动态开发、关系数据和商业智能。开发环境:Delphi菜单、Delphi快捷工具栏、Delphi组件面板、对象树状查看器、对象查看器、有丰富的第三方控件。需求分析问题的提出:随着科学技术的不断提高,计算机科学日渐成熟,作为计算机应用的一部分,使用计算机对图书信息进行管理,具有手工管理所无法比拟的优点。图书管理系统的开发是一个老生常谈的问题,以其作为数据库开发的示例不仅是因为他的开放性,而且还因为它是一个开放的系统,比较成熟,通过实践,对学生的软件开发能力有很大帮助。本系统主要实现对图书馆信息的管理,主要可以分为两大块:图书信息的服务系统和图书的综合管理系统。图书的使用对象是借阅者,例如学生,教师;管理者是图书馆的管理员。因此根据这些信息,本系统的主要功能就是:实现图书馆图书信息的管理和维护,如用户信息管理,图书馆规则维护,新书入库,整理图书,修改图书信息和进行查询等;以与服务系统的图书信息查询,图书的借出和归还等功能;图书信息管理系统能够为用户提供充足的信息和快捷的查询手段.例如:检索迅速、查找方便、可靠性高、存储量大、XX性好、寿命长、成本低等。这些优点能够极大地提高图书信息管理的效率,也是图书管理的科学化、数字化、正规化管理,与世界接轨的重要条件。用计算机制作的图书信息管理系统还可以通过功能强大的Internet网与时的向读者发布图书的最新动态,因此,开发这样一套管理软件成为很有必要的事情。综上,本系统主要着力于解决三个问题,一是服务功能,包括查询,借阅等等;二是管理功能,包括管理员对数目和读者的管理;三是读书的采购功能,包括订单和入库等。如何使用delphi有效地实现,将是一个值得思考的问题。系统的业务功能分析:密码错误!密码错误!开始主页用户登录读者1.我的图书馆2.检索3.分类浏览管理员修改读者、管理员信息查询书目借阅还书增加订单录入书目罚款设置图书信息需完成的功能:管理员管理1. 增减员工,设置员工权限2. 添加采购员3. 管理读者信息,设置权限4. 管理图书5. 修改密码采购员订单添加,管理普通员工审核订单与购进数管理图书管理图书借阅,归还和罚款图书下架读者管理系统1. 借阅2. 查询3. 修改密码数据流图:图书馆管理系统顶层数据流图读者信息读者信息管理员情况用户身份读者情况借还书要求图书信息图书情况图书图书P1内部管理D1图书记录P2借书管理D3借书记录读者读者P3安全管理管理员D4用户记录D1图书记录图1图书馆管理系统顶层数据流图在图书馆管理系统顶层数据流图中,"P1内部管理"和"P2借书管理"两个处理框所表示的功能都太复杂,对它们进一步细化后得出第二层数据流图。见图2和图3。实际上"P1.1图书管理"还可以细化,分为图书记录维护、订单增加和新书入库三个下级处理框,而"P1.2读者管理"也可以细化为新读者入户和读者记录维护两个下级处理框。图书进货、入库图书进货、入库读者情况图书P1.1图书管理D1图书记录P1.2读者管理D1读者记录读者图2"内部管理"的细化数据流图还书请求还书请求图书情况图书信息借书请求读者P2.1查看书目D1图书记录P2.2借书处理D3借书记录P2.3还书处理读者图书D2读者记录图3"借书管理"的细化数据流图经过整理后得出细化后的系统数据流图,如图4图书进货、入库图书进货、入库还书请求图书情况借书请求用户身份图书信息用户身份管理员情况用户身份读者情况图书P1.1图书管理D1图书记录P1.2读者管理D4用户记录读者P3安全管理管理员D3借书记录P2.3还书处理P2.2借书处理P2.1查看书目读者图书读者D1图书记录D2读者记录D2读者记录图4细化后的图书馆管理系统数据流图数据字典:图书馆管理系统数据流图中,数据信息和处理过程需要通过数据字典才能描述清楚。下面主要对数据流图中的数据流、数据存储和处理过程进行说明。主要的数据流定义数据流名称:图书情况位置:图书->P1.1,图书->P2.3定义:图书情况=索书号+书名+作者++出版日期+数量+可借数+借阅次数 数据流量:平均流量为每月传输1000次,高峰期流量每天传输100次。说明:图书入库时,根据图书情况建立图书记录;读者还书时要核实图书基本信息是否与图书记录相符,要检查图书是否完好。数据流名称:用户身份位置:P3->{P1.1,P1.2,P2.1,P2.3}定义:用户身份=[非法用户|管理员|读者]数据流量:平均流量为每月传输2000次,高峰期流量每天传输100次。说明:不同的用户身份进入的处理过程不同。主要数据存储定义数据存储编号:D3数据存储名称:借书记录输入:P2.2输出:P2.2,P2.3数据结构:借书记录=索书号+读者编号+借阅日期+归还日期数据量和存取频度:数据量为5000条,存取频度为每天100次。存取方式:联机处理,以更新操作为主,随机检索。说明:读者借阅了一本书,就生成一条借阅记录。借阅日期为添加记录的当天日期。数据存储编号:D4数据存储名称:用户记录输入:P3输出:P3数据量和存取频度:数据量为1000条,存取频度为每天100次。存取方式:联机处理,以检索为主,顺序检索。数据结构:用户+密码+级别说明:级别是"管理员"或"读者"。主要处理过程处理过程编号:P2.1处理过程名:查看书目输入:借书请求,D1,用户身份输出:借书请求,图书信息处理说明:实现根据图书类别查询图书、根据书名模糊查询图书的功能。处理过程编号:P3处理过程名:安全管理输入:管理员情况,D4输出:用户身份,D4,管理员情况处理说明:通过用户名和口令,确认用户身份,保证系统的安全性。系统设计数据表ER图:LevelLevelBookNumBorrowdateReturndatemanageManagerManagerIDPasswordNameLevelPresentPositionPlevelPnameBorrowedReaderNameSexBirthdayUserIDPasswordDeadlineLevelhasReaderKindMaxSumaddOrderOrderIDOrderdateorderStaffIDBookNameBookPressofStockstockIDorderIDenterStaffIDofBookIndexNumIsbnBookIDNameAuthorPressPriceBookstatePriceAuthorIsbnrealNumenterstockclassBookClassClassIDClassNameMemoBorrowIDFine_ticketEmailPhoneKindNamePhoneEmailSexBirthday关系模式:Book<BookId,Index,ISBN,BookName,Press,Author,ClassID,Memo,State>Bookclass<classid,Bookclass,classID>Borrowed<BorrowedId,ReaderId,BookId,Borrow_Date,DeadLine,Return_date,Fine_ticket>FineKind<FineKind,Describe,Num>\Reader<ReaderId,Password,ReaderLevel,Name,Sex,Email,Phone,Birthday,Expiry_Time>ReaderKind<ReaderLevel,Kind_Name,Max_borrow_num>Manager<ManagerId,Password,Name,Level,Phone,Email,,Birthday,Sex>ManagerKind<ManagerLevel,Level_Name>Order<OrderId,BookName,Press,Order_num,OrderDate,OrderStaffId>Stock<StockId,OrderId,StockStaffId,Author,ISBN,Price,RealNum,StockDate>表的物理设计Book〔图书表〕BookClass〔图书分类表〕Borrowed〔借阅表〕FineKind〔罚款设置表〕Manager〔管理员表〕ManagerKind〔管理员类别表〕Order〔订单表〕Reader〔用户表〕ReaderKind〔用户类别表〕Stock〔图书入库表〕视图,索引,数据库权限: 存储过程:增加员工:ALTERPROCEDURE[dbo].[Proc_addAdm]managerIdvarchar<20>,passwordvarchar<20>='888888',Namevarchar<20>=null,Levelint,Phonevarchar<20>=null,Emailvarchar<30>=null,Birthdaydate=null,sexvarchar<10>=null,ableintoutputASBEGINifexists<select*fromManagerwheresManagerId=managerId>setable=0elsebegininsertintoManagervalues<managerId,password,Name,Level,Phone,Email,Birthday,sex>setable=1endENDiferror<>0orrowcount=0rollbacktransaction;增加用户:ALTERPROCEDURE[dbo].[Proc_addReader]readeridvarchar<50>,spasswordvarchar<20>='888888',readerlevelint=2,Namevarchar<20>=null,sexvarchar<10>=null,Emailvarchar<30>=null,Phonevarchar<20>=null,Birthdaydate=null,lend_ableint=1,ableintoutputASBEGINifexists<select*fromReaderwheresReaderId=readerid>setable=0elsebegininsertintoReadervalues<readerid,spassword,readerlevel,Name,sex,Email,Phone,Birthday,lend_able,null>setable=1endENDiferror<>0orrowcount=0rollbacktransaction;借阅书籍:ALTERPROCEDURE[dbo].[Proc_Borrow]ReaderIdvarchar<50>,BookIdvarchar<50>,stateintoutputASBEGINif<selectbalancefromReaderwheresReaderId=ReaderId><0setstate=0 --有欠款,不可借elsebegindeclareBorrowIdvarchar<50>setBorrowId=ReaderId+'-'+BookId+cast<GETDATE<>asvarchar<10>>insertinto[dbo].Borrowedvalues<BorrowId,ReaderId,BookId,GETDATE<>,GETDATE<>+30,null,0>updateBooksetiState=0wheresBookId=BookIdsetstate=1endENDiferror<>0orrowcount=0rollbacktransaction;用户是否能借阅:ALTERPROCEDURE[dbo].[Proc_Canborrow]userIdvarchar<30>,can_borrowintoutputASBEGINdeclaretmp_num1int--已借书目declaretmp_num2int--可借书目declaretmpintselecttmp_num1=count<*>fromborrowedwheresReaderId=userIdandreturn_date=nullselecttmp_num2=Max_borrow_numfromReaderKindwhereiReaderLevel=<selectireaderLevelfromReaderwheresReaderId=userId>selecttmp=Lend_ablefromReaderwheresReaderId=userIdiftmp_num1<=tmp_num2andtmp=1setcan_borrow=1elsesetcan_borrow=0ENDiferror<>0orrowcount=0rollbacktransaction;检查书目状态:ALTERPROCEDURE[dbo].[Proc_Checkbook]bookIdvarchar<50>,bookStateint,pagesint=nullASBEGINifbookState=2 --缺页beginupdateBorrowedsetFine_ticket=Fine_ticket+<selectfnumfromFineKindwhereiFineKind=2>*pageswheresBookId=<selecttop<1>sBookIdfromBorrowedwheresBookId=bookIdorderbyReturn_Datedesc>updateBooksetiState=1wheresBookId=bookIdendelseifbookState=4 --遗失beginupdateBorrowedsetFine_ticket=Fine_ticket+<selectfnumfromFineKindwhereiFineKind=4>*<selectfPricefromBookwheresBookId=bookId>wheresBookId=<selecttop<1>sBookIdfromBorrowedwheresBookId=bookIdorderbyReturn_Datedesc>updateBooksetiState=4wheresBookId=bookIdendENDiferror<>0orrowcount=0rollbacktransaction;图书入库:ALTERPROCEDURE[dbo].[Proc_EnterStock]orderIdvarchar<30>,stockstaffIdvarchar<30>,Authorvarchar<30>=null,Isbnvarchar<15>=null,Pricefloat=0,RealNumintASBEGINdeclareStockIdvarchar<30>setStockId=orderId+'日期'+cast<GETDATE<>asvarchar<10>>insertintoStockvalues<StockId,orderId,Isbn,price,RealNum,GETDATE<>,Author,stockstaffId,1>ENDiferror<>0orrowcount=0rollbacktransaction;登录:ALTERPROCEDURE[dbo].[Proc_LogIn]idvarchar<50>,passwordvarchar<50>,posintoutput,namevarchar<50>outputAS--BEGINIFpos=0BEGINifexists<select*fromReaderwheresReaderId=idandsPassword=passwordandLend_able=1>selectname=NamefromReaderwheresReaderId=idandsPassword=passwordelsesetpos=-1ENDELSEBEGINifexists<select*fromManagerwheresManagerId=idandsPassword=password>selectpos=iLevel,name=NamefromManagerwheresManagerId=idandsPassword=password/*设置pos的值,当显示管理员界面时根据级别不同而设置管理员可进行的操作*/elsesetpos=-1END--ENDelsesetpos=-1END--ENDiferror<>0orrowcount=0rollbacktransaction;丢失书目:ALTERPROCEDURE[dbo].[Proc_lose]bookIdvarchar<50>,readerIdvarchar<50>ASBEGINupdateBorrowedsetFine_ticket=<selectfnumfromFineKindwhereiFineKind=3>*<selectfpricefromBookwheresBookId=bookId>wheresBookId=<selecttop<1>sBookIdfromBorrowedwheresBookId=bookIdorderbyDeadLinedesc>updateBooksetiState=4wheresBookId=bookIdENDiferror<>0orrowcount=0rollbacktransaction;下订单:ALTERPROCEDURE[dbo].[Proc_MakeOrder]booknamevarchar<30>,pressvarchar<20>=null,order_numint,orderstaffIdvarchar<20>,stateint=nulloutputASBEGINdeclareorderidvarchar<30>setorderid=bookname+'日期'+cast<GETDATE<>asvarchar<10>>ifexists<select*from[order]wheresOrderId=orderid>setstate=0elsebegininsertinto[dbo].[Order]values<orderid,bookname,press,order_num,GETDATE<>,orderstaffId>setstate=1endENDiferror<>0orrowcount=0rollbacktransaction;修改密码:ALTERPROCEDURE[dbo].[Proc_Password_change]old_pasvarchar<20>,new_pasvarchar<20>,userIdvarchar<30>,user_kindint,stateintoutputASBEGINIFuser_kind=1 --managerbeginifExists<select*fromManagerwheresManagerId=userIdandsPassword=old_pas>beginupdateManagersetsPassword=new_paswheresManagerId=userIdsetstate=1endelsesetstate=0endELSEifuser_kind=2 --readerbeginifExists<select*fromReaderwheresReaderId=userIdandsPassword=old_pas>beginupdateReadersetsPassword=new_paswheresReaderId=userIdsetstate=1endelsesetstate=0endENDiferror<>0orrowcount=0rollbacktransaction;充值:ALTERPROCEDURE[dbo].[Proc_paydebt]sReaderIdvarchar<30>,moneyfloatASBEGINdeclaretmpfloatselecttmp=balancefromReaderwheresReaderId=sReaderIdiftmpisnullupdateReadersetbalance=moneywheresReaderId=sReaderIdelseupdateReadersetbalance=balance+moneywheresReaderId=sReaderIdENDiferror<>0orrowcount=0rollbacktransaction;超期:ALTERPROCEDURE[dbo].[Proc_readerborrow]sReaderIdvarchar<30>ASBEGINselect*fromBorrowed,BookwheresReaderId=sReaderIdandBook.sBookId=Borrowed.sBookIdandReturn_DateisnullENDiferror<>0orrowcount=0rollbacktransaction;还书:ALTERPROCEDURE[dbo].[Proc_Return]bookIdvarchar<50>ASBEGINdeclarebalancefloatifGETDATE<>><selectDeadLinefromBorrowedwheresBookId=bookIdandReturn_Date=null>begindeclaretmpfloatdeclaredeadlinedateselectdeadline=deadlinefromBorrowedwheresBookId=bookIdandReturn_Date=null--该书的应还日期selecttmp=fNumfromFineKindwhereiFineKind=1settmp=tmp*CAST<<GETDATE<>-deadline>asint>updateBorrowedsetFine_ticket=tmpwheresBookId=bookIdupdateReadersetbalance=balance-tmpwheresReaderId=<selecttop<1>sReaderIdfromBorrowedwheresBookId=bookIdorderbyDeadLinedesc>endupdateBorrowedsetReturn_date=GETDATE<>wheresBookId=bookId--设置还书日期 updateBooksetiState=1wheresBookId=bookIdENDiferror<>0orrowcount=0rollbacktransaction;搜索书籍:ALTERPROCEDURE[dbo].[Proc_Select]stringvarchar<200>,strvarchar<20>,ableint=0ASBEGINdeclarepreintdeclarelasintdeclaretepstrvarchar<20>declaresqlvarchar<500>setsql='select sbookIdas图书编号, sBookNameas图书名称, sAuthoras作者, sISBNasISBN, sPressas, sIndexas索引号, fpriceas价格, istateas是否可借, smemoas备注fromBookwheresindexlike''%'+str+'%'''setpre=0setlas=1while<las<>0>beginsetpre=pre+1setlas=CharIndex<'',string,pre>if<las<>0>beginsettepstr=LTRIM<substring<string,pre,las-pre>>if<tepstr<>''>setsql=sql+'and<sBookNamelike''%'+tepstr+'%''orsAuthorlike''%'+tepstr+'%''orsmemolike''%'+tepstr+'%''orsPresslike''%'+tepstr+'%''>';setpre=lasendendsettepstr=substring<string,pre,len<string>+1-pre>setsql=sql+'and<sBookNamelike''%'+tepstr+'%''orsAuthorlike''%'+tepstr+'%''orsmemolike''%'+tepstr+'%''orsPresslike''%'+tepstr+'%''>';ifable=1setsql=sql+'andistate=1'exec<sql>ENDiferror<>0orrowcount=0rollbacktransaction;搜索借阅数为前n的书ALTERPROCEDURE[dbo].[Proc_selectbylendtimes]numintASBEGINselecttop<num>*,COUNT<*>lendtimesfrom<selectsBookName,sAuthor,sIndex,sISBN,sPress,sClassIdfromBook,BorrowedwhereBook.sBookId=Borrowed.sBookId>view1groupbysIndex,sBookName,sAuthor,sISBN,sPress,sClassIdorderbylendtimesdescENDiferror<>0orrowcount=0rollbacktransaction;搜索借阅次数排名在m到n之间的书ALTERPROCEDURE[dbo].[Proc_selectbylendtimes2]num1int,num2intASBEGINselect*from<selecttop<num2-num1+1>*from<selecttop<num2>*,COUNT<*>lendtimesfrom<selectsBookName,sAuthor,sIndex,sISBN,sPress,sClassIdfromBook,BorrowedwhereBook.sBookId=Borrowed.sBookId>view1groupbysIndex,sBookName,sAuthor,sISBN,sPress,sClassIdorderbylendtimesdesc>aorderbylendtimes>borderbylendtimesdescENDiferror<>0orrowcount=0rollbacktransaction;图书上架:ALTERPROCEDURE[dbo].[Proc_Shelve]Isbnvarchar<15>,sBookNamevarchar<50>,spressvarchar<30>,Authorvarchar<30>,classIdvarchar<20>,sMemovarchar<50>,stateint=1,stockIdvarchar<30>,fpricefloatASBEGINdeclareiintdeclarenumintdeclarebookIdvarchar<50>declareIndexvarchar<50>seti=0setIndex=classId+'.'+Isbn--设置索书号selectnum=RealNumfromStockwhereStockId=stockIdbeginwhilei<numbeginsetbookId=Index+'.'+cast<iasvarchar<5>>--设置图书号insertintoBookvalues<bookId,Index,Isbn,sBookName,spress,Author,classId,sMemo,state,fprice>seti=i+1 endupdate[dbo].Stocksetstockstate=0whereStockId=stockIdendENDiferror<>0orrowcount=0rollbacktransaction;更新员工:ALTERPROCEDURE[dbo].[Proc_UpdateReader]--读者自行修改的信息ReaderIdvarchar<50>,Namevarchar<20>=null,sexvarchar<10>=null,Emailvarchar<30>=null,Phonevarchar<20>=null,Birthdaydate=nullASBEGINupdate[dbo].ReadersetName=Name,Sex=sex,Email=Email,Phone=Phone,Birthday=BirthdaywheresReaderId=ReaderIdENDiferror<>0orrowcount=0rollbacktransaction;视图:软件功能设计系统的结构图图书馆管理系统图书馆管理系统图书馆消息登录普通用户管理员我的图书馆浏览书目借阅书目查看书目书目检索分类浏览借阅书目普通员工采购员管理用户修改密码查询信息罚款新书入库借阅信息修改信息修改订单管理功能表 读者:我的图书馆:查看个人信息,修改密码浏览书目借阅书目管理员:管理用户:添加,修改,删除修改密码普通员工:信息修改信息查询:查询用户和书本的信息罚款:对书本丢失,损坏,超期的读者进行罚款新书入库借阅采购员:信息修改订单管理系统实施系统的界面设计本图书馆管理系统分为16个界面,介绍如下:界面1:Homepage〔主页〕窗体描述: 窗体名称:Form_home_page 单元文件名:home_page主要代码:procedureTForm_home_page.Label1Click<Sender:TObject>;beginForm_version_annoucement.ShowModal;//版本公告界面end;procedureTForm_home_page.log_inClick<Sender:TObject>;beginForm_login.ShowModal;//登陆界面end;procedureTForm_home_page.log_outClick<Sender:TObject>;beginlog_out.Visible:=false;log_in.Visible:=true;end;procedureTForm_home_page.Label6Click<Sender:TObject>;beginForm_max_borrow.ShowModal;//最大借阅量界面end;procedureTForm_home_page.Label_mylibraryClick<Sender:TObject>;beginifnotlog_in.VisiblethenbeginForm_my_library.ShowModal;//如果已登录,则可进入‘我的图书馆’,否则提示先登录endelsebeginShowmessage<'请先登录!'>;end;end;界面2:version_annoucement〔公告〕窗体描述: 窗体名称:Form_version_annoucement 单元文件名:version_annoucement界面3:max_borrow〔借阅数量与期限〕窗体描述: 窗体名称:Form_max_borrow 单元文件名:max_borrow界面4:special〔特色资源〕窗体描述: 窗体名称:Form_special 单元文件名:special界面5:search〔书目检索〕窗体描述: 窗体名称:Form_search 单元文件名:search主要代码:procedureTForm_search.FormShow<Sender:TObject>;varroot,sub,personnode,matenode,classnode:TtreeNode;i,j,k,s:integer;qrysub,qrymaster,qrymate,qryclass:tadoquery;p:pchar;s1:string;beginbitBtn_borrow.Visible:=false;Edit_search.Clear;Edit_search.SetFocus;qrymaster:=tadoquery.Create<self>;qrymate:=tadoquery.Create<self>;qryclass:=tadoquery.Create<self>;root:=TreeView1.items.add<nil,'图书分类'>;qrymaster.Close;qrymaster.Connection:=DM.ADOConnection1;qrymate.Connection:=DM.ADOConnection1;qryclass.Connection:=DM.ADOConnection1;qrysub:=TADOQuery.Create<self>;qrysub.Connection:=DM.ADOConnection1;qrymaster.SQL.Add<'select*fromBookClasswherelen<sclassId>=1'>;qrymaster.Open;qrymaster.First;fori:=0toqrymaster.RecordCount-1do//searchbookclassbeginsub:=TreeView1.Items.AddChild<root,qrymaster.FieldByName<'sbookclass'>.AsString>;s1:=qrymaster.fieldByName<'sclassid'>.AsString;GetMem<p,255>;StrCopy<p,pchar<s1>>;sub.Data:=p;qrysub.Close;qrysub.SQL.Clear;qrysub.SQL.Text:='select*frombookclasswherelen<sclassId>=2andleft<sclassid,1>='''+qrymaster.FieldByName<'sclassId'>.AsString+'''';qrysub.Open;qrysub.First;forj:=0toqrysub.RecordCount-1dobeginpersonnode:=TreeView1.Items.AddChild<sub,qrysub.fieldByName<'sbookclass'>.AsString>;s1:=qrysub.fieldByName<'sclassId'>.AsString;getmem<p,255>;strcopy<p,pchar<s1>>;personnode.Data:=p;withqrymatedobeginclose;sql.Clear;sql.Text:='select*frombookClasswherelen<sclassId>=3andleft<sclassid,2>='''+qrysub.fieldByName<'sclassid'>.AsString+'''';open;end;fork:=0toqrymate.RecordCount-1dobeginmatenode:=TreeView1.Items.AddChild<personnode,qrymate.fieldbyName<'sbookclass'>.AsString>;s1:=qrymate.fieldByName<'sclassId'>.AsString;GetMem<p,255>;StrCopy<p,pchar<s1>>;matenode.Data:=p;withqryclassdobeginclose;sql.Clear;sql.Text:='select*frombookclasswherelen<sclassid>=4andleft<sclassId,3>='''+qrymate.fieldByname<'sclassid'>.AsString+'''';open;end;fors:=0toqryclass.RecordCount-1dobeginclassnode:=TreeView1.Items.AddChild<matenode,qryclass.fieldByname<'sbookclass'>.AsString>;s1:=qryclass.fieldByName<'sclassId'>.AsString;getmem<p,255>;strcopy<p,pchar<s1>>;classnode.Data:=p;qryclass.Next;end;qrymate.Next;end;qrysub.Next;end;qrymaster.Next;end;end;procedureTForm_search.BitBtn_borrowClick<Sender:TObject>;varcan_borrow:integer;s1:string;state:integer;adoqry:TADOQuery;lend_able:integer;beginifForm_home_page.log_in.VisiblethenbeginShowMessage<'请先登录'>;exit;end;ADOStoredProc2.Close;ADOStoredProc2.Parameters.Refresh;ADOStoredProc2.Parameters.ParamByName<'userId'>.Value:=Trim<Form_login.Edit_userId.Text>;ADOStoredProc2.Parameters.ParamByName<'can_borrow'>.Value:=0;ADOStoredProc2.ExecProc;can_borrow:=ADOStoredProc2.Parameters.ParamByName<'can_borrow'>.Value;ifcan_borrow=1thenbegins1:=ADOStoredProc1.Fields.Fields[0].text;//bookIdadoqry:=Tadoquery.Create<self>;adoqry.Connection:=DM.ADOConnection1;Showmessage<s1>;withadoqrydobeginclose;sql.Clear;sql.Text:='selectistatefrombookwheresbookId='+''''+s1+'''';open;end;lend_able:=strtoint<adoqry.Fields.Fields[0].text>;iflend_able=1thenbeginwithADOStoredProc3dobeginclose;parameters.Refresh;parameters.ParamByName<'ReaderId'>.Value:=Trim<Form_login.Edit_userId.Text>;parameters.ParamByName<'bookId'>.Value:=Trim<s1>;parameters.ParamByName<'state'>.Value:=1;ExecProc;end;state:=ADOStoredProc3.Parameters.parambyname<'state'>.Value;ifstate=1thenshowMessage<'借阅成功!'+#13+'请10分钟后到前台取书'>elseshowMessage<'您有欠款未还!'+#13+'请缴费!'>;endelseshowMessage<'该书已借出!'>;endelseshowMessage<'您已借满!'>;ADOStoredProc1.Close;ADOStoredProc1.Open;end;procedureTForm_search.BitBtn_searchClick<Sender:TObject>;beginbitbtn_borrow.Visible:=true;adostoredproc1.Close;adostoredproc1.Parameters.Refresh;adostoredproc1.Parameters.ParamByName<'string'>.Value:=trim<Edit_search.Text>;adostoredproc1.Parameters.ParamByName<'str'>.Value:=Edit_class.Text;adostoredproc1.Open;DBGrid1.Columns[0].Width:=100;DBGrid1.Columns[1].Width:=150;DBGrid1.Columns[2].Width:=100;DBGrid1.Columns[3].Width:=100;DBGrid1.Columns[5].Width:=100;end;procedureTForm_search.TreeView1Click<Sender:TObject>;beginedit_class.Text:=trim<string<TreeView1.Selected.Data>>;end;procedureTForm_search.Label3MouseEnter<Sender:TObject>;beginLabel3.Font.Color:=clWhite;end;procedureTForm_search.Label3MouseLeave<Sender:TObject>;beginLabel3.Font.Color:=clBlack;end;procedureTForm_search.Label3Click<Sender:TObject>;beginclose;end;procedureTForm_search.Button1Click<Sender:TObject>;beginadostoredproc1.Close;adostoredproc1.Parameters.Refresh;adostoredproc1.Parameters.ParamByName<'string'>.Value:=trim<Edit_search.Text>;adostoredproc1.Parameters.ParamByName<'str'>.Value:=Edit_class.Text;adostoredproc1.Parameters.ParamByName<'able'>.Value:=1;adostoredproc1.Open;DBGrid1.Columns[0].Width:=100;DBGrid1.Columns[1].Width:=150;DBGrid1.Columns[2].Width:=100;DBGrid1.Columns[3].Width:=100;DBGrid1.Columns[5].Width:=100;bitbtn_borrow.Visible:=true;end;界面6:Log_in〔登陆界面〕窗体描述: 窗体名称:Form_Log_in 单元文件名:Log_in主要代码:procedureTForm_login.submitClick<Sender:TObject>;begintip_userId.Visible:=false;tip_password.Visible:=false;Label1.Visible:=false;Label2.Visible:=false;Bitbtn1.Visible:=false;ifEdit_userId.Text=''then//判断用户XX输入是否为空begintip_userId.Visible:=true;exit;end;ifEdit_password.Text=''then//判断用户密码输入是否为空begintip_password.Visible:=true;exit;end;ifRadioButton_user.Checked=truethen//读者登录pos:=0elsepos:=1;trywithADOStoredProc1dobeginParameters.ParamByName<'id'>.Value:=Trim<Edit_userId.Text>;Parameters.ParamByName<'password'>.Value:=Trim<Edit_password.Text>;Parameters.ParamByName<'pos'>.Value:=pos;Parameters.ParamByName<'name'>.Value:=null;Parameters.parambyname<'name'>.Value:=name;ExecProc;end;pos:=ADOstoredProc1.Parameters.parambyName<'pos'>.Value;name:=string<ADOStoredProc1.Parameters.parambyname<'name'>.Value>;ifpos=-1thenbeginShowMessage<'用户名或密码错误,请重新填写'>;Edit_userId.Clear;Edit_password.Clear;Edit_userId.SetFocus;exit;end;ifpos=0then//readerbeginbitbtn1.Visible:=true;ShowMessage<'登陆成功,请返回首页!'>;Label1.Visible:=true;endelseifpos=1then//admbeginForm_master.Show;Self.Close;endelseifpos=2then//librianbeginForm_master.Image_7.Visible:=false;Form_master.Image_8.Visible:=false;Form_master.Label_7.Visible:=false;Form_master.Label_8.Visible:=false;Form_master.Show;self.Close;endelseifpos=3thenbeginForm_master.Image_5.Visible:=false;Form_master.Image_6.Visible:=false;Form_master.Label_5.Visible:=false;Form_master.Label_6.Visible:=false;Form_master.Image_7.Visible:=false;Form_master.Image_8.Visible:=false;Form_master.Label_7.Visible:=false;Form_master.Label_8.Visible:=false;Form_master.Show;self.Close;end;exceptshowMessage<'登录失败!'>;end;end;procedureTForm_login.restartClick<Sender:TObject>;//重置密码beginEdit_userId.Clear;Edit_password.Clear;tip_userId.Visible:=false;tip_password.Visible:=false;Label1.Visible:=false;Label2.Visible:=false;Bitbtn1.Visible:=false;end;procedureTForm_login.Label_homepageClick<Sender:TObject>;beginifLabel1.Visible=truethenbeginForm_my_library.Label_hello.Caption:=name+':您好';Form_home_page.log_in.Visible:=false;Form_home_page.log_out.Visible:=true;end;close;end;procedureTForm_login.BitBtn1Click<Sender:TObject>;beginForm_updatepass.ShowModal;//如果是读者,则可直接在次界面点击更改密码按钮end;procedureTForm_login.FormShow<Sender:TObject>;begintip_userId.Visible:=false;tip_password.Visible:=false;Label1.Visible:=false;Label2.Visible:=false;Bitbtn1.Visible:=false;Edit_userId.Clear;Edit_password.Clear;Edit_userId.SetFocus;end;界面7:my_library〔我的图书馆〕窗体描述: 窗体名称:Form_my_library 单元文件名:my_library主要代码:procedureTForm_my_library.FormShow<Sender:TObject>;beginwithADOStoredProc1dobeginclose;parameters.ParamByName<'sReaderId'>.Value:=Trim<Form_login.Edit_userId.Text>;Open;end;ADOQUERY1.Connection:=DM.ADOConnection1;withadoquery1dobeginclose;sql.Clear;sql.Text:='selectsbooknameas书名,deadlineas应还日期 ,fine_ticketas罚单 fromBorrowed,BookwheresReaderId='+Trim<Form_login.Edit_userId.Text>+'andBook.sBookId=Borrowed.sBookIdandReturn_Dateisnullandgetdate<>>deadline';open;end;withADOQuery2dobeginclose;parameters.ParamByName<'readerId'>.Value:=Trim<Form_login.Edit_userId.Text>;open;end;Edit1.Text:=ADOquery2['balance'];end;界面9:master〔管理员控制系统〕窗体描述: 窗体名称:Form_master 单元文件名:my_master主要代码:procedureTForm_master.FormShow<Sender:TObject>;beginwithADOquery1dobeginclose;parameters.ParamByName<'managerId'>.Value:=Trim<Form_login.Edit_userId.Text>;Open;end; Label_welcome.Caption:='WelcomeAdministrator'+ADOQuery1['Name']+'!';//显示管理员信息Label_welcome.Visible:=true;end;界面10:updatepass〔修改密码〕窗体描述: 窗体名称:Form_updatepass 单元文件名:updatepasswithADOStoredProc1dobeginclose;Parameters.ParamByName<'old_pas'>.Value:=Trim<Edit_originpassword.Text>;Parameters.ParamByName<'new_pas'>.Value:=Trim<Edit_setPassword.Text>;Parameters.ParamByName<'userId'>.Value:=Trim<Form_Login.Edit_userId.Text>;Parameters.ParamByName<'user_kind'>.Value:=user_kind;Parameters.ParamByName<'state'>.Value:=state;ExecProc;end;ifForm_login.RadioButton_user.CheckedthenbeginMessageDlg<'修改成功,请重新登录!',mtInformation,[mbOk],0>;Form_login.Edit_password.Clear;Form_login.Label1.Visible:=false;endelsebeginMessageDlg<'修改成功,请重新登录!',mtInformation,[mbOk],0>;Form_login.Edit_password.Clear;Form_login.Label1.Visible:=false;Form_master.close;end;界面11:Change_self_info〔修改个人信息〕窗体描述: 窗体名称:Form_Change_self_info单元文件名:Change_self_info主要代码:withADOSToredProc1dobeginclose;parameters.ParamByName<'readerId'>.Value:=Trim<Form_login.Edit_userId.Text>;parameters.ParamByName<'Name'>.Value:=Trim<Edit_name.Text>;Parameters.ParamByName<'sex'>.Value:=Trim<Edit_sex.Text>;Parameters.ParamByName<'birthday'>.Value:=Trim<Edit_birthday.Text>;parameters.ParamByName<'Phone'>.Value:=Trim<Edit_phone.Text>;parameters.ParamByName<'Email'>.Value:=Trim<Edit_email.Text>;ExecProc;end;ShowMessage<'更新成功'>;FormShow<Sender>;界面11:Addorder〔下订单〕窗体描述: 窗体名称:Form_Addorder单元文件名:Addorder主要代码:procedureTForm_addorder.Button3Click<Sender:TObject>;varstate:integer;i:integer;beginif<Trim<Edit_bookName.Text>=''>or<Trim<Edit_press.Text>=''>or<Trim<Edit_booknum.Text>=''>thenbeginshowmessage<'请完善信息!'>;exit;end;i:=strtoin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版图书捐赠与接受合同示范文本3篇
- 2025版小学校园广播系统及音响设备采购合同3篇
- 农产品市场营销策略与实施考核试卷
- 2025年分销合同的市场需求
- 2025年借壳上市协议法律条款
- 2025年园林绿化设计施工居间合同
- 2025年室内装修工程勘察协议
- 2025年合作哲学书籍出版合同
- 2025年加盟美甲美睫连锁店合同
- 二零二五年度木枋行业人才培训与职业发展合同4篇
- 图像识别领域自适应技术-洞察分析
- 个体户店铺租赁合同
- 礼盒业务销售方案
- 二十届三中全会精神学习试题及答案(100题)
- 【奥运会奖牌榜预测建模实证探析12000字(论文)】
- 土力学与地基基础(课件)
- 主要负责人重大隐患带队检查表
- 鲁滨逊漂流记人物形象分析
- 危险废物贮存仓库建设标准
- 多层工业厂房主体结构施工方案钢筋混凝土结构
- 救生艇筏、救助艇基本知识课件
评论
0/150
提交评论