java案例-图书租赁系统
案例一基于UML和Java的图书管理系统
![案例一基于UML和Java的图书管理系统](https://img.taocdn.com/s3/m/da48361e2af90242a895e57f.png)
案例一:基于UML和Java的图书管理系统一、引言统一建模语言(Unified Modeling Language,简写为UML)是一种通用的模拟语言,它可以用于确定、展示和记录软件系统的设计过程。
统一建模语言中的图形标记,尤其是用于面向对象的软件设计。
它有两大优点:(1)UML是国际软件工业界广泛认可的标准,它统一了对象模拟的标记和含义,使软件设计工具能发挥更大的功用,同时,现有的对象设计也能更容易地被重新使用。
(2)UML博采众长,设当地平衡了简洁性和具体化两个总之,UML已经成为一种单独的系统来演化,不像以前的多种标准的体系引起的问题。
所以,作为软件开发者,完全有必要学习、了解UML。
本文就提供了一个案例研究,想利用这个案例研究给大家一个对UML的感性认识,了解在现实世界中如何使用UML来编写应用程序。
所以找了一个相对比较复杂的案例,发现图书馆中处理借出以及预借书籍和杂志的应用程序是相当大的例子,足以说明UML如何在现实世界中使用。
只是利用用例(use case)和讨论域分析来分析描述一个分析模型中的应用,把它扩展成一个设计模型,用来描述技术解决方案的一个代表部分,最后,再用Java语言进行编码。
但请记住,给出的只是一种可能的解决方案,还有许多其他的解决方案需要您用聪明的头脑去发掘,而且这世界上也没有适合所有的情况的解决方案。
当然,某些解决方案会比其他的要好,但那只有有了足够的经验和遇到的许多困难的事并解决之后才会积累下来知识。
二、要求一般情况下,是使用系统的最终用户的代表人来书写要求规范,对于图书馆应用程序,要求规范应该如下:1)、图书馆应用程序应当是图书馆的支持系统。
2)、图书馆把书籍和杂志借给借书者(读者)的条件当然是读者应当在该系统中注册过,同样书籍和杂志也应当在系统中注册过。
3)、图书馆处理购买新书或杂志的操作,畅销书或杂志应当多购几本,旧的书籍和杂志当它过时或残破时就应适当把它从书架上请下来。
软件工程案例-图书管理系统
![软件工程案例-图书管理系统](https://img.taocdn.com/s3/m/2e70797c4b73f242336c5f64.png)
文档编号:LMS_1版本号:V1.0文档名称:需求分析规格说明书项目名称:图书管理系统项目负责人:计敏胡杰编写:计敏胡杰2002年4月17日校对:审核:批准:开发单位:电信科学技术研究院研究生部2001级1.引言:1.1 编写目的:确定图书管理系统的功能及有效性需求,以供软件开发人员参考。
1.2 项目背景:本项目的名称:图书管理系统本项目的应用范围:中型图书室开发者:电信科学技术研究院研究生部用户:开发人员1.3 定义:LMS : Library Management SystemTitle:记录图书馆内所有类图书的信息并可进行查询。
Item:记录馆内每一本图书的状态,并提供查询、统计、打印功能。
Borrower Information:记录读者信息并可进行查询。
Loan:对图书的出借、归还、续借进行管理并可进行查询。
Reservation: 提供预约与取消预约功能。
1.4 参考资料:《实用软件工程》(第二版)郑人杰殷人昆陶永雷清华大学出版社《软件工程——Java语言实现》Stephen R. Schach 机械工业出版社《实践者的研究方法》Roger S. Pressman 机械工业出版社2.任务概述:2.1目标:该《图书管理系统》针对的用户是中型图书室,藏书的种类包括中、英、俄、德、日文书籍和期刊,读者的数量和来源仅限于本单位职工及通过馆际互借认可的读者。
相应的需求有:1>能够存储一定数量的图书信息,并方便有效的进行相应的书籍数据操作和管理,这主要包括:*图书信息的录入、删除及修改。
*图书信息的多关键字检索查询。
*图书的出借、返还和资料统计。
*图书的远程预约和续借。
*馆际互借(通过电子邮件或现场录入)2>能够对一定数量的读者进行相应的信息存储与管理,这其中包括:*读者信息的登记、删除及修改。
*读者资料的统计与查询。
3>能够对需要的统计结果提供打印输出。
4>能够提供一定的安全机制,提供数据信息授权访问,防止随意删改,同时提供信息备份的服务。
项目开发计划——图书租借管理系统分析,设计与实现
![项目开发计划——图书租借管理系统分析,设计与实现](https://img.taocdn.com/s3/m/eb12c2fe27d3240c8547ef06.png)
项目开发计划——图书租借管理系统分析、设计与实现一、引言1.1编写目的本系统主要针对社区租书社和图书社。
社区租书社和读书社是为了满足社区居民读书和借阅需求。
与一般书店不同之处在于其安全性较高。
目前租书社与读书社,每天都要处理图书、会员、借书、还书等信息,并且需要将这些记录保存在数据库中。
传统的手工管理图书,图书管理人员的工作内容重复、工作量大,特别是在需要新书入库时需要管理人员手工记录图书的各种信息如图书类型、图书书名、出版社、定价等信息更改记录比较频繁。
例如,在图书的出租和归还处理时,需要首先查询借书单,然后填写还书单,并且要查询借阅图书是否在实现说好日期归还,要求计算出租金及余额等,既费时又费力,工作效率低。
由于人手工操作的复杂性,使得人们借还书得等待时间较长等问题出现,传统的手工管理的方式已经远远不能满足人们的需求,这就需要开发一套既操作简便,功能又强大的图书租借软件来管理图书。
预期的读者:图书管理人员背景待开发软件系统名称:图书租借管理系统分析,设计与实现本项目的任务提出者:王儒鹏,王春梅,姜铃,庄旭东本项目的任务开发者:王儒鹏,王春梅,姜铃,庄旭东本项目的用户:图书管理人员定义系统登陆模块:主要负责用户和管理员进入系统的一个身份验证。
图书信息管理:在系统中处理图书的信息,包括图书添加查询修改等。
租借信息管理:在系统中处理读者的信息。
图书管理员管理模块:主要负责对图书管理员基本信息的管理。
参考资料C\C++ 开发所需的帮助等其他书籍及参考资料二、项目概述工作内容1、项目范围规划2、需求分析3、系统设计4、开发5、系统测试6、文档编辑7、事实工作结束后回顾主要参加人员参加本项目开发的主要人员:王儒鹏,王春梅,姜铃,庄旭东产品图书租借管理系统2.3.1程序图书租借管理系统:图书信息管理:在此管理子系统中记录图书的编号、书名、类别、借阅日期、借阅人信息。
读者信息管理:在此管理子系统中记录读者的编号、姓名、电话。
java项目之图书借阅管理系统(毕业设计_课程设计项目指导)PPT模板
![java项目之图书借阅管理系统(毕业设计_课程设计项目指导)PPT模板](https://img.taocdn.com/s3/m/4b8624210c22590103029d6c.png)
感谢聆听
绍
B
1-5tomcat关联开 发工具
eclipsetomcat关 联开发工具eclipse
E
1-3jdk安装jdk安 装
C
1-6mysql数据库 客户端安装mysql 数据库客户端安装
F
第1章项目之图书借阅管理系统
1-7mysql数据库服务端安装 mysql数据库服务端安装 1-8项目发布运行项目发布运行 1-9项目发布常见错误以及解决方 案项目发布常见错误以及解决方案 1-10图书借阅管理系统功能介绍图 书借阅管理系统功能介绍
java项目之图书借阅管理系统( 毕业设计/课程设计项目指导)
演讲人
2 0 2 x - 11 - 11
01
第1章项目之图书借 阅管理系统
第1章项目之图书借阅管理系统
1-1课程概述课程概 述பைடு நூலகம்
A
1-4eclipse开发工 具使用eclipse开发
工具使用
D
1-2图书借阅管理系 统文档介绍图书借 阅管理系统文档介
图书借阅管理系统java课程设计
![图书借阅管理系统java课程设计](https://img.taocdn.com/s3/m/7a638a7c580102020740be1e650e52ea5518ceae.png)
图书借阅管理系统java课程设计一、教学目标本节课的学习目标包括以下三个方面:1.知识目标:使学生掌握图书借阅管理系统的基本概念、原理和功能,理解Java语言在图书借阅管理系统中的应用。
2.技能目标:培养学生具备使用Java语言设计和实现图书借阅管理系统的基本能力,提高学生的编程实践能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,增强学生对图书借阅管理工作的认识,提高学生的信息素养。
二、教学内容本节课的教学内容主要包括以下几个部分:1.图书借阅管理系统的基本概念和原理:介绍图书借阅管理系统的定义、功能和作用,使学生了解图书借阅管理系统的整体框架。
2.Java语言在图书借阅管理系统中的应用:讲解Java语言的特点和优势,展示Java语言在图书借阅管理系统开发中的应用实例。
3.图书借阅管理系统的设计与实现:引导学生学习图书借阅管理系统的设计方法,培养学生动手实践的能力,使学生能够独立设计和实现简单的图书借阅管理系统。
4.教学案例分析:分析实际的图书借阅管理案例,使学生更好地理解和掌握图书借阅管理系统的原理和应用。
三、教学方法为了实现本节课的教学目标,我们将采用以下几种教学方法:1.讲授法:通过讲解图书借阅管理系统的基本概念、原理和功能,使学生掌握相关知识。
2.案例分析法:分析实际的图书借阅管理案例,引导学生理解和掌握图书借阅管理系统的原理和应用。
3.实验法:学生进行图书借阅管理系统的实际设计和实现,提高学生的动手实践能力。
4.讨论法:在课堂上鼓励学生积极参与讨论,培养学生的思维能力和团队协作能力。
四、教学资源为了支持本节课的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用合适的Java编程教材,为学生提供基础知识的支持。
2.多媒体资料:制作课件、演示文稿等多媒体资料,帮助学生更好地理解和掌握知识。
3.实验设备:准备计算机、网络设备等实验设备,为学生提供实践操作的机会。
java实训之租车系统(基于控制台)
![java实训之租车系统(基于控制台)](https://img.taocdn.com/s3/m/30d61d70777f5acfa1c7aa00b52acfc789eb9faf.png)
java实训之租车系统(基于控制台)1.简介Java实训项目是一个基于控制台的租车系统,实现了用户注册登录、汽车信息查询、汽车租借和归还等功能。
该系统可以帮助用户快速查询汽车信息并进行租借和归还操作,提高了汽车租赁的便利性和效率。
2.功能介绍2.1用户注册登录用户可以通过控制台进行注册和登录操作。
在注册过程中,用户需要输入用户名和密码,并且要求用户名不能重复。
在登录过程中,用户需要输入正确的用户名和密码才能成功登录,否则将提示登录失败。
2.2汽车信息查询用户可以通过输入汽车品牌和型号进行汽车信息查询。
系统会根据用户输入的关键字,在数据库中进行相关记录的查找,并展示给用户。
用户可以通过输入选项对查询结果进行排序和筛选。
查询结果将以表格形式显示,包括汽车品牌、型号、租金和可租用数量。
2.3汽车租借用户可以选择指定的汽车进行租借操作。
用户需要输入车辆的品牌和型号,并进行租借时间的选择。
系统会在数据库中检查所选汽车是否可租用,并在租借成功后更新数据库中的车辆信息。
租借成功后,系统会显示租借成功的提示信息。
2.4汽车归还用户可以归还已租借的汽车。
用户需要输入车辆的品牌和型号,并进行归还时间的选择。
系统会在数据库中检查所选汽车是否已租借,并在归还成功后更新数据库中的车辆信息。
归还成功后,系统会显示归还成功的提示信息。
3.开发过程3.1数据库设计在数据库设计中,我们需要创建一个汽车表,包含汽车品牌、型号、租金和可租用数量等字段。
同时,我们还需要创建一个用户表,包含用户名和密码等字段。
3.2后台逻辑实现在后台逻辑实现中,我们需要编写相应的Java类来处理用户输入和数据库操作。
首先,我们需要编写用户管理类,实现用户注册和登录功能。
其次,我们需要编写汽车管理类,实现汽车信息查询、租借和归还功能。
最后,我们需要编写数据库连接类,实现和数据库的交互。
3.3前台界面实现在前台界面实现中,我们可以使用控制台来展示用户界面和处理用户输入。
图书出租管理系统设计(很全)
![图书出租管理系统设计(很全)](https://img.taocdn.com/s3/m/87710891960590c69ec3768c.png)
毕业论文(设计)图书出租管理系统设计小组二级学院信息工程学院专业软件技术2010年04月【摘要】在网络技术和信息技术的迅速发展环境下,使用电脑办公已经逐渐成为了我们工作生活的需求。
本系统是一个典型的数据库管理系统,用于实现图书出租店的相关业务办理。
本系统使用C#语言设计, Access数据库以及SQL语句原理开发的管理系统。
主要分为前台和后台,前台是实现本系统的应用程序以便完成出租店的业务管理;而后台是执行程序的C#语言和SQL语句的组合以及Access 数据库的管理。
通过专业知识的深入学习和应用,本论文主要是阐述了图书出租管理系统中的所有应用管理以及其设计原理的实现。
论文所设计的系统是可以满足顾客租书、还书以及店员出租、采购图书等方面的需求。
本论文结合本系统的要求,完成了对系统的需求分析、系统功能模块设计、数据库需求设计等,详细说明了本系统的设计过程与实现结果。
【关键字】数据库管理系统、C#语言、Access数据库、SQL语句目录1. 前言-------------------------------------------------------------1 1.1 编写目的------------------------------------------------------1 1.2 系统背景------------------------------------------------------11.3 使用范围------------------------------------------------------12. 系统概述---------------------------------------------------------1 2.1 基础知识介绍--------------------------------------------------1 2.1.1 Microsoft Visual Studio 2008的介绍--------------------------1 2.1.2面向对象编程-----------------------------------------------2 2.1.3 数据库管理系统--------------------------------------------3 2.1.4 C#语言的概述----------------------------------------------5 2.1.5 Access 2003数据库概述--------------------------------------5 2.1.6 SQL语句概述-----------------------------------------------5 2.2 系统简介------------------------------------------------------6 2.2.1 系统实现的功能--------------------------------------------6 2.2.2 人员管理功能----------------------------------------------6 2.2.3 图书管理功能----------------------------------------------72.2.4 系统管理功能----------------------------------------------73. 系统分析---------------------------------------------------------8 3.1 系统调查------------------------------------------------------8 3.1.1 系统组织结构图--------------------------------------------8 3.2 可行性分析----------------------------------------------------9 3.2.1 经济可行性------------------------------------------------9 3.2.2 技术可行性------------------------------------------------9 3.2.3 操作可行性-----------------------------------------------11 3.3 系统的总目标-------------------------------------------------113.4 项目开发计划-------------------------------------------------114. 系统需求分析与总体设计------------------------------------------12 4.1 需求分析-----------------------------------------------------124.1.1 人员管理需求---------------------------------------------134.1.2 图书管理需求---------------------------------------------16 4.2 系统功能模块设计---------------------------------------------214.3 数据库需求设计-----------------------------------------------215. 系统的实现设计--------------------------------------------------22 5.1 应用程序的主模块---------------------------------------------225.1.1 总体框架-------------------------------------------------225.1.2 界面设计-------------------------------------------------225.1.3 程序设计-------------------------------------------------23 5.2 人员管理模块-------------------------------------------------255.2.1 模块框架-------------------------------------------------255.2.2 界面设计-------------------------------------------------255.2.3 程序设计-------------------------------------------------27 5.3 图书管理模块-------------------------------------------------305.3.1 模块框架-------------------------------------------------305.3.2 界面设计-------------------------------------------------315.3.3 程序设计-------------------------------------------------33 5.4 系统管理模块-------------------------------------------------365.4.1 模块框架-------------------------------------------------365.4.2 界面设计-------------------------------------------------375.4.3 程序设计-------------------------------------------------37 5.5 系统的其他模块-----------------------------------------------385.5.1 “登录”界面设计与程序设计---------------------------------385.5.2 “图书库存”界面设计与程序设计-----------------------------395.5.3 涉及版权的“关于”界面设计---------------------------------406. 系统的测试与维护------------------------------------------------40 6.1 系统测试-----------------------------------------------------406.1.1 测试基本原则---------------------------------------------416.1.2 测试方法与步骤-------------------------------------------426.1.3 测试用例-------------------------------------------------426.2 系统运行与维护-----------------------------------------------467. 致谢------------------------------------------------------------478. 参考文献--------------------------------------------------------479. 附录------------------------------------------------------------471.前言图书出租店是方便人们阅读到自己喜欢的图书的店面。
java图书借阅管理系统课程设计
![java图书借阅管理系统课程设计](https://img.taocdn.com/s3/m/d1c78fd564ce0508763231126edb6f1afe007171.png)
java图书借阅管理系统课程设计一、教学目标本课程旨在让学生了解和掌握Java编程语言及其应用,通过构建图书借阅管理系统,培养学生运用Java语言解决实际问题的能力。
具体教学目标如下:1.知识目标:(1)掌握Java语言的基本语法和编程规范;(2)了解Java集合框架、常用数据结构及其在图书借阅管理中的应用;(3)熟悉Java面向对象编程思想,理解封装、继承、多态等概念;(4)学习Java数据库连接技术,了解SQL语言基础。
2.技能目标:(1)能够运用Java语言独立完成图书借阅管理系统的开发;(2)培养学生分析问题、解决问题的能力,提高其编程技巧;(3)培养学生团队协作能力,学会与他人共同分析和解决问题;(4)培养学生文献查阅能力,能运用所学知识查阅相关资料。
3.情感态度价值观目标:(1)培养学生对编程语言的兴趣,提高其自主学习能力;(2)培养学生认真负责、勇于探索的精神,养成良好的编程习惯;(3)培养学生团队协作意识,增强集体荣誉感;(4)通过项目实践,使学生认识到计算机技术在现实生活中的重要作用,激发其为社会做贡献的责任感。
二、教学内容本课程的教学内容主要包括以下几个部分:1.Java语言基础:Java语法、数据类型、运算符、控制结构、数组、字符串等;2.Java面向对象编程:类与对象、封装、继承、多态、抽象类、接口等;3.Java集合框架:List、Set、Map等集合类及其应用;4.Java数据库连接技术:JDBC、SQL语言基础;5.图书借阅管理系统项目实践:系统需求分析、系统设计、模块划分、编码实现、系统测试等。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以提高学生的学习兴趣和主动性。
1.讲授法:用于讲解Java语言基础、面向对象编程、集合框架等理论知识;2.案例分析法:通过分析实际项目案例,使学生更好地理解和掌握知识点;3.实验法:让学生亲自动手实践,完成图书借阅管理系统的开发,提高其实际编程能力。
java案例图书租赁系统
![java案例图书租赁系统](https://img.taocdn.com/s3/m/50c0395a793e0912a21614791711cc7930b77876.png)
Hands-On实训教程系列
关键点实现-Customer类-1
Customer类为顾客信息类,用来存储顾客租 借记录信息,包括顾客,租借记录,打印借书 记录单。
➢ addRental 方法用来将租借记录添加到一个容器 对象中。
➢ bill 方法用来打印借书记录单。
Hands-On实训教程系列
关键点实现-Customer类-2
//普通书 //计算机书
//新书
//根据书名与书籍类型代码构建Book类
public Book(String title, int typeCode){
_title = title;
_typeCode = typeCode;
}
public int getTypeCode() {
return _typeCode;
}
break;
}
Hands-On实训教程系列
关键点实现-Customer类-3
public String bill(){ double totalAmount = 0 ; //总租金额 Enumeration rentals = _rentals.elements(); //报表表头 String result = getName() + " 借书记录:" + "\n";//用来存储报表详细信息 result += "-------------------------------------" + "\n"; //依次读取借书信息-略,代码为上页幻灯片代码- //存储借书信息 result +="\t 书名:" + each.getBook().getTitle() + "\t 借阅天数:" + each.getLeaseDays() + "\t 租金:" + thisAmount + "元\n";//计算总租金 totalAmount += thisAmount; //以上三行代码依然包含在上页PPT的while循环中 //报表结尾信息 result +="---------------------------------------- \n"; result +="总租金:" + totalAmount + "元\n"; return result;//返回打印的报表清单
java实现图书馆管理系统
![java实现图书馆管理系统](https://img.taocdn.com/s3/m/4d2be6ea951ea76e58fafab069dc5022aaea46b5.png)
java实现图书馆管理系统本⽂实例为⼤家分享了java实现图书馆管理系统的具体代码,供⼤家参考,具体内容如下思路:所有包都在book_manage包⾥利⽤⾯向对象的多态特性去除了很多if-else的判断,不同的⼦类在⽗类所对应的⽅法不同。
1.⾸先建⽴⼀个book包包⾥⾯有2个类,⼀个是Book,这个类⾥⾯包含⼀本书的全部信息另外⼀个类是BookList,这个类是⽤来管理每⼀个书,通过这个类来寻找每⼀本书。
private Book[] books = new Book[100];Book数组⾥⾯存放所有的书。
2.再建⽴⼀个包Operation 这个类⾥⾯有⼀个OI接⼝,通过对接⼝⾥⾯的Work⽅法重写,来实现管理员⾝份和普通⽤户⾝份的不同操作。
3.最后建⽴⼀个User包,⾥⾯有三个类,User,Admin,NormalUserAdmin和NormalUser都继承⾃User.User⾥秒你有⼀个数组protected IO[] operation;这个数组⾥⾯包含了⽤户或者管理员所具备的操作。
通过对数组的索引来确定具体需要调⽤的操作⽅法。
下⾯来看看代码吧:book包Book类package book_manager.book;public class Book {private String name;private String id;private String author;private int price;private String type;private boolean isBorrow;public Book(String name, String id, String author, int price,String type, boolean isBorrow) { = name;this.id = id;this.author = author;this.price = price;this.type = type;this.isBorrow = isBorrow;}@Override //Object中内置的类,⽤来格式化打印book的信息public String toString() {return "Book{" +"name='" + name + '\'' +", id='" + id + '\'' +", author='" + author + '\'' +", price=" + price +", type='" + type + '\'' +", isBorrow=" + isBorrow +'}';}public String getName(){return name;}public boolean isBorrow(){public void setBorrow(boolean bool){this.isBorrow=bool;}public String getId(){return id;}}BookList类package book_manager.book;import java.util.Arrays;public class BookList {private Book[] books = new Book[100];private int size;public BookList(){books[0] = new Book("⾦瓶梅","001", "兰陵笑笑⽣", 100,"古典名著", false);books[1] = new Book("⽔浒传","002", "施耐庵", 100,"古典名著", false);books[2] = new Book("西游记","003", "吴承恩", 100,"古典名著", false);size = 3;}public int getSize(){return size;}public void setBooks(int index,Book book){ books[index]=book;}public void setSize(int size){this.size=size;}public Book getBook(int index){return books[index];}}Operation包:ADD类package book_manager.Operation;import book_manager.book.*;import java.util.Scanner;public class ADD implements IO{@Overridepublic void work(BookList bookList) {Scanner scanner = new Scanner(System.in); System.out.println("请输⼊书名");String name =scanner.next();System.out.println("请输⼊序号");String id = scanner.next();System.out.println("请输⼊作者");String author =scanner.next();System.out.println("请输⼊价格");int price = scanner.nextInt();System.out.println("请输⼊类型");String type = scanner.next();bookList.setBooks(bookList.getSize(),book);bookList.setSize(bookList.getSize()+1);System.out.println("添加成功");}}Borrow类package book_manager.Operation;import book_manager.book.Book;import book_manager.book.BookList;import java.util.Scanner;public class Borrow implements IO{@Overridepublic void work(BookList bookList) {int i=0;int flag=0;Scanner scan = new Scanner(System.in);System.out.println("请输⼊需要借阅的书名");String name = scan.next();for(;i<bookList.getSize();i++){if(name.equals(bookList.getBook(i).getName())){if(bookList.getBook(i).isBorrow()==false){System.out.println("借阅成功");flag=1;bookList.getBook(i).setBorrow(true);}}}if(flag==0){System.out.println("不好意思,借阅失败");}}}Delete类package book_manager.Operation;import book_manager.book.BookList;import java.util.Scanner;public class Delete implements IO{public void work(BookList bookList){Scanner scanner = new Scanner(System.in);System.out.println("请输⼊想要删除的编号");String id = scanner.next();for(int i=0;i<bookList.getSize();i++){if(bookList.getBook(i).getId().equals(id)){bookList.setBooks(i,bookList.getBook(bookList.getSize())); bookList.setSize(bookList.getSize()-1);System.out.println("删除成功");}else{System.out.println("删除失败");}}}}Exit类package book_manager.Operation;import book_manager.book.BookList;public class Exit implements IO{public void work(BookList bookList) {System.out.println("退出成功");System.exit(0);}}Find类package book_manager.Operation;import book_manager.book.BookList;import java.util.Scanner;public class Find implements IO{@Overridepublic void work(BookList bookList) {int i=0;int count=0;Scanner scan = new Scanner(System.in);System.out.println("请输⼊需要查找的书名");String name = scan.next();for(;i<bookList.getSize();i++){if(name.equals(bookList.getBook(i).getName())){ count++;}}if(count==0){System.out.println("不好意思,没有找到"); }else{System.out.println("找到了,共计"+count+"本"); }}}IO接⼝package book_manager.Operation;import book_manager.book.BookList;public interface IO {abstract public void work(BookList bookList);}PrintAll类package book_manager.Operation;import book_manager.book.BookList;public class PrintAll implements IO{@Overridepublic void work(BookList bookList) {for(int i=0;i<bookList.getSize();i++){System.out.println(bookList.getBook(i));}}}Return类package book_manager.Operation;import book_manager.book.BookList;import java.util.Scanner;public class Return implements IO{@Overridepublic void work(BookList bookList) {int i=0;Scanner scan = new Scanner(System.in);System.out.println("请输⼊需要归还的ID");String id = scan.next();for(;i<bookList.getSize();i++){if(id.equals(bookList.getBook(i).getId())){if(bookList.getBook(i).isBorrow()==true){System.out.println("归还成功");bookList.getBook(i).setBorrow(false);flag=1;}else{System.out.println("归还失败");}}}if(flag==0){System.out.println("不好意思,没有此书");}}}user包:User类package book_er;import book_manager.Operation.*;import book_manager.Operation.IO;import book_manager.book.BookList;abstract public class User {String name;protected IO[] operation;public User(String name){=name;}abstract public int menu();//该⽅法被重写public void doOperation(int choice, BookList bookList) { operation[choice].work(bookList);}}Admin类package book_er;import book_manager.Operation.*;import java.util.Scanner;public class Admin extends User{public Admin(String name){super(name);operation=new IO[]{new Exit(),new Find(),new ADD(),new Delete(),new PrintAll(),};}public int menu() {System.out.println("============");System.out.println("hello " + name);System.out.println("1. 查找书籍");System.out.println("4. 打印所有信息");System.out.println("0. 退出");System.out.println("============");System.out.println("请输⼊您的选择: ");Scanner scanner = new Scanner(System.in);int choice = scanner.nextInt();return choice;}}NormalUserpackage book_er;import book_manager.Operation.*;import java.util.Scanner;public class NormalUser extends User{public NormalUser(String name){super(name);operation=new IO[]{new Exit(),new Find(),new Borrow(),new Return(),new PrintAll()};}public int menu() {System.out.println("============");System.out.println("hello " + name);System.out.println("1. 查找图书");System.out.println("2. 借阅图书");System.out.println("3. 归还图书");System.out.println("4. 查看全部书籍");System.out.println("0. 退出");System.out.println("============");System.out.println("请输⼊您的选择: ");Scanner scanner = new Scanner(System.in);int choice = scanner.nextInt();// close 本质上是在关闭 System.in// 由于后⾯还需要⽤到 System.in, 此处不能盲⽬关闭. // scanner.close();return choice;}}最后还有⼀个Test类,⾥⾯放了main函数package book_manager;import book_manager.book.BookList;import book_er.Admin;import book_er.NormalUser;import book_er;import java.util.Scanner;public class Test {public static void main(String[] args) {BookList list = new BookList();User user = login();//通过不同的choice和⾝份调⽤不同的Operation⽅法 while(true){int choice = user.menu();user.doOperation(choice, list);}}public static User login(){Scanner scanner = new Scanner(System.in);System.out.println("请输⼊你的姓名");System.out.println("请输⼊你的⾝份");System.out.println("1.普通⽤户 2.管理员");int role= scanner.nextInt();if(role==1){return new NormalUser(name);}else{return new Admin(name);}}}更多学习资料请关注专题《》。
图书管理系统源码(java实现)
![图书管理系统源码(java实现)](https://img.taocdn.com/s3/m/2d4be5c4aaea998fcd220e78.png)
【图书管理系统】【MainPro包】1.系统登录页面public class Login extends Frame {private static final long serialVersionUID = -1758475247807861408L;TextField text_user;TextField text_pass;public Login() {1 this.setTitle("登录");this.setLayout(null);//默认流式布局this.setSize(260, 170);/* 定义标签与文本框*/Label lbUser = new Label("用户名:");text_user = new TextField();Label lbPass = new Label("密码:");text_pass = new TextField();Button btn_ok = new Button("确定");Button btn_cancel = new Button("取消");lbUser.setBounds(40, 53, 60, 20);//x,y,width,heightlbPass.setBounds(40, 83, 60, 20);text_user.setBounds(100, 50, 120, 20);text_pass.setBounds(100, 80, 120, 20);btn_ok.setBounds(45, 120, 80, 25); // 确定按钮btn_cancel.setBounds(135, 120, 80, 25); // 取消按钮/* 添加标签与文本框*/add(lbUser);add(lbPass);add(text_user);add(text_pass);add(btn_ok);add(btn_cancel);setLocationRelativeTo(null); // 使窗体在屏幕上居中放置this.setVisible(true); // 使窗体可见btn_ok.addActionListener((new ActionListener() {public void actionPerformed(ActionEvent e) {btn_okActionPerformed(e);//自定义确定按钮触发的实施过程}}));btn_cancel.addActionListener((new ActionListener() {public void actionPerformed(ActionEvent e) {DbOp.Close(); // 关闭数据库System.exit(0);}}));this.addWindowListener(new WindowAdapter() {/* 关闭窗口*/// 重写windowClosing()方法public void windowClosing(WindowEvent e) {DbOp.Close(); // 关闭数据库System.exit(0);} }); }public void btn_okActionPerformed(ActionEvent e) {String user = text_user.getText();String pass = text_pass.getText();String is_admin;// 如果用户名或密码任一为空,则终止后续操作if (user.equals("")||pass.equals("")) {JOptionPane.showMessageDialog(null, "用户名或密码不能为空!");return;}try {// 核对用户名和密码String sql = "select * from user where username=" + "'" + user + "' and password=" + "'" + pass + "'";ResultSet rs = DbOp.executeQuery(sql);// 如果此用户存在,则记录其状态(否:不是管理员,是:是管理员)if (rs.next()) {is_admin = rs.getString("is_admin");} else {JOptionPane.showMessageDialog(null, "用户名或密码不正确!");return;}GlobalVar.login_user = user; // 记录登录的用户名ShowMain show = new ShowMain(); // 调用主程序// 只有管理员才能使用"基础管理"和"借阅管理"菜单show.setRights(is_admin);// 释放窗体及其全部组件的屏幕资源,即使释放登录窗体dispose(); // 释放当前窗体} catch (SQLException e1) {JOptionPane.showMessageDialog(null, "用户数据库有误!");}}}2.系统首页页面public class ShowMain extends Frame {private static final long serialVersionUID = 5003296786441785470L;MenuBar menuBar;Menu jcwh, jcwh_book, jcwh_reader;//基础维护:图书维护、读者维护Menu jywh, cxgl, xtgl;//借阅维护、查询管理、系统管理MenuItemjcwh_book_add,jcwh_book_update,jcwh_book_delete,jcwh_reader_add,jcwh_reader_update,jcwh_reader_delete;MenuItem jywh_borrow, jywh_back;MenuItem cxgl_book, cxgl_reader;MenuItem xtgl_update_pass, xtgl_exit;public void setRights(String rights) {// 如果不是管理员,则禁止用户维护图书信息和读者信息以及禁止进行借阅管理,即只能查询if (rights.equals("否")) {jywh.setEnabled(false);jcwh.setEnabled(false);}}public ShowMain() {setTitle("图书管理系统");setLayout(new BorderLayout());setSize(640, 480);menuBar = new MenuBar();jcwh = new Menu("基础维护");// 基础维护菜单jcwh_book = new Menu("图书维护");// 图书维护菜单jcwh_book_add = new MenuItem("添加");// 添加图书菜单jcwh_book_update = new MenuItem("修改");// 修改图书菜单jcwh_book_delete = new MenuItem("删除");// 删除图书菜单jcwh_reader = new Menu("读者维护");// 读者维护菜单jcwh_reader_add = new MenuItem("添加读者");// 添加读者菜单jcwh_reader_update = new MenuItem("修改读者");jcwh_reader_delete = new MenuItem("删除读者");jywh = new Menu("借阅管理");jywh_borrow = new MenuItem("借书管理");jywh_back = new MenuItem("还书管理");cxgl = new Menu("查询管理");cxgl_book = new MenuItem("图书查询");cxgl_reader = new MenuItem("读者查询");xtgl = new Menu("系统管理");xtgl_update_pass = new MenuItem("修改密码");xtgl_exit = new MenuItem("退出系统");// 添加图书菜单jcwh_book.add(jcwh_book_add);jcwh_book.add(jcwh_book_update);jcwh_book.add(jcwh_book_delete);jcwh.add(jcwh_book);jcwh_reader.add(jcwh_reader_add);jcwh_reader.add(jcwh_reader_update);jcwh_reader.add(jcwh_reader_delete);jcwh.add(jcwh_reader);jywh.add(jywh_borrow);jywh.add(jywh_back);cxgl.add(cxgl_book);cxgl.add(cxgl_reader);xtgl.add(xtgl_update_pass);xtgl.add(xtgl_exit);menuBar.add(jcwh);menuBar.add(jywh);menuBar.add(cxgl);menuBar.add(xtgl);setMenuBar(menuBar);setLocationRelativeTo(null); // 使窗体在屏幕上居中放置setVisible(true); // 使窗体可见jcwh_book_add.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new BookManeger("save");} });jcwh_book_update.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new BookManeger("update");} });jcwh_book_delete.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new BookManeger("delete");} });jcwh_reader_add.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new ReaderManeger("save");} });jcwh_reader_update.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new ReaderManeger("update");} });jcwh_reader_delete.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new ReaderManeger("delete");} });jywh_borrow.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new Borrow();} });jywh_back.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new Back();} });cxgl_book.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new BookQuery();} });cxgl_reader.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new ReaderQuery();} });xtgl_update_pass.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new UpdatePassword();} });xtgl_exit.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {DbOp.Close(); // 关闭数据库System.exit(0);}});this.addWindowListener(new WindowAdapter() {/* 关闭窗口*/// 重写windowClosing()方法public void windowClosing(WindowEvent e) {DbOp.Close(); // 关闭数据库System.exit(0);}});}}3.图书管理public class BookManeger extends JFrame {private static final long serialVersionUID = 377287301994613384L;private Label lbbookid_c = new Label("图书编号");private TextField tf_bookid_c = new TextField();private Label lbbookid = new Label("图书编号");private TextField tf_bookid = new TextField();private Label lbbookname = new Label("图书名称");private TextField tf_bookname = new TextField();private Label lbbooktype = new Label("图书类别");private Choice tf_booktype = new Choice();private Label lbauthor = new Label("作者");private TextField tf_author = new TextField();private Label lbtranslator = new Label("译者");private TextField tf_translator = new TextField();private Label lbpublisher = new Label("出版社");private TextField tf_publisher = new TextField();private Label lbpublish_time = new Label("出版时间");private TextField tf_publish_time = new TextField();private Label lbprice = new Label("定价");private TextField tf_price = new TextField();private Label lbstock = new Label("库存数量");private TextField tf_stock = new TextField();private Button queryBtn = new Button("查询");private Button saveBtn = new Button("保存");private Button closeBtn = new Button("关闭");private String optionStr;BookManeger(String str) {optionStr = str;ggFrame(optionStr);saveBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("bookid", tf_bookid);map.put("bookname", tf_bookname);map.put("booktype", tf_booktype);map.put("author", tf_author);map.put("translator", tf_translator);map.put("publisher", tf_publisher);map.put("publish_time", tf_publish_time);map.put("price", tf_price);map.put("stock", tf_stock);int i ;if(optionStr.equals("delete")){i = Jcwh.btn_delActionPerformed(e, map);}else{i = Jcwh.btn_saveActionPerformed(e, map,optionStr);}if (i == 1) {String showInfo = "";if(optionStr.equals("save")){showInfo = "图书添加成功!";}else if(optionStr.equals("update")){showInfo = "图书修改成功!";}else if(optionStr.equals("delete")){showInfo = "图书删除成功!";}JOptionPane.showMessageDialog(null, showInfo);// 清空全部文本框clearAllTextfield();}}});closeBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {dispose(); // 释放当前窗体}});/* 关闭窗口*/this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) { // 关闭当前窗口dispose(); // 释放当前窗体}});}private void ggFrame(String str) {setLayout(null);setSize(500, 320);lbbookid.setBounds(50, 40, 50, 20); // 图书编号tf_bookid.setBounds(110, 40, 100, 20);lbbookname.setBounds(240, 40, 50, 20); // 图书名称tf_bookname.setBounds(300, 40, 100, 20);lbbooktype.setBounds(50, 80, 50, 20); // 图书类别tf_booktype.setBounds(110, 80, 100, 20);tf_booktype.add("科技");tf_booktype.add("文学");tf_booktype.add("社科");tf_booktype.add("其他");lbauthor.setBounds(240, 80, 50, 20); // 作者tf_author.setBounds(300, 80, 100, 20);lbtranslator.setBounds(50, 120, 50, 20); // 设置译者tf_translator.setBounds(110, 120, 100, 20);lbpublisher.setBounds(240, 120, 50, 20); // 出版社tf_publisher.setBounds(300, 120, 100, 20);lbpublish_time.setBounds(50, 160, 50, 20); // 出版时间tf_publish_time.setBounds(110, 160, 100, 20);lbprice.setBounds(240, 160, 50, 20); // 定价tf_price.setBounds(300, 160, 100, 20);lbstock.setBounds(50, 200, 50, 20); // 库存数量tf_stock.setBounds(110, 200, 100, 20);saveBtn.setBounds(150, 240, 80, 25); // 保存按钮closeBtn.setBounds(280, 240, 80, 25);// 关闭按钮if(str.equals("save")){setTitle("添加图书");}else if(str.equals("update")){setTitle("修改图书");lbbookid_c.setBounds(100, 10, 50, 20); // 图书编号tf_bookid_c.setBounds(160, 10, 100, 20);tf_bookid.setEditable(false);//修改的图书信息中id不可以修改queryBtn.setBounds(280, 10, 80, 20); // 查询按钮add(lbbookid_c);add(tf_bookid_c);add(queryBtn);queryBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("bookid", tf_bookid_c);Book book = (Book)Jcwh.btn_queryActionPerformed(e,map).get("book");if(book!=null){tf_bookid.setText(book.getId());tf_bookname.setText(book.getBookname());// 将Choice的选定项设置为其名称等于指定字符串的项tf_booktype.select(book.getBooktype());tf_author.setText(book.getAuthor());tf_translator.setText(book.getTranslator());tf_publisher.setText(book.getPublisher());tf_publish_time.setText(book.getPublish_time().toString());tf_price.setText(String.valueOf(book.getPrice()));tf_stock.setText(String.valueOf(book.getStock()));}}});saveBtn.setLabel("修改");//将按钮显示文字修改成“修改”}else if(str.equals("delete")){setTitle("删除图书");lbbookid_c.setBounds(100, 10, 50, 20); // 图书编号tf_bookid_c.setBounds(160, 10, 100, 20);tf_bookid.setEditable(false);//修改的图书信息中id不可以修改queryBtn.setBounds(280, 10, 80, 20); // 查询按钮add(lbbookid_c);add(tf_bookid_c);add(queryBtn);queryBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("bookid", tf_bookid_c);Book book = (Book)Jcwh.btn_queryActionPerformed(e,map).get("book");if(book!=null){tf_bookid.setText(book.getId());tf_bookname.setText(book.getBookname());// 将Choice的选定项设置为其名称等于指定字符串的项tf_booktype.select(book.getBooktype());tf_author.setText(book.getAuthor());tf_translator.setText(book.getTranslator());tf_publisher.setText(book.getPublisher());tf_publish_time.setText(book.getPublish_time().toString());tf_price.setText(String.valueOf(book.getPrice()));tf_stock.setText(String.valueOf(book.getStock()));}}});saveBtn.setLabel("删除");//将按钮显示文字修改成“删除”}add(lbbookid);add(tf_bookid);add(lbbookname);add(tf_bookname);add(lbbooktype);add(tf_booktype);add(lbauthor);add(tf_author);add(lbtranslator);add(tf_translator);add(lbpublisher);add(tf_publisher);add(lbpublish_time);add(tf_publish_time);add(lbprice);add(tf_price);add(lbstock);add(tf_stock);add(saveBtn);add(closeBtn);setLocationRelativeTo(null); // 使窗体在屏幕上居中放置setVisible(true); // 使窗体可见}private void clearAllTextfield() {tf_bookid.setText("");tf_bookname.setText("");tf_author.setText("");tf_translator.setText("");tf_publisher.setText("");tf_publish_time.setText("");tf_price.setText("");tf_stock.setText("");}}4.读者管理public class ReaderManeger extends JFrame {private static final long serialVersionUID = -2399939451497711745L;Label lbreaderid_c = new Label("读者编号");TextField tf_readerid_c = new TextField();Label lbreaderid = new Label("读者编号");TextField tf_readerid = new TextField();Label lbreadername = new Label("读者姓名");TextField tf_readername = new TextField();Label lbreadertype = new Label("读者类别");Choice tf_readertype = new Choice();Label lbsex = new Label("性别");Choice tf_sex = new Choice();Label lbmax_num = new Label("可借数量");TextField tf_max_num = new TextField();Label lbdays_num = new Label("可借天数");TextField tf_days_num = new TextField();Button queryBtn = new Button("查询");Button saveBtn = new Button("保存");Button closeBtn = new Button("关闭");private String optionStr;//保存、修改、删除ReaderManeger(String str){optionStr = str;ggFrame(optionStr);saveBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("readerid", tf_readerid);map.put("readername", tf_readername);map.put("readertype", tf_readertype);map.put("sex", tf_sex);map.put("days_num", tf_days_num);map.put("max_num", tf_max_num);int i ;if(optionStr.equals("delete")){i = Jcwh.btn_delReaderActionPerformed(e, map);}else{i = Jcwh.btn_saveReaderActionPerformed(e,map,optionStr);}if (i == 1) {String showInfo = "";if(optionStr.equals("save")){showInfo = "读者添加成功!";}else if(optionStr.equals("update")){showInfo = "读者修改成功!";}else if(optionStr.equals("delete")){showInfo = "读者删除成功!";}JOptionPane.showMessageDialog(null, showInfo);// 清空全部文本框clearAllTextfield();}}});closeBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {dispose(); // 释放当前窗体}});this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) { // 关闭当前窗口dispose(); // 释放当前窗体}});}private void ggFrame(String str) {setLayout(null);setTitle("添加读者信息");setSize(500, 230);lbreaderid.setBounds(50, 50, 50, 20);tf_readerid.setBounds(110, 50, 100, 20);lbreadername.setBounds(240, 50, 50, 20);tf_readername.setBounds(300, 50, 100, 20);lbreadertype.setBounds(50, 80, 50, 20);tf_readertype.setBounds(110, 80, 100, 20);tf_readertype.add("教师");tf_readertype.add("学生");tf_readertype.add("职工");lbsex.setBounds(240, 80, 50, 20);tf_sex.setBounds(300, 80, 100, 20);tf_sex.add("男");tf_sex.add("女");lbmax_num.setBounds(50, 110, 50, 20);tf_max_num.setBounds(110, 110, 100, 20);lbdays_num.setBounds(240, 110, 50, 20);tf_days_num.setBounds(300, 110, 100, 20);saveBtn.setBounds(150, 150, 80, 25);closeBtn.setBounds(280, 150, 80, 25);if(str.equals("save")){setTitle("添加读者");}else if(str.equals("update")){setTitle("修改读者");lbreaderid_c.setBounds(100, 10, 50, 20);tf_readerid_c.setBounds(160, 10, 100, 20);tf_readerid.setEditable(false);queryBtn.setBounds(280, 10, 80, 20);add(lbreaderid_c);add(tf_readerid_c);add(queryBtn);queryBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("readerid", tf_readerid_c);Reader reader = (Reader)Jcwh.btn_queryReaderActionPerformed(e,map).get("reader");if(reader!=null){tf_readerid.setText(reader.getId());tf_readername.setText(reader.getReadername());tf_readertype.select(reader.getReadertype());tf_sex.select(reader.getSex());tf_days_num.setText(String.valueOf(reader.getDays_num()));tf_max_num.setText(String.valueOf(reader.getMax_num()));}}});saveBtn.setLabel("修改");//将按钮显示文字修改成“修改”}else if(str.equals("delete")){setTitle("删除图书");lbreaderid_c.setBounds(100, 10, 50, 20);tf_readerid_c.setBounds(160, 10, 100, 20);tf_readerid.setEditable(false);queryBtn.setBounds(280, 10, 80, 20);add(lbreaderid_c);add(tf_readerid_c);add(queryBtn);queryBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("readerid", tf_readerid_c);Reader reader = (Reader)Jcwh.btn_queryReaderActionPerformed(e,map).get("reader");if(reader!=null){tf_readerid.setText(reader.getId());tf_readername.setText(reader.getReadername());tf_readertype.select(reader.getReadertype());tf_sex.select(reader.getSex());tf_days_num.setText(String.valueOf(reader.getDays_num()));tf_max_num.setText(String.valueOf(reader.getMax_num()));}}});saveBtn.setLabel("删除");//将按钮显示文字修改成“删除”}add(lbreaderid);add(lbreadername);add(lbreadertype);add(lbsex);add(lbmax_num);add(lbdays_num);add(tf_readerid);add(tf_readername);add(tf_max_num);add(tf_days_num);add(tf_readertype);add(tf_sex);add(saveBtn);add(closeBtn);setLocationRelativeTo(null);setVisible(true);}private void clearAllTextfield() {tf_readerid.setText("");tf_readername.setText("");tf_max_num.setText("");tf_days_num.setText("");}public static void main(String[] args) {ReaderManeger r = new ReaderManeger("update");}}5.借书public class Borrow extends Frame {private static final long serialVersionUID = -1036076990599464079L;String SepLine = "-------------------------------------------------";Label lbbookid = new Label("图书编号");Label lbreaderid = new Label("读者编号");TextField tf_bookid = new TextField();TextField tf_readerid = new TextField();Button queryBtn = new Button("查询");Label lbbookinfo = new Label(SepLine + "图书信息" + SepLine); Label lbbookname = new Label("图书名称:");Label tf_bookname = new Label("xx");Label lbauthor = new Label("作者:");Label tf_author = new Label("xx");Label lbpublisher = new Label("出版社:");Label tf_publisher = new Label("xx");Label lbpublish_time = new Label("出版时间:");Label tf_publish_time = new Label("xx");Label lbprice = new Label("定价:");Label tf_price = new Label("xx");Label lbstock = new Label("库存数量:");Label tf_stock = new Label("xx");Label lbreaderinfo = new Label(SepLine + "读者信息" + SepLine); Label lbreadername = new Label("读者姓名:");Label tf_readername = new Label("xx");Label lbreadertype = new Label("读者类型:");Label tf_readertype = new Label("xx");Label lbmax_num = new Label("最大可借数:");Label tf_max_num = new Label("xx");Label lbdays_num = new Label("最大可借天数:");Label tf_days_num = new Label("xx");Label lbborrowinfo = new Label(SepLine + "借阅信息" + SepLine); Label lbborrowednum = new Label("该读者已借图书数量:"); Label tf_borrowednum = new Label("xx");Label lbif_borrow = new Label("该读者是否可借所选图书:"); Label tf_if_borrow = new Label("xx");Label lbborrow_date = new Label("借阅日期:");Label tf_borrow_date = new Label("xx");Button borrowBtn = new Button("借出");Button closeBtn = new Button("关闭");public Borrow() {setLayout(null);setTitle("借阅图书");setSize(500, 420);this.setForeground(Color.BLACK); // 设置前景色为黑色lbbookid.setBounds(30, 40, 50, 25); // 图书编号tf_bookid.setBounds(90, 40, 90, 20);lbreaderid.setBounds(200, 40, 50, 25); // 读者编号tf_readerid.setBounds(260, 40, 90, 20);queryBtn.setBounds(370, 40, 80, 25); // 查询按钮lbbookinfo.setBounds(30, 70, 440, 25); // 图书信息提示条lbbookname.setBounds(30, 100, 60, 25); // 图书名称tf_bookname.setBounds(90, 100, 200, 25);lbauthor.setBounds(310, 100, 60, 25); // 作者tf_author.setBounds(370, 100, 90, 25);lbpublisher.setBounds(30, 125, 60, 25); // 出版社tf_publisher.setBounds(90, 125, 200, 25);lbpublish_time.setBounds(310, 125, 60, 25); // 出版时间tf_publish_time.setBounds(370, 125, 90, 25);lbprice.setBounds(30, 150, 60, 25); // 定价tf_price.setBounds(90, 150, 200, 25);lbstock.setBounds(310, 150, 60, 25); // 库存数量tf_stock.setBounds(370, 150, 90, 25);lbreaderinfo.setBounds(30, 180, 440, 25); // 读者信息提示条lbreadername.setBounds(30, 205, 60, 25); // 读者姓名tf_readername.setBounds(90, 205, 90, 25);lbreadertype.setBounds(310, 205, 60, 25); // 读者类型tf_readertype.setBounds(370, 205, 90, 25);lbmax_num.setBounds(30, 230, 75, 25); // 最大可借数tf_max_num.setBounds(105, 230, 90, 25);lbdays_num.setBounds(310, 230, 85, 25); // 最大可借天数tf_days_num.setBounds(395, 230, 70, 25);lbborrowinfo.setBounds(30, 260, 440, 25); // 借阅信息提示条lbborrowednum.setBounds(30, 285, 120, 25);// 已借图书数量tf_borrowednum.setBounds(150, 285, 50, 25);lbif_borrow.setBounds(30, 310, 145, 25); // 是否可借tf_if_borrow.setBounds(175, 310, 50, 25);lbborrow_date.setBounds(30, 335, 60, 25);// 借书日期tf_borrow_date.setBounds(90, 335, 100, 25);borrowBtn.setBounds(160, 365, 80, 25);// 借出按钮borrowBtn.setEnabled(false); // 开始时禁用借出按钮closeBtn.setBounds(260, 365, 80, 25);// 关闭按钮queryBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { btn_querywActionPerformed(e); } }); borrowBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { btn_borrowActionPerformed(e); } });closeBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { setForeground(Color.BLACK); dispose(); } }); this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {setForeground(Color.BLACK); // 设置前景色为黑色dispose(); // 关闭窗体}});add(lbbookid);add(lbreaderid);add(queryBtn);add(lbbookinfo);add(lbbookname);add(lbauthor);add(lbpublisher);add(lbpublish_time);add(lbprice);add(lbstock);add(lbreaderinfo);add(lbreadername);add(lbreadertype);add(lbmax_num);add(lbdays_num);add(lbborrowinfo);add(lbborrowednum);add(lbif_borrow);add(lbborrow_date);add(borrowBtn);add(closeBtn);setLocationRelativeTo(null); // 使窗体在屏幕上居中放置setVisible(true); // 使窗体可见setForeground(Color.RED); // 设置前景色为红色add(tf_bookid);add(tf_readerid);add(tf_bookname);add(tf_author);add(tf_publisher);add(tf_publish_time);add(tf_price);add(tf_stock);add(tf_readername);add(tf_readertype);add(tf_max_num);add(tf_days_num);add(tf_borrowednum);add(tf_if_borrow);add(tf_borrow_date);}// 图书和读者查询private void btn_querywActionPerformed(ActionEvent e) {String bookid = tf_bookid.getText();String readerid = tf_readerid.getText();// 如果图书编号或读者编号两者均为空,或者有一个为空,则返回if (bookid.equals("") || readerid.equals("")) {JOptionPane.showMessageDialog(null, "图书编号和读者编号均不能为空!");init(); // 重新初始化各参数并禁止借出按钮return;}// 按编号查询图书,结果存入book对象中Book book = BookSelect.SelectBookById(bookid);if (book != null) { // 如果查询到结果,将其显示在各文本框中tf_bookname.setText(book.getBookname());tf_author.setText(book.getAuthor());tf_publisher.setText(book.getPublisher());tf_publish_time.setText(book.getPublish_time().toString());tf_price.setText(String.valueOf((book.getPrice())));tf_stock.setText(String.valueOf(book.getStock()));} else {JOptionPane.showMessageDialog(null, "图书编号有误,查无此书!");init(); // 重新初始化各参数并禁止借出按钮return;}if (book.getStock() == 0) {JOptionPane.showMessageDialog(null, "图书已无库存,无法借阅!");init(); // 重新初始化各参数并禁止借出按钮return;}// 按编号查询读者,结果存入reader对象中Reader reader = ReaderSelect.selectReaderById(readerid);// 如果查询到结果,将其显示在各文本框中if (reader != null) {tf_readername.setText(reader.getReadername());tf_readertype.setText(reader.getReadertype());tf_max_num.setText(String.valueOf(reader.getMax_num()));tf_days_num.setText(String.valueOf(reader.getDays_num()));} else {JOptionPane.showMessageDialog(null, "读者编号有误,查无此人!");init(); // 重新初始化各参数并禁止借出按钮return;}// 查询指定读者是否已借过指定图书且未归还if (IfBorrowBack.findbook(bookid, readerid)) {JOptionPane.showMessageDialog(null, "该读者已借阅所选图书,且未归还!");init(); // 重新初始化各参数并禁止借出按钮return;}// 统计读者所借图书数量int borrowednum = statborrowednum(readerid);tf_borrowednum.setText(String.valueOf(borrowednum));// 如果读者已借图书尚未超出其允许最大借书量,则允许其继续借阅所选图书if (borrowednum < reader.getMax_num()) {tf_if_borrow.setText("是");// 创建一个简单日期格式对象,注意:MM一定要用大写SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// 创建日期变量,其内容为当前日期Date currentdate = new Date();// 将日期按指定格式输出String borrowdate = sdf.format(currentdate);tf_borrow_date.setText(borrowdate);borrowBtn.setEnabled(true); // 使借出按钮有效} else {JOptionPane.showMessageDialog(null, "该读者借书过多,无法继续借阅!");init(); // 重新初始化各参数并禁止借出按钮return;}}// 填写借出图书记录private void btn_borrowActionPerformed(ActionEvent e) {String sql;String bookid = tf_bookid.getText();String readerid = tf_readerid.getText();String borrowdate = tf_borrow_date.getText();// 为borrow表增加借书记录sql = "insert into borrow (book_id,reader_id,"+ "borrow_date,if_back) values('" + bookid + "','" + readerid + "','" + borrowdate + "','否')";。
基于Java的图书预约系统
![基于Java的图书预约系统](https://img.taocdn.com/s3/m/8fc4830f90c69ec3d5bb7586.png)
基于J ava的图书预约系统张微微林海霞司海峰(石家庄法商职业技术学院信息科学系河北石家庄050091)—一SI L I CO NV信息i》薹■V A L L E工科学[摘要]使用J ava语言和SO L Se r ver2000数据库开发适合院校图书馆使用的图书预约系统。
介绍系统的设计思路、数据库实现和功能模块设计,展示系统结构清晰、模块设计合理和用户界面设计友好的特点。
[关键词】J ava J D B C数据库中图分类号:T P39文献标识码:A文章编号:1671--7597(2008)0520031--01一、引言随着日常事务管理信息的电子化和计算机网络的普及,越来越多的单位为提高办事效率和节约人力物力使用计算机来进行日常的管理。
目前,许多图书馆使用了图书查询系统,这些图书查询系统之间的区别主要体现在采用C/S还是B/S结构、系统开发工具、数据库选择和功能模块的设计[1,2]。
本文的图书预约系统是针对本校图书馆实际情况开发的,具有系统设计针对性强和模块功能实用的特点。
该系统采用C/S结构,使用J ava语言作为开发工具,数据库方面选择了S O LS e rver2000、设计了六个主要功能模块。
该系统的开发过程清晰简单,不仅可以供图书馆使用,也可以为高校学生J ava课程的实训内容提供一定的借鉴。
=、技术概述J ava编程语言是现在较流行的程序设计语言,已经在世界范围内被软件开发者接受。
J ava的易于编程和安全性使用户可以快速产生工作代码[3]。
SQ LS e r ve r2000数据库是一种比较常用,而且比较适中的数据库。
它提供的可视化界面使用简单,容易掌握,具有很强的实用性和教学性。
J D B C(J av a数据库连接)体系结构是J av a应用程序连接数据库管理系统的标准方式,它与数据库管理系统无关。
J D B C是编程者需要使用的A PI,它提供了Ja va应用程序与各种不同数据库交互的标准接口,利用现有S O L标准可以和O D B C之类的数据库连接标准相互桥接[4]。
java图书借阅管理系统课程设计
![java图书借阅管理系统课程设计](https://img.taocdn.com/s3/m/498b7342c4da50e2524de518964bcf84b8d52d68.png)
java图书借阅管理系统课程设计一、课程目标知识目标:1. 掌握Java语言基础,包括数据类型、运算符、控制结构等;2. 学会使用Java集合框架,如List、Map等,进行数据处理;3. 了解面向对象编程思想,能够运用类和对象进行程序设计;4. 掌握Java异常处理、文件操作等基本技能;5. 了解Java数据库连接技术,如JDBC,实现数据存储。
技能目标:1. 能够设计并实现一个基于Java的图书借阅管理系统,包括图书信息管理、用户管理、借阅管理等模块;2. 能够运用所学知识解决实际编程问题,具备分析问题、设计解决方案的能力;3. 能够阅读和分析Java程序,具备一定的程序调试和优化能力。
情感态度价值观目标:1. 培养学生热爱编程,主动探索计算机科学技术的兴趣;2. 培养学生团队协作精神,学会与他人共同解决问题;3. 培养学生具备良好的编程习惯,关注程序的可读性和可维护性;4. 增强学生的信息意识,使其认识到信息管理在现实生活中的重要性。
课程性质:本课程为信息技术课程,旨在让学生掌握Java编程基础,通过实际项目案例,提高编程实践能力。
学生特点:学生具备一定的计算机操作基础,对编程有一定兴趣,但编程经验不足,需要通过实践操作来提高。
教学要求:结合实际项目案例,引导学生掌握Java编程基础,注重实践操作,培养学生编程思维和解决问题的能力。
将课程目标分解为具体的学习成果,以便进行后续的教学设计和评估。
二、教学内容1. Java语言基础:变量、数据类型、运算符、控制结构(选择、循环);2. 面向对象编程:类与对象、构造方法、封装、继承、多态;3. Java集合框架:List、Set、Map接口及其实现类的使用;4. Java异常处理:异常类型、try-catch语句、throw和throws关键字;5. Java文件操作:File类、文件读写、文件过滤器;6. Java数据库连接:JDBC概述、数据库连接、SQL语句执行、结果集处理;7. 图书借阅管理系统设计:需求分析、系统设计、模块划分、界面设计;8. 图书借阅管理系统实现:各模块功能实现、数据库设计、代码编写、调试优化。
java语言课程设计实验报告汽车租赁系统
![java语言课程设计实验报告汽车租赁系统](https://img.taocdn.com/s3/m/0a25df5d4531b90d6c85ec3a87c24028915f85dd.png)
java语言课程设计实验报告汽车租赁系统实验目的:通过本次实验,学习并掌握Java语言的基础知识和编程技能,理解面向对象的思想和程序设计原理,掌握Java语言的基础语法和常用类库,具备编写简单的汽车租赁系统的能力。
一、INTRODUCTION汽车租赁系统是一个普遍存在的管理系统,它通常用于租车公司来管理其车辆和租赁业务。
在这个系统中,我们需要实现车辆信息的管理、用户租车的操作、租金结算等功能。
在本次实验中,我们将通过Java语言来实现一个基础的汽车租赁系统。
二、系统设计与实现1.系统设计本次系统设计采用面向对象的思想,将系统中涉及的实体分别设计为对象,并通过定义类、属性和方法来实现对这些实体的管理。
2.类的设计(1)汽车类Car:属性包括车牌号、品牌、型号、日租金、颜色等。
(2)用户类User:属性包括用户名、身份证号、联系方式等。
(3)订单类Order:属性包括订单号、租车时间、还车时间等。
(4)汽车租赁系统类CarRentalSystem:实现对汽车、用户和订单的管理,包括车辆信息的管理、用户租车操作、租金结算等功能。
3.系统实现(1)初始化车辆信息(2)用户注册(3)用户租车(4)结算租金(5)展示车辆信息4.系统流程(1)用户注册:用户通过输入用户名、身份证号、联系方式等信息进行注册。
(2)初始化车辆信息:系统管理员通过输入车辆信息,初始化系统中的车辆信息。
(3)用户租车:用户根据需求选择相应的车辆进行租用。
(4)结算租金:系统根据用户租车的时间和租金标准进行租金结算。
(5)展示车辆信息:用户可以通过系统查询当前可租用的车辆信息。
三、编程实现1.编写Car类```javapublic class Car {private String plateNumber; //车牌号private String brand; //品牌private String model; //型号private double dailyRent; //日租金private String color; //颜色//构造方法public Car(String plateNumber, String brand, String model, double dailyRent, String color) {this.plateNumber = plateNumber;this.brand = brand;this.model = model;this.dailyRent = dailyRent;this.color = color;}// getter和setter方法// ...}```2.编写User类```javapublic class User {private String username; //用户名private String idNumber; //身份证号private String contact; //联系方式//构造方法public User(String username, String idNumber, String contact) {ername = username;this.idNumber = idNumber;this.contact = contact;}// getter和setter方法// ...}```3.编写Order类```javapublic class Order {private String orderNumber; //订单号private String rentTime; //租车时间private String returnTime; //还车时间//构造方法public Order(String orderNumber, String rentTime, String returnTime) {this.orderNumber = orderNumber;this.rentTime = rentTime;this.returnTime = returnTime;}// getter和setter方法// ...}```4.编写CarRentalSystem类```javapublic class CarRentalSystem {private List<Car> carList; //车辆列表private List<User> userList; //用户列表private List<Order> orderList; //订单列表//初始化车辆信息public void initCarList(List<Car> cars) {this.carList = cars;}//用户注册public void register(User user) {erList.add(user);}//用户租车public void rentCar(User user, Car car, String rentTime, String returnTime) {//创建订单并添加到订单列表中Order order = new Order(generateOrderNumber(), rentTime, returnTime);this.orderList.add(order);}//结算租金public double calculateRental(User user, Order order) { //根据租车时间和租金标准计算租金// ...return rental;}//展示车辆信息public void showCarList() {for (Car car : carList) {//展示车辆信息// ...}}//生成订单号private String generateOrderNumber() {//生成订单号的逻辑// ...return orderNumber;}}```四、实验结果与分析通过编写了上述的汽车租赁系统的Java类代码,并进行了简单的测试,得出了以下实验结果:1.实现了汽车租赁系统的基本功能,包括车辆信息的管理、用户租车操作、租金结算等。
基于UML的书籍租赁管理系统
![基于UML的书籍租赁管理系统](https://img.taocdn.com/s3/m/f01364a0dd3383c4bb4cd285.png)
题目基于UML的书籍租赁管理系统设计学院计算机科学与技术学院专业计算机科学与技术班级计算机1002班姓名赵德鹏指导教师李玉强2014 年 1 月16 日目录课程设计任务书 (3)一.需求 (4)1.1数据库的需求分析 (4)1.2系统功能功能分 (4)1.2.1功能描述 (4)1.2.2功能模块设计 (4)二.数据库的设计 (5)2.1概念结构设计 (5)2.1.1实体设计 (5)2.1.2 E-R图 (6)2.2数据库表设计 (6)三.系统的UML建模 (8)3.1系统的用例图 (8)3.2系统的时序图 (10)3.2.1借书时序图 (10)3.2.2还书时序图 (11)3.3系统的状态图 (11)3.3.1图书馆书籍的状态图 (12)3.3.2借阅者的状态图 (13)3.4系统的活动图 (14)3.4.1借书活动图说明 (14)3.4.2还书活动图 (15)四.书籍租赁系统的功能实现 (15)五.课设总结 (22)六.参考文献 (23)七.附录:(部分主要代码) (23)课程设计任务书学生姓名:赵德鹏专业班级:计算机1002班指导教师:李玉强工作单位:计算机科学与技术学院题目:初始条件:理论:学习了UML及软件体系结构课程,掌握一种计算机高级语言的使用。
实践:计算机实验中心提供计算机及软件开发环境。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)系统分析(包括系统描述(问题域描述)、用例模型、分析类图)。
(2)系统设计(包括系统的逻辑模型如设计类图、顺序图、状态图及组件图等)。
(3)系统实施(包括信息代码设计、数据库设计、输入设计、输出设计、用户界面设计和处理过程的设计以及最终的程序设计)。
(4)编制好程序后,设计若干测试用例,上机测试并通过所设计的程序系统。
(5)设计报告格式按附件要求书写。
课程设计报告书正文的内容应包括: 1.问题描述;2.用例模型及分析类图的描述;3.设计类图、核心用例的顺序图与状态图、组件图等的描述;4.信息代码设计、数据库设计、输入设计、输出设计的描述;5.用户界面设计和处理过程的设计的描述;6.给出软件的测试方法和测试结果。
基于java_的房屋租赁系统的设计与实现任务书
![基于java_的房屋租赁系统的设计与实现任务书](https://img.taocdn.com/s3/m/a3537957b6360b4c2e3f5727a5e9856a561226be.png)
基于java 的房屋租赁系统的设计与实现任务书1. 引言1.1 概述在当今数字化时代,房屋租赁已成为一个重要的市场。
为了满足人们对房屋租赁的需求,设计和实现一个高效、便捷的房屋租赁系统变得至关重要。
该系统基于Java编程语言,并利用其强大的功能和广泛的应用领域来支持系统的设计和实现。
本文将详细介绍基于Java的房屋租赁系统的设计与实现。
首先,文章将概述系统结构和组成部分,并介绍各个部分的功能和作用。
接着,将对用户和功能需求进行分析,并明确非功能需求。
然后,系统设计与架构方面将涵盖系统架构概述、数据库设计与管理以及用户界面设计与交互流程。
最后,在系统实现及技术细节部分,我们将讨论开发环境和工具选择与配置、代码设计与实现逻辑解析以及软件测试和调试方案。
1.2 文章结构本文共分为五个章节,每个章节都有其独特的内容和目标:- 第一章是引言,从整体上介绍了文章内容、目的以及各个章节之间的关系。
- 第二章是系统需求分析,重点分析了用户需求、功能需求和非功能需求,以确保系统能够满足用户的期望。
- 第三章是系统设计与架构,详细讨论了系统的整体架构、数据库设计和管理,以及用户界面的设计和交互流程。
- 第四章是系统实现及技术细节,探讨了开发环境和工具的选择与配置、代码设计与实现逻辑解析,以及软件测试和调试方案。
- 第五章是结论与展望,对系统运行结果进行分析评价,并提出存在问题和改进方向。
同时,也展望了未来系统升级的可能性并提供相应建议。
1.3 目的本文的主要目的是设计和实现一个基于Java的房屋租赁系统。
通过对房屋租赁市场需求进行分析,并结合各种功能要求,该系统将为用户提供便捷、高效、安全的房屋租赁服务。
通过详细介绍系统设计与架构、技术细节和实现过程中遇到的挑战和解决方案,旨在分享经验并能为其他开发者或研究者提供参考。
同时,在对系统运行结果进行评估后,我们还将分析存在问题并给出改进建议,为未来系统升级和完善提供方向。
Java实现简单图书借阅系统
![Java实现简单图书借阅系统](https://img.taocdn.com/s3/m/a48afbeef605cc1755270722192e453610665b3d.png)
Java实现简单图书借阅系统本⽂实例为⼤家分享了Java实现图书借阅系统的具体代码,供⼤家参考,具体内容如下为图书阅览室开发⼀个图书借阅系统,最多可存50本图书,实现图书的管理。
图书借阅系统具备以下主要功能。
u功能Ø借出排⾏榜Ø新增图书Ø查看图书Ø删除图书Ø借出图书Ø归还图书Ø退出package com.daiinfo.seninorjava.ken8.implentment.utils;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Scanner;public class Bookborrowing {public static void main(String[] args){int[] states=new int[50];//图书借阅状态状态0:已借出,1:可借int[] counts=new int[50];//图书借阅次数String[] name=new String[50];//图书名称String[] dates=new String[50];//图书⽇期//初始化图书states[0]=0;counts[0]=15;name[0]="数据结构";dates[0]="2018-7-15";states[1]=1;counts[1]=12;name[1]="数据库";dates[1]=null;states[2]=2;counts[2]=30;name[2]="离散数学";dates[2]=null;//外观界⾯Scanner input=new Scanner(System.in);int num=-1;//⽤户输⼊0返回主菜单boolean flage=false;//记录⽤户是否退出系统,true为退出,false为不退出do {System.out.println("*************************************");System.out.println("1、新增图书");System.out.println("2、查看图书");System.out.println("3、删除图书");System.out.println("4、借出图书");System.out.println("5、归还图书");System.out.println("6、退出");int choose=input.nextInt();switch(choose){case 0:int number=0;for(;name[number]!=null;number++) {}//求出当前书⽬总数int[] sortBook=new int[number];printBook(name,counts,number,sortBook);break;case 1:System.out.println("------>新增图书");int a=0;for(;a<name.length;a++) {if(name[a]==null) {System.out.println("请输⼊图书名称");name[a]=input.next();//录⼊书名System.out.println("/n"+"新增《"+name[a]+"》成功");//将图书信息存⼊数组states[a]=1;counts[a]=0;dates[a]=null;break;}}if(a==50) {System.out.println("书架已满,勿加");}System.out.println("******************************");break;case 2:System.out.println("------>查看图书");System.out.println("序号\t状态\t名称\t借出⽇期\t");for(int i=0;name[i]!=null;i++) {String situation=(states[i]==0)?"已借出":"可借";System.out.println((i+1)+"\t"+situation+"\t《"+name[i]+"》\t");if(states[i]==0) {System.out.println(dates[i]);}else {System.out.println();}}System.out.println("*******************************");break;case 3:System.out.println("------->删除图书");System.out.println("请输⼊图书名称");String book=input.next();boolean check1=false;//判断是否找到删除图书名称,false找不到for(int b=0;name[b]!=null;b++) {if(name[b].equals(book)) {check1=true;if(states[b]==1) {//图书未借出,可以删除System.out.println("删除《"+book+"》成功!");int i=b;for(;i<name.length-1;i++) {states[i]=states[i+1];name[i]=name[i+1];dates[i]=dates[i+1];counts[i]=counts[i+1];}//将数组内容前移break;}else {System.out.println("图书已借出,⽆法删除!");break;}}}if(check1==false) {System.out.println("没有找到匹配信息!");}System.out.println("*************************");break;case 4:System.out.println("--------->借出图书");System.out.println("请输⼊图书名称:");String back=input.next();boolean check2=false;//判断想要借出的书能否找到,false找不到,true找到 for(int b=0;name[b]!=null;b++) {if(name[b].equals(back)) {//书存在check2=true;if(states[b]==1) {System.out.println("请输⼊借出⽇期(年-⽉-⽇):");dates[b]=input.next();while(judge(dates[b])==false) {System.out.println("⽇期⾮法,请重新输⼊");dates[b]=input.next();}states[b]=0;//将当前图书状态调成借出counts[b]++;//当前图书借出次数加⼀}else {System.out.println(name[b]+"已被借出!");}break;}}if(check2==false) {System.out.println("没有找到匹配信息!");}System.out.println("*********************************");break;case 5:System.out.println("--------->归还图书");System.out.println("请输⼊图书名称:");String back1=input.next();boolean check3=false;//判断归还的书能否找到,false找不到,true找到 for(int b=0;name[b]!=null;b++) {if(name[b].equals(back1)) {//书存在check3=true;if(states[b]==0) {//如果书借出System.out.println("请输⼊归还⽇期(年-⽉-⽇):");String returnDate=input.next();while(judge(returnDate)==false) {System.out.println("⽇期⾮法,请重新输⼊");returnDate=input.next();}System.out.println("归还《"+back1+"》成功!");System.out.println("借出⽇期"+dates[b]);System.out.println("归还⽇期"+returnDate);int money=0;try {money=daysBetween(dates[b],returnDate);}catch(Exception e) {e.printStackTrace();}System.out.println("该书没有被借出,⽆法执⾏操作");}break;}}if(check3==false) {System.out.println("没有找到匹配信息!");}System.out.println("*********************************");break;case 6:flage=true;break;default:flage=true;break;}if(flage==true) {break;}else {System.out.println("输⼊0返回");num=input.nextInt();}}while(num==0);System.out.println("谢谢使⽤!");}private static boolean judge(String str) {// TODO Auto-generated method stubSimpleDateFormat sd=new SimpleDateFormat("yy-MM-dd");//⽇期格式try {sd.setLenient(false);//指定⽇期时间是否合格,true不合格,false合格sd.parse(str);}catch(Exception e){return false;}return true;}public static void printBook(String[] names,int[] sortBook,int number,int[] counts) {int[] another=counts.clone();//复制数组int i=0;int max=another[0];for(int p=0;p<=max;p++) {for(int q=0;q<number;q++) {if(counts[q]==p) {sortBook[i++]=q;}}}System.out.println("序号\t"+"书名\t"+"借出次数");for(int x=(number-1);x>=0;x--) {//借出次数排⾏榜System.out.println((number-x)+"\t"+names[sortBook[x]]+"\t\t"+counts[sortBook[x]]);}System.out.println("******************");}public static int daysBetween(String smdate,String bdate) throws Exception{SimpleDateFormat sdf=new SimpleDateFormat("yy-MM-dd");Calendar cal=Calendar.getInstance();cal.setTime(sdf.parse(smdate));long time1=cal.getTimeInMillis();cal.setTime(sdf.parse(bdate));long time2=cal.getTimeInMillis();long between_days=(time2-time1)/(1000*3600*24);return Integer.parseInt(String.valueOf(between_days));}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本章目标
需求分析 系统设计 项目难点分析 关键点实现 系统测试
Hands-On实训教程系列 实训教程系列
需求简介
小小书屋是一个以图书出租为主要业务的个体单位。 小小书屋是一个以图书出租为主要业务的个体单位。 其图书按租价不同分为三类: 其图书按租价不同分为三类:
1:普通图书:每天租金1元; :普通图书:每天租金 元 2:计算机图书:每天租金 元; :计算机图书:每天租金1.5元 3:新书:新书前 天每天租金 元, 天每天租金1.5元 :新书:新书前3天每天租金 3天之后,每天租金 元。 天之后, 天之后 每天租金2元
Hands-On实训教程系列 实训教程系列
关键点实现- 关键点实现-Rental类 类
public class Rental { private Book _book; //书籍 书籍 private int _leaseDays; //租期 租期 // 根据书名与租期构建 根据书名与租期构建Rental类 类 public Rental(Book book, int leaseDays) { _book = book; _leaseDays = leaseDays; } public Book getBook() { return _book; } public int getLeaseDays() { return _leaseDays; } }
Hands-On实训教程系列 实训教程系列
编程环境与技术
编程环境:
JDK 5.0
JCreator/EditPlus/NetBeans/eclipse 主要技术
Java基本语法 基本语法 Java输入输出 输入输出 Java异常控制 异常控制 Java容器类 容器类
Hands-On实训教程系列 实训教程系列
租书者租书之前先说明要租图书 租赁几天,并交纳租金, 租赁几天,并交纳租金,方可 租走图书。 租走图书。
Hands-On实训教程系列 实训教程系列
目的与特点
特点 Java控制台程序,系统中含有简单业务逻辑。 控制台程序, 控制台程序 系统中含有简单业务逻辑。 目的 通过一个Java控制台程序,锻炼学生 控制台程序, 通过一个 控制台程序 锻炼学生Java语 语 言的使用熟练度, 言的使用熟练度,流程控制语句的熟练运用程 对于Java异常处理的掌握和运用程度, 异常处理的掌握和运用程度, 度,对于 异常处理的掌握和运用程度 以及编码规范度。 以及编码规范度。
Hands-On实训教程系列 实训教程系列
项目难点分析-输入输出 项目难点分析-输入输出2-2
//引入 引入java输入输出处理包 引入 输入输出处理包 import java.io.*; …… //将用户输入信息以字符流的形式读入内存 将用户输入信息以字符流的形式读入内存 InputStreamReader is = new InputStreamReader(System.in); //为读入的内存流增加缓冲功能 为读入的内存流增加缓冲功能 BufferedReader br = new BufferedReader(is); try { //读取流内一行的信息 读取流内一行的信息 readLine = br.readLine(); } catch (IOException e) { //处理异常 处理异常 System.out.println("输入错误 输入错误!"); 输入错误 e.printStackTrace(); } Hands-On实训教程系列 实训教程系列
Enumeration:枚举器-用来遍历一系列对象,并可 枚举器-用来遍历一系列对象, 枚举器 选择序列中的每个对象。 选择序列中的每个对象。
nextElement()获得下一个对象 获得下一个对象 hasMoreElements()检查序列中是否还有更多的对象 检查序列中是否还有更多的对象
Hands-On实训教程系列 实训教程系列
报表清单
XXX 借书记录: 打印表头 ----------------------------------------书名:XXXXXXXXXX 借阅天数:2 租金:2.0元 打印借书清单 书名:YYYYYYYYYY 借阅天数:5 租金:7.5元 租金:4.5元 打印表尾 书名:ZZZZZZZZZZ 借阅天数:3 ----------------------------------------总租金:XY.Z元
项目难点分析-对象存取 项目难点分析-对象存取3-1
租赁信息的存储
一个租书者可以租赁多本图书 租赁信息应包含以下内容: 租赁信息应包含以下内容:
图书信息[书名,图书类型 , 图书信息 书名,图书类型],在程序中表现为一个对象 书名 租赁天数, 租赁天数,程序中用整数表示
租赁信息需要一个容器来存储, 租赁信息需要一个容器来存储,我们可以采用 Vetor或HashMap 或
Hands-On实训教程系列 实训教程系列
提示顾客输入姓名
程序流程
提示顾客输入书籍名称
提示顾客输入书籍类型 类型输入错误 显示错误
提示用户输入借阅 天数
计算租金
提示用户是否继续 借书
继续借书 完成借阅 显示借阅详细信息
Hands-On实训教程系列 实训教程系列
打印清单
aCustomer : Customer aRental : Rental aBook : Book
类设计
书籍类:用来存储顾客所借书籍的具体信息, 书籍类:用来存储顾客所借书籍的具体信息, 包括书名,书籍类型等。 包括书名,书籍类型等。 顾客类:用来存储借书者信息,包括顾客姓名, 顾客类:用来存储借书者信息,包括顾客姓名, 顾客所借书籍信息等。 顾客所借书籍信息等。 租赁类:用来存储顾客租书信息,例如,书名, 租赁类:用来存储顾客租书信息,例如,书名, 租赁天数等。 租赁天数等。
Hands-On实训教程系列 实训教程系列
关键点实现- 关键点实现-Customer类-2 类
//依次读取借书信息 依次读取借书信息 while(rentals.hasMoreElements()){ double thisAmount = 0; //本书租金合计 本书租金合计 Rental each = (Rental)rentals.nextElement(); //取得租借记录 取得租借记录 switch(each.getBook().getTypeCode()){ case MON_BOOK: // 普通书,租金每天 元 普通书,租金每天1元 thisAmount = each.getLeaseDays() * 1; break; case PUTER_BOOK: //计算机书,每天 计算机书, 计算机书 每天1.5元 元 thisAmount = each.getLeaseDays() * 1.5; break; case Book.NEW_BOOK: //新书 新书1-3天,每天1.5元,以后每天2元 天 每天 元 以后每天 元 新书 thisAmount = each.getLeaseDays() * 1.5; if (each.getLeaseDays()>3){ thisAmount += (each.getLeaseDays()-3) * (2-1.5); } break; } Hands-On实训教程系列 实训教程系列
Hands-On实训教程系列 实训教程系列
关键点实现- 关键点实现-Book类 类
public class Book { //定义书籍类型编码 定义书籍类型编码 public static final int COMMON_BOOK = 0; public static final int COMPUTER_BOOK = 1; public static final int NEW_BOOK = 2; private String _title; //书名 书名 private int _typeCode; //书籍类型编码 书籍类型编码 //根据书名与书籍类型代码构建 根据书名与书籍类型代码构建Book类 根据书名与书籍类型代码构建 类 public Book(String title, int typeCode){ _title = title; _typeCode = typeCode; } public int getTypeCode() { return _typeCode; } public void setTypeCode(int code) { _typeCode = code; } public String getTitle() { return _title; } //普通书 普通书 //计算机书 计算机书 //新书 新书
Hands-On实训教程系列 实训教程系列
项目难点分析-对象存取 项目难点分析-对象存取3-2
Vetor:矢量-作为容纳对象的简单容器使用 矢量- 矢量
addElement():放入对象 : elementAt():取出对象,注意取出时需强制类型转换 :取出对象, elements()的方法要求集合为我们提供一个 的方法要求集合为我们提供一个Enumeration 的方法要求集合为我们提供一个
Hands-On实训教程系列 实训教程系列
项目难点分析-输入输出 项目难点分析-输入输出2-1
信息的输入输出: 信息的输入输出:
信息输出: 输出信息” 信息输出:System.out.println(“输出信息”); 输出信息
信息输入与接收: 信息输入与接收:
System.in用来接收控制台用户输入信息 用来接收控制台用户输入信息 采用流对用户输入的数据进行接收与处理 按处理数据的单位划分: 按处理数据的单位划分:字符流和字节流 按流的方向划分: 按流的方向划分:输入流与输出流
第一章
图书租赁系统 JAVA Learning case
Hands-On实训教程系列 实训教程系列