数学与计算机学院
实 验 报 告
( 2010/2011 学年 第 1 学期)
课程名称 课程代码
Java程序设计
8421991
任课教师 指导教师 学生姓名 学 号 32 专 业
软件工程
年 级 综合成绩
2008级
实验名称 实验类型 实验编号 √验证 □综合 1 类与对象 实验学时 分组号 6 1 指导教师 实验日期 实验时间 实验地点 夏梅宸 2010-10-17 2010-10-24 2010-10-31 6A-413 一、 实验目的和要求 1. 熟悉和掌握如何声明类、创建类的实例; 2. 熟悉和掌握类和成员对象的修饰符的使用; 3. 掌握类的方法的定义和调用; 4. 掌握类的继承;掌握类的构造方法的使用。 5. 掌握多态、接口、抽象类的定义和使用; 6. 掌握基础类的使用; 7. 掌握String、StringBuffer类和Number、Arrays等类的使用; 8. 要求能熟练使用开发工具,设计java的类及其应用。 二、实验环境(实验设备) 硬件:微型计算机设备一套 软件: Windows XP Java JDK+Netbean IDE 三、实验内容 设计一个小型的图书馆管理系统。假设在一个小型图书馆中有书籍,期刊,报纸,为此设计一个类层次结构,用来描述书籍,期刊,与报纸的相关信息,并编写一个设计类,验证所设计类的使用情况。如:书籍 信息包括 名称、书号、作者、出版社、价格。 要求如下: 1) 尽可能保证程序代码的可重用性。 2) 请编写实现下列功能: 1. 增加; 2. 更新; 3. 删除; 4. 查询; 5. 排序; 6. 打印: 可以设计一个出版物publisher的超类,书籍book, 期刊journal, 报纸newpaper作为其子类。
实验解答: 1. 写出类publisher的变量定义 答:publisher的变量定义如下: protected String name; protected String isbn; protected String publisher; protected double price; protected String author; 。 2.类publisher的方法有哪些请写出来. 答:类Publication的方法有: protected Publication(){} public Publication(String name,String isbn,String author,String publisher,double price) {=name;=isbn;=author;=publisher;=price;} public String getName(){return name;} public String getIsbn(){return isbn;} public String getAuthor(){return author;} public String getPublisher(){return publisher;} public double getPrice(){return price;} public void setName(String name){=name;} public void setIsbn(String isbn){=isbn;} public void setAuthor(String author){=author;} public void setPublisher(String publisher){=publisher;} public void setPrice(double price){=price;} public static String readString(String s) throws IOException { \": \"); BufferedReader buf=new BufferedReader(new InputStreamReader); return (); } public static Double readDouble(String s) throws IOException,NumberFormatException { \": \"); BufferedReader buf=new BufferedReader(new InputStreamReader); String line=(); return (line); } public static int readInt(String s) throws IOException,NumberFormatException { \": \"); BufferedReader buf=new BufferedReader(new InputStreamReader); String line=(); return (line); } public void setInfo(String name,String isbn,String author,String publisher,double price) {=name;=isbn;=author;=publisher;=price;} public String toString(){return \"出版物名字:\"+name+\" ISBN:\"+isbn+\" 编者:\"+ author+\" 出版社:\"+publisher+\" 单价:\"+price;} 3. public void print(){类book是如何定义为类publisher的子类的子类的定义格式 答:类Book是这样定义为类Publication的子类的:public class Book extends Publication。具体如下: public class Book extends Publication { public Book(){super();} public Book(String name,String isbn,String author,String publisher,double price) {super(name,isbn,author,publisher,price);} public String toString(){return \"书 名:\"+name+\" ISBN:\"+isbn+\" 作者:\" +author+\" 出版社:\"+publisher+\" 单价:\"+price;} public Book addBook() throws IOException { Book book=new Book(readString(\"书名\"),readString(\"ISBN\"), readString(\"作者\"),readString(\"出版社\"),readDouble(\"价格\")); return book; } public void print(){。 子类的定义格式为public class 四、实验小结(包括问题和解决方法、心得体会、意见与建议等) 1. 给出这几个类的结构的UML图 Publication Book Periodical Newspaper Operation TestMiniBMS 2.写出接口的定义格式 答:接口定义格式为 public interface <接口名称>{接口中的内容;} 3.如果有下列语句 book b1[]=new book[6];它表示什么含义其中b1[1]还需要创建吗为什么 答:语句“book b1[]=new book[6];”的含义是定义一个包含6个book对象的数组b1(或者数组引用b1)。其中b1[1]还需要创建,因为虽然定义了b1数组,但是系统并没有给其分配内存空间,还需要根据变量的类型用new方法给其分配对应的内存空间,这样才真正的创建了b1[1]。 4.通过本次实验,你有些什么收获有什么不足 答:通过本实验,我进一步掌握了Java语言中类的声明及创建方法;熟悉了类和对象的修饰符作用和访问权限;掌握了类中的方法的定义和调用;熟悉了类的继承、构造方法、抽象类的定义和使用方法;掌握了多态以及Java语言中一些基础、常用类的应用方法;熟悉了Java的开发工具。 不足的是对于类结构较多、较复杂的程序还不是很清晰;在复杂类各层次的调用还不是很熟练;对 设计多个类、类的联系较复杂、成员方法的调用较为繁复的程序设计思路不够清晰。 五、指导教师评语 成 绩 批阅人 日 期 程序代码 ; public class Publication { protected String name; protected String isbn; protected String publisher; protected double price; protected String author; protected Publication(){} public Publication(String name,String isbn,String author,String publisher,double price) {=name;=isbn;=author;=publisher;=price;} public String getName(){return name;} public String getIsbn(){return isbn;} public String getAuthor(){return author;} public String getPublisher(){return publisher;} public double getPrice(){return price;} public void setName(String name){=name;} public void setIsbn(String isbn){=isbn;} public void setAuthor(String author){=author;} public void setPublisher(String publisher){=publisher;} public void setPrice(double price){=price;} public static String readString(String s) throws IOException { \": \"); BufferedReader buf=new BufferedReader(new InputStreamReader); return (); } public static Double readDouble(String s) throws IOException,NumberFormatException { \": \"); BufferedReader buf=new BufferedReader(new InputStreamReader); String line=(); return (line); } public static int readInt(String s) throws IOException,NumberFormatException { \": \"); BufferedReader buf=new BufferedReader(new InputStreamReader); String line=(); return (line); } public void setInfo(String name,String isbn,String author,String publisher,double price) {=name;=isbn;=author;=publisher;=price;} public String toString(){return \"出版物名字:\"+name+\" ISBN:\"+isbn+\" 编者:\"+ author+\" 出版社:\"+publisher+\" 单价:\"+price;} public void print(){ name: import .*; public class Book extends Publication { public Book(){super();} public Book(String name,String isbn,String author,String publisher,double price) {super(name,isbn,author,publisher,price);} public String toString(){return \"书 名:\"+name+\" ISBN:\"+isbn+\" 作者:\" +author+\" 出版社:\"+publisher+\" 单价:\"+price;} public Book addBook() throws IOException { Book book=new Book(readString(\"书名\"),readString(\"ISBN\"), readString(\"作者\"),readString(\"出版社\"),readDouble(\"价格\")); return book; } public void print(){ name: import .*; public class Periodical extends Publication { protected int No; public Periodical(){super();} public Periodical(String name,String isbn,String author,String publisher,double price,int No) {super(name,isbn,author,publisher,price);=No;} public void setNo(int No){=No;} public int getNo(){return No;} public void setInfo(String name,String isbn,String author,String publisher,double price,int No) {(name,isbn,author,publisher,price);=No;} public String toString(){return \"期刊名称:\"+name+\" ISBN:\"+isbn+\" 主 编:\"+ author+\" 发行社:\"+publisher+\" 单价:\"+price+\" 第\"+No+\"期\";} public Periodical addPeriodical() throws IOException { Periodical per=new Periodical(readString(\"期刊名称\"),readString(\"ISBN\"), readString(\"主编\"),readString(\"发行社\"),readDouble(\"单价\"),readInt(\"期数\")); return per; } public void print(){ name: import .*; public class Newspaper extends Publication { protected String date; public Newspaper(){super();} public Newspaper(String name,String isbn,String author,String publisher,double price,String date) {super(name,isbn,author,publisher,price);=date;} public void setDate(String date){=date;} public String getDate(){return date;} public void setInfo(String name,String isbn,String author,String publisher,double price,String date) {(name,isbn,author,publisher,price);=date;} public String toString(){return \"报纸名称:\"+name+\" ISBN:\"+isbn+\" 总主编:\"+ author+\" 报 社:\"+publisher+\" 单价:\"+price+\" 日期\"+date;} public Newspaper addNewspaper() throws IOException { Newspaper nep=new Newspaper(readString(\"报纸名称\"),readString(\"ISBN\"), readString(\"总主编\"),readString(\"报社\"),readDouble(\"单价\"),readString(\"日期\")); return nep; } public void print(){ name: import .*; import .*; public class Operating { static LinkedList list=new LinkedList(); int index,len,No; Publication pb; int ch; String name,isbn,author,publisher,date; double price; Scanner in=new Scanner; public void add() throws IOException { try { \"请按以下选项提示选择你将进行添加的出版物信息:\"); \"1. 书籍 2. 期刊 3. 报纸 0. 返回上一级\"); ch=(); int flag; switch(ch) { case 1: Book book=new Book(); \"按依次分别按以下格式添加出版物信息,当输入非0时继续添加,输入0时结束添加:\"); flag=1; while(flag!=0) { ()); \"书籍信息添加成功!是否继续\"); flag=(); } break; case 2: Periodical perd=new Periodical(); \"按依次分别按以下格式添加出版物信息,当输入非0时继续添加,输入0时结束添加:\"); flag=1; while(flag!=0) { ()); \"期刊信息添加成功!是否继续\"); flag=(); } break; case 3: Newspaper nep=new Newspaper(); \"按依次分别按以下格式添加出版物信息,当输入非0时继续添加,输入0时结束添加:\"); flag=1; while(flag!=0) { ()); \"报纸信息添加成功!是否继续\"); flag=(); } break; } }catch(InputMismatchException e){} } public void Print() { len=(); for(int i=0;i len=(); for(int i=0;i index = i; return index; } } return -1; } public void update(String isbn) { short choice; index=search(isbn); if(index!=-1) { \"你将要修改的出版物的原始信息如下:\"); ((Publication)(index)).print(); \"请确认是否修改 1:修改,0:不修改\"); choice=(); if(choice==1) { \"出版物名称:\");name=(); \"出版物ISBN:\");isbn=(); \"出版物作者:\");author=(); \"出版物出版社:\");publisher=(); \"出版物价格:\");price=(); ((Publication)(index)).setInfo(name,isbn,author,publisher,price); return; } else return; } else \"请核实你所修改的出版物是否存在,修改失败!\"); } public void delet(String isbn) { for(int i=0;i (index); break; } else { \"请核实你所修改的出版物是否存在,删除失败!\"); break; } } } public void sort() { int i,j,k,t,len=(); ListIterator alist=(); Publication p,p1=(Publication)(0),q=p1,r; p=(Publication)(0); for(i=0;i for(j=i+1;j Object tem=(i); (i)=(k); (k)=tem; } } } } ; import .*; public class TestMiniBMS extends Operating { public static void Menu() { \"**********Welcomecome To MiNi Book Management System!**********\"); \"1.信息添加 4.信息更新\"); \"2.信息打印 5.信息删除\"); \"3.信息查询 6.信息排序\"); \" 0.退出系统\"); } public static void main(String[] args) { Scanner in=new Scanner; int choice; String isbn; Operating op=new Operating(); while(true) { Menu(); choice=(); switch(choice) { case 1: \"出版物信息添加,请输入正确的操作代码进行操作\"); try{();} catch(IOException e){\"输入输出出错:\"+e);} break; case 2: \"信息打印——系统中现有的出版物的信息如下:\"); (); break; case 3: \"信息查询\\n请输入你将要查询的出版物的ISBN号\"); isbn=(); int i=(isbn); if(i!=-1) { \"你所查询的图书出版物信息如下:\"); ((Publication) break; } \"请核实你所查找的出版物是否存在,查找信息失败!\"); break; case 4: \"信息更新\\n请输入你将要更新的出版物的ISBN号\"); isbn=(); (isbn); break; case 5: \"信息删除\\n请输入你将要删除的出版物的ISBN号\"); isbn=(); (isbn); break; case 6: } } } \"信息按价格由低到高排序:\"); (); break; case 0: (0); } 因篇幅问题不能全部显示,请点此查看更多更全内容