版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.....摘要图书管理是图书馆或阅览室的重要工作,具有量大、重复的特点,其中的信息录入、读者管理、书目查询、书籍借阅是经常性的工作。为方便检索和管理,借助计算机开发相应的图书馆信息系统可以提高工作效率。本文进行了图书馆信息系统的设计和开发,包含数据库设计和系统功能设计,将图书入库、查询、借阅、维护、用户信息等功能集成在一起,具有用户界面友好、操作简单、数据安全、功能强大、实用性强的特点。测试表明该系统可有效提高大学图书馆的图书管理效率。关键词:图书管理,查询,设计,数据库..AbstractBooksmanagementisanimportantworkinlibraryorreadingroom.Itisavastandrepetitiveone.Theworkoftenincludessomuchworksuchaswritinginformation,managingreaders’information,queryingbibliographyandlendingbooks.Inordertoqueryandmanageinformationconveniently,thelibraryinformationsystemcanimproveworkeffectively.Designandexploitationoflibraryinformationsystemisgiveninthispaper,itincludesthedesignofdatabaseandprogramfunctions.Thesystemintegratessuchfunctionsasstorage,consult,lend,safeguardandthemanagementofusers’information.Theuserinterfaceisgoodandthedataissafe,theoperationisconvenientandpractical.Thetestingshowsthatthissystemcanimprovetheaffectivityofbooksmanagementintheuniversitylibrary.Keywords:booksmanagement,search,design,database..目录第1章引言11.1设计目的和意义11.2论文的结构与安排1第2章相关知识简介32.1信息管理系统概述3信息管理系统3MIS系统开发过程32.2数据库概述4数据库的概念4数据库管理系统4数据库技术52.3SQL语言介绍5SQL基础52.3.2SQL的特点62.3.3SQL语句的分类及基本语法62.4应用程序开发工具7VisualC#7应用程序开发的基本步骤102.5相关定义11第3章图书信息系统概要设计123.1需求分析123.2系统功能设计及目标133.3系统总体架构14模块描述14系统的总体结构图153.4数据库设计16数据库设计简介16数据库设计16数据库需求分析17数据库概念结构设计17数据库逻辑结构设计21第4章图书信息系统详细设计254.1总体处理流程254.2用户界面设计254.3系统窗体模块设计25用户登陆模块的实现25用户主界面的实现29出版社信息模块的实现30客户信息模块的实现32图书借阅模块的实现34图书信息模块的实现36用户信息模块的实现38综合查询模块的实现40数据导入模块的实现41综合设置模块的实现42第5章测试455.1引言455.2目的455.3测试策略45面向对象的单元测试45面向对象的集成测试46面向对象的确认测试465.4测试方法465.5测试结果46结论48参考文献50致谢51外文资料原文52翻译文稿55..引言设计目的和意义当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行大量而复杂的信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性,尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。图书馆是为教学服务的,在图书馆的日常运作过程中,最主要的工作就是对大量的读者信息、书籍信息以及两者相互作用产生的图书流通信息等的管理。建立一个图书馆信息系统,使图书管理工作规范化、系统化、程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况,提高图书信息管理的效率,这也是管理科学化、正规化重要途径。有了图书馆信息系统,我们可以对图书进馆实行书目编排,并对其进行数据库备份,以便我们以后对其进行管理和出错恢复;图书借阅时,我们可以通过模糊查询实现对用户要求图书的查找,并对图书进行各项统计,如果用户需要借阅的图书已被借出,可以及时反馈给用户,避免时间的浪费;对于各类用户的借阅权限,时间可以通过系统进行设定,满足各类用户的最大需求。本论文是从学校图书馆的实际操作流程出发,经过详细的系统调查,对图书馆信息系统进行了详细的分析和设计,重点进行了各功能模块和界面的详细设计,并对系统功能进行了测试,为学校图书馆开发出的一个实用的图书馆信息系统。本系统的前端开发工具是VisualC#,后台数据库选用的是大型关系数据库MicrosoftSQLServer2000。论文的结构与安排本文第一章介绍图书馆信息系统的设计背景,设计目的和意义;第二章对本系统涉及到的几个相关知识点,如信息管理系统,数据库,SQL语言,开发平台进行了简单的介绍;第三章介绍了图书馆信息系统的概要设计和数据库设计;第四章介绍了系统的详细设计、功能设计和界面设计;第五章对系统测试进行了介绍;最后对整个设计做出的总结。..相关知识简介信息管理系统概述信息管理系统信息管理系统是一个利用计算机软硬件资源,手工作业,分析、计划、控制和决策模型以及数据库的人机系统。它能提供信息支持企业或组织的运行、管理和决策功能。图书馆信息系统是典型的信息管理系统<MIS>,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库,而对于后者则要求应用程序功能完备,易使用等特点。MIS系统开发过程一个MIS系统的开发过程一般包括如下几个步骤:需求分析:需求分析主要是了解用户的需求。需求了解得越详细,程序的后期开发与维护费用就会越少。一般的开发团队中,需求分析都是由资历较深的系统分析员或项目经理担当,可见它的重要性。需求分析制订好后,需要反复修改。将最后的结果交给用户审定,确认无误后,由系统分析员完成需求分析文档,再开始下一步工作。概要设计:概要设计紧跟在需求分析之后。用户需求明确后,将得到的数据分析后,开始构建数据库的逻辑结构。此时,数据库中的表格还未成形,通过各种分析工具〔如PowerDesigner等画出数据流图,最后就可抽象出数据库的具体表结构。这由系统分析人员反复审核,确认所有的需求都考虑在内,没有遗漏后,就可以开始制订概要设计文档。概要设计文档形成后,整个程序的逻辑框架也就形成了。详细设计:概要设计完成后,根据设计中制订的业务模块。就可以进行详细分析设计了。详细设计就是将各个业务模块的窗口全部建好,各个窗口控件的处理代码全部用语言表达出,所以详细设计是整个系统中最繁琐的环节。详细设计完成后,整个程序就确定了,再由编程人员根据详细设计文档将代码完成。整个开发工作就宣告结束。数据库概述从20世纪50年代中期开始,计算机的应用由科学研究部门逐步扩展至企业、行政部门。至60年代,数据处理成为计算机的主要应用。数据库技术作为数据管理技术,是计算机软件领域的一个重要分支,产生于60年代末。现已形成相当规模的理论体系和实用技术。数据库的概念数据库〔DatabaseDB是统一管理的相关数据的集合。本系统采用SQLServer2000数据库。数据库管理系统数据库管理系统〔DatabaseManagementSystemDBMS是位于用户和操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。DBMS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、更新及各种控制,都是通过DBMS进行的。DBMS总是基于某种数据模型,可以把DBMS看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,DBMS可以分成层次型、网状型、关系型、面向对象型等。MSSQLServer2000就是一种关系型数据库管理系统。关系模型。关系模型主要是用二维表格结构表达实体集,用外键表示实体间联系。关系模型是由若干个关系模式组成的集合。关系模式相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表格。关系模型和层次、网状模型的最大区别是用关键码而不是用指针导航数据,表格简单用户易懂,编程时并不涉及存储结构,访问技术等细节。关系模型是数学化模型。SQL语言是关系数据库的标准化语言,已得到了广泛的应用。DBMS的特点和功能可以分为三个子系统:设计工具子系统、运行子系统和DBMS引擎。设计子系统有一个方便数据库及其应用创建的工具集。它包含产生表、窗体、查询和报表的工具。DBMS产品还提供编程语言和对编程语言的接口。运行子系统处理用设计子系统开发的应用组件。它所包含的运行处理器用来处理窗体和数据库的数据交互,以及回答查询和打印报表等。DBMS引擎从其他两个组件接受请求,并把它们翻译成对操作系统的命令,以便读写物理介质上的数据。DBMS引擎还涉及事务管理、锁、备份和恢复[1][2]。数据库技术数据库技术:是一门研究数据库的结构、存储、管理和使用的软件学科。SQL语言介绍SQL基础SQL<StructuredQueryLanguage,结构查询语言>是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI〔美国国家标准学会声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、Sybase、MicrosoftSQLServer、Access等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如"Select"、"Insert"、"Update"、"Delete"、"Create"和"Drop"常常被用于完成绝大多数数据库的操作。MSSQLServer就是用的Transact-SQL[3]。SQL的特点SQL语言之所以能够为用户和业界所接受,成为国际标准,是因为它是一个综合的、通用的、功能极强、同时又简洁易学的语言。其主要特点包括∶综合统一高度非过程化面向集合的操作方式以同一种语法结构提供两种使用方式语言简洁,易学易用[3]SQL语句的分类及基本语法SQL语句可以分为4大类∶数据定义语言<DDL>,用于定义数据结构。数据操纵语言<DML>,用于检索和修改数据。数据控制语言<DCL>,用于规定数据库用户的各种权限。数据库事务处理,事务处理语句用来保证数据库的完整性。SQL语句基本语法包括如下几点∶每条SQL语句必须以分号结束。每条SQL语句可以单独写成一行,但为了清楚,也可以分成若干行。SQL语句对大小写不敏感,对于SQL语句的关键字,表名,列名等,可以大小写混合;但对列的内容则是大小敏感的。数据定义语言∶数据定义语言用来定义数据的结构,如创建、修改或者删除数据库对象,常用的数据定义语言有∶CREATE、ALTER、DROP等。各定义语言的语法结构如下∶CREATETABLEtable_nameField_namedata_type[NOTNULL|NULL],[PRIMARYKEY]...>ALTERTABLEtable_nameADDCOLUMNfield_nameDATATYPEDROPTABLEtable_name数据操纵语言∶数据操纵语言用于对表的操作,包括SELECT、INSERT、UPDATE、DELETE等。各操纵语言的语法结构如下∶SELECTselect_list[INTOnew_table]FROMtable_source[WHEREsearch_condition][GROUPBYgroup_by_expression][HAVINGsearch_condition][ORDERBYorder_expression[ASC|DESC]]INSERTINTOtable_nameVALUES<...>UPDATEtable_nameSETvaluesWHEREsearch_condition[3]应用程序开发工具VisualC#MicrosoftVisualC#是一种编程语言,它是为生成在.NETFramework上运行的多种应用程序而设计的。C#简单、功能强大、类型安全,而且是面向对象的。C#凭借它的许多创新,在保持C样式语言的表示形式和优美的同时,实现了应用程序的快速开发。VisualStudio支持VisualC#,这是通过功能齐全的代码编辑器、项目模板、设计器、代码向导、功能强大且易于使用的调试器以及其他工具实现的。通过.NETFramework类库,可以访问多种操作系统服务和其他有用的精心设计的类,这些类可显著加快开发周期[4]。2.4.1在C#中类的申明与Java很相似,这是合理的因为经验告诉我们Java模型工作得很好。Java的关键字import已经被替换成using,它起到了同样的作用。一个类开始执行的起点是静态方法Main<>。.下面的HelloWorld程序展示了基本的形式:usingSystem;classHello{
staticvoidMain<>
{
Console.WriteLine<"Hello,world">;
}}在这个例子中,System这个名字指向一个包括了基本C#实用类集合的命名空间<namespace>。这个命名空间包括了Console类,它在这个例子中被用来输出一个字符串.类可以是抽象的和不可继承的:一个被申明成abstract的类不能被实例化;它只能被用做一个基类。C#关键字sealed就像Java关键字final,它申明一个类不是抽象的,但是它也不能被用做另一个类的基类界面;就像在Java中一样,一个界面是一组方法集合的抽象定义。当一个类或结构体实现一个界面的时候,它必须实现这个界面中定义的所有方法。一个单一的类可以实现几个界面。也许以后会出现一些微妙的差别,但是这个特点看起来与Java相比没有变化。如Java中那样,通过抛出和捕捉异常对象来管理错误处理过程。内存管理:由底层.NET框架进行自动内存垃圾回收[4][5]。2.4.1程序可以直接编译成标准的二进制可执行形式,但C#的源程序并不是被编译成二进制可执行形式,而是一种中间语言,类似于JAVA字节码。如果前面的HelloWorld程序被保存成一个文本文件并被命名为Hello.cs,它将被编译成命名Hello.exe的可执行程序。一个C#的结构体与C++的结构体是相似的,因为它能够包含数据声明和方法。但是,不同于C++,C#结构体与类是不同的而且不支持继承。但是,与Java相同的是,一个结构体可以实现界面。C#中存在预编译指令支持条件编译,警告,错误报告和编译行控制。没有了#include伪指令,你无法再用#define语句对符号赋值,所以就不存在源代码替换的概念。2.4.1C#中可以进行命名空间中的申明:当你创建一个程序的时候,你在一个命名空间里创建了一个或多个类。同在这个命名空间里<在类的外面>你还有可能声明界面,枚举类型和结构体。必须使用using关键字来引用其他命名空间的内容。C#拥有比C,C++或者Java更广泛的数据类型。这些类型是bool,byte,ubyte,short,ushort,int,uint,long,ulong,float,double,和decimal。像Java一样,所有这些类型都有一个固定的大小,又同C和C++一样,每个数据类型都有符号和无符号两种类型。与Java相同的是,一个字符变量包含的是一个16位的Unicode字符。C#新的数据类型是decimal数据类型,对于货币数据,它能存放28位10进制数字。C#具有两个基本类:一个名叫object的类是所有其他类的基类,而一个名叫string的类也像object一样是这个语言的一部分。作为语言的一部分存在意味着编译器有可能使用它。无论何时你在程序中写入一句带引号的字符串,编译器会创建一个string对象来保存它。C#中方法可以被声明接受可变数目的参数。缺省的参数传递方法是对基本数据类型进行值传递,.ref关键字可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回值。out关键字也能声明引用传递过程,与ref不同的地方是,它指明这个参数并不需要初始值。C#对Windows程序最大的卖点可能就是它与COM的无缝集成了,COM就是微软的Win32组件技术。实际上,最终有可能在任何.NET语言里编写COM客户和服务器端。C#编写的类可以子类化一个以存在的COM组件,生成的类也能被作为一个COM组件使用,然后又能使用[4][5]。应用程序开发的基本步骤我们要开发应用程序时,首先要对它进行分析。无论哪种、哪方面的应用程序,都要先建立一个应用对象。下面我们介绍应用程序开发的基本步骤:首先要建立应用对象。创建窗口。在窗口里放置各种控件和编写事件响应的脚本。创建菜单。窗口里的菜单可包括菜单条,下拉式菜单,级联菜单和弹出式菜单为菜单编写事件响应的脚本。创建用户对象。如果想要重复使用某个控件的功能,可以把窗口上经常放置的控件定义为用户对象。创建数据窗口。数据窗口可以检索数据库中的数据,可以建立各种报或统计表,可以修改数据库。创建函数、结构、事件。为了能够更好地支持脚本,编写自定义的函数,定义结构类型变量,也可以为对象和控件定义自己的事件。运行与调试。可以在开发环境中随时运行应用程序,发现错误后,可以用调试工具进行调试。当应用程序开发完毕后,可以把它编译成可执行的文件,让用户比较容易地建立应用系统的运行环境[6]。相关定义DFD:数据流程图。SQLSERVER:系统服务器所使用的数据库管理系统〔DBMS。SQL:一种用于访问查询数据库的语言事务流:数据进入模块后可能有多种路径进行处理。主键:数据库表中的关键域。值互不相同。外键:数据库表中与其它表主键关联的域。[1][3][7]..图书信息系统概要设计需求分析图书管理涉及图书信息、系统用户信息、读者信息、图书借阅等多种数据管理。从管理的角度可将图书分为三类:图书信息管理、系统用户管理、读者数据管理。图书信息管理包括图书录入、借还、查询等操作,系统用户管理包括系统用户类别和用户数据管理,读者数据管理包括读者类别管理和个人数据的录入、修改和删除。图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;管理员对图书借阅者的借阅及还书要求进行操作,同时给借阅者查看确认;图书馆管理人员的功能最为复杂,包括对图书借阅者、图书进行管理和维护,及系统状态的查看、维护等。图书借阅者可直接查看图书馆图书情况,如果图书借阅者根据本人借书证号和密码登录系统,还可以进行本人借书情况的查询和维护部分个人信息。管理员功能的信息量大,数据安全性和保密性要求最高。要能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、用户和管理人员信息查看及维护。图书馆管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、添加、删除和修改图书借阅者的基本信息,浏览、查询、统计图书馆的借阅信息,添加、删除和修改借阅信息,删除某条图书借阅者基本信息记录时,应实现对该图书借阅者借阅记录的级联删除。具体功能如下∶借阅者维护借阅者个人部分信息借阅者查看个人借阅情况信息维护借阅者个人密码查询及统计各种信息维护图书信息维护管理员信息维护借阅者信息系统功能设计及目标对于图书馆主要负责提供的功能是指从图书的购入开始直到该图书过期下架的整个流通过程,这其中包括图书入库、借出、归还以及对参与此流通过程的读者的信息管理。图书信息管理:建立图书信息库,以便读者进行查询和借阅。在建立信息库时可能因操作错误或其它情况而造成数据库里图书信息的错误,需要修改这些错误。图书因使用过久或在读者借阅书籍时发生遗失的情况下需做遗失处理,这些都需要修改数据库关于书籍的信息。出版社信息管理:建立出版社信息库,在图书入库的时候及时添加出版社信息,并按需要随时修改和更新。读者信息管理:读者一般都是在校的学生和教师。可按需要修改数据库关于读者的信息。借还书管理:图书馆主要的功能就是提供书籍供读者借阅,在借阅图书时应按图书馆的规则进行借阅,例如如果已有超时借阅的图书,则在归还前不允许再借阅等等。对于图书遗失或超期归还的情况应根据图书馆的规则进行处罚。规则管理:对于读者借阅书籍的权限〔可借阅书籍数目,每人每本书可持有天数等应该能加以分类,若有图书遗失或超期未还的情况发生,图书馆都应该规定处罚的条例。权限管理:另外对于操作此系统的前端工作人员的权限也应该有一定限制。这些都应该只能由系统管理员来进行操作和修改。信息查询:读者在借阅书籍前都需查询图书馆关于所借书籍的大概信息:该图书是否在馆,是否已借出,在馆中的书架号;除查询书籍外,图书管理员还可查询关于读者的信息,是否有超期未还的图书,还可借阅书籍数目等。系统总体架构模块描述图书信息管理系统共分为七个模块:"客户信息维护模块"、"图书信息维护模块"、"出版社信息管理模块"、"用户信息管理模块"、"客户借还书管理模块"、"综合查询模块"、"综合设置模块"。图书信息系统的功能模块如图:图书信息系统图书信息系统用户用户系统管理员客户用户信息管理租书还书客户信息维护图书信息维护出版社信息管理客户租还书信息管理综合查询综合设置功能模块图其中,客户租还书管理模块包括以下3个子模块租借图书归还图书查询租借信息客户信息维护模块包括以下5个子模块增加客户信息删除客户信息修改客户信息查询客户信息遍历客户信息同理,如图书信息管理、出版社信息管理、用户信息管理模块也被类似地划分为增加、删除、修改、查询和遍历5个模块。系统的总体结构图用户信息模块用户信息模块客户信息模块综合信息管理系统客户信息模块综合信息管理系统图书信息系统图书信息模块图书信息系统图书信息模块出版社信息模块出版社信息模块客户租还书信息模块客户租还书信息模块综合查询模块综合查询模块综合设置模块综合设置模块系统的总体结构图数据库设计数据库设计简介数据库设计有几个范式:第一范式:要求数据表中的每一个字段都不可再分,也就是说同一个数据表中同类字段不允许重复出现,在一个字段内也不允许放置多个数据项。第二范式:要求所有的非主键字段完全依赖于整个主键,而不是只依赖于构成主键的个别字段。第三范式:要求第一个非主键字段列中没有可传递的依赖性,即一个非主键列不能依赖于另一个非主键列。一般我们要做到的是第三范式,即数据表中没有冗余字段以及同一个表中的字段没有函数依赖关系,函数依赖性就是一个表中的字段间不应该有计算关系,如一个表中有单价字段、数量字段,就不应该有一个总金额字段。如果程序运行过程中需要总金额,可以实时计算。不过在一些较常用的表中,我们可以适当地保留冗余字段,这样,在程序运行过程中可以减少由于表间互相关联而使用速度降低等问题。这就是所谓的第四范式。数据表设计时,最好不要使用用户输入的信息作为主键,每一个数据表自己定义一个主键,添加信息是由程序自动添加,这样就可以减少数据更新时产生的错误。表与表相关联的外键最好是由程序自动生成的主键,这样数据库就比较规范了。数据库初期设计时一定要谨慎,把所有可能的情况都考虑进去,即使当时没有用到,也要将它留在数据库中作为备用字段以便将来扩充。程序一旦开始编码,就应该尽量避免再修改数据库。因为如果数据库结构一旦改变,所有与修改的数据表相关的业务都有可能受到影响,而某些影响还很难看到,这样就容易形成一个恶性循环。只要数据库结构改动。相应的模块就一定要重新修改,否则一定会出问题[1][3][7]。数据库设计数据库平台:MicrosoftSQLServer2000数据库中各种元素的命名约定。例如表名,字段名的命名约定。表名命名约定:表名为该表的英文缩写;字段命名约定:字段名为该字段名的英文缩写按照每个模块要实现的功能,通过其英文简写后,为每张表命名,每张表的字段名也是通过按其英文简写后命名。数据库的用户创建以及安全性检查在前面已经说明,包括给用户赋予权限、密码等。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。数据库设计一般包括如下几个步骤:数据库需求分析。数据库概念结构设计。数据库逻辑结构设计[1][3][7]。数据库需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入,收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后而后具体设计打下基础。根据数据流程图,可以列出以下数据项和数据结构:图书信息,包括的数据项有:图书编号、图书书名、图书类别、图书作者、出版社、价格、图书库存数量、现在库存数量等。借阅信息,包括的数据项有:图书编号、客户编号、借阅时间、应归还日期、实际归还日期等。出版社信息,其数据项有:出版社名称、地址、电话、邮件地址等。客户基本信息,其数据项有:客户编号、客户姓名、密码、电话号码,电子邮件地址、借书数量等。用户信息,包括的数据项有:用户编号、密码、权限等。数据库概念结构设计得到上面的数据项和数据结构后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。以下分别为系统E-R图,图书信息实体E-R图、租借书信息实体E-R图、客户信息实体E-R图、出版社信息实体E-R图、用户信息实体E-R图。系统E-R图图书图书图书编号图书作者出版社图书定价图书分类图书库存数量数量现在库存数量数量出版日期图书名称图书信息实体E-R图租租借书客户编号图书编号应归还日期实际归还日期租借日期租借书信息实体E-R图出版社出版社出版社名称出版社地址电子邮件出版社电话出版社信息实体E-R图客户客户客户编号客户姓名客户密码借书数量电子邮件电话号码客户信息实体E-R图用户用户用户编号用户分类用户密码用户信息实体E-R图数据库逻辑结构设计在上面的实体以及实体之间关系的基础上,形成数据库中的表格以及各个表格之间的关系。图书管理系统数据库中各个表格的设计结果如下面的几个表格所示。每个表格表示在数据库中的一个表。图书表<Book>编号字段名称数据结构说明备注1BookIDChar<10>图书编号主键2BookNameVarchar<30>图书名称允许为空3BookWriterVarchar<20>图书作者允许为空4BookPublishVarchar<50>出版社允许为空5BookNameDateDateTime出版日期允许为空6BookPriceFloat图书定价允许为空7BookSortVarchar<20>图书分类允许为空8BookAmountInt图书库存数量允许为空9BookRemainInt现在库存数量允许为空租借信息表<BorrowBook>编号字段名称数据结构说明备注1ReaderIDChar<6>客户编号主键2BookIDChar<10>图书编号外键3BorrowBookDateTime租借日期允许为空4ReturnDateDateTime应归还日期允许为空5FactReturnDateDateTime实际归还日期允许为空出版社表<PublishCompany>编号字段名称数据结构说明备注1PublishNameVarChar<50>出版社名称主键2PublishAddressVarchar<50>出版社地址允许为空3PublishPhoneNumberVarchar<15>出版社电话允许为空4PublishEmailVarchar<30>电子邮件允许为空客户表<Reader>编号字段名称数据结构说明备注1ReaderIDChar<6>客户编号主键2ReaderNameVarchar<20>客户姓名允许为空3ReaderPasswordVarchar<10>客户密码允许为空4ReaderPhoneNumberVarchar<15>电话号码允许为空5ReaderEmailVarchar<50>电子邮件允许为空6ReaderBorrowBooksInt借书数量允许为空用户表<User>编号字段名称数据结构说明备注1UserIDChar<10>用户编号主键2UserPasswordChar<10>用户密码允许为空3BookSortVarchar<10>用户分类允许为空规划有效的索引在组合表的列中创建索引,包括主关键字和外部关键字所在的列。在列或类组合中创建唯一的索引能增强唯一性。浏览索引并卸载不使用的索引。索引需要一定硬盘空间和时间来维护。具有较高数据插入操作频率的数据库最好不要索引。有较高读操作频率的数据库应该有更多的索引。避免在簇索引中包括不必要的列。在可能的情况下,使用较小的数据类型,例如用varchar替代char。考虑使用簇索引来支持排序和范围化查询。在为数据检索优化表时,簇索引必须支持数据的分组索引。为簇关键字选择列或列组,簇关键字以经常需要的顺序排序数据或以必须被一起访问的记录而分组记录。创建支持一般查询的查找参数索引。具有高选择性的列是索引的最好候选列。具有高密度的列是索引糟糕的候选列。使用约束实现数据的完整性PRIMARYKEY约束在表中定义了主关键字,它是行唯一的标识符,它可以强制实体完整性。在使用PRIMARYKEY约束时考虑以下事实:每个表只能有一个PRIMARYKEY约束。键入的值必须是唯一的。不允许有空值。PRIMARYKEY约束在指定的列创建唯一的索引,可以指定簇索引和非簇索引〔如果非簇索引先前并不存在,簇索引是默认的。UNIQUE约束指定,在一列中的两行不能有相同的值。该约束使用唯一的索引来强制实体的完整性。在已有一个主关键字时UNIQUE约束很有用。在使用UNIQUE约束时,考虑以下事实;允许有空值。在一个表中可以设置多个UNIQUE约束。可以将UNIQUE约束运用于具有唯一值的单列或多列,但不能用于表的主关键字。通过在指定的列或列组中创建唯一的索引,可以使UNIQUE索引得到强制[3][10][11]。..图书信息系统详细设计总体处理流程用户从客户端登录系统。服务器收到登录命令后要在已有的管理员资料数据表中读出管理员ID和密码,并检验该密码和用户输入的密码是否匹配。用户登录成功后就可以进行各种操作了,正确的填写各个界面的内容后,客户端就会向服务器发送命令,服务器按照要求对数据库进行处理〔写入、读出、修改,然后返回操作结果或查询的数据。用户界面设计当今软件界的所有软件无不是可视化的用户界面,它的好处不外乎它有美观、直接、操作者易懂和操作方便等好处。本系统设计思想:"为用户设计,而不是设计者"本系统设计原则:界面美观、操作方便并能高效率地完成工作。
界面根据用户需求设计。
界面能引导用户操作的功能,并能提供一些帮助功能。系统窗体模块设计系统窗体由登陆界面,系统主界面和多个功能模块界面组成,基本上一个模块完成一个或几个功能。用户登陆模块的实现用户登陆界面如图4-1∶用户登陆界面该模块主要实现系统的登陆。在用户名和密码中输入用户的账号和密码,点击确定,将调用privatevoidbtnOk_Click<objectsender,System.EventArgse>{//系统管理员登陆if<UserCheck<this.textUserID.Text,this.textUserPassword.Text>=="system">{this.Visible=false;Formmainform=newMainForm<this.textUserID.Text,"system">; mainform.ShowDialog<>;this.Close<>; }//普通用户登录elseif<UserCheck<this.textUserID.Text,this.textUserPassword.Text>=="user">{this.Visible=false;Formmainform=newMainForm<this.textUserID.Text,"user">; mainform.ShowDialog<>; this.Close<>; }else{//错误信息提示if<MessageBox.Show<"输入用户密码有误,是否重新登陆","输入有误",MessageBoxButtons.OKCancel,MessageBoxIcon.Question>==DialogResult.OK>{this.textUserID.Clear<>;this.textUserPassword.Clear<>;}else{this.Close<>; } }}进行验证,如果用户名或者密码输入不正确即提示"输入用户密码有误,是否重新登陆"。用户名和密码都正确,则进入系统的主界面。登陆模块运行时通过语句stringfileName="config.ini";try{sReader=newStreamReader<fileName,System.Text.Encoding.Default>;connectionString=sReader.ReadLine<>;conday=Convert.ToInt16<sReader.ReadLine<>>;sum=Convert.ToInt16<sReader.ReadLine<>>;day=Convert.ToInt16<sReader.ReadLine<>>;rate=Convert.ToDouble<sReader.ReadLine<>>;}catch<System.Exceptionerror>{MessageBox.Show<"错误信息是:"+error.Message,"警告",MessageBoxButtons.OK,MessageBoxIcon.Error>;}finally{if<sReader!=null>sReader.Close<>;}this.sqlConnectionLogin=newSqlConnection<>;this.sqlConnectionLogin.ConnectionString=connectionString;从config.ini文件读入数据库连接字符串,续借天数,借书天数,罚款金额,最大借书数信息,设置为静态变量,为其它窗体使用。 为了区分管理员中系统管理员和普通图书管理员的权限,在登陆模块中通过stringUserCheck<stringusername,stringuserpassword>{stringtxtSql,usersort; usersort="nobody"; //在数据库表User中查询合法用户 txtSql="SELECT*FROM[User]";SqlCommandcheckuser=newSqlCommand<txtSql,this.sqlConnectionLogin>;try{this.sqlConnectionLogin.Open<>;SqlDataReadersqlreader=checkuser.ExecuteReader<>;while<sqlreader.Read<>>{if<<sqlreader[0].ToString<>.Trim<>==username>&&<sqlreader[1].ToString<>.Trim<>==userpassword>>{ usersort=sqlreader[2].ToString<>.Trim<>;break; } } }catch<Exceptione>{MessageBox.Show<e.ToString<>>; } sqlConnectionLogin.Close<>; returnusersort; }根据用户名和密码对管理员信息表逐行对比,返回权限说明。并把参数传给主功能模块,如果是系统管理员权限则管理员信息功能可用。用户主界面的实现主界面如图4-2:图书管理系统主界面在主界面中,通过文件MainForm.cs中/*退出系统模块*/privatevoidbtnExit_Click<objectsender,System.EventArgse>/*图书信息模块*/privatevoidbtnBook_Click<objectsender,System.EventArgse>/*用户信息模块*/privatevoidbtnUser_Click<objectsender,System.EventArgse>/*客户信息模块*/privatevoidbtnReader_Click<objectsender,System.EventArgse>/*综合查询模块*/privatevoidbtnQuery_Click<objectsender,System.EventArgse>/*出版社信息模块*/privatevoidbtnPublishing_Click<objectsender,System.EventArgse>/*客户租还书模块*/privatevoidbtnBorrow_Click<objectsender,System.EventArgse>/*综合设置模块*/privatevoidbtnset_Click<objectsender,System.EventArgse>/*数据导入模块*/privatevoidbtnexcel_Click<objectsender,System.EventArgse>函数来调用所有功能模块,是系统的主要框架。出版社信息模块的实现出版社信息模块界面如图4-3:出版社信息界面该模块通过文件PublishConpany.cs中/*初始化SqlConnection,DataSet,SqlCommand,SqlDataAdapter类的新实例。通过this.sqlConnectionBook.ConnectionString=Library.Login.connectionString;获取用于打开SQL数据库的字符串*/publicPublishing<>/*使用SqlDataAdapter的Fill方法填充DataSet及显示该表*/privatevoidShowGrid<>/*初始化SqlConnection,DataSet,SqlCommand,SqlDataAdapter类的新实例。通过comm.CommandText=commString;获取对数据源执行的Transact-SQL语句或存储过程;通过dataAdapter.SelectCommand=comm;获取该语句或存储过程用于在数据源中选择记录;通过dataAdapter.Fill<dataSetBook,"PublishCompany">;在System.Data.DataTable中添加或刷新行以匹配使用System.Data.DataTable名称,指定的SQLSELECT语句和System.Data.CommandBehavior的数据源中的行。通过this.textName.Text=;获取当前文本并为该控件获取数据绑定*/privatevoidDataBinding<>函数来实现数据库的连接及数据显示。通过函数:/*添加数据*/privatevoidbtnAdd_Click<objectsender,System.EventArgse>/*修改数据*/privatevoidbtnModify_Click<objectsender,System.EventArgse>/*删除数据*/privatevoidbtnDelete_Click<objectsender,System.EventArgse>来实现对出版社信息的添加,修改及删除操作。点击"退出"返回主界面。客户信息模块的实现客户信息功能模块界面如图4-4:客户信息界面该模块通过文件Reader.cs中publicReader<>privatevoidShowGrid<>privatevoidDataBinding<>函数来实现数据库的连接及数据显示,其数据库操作的具体实现方法同出版社信息模块一致。图书借阅模块的实现图书借阅模块界面如图4-5:借阅图书界面该模块通过文件BorrowReturn.cs中/*通过语句cd=Library.Login.conday;d=Library.Login.day;s=Library.Login.sum;r=Library.Login.rate;来读取用户的借书天数,借书最长时间,借书数量及罚款金额。初始化SqlConnection,DataSet,SqlCommand,SqlDataAdapter类的新实例。通过this.sqlConnectionBook.ConnectionString=Library.Login.connectionString;获取用于打开SQL数据库的字符串*/publicBorrowReturn<>/*查看租借功能的实现函数*/privatevoidbtnLoad_Click<objectsender,System.EventArgse>{strings="'"+this.textReaderID.Text+"'";if<this.textReaderID.Text=="">{MessageBox.Show<"该用户没有租借图书!">; }else{m="SELECT*FROMBorrowBookWHEREReaderID="+s; } ShowGrid<>;}/*续借功能的实现函数*/privatevoidbtnContinue_Click<objectsender,System.EventArgse>/*图书租借信息中读者ID必须与读者信息记录中的读者ID相同,以该函数来验证,相同则租借,不同就会报错*/privateboolReturnReader<stringReaderID>/*图书租借信息中借阅图书号必须与读者信息记录中的图书号相同,以该函数来验证,相同则租借,不同就会报错*/privateboolReturnBook<stringBookID>/*归还图书,显示是否应缴纳罚款及应该缴纳多少罚款功能的实现函数*/privatevoidbtnReturn_Click<objectsender,System.EventArgse>函数实现图书借阅,归还,续借及罚款等。管理员可添加图书借阅、图书归还和缴纳罚款记录。图书借阅信息中的读者ID必须与读者信息记录中的读者ID相关联。图书借阅信息中的借阅图书号必须与图书资料记录中的图书号相关联。还书功能要判断读者编号和图书编号为主键查找借书信息表,若借书时间与系统当前时间天数超过设定的借书天数则计算罚款。图书归还后图书信息表中该图书未借数加一,用户信息表中借书数减一。 借书功能中若该用户借书数未到上限,图书未借数未为零,则将更新借书表,用户信息表,图书信息表。借还书功能模块对数据库操作多所以所有数据库的操作都是通过存储过程实现对表的操作更新。点击"退出"返回主界面。图书信息模块的实现图书信息模块界面如图4-6:图书信息界面该模块通过文件Book.cs中类似方法来实现对图书信息的添加,修改及删除操作,点击"退出"返回主界面,其数据库操作的具体实现方法同出版社信息模块一致。用户信息模块的实现用户信息模块界面如图4-7:用户信息界面该模块通过文件User.cs中类似方法来实现来实现对用户信息的添加,修改及删除操作,点击"退出"返回主界面,其数据库操作的具体实现方法同出版社信息模块一致。综合查询模块的实现综合信息模块界面如图4-8:综合查询界面该模块通过文件Query.cs中函数:/*初始化SqlConnection,DataSet,SqlCommand,SqlDataAdapter类的新实例。通过this.sqlConnectionBook.ConnectionString=Library.Login.connectionString;获取用于打开SQL数据库的字符串,并根据查询条件,在数据库表中逐一对比,如有合要求的数据项,则绑定该控件*/PublicQuery<>来实现信息的综合查询。点击"退出"返回主界面。数据导入模块的实现数据导入模块界面如图4-9:数据导入界面考虑到图书信息有时会需要对表的大量导入,我们设计了从EXCEL表加入数据库中相应表的功能。所以该模块通过Excel.cs中/*通过对表名的选择,对应我们提供的EXCEL模版的表使用OLEDB连接EXCEL文件,并把表读到数据集,显示到程序中,然后从数据集导入SQL数据库相应的表。*/privatevoidbtnView_Click<objectsender,System.EventArgse>{MySheet=boDataTable.Text;try{OleDbConnectionMyConnection=newOleDbConnection<@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+MyExcel+";Excel8.0;HDR=YES">;stringMySQL="SELECT*FROM["+MySheet+"$]";OleDbCommandMyCommand=newOleDbCommand<MySQL,MyConnection>;OleDbDataAdapterMyAdapter=newOleDbDataAdapter<MyCommand>; MySet=newDataSet<>; MyAdapter.Fill<MySet>;this.dataGrid1.DataSource=MySet.Tables[0]; }catch<System.ExceptionMyEx>{MessageBox.Show<MyEx.Message>; }综合设置模块的实现综合设置模块界面如图4-10综合设置界面该模块主要通过Set.cs中/*从config.ini文件读入用户的续借天数,借书天数,罚款金额,最大借书数信息,管理员可按需要随时对用户终于大借书数,借书月数,图书超期罚款/天,续借天数进行修改,并通过IO操作更新到config.ini文件。*/privatevoidSetForm<objectsender,System.EventArgse>{strings;stringfileName="config.ini";StreamWritersWriter=null;s=Library.Login.connectionString;try{sWriter=newStreamWriter<fileName,false,System.Text.Encoding.Default>;sWriter.WriteLine<s>;cd=Convert.ToInt16<this.textCd.Text.ToString<>>;this.s=Convert.ToInt16<this.textSum.Text.ToString<>>;d=Convert.ToInt16<this.textDay.Text.ToString<>>;r=Convert.ToDouble<this.textRate.Text.ToString<>>;sWriter.WriteLine<cd.ToString<>>;sWriter.WriteLine<this.s.ToString<>>;sWriter.WriteLine<d.ToString<>>;sWriter.WriteLine<r.ToString<>>;if<MessageBox.Show<"更新成功!若使更新生效需要重新启动程序。您确定关闭当前程序吗?","确定关闭程序",MessageBoxButtons.OKCancel,MessageBoxIcon.Question>.Equals<DialogResult.OK>>{Application.Exit<>; } }catch<System.Exceptionerror>{MessageBox.Show<"错误信息是:"+error.Message,"警告",MessageBoxButtons.OK,MessageBoxIcon.Error>;}finally{if<sWriter!=null> sWriter.Close<>; }}函数实现信息的综合设置,修改。点击"退出"返回主界面。..测试引言软件测试是保证软件质量的关键,它是对需求分析和编码的最后复审。在开发软件的过程中,虽然使用了许多保证软件质量的方法,分析、设计和实现软件,但难免还会在实际的操作中犯错误,这样就会在软件产品中埋藏隐患。如果不能在设计阶段排除这些错误,就会导致系统功能不能正常实现,有时候会造成巨大的经济损失。为了保证软件质量,且在今后的使用过程中保证软件的精确性、安全性和较长时间的使用寿命,软件必须经过充分的测试[12]。目的编写测试计划的目的是对工程质量的实验,检测管理系统的硬软件分析与设计中的每一个模块和各模块的组装、业务实现等测试活动进行安排。根据软件工程规范的要求,其内容包括测试用例的设计、测试数据的录入方法和评价准则[12]。测试策略面向对象的单元测试当考虑面向对象的软件时,单元的概念改变了。"封装"导致了类和对象的定义,这意味着类和类的实例包装了属性和处理这些数据的操作。现在,最小的可测试单元是封装起来的类和对象。一个类可以包含一组不同的操作,而一个特定的操作也可能存在于一组不同的类中。因此,对于面向对象的软件来说,单元测试的含义发生了很大变化。测试面向对象软件时,不能再孤立地测试单个操作,而应该把操作作为类的一部分来测试[13][14]。面向对象的集成测试面向对象软件集成测试主要有下述两种不同的策略。基于线程的测试:这种策略把响应系统的一个输入或一个时间所需要的类集成起来,分别集成并测试每个线程,同时应用回归测试以保证没有产生副作用。基于使用的测试:这种方法首先测试几乎不使用服务器类的那些类,把独立类都测试完之后,再测试使用独立类的下一个层次的类。对依赖类的测试一个层次一个层次地持续进行下去,直至把整个软件系统构造完为止[13][14]。面向对象的确认测试在确认测试或系统测试层次,不同考虑类之间相互连接的细节。和传统的确认测试一样,面向对象软件的确认测试也集中检查用户可见的动作和用户可识别的输出。为了导出确认测试用例,测试人员应该认真研究动态模型和描述系统行为的脚本,以确定最可能发现用户交互需求错误的情景[13][14]。测试方法通过输入测试数据对系统功能进行功能测试。进行添加,更新,删除,查找等操作,测试系统性能是否达到要求。测试结果经过多次测试,数据输入时如果出错,系统提示错误信息。比如主键项目不能为空,年月输入项目必须满足年月格式要求,输入开始年月和结束年月时,时间顺序又要求。在进行DB操作时,若不能查找数据,则返回信息提示出错。通过测试,系统能够达到功能需求设计。在软件测试过程中,由于输入数据不够充分,某些功能的错误没有能够测出。另外,在某些方面,由于硬件上的原因,暂时不能投入正式使用,希望日后能够加以改进。其他尚有部分错误建议通过测试,对软件测试欠缺的方面加以总结。通过测试,该系统达到了功能设计的要求,但由于操作方式多变,所以建议使用更多测试用例及测试方法来进行测试。..结论经过以上的步骤,系统的开发告一个段落。作为一个图书信息系统软件,本系统具有以下几个特点:安装使用方便,只要正常登陆客户端,就可以进入系统,察看资料。开发,维护方便,降低了维护成本。操作使用简单:具有良好的用户界面,易于操作,功能完善,用户不需要专门学习如何进行操作。系统架构灵活,可扩展性强:该系统耦合程度低,具有强大可扩展性,需要时可以通过增加子模块的方法增加新的功能,同时原有功能不受影响。通过该管理软件的使用,取代手工纸笔管理,大大提高效率,降低资源浪费,提高管理效率,节省人力物力。虽然系统开发已经完成,但由于时间仓促,还遗留有很多问题,例如,系统对于访问人数的测试,在访问者众多的情况下,是否会由于网络原因造成访问困难。系统有的地方功能上做的不够合理,会对用户的使用造成一定程度的障碍,等等。还有可以增加本系统特有的功能等等。这些不足都需要在日后时间充裕的情况下一一补充,加以完善。争取能够在实际使用当中进一步扩展。在这次系统开发过程中,通过自己动手,从查找资料开始,经过系统调研,可行性分析,总体设计,详细设计,系统测试等步骤,到系统实现,达到了毕业设计对学生能力的要求。通过对开发工具的使用和掌握,学习到C#开发和应用方面的经验。虽然在此过程当中遇到了很多困难,但是通过各种方式将问题逐一解决。在此过程当中,不仅学习到了很多知识和新的技术,还学习到了解决问题的方法:不能单靠别人指教,很多问题只有靠自己通过思考问题发生的原因,查找相应资料,对比进行思考,再对程序反复进行调试。当问题得到解决后,不能就此忘记,应该通过对问题的解决中学习到在以后遇到类似问题时如何解决,从中吸取教训,总结经验。研究总结∶本系统完成了图书管理系统的大多数功能,可以满足大多数的用户需求。当今的图书管理系统已经成为图书管理的必然趋势,比起原来的手工操作,一个完善的图书管理系统可以更好的帮助管理员和用户进行各种操作,数据处理,从而减少出错的可能性。本系统在使用性上并没有达到很高的水平,在尽可能的情况下,要对系统再做多次的修改。未来展望∶今后的图书管理系统将更加频繁的被使用,不管大中小型的图书馆都将离不开系统的实时管理。在今后我们会更加努力的进行开发和设计,争取做出可移植性佳且代码更优化的图书管理系统。任务总结∶通过这次毕业设计,把本科四年所学展现出来,是对我的一种很大的考验,我在某些方面还做的不足,今后会不断的改正。..参考文献[1]丁宝康,李大学编著.《数据库原理》.经济科学出版社,2000[2]赵杰李涛朱慧.《SQLServer数据库管理.设计与实现教程》.清华大学出版社,2004.3[3]Microsoft著.《数据库程序设计——SQLServer2000数据库程序设计》.高等教育出版社,2004.2[4]Microsoft著.《C#程序设计语言》.高等教育出版社,2005.8[5]王振江,王添添著.《C#课程设计案例精编》.中国水利水电出版社,2006.12[6]Microsoft著.《基于C#的Windows应用程序设计》.高等教育出版社,2004.2[7]
郭盈发,张红娟著.《数据库原理》.XX电子科技大学出版社,2002[8]王昌达著.《深入SQLserver2000》.电子工业出版社,2003[9]李代平,章文著.《中文SQLServer2000数据库应用基础》.冶金工业出版社,2002[10]
赵松涛著.《中文版SQLSERVER2000应用及实例集锦》.人民邮电出社,2002[11]刘卫宏著.《SQLServer2000使用教程》.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保险行业内部控制与风险管理模拟试题
- 心有一团火温暖众人心(教学课件)-高中语文
- 2026年9月27日广东省珠海市选调面试真题及解析(团圆计划)
- 维修电工技能鉴定考核试题及答案
- 2026年医务人员手卫生专项练习题及答案
- 造价工程师土建专业模拟试题及答案2026年
- 一级建造师考试(公共课程)题库含答案(宁夏回族自治区中卫市2025年)
- 招标投标法考试试题及答案
- 全国林草行业森林消防员技能竞赛理论知识考试题库含答案
- 上海华二初级中学语文新初一分班试卷含答案
- 中国邮政储蓄银行2027届校园招聘笔试备考试题及答案解析
- 2025年广州市海珠区事业单位人员招聘考试试题及答案详解
- 2.7.2 勾股定理的逆定理 课件 -2026-2027学年浙教版数学八年级上册
- 2026年融媒体新闻采编技术应用及理论知识考试题库(附含答案)
- 人工挖孔灌注桩安全技术交底培训
- 2026年安徽省中考英语真题试卷及答案
- 《动物普通病》教案 项目十四 妊娠期疾病
- 内支撑设计计算书(Excel自动计算版)
- 六年级上册语文1-8单元基础默写通关练习卷
- 2026年基于数字化手段的幼儿园家园沟通效率提升策略
- 2026-2031 年中国 SPA 行业市场调查研究与投资前景分析报告
评论
0/150
提交评论