关于java中addbook的信息
今天给各位分享java中addbook的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、//bookList.add(book);//这有什么问题,出现java.lang.NullPointerException
- 2、java中如何写一个可以任意在下面的集合中添加图书删除图书的方法
- 3、java多层list实现图书的增删改查?
- 4、java中arraylist使用,小型图书管理系统
- 5、java中如何实现登录界面与数据库正确连接?
- 6、java做一个简单的图书管理系统,大一新生,用基础做,软件能调试就行
//bookList.add(book);//这有什么问题,出现java.lang.NullPointerException
你出现的问题是:
booklist是一个指向List类型的引用,只有当new一个ArrayList给booklist时,booklist才被赋值,指向堆栈中的ArrayList对象。你的程序中booklist是在Student的一个构造函数中赋值的(即指向一个ArrayList对象),而构造函数只有在实例化一个Student对象时才会被调用,而且你定义了两个Student构造函数,实例化时也不一定调用的是public Student()这个构造函数,所以只有在实例化一个Student对象且调用public Student()这个构造函数时,booklist才真正有值。
你定义的addBook方法也是在实例化Student对象后才能调用,现在在类里直接用booklist.addBook()方法是因为Student没有实例化,所以booklist也没有实例化。
解决方法是:1.在Student定义booklist数据成员时直接new ArrayList()(这个肯定管用)
2.将booklist定义为static的不用直接new ArrayList()(这个方法只是建议试试)
希望以上对你有帮助。
java中如何写一个可以任意在下面的集合中添加图书删除图书的方法
由于ArrayList是按照保存的顺序排序的 所以删除就是删除最后一个
代码如下:
private final static String[] chineseNumber = {"一", "二", "三", "四", "五", "六", "七", "八", "九", "十"};
private final static String[] chineseBits = {"十", "百", "千", "万"};
public static addBook(String bookName, int cost, String id, String date) {
books.add(new Book("第" + toChineseNumber(books.length) + "本书", "第" + toChineseNumber(books.length) + "号出版社" ), cost, id, date);
}
public static deleteBook() {
books.remove(books.length - 1);
}
private static toChineseNumber(int source) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i source.length(); i++) {
int n = Integer.valueOf(source.charAt(i));
String chinese = chineseNumber[n];
String bits = chineseBits[source.length() - i - 1];
if(0 == n) {
sb.append(chinese);
} else {
sb.append(chinese + bits);
}
}
}
java多层list实现图书的增删改查?
import java.util.ArrayList;
import java.util.List;
/**
* 测试类
*
* @author 时间在流
*
*/
public class Test {
/**
* 这个属性用来模仿书房
*/
private ListListString room = new ArrayListListString();
/**
* 向书房里添加一个书架
*
* @return 新添加书架的索引
*/
public int addBookShelf() {
room.add(new ArrayListString());
return room.size() - 1;
}
/**
* 向书架里添加一本书
*
* @param bookShelfIndex 书架索引
* @param book 书。这里就用一个字符串代表一本书了,你要愿意也可以单独创建一个书类
* @return 新添加书籍的索引
*/
public int addBook(int bookShelfIndex, String book) {
ListString shelf = room.get(bookShelfIndex);
shelf.add(book);
return shelf.size() - 1;
}
// 更新书架我就不写了。
/**
* 更新书架上的某本书
*
* @param bookShelfIndex 书架索引
* @param bookIndex 旧书索引
* @param newBook 新书
*/
public void setBook(int bookShelfIndex, int bookIndex, String newBook) {
ListString shelf = room.get(bookShelfIndex);
shelf.set(bookIndex, newBook);
}
/**
* 移除一个书架
*
* @param bookShelfIndex 书架索引
* @return 剩余书架的个数
*/
public int removeBookShelf(int bookShelfIndex) {
room.remove(bookShelfIndex);
return room.size();
}
/**
* 移除书架上的某本书
*
* @param bookShelfIndex 书架索引
* @param bookIndex 书籍索引
* @return 该书架剩余书的数量
*/
public int removeBook(int bookShelfIndex, int bookIndex) {
ListString shelf = room.get(bookShelfIndex);
shelf.remove(bookIndex);
return shelf.size();
}
/**
* 获得一个书架
*
* @param bookShelfIndex 书架索引
* @return 书架
*/
public ListString getBookShelf(int bookShelfIndex) {
return room.get(bookShelfIndex);
}
/**
* 获得书架上的某本书。在现实生活中拿走了一本书,书架上应该会少一本
*
* @param bookShelfIndex 书架索引
* @param bookIndex 书籍索引
* @return 书籍
*/
public String getBook(int bookShelfIndex, int bookIndex) {
ListString shelf = room.get(bookShelfIndex);
return shelf.get(bookIndex);
}
public static void main(String[] args) {
Test test = new Test();
int shelf1Index = test.addBookShelf();
int shelf2Index = test.addBookShelf();
int book1Index = test.addBook(shelf1Index, "鬼吹灯");
int book2Index = test.addBook(shelf1Index, "盗墓笔记");
int book3Index = test.addBook(shelf2Index, "斗破苍穹");
int book4Index = test.addBook(shelf2Index, "斗罗大陆");
test.setBook(shelf2Index, book4Index, "吞噬星空");
System.out.println("2号书架的第2本书是" + test.getBook(shelf2Index, book4Index));
System.out.println("移除了2号书架的第2本书,2号书架还剩" + test.removeBook(shelf2Index, book4Index) + "本书");
System.out.println("移除了第2个书架,现在还剩" + test.removeBookShelf(shelf2Index) + "个书架");
ListString shelf = test.getBookShelf(shelf1Index);
System.out.println("1号书架书籍列表:");
for (String book : shelf) {
System.out.println(book);
}
}
}
java中arraylist使用,小型图书管理系统
ArrayListArrayList
外层是你的那个ArrayList
存放三个 下标0书籍 1期刊 2报纸
比如一个书籍要添加进去
ListListObject list = new ArrayLlistListObject();
list.add(new ArrayListObject());//书籍
list.add(new ArrayListObject());//期刊
list.add(new ArrayListObject());//报纸
Book book = new Book();
list.get(0).add(book);
java中如何实现登录界面与数据库正确连接?
使用JDBC进行数据库的增删改查操作1.下载Microsoft SQL Server 2005 JDBC 驱动包jar文件 将jar文件引入工程中2.封装数据库链接的获取和关闭操作import java.sql.*;public class BaseDao {
/**
* 数据库驱动类的字符串,完整的包名加类名 在工程中查看添加的jar文件 能看到这个类
*/
private static final String DRIVE = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; /**
* 数据库连接地址
*
* DataBaseName=数据库名称 其它固定
*/
private static final String URL = "jdbc:sqlserver://localhost:1433;DataBaseName=bbs"; /**
* 连接数据库的用户名
*/
private static final String USER = "sa"; /**
* 用户密码
*/
private static final String PASSWORD = ""; /**
* 获取连接 异常直接抛出 或者捕获后自定义异常信息再抛出
*/
public static Connection getConnection() throws Exception {
Class.forName(DRIVE);
return DriverManager.getConnection(URL, USER, PASSWORD);
} /**
* 关闭与数据库的连接 释放资源
*/
public static void closeAll(ResultSet resultSet, PreparedStatement pst,
Connection connection) throws Exception {
if (resultSet != null)
resultSet.close();
if (pst != null)
pst.close();
if (connection != null)
connection.close();
}}3.创建图书的实体类public class Book {
/**
* 数据库主键
*/
private Long id; /**
* 作者
*/
private String author; /**
* 书名
*/
private String name;
/**
* 默认构造
*
*/
public Book() {
}
/**
* 全字段构造
* @param id
* @param author
* @param name
*/
public Book(Long id, String author, String name) {
this.id = id;
this.author = author;
this.name = name;
}
/**
* 以下为读写属性的方法
* @return
*/
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
4.创建与图书表交互的工具类import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;public class BookDao {
/**
* 添加新书
*
* @param book 要添加入数据库的图书 作者 书名 必须给定
*/
public void addBook(Book book) throws Exception {
// 连接
Connection connection = null;
// 执行语句
PreparedStatement pst = null;
try {
connection = BaseDao.getConnection();
// 构造执行语句
String sql = "insert into book values(" + book.getAuthor() + ","
+ book.getName() + ")";
pst = connection.prepareStatement(sql);
pst.executeUpdate(); } catch (Exception e) {
// 抛出异常
throw e;
} finally {
// 无论是否异常 均关闭数据库
BaseDao.closeAll(null, pst, connection);
}
} /**
* 查询所有书籍列表
*/
public ListBook getBooks() throws Exception {
// 用于存放查寻结果的集合
ListBook books = new ArrayListBook();
// 连接
Connection connection = null;
// 执行语句
PreparedStatement pst = null;
// 查询结果
ResultSet resultSet = null;
try {
connection = BaseDao.getConnection();
// 构造查询语句
String sql = "select * from book";
pst = connection.prepareStatement(sql);
resultSet = pst.executeQuery(); // 循环读取查询结果行
while (resultSet.next()) {
// getXXX的参数为数据表列名
Book book = new Book(resultSet.getLong("id"), resultSet
.getString("author"), resultSet.getString("name"));
// 将封装好的图书对象存入集合
books.add(book);
}
} catch (Exception e) {
// 抛出异常
throw e;
} finally {
// 无论是否异常 均关闭数据库
BaseDao.closeAll(resultSet, pst, connection);
}
// 返回查询结果
return books;
}/***其它方法类似上面 只是语句不同*/
}当然 以上只是简单的封装 初学者可以在理解以上代码的基础上 进行更高级的封装
5.使用BookDao添加书籍和获取所有书籍列表import java.util.List;/**
* 测试类
* @author Administrator
*
*/
public class Test { /**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
//创建工具类对象
BookDao dao = new BookDao();
//创建一本图书
Book book = new Book(null,"QQ:495691293","编程菜鸟");
//添加书籍到数据库
dao.addBook(book);
//获取所有图书列表
ListBook books = dao.getBooks();
//输出结果
for (Book b : books) {
System.out.println(b.getId()+"\t"+b.getAuthor()+"\t"+b.getName());
}
}}
java做一个简单的图书管理系统,大一新生,用基础做,软件能调试就行
从零开始学Java,本来利用数组只在一个界面就可以实现增删改查功能,学到接口后觉得实现分离效果会更好一些!所以进行了尝试,将管理员和用户中的图书查询,登录,图书出库合并在一起写了一个接口,用户类和管理员类实现这个接口!图书类写了一个抽象类里面都是一些图书的属性,用户类管理员类对图书类进行操作。
具体实现如下:
接口:存在三种方法 用户类和管理员类去实现这个接口,并实现着里面的方法
[java] view plain copy
public interface Person {
public boolean login(String user,String pwd); //登录方法
public void search(); //查询方法
public void reduce(String s,int i); // 图书出库
}
用户类: 实现接口,里面都是用户的方法,在测试类里调用这些方法实现其功能
[java] view plain copy
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class User implements Person{
private final String user = "user";
private final String pwd = "user";
List list = new ArrayList();
public void addBook(Book book){ //增加图书
list.add(book);
}
public boolean login(String user, String pwd) { //登录方法
if(this.user.equals(user) this.pwd.equals(pwd)){
return true;
}
return false;
}
@Override
public void reduce(String s, int i) { //结账
Iterator it = list.iterator();
while(it.hasNext()){
Book b = (Book)it.next();
if(b.getNum().equals(s)){
if(b.getCount() = i){
int m = b.getCount()-i;
b.setCount(m);
System.out.println("你的图书总价为:"+(b.getPrice()*i));
}else
System.out.println("你输入的书本数目超出了当前库存!");
}else{
System.out.println("没找到,你要加入的图书!");
}
}
}
@Override
public void search() { //查询图书当前情况
Iterator it = list.iterator();
while(it.hasNext()){
Book b = (Book)it.next();
System.out.println(b.getNum()+"\t"+b.getName()+"\t"
+b.getAnthor()+"\t"+b.getFromTime()
+"\t"+b.getPrice()+"\t"+b.getCount());
}
}
}
[java] view plain copy
/prepre name="code" class="java"span style="font-size:18px;"管理员类: 实现接口,里面都是管理员的方法,在测试类里调用这些方法实现其功能/spanspan style="font-size:18px;"/span
[java] view plain copy
span style="font-size:18px;"
/span
[java] view plain copy
package com.pv1;
import java.util.*;
public class Admin implements Person {
private final String user = "admin";
private final String pws = "admin";
List list = new ArrayList();
public boolean login(String user, String pwd) { // 登录方法
if (this.user.equals(user) this.pws.equals(pwd)) {
return true;
}
return false;
}
public void addBook(Book book) { // 增加图书
list.add(book);
}
public void search() { // 查询方法
Iterator it = list.iterator();
while (it.hasNext()) {
Book b = (Book) it.next();
System.out.println(b.getNum() + "\t" + b.getName() + "\t"
+ b.getAnthor() + "\t" + b.getFromTime() + "\t"
+ b.getPrice() + "\t" + b.getCount());
}
}
public void reduce(String num, int i) { // 图书出库
for (int j = 0; j list.size(); j++) {
Book b = (Book) list.get(j);
if (b.getNum().equals(num)) {
if (b.getCount() = i) {
int m = b.getCount() - i;
b.setCount(m);
System.out.println("取出成功!现在此书库存为:" + m);
j--;
break;
} else
System.out.println("你输入的书本数目超出了当前库存!");
}
if (j == list.size()) {
System.out.println("没找到,你要加入的图书!");
}
}
}
public void increase(String num, int i) { // 图书入库
for (int j = 0; j list.size(); j++) {
Book b = (Book) list.get(j);
if (b.getNum().equals(num)) {
if (i 0) {
System.out.println("你加入的图书数目不合法!");
} else {
int m = b.getCount() + i;
b.setCount(m);
}
}
if (j == list.size()) {
System.out.println("没找到,你要加入的图书!");
}
}
}
public void delete(String num) { //删除提供编号的图书
int j = 0;
for (j = 0; j list.size(); j++) {
Book b = (Book) list.get(j);
if (b.getNum().equals(num)) {
list.remove(b);
System.out.println("删除成功!");
j--;
break;
}
}
if (j == list.size()) {
System.out.println("未找到你要删除的图书!请确认编号后再删");
}
}
public boolean guanSearch(String num){
for (int j = 0; j list.size(); j++) {
Book b = (Book) list.get(j);
if (b.getNum().equals(num)) {
return true;
}
}
return false;
}
public void guan(String num, String name, String auther, String date,
double price, int count) { // 修改提供编号的图书
int j = 0;
for ( j = 0; j list.size(); j++) {
Book b = (Book) list.get(j);
if (b.getNum().equals(num)) {
b.setAnthor(auther);
b.setCount(count);
b.setFromTime(date);
b.setName(name);
b.setPrice(price);
break;
}
}
}
}
图书类:抽象类,里面全部是属性,方便用户管理员对其操作。
[java] view plain copy
package com.pv1;
import java.util.*;
public class Book {
private String num ;
private String name;
private String anthor;
private String fromTime;
private double price;
private int count;
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAnthor() {
return anthor;
}
public void setAnthor(String anthor) {
this.anthor = anthor;
}
public String getFromTime() {
return fromTime;
}
public void setFromTime(String fromTime) {
this.fromTime = fromTime;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
测试类:
[java] view plain copy
package com.pv1;
import java.util.*;
public class BookTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Book bo = new Book(); //在开始时加入一本图书,所用对象
Book bo1 = null; //循环加入图书建立的对象,开始设成空,防止加入图书时被覆盖
List list = new ArrayList(); //建立一个集合,存储管理员要添加的图书信息的对象
Admin ad = new Admin(); //建立管理员对象,管理员操作时调用管理员类中对象
User us = new User(); //建立用户对象,管理员操作时调用用户类中对象
boolean ad1 = true; //接受进入管理员操作界面的返回值
boolean us1 = true; //接受进入用户操作界面的返回值
bo.setAnthor("刘冰"); //书籍为空,加入一本图书
bo.setCount(20);
bo.setNum("1001");
bo.setName("一本道");
bo.setFromTime("2015-2-50");
bo.setPrice(250.0);
ad.addBook(bo); //通过对象传递在管理员类中加入一本图书
us.addBook(bo);
System.out.print("请输入用户名:"); //用户输入 用户名 密码
String user = input.next();
System.out.print("请输入密码:");//
String pwd = input.next();
ad1 = ad.login(user, pwd); //将 用户名 密码 传入管理员类中进行判断返回Boolean类型接受
us1 = us.login(user, pwd); //将 用户名 密码 传入用户类中进行判断返回Boolean类型接受
if (ad1) { //如果管理员类返回true进入 管理员操作界面
System.out.println("图书编号\t" + "书名\t" + "作者\t" + "出版日期\t" + "\t价格\t"
+ "库存");
ad.search();
while (true) {
bo1 = new Book();
System.out.println("1.查询 2.图书入库 3.图书出库 "
+ "4.新增图书 5.修改 6.删除 7.退出\t请输入您的选择:");
int xuan = input.nextInt();
switch (xuan) {
case 1:
System.out.println("图书编号\t" + "书名\t" + "作者\t" + "出版日期\t"
+ "价格\t" + "库存");
ad.search();
break;
case 2:
System.out.print("请输入你想入库的图书编号:");
String num = input.next();
System.out.print("请输入你想添加本图书的数量:");
int cou = input.nextInt();
ad.increase(num, cou);
break;
case 3:
System.out.print("请输入你想取出的图书编号:");
num = input.next();
System.out.print("请输入你想取出图书的数量:");
cou = input.nextInt();
ad.reduce(num, cou);
break;
关于java中addbook和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-25,除非注明,否则均为
原创文章,转载请注明出处。