图书管理系统软件工程毕业课程设计
《软件工程》图书管理系统课程设计

图书管理系统课程设计报告1.设计目的随着计算机技术的不断开展,计算机作为知识经济时代的产物,已被广泛应用于社会各个行业和领域。
目前,我国的科技水平高速开展,计算机作为今天使用最广的现代化工具已深入到各个领域,并且正在成为未来社会——信息社会的重要支柱。
在这样的大背景下,现代图书馆的管理方式,资源建立等方面都发生了重大变化,这种变化表现在图书馆工作,管理和效劳平台发生的变化,图书馆不再是传统的手工操作,人工管理,而是全面实行计算机管理。
图书馆的正常运营中总是面对大量的读者信息,图书信息以及两者相互作用产生的借书信息,因此要对读者资源,图书资源,借书信息进展管理。
本系统的开发就是在于提高图书管理的工作效率,加强图书馆的管理,全面实行计算机管理。
2.可行性研究报告在软件的开发过程中,这一步是十分必要的。
如果在定义阶段及早发现将来可能在开发过程中的问题,及早做出决断,可以防止大量的人力,财力和时间上的浪费。
1.技术可行性:本组开发成员都具有一定的电脑知识,学习过多种程序开发语言。
特别是在工程确定后对C#和SQL Server数据库的强化学习,使本系统成功开发成为可能。
2.经济可行性:本系统有其生存空间,成功后有其市场。
并且本小组开发人员基于一种爱好去研究他的,我们有自己的电脑,可以说本钱开支极其有限。
3.现阶段各种各样的图书馆越来越多,图书馆的书也越来越多,图书的管理工作也越来越复杂。
本系统就是为了减轻图书管理人员的工作而设计的。
4.法律可行性:本系统为我五人开发小组独立完成,不关他人,开发成功后其所有权归我们五人所有,用户购置后其使用权一同买断,我们将提供技术支持。
5.基于水平和时间有限,我们的系统还不是十分完善。
可扩展的地方很多,现列举如:建立图书预约机制建立读者反应机制建立过期催还机制建立条码扫描机制等。
以现有的人力和时间来衡量,我们只有放弃。
经过以上可行性论证,本系统可以按任务书要求开发。
3.工程开发方案书4.系统需求规格说明书该过程是个不断认识不断细化的过程。
软件工程课程设计-图书管理系统

图书管理系统1、系统简介:图书管理系统是属于管理系统的一种,它一般包括登录、管理员窗体、一般用户窗体(学生与老师)、图书分类管理、书籍管理、借阅书籍、归还书籍、浏览查阅书籍等功能。
学校图书馆每年对新购买的图书进行统计、编号、注册、记录等一系列操作及维护日常图书馆正常运作即借阅图书、归还图书、查阅图书等。
1)对新购买的图书添加到数据库中,同时详细记录书籍信息;2)对一般用户:学生、老师来说,可以随时对所有图书进行查询、实现借阅图书功能和查看借阅图书图书;3)管理员可以实现图书的管理功能,包括添加书籍、修改书籍、和删除书籍等功能。
4)实现书籍借阅人查询即可以查看任意一本书的所有查阅人的功能。
5)整个系统实现分类管理功能包括添加分类、修改分类、删除分类等功能。
2、技术要求及限定条件1)所有图书管理工作均由相关负责人负责完成,其他人不得擅自使用;2)每本图书在入库时编号均有系统自动生成,形成ID号;3)本系统至少拥有数据存储表有:书籍分类表、用户分组表、用户表、书籍表、书籍与书籍分类对照表一、图书管理系统的可行性研究1、分析系统目的图书管理系统的目的是对图书设备登记入库、借还信息及查阅情况管理,以便于图书馆日常管理与图书利用。
2、分析当前系统状况在进行系统信息化之前的图书管理工作,完全要靠人工进行,图书信息管理用人工登记纸质表格记录在案,信息的查找需要人工翻阅,图书管理完全要手工进行。
3、当前系统的业务流程●图书管理人员配置:总负责人一人、按图书类别负责人有20人、图书管理员若干●图书登记造册入库管理:人工登记、纸纸质报表;●图书借阅管理:人工登记、纸质报表;●图书归还管理:人工登记、纸质报表;●人员管理:会议、人工登记、纸质报表;4、分析当前系统的不足当前的图书管理系统是完全依靠人工进行管理的系统这样的系统在图书统计购入、查询、借阅、归还等方面都极为不方便,不仅速度不快而且容易出差错,效率低下,在图书馆图书上百万多的情况下尤为明显。
图书管理系统软件工程课程设计

重庆师范大学课程名称:软件工程试题题目:图书管理系统******学号:***********专业:计算机科学与技术学院:计算机与信息科学学院时间:2013年6 月 1日目录一、开发背景与目标............................................................................................... - 2 -1.1开发背景...............................................................................- 6- 开发目标 (6)二、需求分析说明书 (6)2.1系统介绍 (6)2.2系统面向的用户群体 (7)2.3系统的功能性需求 (7)2.4系统的非功能性需求 (8)2.4.1用户界面需求 (9)2.4.2软硬件环境需求 (9)2.4.3软件质量需求 (9)三、可行性分析报告 (9)3.1经济可行性分析 (9)3.2操作可行性分析 (9)3.3技术可行性分析 (10)3.4时间、设备可能性 (10)3.5系统工作量 (11)3.6文档要求 (11)四、开发环境与项目规划 (11)4.1开发环境 (11)4.2项目规划与管理 (11)4.2.1开发人员安排 (12)4.2.2开发进度安排 (12)五、结构化分析与设计 (13)5.1分析与设计方法: (13)5.2组织结构图 (13)5.3数据流程图 (15)5.4数据字典 (18)六、面向对象分析与设计.......................................................................................... -206.1分析与设计方法......................................................................-20 6.2用况模型 (20)6.3活动图………………………………………………………………….…...-21-.6.4顺序图 (22)七、数据库分析与设计 (23)7.1数据库环境说明 (23)7.2数据库命名标准与规范 (24)7.3数据库逻辑设计 (24)7.3.1逻辑设计步骤 (24)7.3.2逻辑设计图 (24)7.4.1数据库物理设计步骤 (26)7.4.2表、视图汇总 (30)7.4.3各表、视图设计详解 (30)八、人机界面设计 (32)8.1界面设计原则 (32)8.2主界面设计 (32)8.3子界面设计 (32)九、项目系统实现 (35)9.1 实现环境与技术 (35)9.2 核心模块实现技术代码 (36)十、软件测试分析报告 (61)10.1测试范围与主要内容 (61)10.2测试方法 (61)10.3测试过程 (61)10.3.1系统测试 (61)10.3.2单元系统 (63)10.3.3集成测试 (64)十一、软件使用说明书 (64)11.1软件概述 (64)11.2使用说明 (64)11.2.2注册 (66)11.2.3 系统简介 (66)十二、系统开发评价 (67)12.1.功能方面…………………………………………………………..….-6712.2.性能方便 (67)12.3.课程知识运用方面 (67)参考文献 (67)一、开发背景与目标1.1 开发背景随着计算机技术的不断发展,计算机已经深入到社会生活的各个角落,在知识爆炸的今天,各种各样的图书也越来越多,各图书馆的规模也在不断壮大,其管理也日臻完善,面对着庞大的信息量,依靠传统的方式对图书馆进行管理将耗费很大的人力物力,而且也不再能满足当今人们对图书管理的需要。
软件工程课程设计之图书馆管理系统

团队合作的协同性
在开发过程中,团队成员之间的有效沟通和协作至关重要,可以 避免工作重复和冲突,提高开发效率。
测试与质量保证
在项目开发过程中,注重测试和质量保证,可以及时发现和修复 问题,确保项目的稳定性和可用性。
实现了图书馆管理 系统的基本功能
包括图书借阅、归还、查询、预 约等核心功能,满足了图书馆日 常管理的需求。
02
提高了图书馆管理 效率
通过自动化管理,减少了人工操 作,提高了工作效率,降低了出 错率。
03
提供了友好的用户 界面
系统界面简洁明了,易于使用, 方便用户进行操作。
经验教训分享
需求分析的重要性
查询结果测试
针对不同查询条件,系统应能正确返回符合条件的图书列表,包括图书的基本信息、借 阅状态等。同时,应测试系统在大量数据下的查询性能和准确性。
异常处理测试
针对可能出现的异常情况,如查询条件错误、数据库连接失败等,系统应能给出相应的 提示或处理措施。
用户管理功能展示与测试
用户注册与登录
01
新用户可以在系统上注册账户并登录,老用户可以输入用户名
归还规则测试
系统应能正确判断用户是否符合归还条件,如图书是否超 期、是否有损坏等。同时,应测试系统在并发归还请求下 的性能和稳定性。
异常处理测试
针对可能出现的异常情况,如图书信息不符、用户未登录 等,系统应能给出相应的提示或处理措施。
图书查询功能展示与测试
查询方式展示
系统提供多种查询方式,如按书名、作者、出版社等查询图书信息。用户可以根据需要 选择合适的查询方式,快速找到所需图书。
软件工程图书管理系统课程设计

培养学生实践能力
通过实际动手开发一个图书管理系统,培养学生的 实践能力,包括分析问题、解决问题的能力以及团 队协作的能力。
促进图书馆管理现代化
开发的图书管理系统可以应用于实际图书馆 管理中,提高图书馆的管理效率和服务水平 ,促进图书馆管理的现代化。
适用范围及对象
适用范围
本课程设计适用于高校计算机相关专业的本科生或研究生,也可作为其他专业 学生选修课程。
提高编程能力和算法设计 能力
编程能力和算法设计能力是软 件工程师的核心能力之一,我 将通过不断练习和实践,提高 自己的编程能力和算法设计能 力。
关注新技术和新趋势
随着技术的不断发展,新的技 术和趋势不断涌现,我将保持 关注新技术和新趋势的热情, 不断学习和掌握新的技术和工 具,以适应未来发展的需要。
图书检索与查询
用户可以通过关键词、书名、作者等 方式检索和查询图书信息,系统需要 提供快速、准确的检索和查询功能。
03
图书预约与预留
用户可以通过系统预约需要借阅的图书,或 者预留即将到达的图书。
05
02
图书信息录入与存储
系统需要支持图书信息的录入,包括书名、 作者、出版社、出版日期、ISBN号等,并将 这些信息存储在数据库中。
视频教程
录制详细的操作教程视频,介绍 系统的安装、配置和使用方法, 方便用户自主学习和了解系统。
评价标准制定及实施过程
功能性
评价系统是否满足图书管理的基本需 求,如图书的增删改查、借阅、归还 等功能。
易用性
考察系统的用户界面是否友好,操作 是否简便,用户能否快速上手。
稳定性
测试系统在不同环境和场景下的运行 稳定性,以及数据处理的准确性。
系统需要确保数据的一致性和完整性,防止因并 发操作或系统故障导致的数据丢失或损坏。
图书管理系统软件工程课程设计

《软件工程—原理、方法和使用》课程设计报告书项目名称:图书管理系统指导老师:学生姓名:专业:学号:日期:目录一、项目计划 0(一)项目内容 0(二)开发环境 0(三)进度安排 (1)二、结构化分析设计 (1)(一)数据流图 (1)(二)数据字典 (2)(三)加工说明 (4)(四)结构图 (5)(五)流程图 (6)三、面向对象分析设计 (9)(一)用例图 (9)(二)对象行为模型 (10)(三)系统包图 (11)(四)类图 (11)四、系统实现 (13)(一)程序代码 (13)(二)功能演示 (28)五、测试 (31)六、软件发布 (36)七、总结体会 (36)八、参考文献 (37)一、项目计划(一)项目内容在计算机日渐走进普通家庭的今天,对于个人来讲,采用一套行之有效的图书管理系统来管理自己的图书是非常方便的;对图书管理部门来讲,以前单一的手工检索已不能满足人们的要求,伴随着工业化、信息化的高速发展,图书的数目越来越庞大,图书种类也是越来越多样化;因而往往是投入了大量的人力、物力和财力却得不到高效的管理效率。
为了便于图书资料的管理、满足人们的需求,不必浪费大量的时间耗费在图书检索上,这就需要有一个有效的图书管理软件来帮助人们管理,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、便捷和智能化管理,达到提高图书管理效率的目的。
基于这个问题,研发了这个图书管理系统。
该系统主要实现功能:管理员登录及退出、读者信息查询、图书的增加、删除、更新和查询。
(二)开发环境开发环境:Win 7 旗舰版。
开发工具:SQL Server 2005 JCreator1.7作图软件:Rational Rose Enterprise Edition 2003(三)进度安排该软件使用JCreater1.7和SQL Server 2005进行编程,历时大概一周,最终完成了这个小型图书管理系统。
由于时间仓促,该小型图书管理系统并不完善。
软件工程导论课程设计(图书馆管理系统)
图书馆管理系统1.系统需求分析:1.1主要功能(1)能够输入图书的综合情况和进行新书入库、现有图书信息修改以及删除;(2)能够实现对读者档案的查询、密码的修改以及编辑管理;(3)能够进行借阅、还书功能;1.2 系统性能要求:(1)系统安全、可靠;(2)功能齐全;(3)操作方便、界面友好;(4)易于维护和扩充。
1.3 针对管理员需实现的基本功能:1.3.1 查询:(1)书籍信息查询:管理员可以根据书籍名,书籍分类,书籍作者、编号、出版社等信息来检索查询图书馆的书籍,便于管理。
(2)读者信息查询:根据相应的读者资料进行所需查询。
‘读者编号’、‘读者姓名’、‘读者种类’。
1.3.2 读者信息维护:(1)修改读者信息:管理员可以录入、修改、删除读者信息。
(2)修改密码:管理员可登录平台对遗忘密码的读者的密码进行修改。
1.3.3 图书信息的维护:包括新书的入库,以及现有书籍资料的修改和删除,方便读者的查询。
实体—联系图2.总体设计2.1系统功能模块划分:图书管理系统需要实现的功能主要有四大模块,分别为日常工作管理、基本资料维护管理、查询管理和系统管理。
其中日常工作管理和基本资料维护是整个系统的核心。
料的修改和删除2.1.3查询管理:包括图书资料查询、读者资料查询。
(1)图书资料查询:根据相应的图书信息对所有书籍进行所需查询。
此查询包括:‘图书分类’、‘图书编号’、‘图书名称’、‘作者’、‘出版社’。
(2)读者资料查询:根据相应的读者资料进行所需查询。
‘读者编号’、‘读者姓名’、‘读者种类’。
2.1.4系统管理:系统的登录、标准数据管理(1)系统的登录:管理员的登录。
(2)标准数据管理:用于常用数据的系统维护。
2.2各模块结构图2.2.1日常工作管理模块2.2.2基本资料维护管理模块2.2.3查询管理模块2.2.4系统登陆模块。
图书管理系统-软件工程导论课程设计
图书管理系统-软件工程导论课程设计图书管理系统第一章问题定义 (1)1问题描述 (1)2图书馆系统概述 (1)第二章可行性研究 (2)1.现有系统分析 (2)2.技术可行性 (2)3.经济可行性 (2)第三章系统需求报告 (3)1.引言 (3)2.需求叙述 (4)3.假设和依赖 (5)4功能需求 (5)5非功能需求 (6)6数据描述 (7)7外部接口需求 (12)第四章概要设计说明报告…………171引言 (13)2系统概述 (13)3总体设计 (14)4模块设计 (14)5接口设计 (16)6 数据结构设计 (17)7系统维护设计 (21)第五章详细设计说明报告…………211引言 (21)2背景 (22)3定义………………………………………224参考资料…………………………………225系统的结构…………………………………236界面设计要求…………………………………247模块说明书…………………………………24第六章测试计划 (33)1测试项目名称及测试内容………………………………332测试用例…………………………………353测试资料…………………………………36第七章课程设计心得体会 (37)评语 (38)第一章问题定义1.问题描述XX学校图书馆现为手工管理,效率低、易出错、手续繁琐,而且耗费大量的人力。
图书馆希望设计一个图书馆系统,管理读者的登记、图书的购入、借出、归还以及注销等。
管理人员还可以查询某位读者、某本图书的当前借阅情况、历史借阅记录,并可按照读者角度、图书角度、借阅角度分别进行统计,给出统计报表,以全面掌握图书的流通情况。
2.图书管理系统概述图书馆现为手工管理,效率低、易出错、手续繁琐,而且耗费大量的人力。
为方便起见应开发一个图书管理系统。
基于WEB的图书管理系统是对图书馆的网上管理,提高工作的效率。
目标系统在至少应提供一下功能:系统管理员能够实现对系统管理:包括图书,借阅信息等的插入、修改、注销等功能,其中涉及基于以上操作的管理员操作,借阅者操作两个方面。
图书管理系统(软件工程课程设计)
图书管理系统系别:计算机科学与技术系网络工程方向班级:xxxx班分组:第9组成员:xxxxx目录一、问题定义 (2)二、可行性研究 (2)1.系统建设目标 (2)2.可行性分析 (2)三、系统的需求分析 (3)1.图书管理系统的需求陈述 (3)2.图书管理系统的DFD (4)3.图书管理系统的E—R图 (4)四、系统的概要设计 (7)1.软件体系结构图 (7)2.数据库设计 (7)五、系统的详细设计及其实现 (9)1.模块功能介绍 (9)2.课程设计总结 (9)一、问题定义图书馆在正常运营中总是面对大量的读者信息、书籍信息以及两者相互作用产生的借书信息、还书信息.因此需要对读者资源、书籍资源、借书信息、还书信息进行管理。
及时了解各个环节的信息变更,有利于提高管理效率。
管理图书采用传统的管理方法:图书管理员在办理借书登记、查询读者借书记录时,管理人员必须在借书记录上一个个去查找,而要找到借书记录并删除该记录是件很麻烦的事情每当新书入库时,图书管理员既要填写新书入库卡片,又要填写新书入库账目,不仅工作量大,而且,在新书入库后要经历较长时间方能借出。
所以,为提高图书馆管理的效率,减少图书管理员的工作负担,有必要开发一个小型图书管理软件来对图书实施有效管理。
现代图书馆的图书管理早就进入信息化阶段了,但是从软件市场购买的一些信息管理系统软件通常是通用版的,不可能适应所以图书馆管理中的情况,功能不能扩充,这样不仅工作效率低下,浪费人力,财力,而且在一些中间环节造成信息丢失,出错。
所以建立图书管理系统,能够大大提高图书馆图书借阅的效率,还可以推进社会文化生活的进步。
二、可行性研究1.系统建设目标(1)要解决的问题:(以某学校为参照)随着办公自动化水平的不断提高,现在学校管理学生信息也逐步从手工转到计算机自动化信息处理阶段.设计一个功能完整、操作简便、界面友好的学生信息管理系统已经是势在必行的了.(2)系统开发的目的:提高图书管理工作的效率,减少相关人员的工作量,使学校的图书管理工作真正做到科学、合理的规划,系统、高效的实施。
软件工程课程设计图书管理系统
软件工程项目报告----图书管理系统#班级:项目经理:-项目组成员:目录第一章绪论……………………………………………………………………………………………………………………项目背景…………………………………………………………………………………………………………….编写目的…………………………………………………………………………………………………………….第二章需求分析…………………………………………………………………………………………………………..-系统功能需求分析…………………………………………………………………………………………….主要参与者………………………………………………………………………………………………………..用例图………………………………………………………………………………………………………………..系统用例一览表…………………………………………………………………………………………………用例规约……………………………………………………………………………………………………………时序图………………………………………………………………………………………………………………..第三章系统设计……………………………………………………………………………………………………………系统实体总类图以及介绍…………………………………………………………………………………;相关数据库的设计……………………………………………………………………………………………E-R图……………………………………………………………………………………………………………数据库的设计……………………………………………………………………………………………….主界面设计………………………………………………………………………………………………………..登录/注册界面设计……………………………………………………………………………………...管理员操作页面…………………………………………………………………………………………读者用户管理界面………………………………………………………………………………………代码设计…………………………………………………………………………………………………………第四章结束语......................................................................................................................第一章绪论项目背景随着时代的发展,计算机技术越来越深入各行各业,为广大的用户提供了更为周到和便捷的服务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(此文档为word格式,下载后您可任意编辑修改!)《软件工程—原理、方法与应用》课程设计报告书项目名称:图书管理系统指导老师:学生姓名:专业:学号:日期:目录一、项目计划 (1)(一)项目内容 (1)(二)开发环境 (1)(三)进度安排 (2)二、结构化分析设计 (2)(一)数据流图 (2)(二)数据字典 (3)(三)加工说明 (5)(四)结构图 (5)(五)流程图 (5)三、面向对象分析设计 (6)(一)用例图 (6)(二)对象行为模型 (7)(三)系统包图 (8)(四)类图 (8)四、系统实现 (10)(一)程序代码 (10)(二)功能演示 (25)五、测试 (28)六、软件发布 (33)七、总结体会 (34)八、参考文献 (34)一、项目计划(一)项目内容在计算机日渐走进普通家庭的今天,对于个人来讲,采用一套行之有效的图书管理系统来管理自己的图书是非常方便的;对图书管理部门来讲,以前单一的手工检索已不能满足人们的要求,伴随着工业化、信息化的高速发展,图书的数目越来越庞大,图书种类也是越来越多样化;因而往往是投入了大量的人力、物力和财力却得不到高效的管理效率。
为了便于图书资料的管理、满足人们的需求,不必浪费大量的时间耗费在图书检索上,这就需要有一个有效的图书管理软件来帮助人们管理,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、便捷和智能化管理,达到提高图书管理效率的目的。
基于这个问题,研发了这个图书管理系统。
该系统主要实现功能:管理员登录及退出、读者信息查询、图书的增加、删除、更新和查询。
(二)开发环境开发环境:Win 7 旗舰版。
开发工具:SQL Server 2005 JCreator1.7作图软件:Rational Rose Enterprise Edition 2003(三)进度安排该软件应用JCreater1.7和SQL Server 2005进行编程,历时大概一周,最终完成了这个小型图书管理系统。
由于时间仓促,该小型图书管理系统并不完善。
我用了两天时间查找相关资料,两天时间编写代码和连接数据库。
其余三天开始应用Rational Rose Enterprise Edition 2003画数据流图、结构图、流程图、用例图和包图类图。
整个过程系我一人完成。
二、结构化分析设计(一)数据流图书籍信息读者信息读者信息查询信息图2.1-1图书管理系统的顶层DFDbook表录入信息查询请求更新信息查询结果reader表图2.1-2图书管理系统的第二层DFDbook表 reader表图2.1-3图书管理系统的第三层DFD查询结果查询请求无效请求有效请求book表图2.1-4图书管理系统的第三层DFD (二)数据字典数据流数据流编号D01数据流名称查询读者信息数据流组成学号数据流编号D02数据流名称查询读者信息结果数据流组成学号+姓名+性别+年龄+密码+系别数据流编号D03数据流名称添加书籍信息数据流组成索书号+书名+数量+作者+出版社数据流编号D04数据流名称删除书籍信息数据流组成索书号数据流编号D05数据流名称更新书籍信息数据流组成索书号+书名+数量+作者+出版社数据流编号D06数据流名称查询书籍信息数据流组成索书号数据流编号D07数据流名称查询书籍信息结果数据流组成索书号+书名+数量+作者+出版社数据项数据项名学号取值数据项名姓名取值4-6字符数据项名性别取值2字符数据项名年龄取值正整数数据项名密码取值6字符数据项名系别取值0—20字符数据项名索书号取值数据项名书名取值0-20字符数据项名数量取值正整数数据项名作者取值0-20字符数据项名出版社取值0-20字符(三)加工说明审查用户查询书籍信息请求2.3图-加工说明(四)结构图图2.4-1—图书管理系统上层框架图2.4-2-图书管理子系统初始SC图图2.4-3-图书管理子系统初始SC图图2.4-4-图书管理系统SC图的上层框架(五)流程图图2.5-1—图书管理系统登录流程图图2.5-2—读者信息查询流程图图2.5-3—添加书籍流程图图2.5-4—删除书籍流程图图2.5-5—更新书籍流程图图2.5-6—查询书籍流程图三、面向对象分析设计(一)用例图用例图在需求分析阶段有重要作用,它是作为参与者的外部用户所能观察到的系统功能模型图。
整个开发过程都是围绕需求阶段用例进行的。
首先需要确定参与者。
管理员在登录后对读者信息进行查询以及对书籍的添加、删除、更新和查询。
用户在登录后可以对书籍信息进行查询。
图书管理系统管理员-用户用例图(二)对象行为模型继续选择服务登录错误登录正确查询读者信息(三)系统包图数据库包:包含数据库中所有的数据信息用户包:包含要使用系统的用户及其属性管理员包:包含要使用系统的管理员及其属性接口包:表示系统和数据库的借口系统包:表示图书管理系统(四)类图类是面对对象系统组成的核心。
类是对一组相同属性、操作、关系和语义的对象的描述。
这些对象包括了对现实世界中的物理实体、商业事务、逻辑事务、应用事务和行为事务等,甚至也包括了纯粹概念性的事务,它们都是类的实例。
图3.4-1类图图3.4-2系统的类图四、系统实现(一)程序代码1.主窗口界面import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.TitledBorder;import java.awt.Font;import javax.swing.JMenu;public class MainWindow extends JFrame implements ActionListener { private static final long serialVersionUID = 1L;static String loginName;static String loginNo;JLabel mlabel;JPanel jp=new JPanel();建立菜单栏JMenuBar menu=new JMenuBar();JMenu a=new JMenu();JMenu b=new JMenu();JMenu c=new JMenu();建立系统管理菜单组JMenuItem aa=new JMenuItem();JMenuItem ab=new JMenuItem();JMenuItem ac=new JMenuItem();建立读者管理菜单组JMenuItem bb=new JMenuItem();建立书籍管理菜单组JMenuItem ca=new JMenuItem();JMenuItem cb=new JMenuItem();JMenuItem cc=new JMenuItem();JMenuItem cd=new JMenuItem();public MainWindow(){super("图书管理系统");addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});Container d=getContentPane();this.setSize();this.setTitle("图书管理系统");d.add(menu);menu.add(a);menu.add(b);menu.add(c);添加菜单组a.setText("系统管理");a.setFont(new Font("Dialog",0,12));b.setText("读者管理");b.setFont(new Font("Dialog",0,12));c.setText("书籍管理");c.setFont(new Font("Dialog",0,12)); 生成系统管理菜单组的选项aa.setText("登录");aa.setFont(new Font("Dialog",0,12)); ab.setText("退出登录");ab.setFont(new Font("Dialog",0,12)); ac.setText("退出系统");ac.setFont(new Font("Dialog",0,12)); 生成读者管理菜单组的选项bb.setText("查询读者信息");bb.setFont(new Font("Dialog",0,12)); 生成书籍管理菜单组的选项ca.setText("添加书籍");ca.setFont(new Font("Dialog",0,12)); cb.setText("删除书籍");cb.setFont(new Font("Dialog",0,12)); cc.setText("查询读书信息");cc.setFont(new Font("Dialog",0,12)); cd.setText("更新书籍");cd.setFont(new Font("Dialog",0,12)); 添加系统管理菜单组a.add(aa);a.add(ab);a.add(ac);添加读者管理菜单组b.add(bb);添加书籍管理菜单组c.add(ca);c.add(cb);c.add(cc);c.add(cd);添加事件侦听aa.addActionListener(this);ab.addActionListener(this);ac.addActionListener(this);bb.addActionListener(this);ca.addActionListener(this);cb.addActionListener(this);cc.addActionListener(this);cd.addActionListener(this);setJMenuBar(menu);}public void actionPerformed(ActionEvent e){ if(e.getSource()==aa){UserLogin login=new UserLogin(this);login.setVisible(true);}if(e.getSource()==ab){setVisible(false);MainWindow mainFrame=new MainWindow();mainFrame.setLocation();mainFrame.setVisible(true);}if(e.getSource()==ac){System.exit(0);}if(e.getSource()==cc){FindBook findbook=new FindBook();findbook.setVisible(true);}if(e.getSource()==bb){FindReader findreader=new FindReader(); findreader.setVisible(true);}if(e.getSource()==ca){AddBook addBook=new AddBook();addBook.setVisible(true);}if(e.getSource()==cb){DeleteBook delBook=new DeleteBook();delBook.setVisible(true);}if(e.getSource()==cd){UpdateBook updBook=new UpdateBook();updBook.setVisible(true);}}public void setenabled(int right){if(right==1){b.setEnabled(true);c.setEnabled(true);}if(right==2){b.setEnabled(true);c.setEnabled(true);}}public static void main (String[] args){MainWindow mainFrame=new MainWindow();mainFrame.setLocation();mainFrame.setVisible(true);}}2.用户登录界面import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;import java.io.*;public class UserLogin extends JFrame implements ActionListener {private static final long serialVersionUID = 1L;String name;DataBaseManger db=new DataBaseManger();MainWindow mainFrame;JFrame f=null;JPanel panel1,panel2;JLabel UserLabel,PasswordLabel;JTextField UserTextField;JPasswordField PasswordTextField;JButton YesBtn,CancelBtn;Container c;ResultSet rs;public UserLogin(MainWindow mainFrame){super("用户登录");this.mainFrame=mainFrame;UserLabel=new JLabel("用户名",JLabel.CENTER);PasswordLabel=new JLabel("密码",JLabel.CENTER);UserTextField=new JTextField(10);PasswordTextField=new JPasswordField(10);YesBtn=new JButton("确定");CancelBtn=new JButton("取消");YesBtn.addActionListener(this);CancelBtn.addActionListener(this);panel1=new JPanel();panel1.setLayout(new GridLayout(2,2));panel2=new JPanel();c=getContentPane();c.setLayout(new BorderLayout());panel1.add(UserLabel);panel1.add(UserTextField);panel1.add(PasswordLabel);panel1.add(PasswordTextField);c.add(panel1,BorderLayout.CENTER);panel2.add(YesBtn);panel2.add(CancelBtn);c.add(panel2,BorderLayout.CENTER);setSize();JLabel JL=new JLabel();c.add(JL,"North");c.add(panel1,"Center");c.add("South",panel2);panel1.setBackground(new Color());setLocation();}public void actionPerformed(ActionEvent e){if(e.getSource()==CancelBtn){this.dispose();}else{char[] password=PasswordTextField.getPassword();String passwordSTR=new String(password);String strSQL;strSQL="select * from users where uname='"+UserTextField.getText().trim()+"'and upassword='"+passwordSTR+"'";rs=db.getResult(strSQL);boolean isExist=false;try{ rs.next();mainFrame.loginNo=rs.getString(1);name=rs.getString(1);mainFrame.loginName=name;int right;right=rs.getInt(1);mainFrame.setenabled(right);if(name.length()!=0)isExist=true;}catch(Exception pe){ pe.printStackTrace(); }if(UserTextField.getText().trim().equals("")){JOptionPane.showMessageDialog(null,"用户名不可为空!");return;}if(passwordSTR.equals("")){JOptionPane.showMessageDialog(null,"密码不可为空!");return;}if(!isExist){ JOptionPane.showMessageDialog(null,"用户名不存在或者密码不正确!");} else{JOptionPane.showMessageDialog(null,"登录成功");this.dispose();}}}}3.读者信息查询import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.sql.*;import ng.String;public class FindReader extends JFrame implements ActionListener{ DataBaseManger db=new DataBaseManger();MainWindow mw=new MainWindow();ResultSet rs;JLabel select=new JLabel("请输入证件号");JTextField jtf=new JTextField(10);JPanel p1=new JPanel();JPanel p2=new JPanel();JPanel p3=new JPanel();JPanel p4=new JPanel();JLabel lb=new JLabel("读者信息");JButton findbt=new JButton("查询");JButton yesbt=new JButton("确定");JTextArea jta=new JTextArea(10,10);public FindReader(){ super("查询读者信息");Container c=getContentPane();p1.add(select);p1.add(jtf);p1.add(findbt);c.add(p1,BorderLayout.NORTH);p2.add(lb);p2.add(jta);c.add(p2,BorderLayout.CENTER);p4.add(yesbt);c.add(p4,BorderLayout.SOUTH);yesbt.addActionListener(this);findbt.addActionListener(this);setSize();setVisible(true);setLocation();}public void actionPerformed(ActionEvent e){if(e.getActionCommand()=="确定")this.dispose();if(e.getActionCommand()=="查询"){String sno=jtf.getText();String sqlstrR;if((mw.loginNo.trim().equals(sno))||(mw.loginName.trim().equals("admin"))){ sqlstrR="select * from reader where sno='"+sno+"'";rs=db.getResult(sqlstrR);try{ rs.next();jta.setText("");jta.append("学号为:"+rs.getString(1)+","+"姓名为:"+rs.getString(2)+","+"性别为:"+rs.getString(3)+"\n");jta.append("年龄为:"+rs.getString(4)+","+"密码为:"+rs.getString(5)+","+" 学院为:"+rs.getString(6)+"\n");String sqlstr="select * from lendbook where sno='"+sno+"'";rs=db.getResult(sqlstr);}catch(Exception pe){ pe.printStackTrace(); } }else{JOptionPane.showMessageDialog(null,"请输入正确的证件号!");}}}}4.增加图书信息import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.sql.*;public class AddBook extends JFrame implements ActionListener { MainWindow mw=new MainWindow();DataBaseManger db=new DataBaseManger();ResultSet rs;JPanel a,b,c,d,e,f;JLabel bname=new JLabel();JLabel bno=new JLabel();JLabel bnum=new JLabel();JLabel author=new JLabel();JLabel publisher=new JLabel();JTextField tname=new JTextField(20);JTextField tno=new JTextField(20);JTextField tnum=new JTextField(20);JTextField tauthor=new JTextField(20);JTextField tpublisher=new JTextField(20);JButton addbt=new JButton("添加");JButton yesbt=new JButton("确定");JPanel p3=new JPanel();public AddBook(){super("添加图书");a=new JPanel();b=new JPanel();c=new JPanel();d=new JPanel();e=new JPanel();f=new JPanel();bname.setText("书名:");bname.setFont(new Font("Dialog",0,12));bno.setText(" 索书号:");bno.setFont(new Font("Dialog",0,12));bnum.setText("数量:");bnum.setFont(new Font("Dialog",0,12));author.setText("作者:");author.setFont(new Font("Dialog",0,12));publisher.setText(" 出版社:");publisher.setFont(new Font("Dialog",0,12));a.add(bname);a.add(tname);b.add(bno);b.add(tno);c.add(bnum);c.add(tnum);d.add(author);d.add(tauthor);e.add(publisher);e.add(tpublisher);f.add(addbt);f.add(yesbt);add(a);add(b);add(c);add(d);add(e);add(f);setLayout(new GridLayout(8,1));addbt.addActionListener(this);yesbt.addActionListener(this);setSize();setLocation();}public void actionPerformed(ActionEvent e){String bname,bno,author,publisher;int bnum;if(e.getActionCommand()=="确定")this.dispose();if(e.getActionCommand()=="添加"){bname=tname.getText();bno=tno.getText();author=tauthor.getText();publisher=tpublisher.getText();bnum=Integer.parseInt(tnum.getText());String sqlstr1="select bno from book";rs=db.getResult(sqlstr1);try{while(rs.next()){if(rs.getString(1).trim().equals(bno)){JOptionPane.showMessageDialog(null,"此书号已存在,请重新输入索书号!");}else{break;}}}catch(Exception pe){pe.printStackTrace();}String sqlstr="insert into book (bno,bname,bnum,author,publisher) values ('"+bno+"','"+bname+"','"+bnum+"','"+author+"','"+publisher+"')";boolean result=db.updateSql(sqlstr);db.closeConnection();if(result){JOptionPane.showMessageDialog(null,"添加书籍成功!");}else{JOptionPane.showMessageDialog(null,"添加书籍失败!");}}}}5.删除图书信息import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.sql.*;public class DeleteBook extends JFrame implements ActionListener{ MainWindow mw=new MainWindow();DataBaseManger db=new DataBaseManger();ResultSet rs;JLabel bno=new JLabel("< delbt=new JButton("删除");JButton yesbt=new JButton("确定");JPanel p1=new JPanel();JPanel p2=new JPanel();public DeleteBook(){ super("删除图书");Container c=getContentPane();p1.add(bno);p1.add(tno);c.add(p1,BorderLayout.NORTH);p2.add(delbt);p2.add(yesbt);c.add(p2,BorderLayout.SOUTH);delbt.addActionListener(this);yesbt.addActionListener(this);setSize();setLocation();JPanel p=new JPanel();p.setLayout(new BorderLayout()); }public void actionPerformed(ActionEvent e){ String bno;if(e.getActionCommand()=="确定")this.dispose();if(e.getActionCommand()=="删除"){ bno=tno.getText();String sqlstr="delete bno from book where bno='"+bno+"'";boolean result=db.updateSql(sqlstr);db.closeConnection();if(result){JOptionPane.showMessageDialog(null,"删除书籍成功!");}else{JOptionPane.showMessageDialog(null,"删除书籍失败!");}}}}6.更新图书信息import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.sql.*;public class UpdateBook extends JFrame implements ActionListener{ MainWindow mw=new MainWindow();DataBaseManger db=new DataBaseManger();ResultSet rs;JPanel a,b,c,d,e,f;JLabel bname=new JLabel();JLabel bno=new JLabel();JLabel bnum=new JLabel();JLabel author=new JLabel();JLabel publisher=new JLabel();JTextField tname=new JTextField(20);JTextField tno=new JTextField(20);JTextField tnum=new JTextField(20);JTextField tauthor=new JTextField(20);JTextField tpublisher=new JTextField(20);JButton addbt=new JButton("更新");JButton yesbt=new JButton("确定");JPanel p3=new JPanel();public UpdateBook(){ super("更新图书");a=new JPanel();b=new JPanel();c=new JPanel();d=new JPanel();e=new JPanel();f =new JPanel();bname.setText("书名:");bname.setFont(new Font("Dialog",0,12));bno.setText(" 索书号:");bno.setFont(new Font("Dialog",0,12));bnum.setText("数量:");bnum.setFont(new Font("Dialog",0,12));author.setText("作者:");author.setFont(new Font("Dialog",0,12));publisher.setText(" 出版社:");publisher.setFont(new Font("Dialog",0,12));a.add(bname);a.add(tname);b.add(bno);b.add(tno);c.add(bnum);c.add(tnum);d.add(author);d.add(tauthor);e.add(publisher);e.add(tpublisher);f.add(addbt);f.add(yesbt);add(a);add(b);add(c);add(d);add(e);add(f);setLayout(new GridLayout(8,1));addbt.addActionListener(this);yesbt.addActionListener(this);setSize();setLocation(); }public void actionPerformed(ActionEvent e) { String bname,bno,author,publisher;int bnum;if(e.getActionCommand()=="确定")this.dispose();if(e.getActionCommand()=="更新"){ bname=tname.getText();bno=tno.getText();author=tauthor.getText();publisher=tpublisher.getText();bnum=Integer.parseInt(tnum.getText());String sqlstr1="select bno from book";rs=db.getResult(sqlstr1);try{ while(rs.next()){ if(rs.getString(1).trim().equals(bno)){JOptionPane.showMessageDialog(null,"此书号已存在,请重新输入索书号!");}else{break;}}}catch(Exception pe){ pe.printStackTrace(); }String sqlstr="update book set bno='"+bno+"',bname='"+bname+"',bnum='"+bnum+"',author='"+author+"',publisher='"+publisher+" 'where bno='"+bno+"'";Boolean result=db.updateSql(sqlstr);db.closeConnection();if(result){JOptionPane.showMessageDialog(null,"更新书籍成功!"); }else{ JOptionPane.showMessageDialog(null,"更新书籍失败!"); }}}}7.查询图书信息import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.sql.*;public class FindBook extends JFrame implements ActionListener{ DataBaseManger db=new DataBaseManger();ResultSet rs;JLabel select=new JLabel("请输入书名或者索书号");JTextField jtf=new JTextField(20);JPanel a=new JPanel();JPanel b=new JPanel();JLabel lb=new JLabel("书籍信息");JButton findbt=new JButton("查询");JButton yesbt=new JButton("确定");JTextArea jta=new JTextArea(10,10);public FindBook(){ super("查询书籍信息");Container c=getContentPane();a.add(select);a.add(jtf);a.add(findbt);c.add(a,BorderLayout.NORTH);b.add(lb);b.add(jta);b.add(yesbt);c.add(b,BorderLayout.SOUTH);yesbt.addActionListener(this);findbt.addActionListener(this);setSize();setVisible(true);setLocation();}public void actionPerformed(ActionEvent e){ if(e.getActionCommand()=="确定")this.dispose();if(e.getActionCommand()=="查询"){ String bname=jtf.getText();String bno=jtf.getText();String sqlstr;sqlstr="select * from book where bname='"+bname+"' or bno='"+bno+"'";rs=db.getResult(sqlstr);try{ jta.setText("");if(rs.next()){jta.append("索书号为:"+rs.getString(1)+"\n");jta.append("书名为:"+rs.getString(2)+"\n");jta.append("现有数量为:"+rs.getString(3)+"\n");jta.append("出版社为:"+rs.getString(5)+"\n");jta.append("作者为:"+rs.getString(4)+"\n"); }else{jta.append("对不起,没有您要找的书籍!"); } }catch(Exception pe){ pe.printStackTrace();} }}}8.数据库连接import java.sql.*;import java.io.*;public class DataBaseManger{String name;Connection con;Statement stmt;ResultSet rs;public DataBaseManger(){try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");System.out.println("驱动加载完成");System.out.println("已建立链接");con=DriverManager.getConnection("jdbc:sqlserver:localhost:1433;DatabaseName=library","sa","s qlserver2005");stmt=con.createStatement();}catch (Exception e){e.printStackTrace();}}public ResultSet getResult(String strSQL){ try{ rs=stmt.executeQuery(strSQL);return rs; }catch(SQLException sqle){System.out.println(sqle.toString());return null; }}public boolean updateSql(String strSQL){ try{stmt.executeUpdate(strSQL);conmit();return true; }catch(SQLException sqle){System.out.println(sqle.toString());return false; } }public void closeConnection(){ try{con.close(); }catch(SQLException sqle){System.out.println(sqle.toString());} }}(二)功能演示图1:图书管理系统主界面图2:用户登录图3:用户登录成功图4:查询读者信息图5:添加图书图6:添加书籍成功图7:删除书籍图8:查询书籍信息图9:更新图书信息图10:更新书籍成功五、测试序号测试内容测试数据期望结果测试结果测试结论1 合法输入格式000000,000000登陆成功登陆成功正确2 错误用户名Admin,00000提示“用户名不存在或者密码不正确”提示“用户名不存在或者密码不正确”正确3 错误密码Admin,xx,正确验证码提示“用户名不存在或者密码提示“用户名不存在或者密码正确不正确”不正确”4 用户名为空Null,00000提示“用户名不能为空”提示“用户名不能为空”正确5 密码为空000000,Null 提示“密码不能为空”提示“密码不能为空”正确表1 登陆模块的测试用例序号测试内容测试数据期望结果测试结果测试结论1 合法输入格式00001 王明00001女20123456计算机王明00001女20123456计算机正确2 错误证件号名提示“请输入正确的证件号!”提示“请输入正确的证件号!”正确3 空数据Null 提示“请输入正确的证件号!”提示“请输入正确的证件号!”正确表2 读者查询模块的测试用例序号测试内容测试数据期望结果测试结果测试结论1 合法输入格式00001 索书号为:00001,书名为:Java程序设计,现有数量为1索书号为:00001,书名为:Java程序设计,现有数量为1正确,出版社为:清华大学出版社,作者为:沈泽刚,出版社为:清华大学出版社,作者为:沈泽刚2 错误索书号0 提示“对不起,没有您要找的书籍!”提示“对不起,没有您要找的书籍!”正确3 空索书号Null 提示“对不起,没有您要找的书籍!”提示“对不起,没有您要找的书籍!”正确表3 图书查询模块的测试用例序号测试内容测试数据期望结果测试结果测试结论1 合法输入格式00001 提示“删除成功”提示“删除成功”正确2 错误索书号0 提示“删除书籍失败!”提示“删除书籍失败!”正确3 空数据Null 提示“删除书籍失败!”提示“删除书籍失败!”正确表4书籍删除模块的测试用例序号测试内容测试数据期望结果测试结果测试结论1 合法输入格式中国近现代史纲要,00006,5,提示“添加书籍成功!”提示“添加书籍成功!”正确编写组,高等教育出版社2 重复书号中国近现代史纲要,00006,5,编写组,高等教育出版社提示“此书号已存在,请重新输入索书号!”提示“此书号已存在,请重新输入索书号!”正确3 遗漏书名Null,00006,5,编写组,高等教育出版社提示“添加书籍失败!”提示“添加书籍失败!”正确4 遗漏书号中国近现代史纲要,Null,5,编写组,高等教育出版社提示“添加书籍失败!”提示“添加书籍失败!”正确5 遗漏数量中国近现代史纲要,00006,Null,编写组,高等教育出版社提示“添加书籍失败!”提示“添加书籍失败!”正确6 遗漏作者中国近现代史纲要,00006,5,提示“添加书籍失败!”提示“添加书籍失败!”正确Null,高等教育出版社7 遗漏出版社中国近现代史纲要,00006,5,编写组,Null提示“添加书籍失败!”提示“添加书籍失败!”正确表5 书籍添加模块的测试用例序号测试内容测试数据期望结果测试结果测试结论1 合法输入格式行政能力测试,00004,7,李永新,中共教育出版社提示“更新书籍成功!”提示“更新书籍成功!”正确2 不存在书号中国近现代史纲要,00106,5,编写组,高等教育出版社提示“更新书籍失败!”提示“更新书籍失败!”正确3 遗漏书名Null,00004,7,李永新,中共教育出版社提示“更新书籍失败!”提示“更新书籍失败!”正确4 遗漏书号行政能力测试,提示“更新书籍失提示“更新书籍失正确Null,7,李永新,中共教育出版社败!”败!”5 遗漏数量行政能力测试,00004,Null,李永新,中共教育出版社提示“更新书籍失败!”提示“更新书籍失败!”正确6 遗漏作者行政能力测试,00004,7,Null,中共教育出版社提示“更新书籍失败!”提示“更新书籍失败!”正确7 遗漏出版社行政能力测试,00004,7,李永新,Null提示“更新书籍失败!”提示“更新书籍失败!”正确表6 书籍更新模块的测试用例六、软件发布1. 电脑操作系统:Windows 7XP 数据库:SQL Server 2005 设计软件:JCreator1.7 作图软件:Rational Rose Enterprise Edition 20032.系统配置说明:分别需要给JCreator配置特定JDK这里用到JDK1.7.0,需要配置SQLsever系统软件我们用的的是SQL Server 2005,因此需要在给JAVA写代码时应注意连接数据库的语句是否匹配。