基于java的图书馆管理系统设计报告源代码

上传人:飞*** 文档编号:43952852 上传时间:2018-06-07 格式:DOC 页数:11 大小:32.50KB
返回 下载 相关 举报
基于java的图书馆管理系统设计报告源代码_第1页
第1页 / 共11页
基于java的图书馆管理系统设计报告源代码_第2页
第2页 / 共11页
基于java的图书馆管理系统设计报告源代码_第3页
第3页 / 共11页
基于java的图书馆管理系统设计报告源代码_第4页
第4页 / 共11页
基于java的图书馆管理系统设计报告源代码_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《基于java的图书馆管理系统设计报告源代码》由会员分享,可在线阅读,更多相关《基于java的图书馆管理系统设计报告源代码(11页珍藏版)》请在金锄头文库上搜索。

1、基于基于 java 的图书馆管理系统设计报告源代码的图书馆管理系统设计报告源代码用 Java 模拟一个图书馆。包括创建图书、创建读者、借书、还书、列出所有图书、列出所有读者、列出已借出的图书、列出过期未还的图书等功能。每个读者最多只能借 3 本书,每个书最多只能借 3 个星期,超过就算过期。 下面是一个命令行下的实现。这个例子的主要目的是向初学者展示内部类的好处。Command 及其子类都是 LibrarySimulator 的内部类。它们可以无阻碍的访问 LibrarySimulator 的成员。使用内部类,而不是大量的 if-else,让程序更容易扩展。view plaincopy to

2、clipboardprint?import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.text.SimpleDateFormat; import java.util.*; /* 一个图书馆的课程设计。主要功能:* 1. 创建图书* 2. 创建读者* 3. 借书* 4. 还书* 5. 列出所有书* 6. 列出已借书* 7. 列出超过日期未还的书*/public class LibrarySimulator / 主菜单 private stati

3、c final String MAIN_MENU = “1. 列出所有的书n“ + “2. 列出已借出的书n“ + “3. 列出过期未还的书n“ + “4. 列出所有读者n“ + “5. 创建图书n“ + “6. 创建读者n“ + “7. 借书n“ + “8. 还书n“ + “9. 退出n“ + “请输入序号:“; / 选择图书类型的菜单。在借书和添加图书的时候都会用到 private static final String TYPE_MENU; / 表示一个数字的正则表达式 private static final String DIGIT_CHOICE_PATTERN = “d$“; /

4、表示非空字符串 private static final String NOT_EMPTY_PATTERN = “S.*“; / 日期格式 static final String DATE_PATTERN = “yyyy/MM/dd“; / 验证用户输入日期的正则表达式 static final String DATE_FORMAT_PATTERN = “d4/d2/d2$“; / 预定义的图书类型 static HashMap TYPES = new LinkedHashMap(); static TYPES.put(“1“, “科学类“); TYPES.put(“2“, “文学类“); /

5、 新的类别可以继续在后面添加 TYPE_MENU = createTypeMenu(); / 生成选择类别的菜单 private static String createTypeMenu() String str = “; for (String index : TYPES.keySet() str += index + “. “ + TYPES.get(index) + “n“; return str + “请选择书的类型:“; private HashMap commands = new HashMap(); private ArrayList books = new ArrayList(

6、); private ArrayList readers = new ArrayList(); / 程序入口。这里创建一个 LibrarySimulator 用于模拟界面。 public static void main(String args) new LibrarySimulator().start(); /* 构造函数*/public LibrarySimulator() commands.put(1, new Command1(); commands.put(2, new Command2(); commands.put(3, new Command3(); commands.put(

7、4, new Command4(); commands.put(5, new Command5(); commands.put(6, new Command6(); commands.put(7, new Command7(); commands.put(8, new Command8(); /* 这里接受用户输入,执行操作,然后再等待用户输入,这样不停的循环。*/private void start() String index = prompt(MAIN_MENU, DIGIT_CHOICE_PATTERN); while (!index.equals(“9“) executeComman

8、d(index); index = prompt(MAIN_MENU, DIGIT_CHOICE_PATTERN); / 根据序号执行命令 private void executeCommand(String index) Command command = commands.get(Integer.parseInt(index); if (command != null) String result = command.execute(); System.out.println(result + “n“); / 打印一条提示信息,然后读取并返回用户输入 private String prom

9、pt(String message, String pattern) System.out.print(message); if (pattern = null) return readInput(); else String result = “; while (!result.matches(pattern) result = readInput(); return result; / 读取用户输入 private String readInput() try BufferedReader reader = new BufferedReader(new InputStreamReader(

10、System.in); return reader.readLine(); catch (IOException e) e.printStackTrace(); return “; / 根据名字查找读者。找不到则返回 null。 private Reader getReaderByName(String readerName) for (Reader reader : readers) if (reader.getName().equals(readerName) return reader; return null; / 根据名字查找图书。找不到则返回 null。 private Book

11、getBookByName(String bookName) for (Book book : books) if (book.getName().equals(bookName) return book; return null; /*=*/* 代表命令的抽象类*/private abstract class Command protected abstract String execute(); / 列出所有图书 private class Command1 extends Command protected String execute() for (Book book : getBoo

12、ks() System.out.println(book); / 这里会自动调用 book.toString() return “命令完成。“; private ArrayList getBooks() ArrayList result = new ArrayList(); for (Book book : books) if (isValid(book) result.add(book); return result; / 考虑到第 1、2、3 条命令大体相同,这里提供了一个给子类覆写的方法 protected boolean isValid(Book book) return true;

13、/ 列出已借出的书。 / 注意它的父类不是 Command,而是 Command1。这样节省了很多重复代码 private class Command2 extends Command1 Overrideprotected boolean isValid(Book book) return book.isBorrowed(); / 列出过期未还的书 private class Command3 extends Command1 Overrideprotected boolean isValid(Book book) / 判断一本书接触过期与否的方法最好在 Book 类中去实现。 return book.isExpired(); / 创建图书

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号