网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
前言: 朋友们,经过了一段JavaSE知识的历练,终于来到了这个艰难的图书馆管理系统。对于刚学习的小白来说,是一次不错的项目体验,将理论和实践结合起来,会是一次巨大提升。接下来,就说说这个图书馆管理系统吧!!!
图书馆管理系统
一、项目前提
首先对于项目,我们应该了解该项目所存在的板块(该项目主要是对进行数据保存,用于下一次数据的流通,而不想以往所做的程序只是一次性存储),并对应的板块功能想好,同时明白所需要掌握的知识。
知识点:
掌握java基本语法
熟悉使用流程控制
理解面向对象思想
熟练封装,继承,多态
熟悉使用接口,异常
熟悉使用集合
熟悉掌握I/o流相关操作
二、项目内容
1.项目结构图:
注意事项:每个板块功能可能会有什么说明,有什么要求需要注意下(文件则相对于生活中客户所提出的要求),否则不满足要求,就算完成了,也不会被客户所满意,将会耗费大量时间,所以一切要按照要求来。
2.主要的实体类和功能类
(1).实体类:
(2).功能类
3.项目内容
(1)读者信息管理:
分析:读者信息管理主要分为读者信息添加,读者信息查询和修改。首先对于读者信息添加模块,需要创建一个关于读者的实体类,对读者的所拥有的属性(姓名,性别,名字,出生日期,读者类型,和录入读者管理系统的唯一编号)和行为进行修饰。添加时,可以通过List类集合来进行通过管理。主要注意的是读者类型是需要进入到读者类型信息管理所添加过的类型。读者信息查询和修改:则可以根据获得List集合进行查询和修改(修改也需要注意其读者类型),删除则也通过List集合进行增删改查。
最后: 别忘了对获得集合通过IO流输出到文件里。
删除部分代码:
public static void insertReaderDlete(List<Reader> list) {
if (list.size() == 0) {
System.out.println("请添加读者为先,现没有读者信息!!!");
} else {
System.out.println("请输入你要删除的读者id:");
String id = TSUtility.readKeyBoard(15, true);
for (Reader a : list) {
if (a.getReaderid().equals(id)) {
System.out.println("是否删除Y/N(" + a.toString() + "):");
char c = TSUtility.readConfirmSelection();
if (c == 'Y') {
list.remove(a);
System.out.println("删除成功!!!");
return;
} else if (c == 'N') {
return;
}
}
}
System.out.println("输入id有误!");
}
}
(2)读者类型管理
分析:读者类型管理主要是对于读者信息的类型的区分,对于不同类型的,所可借阅的书籍本数和借阅期限,逾期罚金都与之不一样。所以读者类型主要是也可以用List集合进行增删改查,其注意的也是唯一编号的问题。而罚金可以通过Properties集合,以读者类型为键,罚金额度为值,进行增删改。
最后:也别忘了通过IO流输出到文件中。
罚金部分代码:
public static void Fine(File file,String s1,Properties p) throws IOException {
FileReader fileReader=new FileReader(file);
p.load(fileReader);
if(p.getProperty(s1)==null){
System.out.println("检查到你还未设置罚金,请先设置罚金!!");
System.out.println("请输入你要设置的罚金");
String s=TSUtility.readKeyBoard(2,false);
p.setProperty(s1,s);
FileWriter fileWriter=new FileWriter(file);
p.store(fileWriter,null);
fileWriter.close();
fileReader.close();
} else {
System.out.println("请输入你要修改的罚金("+p.getProperty(s1)+")");
String s=TSUtility.readString(2,p.getProperty(s1));
System.out.println("是否修改罚金(Y/N)");
char c = TSUtility.readConfirmSelection();
if (c == 'Y') {
p.setProperty(s1,s);
FileWriter fileWriter=new FileWriter(file);
p.store(fileWriter,null);
System.out.println("修改成功!!!");
fileWriter.close();
fileReader.close();
} else if (c == 'N') {
fileReader.close();
}
}
}
(3)图书信息管理
分析:其图书信息管理跟读者信息管理有很多相似的功能,也可通过List集合进行增删改查,主要注意的是图书类型的添加和修改时,需判断是否类型是图书管理系统中添加过的类型。最后:别忘了通过IO流输出到文件中去。
查询部分代码:
//查询全部读者
public static void selectBook(List<Book> list) {
for (Book reader : list) {
System.out.println(reader.toString());
}
}
//根据id查找相应的读者
public static Book selectBookById(List<Book> list, String id) {
Book r = new Book();
for (Book B : list) {
if (B.getISBN().equals(id)) {
r = B;
}
}
return r;
}
//根据名字找到对应的图书
public static List<Book> selectBookByName(List<Book> list, String name) {
![img](https://img-blog.csdnimg.cn/img_convert/e6cf676d2a0ce871a1b86e8853719a62.png)
![img](https://img-blog.csdnimg.cn/img_convert/92be71d005c5f40db1a987278455bb15.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**
C++开发知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**