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

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

用 Java 模拟一个图书馆。包括创建图书、创建读者、借书、还书、列出所有图书、列出所有读者、列出已借出的图书、列出过期未还的图书等功能。每个读者最多只能借 3 本书,每个书最多只能借 3 个星期,超过就算过期。

下面是一个命令行下的实现。这个例子的主要目的是向初学者展示内部类的好处。Command 及其子类都是 LibrarySimulator 的内部类。它们可以无阻碍的访问 LibrarySimulator 的成员。使用内部类,而不是大量的 if-else,让程序更容易扩展。

view plaincopy to 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 static 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$"; // 表示非空字符串 private static final String NOT_EMPTY_PATTERN = "HYPERLINK "file://S/"\\S.*"; // 日期格式 static final String DATE_PATTERN = "yyyy/MM/dd"; // 验证用户输入日期的正则表达式 static final String DATE_FORMAT_PATTERN = "^\\d{4}/\\d{2}/\\d{2}$"; // 预定义的图书类型 static HashMap TYPES = new LinkedHashMap(); static { TYPES.put("1", "科学类"); TYPES.put("2", "文学类"); // 新的类别可以继续在后面添加 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