一、任务要求
二、源码框架
三、源码
javabean: package maintest.day11_4_4.mailbox.bean.Express.java package maintest.day11_4_4.mailbox.bean; import lombok.Getter; import lombok.Setter; import java.util.Objects; @Getter@Setter public class Express { private String number; private String company; private int code; public Express(String number, String company, int code) { this.number = number; this.company = company; this.code = code; } public Express() { } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Express express = (Express) o; return code == express.code ; } @Override public int hashCode() { return Objects.hash(number, company, code); } @Override public String toString() { return "Express{" + "number='" + number + '\'' + ", company='" + company + '\'' + ", code=" + code + '}'; } }2.View: package maintest.day11_4_4.mailbox.view;
package maintest.day11_4_4.mailbox.view; import maintest.day11_4_4.mailbox.bean.Express; import maintest.day11_4_4.mailbox.dao.ExpressDao; import java.util.Scanner; /** * @author: LiLi * @className: View * @packageName: view * @description: 快递驿站的视图显示 * @data: 2020-10-16 23:13 **/ public class View { private static Scanner input=new Scanner(System.in); private int num; private String inputText; /** * @description: 欢迎 * @param: * @return: void */ public void welcome(){ System.out.println("-----欢迎来到LiLi的快递e站-----"); } /** * @description: 输入出错 * @param: * @return: void */ public void showFault(){ System.out.println("输入有误,请重新输入!"); } /** * @description: 结束 * @param: * @return: void */ public void bye(){ System.out.println("--------感谢您的使用!希望您身体健康,生活愉快!bye~~---------"); } public void success(int type){ switch (type){ case 1: System.out.println("添加成功!");break; case 2: System.out.println("删除成功!");break; case 3: System.out.println("更行快递成功!");break; case 4: System.out.println("操作成功");break; default:return; } } public void findFileFail(){ System.out.println("找不到指定文件!"); } public void readFileFail(){ System.out.println("读取文件内容出错!"); } public void writeFileFail(){ System.out.println("文件写出失败!"); } public void createFileFail(){ System.out.println("文件创建失败!"); } /** * @description: 提示 快递柜中已有对应快递 * @param: * @return: void */ public void expressExist(){ System.out.println("快递柜中已有此快递哦!"); } /** * @description: 提示 快递柜中没有对应快递 * @param: * @return: void */ public void expressNotExist(){ System.out.println("抱歉!快递柜中无此快递~"); } /** * @description: 输入需要删除的快递信息 * @param: * @return: String 返回需要删除的快递单号 */ public String getNumber(){ System.out.println("请输入要操作的快递单号:"); String number=input.nextLine(); return number; } /** * @description: 显示快递信息 * @param: * @return: void */ public void printExpress(Express e){ System.out.println("快递单号:"+e.getNumber()+"\t快递公司:"+e.getCompany()+"\t取件码"+e.getCode()); } /** * @description: 主菜单 * @param: * @return: int 1:管理员 2:普通用户 0:退出登录 */ public int vmenu(){ System.out.println("请选择身份:"); System.out.println("1:管理员\t2:普通用户\t0:退出登录"); //next nextLine区别:next不能读取空格;遇到空白符(空格 回车 tab等)结束;nextLine:读取回车键结束 inputText=input.nextLine(); try{ //将字符串转换成数据 num=Integer.parseInt(inputText); if(num<0||num>2){ showFault(); return vmenu(); } }catch (NumberFormatException e){ showFault(); return vmenu(); } return num; } /** * @description: 管理员界面 * @param: * @return: int 1:快递录入 2:删除快递 3:修改快递 4:查看所有快递 0:返回首页 -1:退出 */ public int cmenu(){ System.out.println("----欢迎来到管理员界面----"); System.out.println("请选择操作"); System.out.println("1:快递录入\t2:删除快递\t3:修改快递\t4:查看所有快递\t0:返回首页\t-1:退出"); inputText=input.nextLine(); try{ num=Integer.parseInt(inputText); if(num<-1||num>4){ showFault(); return cmenu(); } }catch (NumberFormatException e){ showFault(); return cmenu(); } return num; } /** * @description: 用户界面 * @param: * @return: int 1:取快递 0:返回主菜单 -1:退出 */ public int umenu(){ System.out.println("----欢迎来到用户界面----"); System.out.println("请选择操作"); System.out.println("1:取快递\t0:返回主菜单\t-1:退出"); inputText=input.nextLine(); try{ num=Integer.parseInt(inputText); if(num<-1||num>1){ showFault(); return umenu(); } }catch (NumberFormatException e){ showFault(); return umenu(); } return num; } /** * @description: 管理员操作:插入 * @param: * @return: Express */ public Express insert(){ System.out.println("请输入快递单号:"); String number=input.nextLine(); System.out.println("请输入快递公司"); String company=input.nextLine(); Express e=new Express(); e.setNumber(number); e.setCompany(company); return e; } /** * @description: 确认删除提示 * @param: * @return: int 1:确认删除 0:取消删除 */ public int confirmedDelete(){ System.out.println("确认删除?"); System.out.println("1:确认删除\t0:取消删除"); inputText=input.nextLine(); try{ num=Integer.parseInt(inputText); if(num<0||num>1){ showFault(); return confirmedDelete(); } }catch (NumberFormatException e){ showFault(); return confirmedDelete(); } return num; } /** * @description: 更新操作 * @param: * @return: void */ public void update(Express e){ System.out.println("请输入新的快递单号"); String number=input.nextLine(); System.out.println("请输入新的快递公司"); String company=input.nextLine(); e.setNumber(number); e.setCompany(company); } public int inputCode(){ System.out.println("请输入快递取货码"); int code; try{ code=input.nextInt(); if(code<10000||code>99999){ showFault(); return inputCode(); } input.nextLine(); }catch (Exception e){ showFault(); return inputCode(); } return code; } /** * @description: 显示邮柜中所有快递 * @param: Express[][] * @return: void */ public void printAll(){ for(int i=0;i<ExpressDao.delCab.getMailList().size();i++){ printExpress(ExpressDao.delCab.getMailList().get(i)); } } } Dao: package maintest.day11_4_4.mailbox.dao; package maintest.day11_4_4.mailbox.dao; import maintest.day11_4_4.mailbox.bean.Express; import maintest.day11_4_4.mailbox.controller.Main; import maintest.day11_4_4.mailbox.deliverycabinet.DeliveryCabinet; import java.io.*; import java.util.Iterator; import java.util.Random; import static maintest.day11_4_4.mailbox.controller.Main.v; /** * @version: V1.0 * @author: LiLi * @className: ExpressDao * @packageName: day08_3_6.dao * @description: 数组操作 * @data: 2020-10-17 8:52 **/ public class ExpressDao { private static final int DEL_CAPACITY=10;//快递柜初试容量 public static DeliveryCabinet delCab=new DeliveryCabinet(DEL_CAPACITY);//新建一个快递柜 private Random random=new Random(); public static final String filePath="src\\maintest\\day11_4_4\\mailbox\\Express.txt";//文件相对存储路径 /** * @description: 管理员操作:将文件中所有邮件信息读入集合中 用集合存储 * @param: * @return: boolean true:读取成功 false:读取失败 */ public boolean readExpressFromFile() { delCab.getMailList().clear();//清空集合 try { File file = new File(filePath); if(!file.exists()){ file.createNewFile(); } InputStreamReader read = new InputStreamReader(new FileInputStream(file)); BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; while ((lineTxt = bufferedReader.readLine()) != null) { Express express=new Express(); String[] s=lineTxt.split(" "); express.setNumber(s[0].toString()); express.setCompany(s[1].toString()); express.setCode(Integer.parseInt(s[2])); delCab.getMailList().add(express); } read.close(); return true; } catch (Exception e) { v.readFileFail(); } return false; } /** * @description: 管理员操作:判断快递柜中是否有对应单号的快递 * @param: String * @return: Express Express :快递柜中有对应快递 null:快递柜中无对应快递 */ public Express findByNumber(String number){ for(int i=0;i<delCab.getMailList().size();i++){ if(delCab.getMailList().get(i).getNumber().equals(number)){ return delCab.getMailList().get(i); } } return null; } /** * @description: 管理员操作 将一件邮件信息存入文件 * @param:Express * @return: void */ public void addExpressToFile(Express e){ try { File file = new File(filePath); if(!file.exists()){ file.createNewFile(); } OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file,true));//append:true BufferedWriter bufferedWriter = new BufferedWriter(write); String lineTxt = null; lineTxt=e.getNumber()+" "+e.getCompany()+" "+e.getCode(); if(file.length()>0)//文件非空 bufferedWriter.write("\r\n"+lineTxt);//换行 else{ //文件为空 bufferedWriter.write(lineTxt);//无需换行 } bufferedWriter.flush();//刷新缓存 ****注意!! write.close(); } catch (IOException e1) { v.writeFileFail(); } } /** * @description: 管理员操作: 删除原文将 创建新文件 并排除所需删除文件后将剩余所有文件写入 * @param: Express * @return: void */ public void writeExpressToFile(Express e,File file){ try { OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file,true)); BufferedWriter bufferedWriter = new BufferedWriter(write); String lineTxt = null; lineTxt=e.getNumber()+" "+e.getCompany()+" "+e.getCode(); if(file.length()>0)//文件非空 bufferedWriter.write("\r\n"+lineTxt);//换行 else{ //文件为空 bufferedWriter.write(lineTxt);//无需换行 } bufferedWriter.flush(); write.close(); } catch (IOException e1) { v.writeFileFail(); } } /** * @description: 管理员操作:像快递柜中添加快递 * @param: Express * @return: void */ public boolean add(Express e){ if(!existEmpty()) return false; //产生随机取件码 int code=randomCode(); e.setCode(code); delCab.getMailList().add(e); addExpressToFile(e); return true; } /** * @description: 产生[90000,99999]不重复的随机取件码 * @param: * @return: int */ public int randomCode(){ while (true){ int code= random.nextInt(90000)+10000; Express e=findByCode(code); if(e==null){ return code; } } } /** * @description: 判断邮件柜是否已满 * @param: * @return: boolean */ public boolean existEmpty(){ return delCab.getMailList().size()<DEL_CAPACITY; } public File creatNewFile(){ try{ File file = new File(filePath); if(file.exists()){ file.delete(); file.createNewFile(); return file; } }catch (Exception e){ Main.v.createFileFail(); } return null; } /** * @description: 管理员操作:删除快递柜中对应单号的快递 * @param: Express * @return: void */ public boolean delete(Express e) { readExpressFromFile(); delCab.getMailList().remove(e); File file=creatNewFile(); try{ Iterator<Express> it=delCab.getMailList().iterator(); while(it.hasNext()){ Express e1=(Express)it.next(); writeExpressToFile(e1,file); } return true; }catch (Exception e1){ v.writeFileFail(); } return false; } /** * @description: 管理员操作:在快递柜中寻找对应取件码的快递件 * @param: int code * @return: Express Express:找到对应取件码的快递 null:未找到对应的快递 */ public Express findByCode(int code){ for(int i=0;i<delCab.getMailList().size();i++){ if(delCab.getMailList().get(i)!=null&&delCab.getMailList().get(i).getCode()==code) { return delCab.getMailList().get(i); } } return null; } } Main: package maintest.day11_4_4.mailbox.controller.Main.java; package maintest.day11_4_4.mailbox.controller; import maintest.day11_4_4.mailbox.bean.Express; import maintest.day11_4_4.mailbox.dao.ExpressDao; import maintest.day11_4_4.mailbox.view.View; import java.util.Scanner; /** * @version: V1.0 * @author: LiLi * @className: Game * @packageName: day08_3_6.controller * @description: * @data: 2020-10-17 7:20 **/ public class Main { private static Scanner input=new Scanner(System.in); public static View v=new View(); private static ExpressDao m=new ExpressDao(); public static void main(String[] args) { v.welcome(); while(true){ int num=v.vmenu(); switch (num){ //管理员界面 case 1:cController();break; //用户界面 case 2:uController();break; //退出系统 case 0:v.bye();return; default:return; } } } /** * @description: 管理员界面 1:快递录入 2:删除快递 3:修改快递 4:查看所有快递 0:返回首页 -1:退出 * @param: * @return: */ public static void cController(){ int num=v.cmenu(); switch (num){ //快递录入 case 1: { Express e1=v.insert();//快递信息录入提示 if(!m.readExpressFromFile()){ break; } Express e2=m.findByNumber(e1.getNumber());//快递柜是否已有此快递 if(e2==null){ if(m.add(e1)){//快递柜无此快递 添加 v.success(1); } }else{ v.expressExist();//快递柜有此快递 提示 } }break; //删除快递 case 2:{ String number=v.getNumber();//快递单号录入 提示 if(!m.readExpressFromFile()){ break; } Express e1=m.findByNumber(number);//快递柜是否已有此快递 if(e1==null){ v.expressNotExist();//快递柜无此快递 提示 }else { int type=v.confirmedDelete();//提示:确认删除? 1:确认删除 0:取消 if(type==1){ if(!m.delete(e1)) {//删除失败 break; } else{//删除成功 v.success(2); } }else { return; } } }break; //更新快递 case 3: { String number = v.getNumber();//快递单号录入 提示 if(!m.readExpressFromFile()){ break; } Express e1 = m.findByNumber(number);//快递柜是否已有此快递 if (e1 == null) { v.expressNotExist();//快递柜无此快递 提示 } else { Express e2=new Express(); v.update(e2);//更新快递信息录入 提示 if(!m.delete(e1)){//删除失败 break; } if(!m.add(e2)){//添加失败 break; } v.success(3); } }break; //查找所有快递 case 4:{ if(!m.readExpressFromFile()){//从文件中读取所有快递失败 break; } v.printAll(); }break; //返回主界面 case 0:return; //退出系统 case -1:v.bye();System.exit(0); } } /** * @description: 管理员界面 1:取快递 0:返回主菜单 -1:退出 * @param: * @return: */ public static void uController(){ int num=v.umenu(); switch (num){ //取件 case 1: { int code = v.inputCode();//输入取件码 if(!m.readExpressFromFile()){//从文件中读取所有快递失败 break; } Express e = m.findByCode(code);//找到对应快递 if(!m.delete(e)){ //删除失败 break; } v.success(4); if (e == null) { v.expressNotExist();//提示 没有对应快递 } else { v.printExpress(e); //提示 显示快递信息 } }break; //返回首页 case 0:return; //退出系统 case -1:v.bye();System.exit(0);break; } } } DeliveryCabinet package maintest.day11_4_4.mailbox.deliverycabinet; import lombok.Getter; import lombok.Setter; import maintest.day11_4_4.mailbox.bean.Express; import java.util.ArrayList; @Getter@Setter public class DeliveryCabinet { private int delCapacity;//快递柜容量 private String delName;//快递柜名 private ArrayList<Express> mailList=new ArrayList<>();//存储快递的数据结构 public DeliveryCabinet(int delCapacity) { this.delCapacity=delCapacity; } public DeliveryCabinet(int delCapacity, String delName) { this.delCapacity=delCapacity; this.delName=delName; } }四、源码下载:
链接 提取码:wh2h一、任务要求
管理员登陆图书管理 2.1 图书新增 2.2 图书修改 2.3 图书删除 2.4 根据图书名称模糊查找图书 2.5 查看所有图书 (三种排序) - 价格从高到低排序 - 价格从低到高排序 - 新旧排序(出版日期排序)二、源码框架 三、源码
javabean :Administrator.java Book.jave package maintest.day11_4_4.librarysystem.bean; import lombok.Getter; import lombok.Setter; @Getter@Setter public class Administrator { private String userName; private String password; public Administrator() { } public Administrator(String userName, String password) { this.userName = userName; this.password = password; } } package maintest.day11_4_4.librarysystem.bean; import lombok.Getter; import lombok.Setter; import java.util.Comparator; import java.util.Date; import java.util.Objects; @Getter@Setter public class Book { private String book_name;//书名 private double price;//价格 private Date publication_date;//出版日期 public Book() { } public Book(String book_name, double price, Date publication_date) { this.book_name = book_name; this.price = price; this.publication_date = publication_date; } @Override public String toString() { return "Book{" + "book_name='" + book_name + '\'' + ", price=" + price + ", publication_date=" + publication_date + '}'; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Book book = (Book) o; return Double.compare(book.price, price) == 0 && Objects.equals(book_name, book.book_name) && Objects.equals(publication_date, book.publication_date); } @Override public int hashCode() { return Objects.hash(book_name, price, publication_date); } //按照书籍价格进行升序排序 价格相同依照姓名排序 public static class BookCompareByPriceAsc implements Comparator {// 书籍自带的一个比较器 public int compare(Object o1, Object o2) { Book s1 = (Book) o1;// 转型 Book s2 = (Book) o2;// 转型 int result = s1.getPrice()> s2.getPrice() ? 1 : (s1.getPrice() == s2.getPrice() ? 0 : -1); if (result == 0) { result = s1.getBook_name().compareTo(s2.getBook_name()); } return result; } } //按照书籍价格进行降序排序 价格相同依照姓名排序 public static class BookCompareByPriceDesc implements Comparator {// 老师自带的一个比较器 public int compare(Object o1, Object o2) { Book s1 = (Book) o1;// 转型 Book s2 = (Book) o2;// 转型 int result = s1.getPrice()> s2.getPrice() ? -1 : (s1.getPrice() == s2.getPrice() ? 0 : 1); if (result == 0) { result = s1.getBook_name().compareTo(s2.getBook_name()); } return result; } } //按照书籍出版日期进行排序 public static class BookCompareByDate implements Comparator {// 老师自带的一个比较器 public int compare(Object o1, Object o2) { Book s1 = (Book) o1;// 转型 Book s2 = (Book) o2;// 转型 int result = s1.getPublication_date().compareTo(s2.getPublication_date()) ; if (result == 0) { result = s1.getBook_name().compareTo(s2.getBook_name()); } return result; } } } controller: Main.java package maintest.day11_4_4.librarysystem.controller; import maintest.day11_4_4.librarysystem.bean.Administrator; import maintest.day11_4_4.librarysystem.bean.Book; import maintest.day11_4_4.librarysystem.dao.BookDao; import maintest.day11_4_4.librarysystem.view.View; /** * @version: V1.0 * @author: LiLi * @className: Library * @packageName: day11_4_4.librarysystem.controller * @description: * @data: 2020-10-22 10:55 **/ public class Main { public static View v=new View(); private static BookDao m=new BookDao(); public static void main(String[] args) { v.welcome(); Administrator admin=v.vlogin();//管理员登录 if(!m.login(admin)){ v.showFault(4); } while(true){ int num=v.cmenu();//主菜单 switch (num){ //新增图书 case 1:{ Book book=v.addBook();//图书信息录入提示 System.out.println(book.getPublication_date()); if(!m.readExpressFromFile()){ break; } if(m.add(book)){ v.success(); }else{ v.expressExist();//图书馆有此图书 提示 } }break; //修改图书 case 2:{ String name=v.findByBookName();//找到要修改的旧书书名 if(!m.readExpressFromFile()){ break; } Book book1=m.findByBookName(name);//找到该书 Book book2=v.update();//获取新书对象 m.delete(book1);//删除旧书对象 m.add(book2);//加入新书 }break; //删除图书 case 3:{ String name=v.findDeleteBookName();//输入要删除的书名 if(!m.readExpressFromFile()){ break; } Book book=m.findByBookName(name);//找到要删除的图书 int chose=v.confirmedDelete();//确认删除 if(chose==1){ m.delete(book);//删除指定图书 }else { break; } }break; //模糊查询 case 4:{ String book_name=v.findBook();//输入查询信息 if(!m.readExpressFromFile()){ break; } m.matchFindBooks(book_name);//根据查询信息进行模糊查询 v.printMatchBooks();//打印查询结果 }break; //查看图书 case 5:{ if(!m.readExpressFromFile()){ break; } num=v.showAllBooks();//输入以哪种方式进行打印 if(num==1){ v. showBookByPriceAsc();//价格从低到高排序 }else if(num==2){ v.showBookByPriceDesc();//价格从高到低排序 }else { v.showBookByDate();//新旧排序(出版日期排序) } }break; case -1:System.exit(0);//退出系统 case 0:break; //返回主页面 default:break; } } } } dao:BookDao.java package maintest.day11_4_4.librarysystem.dao; import maintest.day11_4_4.librarysystem.bean.Administrator; import maintest.day11_4_4.librarysystem.bean.Book; import maintest.day11_4_4.librarysystem.controller.Main; import java.io.*; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.TreeSet; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @version: V1.0 * @author: LiLi * @className: BookDao * @packageName: day10_4_3.dao * @description: 集合操作 * @data: 2020-10-20 0:49 **/ public class BookDao { public static TreeSet<Book> bookList=new TreeSet<Book>(new Book.BookCompareByPriceAsc()); public static List<Book> arrList=new ArrayList<Book>(); private static final int CAPACITY=100;//图书馆初始图书容量 private static final ArrayList<Administrator> adminList=new ArrayList<>(); public static final String filePath="src\\maintest\\day11_4_4\\librarysystem\\Library.txt";//文件相对存储路径 static { adminList.add(new Administrator("admin","admin")); } public boolean login(Administrator admin){ Iterator it=adminList.iterator(); while(it.hasNext()){ Administrator user=(Administrator)it.next(); if(user.getUserName().equals(admin.getUserName())&&user.getPassword().equals(admin.getPassword())) return true; } return false; } /** * @description: 模糊查询 * @param: String * @return: void */ public void matchFindBooks(String name){ Pattern pattern = Pattern.compile(name); Iterator<Book> it=bookList.iterator(); while (it.hasNext()){ Book book=(Book)it.next(); Matcher matcher = pattern.matcher(book.getBook_name()); if(matcher.find()){ arrList.add(book); } } } /** * @description: 管理员操作:将文件中所有邮件信息读入集合中 用集合存储 * @param: * @return: boolean true:读取成功 false:读取失败 */ public boolean readExpressFromFile() { bookList.clear();//清空集合 try { File file = new File(filePath); if(!file.exists()){ file.createNewFile(); } InputStreamReader read = new InputStreamReader(new FileInputStream(file)); BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; while ((lineTxt = bufferedReader.readLine()) != null) { Book book=new Book(); String[] s=lineTxt.split(" "); book.setBook_name(s[0].toString()); book.setPrice(Double.parseDouble(s[1])); SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" ); book.setPublication_date(sdf.parse(s[2])); bookList.add(book); } read.close(); System.out.println(bookList.size()); return true; } catch (Exception e) { Main.v.readFileFail(); } return false; } /** * @description: 管理员操作 将一件邮件信息存入文件 * @param:Express * @return: void */ public void addExpressToFile(Book b){ try { File file = new File(filePath); if(!file.exists()){ file.createNewFile(); } OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file,true));//append:true BufferedWriter bufferedWriter = new BufferedWriter(write); String lineTxt = null; SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" ); lineTxt=b.getBook_name()+" "+b.getPrice()+" "+sdf.format(b.getPublication_date()); if(file.length()>0)//文件非空 bufferedWriter.write("\r\n"+lineTxt);//换行 else{ //文件为空 bufferedWriter.write(lineTxt);//无需换行 } bufferedWriter.flush();//刷新缓存 ****注意!! write.close(); } catch (IOException e1) { Main.v.writeFileFail(); } } public File creatNewFile(){ try{ File file = new File(filePath); if(file.exists()){ file.delete(); file.createNewFile(); return file; } }catch (Exception e){ Main.v.createFileFail(); } return null; } /** * @description: 管理员操作: 删除原文将 创建新文件 并排除所需删除文件后将剩余所有文件写入 * @param: Express * @return: void */ public void writeExpressToFile(Book b,File file){ try { OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file,true)); BufferedWriter bufferedWriter = new BufferedWriter(write); String lineTxt = null; SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" ); lineTxt=b.getBook_name()+" "+b.getPrice()+" "+sdf.format(b.getPublication_date()); if(file.length()>0)//文件非空 bufferedWriter.write("\r\n"+lineTxt);//换行 else{ //文件为空 bufferedWriter.write(lineTxt);//无需换行 } bufferedWriter.flush(); write.close(); } catch (IOException e1) { Main.v.writeFileFail(); } } /** * @description: 图书馆容量是否已满 * @param: * @return:boolean true:已满 false:未满 */ public boolean existEmpty(){ return bookList.size()<CAPACITY; } /** * @description: 添加图书 * @param: * @return:boolean true:添加成功 false:添加失败 */ public boolean add(Book book){ if(!existEmpty()) return false; bookList.add(book); addExpressToFile(book); System.out.println(bookList.size()); return true; } /** * @description: 根据书名找图书 * @param:String * @return:Book 成功:返回相应对象 失败:返回null */ public Book findByBookName(String name){ Iterator<Book> it=bookList.iterator(); while (it.hasNext()){ Book book=(Book)it.next(); if(book.getBook_name().equals(name)){ return book; } } return null; } /** * @description: 删除图书 * @param: * @return:boolean */ public void delete(Book book){ bookList.remove(book); Iterator<Book> it=bookList.iterator(); File file=creatNewFile(); while(it.hasNext()){ Book b=(Book)it.next(); writeExpressToFile(b,file); } System.out.println("delete:"+bookList.size()); } } view :View.java package maintest.day11_4_4.librarysystem.view; import maintest.day11_4_4.librarysystem.bean.Administrator; import maintest.day11_4_4.librarysystem.bean.Book; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Iterator; import java.util.Scanner; import java.util.TreeSet; import static maintest.day11_4_4.librarysystem.dao.BookDao.arrList; import static maintest.day11_4_4.librarysystem.dao.BookDao.bookList; public class View { private Scanner input=new Scanner(System.in); private String inputText; private int num; //提示:欢迎使用 public void welcome(){ System.out.println("--------欢迎来到LiLi的图书管理系统-------"); } //提示:书籍录入成功 public void success(){ System.out.println("书籍录入成功!"); } //提示:录入失败 public void expressExist(){ System.out.println("录入失败,本书图书馆已有!"); } public void findFileFail(){ System.out.println("找不到指定文件!"); } public void readFileFail(){ System.out.println("读取文件内容出错!"); } public void writeFileFail(){ System.out.println("文件写出失败!"); } public void createFileFail(){ System.out.println("文件创建失败!"); } /** * @description: 提示:输入要删除的书名 * @param: * @return:String 返回书名 */ public String findDeleteBookName(){ System.out.println("请输入要删除的图书书名:"); String book_name; try{ book_name=input.nextLine(); }catch (Exception e){ showFault(3); return findDeleteBookName(); } return book_name; } /** * @description: 提示:输入查询所有图书的排列方式 * @param: * @return:int 1:价格从低到高排序 2:价格从高到低排序 3:出版日期排序 */ public int showAllBooks(){ System.out.println("请选择查询方式"); System.out.println("1:价格从低到高排序\t2:价格从高到低排序\t3:出版日期排序"); int num; try{ num=input.nextInt(); input.nextLine(); }catch (Exception e){ showFault(3); return showAllBooks(); } return num; } /** * @description: 按价格从低到高打印所有图书 */ public void showBookByPriceAsc(){ TreeSet<Book> ts = new TreeSet<Book>(new Book.BookCompareByPriceAsc()); ts.addAll(bookList); Iterator<Book> it=ts.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } /** * @description: 按价格从高到低打印所有图书 */ public void showBookByPriceDesc(){ TreeSet<Book> ts = new TreeSet<Book>(new Book.BookCompareByPriceDesc()); ts.addAll(bookList); Iterator<Book> it=ts.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } /** * @description: 按日期打印所有图书 */ public void showBookByDate(){ TreeSet<Book> ts = new TreeSet<Book>(new Book.BookCompareByDate()); ts.addAll(bookList); Iterator<Book> it=ts.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } /** * @description: 管理员主界面 * @return: int 1:添加图书 2:修改图书 3:删除图书 4:模糊查询 5:查看所有图书 0:返回首页 -1:退出 */ public int cmenu(){ System.out.println("----欢迎来到管理员界面----"); System.out.println("请选择操作"); System.out.println("1:添加图书\t2:修改图书\t3:删除图书\t4:模糊查询\t5:查看所有图书\t0:返回首页\t-1:退出"); inputText=input.nextLine(); try{ num=Integer.parseInt(inputText); if(num<-1||num>5){ showFault(3); return cmenu(); } }catch (NumberFormatException e){ showFault(3); return cmenu(); } return num; } //提示:管理员登录失败 public void showFault(int type){ switch (type){ case 1:System.out.println("用户名或者密码输入错误,请重新登录!");break; case 2: System.out.println("日期格式有误,请重新输入!");break; case 3: System.out.println("输入有误,请重新输入!");break; case 4: System.out.println("用户名或者密码错误,登录失败"); System.exit(0); default:break; } } //提示输入 :管理员登录 public Administrator vlogin(){ System.out.println("---管理员登录----"); Administrator administrator=new Administrator(); System.out.println("请输入用户名:"); try{ administrator.setUserName(input.nextLine()); System.out.println("请输入密码:"); administrator.setPassword(input.nextLine()); }catch (Exception e){ showFault(1); return vlogin(); } return administrator; } //输入提示:输入需要添加的图书信息 public Book addBook(){ Book book=new Book(); try{ System.out.println("请输入书名:"); book.setBook_name(input.nextLine()); System.out.println("请输入图书价格:"); book.setPrice(input.nextDouble()); input.nextLine(); System.out.println("请输入出版日期(2020-10-19):"); String date=input.nextLine(); SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd"); book.setPublication_date(format.parse(date)); } catch (ParseException e) { showFault(2); return addBook(); } return book; } /** * @description: 输入要修改的旧书的书名 */ public String findByBookName(){ System.out.println("请输入需要更新的旧书书名:"); String book_name=null; try{ book_name=input.nextLine(); }catch (Exception e){ showFault(3); return findByBookName(); } return book_name; } //输入提示: 输入要更新的图书信息 public Book update(){ Book newBook=new Book(); try{ System.out.println("请输入新的书名:"); newBook.setBook_name(input.nextLine()); System.out.println("请输入新的图书价格:"); newBook.setPrice(input.nextDouble()); input.nextLine(); System.out.println("请输入新的出版日期(2020-10-19):"); String date=input.nextLine(); SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd"); newBook.setPublication_date(format.parse(date)); } catch (ParseException e) { showFault(2); return addBook(); } return newBook; } /** * @description: 提示:是否确认删除 * @return :int 1:确认 0:取消 */ public int confirmedDelete(){ System.out.println("确认删除?"); System.out.println("1:确认删除\t0:取消删除"); String inputText=input.nextLine(); int num=-1; try{ num=Integer.parseInt(inputText); if(num<0||num>1){ showFault(3); return confirmedDelete(); } }catch (NumberFormatException e){ showFault(3); return confirmedDelete(); } return num; } /** * @description: 提示:输入书记查询时的书名 */ public String findBook(){ System.out.println("----图书查询-----"); System.out.println("请输入书名信息:"); String bookName; try { bookName = input.nextLine(); }catch (Exception e){ showFault(3); return findBook(); } return bookName; } /** * @description: 打印模糊查询结果 */ public void printMatchBooks(){ for(int i=0;i<arrList.size();i++){ System.out.println(arrList.get(i)); } } }四、源码下载
链接 提取码:51ig