当前位置: 代码迷 >> Java相关 >> 关于一个图书管理的代码
  详细解决方案

关于一个图书管理的代码

热度:311   发布时间:2006-08-22 15:57:21.0
关于一个图书管理的代码

大家请看看看这段代码:
package com.xt.game;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;

public class Library {

private Customer customer;

private User u = new User();

BookState bookstate = new BookState();

SQLServerDAOFactory factory = new SQLServerDAOFactory();

private BufferedReader read = new BufferedReader(new InputStreamReader(
System.in));

private String login;

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

Library library = new Library();
library.start();

}

private void start() throws NumberFormatException, IOException {
// TODO 自动生成方法存根

showWelcomUI();
Bookmanager();
membermanager(u);
borrowBook();
collectbook();
scanbook();
manager();
bye();

}

private void bye() {
// TODO 自动生成方法存根
System.out.println("******************************************");

System.out.println(" 欢迎下次再来 ");

System.out.println("******************************************");

}

private void manager() throws NumberFormatException, IOException {
// TODO 自动生成方法存根
System.out.println("您的身份是管理员:");
if (factory.createCustomerDAO().findUserType(customer).equals("M")) {
System.out.println("1、图书管理");

System.out.println("2、会员管理");

System.out.println("3、借出图书");

System.out.println("4、收集图书");

System.out.println("5、扫描图书");

System.out.println("6、退出 ");
switch (Integer.parseInt(read.readLine())) {
case 1:
Bookmanager();
break;
case 2:
membermanager(u);
break;
case 3:
borrowBook();
break;
case 4:
collectbook();
break;
case 5:
scanbook();
break;
case 6:
bye();
break;
}

}else System.out.println("您的身份是会员");{

}
}

private void scanbook() {
// TODO 自动生成方法存根
customer=new Customer();

}

private void collectbook() {
// TODO 自动生成方法存根

}

private void membermanager(User u2) {
// TODO 自动生成方法存根

System.out.println("欢迎光临");

}

private void borrowBook() {
// TODO 自动生成方法存根

}

private void Bookmanager() {
// TODO 自动生成方法存根

}
private boolean login () throws IOException{
System.out.println("请输入您的账号:");
String UserId=read.readLine();
System.out.println("请输入您的密码:");
String UserPasswored=read.readLine();
customer=new Customer();
customer.setUserId(UserId);
customer.setPassword(UserId);
if (factory.createCustomerDAO().findUserIsExit(customer) != 0)

return true;
return false;
}


private void showWelcomUI() {
// TODO 自动生成方法存根

System.out.println("**********************************************");

System.out.println(" 欢迎光临世纪书城 ");

System.out.println("**********************************************");
}
}
我想让‘欢迎’之后就输出‘输入账号和密码’但却出来个‘**********************************************
欢迎光临世纪书城
**********************************************
欢迎光临
您的身份是管理员:
Exception in thread "main" java.lang.NullPointerException
at com.xt.game.Library.manager(Library.java:57)
at com.xt.game.Library.start(Library.java:39)
at com.xt.game.Library.main(Library.java:26)
这是怎么回事啊?那位大虾给看看?

搜索更多相关的解决方案: 图书  import  java  new  代码  

----------------解决方案--------------------------------------------------------
NullPointerException
空指针异常啊
看看有没有用了null的对象啊!
----------------解决方案--------------------------------------------------------
看不出来的,因为出错的代码不在这个类中
if (factory.createCustomerDAO().findUserType(customer).equals("M")) {
factory已经是实现了的,所以空指针异常不会是Liberary类引起的
肯定是SQLServerDAOFactory类的createCustomerDAO方法中有问题,把这个类贴上来观瞻一下。



另外随便说说,
SQLServerDAOFactory factory = new SQLServerDAOFactory();
呵呵,在代码中这样写可不大好,用IoC反向控制思想改写比较好
DAOFactory factory;

public void setFactory(DAOFactory newFactory){
factory = newFactory;
}

public DAOFactory getFactory(){
return factory;
}
其中ServerDAOFactory是一个接口,而SQLServerDAOFactory就是一个实现了该接口的类,这就是反向控制,你看,通过接口,一下子就把SQLServerDAOFactory从你的代码中分离开了。
你后你还可以写一个MySQLDAOFactory来代替SQLServerDAOFactory而不用改动这个Library类呢!
想想,如果真要你用MySQLDAOFactory类去替换SQLServerDAOFactory(因为公司要把数据库迁移到LINUX下),而且需要替换的类有上百上千个,那你还不等啊。
----------------解决方案--------------------------------------------------------

纯正的C版JAVA程序!~
面向过程……

建议楼主看看这个帖:
http://bbs.bc-cn.net/viewthread.php?tid=39883&star=at#


----------------解决方案--------------------------------------------------------
人家学过spring吗
----------------解决方案--------------------------------------------------------
  相关解决方案