请教大家一个java的编程问题。

不知我能否描述清,但我尽力吧:是这样,我现在想编一个非常简单的图书的管理系统,能完成的功能就是能添加书(书有书号、作者、出版社等基本属性),查询一本书的作者(包括名字、电... 不知我能否描述清,但我尽力吧:
是这样,我现在想编一个非常简单的图书的管理系统,能完成的功能就是能添加书(书有书号、作者、出版社等基本属性),查询一本书的作者(包括名字、电话、地址等基本属性),ok,就这些,能插入,能查找,对结果能排个序。

问题在于,我现在先不需要数据库,需要的是用容器类作为一个模拟数据库,相当于缓存(除数组外任何容器类均可),只需运行程序时能用就行,关掉程序数据丢掉无所谓。

麻烦能否帮我编一个这样的程序,要求您运行好了再给我,也就是最好没有语法错误,如果您能用gui作出来,我将再加50分!

当然,做得好的我也会加分!

对了,我还需要一个方法{比如takestring()},能列出所有书和作者信息,然后我只要system.out.println就可以打出全部书或作者的信息。

不胜感激!!!谢谢您的帮忙!!!
呵呵,也不是非常简单啦~~但也不算难题吧。。。为了对得起大家,我把基准分在提升50分^^
这样帮我编出来的朋友可以得到至少200分哦。

还有,在提供一个我的邮箱:mygpa@sina.com,可以发到我的邮箱里,非常感谢!!!辛苦了!!!

没有人帮忙么~~~我的分数都用的差不多了~~~~再说也不能再加了。。。。
展开
 我来答
匿名用户
2009-06-05
展开全部
//LMS.java
//所有类写在一个文件内,请将以下内容保存成 LMS.java,编译运行即可,GUI版

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.border.Border;

public class LMS {
public static void main(String[] args){
try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}catch(Exception e){}
new LibraryGUI(new Library()).setVisible(true);
}
}

//书籍类
class Book implements Comparable<Book>{
private String name;//书名
private String publisher;//出版社
private Author au;//作者
private String sn;//书号

public Book(String name,String sn,String publisher,Author au){
this.name=name;this.sn=sn;this.publisher=publisher;this.au=au;
}
public String getName(){ return name; }
public String getPublisher(){ return publisher; }
public String getSerialNumber(){ return sn; }
public Author getAuthor(){ return au; }
public boolean equals(Object o){ return o instanceof Book && ((Book)o).sn.equals(sn); }
public String toString(){ return "书名:"+name+" 书号:"+sn+" 作者:"+au+" 出版社:"+publisher; }
//排序优先顺序:书名,作者,出版社,书号是唯一的,所以不作排序项目
public int compareTo(Book b) {
if(b.name.equals(name))
if(b.au.equals(au))
return b.publisher.compareTo(this.publisher);
else return b.au.getName().compareTo(au.getName());
else return b.name.compareTo(name);
}
}

//作者类
class Author{
private String name;
private String phone;
private String addr;
public Author(String name,String phone,String addr){
this.name=name;this.phone=phone;this.addr=addr;
}
public String getName(){ return name; }
public String getPhone(){ return phone; }
public String getAddr(){ return addr; }
public String getFullInfo(){ return "Name:"+name+" Phone:"+phone+" Addr:"+addr; }
public String toString(){ return name; }
}

//图书库类
class Library{
//存放书籍的容器
private List<Book> lib = new ArrayList<Book>();
//加入图书
public void addBook(Book b){ lib.add(b); }
//删除图书
public void removeBook(Book b){ lib.remove(b); }
//取得全部图书
public List<Book> getAllBooks(){ return lib; }
//根据条件查询图书,书名模糊查找,书号和作者精确查找
public List<Book> query(String bookName, String bookSN, String bookAu) {
List<Book> tmp = new ArrayList<Book>();
if(bookName.isEmpty())
for(int i=0; i<lib.size(); i++)
tmp.add(lib.get(i));
else
for(int i=0; i<lib.size(); i++)
if(lib.get(i).getName().indexOf(bookName)>-1)
tmp.add(lib.get(i));

if(!bookSN.isEmpty())
for(int i=0; i<tmp.size(); i++)
if(! (tmp.get(i).getSerialNumber().equals(bookSN))){
tmp.remove(i);
--i;
}

if(!bookAu.isEmpty())
for(int i=0; i<tmp.size(); i++)
if(!(tmp.get(i).getAuthor().getName().equals(bookAu))){
tmp.remove(i);
--i;
}

return tmp;
}
}

//GUI部分
class LibraryGUI extends JFrame implements ActionListener{
private JTextField bname,bpub,bsn,bauname,bauaddr,bauphone;
private JTextField qbname,qbsn,qauname;
private JPanel north,addp,add1,add2,quep,disp,mainp;
private JButton addb,queb,del;
private Library lib;
private JScrollPane jsp;
private Box box;
LibraryGUI(Library lib){
super("图书XX系统");
this.lib=lib;
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().setLayout(new BorderLayout());
this.setSize(740,600);
this.setLocationRelativeTo(null);
//新增面板
addp=new JPanel(new GridLayout(2,1));
add1=new JPanel(new FlowLayout(FlowLayout.LEFT));
add2=new JPanel(new FlowLayout(FlowLayout.LEFT));
addp.add(add1);addp.add(add2);
addp.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(10,10,10,10),BorderFactory.createLineBorder(Color.LIGHT_GRAY)));
JLabel l;
l=new JLabel("书名:");
add1.add(l);
bname=new JTextField(16);
add1.add(bname);
l=new JLabel(" 书号:");
add1.add(l);
bsn=new JTextField(20);
add1.add(bsn);
l=new JLabel(" 出版社:");
add1.add(l);
bpub=new JTextField(30);
add1.add(bpub);
l=new JLabel("作者:");
add2.add(l);
bauname=new JTextField(16);
add2.add(bauname);
l=new JLabel(" 电话:");
add2.add(l);
bauphone=new JTextField(20);
add2.add(bauphone);
l=new JLabel(" 住址:");
add2.add(l);
bauaddr=new JTextField(46);
add2.add(bauaddr);
add1.add(new JLabel(" "));
addb=new JButton(" 新 增 ");
add1.add(addb);
addb.addActionListener(this);
//查询面板
quep=new JPanel(new FlowLayout(FlowLayout.LEFT));
quep.setBorder(addp.getBorder());
l=new JLabel("书名:");
quep.add(l);
qbname=new JTextField(16);
quep.add(qbname);
l=new JLabel(" 书号:");
quep.add(l);
qbsn=new JTextField(20);
quep.add(qbsn);
l=new JLabel(" 作者:");
quep.add(l);
qauname=new JTextField(16);
quep.add(qauname);
quep.add(new JLabel(" "));
queb=new JButton(" 查 询 ");
quep.add(queb);
queb.addActionListener(this);
del=new JButton(" 删 除 ");
quep.add(del);
del.addActionListener(this);
//
north=new JPanel(new BorderLayout());
north.add(addp,BorderLayout.NORTH);
north.add(quep,BorderLayout.SOUTH);
this.getContentPane().add(north,BorderLayout.NORTH);
//显示面板
disp=new JPanel(new BorderLayout());
disp.setBorder(addp.getBorder());
this.getContentPane().add(disp);
mainp=new JPanel(new BorderLayout());
mainp.setBackground(Color.white);
box=Box.createVerticalBox();
mainp.add(box,BorderLayout.NORTH);
jsp=new JScrollPane(mainp,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
disp.add(jsp);
}

public void actionPerformed(ActionEvent e) {
if(e.getSource()==addb)
createNewBook();
else if(e.getSource()==queb)
queryBook();
else if(e.getSource()==del)
removeBook();
}

private void removeBook() {
String bn=qbname.getText().trim();
String bsn=qbsn.getText().trim();
String baun=qauname.getText().trim();
if(bn.isEmpty()&&bsn.isEmpty()&&baun.isEmpty())
return;
List<Book> bks = lib.query(bn,bsn,baun);
for(int i=0; i<bks.size(); i++)
lib.removeBook(bks.get(i));
display(lib.getAllBooks());
}

private void queryBook() {
String bn=qbname.getText().trim();
String bsn=qbsn.getText().trim();
String baun=qauname.getText().trim();
display(lib.query(bn,bsn,baun));
}

private void createNewBook() {
Author au = new Author(bauname.getText().trim(),bauphone.getText().trim(),bauaddr.getText().trim());
Book bk = new Book(bname.getText().trim(),bsn.getText().trim(),bpub.getText().trim(),au);
lib.addBook(bk);
display(lib.getAllBooks());
}

private void display(List<Book> bks){
box.removeAll();
for(int i=0; i<bks.size(); i++){
Book b = bks.get(i);
System.out.println(b);
BookItem bi = new BookItem(b);
bi.setBackground(i%2==0?Color.white:new Color(0xefefef));
box.add(bi);
}
jsp.validate();
}
}

class BookItem extends JPanel{
private static Border border=BorderFactory.createCompoundBorder(
BorderFactory.createMatteBorder(0,0,1,0,Color.LIGHT_GRAY),
BorderFactory.createEmptyBorder(0,5,5,5));
BookItem(Book b){
this.setBorder(border);
this.setLayout(new FlowLayout(FlowLayout.LEFT));
String str="<html><table><tr style='color:gray;'>" +
"<td width=168>书名: <font color=#000>"+b.getName()+"</font></td>" +
"<td width=188>书号:<font color=#000>"+b.getSerialNumber()+"</font></td>" +
"<td width=138>作者:<font color=#000>"+b.getAuthor()+"</font></td>" +
"<td>出版社:<font color=#000>"+b.getPublisher()+"</font></td>" +
"</tr></table>";
this.add(new JLabel(str));
}
}
jing5083394
2009-06-04 · TA获得超过8368个赞
知道大有可为答主
回答量:9908
采纳率:61%
帮助的人:2140万
展开全部
//基本功能都做完了.楼主可以再细化些. 有三个类,分别放到对应的文件里.
//注意文件名要和类名相同,注意大小.

//第一个类
public class Author {

String name;
String phone;
String address;

public Author(String name, String phone, String address) {
super();
this.address = address;
this.name = name;
this.phone = phone;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

}

//第二个类
import java.util.ArrayList;
import java.util.List;

/*
* 能完成的功能就是能添加书(书有书号、作者、出版社等基本属性)
*/
public class Book {
String bookNum;
Author Author;
String publisher;

public Book(Author author, String bookNum, String publisher) {
super();
Author = author;
this.bookNum = bookNum;
this.publisher = publisher;
}

public String getBookNum() {
return bookNum;
}

public void setBookNum(String bookNum) {
this.bookNum = bookNum;
}

public Author getAuthor() {
return Author;
}

public void setAuthor(Author author) {
Author = author;
}

public String getPublisher() {
return publisher;
}

public void setPublisher(String publisher) {
this.publisher = publisher;
}

}

//第三个类
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.ArrayList;
import java.util.List;

public class ManageBook {

List<Book> booklist = new ArrayList<Book>();

public List addBook(String name, String phone, String address,
String bookNum, String publish) {

Author b = new Author(name, phone, address);
Book a = new Book(b, bookNum, publish);
booklist.add(a);

return booklist;
}

public void PrintMenu() {
System.out.println("1.Add new Book " + "2.Display all book"
+ " 3.Search Author"+" 4:Quit"+"\nPlease select menu(1,2,3,4)");
}

public void takestring(){
for (int w = 0; w < this.booklist.size(); w++){

System.out.println("Book num:"+this.booklist.get(w).getBookNum()+
" Author:"+this.booklist.get(w).getAuthor().getName()+
" Author address:"+this.booklist.get(w).getAuthor().getAddress()+
" phone:"+this.booklist.get(w).getAuthor().getPhone()+
" Book publiser:"+this.booklist.get(w).getPublisher());
}
}

public static void main(String[] args) throws IOException {

ManageBook a = new ManageBook();
a.addBook("jing5083394", "13146381111", "beijing", "sn1", "publisher:china");

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
while (true) {
a.PrintMenu();
String content = in.readLine();
if (content.equalsIgnoreCase("4")) {
break;
}
else if (content.equalsIgnoreCase("1")) {
String name; String phone; String address;
String bookNum; String publish;
BufferedReader in2 = new BufferedReader(new InputStreamReader(System.in));

System.out.println("Please input information for add a new to the system\r\n");
System.out.println("Please input the authroName");
String content2 = in.readLine();
name = content2;

System.out.println("Please input the phone for author");
content2 = in.readLine();
phone = content2;

System.out.println("Please input the address for author");
content2 = in.readLine();
address = content2;

System.out.println("Please input the book sn number");
content2 = in.readLine();
bookNum = content2;

System.out.println("Please input the book publisher");
content2 = in.readLine();
publish = content2;

a.addBook(name,phone,address,bookNum,publish);
System.out.println("Add book successfully\r\n");

}
else if (content.equalsIgnoreCase("2")) {
a.takestring();

}
else if (content.equalsIgnoreCase("3")) {
String name;
BufferedReader in3 = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please input the authroName");
String content3 = in3.readLine();
name = content3;

for (int w = 0; w < a.booklist.size(); w++){

if (a.booklist.get(w).getAuthor().getName().equalsIgnoreCase(name)){
System.out.println(
" Author:"+a.booklist.get(w).getAuthor().getName()+
" Author address:"+a.booklist.get(w).getAuthor().getAddress()+
" Author phone:"+a.booklist.get(w).getAuthor().getPhone()
);
}
else
System.out.println("No found this authro");

}

}
else {
System.out.println("Invalid selections!\n");
}
}

// System.out.println(lookup(host));

}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wxlovemm
2009-06-04 · 超过24用户采纳过TA的回答
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:51万
展开全部
我给你介绍下你应该怎么写吧,因为我没有时间,而且我觉得这些问题还是自己
写出来才有效果,别人的东西并不是自己的,

1.设计二个基本类,一个是作者类,一个是书类,各添加他们的属性,
并set(),get().这个你应该明白的,可以参考楼上的代码,用eclipse
可以直接生成的。
2.设计一个管理类,也就是常用的功能。我认为容器类应该用set比较好点,set
可以自动排序,也不可以重复。插入方法比较简单,直接用相应的set方法就
可以了,然后将其对象放入容器类中,查找也不难,容器类有很多查找方法
具体可以看容器类的api,排序也一样,api中有对应的方法,只要自己动手
还是不太难的。
3.注意作者类和书类在插入的时候注意相互的关系,注意set()。
4.takestring()方法也一样的道理,api中有列出所有容器类中的对象
方法。

其实我感觉楼主是自己懒,看你问的这么细,感觉你自己动手做应该没问题的
,如果觉得还不行的话,我这里有个ATM小程序,和你这个功能差不多,还有
简单的gui设计呢,你稍加改动就可以完成的。花不了几个小时,希望你自己动
手比较好,能学到东西。
ATM源代码就给你发去了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lemon190086
2009-06-03 · TA获得超过110个赞
知道小有建树答主
回答量:354
采纳率:0%
帮助的人:126万
展开全部
呵呵,貌似不难咯,,,,可惜时间不够用哈..................
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Kenvisa
2009-06-03 · TA获得超过843个赞
知道小有建树答主
回答量:511
采纳率:0%
帮助的人:0
展开全部
要花点时间写才行哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式