这是Java练手的一个小项目,适合初学者,用的技术是Java和MySQL。主要功能包括
(1)用户登录
(2)增加图书
(3)修改图书信息
(4)删除图书信息
(5)查询图书
(6)查看所有的图书
下面是源码
public class BookManager{
LinkedHashMap<String, Book> stu = new LinkedHashMap<String, Book>();
Book book = new Book();
Scanner sc = new Scanner(System.in);
public void Manage(int choice) throws Exception{
switch (choice) {
case 0:
list();
break;
case 1:
find();
break;
case 2:
add();
break;
case 3:
modify();
break;
case 4:
delete();
break;
default: {
throw new Exception("没有该功能,请重新选择!");
}
}
}
//获取所有书籍
public void list() {
Dao dao = new Dao();
List<Book> list = dao.getAllBooks();
System.out.println("书籍列表如下:");
for(Book book : list) {
System.out.println("书名:"+book.getName()+" 作者:"+book.getAuthor()+" 库存量:"+book.getNum());
}
}
//搜索书籍
public void find() {
System.out.println("输入要搜索的书名:");
String name = sc.next();
Dao dao = new Dao();
if(!dao.judgeExist(name))
System.out.println("该书籍不存在!");
else{
Book book = dao.find(name);
System.out.println("书名:"+book.getName()+" 作者:"+book.getAuthor()+" 库存量:"+book.getNum());
}
}
//添加书籍
public void add() {
Dao dao = new Dao();
System.out.println("输入要添加的书名:");
String name = sc.next();
if(dao.judgeExist(name))
System.out.println("该书籍已存在!");
else{
System.out.println("输入作者:");
String author = sc.next();
System.out.println("输入数量:");
int num = sc.nextInt();
dao.addBook(new Book(name,author,num));
System.out.println("添加成功!");
list();
}
}
//修改书籍
public void modify(){
System.out.println("输入要修改的书名:");
String name = sc.next();
Dao dao = new Dao();
if(!dao.judgeExist(name))
System.out.println("该书籍不存在!");
else{
Book book = dao.find(name);
System.out.println("书名:"+book.getName()+" 作者:"+book.getAuthor()+" 库存量:"+book.getNum());
System.out.println("输入修改后的书名:");
String newname = sc.next();
System.out.println("输入修改后的作者:");
String newauthor = sc.next();
System.out.println("输入修改后的库存量:");
int newnum = sc.nextInt();
dao.modifyBook(name, new Book(newname,newauthor,newnum));
System.out.println("修改成功!");
}
}
//删除书籍
public void delete() {
System.out.println("请输入要删除的书名:");
String name = sc.next();
Dao dao = new Dao();
if(!dao.judgeExist(name)) {
System.out.println("书籍不存在!");
}
else{
dao.deleteBook(name);
System.out.println("删除成功!");
}
}
}
BookManager主要是和用户进行交互,在控制台显示信息提示用户如何操作,并且调用dao查询数据库拿到结果返回给用户。
public class Dao {
/**
* 根据书名判定书籍是否已存在
*/
public boolean judgeExist(String targetName){
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
int count = 0;
try {
conn = MySQLUtils.getConn();
String sql = "select count(*) as count from book where book_name = ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, targetName);
rs = stmt.executeQuery();
while(rs.next()){
count = rs.getInt("count");
}
}
catch (SQLException e) {
e.printStackTrace();
}
finally{
MySQLUtils.closeConn(conn, stmt, rs);
}
if(count==0) return false;
else
return true;
}
/**
* 获取所有书籍列表
*/
public List<Book> getAllBooks(){
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
List<Book> bookList = new ArrayList<>();
try {
conn = MySQLUtils.getConn();
String sql = "select * from book";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()){
String name = rs.getString("book_name");
String author = rs.getString("book_author");
int num = rs.getInt("book_num");
Book book = new Book(name, author, num);
bookList.add(book);
}
}
catch (SQLException e) {
e.printStackTrace();
}
finally{
MySQLUtils.closeConn(conn, stmt, rs);
}
return bookList;
}
/**
* 根据书名查找书籍详细信息
*/
public Book find(String bookName){
Connection conn = null;
PreparedStatement stmt = null;
Book book = null;
try {
conn = MySQLUtils.getConn();
String sql = "select * from book where book_name = ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, bookName);
ResultSet tmpres = stmt.executeQuery();
book = new Book();
while(tmpres.next()){
book.setName(tmpres.getString("book_name"));
book.setAuthor(tmpres.getString("book_author"));
book.setNum(tmpres.getInt("book_num"));
}
}
catch (SQLException e) {
e.printStackTrace();
}
finally{
MySQLUtils.closeConn(conn, stmt);
}
return book;
}
/**
* 添书
*/
public void addBook(Book book){
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = MySQLUtils.getConn();
String sql = "insert into book(book_name, book_author, book_num) values(?,?,?)";
stmt = conn.prepareStatement(sql);
stmt.setString(1, book.getName());
stmt.setString(2, book.getAuthor());
stmt.setInt(3, book.getNum());
stmt.executeUpdate();
}
catch (SQLException e) {
e.printStackTrace();
}
finally{
MySQLUtils.closeConn(conn, stmt);
}
}
/**
* 修改书
*/
public void modifyBook(String targetName, Book book){
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = MySQLUtils.getConn();
String sql = "update book set book_name = ?, book_author = ?, book_num = ? where book_name = ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, book.getName());
stmt.setString(2, book.getAuthor());
stmt.setInt(3, book.getNum());
stmt.setString(4, targetName);
stmt.executeUpdate();
}
catch (SQLException e) {
e.printStackTrace();
}
finally{
MySQLUtils.closeConn(conn, stmt);
}
}
/**
* 删书
*/
public void deleteBook(String bookName){
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = MySQLUtils.getConn();
String sql = "delete from book where book_name = ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, bookName);
stmt.executeUpdate();
}
catch (SQLException e) {
e.printStackTrace();
}
finally{
MySQLUtils.closeConn(conn, stmt);
}
}
}
Dao类就是和数据库交互,执行sql语句从数据库取得结果。
下面是运行界面
微信图片_20190525222626.png 微信图片_20190525222655.png 微信图片_20190525222725.png
获取所有源码,可以关注公众号【秃头哥编程】回复【图书管理系统】即可获取。还可免费进群为你答疑哦。
也可扫描下面的二维码直接关注
网友评论