图书管理系统设计与实现李攀内容概述1需求分析2系统设计3系统实现4系统测试5系统部署6一、概述所要开发的系统相关概念、系统技术现状、论文(报告)结构描述。系统在国内外发展现状。本系统的特点和优势。中国知网二、需求分析要求有实地调研记录。结构化建模方法:要求有数据流图、数据字典等。面向对象建模方法:要求有用例图。角色的分析:读者,书籍。角色上功能分析:读者信息管理,书籍信息管理,借书,还书。数据分析。三、系统设计数据库设计:要求有概念设计(E-R图)、逻辑设计和物理设计。面向对象设计:要求有主要类图。功能模块设计:关键技术说明、主要功能说明、关键代码。用户界面设计:美观、简洁、风格统一。图书管理系统的数据库名为“MBOOK”,该数据库由读者信息表(TReader)、图书信息表(TBook)和借阅信息表(TLend)3个表构成,依托这3个基本表创建视图、触发器和存储过程。数据库设计概念设计图3.1E-R图读者图书借书还书姓名借书证号ISBN书名出生时间性别出版社作译者专业价格借书量详细信息照片复本量内容提要库存量封面照片mnmn逻辑设计读者信息表(TReader)(借书证号,姓名,性别,出生时间,专业,借书量,照片,详细信息)。图书信息表(TBook)(ISBN,书名,作译者,出版社,价格,复本量,库存量,内容提要,封面照片)。借阅信息表(TLend)(图书ID,借书证号,ISBN,借书时间)。物理设计物理设计物理设计图3.2图书管理系统功能结构图图书管理系统借书管理还书管理读者管理图书管理查询借书查询读者信息添加读者信息删除读者信息修改读者信息功能模块设计用户界面设计“图书管理系统”的界面如图3.3所示。采用多文档界面(MDI),其中包括“借书”、“还书”、“读者管理”和“图书管理”4个子窗体。图3.3“图书管理系统”界面“借书”子窗体的功能主要是根据借书证号查询所借的书籍以及借书,如图3.4所示。图3.4“借书”子窗体“还书”子窗体的功能主要是还书以及显示未还的书籍,如图3.5所示。图3.5“还书”子窗体图3.6“读者管理”子窗体“读者管理”子窗体的功能主要是查询、修改、添加和删除读者信息,如图3.6所示。“图书管理”子窗体的功能主要是查询、修改、添加和删除图书信息,如图3.7所示。图3.7“图书管理”子窗体四、系统实现开发环境:此实例使用的数据库为SQLServer2008开发版。此实例使用的开发软件为:VisualStudio2010.NET,编程语言为:C#。程序编码:源程序文档化,符号名、注释、书写格式。实现步骤:4.1数据库建立4.2项目的创建和父窗体的实现4.3借书窗体的实现4.4读者窗体的实现1.创建数据库(1)打开数据库管理器。依次执行【开始】→【所有程序】→【MicrosoftSQLServer2008】→【SQLServerManagementStudio】菜单命令,打开数据库管理工具,在弹出的“连接到服务器”对话框中选择“服务器名称”和“身份验证”,如图4.1所示,单击“连接”按钮,连接到所选择的服务器。图4.1“连接到服务器”对话框4.1数据库建立(2)新建数据库。在“对象资源管理器”中用鼠标右键单击“数据库”,选择“新建数据库”选项,在弹出的“新建数据库”对话框中输入数据库名“MBOOK”,单击“确定”按钮,完成数据库的创建,如图4.2所示。图4.2“新建数据库”对话框4.1数据库建立2.创建表创建表的操作步骤如下:(1)创建读者信息表(Treader)。在“对象资源管理器”中展开刚创建的“MBOOK”数据库,用鼠标右键单击“表”,选择“新建表”选项,在“表设计器”中输入列名、数据类型并选择是否允许Null值。设计完所有的字段后用鼠标右键单击“ReaderID”字段,选择“设置主键”选项,则“ReaderID”字段被设置为主键。单击“关闭”按钮,系统弹出对话框提示是否对各项进行的更改,单击“是”按钮后弹出“选择名称”对话框,输入表名“TReader”并单击“确定”按钮完成读者信息表的创建,设计后的表如图4.3所示。4.1数据库建立图4.3TReader表的结构4.1数据库建立3.创建视图实现功能:把3个基本表联系起来,方便需要3表关联的功能使用。创建方法:打开数据库管理器,在“对象资源管理器”中用鼠标右键单击“视图”,在打开的快捷菜单中选择“新建视图”选项,分别添加“TLend”、“TBook”和“TReader”3个表,添加完后3个表的关系如图4.4所示。输入命令并单击执行SQL命令图标“”,命令如下所示:图4.4表之间的关系图4.1数据库建立CREATEVIEWRBLASSELECTTReader.ReaderID,TLend.BookID,TLend.ISBN,TBook.BookName,TBook.Publisher,TBook.Price,TLend.LTimeFROMTReaderINNERJOINTLendONTReader.ReaderID=TLend.ReaderIDINNERJOINTBookONTBook.ISBN=TLend.ISBN4.1数据库建立4.创建完整性约束界面方式创建完整性约束的方法是:打开数据库管理器,在“对象资源管理器”中展开数据库MBOOK中的各个表,用鼠标右键单击表TLead下的“键”,选择“新建外键”选项,在弹出的“外键关系”对话框中选择“表和列规范”,单击出现的图标按钮“”,如图4.5所示,弹出“表和列”对话框,主键表选择“TReader”,字段选择“ReaderID”,外键表的字段选择“ReaderID”,如图4.6所示,单击“确定”按钮,关闭TLead表并保存表的设置,完成完整性约束的创建。4.1数据库建立图4.5“外键关系”对话框图4.6“表和列”对话框4.1数据库建立5.创建存储过程存储过程名称为Book_Borrow。参数:借书证号(in_ReaderID)、ISBN(in_ISBN)、图书ID(in_BookID)、执行信息(out_str)。实现功能:根据存储过程的前3个参数,实现读者图书“借阅”。第四个参数为输出参数,将存储过程的执行情况以字符串形式赋予此参数。4.1数据库建立编写思路:(1)根据“借书证号”查询读者信息表(TReader)是否存在该读者,如果不存在,则将输出参数out_str赋值为“该读者不存在”并返回“0”,存储过程结束,表示不能借书。(2)根据“ISBN”查询图书信息表(TBook),查询是否存在该图书,如果不存在,则将输出参数赋值为“该图书不存在”并返回“0”,存储过程结束,表示不能借书。(3)根据“借书证号”查询读者信息表(TReader),查询该读者的借书量。如果借书量=5,则将输出参数赋值为“读者借书量不能大于5”并返回“0”,存储过程结束,表示不能借书。4.1数据库建立(4)根据“ISBN”查询图书信息表(TBook)中该图书的库存量。如果库存量=0,则将输出参数赋值为“图书库存量为0”并返回“0”,存储过程结束,表示不能借书。(5)查询借阅表(TLend),查看该读者是否已经借阅该图书,如果已经借过,则将输出参数赋值为“读者已经借过该书”并返回“0”,存储过程结束,表示不能借书。(6)查询借阅表(TLend),查看该图书ID是否已经存在,如果存在则将输出参数赋值为“该图书ID已存在”并返回“0”,存储过程结束,表示不能添加借书记录。4.1数据库建立(7)使借阅表(TLend)增加一条该读者借书记录;读者信息表(TReader)该读者的借书量加“1”;图书信息表(TBook)该图书(对应ISBN)记录的库存量减“1”。存储过程结束,将输出参数赋值为“借书成功”并返回“1”,表示借书成功。(8)如果存储过程在执行过程中遇到错误则回滚之前进行的操作,并将输出参数赋值为“执行过程中遇到错误”并返回“0”,表示存储过程在执行过程中遇到错误,回滚到执行存储过程前的状态。4.1数据库建立创建方法:打开数据库管理器,在“对象资源管理器”中用鼠标右键单击数据库MBOOK的“可编程性”中的“存储过程”项,选择“新建存储过程”,删除自带代码,输入T-SQL存储过程代码,单击执行按钮,图标为“”,代码如下所示。4.1数据库建立6.创建触发器实现功能:当用户“归还”图书时,即删除借阅表(TLend)中的一条借书记录时,读者信息表(TReader)该读者的借书量减“1”;图书信息表(TBook)该图书记录的库存量加“1”。此功能可以通过创建借阅表(TLend)的DELETE触发器实现,可以创建T-SQL触发器,触发器名称为TLend_delete。创建方法:打开数据库管理器,在“对象资源管理器”中用鼠标右键单击数据库MBOOK的TLead表中的“触发器”,执行“新建触发器”命令,删除自带代码,输入T-SQL触发器代码。4.1数据库建立代码如下所示:USEMBOOKGOCREATETRIGGERTLend_deleteONTLendAFTERDELETEASBEGINUPDATETReaderSETNum=Num-1WHEREReaderID=(SELECTReaderIDFROMdeleted)UPDATETBookSETSNum=SNum+1WHEREISBN=(SELECTISBNFROMdeleted)END4.1数据库建立项目的创建步骤如下。1.创建项目运行VS2010,依次执行【文件】→【新建】→【项目】命令,在弹出的“新建项目”对话框中选中“Windows窗体应用程序”模板,选择项目存放位置并输入项目名称为“BOOKSYS”,单击“确定”按钮完成项目的创建。2.添加窗体打开“解决方案资源管理器”窗口,用鼠标右键单击项目名“BOOKSYS”,依次执行快捷菜单中的“添加”→“新建项”命令,在弹出的“添加新项”对话框中选中“Windows窗体”模板,使用默认名称“Form2”,单击“添加”按钮完成窗体的添加。按照同样的方法再添加3个窗体,使用默认命名。4.2项目的创建和父窗体的实现父窗体的设计步骤如下。1.设置属性打开Form1的属性窗口,IsMdiContainer属性值设置为“True”,Text属性值设置为“图书管理系统”,Icon属性选择准备好的图标。BackgroundImage属性选择准备好的图片。2.添加控件及控件属性设置从工具箱中拖放1个MenuStrip、1个StatusStrip和1个ToolStrip控件到窗体中。(1)menuStrip1属性设置。选中menuStrip1,在“请在此处键入”处输入“借书(&B)”。按照如图4.7所示分别输入其他的菜单项。其他菜单项分别为“还书(&R)”、“读者管理(&P)”和“图书管理(&M)”。图4.7菜单栏和工具栏4.2项目的创建和父窗体的实现(2)toolStrip1属性设置。选中toolStrip1,单击图标“”,在其属性窗口中设置Image属性值为已经准备好的图片,Text属性值为“借书”。按照同样的方法设置其他3个工具按钮,Text属性值分别设置为“还书”、“读者管理”和“图书管理”。设计好的工具栏如图4.7所示。(3)statusStrip1属性设置。选中statusStrip1,单击“”图标,在下拉列表中选择“StatusLabel”,其Text属性值设置为“状态”。4.2项目的创建和父窗体的实现3.添加事件及事件代码用鼠标双击菜单栏中的“借书”项,设计器为其添加了Click事件并添加了事件方法。按【F7】键切换到窗体设计器,分别双击“还书”、“读者管理”和“图书管理”为其添加事件。工具栏中的按钮事件可以直接选择刚添加的事件方法,切换到窗体设计器,打开工具栏中按钮属性窗口,单击事件图标“”,为Click事件选择相应的方法。按【F7】键切换到代码编辑窗口,添加事件代码,代码如下。4.2项目的创建和父窗体的实现4.运行程序按【C