1、毕业实习报告专 业: 计 算 机 网 络 工作地点: 合 肥 锋 江 姓 名: 葛 楚 学 号: 3209012022 指导教师: 范 文 广 辅导教师: 杨 庆 颖 2011 年 12 月 01 日目 录摘 要 (2)第一章 引言 (5)1.1 系统开发背景及意义 (5)1.2 设计目标 (5)1.3 研究思路和工作计划 (6)第二章 系统开发平台及主要技术 (8)2.1 系统开发工具 Visual Studio.NET 2003 (8)2.2 数据库技术简介 (11)第三章 系统需求分析 (12)3.1 需求分析原理 (12)3.2 图书管理系统功能需求分析 (12)3.3 系统功能模块设
2、计 (15)第四章 总体设计 (16)4.1 总体设计原理 (16)4.2 程序的结构设计 (16)4.3 数据库设计(18)4.4 数据库逻辑结构设计 (19) 第五章 图书管理系统(23)5.1 图书管理信息系统主窗体的创建(23)5.2 借阅图书管理模块的创建(24)5.3 还书信息管理模块的创建(29)5.4 读者信息管理模块的创建(34) 5.5 读者充值(39)5.6 图书信息管理模块的创建 (42)5.7 查询模块的创建(50)5.8 系统用户管理模块的创建 (55)第六章 测试与调试 (60)6.1 系统的测试环境 (61)6.2 系统的功能测试 (61)6.3 系统的性能分析
3、 (62)6.4 系统评价 (62)第七章 总结 (63)第八章 结束语 致谢 (64)摘 要二十一世纪是信息的社会,信息作为社会最主要的资源,将成为战略资源引起人们广泛的关注。如何获取信息?图书是我们最好的获取信息的方式,但由于图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来。迫使人们起用新的管理方法来管理图书,如何把图书管理员从繁重的工作中解脱出来呢?科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。信息化时代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。因此,图书管理系统也以方便、快捷、费用
4、低的优点正慢慢地进入人们的生活,将传统的图书管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,使读者可以花更多的时间在选择书和看书上。从而使人们有更多时间来获取信息、了解信息、掌握信息 。【关键词】图书管理 系统设计 信息 第一章 引言1.1 系统开发背景及意义一直以来图书都是以手工操作管理的,随着经济的发展,图书的应用越来越多。如今网络的进步,使得图书走向了网络.数量急剧增加。在这种情况下单靠人工来处理图书的信息,工作量将很大,借书人也会很多,借书会很困难,人工处理将变得不可想象。所以建立图书管理很重要。用计算机可使人们从繁重的劳动中解脱出来,仅使用一些简单的操作
5、便可及时、准确地获得需要的信息。该系统的具体任务就是设计一个图书信息管理系统。它可以很大程度上,节省人力和物力资源。借助现代信息技术和管理理论,建立管理信息系统也是当今社会的重要趋势。党和政府根据知识经济时代的特点,对国民经济建设提出了“用信息化带动工业化”的指导思想。对人民生活而言,全面开发和应用计算机管理信息系统就是近期不能回避的问题。数据库技术和 Internet 的飞速发展,使它们已经成为现代信息技术的重要组成部分,是现在计算机信息系统和计算机应用系统的基础和核心。对于任何一个企业来说,数据是企业重要的资产,如何有效利用这些数据,对于企业发展起着极其重要的作用。随着我国市场经济的迅速发
6、展和人们生活水平的不断提高,图书藏书的书目逐渐增大,这也挑战了图书管理方面的技术,以前的人工管理方式已经不再适应现在的环境。实行电子化的图书管理,让人力资源管理人员从繁重琐碎的案头工作解脱出来,完成更重要的工作。图书管理系统就是为了解决和减轻繁琐的手工管理,使图书可以上升到一个完善的电子化、信息化管理。使图书管理工作系统化、规范化、自动化,从而达到提高企业管理效率的目的。1.2 设计目标在这个大的指导方针下,我的毕业论文选择了计算机管理信息系统,我选择了一个较为贴近我生活的,和我比较了解的图书管理系统。时代的进步,计算机越来越广泛的运用,使很多原本由手工操作的管理,慢慢由计算机代替,而且日加完
7、善。图书管理系统就是其中一个典型的例子,由早先的手工操作管理,提升为计算机管理,大大的节约了人力物力资源。设计的指导思想是一切为用户着想,方便读者的查阅与阅读。操作尽量简单明了,而且作为一个实用的应用程序要有良好的容错性,在用户出现误操作时能尽量及时地给出警告,以便用户及时改正。在和指导老师多次交流后,确定实现方案的要点和工作计划。本系统的实现的主要功能有:读者信息管理、书籍信息管理,报表,以及读者和书籍的查询和修改等等的功能,是一个可以满足借阅者和图书馆工作人员的需要的图书信息管理系统。在经过长时间的调研和资料累积后,并参考了相关的图书管理软件,查阅了大量的资料以后,我基本上搞清楚了图书管理
8、系统的需求,需要的功能、模块,和借阅者与管理人员的需要后设计了这个软件。1.3 研究思路和工作计划下面的流程图反映了我的基本的思路和过程:和研究任何其它软件项目一样,我做的毕业设计也经历了从选题,调研,熟悉开发环境,实验关键技系统试运行和修改。查找类似的相关系统的资料;系统概要设计,数据库结构设计,功能模块开发,功能模块测试,以下是我的论文的思路和工作计划:(一) 任务:设计与实现用计算机管理图书系统。(二) 系统需求分析:根据系统要求,画出数据流图。(三) 系统设计: 功能模块设计、数据库设计、表设计、编码设计、菜单设计及报表设计。(四) 系统实现:1.建新表 2.数据处理 3.数据统计 4
9、.查询管理 5.报表浏览 6.退出。具体的日程安排如下:整个设计和论文我用了较长的时间,完成全部工作大约用了 3 个月的时间,具体时间安排如下(1) 第一周至第二周筛选课题,选定课题(2) 第三周至第四周查阅各类书籍资料,研究相关软件(3)第五周至第七周熟悉开发环境,实验关键技术(3) 第八周系统概要设计(4) 第九周数据库结构设计(5) 第十周至第十三周功能模块开发和功能模块测试(6) 第十四周至十五周系统调试和系统试运行和修改(7) 第十六周最终完成系统的开发和后期工作,并完成毕业设计报告,着手准备毕业答辩的工作。第二章 系统开发平台及主要技术2.1 系统开发工具 Visual Studi
10、o.NET 2003本图书管理系统应用程序开发工具是 Visual Studio.NET 2003,2003 年 5月 22 日,微软隆重推出三个企业级的产品:Microsoft Windows Server 2003,Visual Studio.NET 2003 和 SQL Server 2000 企业版 64 位。Visual Studio .NET 2003 是 Microsoft 的第二代开发工具,用于构建和部署Microsoft .NET 的软件。在这个最新平台上,包括了 Visual C 、Visual Basic 和 Visual C#等开发工具。其中 Visual Studio
11、.NET 的特点如下:2.1.1 高效率开发通过.NET Framework 为我们提供的一个庞大而有结构清晰的类型,使得我们的编程变得异常轻松,还有自动垃圾回收机制等等一系列新的特性,可以让我们的程序员腾出更多的精力放在考虑如何实现客户所需要的业务逻辑上,而不是计算机的控制上为内存如何分派之类的事情头痛。甚至无论你是开发哪一种应用程序,无论是 C/S、B/S、还是智能设备或是数据库编程,都可以使用你最熟悉的一种编程语言而不需要去学习诸如 C+、ASP、SQL 等等各不相同的多用语言。.NET 还带来了多种语言之间的无缝集成,例如一个系统同时可以采用多用编程语言来开发,VB.net 编写的类可
12、以方便的再用 C#继承。这些都大幅提高我们的开发效率。2.1.2 多平台特性尽管不可否认,到目前为止.NET 应用程序还只能运行于 Windows 平台上,但.NET 天生就为跨平台应用做好了准备,据我们所知,微软自己还有第三方开发商已经在为.NET 程序运行在 Unix、OS2、Linux 等等系统上工作着(如开源项目 Mono) 。我们还可以看到我们的.NET 应用程序将可以运行在 PDA 甚至手机上。不久的将来,我们将可以只关心我们的应用程序将如何满足客户的需求而不用考虑基于何种平台来开发。2.1.3 无接触部署借助于.NET 的反射特性,.NET 应用程序都可以精确的描述自身。这就使得
13、无接触部署成为可能,.NET 应用程序无需在注册表中储存信息,只需简单的XCOPY 便可正确的在用户的机器上运行,这使得企业的部署成本将会大为降低。2.1.4 消除 DLL Hell同样是基于.NET 的反射特性,每一个应用程序将可以清楚地知道自己需要使用哪一个 DLL,同一个 DLL 的不同版本可以彼此和平共处,从而彻底消除让我们头痛的 DLL Hell。2.1.5 可信赖计算长期以来,微软系统的安全性问题一直备受争议。但终于,比尔盖茨决定改变这种现状。在.NET 中,这种安全性的考虑直接放到了代码级。通过一系列的技术,如代码访问安全(Code Access Security)、基于角色的安
14、全、强名称(Strong Name) 、权限和权限集等等,最大限度地保证了系统的安全性。2.1.6 访问数据:ADO.NET与数据打交道,如搜索、更新和处理等,使软件的基本任务,今天,大部分数据通常被存储于某种类型的数据库管理系统中(DBMS)中,通常是关系型数据库(relational database) 。开发人员需要某些机制,允许他们的应用程序访问这些信息。Windows DNA 有一组名为 ActiveX 数据对象(ActiveX Data Objects.ADO)的 COM classes,解决了这个问题。NET Framework 中的结局方案时 ADO 的激进更新版。与 ADO
15、的早期版本和其他数据访问组件相比,ADO.NET 提供了若干好处。这些好处分成以下几个类别:2.1.6.1 互操作性ADO.NET 应用程序可以利用 XML 的灵活性和广泛接受性。由于 XML 是用于在网络中传输数据集的格式,因此可以读取 XML 格式的任何组件都可以处理数据。实际上,接收组件根本不必是 ADO.NET 组件:传输组件可以只是将数据集传输给其目标,而不考虑接收组件的实现方式。目标组件可以是 Visual Studio 应用程序或无论用什么工具实现的其他任何应用程序。唯一的要求是接收组件能够读取 XML。作为一项工业标准, XML 正是在谨记这种互操作性的情况下设计的。2.1.6
16、.2 可维护性在已部署系统的生存期中,适度的更改是可能的,但由于十分困难,所以很少尝试进行实质的结构更改。这是很遗憾的,因为在事件的自然过程中,这种实质上的更改会变得很有必要。例如,当已经部署的应用程序越来越受用户欢迎时,增加的性能负荷可能需要进行结构更改。随着已部署的应用程序服务器上的性能负荷的增长,系统资源会变得不足,并且响应时间或吞吐量会受到影响。面对该问题,软件设计者可以选择将服务器的业务逻辑处理和用户界面处理划分到单独计算机上的单独层上。实际上,应用程序服务器层将替换为两层,缓解了系统资源缺乏。该问题并不是要设计三层应用程序。相反,它是要在应用程序部署以后增加层数。如果原始应用程序使
17、用数据集以 ADO.NET 实现,则该转换很容易进行。请记住,当用两层替换单个层时,将安排这两层交换信息。由于这些层可以通过 XML 格式的数据集传输数据,所以通讯相对较容易。2.1.6.3 可编程性Visual Studio 中的 ADO.NET 数据组件以不同方式封装数据访问功能,帮助您加快编程速度并减少犯错几率。例如,数据命令提取生成和执行 SQL 语句或存储过程的任务。2.1.6.4 强类型的数据集由这些工具生成的 ADO.NET 数据类导致类型化数据集。这又使您可以通过已声明类型的编程访问数据。最后,已声明类型的数据集的代码更安全,原因在于它提供对数据类型的编译时检查。例如,假定 M
18、oney 表达为货币值。如果程序员误向 Money 分配了字符串值,则环境会在编译时向程序员报告该错误。当使用未声明类型的数据集时,程序员直到运行时才会知道该错误。对于不连接的应用程序,ADO.NET 数据库提供的性能优于 ADO 不连接的记录集。当使用 COM 封装在层间传输不连接的记录集时,会因将记录集内的值转换为 COM 可识别的数据类型而导致显著的处理开销。在 ADO.NET 中,这种数据类型转换则没有必要。 2.1.6.5 可伸缩性因为 Web 可以极大增加对数据的需求,所以可缩放性变得很关键。Internet 应用程序具有无限的潜在用户供应。尽管应用程序可以很好地为十几个用户服务,
19、但它可能不能向成百上千个(或几百万个)用户提供同样好的服务。使用数据库锁和数据库连接之类资源的应用程序不能很好地为大量用户服务,因为用户对这些有限资源的需求最终将超出其供应。 ADO.NET 通过鼓励程序员节省有限资源来实现可缩放性。由于所有 ADO.NET 应用程序都使用对数据的不连接访问,因此它不会在较长持续时间内保留数据库锁或活动数据库连接。 具上所述,.NET 的优点在此就不一一例举,所以,在这里我选择了VC#.NET 做为编程语言来开发图书管理系统。2.2 数据库技术简介在数据库的实现上我选择的是 SQL Server2000 关系数据库开发系统。数据库是数据管理的最新技术,是计算机
20、科学的重要分支。今天,信息资源已成为各个部门的重要财富和资源。建立一个满足各级部门信息处理要求的行之有效的信息系统也成为一个企业或组织生存和发慌的重要条件。因此,作为信息系统核心和基础的数据库技术得到越来越广泛的应用,从小型单项事务处理到大型信息系统,从联机事务处理到联机分析处理,从一般企业管理到计算辅助设计与制造(CAD/CAM) 、计算机集成制造系统(CIMS) 、办公信息系统(OIS) 、地理信息系统(GIS)等,越来越多新的应用领域采用数据库存储和处理他们的信息资源。对于一个国家来说,数据为的建设规模、数据库信息量的大小和使用频度已成为衡量这个国家信息化程度的重要标志第三章 系统需求分
21、析3.1 需求分析原理需求分析是软件生命周期的一个重要阶段。它的根本是为了满足用户的需要而系统必须做什么。具体地说,应该确定系统必须具有的功能和性能、系统要求的运行环境,并且预测系统发展的前景;必须仔细分析系统中的数据,既要分析系统中数据流又要分析长期使用的数据存储。需求分析阶段的工作结果是开发软件系统的重要基础。大量的统计数字表明,软件系统中百分之十五的错误起源于错误的需求。为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性一般来说,应该从下述四个方面进行验证:一致性。所有需求必须是一致的,任何一条需求不能和其它需求相互矛盾。完
22、整性。需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。现实性。指定的需求应该是用现有的硬件技术和软件技术可以实现的。对硬件技术的进步可以做些预测。对软件技术则很难做出预测,只能从现有技术出发判断需求的现实性。有效性。必须证明需求是正确有效的,确实能解决用户面对的问题。3.2 图书管理系统功能需求分析图书管理系统部分是提供给图书管理人员用来实现对图书进行管理,进行增加、修改、删除读者记录和图书记录等基本操作。而图书服务系统部分则是提供给读者用来实现对图书的查询、借阅、归还等基本操作。 根据以上基本分析,则图书管理系统具有以下功能模块:3.2.1 用户登录功能模块首先利用用户登录功
23、能块实现对用户的分类。用户必须输入正确的密码才能进入下一界面,如果用户密码输入错误,应用程序则应该有出错信息提示。3.2.2 服务系统实现对图书的查询、借阅、归还等基本操作。通过分析,此系统应该完成以下功能:1) 查询图书记录功能模块。实现对所有图书记录的查询,包括该图书的书号、书名、作者、出版社以及现在的借阅情况等信息。可以按照书的编号和书的名称二种方式进行查询2) 借阅图书功能模块。完成读者对指定图书的借阅,但该图书必须是处于未被借阅的状态。若该读者现今借阅的图书已到期但未归还,则不允许借阅图书。这个功能模块应能实现对此读者是否允许借阅进行判断,执行借阅时向借阅记录中添加记录,并修改图书记
24、录中该图书的借阅状态。3) 查询个人借阅信息功能模块。完成对指定读者借阅记录的查询,显示该读者借阅的所有的图书的书号、书名、作者、出版社信息,借阅每本图书的时间、应归还每本图书的时间以及是否逾期的信息。4) 续借图书功能模块。在查询个人借阅信息功能模块中,查询个人借阅后,用户可以对自己已借阅的图书续借一次。在此功能中应能实现对此读者是否允许续借进行判断,执行续借时修改借阅记录中该图书借阅日期和归还日期。5) 归还图书功能模块。完成读者对自己借阅的指定图书的归还,执行归还操作时删除该借阅记录,并修改图书记录中该图书的借阅状态。具体实现目标如下: 1.系统界面友好,人机交互性强,输入方式简单,实用
25、。 2.采用模块结构,以保证系统的正确可靠,并且易于扩充、修改,便于移植。 3.各个模块划分要求相对独立,并在模块中结合面向对象的设计方法,以提高系统的可重用性。 4.设计风格一致,界面美观,力求简单易懂,操作灵活。 5.数据的存储采用数据库存储。 6.保证系统的易维护性、易理解性。系统开发的总体任务是实现各种信息的系统化、规范化和自动化。本图书管理系统将实现及时、准确地查询等功能。可以自定义图书类别、读者类别、方便快捷地查阅各类图书。同时,提供方便快捷的对图书和借书人的管理手段,大大降低图书管理员的工作量,提高图书管理的工作效率,降低工作中可能出现的失误。系统功能分析是在系统开发的总体任务的
26、基础上完成。图书管理信息系统需要完成功能主要有: 读者基本信息的输入,包括读者编号、读者姓名、读者种类、读者性别、工作单位、电话号码、电子邮件地址、办证日期、备注等。 读者基本信息的查询、修改,包括读者编号、读者姓名、读者种类、读者性别、工作单位、电话号码、电子邮件地址、办证日期、备注等。 书籍信息的输入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期、备注,是否借出,日租金等。 书籍信息的查询,修改,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期、备注信息等。 借书信息的输入,包括读者 ID,图书 ID,借书日期,还书日期,应还日期,是
27、否还书,日租金,卡内金额,借书经手人,还书经手人,借书天数,总租金等。 借书信息的查询,包括借书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、备注信息等。 还书信息的输入,包括还书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期、备注信息等。 还书信息的查询,包括还书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期、备注信息等。3.3 系统功能模块设计对上述各项功能进行集中、分块,按照结构化程序设计的要求,得到如图3.3.1 所示的系统功能模块图。图 3.3.1 系统功能模块图第四章 总体设计4.1 总体设计原理经过需求分析,已经清楚了系统
28、所要完成的全部功能,现在决定“怎么做”。概括的说,总体设计的基本目的就是回答“系统应该如何实现?”的这个问题。因此总体设计又称为“概要设计”。通过这个阶段的工作,将划分出组成系统的物理元素-程序,文件,数据库,人工过程和文件等。但是每一个物理元素都处于黑盒子阶段,这些黑盒子里的具体内容将留在以后进行详细的设计。总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由那些模块组成,以及这些模块间的相互关系。模块是资料说明可执行语句等程序对象的集合。它是单独命名的而且可通过名字来访问。模块化就是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集中起来组成一个整体,可以
29、完成指定的功能,满足问题的要求。采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。因为程序的错误通常局限在有关的模块及它们之间的接口中,所以模块化使软件容易测试和调试。应而有助于提高系统的可靠性。并且模块化还能够提高软件的可修改性,也有助于软件开发工程的组织管理。因此,在进行软件结构设计时应该遵循的最主要的原理就是模块化独立原理。4.2 程序的结构设计根据上一阶段的功能需求分析,画出程序的结构图如图 4.1.1 所示。它们是数据模块窗体、用户登录窗口的窗体,图书管理系统界面窗体,修改图书记录的窗体,修改读者记录的窗体,修改密码设置的窗体,图书服务系统界面窗体,查询、借阅、及查询个
30、人借阅信息、续借和归还已借阅图书的窗体。4.1.1 程序的结构图各窗体实现的功能如下:用户登录窗口的窗体此窗体为用户登录界面,完成根据密码进入系统的登录功能。图书系统界面窗体此窗体为服务系统界面,敲击不同的按钮而进入不同的功能窗体。1 查询书籍记录的窗体完成对所有藏书记录的查询。2 查询读者记录的窗体完成对所有读者记录的查询。3 借阅图书窗体完成读者对指定图书的借阅功能。4 归还图书窗体完成读者对自己借阅的指定图书的归还功能。5 读者增删改的窗体完成对读者的增加、删除、修改的功能,并且可以查询指定读者,完成修改、删除功能。6 书籍增删改的窗体完成对图书的增加、删除、修改功能,并且可以查询指定图
31、书,完成修改,删除功能。7 用户增删改的窗体完成管理员的增加、删除、修改功能。4.3 数据库设计根据上一阶段的需求分析,得出图书管理系统的实体主要有两个:读者与图书。读者与图书通过借书/还书操作而联系起来,两实体之间的联系为一对多联系。一个读者能借阅多本图书,但一本图书只能被一个读者借阅。其 E-R 图如下 4.3.1 所示图 4.3.1 E-R 图每个实体定义的属性如下:读者(读者 ID, 编号, 姓名, 性别, 单位, 电话, 电子邮件, 办证日期, 备注, 卡内金额,是否借书)图书(图书 ID, 图书编号, 书名, 类别, 作者, 出版社, 价格, 出版日期, 是否借出, 备注,日租金)
32、借阅(读者 ID,图书 ID,借书日期,还书日期,应还日期,是否还书,日租金,卡内金额,借书经手人,还书经手人,借书天数,总租金)4.4 数据库逻辑结构设计根据上一阶段的需求分析,容易得出此数据库的模型为关系模型是非常适合的结论。根据 E-R 图向关系模型转换的原则,将图 4.3.1 转换成关系模型的结果如下:图 4.3.1 图书管理信息系统数据流程图读者信息(读者 ID, 编号, 姓名, 性别, 单位, 电话, 电子邮件, 办证日期, 备注, 卡内金额,是否借书) 。图书信息(图书 ID, 图书编号, 书名, 类别, 作者, 出版社, 价格, 出版日期, 是否借出, 备注,日租金) 。借阅记
33、录信息(借书 ID, 读者 ID, 图书 ID, 借书日期, 还书日期, 应还日期, 是否已还书, 日租金, 押金, 借书经手人, 还书经手人,借书天数,总租金) 。关系的码用下划线来标出。根据规范化理论分析,上述的三个关系模式均为 3NF。对上述的三个关系模式定义为基本表的结果如下:(1)读者表(duzhe)字段 类型 长度 说明 主键ID int 4 读者 ID 是bianhao Varchar 50 编号 否name Varchar 50 姓名 否sex Varchar 50 性别 否danwei Varchar 50 单位 否dianhua Varchar 50 电话 否email V
34、archar 50 电子邮件 否riqi Datetime 8 办证日期 否beizhu Varchar 50 备注 否jine money 8 卡内金额 否jieshu varchar 50 是否借书 否ID 为主键,即 ID 字段的取值非空且唯一。满足实体完整性约束。(2)图书表(xinshuluru) 字段 类型 长度 说明 主键ID int 4 图书 ID 是shuhao varchar 50 图书编号 否shuming varchar 50 书名 否leibie varchar 50 类别 否zuozhe varchar 50 作者 否chubanshe varchar 50 出版社
35、 否jiage money 8 价格 否chubanriqi datetime 8 出版日期 否jiechu varchar 50 是否借出 否zhushi varchar 50 备注 否zujin money 8 日租金 否字段 ID 为主键,即 ID 字段的取值非空且唯一,满足实体完整性约束。(3)借书记录表(jieshu)字段 类型 长度 说明 主键ID int 4 借书 ID 是duzheID int 4 读者 ID 否tushuID int 4 图书 ID 否jieriqi datetime 8 借书日期 否huanriqi Datetime 8 还书日期 否yinghuanriqi
36、 Datetime 8 应还日期 否Huan Varchar 50 是否已还书 否zujin Money 8 租金 否yajin Money 8 押金 否jiejingshou Varchar 50 借书经手人 否huanjingshou varchar 50 还书经手人 否tianshu int 4 借书天数 否zongzujin Money 8 总租金 否其中 ID 字段为主键,即 ID 字段的取值非空且唯一,满足实体完整性约束。同时 duzheID、tushuID 字段均要满足参照完整性约束。即 duzheID 字段的取值必须来源于 duzhe 表中的字段 ID 的取值; tushuID
37、 字段的取值必须来源于xinshuluru 表中的字段 ID 的取值。(4)用户表(denglu)字段 类型 长度 说明 主键ID int 4 ID 是name varchar 50 管理员姓名 否pass Varchar 50 密码 否字段 ID 为主键,即 ID 字段的取值非空且唯一,满足实体完整性约束。第五章 图书管理系统5.1 图书管理信息系统主窗体的创建5.1.1 创建工程项目TUSHU打开 Visual Studio.NET 2003 后,单击文件-新建项目菜单,在新建项目中选择项目类型:Visual C#,模板为:Windows 应用程序,然后名称为:TUSHU,Visual S
38、tudio.NET 2003 将自动产生一个 Form1 窗体。5.1.2 创建主窗体图 5.1.1 图书管理系统主窗体在如图 5.1.1 所示的窗体中,所示的菜单结构如下:借阅管理借书管理还书管理退出书籍管理添加书籍书籍管理(查询、修改、删除)读者管理添加读者读者管理(查询、修改、删除)读者充值查询读者查询(借书、未借书、全部读者信息)图书查询(借出、未借,全部图书信息)系统设置添加管理员密码管理(修改密码、删除管理员)帮助关于图 5.1.2 主窗体中的菜单结构5.2 借阅图书管理模块的创建在借阅管理菜单界面点击借书管理,则将进入此窗体完成借阅图书操作。图 5.2.3 借阅图书窗体借阅图书程
39、序流程图如下所示:在借书的过程中,将首先判断图书和读者信息表里,是否有此条记录,我写了一个 addu 类,定义了一个判断数据库里是否有此记录的函数(panduan() ) ,其中有二个变量,一个是表名,一个是条件,当调用这个方法时,如果数据库里有这条记录,将返回 true,没有则返回 false,代码如下:public bool panduan(string tab_name,string where_str )string sqlStr=“select * from “+tab_name+“ where “+where_str;SqlCommand com=new SqlCommand(sq
40、lStr,conn);bool have=true;conn.Open();if (com.ExecuteScalar()=null)have=false;conn.Close();return have;然后,当没有此记录时,系统提示:没有读者或图书信息,如果有的话,继续向下执行,会向图书信息和读者信息的各个文本框里显示相关信息,代码如下:private void txtduzhecha_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)tryif(e.KeyCode = Keys.Enter) string duzhech
41、a;if (this.radioButton5.Checked=true)duzhecha=“select * from duzhe where bianhao=“+this.txtduzhecha.Text.Trim()+“ “;elseduzhecha=“select * from duzhe where name=“+this.txtduzhecha.Text.Trim()+“ “;SqlCommand com = new SqlCommand(duzhecha,conn);conn.Open();SqlDataReader dr = com.ExecuteReader();dr.Rea
42、d();this.duzheID=dr.GetInt32(0);this.textBianhao.Text=dr.GetString(1);this.textName.Text=dr.GetString(2);Sex.Text=dr.GetString(3);this.textDanwei.Text=dr.GetString(4);this.textDianhua.Text=dr.GetString(5);this.textEmail.Text=dr.GetString(6);this.textBox4.Text=dr.GetSqlMoney(9).ToString();dr.Close();
43、conn.Close();catchconn.Close();this.txtduzhecha.Text=“;MessageBox.Show(“没有此读者!“);当读者信息和图书信息都存在时,点击Button按扭,将引发button1_Click事件,在这段代码里,主要是向读者表里添加读者已经借书,图书表里此图书已被借出,以及向借书表里添加借书的相关信息,点击借阅的代码如下:private void button1_Click(object sender, System.EventArgs e)tryif (this.textBianhao.Text.Trim()=“)MessageBox.S
44、how(“请选择读者!“);return;if (this.textShuhao.Text.Trim()=“)MessageBox.Show(“请选择图书!“);return;string updateduzhe=“update duzhe set jieshu=是 where bianhao=“+this.textBianhao.Text.Trim()+“;string updatetushu=“update xinshuluru set jiechu=是 where shuhao=“+this.textShuhao.Text.Trim()+“;du.modify(updateduzhe);
45、du.modify(updatetushu);string addjie=“insert into jieshu(duzheID,tushuID,jieriqi,yinghuanriqi,huan,zujin,yajin,jiejingshou,huanjingshou)values(“+duzheID+“,“+tushuID+“,“+this.dateTimePicker1.Value.Date+“,“+this.datehuanriqi.Value.Date+“,否,“+Convert.ToDecimal(this.textBox3.Text.Trim()+“,“+Convert.ToDe
46、cimal(this.textBox4.Text.Trim()+“,“+denglu.name+“,无) “;if (du.modify(addjie)MessageBox.Show(“借书信息保存成功!“);this.bangding();this.qingkong();catchMessageBox.Show(“借书没有完成!“);5.3 还书信息管理模块的创建还书信息管理模块主要实现如下功能: 添加还书信息 修改还书信息5.3.1 还书信息窗体的创建选择“还书管理”菜单,将首先出现如图 5.3.1.1 所示的窗体。图 5.3.1.1 还书信息窗体在还书的这个窗体中,将根据图书编号或读者编
47、号来查询借书表里是否有此条记录:在数据库里,借书表中存的是读者 ID 和图书 ID,所以,将进行三个表的联合查询,条件是读者(图书)编号和此书是否已还(否),查询的代码如下:private void button1_Click(object sender, System.EventArgs e)string chajie;if (this.radiotusubianhao.Checked=true)chajie=“SELECT jieshu.ID as ID,xinshuluru.shuhao AS 图书编号,xinshuluru.shuming AS 图书书名,duzhe.bianhao AS 读者编号, d