关于java中addbook的信息

博主:adminadmin 2022-11-25 08:06:09 52

今天给各位分享java中addbook的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

//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和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。