图书管理系统开发 毕业论文.doc_第1页
图书管理系统开发 毕业论文.doc_第2页
图书管理系统开发 毕业论文.doc_第3页
图书管理系统开发 毕业论文.doc_第4页
图书管理系统开发 毕业论文.doc_第5页
免费预览已结束,剩余35页可下载查看

下载本文档

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

文档简介

图书管理系统开发 摘 要 图书管理系统开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个 方面。采用 sql server 2005 数据库作为后台数据库、visual c#编程语言作为前台开发 工具。通过对图书管理的调查论证,图书管理系统可以分为用户信息管理、客户信息管 理、图书信息管理、出版社信息管理、客户租还书管理、综合查询功能。 我在这次设计中主要完成了出版社信息管理和客户租还书管理。经过和其他组员设 计模块的整合运行后,系统运行结果证明,本文所设计的图书管理系统可以满足学生和 教师借阅者、图书管理员两方面的需要,达到了设计要求。 关键字:图书、数据库、管理系统 - 1 - 目 录 一 绪论 - 4 - (一) 图书管理的现状 - 4 - (二) 系统开发目的和意义 - 4 - (三) 图书管理系统的可行性分析 - 4 - (四) 开发环境 - 5 - (五) 图书管理系统开发相关技术的介绍 - 5 - 1 visual c#的介绍 - 5 - 2 sql server 的介绍 .- 5 - 二 系统需求分析 - 6 - (一) 任务概述 - 6 - (二) 数据描述 - 6 - (三) 功能需求 - 7 - (四) 性能需求 - 7 - 1 系统处理的准确性和及时性 .- 7 - 2 系统的易用性和易维护性 .- 7 - 3 系统的标准性 .- 7 - 4 系统的响应速度 .- 7 - 三 系统概要设计 - 8 - (一) 系统功能描述 - 8 - (二) 功能模块划分 - 8 - (三) 系统流程分析 - 9 - 四 系统详细设计 .- 10 - (一) 数据库设计 .- 10 - 1 数据库需求分析 - 10 - - 2 - 2 数据库概念结构设计 - 10 - 3 数据库逻辑结构分析 - 11 - 4 连接数据库 - 13 - (二) 主控制模块设计 .- 14 - 1 主控制模块功能说明 - 14 - 2 主控制模块设计图 - 14 - (三) 出版社信息模块设计 .- 14 - 1 出版社信息模块块功能说明 - 14 - 2 出版社信息模块功能图 - 14 - 3 出版社信息模块设计图 - 15 - (四) 客户租还书管理模块设计 .- 15 - 1 客户租还书模块功能说明 - 15 - 2 客户租还书模块功能图 - 15 - 3 客户租还书模块设计图 - 16 - 五 测试分析报告 .- 17 - (一) 测试用例 .- 17 - (二) 测试结果 .- 17 - 六 结论 .- 18 - 致谢 .- 18 - 参考文献 .- 19 - 附录 .- 20 - - 3 - 一 绪论 随着计算机技术的飞速发展,当今社会正快速向信息化社会前进,信息系统的作用 也越来越大。图书馆在正常运营中总是面对大量的读者信息,书籍信息以及由两者相互 作用产生的借书信息,还书信息。因此图书管理信息化是发展的必然趋势。用结构化系 统分析与设计的方法,建立一套有效的图书信息管理系统,可以减轻工作,将工作科学 化、规范化,提高了图书馆信息管理的工作质量因此根据图书馆目前实际的管理情况开 发一套图书管理系统是十分必要的。 (一) 图书管理的现状 图书管理是高校内每一个系部或院部都必须切实面对的工作,但一直以来人们使用 传统的人工方式管理图书资料。这种方式存在着许多缺点,如效率低、保密性差且较为 繁琐。另外,随着图书资料数量的增加,其工作量也将大大增加,这必将增加图书资料 管理者的工作量和劳动强度,这将给图书资料信息的查找、更新和维护都带来了很多困 难。 经过详细的调查,目前我国各类高等学校中有相当一部分单位图书资料管理还停留 在人工管理的基础上。这样的管理机制已经不能适应时代的发展,其管理方法将浪费许 多人力和物力。随着科学技术的不断提高,这种传统的手工管理方法必然被以计算机为 基础的信息管理方法所取代。 传统图书管理的特点是一直以来,中小型书店、中小学的小型图书馆及各高校图书馆 和资料室使用传统的人工方式管理图书档案、客户档案。这种管理方式存在着诸多缺点, 如:手续繁琐、工作量大、效率低下、出错率高等,同时给对大量资料的查询、更新及 维护都带来不少困难。 (二) 系统开发目的和意义 随着社会的进步,信息技术的广泛应用,数字化管理的优势日趋显著。针对云航中 学图书馆管理落后的情况,设计实现一个图书信息管理系统,通过图书信息管理系统的 使用对学校图书馆的各种图书信息进行管理可以给管理员和用户带来以下不同的方便: 检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点 能够极大地提高工作效率,也是图书馆管理科学化、正规化的重要标志之一,而且计算 机管理的成本不断降低。因此,开发一套图书管理软件已经很有必要,并且实现研究服 务于实践的原则。 (三) 图书管理系统的可行性分析 本次毕业设计题目:“基于 b/s 的云航中学图书馆信息管理系统设计与开发”主要 目的是利用数据库软件编制一个管理软件,用以实现图书、读者以及日常工作等多项管 理。同时对整个系统的分析、设计过程给出一个完整论证。图书管理系统是一种基于集 - 4 - 中统一规划的数据库数据管理新模式。在对图书、读者的管理,其实是对图书、读者数 据的管理。本系统的建成无疑会为管理者对图书管理系统提供极大的帮助。本系统的设 计主要从以下几方面做起:系统业务流程分析、系统的功能设计、系统的数据库结构设 计等。作这些工作需对数据库知识有足够认识,并深入的了解 visual basic 的使用和管 理系统的相关知识。 现在大多数的图书管理方式为手工处理,重复劳动多,劳动强度大,而且容易出错, 新系统的使用能否可以很好的解决这些问题要看系统的可行性,可行性研究的目的是用 最小的代价在尽可能短的时间内确定问题是否能够解决。系统的可行性分析有以下几个 方面: 技术可行性:处理速度快、准确通过权限的设置,数据的安全性好、方便查询、借阅 管理等。 经济可行性:系统建设不需要很大的投入、可缩减人力投入。 运行上可行性:本系统作为一个小型的图书馆信息管理系统,所耗费的资源非常的小。 从各种社会因素可行性分析:可降低工作人员工作强度,提高效率,会得到学校工作 人员的一致同意的。 综上所述通过可行性分析认为新系统的开发方案切实可行,可进行开发。 (四) 开发环境 开发环境:windows 7 开发工具:visual c# 数据库管理系统: sql server 2005 数据库服务器: sql server 2005 桌面引擎 (五) 图书管理系统开发相关技术的介绍 1 visual c#的介绍 c#(读作 c sharp)是微软开发的一种面向对象的编程语言,是微软.net 开发环境 的重要组成部分。而 microsoft visual c# 2005 是微软开发的 c#编程集成开发环境(同 种产品还有 borland 公司的 c# builder) ,它是为生成在 .net framework 上运行的多种 应用程序而设计的。c# 简单、功能强大、类型安全,而且是面向对象的。c# 凭借它的 许多创新,在保持 c 样式语言的表示形式和优美的同时,实现了应用程序的快速开发。 2 sql server 的介绍 sql(structured query language),结构化查询语言。sql 语言的主要功能就是同各 种数据库建立联系,进行沟通。按照 ansi(美国国家标准协会)的规定,sql 被作为关系 型数据库管理系统的标准语言。sql 语句可以用来执行各种各样的操作,例如更新数据库 中的数据,从数据库中提取数据等。绝大多数流行的关系型数据库管理系统都采用了 sql 语言标准。虽然很多数据库都对 sql 语句进行了再开发和扩展,但是包括 select, - 5 - insert, update, delete, create,以及 drop 在内的标准的 sql 命令仍然可以被用来完 成几乎所有的数据库操作。 二 系统需求分析 (一) 任务概述 经过对云航中学详细调查,加深了对现行图书管理业务的深刻了解,与此同时,将 整个图书管理的业务流程抽象描述如下: 新的图书购进后,分门别类地进行归并并汇总,加以编号。 新书编号后,上到书架以备学生借阅。 如某学生需要借阅图书,则在其本人的借阅登记表上进行登记,记录相关借阅信息与 借阅日期。 学生借阅图书后,应及时归还图书,并在本人的借阅登记表上注明还书日期和时间。 根据以上调查分析,可以给出其现行业务流程图如图 2.1 所示。 图 2.1 现行图书管理业务流程图 (二) 数据描述 经过详细的调查,我们已经清楚了解了现行的业务流程,接下来给出系统的逻辑模 型。构造系统逻辑模型的工具是数据流图和数据字典。根据现行图书管理的业务流程, 首先把数据流图中的源点和终点都选定为学生,因此可以得到图书管理系统的基本系统 模型,如图 2.2 所示。 图 2.2 图书管理系统的基本系统模型 根据基本系统模型,对其逐步细化,得到描述逻辑系统细化后的数据流图,如图 2.3 管 理 员 学 生 信 息 1 学 生 管 理 d 1 学 生 信 息 图 书 信 息 2 图 书 管 理 d 2 图 书 信 息 登 记图 书 信 息 登 记 图 书 信 息 学 生 借 阅 图 书 3 借 阅 管 理 借 阅 信 息 借 阅 登 记 d 3 4 归 还 管 理 学 生 信 息 归 还 图 书 归 还 登 记d 4 学 生 借 阅 结 果 归 还 图 书 归 还 结 果 新 图 书 新 图 书新 图 书 新 图 书 新 图 书 分 类 、 编 号 学 生 借 阅 学 生 归还 图 书 归 还 后 的 图 书 - 6 - 所示。 图 2.3 图书管理系统数据流图 (三) 功能需求 经过以上详细的用户调查,在现行业务流程和数据分析的基础上,基本可以确定系 统设计必须达到的目标。 以下是图书管理系统必须具备的功能: 新进图书的登记功能:对于购进的新书,系统必须具备图书信息资料的录入功能。 图书的查询修改功能:当图书资料发生变化,如图书丢失或有错误信息输入时,则应 能够及时对数据进行修改和补充。 借阅的登记,归还的登记功能:系统的主要功能之一,供本校学生借阅图书、归还图 书,并进行登记。 学生信息的增加、删除和修改功能:系统主要功能之一,建立学生信息,并对其进行 维护。 (四) 性能需求 为了保证系统能够长期、安全、稳定、可靠、高效的运行,图书管理系统应该满足 以下的性能需求: 1 系统处理的准确性和及时性 系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分 考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学校对 信息处理的需求。 2 系统的易用性和易维护性 图书管理系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。 这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求 系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题, 要提供足够的在线帮助,缩短用户对系统熟悉的过程。 3 系统的标准性 系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。所有这些都要符合 图 书 管 理 系 统 图 书 管 理 员 图 书 管 理 员 图 书 借 阅 信 息 图 书 归 还 信 息 - 7 - 主流国际、国家和行业标准。 4 系统的响应速度 图书管理系统系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信 息。在进行统计分析时,根据所需数据量的不同而从秒级到分钟级,原则是保证操作人员 不会因为速度问题而影响工作效率。 - 8 - 三 系统概要设计 系统设计主要包括客户需求的总结、功能模块的划分和系统流程的分析。根据客户需 求总结系统主要完成的功能,以及将来拓展需要完成的功能,然后根据设计好的功能划 分出系统的功能模块,以方便程序的管理和维护,最后设计出系统的流程。接下来,就 对系统设计的前期准备做详细介绍。 (一) 系统功能描述 一个图书借阅管理系统应该提供包括客户信息管理、图书信息管理、出版社信息管 理、用户信息管理、租还书、报表显示和综合查询等功能。 客户、图书、出版社、用户信息的数据维护模块提供增加、删除、改变和查询、浏览 等基本的数据维护功能。 打印报表功能模块可以用报表的形式显示数据表。 综合查询模块可以通过用户选择的数据表和相应的查询条件来查询相关内容。 客户租还书模块是图书出租管理系统的核心功能,实现客户和图书出租的交互。 (二) 功能模块划分 图书出租管理系统应该具有客户信息管理、图书信息管理、租还书和综合查询等功 能。根据系统功能的需求分析,我们把该系统的功能划分为 7 个模块。 客户信息维护模块 图书信息维护模块 出版社信息维护模块 用户信息维护模块 客户租还书管理模块 综合查询模块 报表显示模块 图书出租管理系统的功能模块如图 3.1 所示。 图 3.1 图书出租管理系统的功能模块图 其中,客户租/还书管理模块包括以下 3 个子模块。 图 书 信 息 管 理 系 统 客户信 息模块 图书信 息模块 用户信 息模块 租还书 管理模 块 综合查 询模块 出版社 信息模 块 报表显 示模块 - 9 - 租借图书 归还图书 查询租借信息 客户信息维护模块包括以下 4 个子模块 增加客户信息 删除客户信息 修改客户信息 查询客户信息 该模块图如图 3.2 所示。 图 3.2 客户信息维护模块图 同理,如图书信息管理、出版社信息管理、用户信息管理模块也被类似的分为增加、 删除、修改、查询 4 个模块。 从图中可以看出,该信息管理系统的角色可以划分为 3 类。 普通用户:拥有客户信息维护、图书信息管理、出版社信息管理及客户租还书信息管 理、报表显示和综合查询的权限。 系统管理员:拥有客户信息维护、图书信息管理、出版社信息管理、用户信息管理以 及客户租还书管理、报表显示和综合查询的权限。但其主要功能还是用户信息管理。 客户:租书和还书。 (三) 系统流程分析 图书出租管理系统的开发首先要设计一个登录系统,用户只有输入了正确的用户名和 密码方可进入系统内部。系统流程图如图 3.3 所示。 客 户 信 息 模 块 客户信 息模块 图书信 息模块 用户信 息模块 出版社 信息模 块 租还书 管理模 块 综合查 询 报表显 示模块 图 书 信 息 管 理 系 统 客户信 息管理 图书信 息管理 用户信 息管理 出版社 信息管 理 登 陆 用 户系 统 管 理 员 - 10 - 图 3.3 图书出租管理系统图 - 11 - 四 系统详细设计 (一) 数据库设计 数据库结构设计的好坏直接影响的图书出租管理系统的效率和实现的效果。合理地设 计数据库结构可以提高数据存储的效率,保证数据的完整和统一。数据库设计一般包括 如下几个步骤。 数据库需求分析 数据库概念结构设计 数据库逻辑结构分析 1 数据库需求分析 图书出租管理系统的数据库功能主要体现在对各种信息的提供、保存、更新和查询操 作上,包括图书信息、用户信息、客户信息、租借信息和出版社信息,各个部分数据内 容又有内在联系。针对该系统的数据特点,可以总结出如下的需求。 用户和客户具有不同的身份。 用户信息记录用户资料。 客户信息记录客户的详细信息。 图书信息记录图书的名称、出版社等信息。 租借信息记录客户租借图书的信息。 出版社信息由出版社名称、出版社地址等各个信息。 经过上述系统功能分析和需求总结,设计如下的数据项和数据结构。 图书信息,包括图书编号、图书名称、作者等数据项。 租书信息,包括客户编号、图书编号、租借日期等数据项。 出版社信息,包括出版社名称、出版社地址、电话等数据项。 客户信息,包括客户编号、姓名、密码等数据项。 用户信息,包括用户编号、密码和分类数据项。 2 数据库概念结构设计 得到上面的数据项和数据结构后,就可以设计满足需要的各种实体及相互关系,再 用实体关系图,为后面的逻辑结构设计打下基础。 在这个系统中,所存在的实体有:图书信息实体、租书信息实体、出版社信息实体、 客户信息实体和用户信息实体。 图书:图书编号名称作者出版社 租书:客户编号图书编号租借日期应归还日期 客户:客户编号名称密码租借数量 出版社:出版社名称地址电话邮件 - 12 - 用户:用户编号密码分类 3 数据库逻辑结构分析 有了数据库概念结构设计,数据库的设计就简单多了。在图书出租管理系统中,首 先要创建图书出租管理系统数据库,然后在数据库中创建需要的表和字段。如果有需要, 还可以设计视图、存储过程和触发器。下面分别讲述在图书出租管理系统中数据库的设 计。 创建数据库 在开发环境中,启动“服务器资源管理器”窗口,在 sql server 服务器节点右击, 在图案出的快捷菜单中选择“新建数据库”命令,将打开“创建数据库”对话框。在 “心数据库名”文本框中输入 bookmanagement,选择“使用 windows 身份验证”单选按 钮。 创建字/字段 在这个数据库管理系统中要建立 5 张数据表,分别是用户表、图书表、客户表、租 借信息表和出版社表。下面说明创建表和字段的方法。在刚刚建立的 bookmanagement 数 据库节点下的“表”节点右击,在弹出的快捷菜单中选择“新建表”命令。在弹出的 “新建表”窗体中输入如图 4.1 所示的字段和属性。 图 4.1 book 表 图书表的字段说明,其中设置 bookid 为主键和索引。 表 4.1 图书表(book) - 13 - 表 4.2 租借信息表(borrowbook) 表 4.3 出版社表(publishcompany) 表 4.4 客户表(reader) 表 4.5 用户表(user) 在建立完所有的数据表后,要根据数据表之间的关系在属性页中添加关系。为 book 表和 borrowbook 表之间添加 fk_borrowbook_book 关系,为 book 表 book 表和 pulishcompany 之间添加 fk_book_publishcompany 关系,为 reader 表和 borrowbook 表 之间添加 fk_borrowbook_reader 关系。 创建视图 在图书出租管理系统中,为便于浏览目前客户借图书的信息,要创建一个 borrow 视 图来显示租借记录中客户和所租借图书的一些详细信息以便以后综合浏览。在 bookmanagement 数据库下面的“视图”节点右键,在弹出的快捷惨淡中选择“新建视图” 命令,在弹出的对话框中选择 book 表、borrowbook 表和 reader 表,及其各自想要显示 的字段。 borrow 视图的 sql 语法如下: select dbo.borrowbook.readerid,dbo.borrowbookid,dbo.borrowbook.returndate, dbo.borrowbook.borrowdate,dbo.reader.readerid as expr 1, dbo.reader.readername,dbo.reader.readerphoneno,dbo.book.b ookid as expr2, dbo.book.bookname,dbo.book.bookremain from dbo.book inner join dbo.borrowbook on dbo.book. bookid=dbo.borrowbook.bookid inner join - 14 - dbo.reader on dbo.borrowbook.readerid=dbo.reader.readerid 创建存储过程 为保证系统具有良好的课扩展性,有些业务规则可以以储存过程方式放在数据库服 务器上。储存过程提供了数据驱动应用程序中的许多优点。利用存储过程可以,将数据 库操作层状在单个命令中,为获取最佳性能二进行优化并通过附加的安全性而增强系统 安全性。 在图书出租管理系统中,创建实现在客户租还书时对客户表中的客户所借书目和图 书表中图书库存量的改变的存储过程和客户借书之前查询客户租借图书数目和图书库存 量和存储过程。在开发环境中创建存储过程可以通过在“服务器资源管理器”窗口中的 “存储过程”节点右击,在弹出的对话框中选择“新建存储过程”命令。可存储过程编 写窗口中写入代码。 在图书出租管理系统中,需要创建 6 个存储过程。下面介绍各个存储过程和功能。 客户安装配套光盘上的数据库之后可以通过 sql sever2005 的企业管理器查看这些存储 过程的代码。 readerborrowednumber 存储过程 该存储过程负责客户已经租借的图书书目。其目的是为了在客户租借图书之前判断 此客户是否达到借书书目的上限。 booknumber 存储过程 此存储过程的功能是根据输入的图书编号得到该图书现在的存储数量。 borrowreader 存储过程 当客户租借某种图书后,该存储过程向客户表的客户目前所借图书一项添加 1。 returnbook 存储过程 当客户归还所借的图书时,该存储过程在图书表中相应的数据库现存量中减去 1。 returnreader 存储过程 当客户归还所借图书是,该存储过程在客户表中把客户所借图书数量减 1。 returnbook 存储过程 当客户归还所借的图书时,该存储过程在图书表中相应的图书现存量中增加 1。 4 连接数据库 图书出租管理系统使用 vc#+sql server 来进行开发。为了使系统正常工作,需要建 立与数据库系统的连接来读取和写入数据。 一般来讲,可以有两种方式连接数据库。一种是在窗体中直接添加 sqlconnection 并通过直接设置其 connectionstring 属性来连接数据库;另一种创建一个连接类 login,其代码如程序清单所示。 public class login - 15 - public static string connection get return“data source=(local);initial catalog=bookmanagement; integrated security=sspi“ 该代码将返回数据库连接命令,然后可在程序中利用此连接命令生成数据库连接。 本章应用的是第一种方法,因为比较直观、易操作。而第二种方法更加底层,所以可以 更加详细地控制数据库连接。 (二) 主控制模块设计 1 主控制模块功能说明 系统的主控制界面是用户进入到各个功能界面的总控制界面。当系统管理员登录到 主界面时可以进行任何的操作,而普通的用户会发现其中的“用户信息”一项为不可用。 2 主控制模块设计图 图 4.2 系统主界面设计 (三) 出版社信息模块设计 1 出版社信息模块块功能说明 系统的出版社信息界面可以实现出版社信息的增、删、改、差。 - 16 - 2 出版社信息模块功能图 图 4.3 出版社信息模块功能图 3 出版社信息模块设计图 图 4.4 出版社信息模块设计图 (四) 客户租还书管理模块设计 1 客户租还书模块功能说明 租书功能是本系统的核心功能,客户租还书管理界面也是系统中最为常用的界面。 界面中用户可以先查询客户的租借记录,并对客户租还书进行操作。为了提示目前的操 作和结果,界面左上角设一信息提示的文本框。 2 客户租还书模块功能图 出 版 社 信 息 管 理 删除出 版社信 息 更改出 版社信 息 增加出 版社信 息 查看出 版社信 息 租 还 书 管 理 租借 记录 归 还 图 书 租 借 图 书 - 17 - 图 4.5 客户租还书模块功能图 3 客户租还书模块设计图 图 4.6 客户租还书模块设计图 - 18 - 五 测试分析报告 (一) 测试用例 1.出版社信息模块测试用例 字段名称 描 述 测试项 出版社信息模块的功能测试 输入标准 1.打开出版社信息模块,点击“添加” ,输入出版社信息,点击“确定” 。 2.点击“修改” ,输入新出版社信息,点击“确定” 。 3.选择一组出版社信息,点击“删除” ,点击“确定” 。 输出标准 1.增加一组出版社信息栏,出版社信息写入数据库。 2.可以修改出版社信息,新的出版社信息写入数据库。 3.一组出版社信息从数据库中删除。 表 5.1 出版社信息模块测试用例 2.租还书模块测试用例 字段名称 描 述 测试项 综合查询模块的功能测试 输入标准 1.打开综合查询模块,选择“数据表” 、 “查询项” 、 “查询条件”选项, 输入指定值,点击“查询” 。 2.点击“重置” 。 输出标准 1.系统显示出指定查询条件的信息2.可重新选择“数据表” 、 “查询项” 、 “查询条件”选项,输入指定值。 表 5.2 租还书模块测试用例 (二) 测试结果 1.出版社信模块测试结果 测试结果 正常操作无任何异常处理出现 与预期的偏差 无 说明的问题 出版社信模块通过了功能测试 表 5.3 出版社信模块测试结果 2.租还书模块测试结果 测试结果 正常操作无任何异常处理出现 与预期的偏差 无 说明的问题 租还书模块通过了功能测试 表 5.4 租还书模块测试结果 - 19 - 六 结论 经过几个月的设计和开发,学校图书管理系统基本开发完毕。其功能基本符合用户 需求。通过这次毕业设计真切地体会到毕业设计的目的并不止于自己单纯任务的完成, 而在于学习新的知识并掌握具体的方法,如何具体使用和具体应用你所学所用的语言。 从而获得一种本领:就是融会贯通各种语言。回首整个开发设计过程,我学到了很多书 本上学不到的东西。比如以前开发软件的时候,一般做的就是编码工作,实现比较简单 的功能。但是这次毕业设计,我要负责图书管理系统的整个开发过程,包括系统可行性 分析、系统需求分析、系统概要设计、系统详细设计等方面的工作。在每个设计阶段我 都能学到一些新知识,对我的动手能力提高很大。在整个毕业设计过程中,我基本上完 成了图书管理系统各个模块的功能,达到了毕业设计的要求。 在以后的工作中,还会遇到很多类似的情况,此次毕业设计为我以后的工作积累了 很多宝贵的经验。这几个月中,从接到设计课题到具体设计再到完成系统开发,是一个 不断地遇到问题与解决问题的过程。其中包括:分析各种需求、完善各种功能、增加必 要环节、对各部分及整体进行检测与维护。当然仍存在许多问题不能解决地尽善尽美, 还需不断地继续与探索。在结束设计的同时也感到了劳动的艰辛与劳动成果的来之不易, 明白了毕业设计是给自己提供了一个锻炼、升华、提高、完善的机会。 致谢 这次软件工程课程设计,我主要采用 studio 作为前台开发工具, microsoft sql severe2005 作为后台数据库,结合软件工程设计和数据库编程的有关知识,开发了这个 图书管理系统。 通过这次软件工程课程设计,我对于软件工程设计的相关步骤和流程有了更深刻的 理解,熟悉并掌握了 visual c#编程语言和 microsoft sql severe2005 的数据库使用, 另一方面,也对 sql 语言作为嵌入式语言的功能有了更深刻的体会。同时,我也发现自 己对于软件工程设计和数据库设计的知识掌握的还不够,设计和编程能力还有待于进一 步提高。这次课程设计给了我一个锻炼自己,强化专业知识的机会,通过这次课程设计, 我也得以一窥软件工程设计的广袤天地,我相信,只要认真学习,多借鉴别人的经验, 多思考,多实践,就一定能够成为一个合格的软件设计人员,能够翱翔在软件开发的天 地。同时,在这里感谢我的指导老师的悉心指导。 - 20 - 参考文献 1白梅关于网络教育中资源建设的思考j电化教育研究,2001,(12):48-51 2谢幼如,李克东. 网络教学的设计与评价研究报告r. /user13/jockey1009/index.html,2002-5-6. 3卢潇软件工程m北京:清华大学出版社,2004:229-243. 4(美)william stalling 著,魏迎梅译操作系统内核与设计原理m, 2001:56-110. 5王国荣,朱琳杰. asp private string usersort; 主控制窗体 mainform 的构造函数如下 public mainform(string username,string usersort) / / windows 窗体设计器支持所必需的 / initializecomponent(); this.username=username; usersort=usersort; / / todo: 在initializecomponent 调用后添加任何构造函数代码 / 其中,initializecomponent()函数是系统根据对控件的所有添加、设置工作而自动 产生的幕后代码。通过构造函数把用户名和用户类型两个参数传递给 mainform 类中的变 量 username 和 usersort。 为了实现把刚刚在登录系统注册过的用户名显示在主控制窗体,并根据用户类型来 设置“用户信息”按钮的可用性,并添加程序清单所示的代码。 private void mainform_load(object sender, system.eventargs e) this.text=“图书馆管理系统“+username; if(this.usersort=“system“) this.btnuser.enabled=true; - 22 - else this.btnuser.enabled=false; 上述代码通过把 username 赋值给窗体的 text 属性来达到在窗体标题中显示用户名 的效果,并根据用户类型来设置 btnuser 按钮的 enable 属性来达到控制用户权限的目的。 主控制界面实现的最主要的功能是调用各个功能模块的界面。例如,调用图书信息 维护界面,就是通过按钮 btnbook 添加一下所示的代码而实现的。 private void btnbook_click(object sender, system.eventargs e) form bookform=new book(); bookform.showdialog(); 在上端代码中通过创建一个图书信息维护窗体的实例 bookform,并通过 showdialog 的方 法来显示此实例。需要指出的是,在一个窗体中显示另外一个窗体有两个方法 show()和 showdialog()。其中 show()方法调用称为非模式对户框,焦点可以不再新显示的窗体上, 而 showdialog()方法显示的窗体称为模式对话框,焦点必须停留在新显示的窗体上。此 系统为了每次用户只能对一个界面进行操作,所以采用 showdialog()来显示窗体。 数据维护功能就是包括对数据库中某个数据表的增加、删除、修改和查询功能。 在开始编写代码之前,向 book 窗体中添加 sqlconnection1 数据库连接组件,并设置 connectionstring 属性来连接数据库 bookmanagement。添加数据适配器组件 sqldataadapter1,并使用数据适配器配置向导对其进行配置。首先,选择刚创建的链接 并选择 book 数据表的所有列,然后用数据适配器 sqldataadapter1 生成数据集 datasetbook 的实例 objdatasetbook,双击打开 datasetbook.xsd 文件可以看到设计完 毕的数据库。 当 book 窗体加载的时候,执行的是 book_load()方法,其程序参考如下程序 private void book_load(object sender, system.eventargs e) this.loaddataset(); this.datasetpostionchange(); - 23 - this.buttonpositonchange(); this.textenablecontrol(false); this.buttonenablecontrol(false); 从上述代码中可以看出,在 book 窗体加载时执行了一系列的函数。下面就一一分析 这些函数的代码及其功能。 首先系统体通过 loaddataset()函数把数据表 book 加载到数据集,并通过数据集绑 定控件在界面上进行显示,其代码参见程序清单 private void loaddataset() datasetbook objdatasettemp=new datasetbook(); try this.filldataset(objdatasettemp); catch (system.exception e) / 在此处添加错误处理代码。 this.errorhandle(e); try this.objdatasetbook.clear(); this.objdatasetbook.merge(objdatasettemp); catch(system.exception e) / 在此处添加错误处理代码。 this.errorhandle(e); loaddataset()函数先生成一个datasetbook的临时数据集objdatasettemp,并通 过这个临时数据集来保存filldataset()函数返回的记录,这个函数稍后会予以介绍。 在这里使用临时数据集是因为填充现有的数据集要重新进行数据绑定。上一段程序代码 - 24 - 出现了try和catch块,这两个块就是在c#中处理异常的程序块。首先程序可能在try块中 引发异常,然后在catch块中截获异常并加以处理,以避免系统出错而导致死机。函数 errorhandle()是错误处理函数,也将在稍后予以介绍。下面来分析filldataset() 函数的代码和功能,请参见程序清单 private void filldataset(datasetbook dataset) dataset.enforceconstraints=false; try this.sqlconnection1.open(); this.sqldataadapter1.fill(dataset); catch(system.exception e) this.errorhandle(e); finally dataset.enforceconstraints=true; this.sqlconnection1.close(); 这个函数功能是打开数据连接,同时通过数据适配器来填充数据集。在代码中要注 意异常的处理。在上述的两段代码中都有一个errorhandle()函数,下面就来分析这个 函数的代码,参见程序清单 private void filldataset(datasetbook dataset) dataset.enforceconstraints=false; try this.sqlconnection1.open(); this.sqldataadapter1.fill(dataset); catch(system.exception e) - 25 - this.errorhandle(e); finally dataset.enforceconstraints=true; this.sqlconnection1.close(); 这个函数功能是打开数据连接,同时通过数据适配器来填充数据集。在代码中要注 意异常的处理。在上述的两段代码中都有一个errorhandle()函数,下面就来分析这个 函数的代码,参见程序清单 public void errorhandle(system.exception e) messagebox.show(e.tostring(); 从程序清单中可见,这个函数通过传入的异常参数,利用messagebox来显示异常信 息。 book窗口加载时处理的第二个函数是datapositonchange()函数。这个函数的作用 是通过label控件lbldataposition来显示当前记录在总记录中的位置,其代码实现请参 加程序清单 private void datasetpostionchange() this.lbldatasetposition.text=(this.bindingcontextthis.objdatasetboo k,“book“.position+1)+“的“+ (this.bindingcontextthis.objdatasetbook,“book“.count); 需要理解的是,bindingcontextthis.objdatasetbook,”book”.position是次记 录在总记录位置,position从0开始,bingdingcontextthis.objdatasetbook,”book” .count是记录的总条数。 book窗口加载时处理的第三个函数是buttonpositionchange()函数。这个函数的 作用是在当前数据记录在总记录中的位置不同时,驱动数据记录跳转的4个按钮变为不同 的状态。例如,当记录是记录集中的第一条记录时,跳转到上一条记录和跳转到异地调 记录的按钮则应当无效,反之亦然。代码实现请参见程序清单。 - 26 - private void buttonpositonchange() this.btnprevious.enabled=true; this.btnnext.enabled=true; this.btnfirst.enabled=true; this.btnlast.enabled=true; if(this.bindingcontextthis.objdatasetbook,“book“.position=0) this.btnfirst.enabled=false; this.btnprevious.enabled=false; if(this.bindingcontextthis.objdatasetbook,“book“.position=this.bindingc ontextthis.objdatasetbook,“book“.count-1) this.btnnext.enabled=false; this.btnlast.enabled=false; book窗口加载时处理的第4个函数是textenablecontrol()函数。这个函数的作用 是在各个textbox中显示记录中的信息时,不让用户有修改的权限,使各个textbox的 enable属性处于false状态,而当用户单击“修改”按钮要对当前的数据记录进行修改时, 而是各个textbox的enable属性处于true状态。 book窗口加载时处理的第5个函数是buttonenablecontrol()函数的作用是在“添 加”、“删除”、“修改”按钮没有被激活时,使“取消”按钮和“确定”按钮都处于 不可用状态,而当“添加”、“删除”、“修改”按钮激活后,“取消”按钮和“确定” 按钮就会处于可用状态。代码实现参见程序清单。 private void buttonenablecontrol(bool valid) if(valid) this.btncancel.enabled=true; this.btnapply.enabled=true; else - 27 - this.btncancel.enabled=false; this.btnapply.enabled=false; 在数据维护窗口中,数据记录的跳转依靠,btnfirst,btnprevious,btnnext和 btnlast这4个按钮。随着数据的跳转,会涉及到buttonpositnchange()和dataset postionchange()函数。4个按钮的处理方法请参见程序清单。 private void btnfirst_click(object sender, system.eventargs e) this.bindingcontextthis.objdatasetbook,“book“.position=0; this.buttonpositonchange(); this.datasetpostionchange(); private void btnprevious_click(object sender, system.eventargs e) this.bindingcontextthis.objdatasetbook,“book“.position-=1; this.buttonpositonchange(); this.datasetpostionchange(); private void btnnext_click(object sender, system.eventargs e) this.bindingcontextthis.objdatasetbook,“book“.position+=1; this.buttonpositonchange(); this.datasetpostionchange(); private void btnlast_click(object sender, system.eventargs e) this.bindingcontextthis.objdatasetbook,“book“.position=this.b indingcontextthis.objdatasetbook,“book“.count-1; this.buttonpositonchange(); this.datasetpostionchange(); - 28 - 上面介绍的代码段都还属于数据显示功能,下面介绍记录编辑功能的代码,包括对 当前记录的增加、修改和删除。当单击“添加”按钮时,利用addnew()方法在数据集 中添加一个新的记录,其代码请参见程序清单。 private void btnadd_click(object sender, system.eventargs e) try this.bindingcontextthis.objdatasetbook,“book“.addnew

温馨提示

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

评论

0/150

提交评论