Java实验1-文件IO

时间:2022-09-25 06:07:05

目标:掌握Java类的创建,Java  I/O操作,Java集合类的使用等

内容:

老师非常喜欢读书,为了便于查阅,他每次买书回家后就在笔记本上登记每本书的详细信息(书名、作者、出版社、出版日期、价格),采用这种手工记录方式管理,检索书籍非常不方便。请你试着用Java编程,帮助他进行计算机管理。要求如下:

(1)  把每本书的信息存到文件“D:/BookList.txt”中,格式如下:

Java 2大全,Herbert Schildt,电子工业出版社, 2003/01,86

面向对象软件工程,Stephen R.Schach,机械工业出版社,2002/08,56

软件工程,Roger S. Pressman,清华大学出版社,2001/01,42

Design Patterns,Erich Gamma,机械工业出版社,2002/09,98

软件工程,张海藩,人民邮电出版社,2002/07,37

现代软件工程,孙涌,北京希望电子出版社,2002/08,42

面向对象技术UML教程,王少锋,清华大学出版社,2004/02,54

(2)    设计“书”类,包括属性:书名、作者、出版社版号、出版日期、价格;和设置、得到这些属性值的方法,并用Java实现;

(3)    设计“书包”类,包括一个TreeSet属性,代表所有书的集合,和向书包中加书的方法,从书包中拿出书的方法,以及得到所有书价格的方法,并用Java实现;

(4)    设计“图书管理员”类,包括一个“书包”类属性,代表对所有书的管理,和从数据文件“D:/BookList.txt”中读取每本书的信息加入书包中的方法,和在屏幕上打印所有书的信息(格式如下)的main方法,并用Java实现

 

书名              作者           出版社版号    出版日期   价格

-------------------------------------------------------------

Java 2大全  Herbert Schildt   电子工业出版社   2003/01   86

实现代码清单:Book.java(Book的类模型)SchoolBag.java(书包的类模型)BookManager.java(图书管理员类模型)

代码一:Book.java

public class Book implements Comparable{
    private    String    bookname;
    private    String    author;
    private    String    press;
    private    String    date;
    private    int       price;
    
    public Book (){
    
    }
    public  Book (String bookname,String author,String press,String date,int price) {
            this.bookname = bookname;
            this.author = author;
            this.press = press;
            this.date = date;
            this.price = price;
    }
    
    public void setBookname (String bookname) {
        this.bookname = bookname;    
    }    
    public void setAuthor (String author) {
        this.author = author;
    }
    public void setPress (String press) {
        this.press = press;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    
    public String getBookname() {
        return bookname;
    }
    public String getAuthor() {
        return author;
    }
    public String getpress() {
        return press;
    }
    public int getPrice() {
        return price;
    }
    public String toString(){
        return bookname+"  "+author+"  "+press+"  "+date+"  "+price;
    }
    public int compareTo(Object o){
            Book b = (Book)o;
            if((this.bookname.compareTo(b.bookname))>0){
                    return 1;
            }
            else if((this.bookname.compareTo(b.bookname))==0){
                    return 0;
            }
            else    return -1;
    }
    
    public static void main(String[] args){
            Book myBook= new Book("ff","yy","love you","haha",712);
            System.out.println(myBook);
    }
} 

代码2:BookManager.java

import java.util.*;

public class SchoolBag {
       private  TreeSet<Book> booklist = new TreeSet<Book>();
       
       public SchoolBag() {
        
       }
       public SchoolBag (Book book) {
                booklist.add(book);
       }
       public ArrayList<Integer> getAllPrice(){
              ArrayList<Integer> bookprices = new ArrayList<Integer> ();
              for(Book element: booklist) {
                bookprices.add(element.getPrice());
              }
              return bookprices;
       }
       
       public boolean add(Book book) {
            
             return    booklist.add(book);
       }
           
       public <E extends TreeSet<Book>>  void setBooklist(E treeBook){
              this.booklist = treeBook;
       }    //泛型方法,将泛型放在函数放回类型之前
       public TreeSet<Book> getBooklist(){
              return booklist;
       }
        public boolean remove(Book book) {
            if(booklist.isEmpty()) {
               System.out.println("Warning ,SchoolBag is Empty!");
               return false;
            }
            else{
                booklist.remove(book);
                return true;
            } 
        }
        public static void main(String[] args){
                Book mybook = new Book("xx","ff","geg","fege",12);
                Book herbook = new Book("ss","ll","hh","rr",712);
                //测试构造方法
                SchoolBag sb = new SchoolBag(mybook);
                //测试add
                sb.add(herbook);
                System.out.println(sb.booklist);
                TreeSet<Book> bl = sb.getBooklist();
                System.out.println(bl);
                //测试remove
                sb.remove(mybook);
                System.out.println(bl);
                //测试setBooklist
                Book hisbook = new Book("hh","ss","nn","gg",464);
                Book itsbook = new Book("ff","hh","KK","tt",375);
                TreeSet<Book> b2 = new TreeSet<Book>();
                b2.add(hisbook);
                b2.add(itsbook);
                sb.setBooklist(b2);
                System.out.println("-----------------------");
                System.out.println(sb.booklist);
                //测试printAllPrice
                ArrayList al = sb.getAllPrice();
                System.out.println(al);
                
        }
       
}

代码3:BookManager.java

import java.util.*;
import java.io.*;

public class BookManager {
        private SchoolBag schoolBag = new SchoolBag();
        
        public BookManager(){
        
        }
        public BookManager(SchoolBag s){
        
        }
        
        public  void readData() {
        
            try {
                    File data = new File("BookList.txt");
                    FileReader fr = new FileReader(data);
                    BufferedReader br = new BufferedReader(fr);
                    
                    String[] content = new String[5];
                    Book book;
                    String str;
                    while((str = br.readLine())!=null){
                            content = str.trim().split(",|,");
                            book = new Book();
                            book.setBookname(content[0].trim());
                            book.setAuthor(content[1].trim());
                            book.setPress(content[2].trim());
                            book.setDate(content[3].trim());
                            book.setPrice(Integer.parseInt(content[4].trim()));
                            schoolBag.add(book);
                    }
                    br.close();
                }catch(IOException e) {
                        e.printStackTrace();
                }
        }
        
        public  void print() {
                System.out.println("------------------------------------------------------------------------");
                System.out.println("书名                 作者          出版号      出版日期     价格      ");
                System.out.println("------------------------------------------------------------------------");
                TreeSet<Book> treeBook = schoolBag.getBooklist();
                for(Book book:treeBook){
                    System.out.println(book.toString());
                }
                
        }
        
        public static void main(String[] args) {
                    BookManager bm = new BookManager();
                    bm.readData();
                    bm.print();
                    
        }
}

程序运行后的结果(使用JDK在DOS下运行的控制台界面)

Java实验1-文件IO