图书管理控制台程序---帮助类

package week6.bookManagement;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Properties;

/**
*
* @author quanby
*
*/
public class BookUtil {

/**
* 书籍帮助类
*/
public BookUtil() {
super();
// TODO Auto-generated constructor stub
}

/**
* 判断输入的用户名和密码是否正确
*
* @param userId
* @param userPWD
* @return 账号密码匹配的布尔值
*/
public boolean checkPass(String userId, String userPWD) {
boolean result = false;//
Properties properties = new Properties();
try {
properties.load(new FileInputStream("./src/week6/bookManagement/user.properties"));
if (userId.equals(properties.get("userId")) && userPWD.equals(properties.get("userPWD"))) {
result = true;
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return result;
}

/**
* 显示书籍,当isAll为true时,显示全部书籍,否则显示可借书籍
*
* @param books
* 一个数量大于零的书籍列表
* @param isAll
* 是否显示全部的书籍列表
*/
public void showBooks(ArrayList<Book> books, boolean isAll) {
int result = 0;// 将可出借的书籍数量初始为0
Book book;
for (int i = 0; i < books.size(); i++) {
book = books.get(i);
if (!isAll) {
if (book.getStatus() == 0) {
result++;
System.out.println("书籍id:" + book.getBookID() + "\t" + "书名:" + book.getBookName() + "\t" + "作者:"
+ book.getAuthor() + "\t" + "价格:" + book.getPrice());
}
if (result == 0) {
System.out.println("对不起,无法借书,全部书籍已借出!");
}
} else {
System.out.println("书籍id:" + book.getBookID() + "\t" + "书名:" + book.getBookName() + "\t" + "作者:"
+ book.getAuthor() + "\t" + "价格:" + book.getPrice());
}
}
}

/**
* 修改一本书的状态
*
* @param books
* 一个书籍列表
* @param bookID
* 要修改的书籍id
* @param status
* 要修改的书籍状态,0--归还;1--表示借出
* @return 修改后的书籍列表
*/
public ArrayList<Book> changeStaus(ArrayList<Book> books, String bookID, int status) {
int result = 0;
Book book;
for (int i = 0; i < books.size(); i++) {
book = books.get(i);
// 存在书籍且状态与传递的状态不一致时才执行操作
if (book.getBookID().equals(bookID) && book.getStatus() != status) {
book.setStatus(status);
books.set(i, book);
writeLog(book, status);
result = 1;
}
}
if (result == 1) {
System.out.println("操作成功!");
} else {
System.out.println("操作失败!");
}
return books;
}

/**
* 对书籍进出记录日志
*
* @param book
* 书籍
* @param status
* 书籍原来的状态,0--正在归还;1--正在借出
*/
private void writeLog(Book book, int status) {
File file = new File("./src/week6/bookManagement/bookLog.txt");
FileOutputStream stream;
Calendar date = new GregorianCalendar();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
String time = sdf.format(date.getTime());
String t = "出借";
if (status == 0) {
t = "归还";
}
try {
stream = new FileOutputStream(file, true);
byte[] bytes = (time+t+"<<" + book.getBookName() + ">>" + "\n").getBytes();
stream.write(bytes);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

时间: 2024-12-28 17:39:22

图书管理控制台程序---帮助类的相关文章

Windows编程 - 开启/关闭/遍历程序的类 代码(C++)

开启/关闭/遍历程序的类 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 类包含4个函数, 启动程序, 遍历所有进程, 关闭程序, 遍历进程依赖的动态链接库. 示例: Image.exe是预先生成的可执行程序(exe), 启动程序, 间隔5秒, 关闭程序. 使用方法参加测试程序. 代码: /* * process.h * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #ifnde

bboss启动应用程序帮助类

bboss启动应用程序帮助类,通过简单的配置文件,配置主程序需要的依赖库和依赖资源,切入正题. 假设应用程序根目录为:run 将bboss启动应用程序帮助类包bboss-rt.jar文件放到run目录下,bboss-rt.jar文件下载的地址:bboss-rt.jar 1.配置主程序需要的依赖库和依赖资源 在run目录下放置config.properties文件,内容如下: mainclass=org.frameworkset.bigdata.imp.Imp mainclass指定了要运行的主程

MyBatis系列二 之 数据库列名于程序实体类中字段名称不一致

MyBatis系列二  之   数据库列名于程序实体类中字段名称不一致 情景:当数据库中的列名与我们程序实体类中的字段名称不一致         使用ResultMap节点配置信息  在映射文件中  mapper根节点下配置ResultMap节点信息 <resultMap type="Student" id="studentMapper"> <result column="sname" property="stunam

&lt;&lt;黑马程序员&gt;&gt;类的加载和初始化

类的加载和初始化 + (void)load  方法   ①  当程序一启动就会把所有类和分类而且加载后就会调用每个类的+load方法只会调用一次.   ②  先加载父类在加载子类,每个类加载完就会调用load方法 2 . + (void)initialize    方法      ①  当第一次使用这个类时就会调用  + (void)initialize    方法 调用顺序:①  先加载父类在加载子类               ② 先调用父类的load方法在调用子类的load方法      

黑马程序员----类的加载和初始化

类的加载和初始化 当程序一启动,就会加载项目中所有的类和分类,而且加载后会调用每一个类和分类中的+load方法(即使不创建对象也会调用),且只会调用一次: 当第一次使用某个类时,就会调用当前类的+initialize方法: 先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法): 先初始化父类,再初始子类(先调用父类的+initialize方法,再调用子类的+initialize方法): 注意点:1.调用创建子类时即会调用父类的+initialize方法,也会调用子类的

黑马程序员-----类的继承和派生概念

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ----- 第一讲 类的继承和派生概念 本小节知识点: 1.[理解]什么是继承? 2.[掌握]类的继承和派生概念 1.什么是继承? 2.OC中的继承与派生 1 #import <Foundation/Foundation.h> 2 3 @in

黑马程序员————类的第五个成员内部类

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 我们在通过java语言描绘事物的时候,会遇到事物里面还有事物,而里面的事物还会用到外面事物的一些属性.就好像看似单一的物体实则里面还有很多看似独立的分支,但却又要用到这个物体的一些属性与方法.就好像大自然里面的万物,每个看似独立却又息息相

使用类的静态字段和构造函数,用Java程序实现类的对象的创建

一.实验要求 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”. 二.设计思路 1.创建一个类Find; 2.定义一个静态整型变量i,使其记录创建对象个数: 3.在程序中定义一个函数getNum(),令其返回计量值i: 4.输出对象创建个数. 三.程序流程图 四.源代码 public class Find { static int i; public Find() { i++;  //每创建一个类的对象i加1 } s

C#程序设计基础——类、对象、方法

类与对象 类 类是一种构造,通过使用该构造,用户可以将其他类型的变量.方法和事件组合在一起,从而创建自定义类型.类就像一个蓝图,它定义类型的数据和行为. 对象 定义类之后,便可通过将类加载到内存中来使用它.已加载到内存中的类称为“对象”或“实例”.可以通过使用C#关键字new来创建类的实例. 方法 “方法”是包含一系列语句的代码块.程序通过“调用”方法并指定所需的任何方法参数来执行语句. 方法定义中几个重要的方面 返回值 方法可以向调用方法返回值.如果返回类型不是void,则方法体必须使用ret