/*一、 创建一个用于图书管理的图书类。(1)包含图书名称、ISBN编号 、作者、出版社、单价等属性;(2)定义各属性的set XXXX、getXXXX方法,用于对成员变量的封闭;(3)定义无参构造方法、带参构造方法;(4)定义输出方法,用于输出图书对象的信息。二、 利用图书类 ,设计新的图书库类,完成以下操作:(1)成员变量:包含图书数组、图书数量两个属性;(2)构造方法:以图书数量为参数,创建的图书库对象;(3)成员方法: 功能:添加图书 功能:根据给定的图书ISBN编号查找图书 功能:按出版社顺序,对所有图书进行排序 功能:输出所有图书信息 *从文件导入:将指定文本文件中的图书信息,写入图书库类的图书集合中(追加,或全新添加)。 *导出到文件:将当前图书集合中的图书信息,写入指定的文本文件,以便于用户查看。(文本文件的内容是字符)三、 利用图书库类,创建图书库管理类,使其能够通过菜单,进行图书库的管理。(1) 设计主菜单(创建,导入,退出)(2) 创建完成后,进入二级菜单(浏览,查找,添加,删除,排序,导出,退出)其中的"导入"是指,从指定文件读入系统定义的图书库类对象中;"导出"是指,将程序中的图书库类对象写入指定的文件中。其它功能:也可以添加一个功能 ,将图书库类集合中的图书信息以文本的形式保存在文件中,用户可以直接读取文件中的文本信息。*/import java.util.Scanner;import java.io.*; class Book implements Serializable{ private static final long serialVersionUID = 1L; private String bookname; private String number; private String author; private String press; private String price; public Book() { } public Book(String bookname,String number,String author,String press,String price) { this.bookname=bookname; this.number=number; this.author=author; this.press=press; this.price=price; } public String getBookname() { return this.bookname; } public String getNumber() { return this.number; } public String getAuthor() { return this.author; } public String getPress() { return this.press; } public String getPrice() { return this.price; } public void setBookname(String bookname) { this.bookname=bookname; } public void setNumber(String number) { this.number=number; } public void setAuthor(String author) { this.author=author; } public void setPress(String press) { this.press=press; } public void setPrice(String price) { this.price=price; } public void speak() { System.out.println(this.bookname+" "+this.number+" "+this.author+" "+this.press+" "+this.price); } public String ToString() { return this.bookname+" "+this.number+" "+this.author+" "+this.press+" "+this.price; }}class Library implements Serializable{ Book[] array=new Book[100]; Book book=new Book(); int num=0; public void add(String bookname,String number,String author,String press,String price) { array[num]=new Book(bookname,number,author,press,price); num++; } public void seek(String number) { int i; for(i=0;i<num;i++) { if(array[i].getNumber().equals(number)) { System.out.println("图书 编码 作者 出版社 价格"); array[i].speak(); break; } } if(i==(num+1)) { System.out.println("查无此物"); } } public void paixu() { Book t=new Book(); int i,j; for(i=0;i<num-1;i++) { for(j=1;j<num;j++) { if(array[i].getPress().compareTo(array[j].getPress())<0) { t=array[i]; array[i]=array[j]; array[j]=t; } } } } public void look() { System.out.println("图书 编码 作者 出版社 价格"); for(int i=0;i<num;i++) { array[i].speak(); } } public void delete(String bookname) { int i; for(i=0;i<num;i++) { if(array[i].getBookname().equals(bookname)) { array[i]=array[num-1]; num=num-1; System.out.println("删除成功"); } } if(i>=num) System.out.println("删除失败"); } public void daoru() throws Exception { System.out.println("开始读取"); FileInputStream fis =new FileInputStream("book.txt"); ObjectInputStream ois=new ObjectInputStream(fis); book=(Book)ois.readObject(); ois.close(); fis.close(); System.out.println("读取成功"); } public void daochu()throws Exception { FileOutputStream fos=new FileOutputStream("book1.txt"); ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(book); fos.close(); oos.close(); System.out.println("导出成功!"); } public void baocun()throws Exception { FileWriter fw=new FileWriter("图书管理.txt"); BufferedWriter bw=new BufferedWriter(fw); for(int i=0;i<num;i++) { String line=array[i].ToString(); bw.write(line); bw.newLine(); } bw.close(); fw.close(); System.out.println("保存成功!"); }} class Menu implements Serializable{ public void FirstMenu() throws Exception { Library library=new Library(); System.out.println("**********图书管理**********"); System.out.println("1、创建菜单"); System.out.println("2、导入 "); System.out.println("3、退出"); System.out.println("****************************"); System.out.println("请输入你要操作的序号"); Scanner sc=new Scanner(System.in); int a=sc.nextInt(); switch(a) { case 1: System.out.println("请输入图书数量:"); int n=sc.nextInt(); System.out.println("请输入"+n+"个图书的信息:"); for(int i=1;i<=n;i++) { System.out.println("输入第"+i+"个图书名称:"); String bookname=sc.next(); System.out.println("输入第"+i+"个图书编码:"); String number=sc.next(); System.out.println("输入第"+i+"个图书作者:"); String author=sc.next(); System.out.println("输入第"+i+"个出版社:"); String press=sc.next(); System.out.println("输入第"+i+"个图书价格:"); String price=sc.next(); library.add(bookname,number,author,press,price); } SecondMenu(); case 2: library.daoru(); SecondMenu(); case 3: System.out.println("谢谢使用,再见!"); System.exit(0); } } public void SecondMenu() throws Exception { Library li=new Library(); Scanner sc=new Scanner(System.in); do { System.out.println("**********图书管理**********" ); System.out.println("1、浏览" ); System.out.println("2、查找" ); System.out.println("3、添加" ); System.out.println("4、删除" ); System.out.println("5、排序" ); System.out.println("6、导出" ); System.out.println("7、导入 "); System.out.println("8、保存到文件"); System.out.println("9、退出" ); System.out.println("****************************" ); System.out.println("请输入你要操作的序号" ); int b=sc.nextInt(); switch(b) { case 1: System.out.println("图书信息"); li.look(); break; case 2: System.out.println("输入要查看的图书编号:"); String number=sc.next(); li.seek(number); break; case 3: System.out.println("请输入图书数量:"); int c=sc.nextInt(); System.out.println("请输入"+c+"个图书的信息:"); for(int i=1;i<=c;i++) { System.out.println("输入图书名称:"); String bookname=sc.next(); System.out.println("输入图书编码:"); number=sc.next(); System.out.println("输入图书作者:"); String author=sc.next(); System.out.println("输入出版社:"); String press=sc.next(); System.out.println("输入图书价格:"); String price=sc.next(); li.add(bookname,number,author,press,price); } break; case 4: System.out.println("输入要删除的图书名称"); String bookname=sc.next(); li.delete(bookname); break; case 5: System.out.println("按图书出版社顺序排为:"); li.paixu(); li.look(); break; case 6: li.daochu(); break; case 7: li.daoru(); break; case 8: li.baocun(); break; case 9: System.exit(0); } }while(true); }}class LibraryMenu implements Serializable{ public static void main(String[] args) throws Exception { Menu me=new Menu(); me.FirstMenu(); }}
添加回答
举报
0/150
提交
取消