您的当前位置:首页正文

java实验报告1

2022-08-12 来源:爱go旅游网


数学与计算机学院

实 验 报 告

( 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 extends (……){……….} . 4. 子类可以继承超类哪些访问特性的成员 答:子类可以继承超类的带有public、protected特性的成员。 5. 写出类book中各方法的方法头及其功能 答:Book():无参构造函数; Book(String name,String isbn,String author,String publisher,double price):带参构造函数,用于添加书时用输入的成员变量构造一个具体的book对象; toString():用于将对象转化为字符串信息,便于整个对象信息的输出; addBook():用于添加Book类对象成员时进行必要的提示和输入; print():用于输出对象的具体信息,减少每次调用函数的麻烦。 6. 如果要将publisher类定义为一个抽象类,请写出其定义。 答:public abstract 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 abstract void setInfo(String name,String isbn,String author,String publisher,double price); public abstract String toString(); 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 abstract void print(); } 7. book类中各方法的调用是通过什么进行的类中调用了publisher类的方法吗如果有,请写出调用语句。 答:如果Book类的对象调用其方法,就直接通过“对象名▪方法()”的方式调用;如果是在其他类中调用公有的方法则需要强制类型转换后再通过“对象名▪方法()”的方式调用;如果调用私有成员变量,则需要通过Book类中获取该私有变量的成员方法进行调用。类中有调用Publication类的方法,例如:public Book(){super();} public Book(String name,String isbn,String author,String publisher,double price) {super(name,isbn,author,publisher,price);} 。 8. N本书的相关信息是如何存放的请写出语句。 答:N本书的相关信息是通过Java语言中的LinkedList类创造的实例链表list实现存放的。相关语句如: public Book addBook() throws IOException { Book book=new Book(readString(\"书名\"),readString(\"ISBN\"), readString(\"作者\"),readString(\"出版社\"),readDouble(\"价格\")); return book; } static LinkedList list=new LinkedList();…………… Book book=new Book(); \"按依次分别按以下格式添加出版物信息,当输入非0时继续添加,输入0时结束添加:\"); flag=1; while(flag!=0) { ()); \"书籍信息添加成功!是否继续\"); flag=(); }。

四、实验小结(包括问题和解决方法、心得体会、意见与建议等) 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;ipublic int search(String isbn) {

len=();

for(int i=0;iif(((Publication)(i)).getIsbn().equals(isbn)) {

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;iindex=search(isbn); if(index!=-1) {

(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;ik=i;

for(j=i+1;jif(((Publication)(j)).getPrice()<((Publication)(k)).getPrice()) k=j; if(k>i) {

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);

}

因篇幅问题不能全部显示,请点此查看更多更全内容