Book Manager
1. 主要功能
用户登录;
注册用户;
退出系统;
链接数据库(JDBC);
2. Java 实现
a. package util
i. JdbcUtil.java
package BookManager. src. util;
import java. sql. Connection;
import java. sql. DriverManager;
public class JdbcUtil {
public static Connection getConnection ( ) {
try {
Class. forName ( "com.mysql.jdbc.Driver" ) ;
String url = "jdbc:mysql://localhost:3306/book_manager" ;
Connection conn = DriverManager. getConnection ( url, "root" , "root" ) ;
return conn;
} catch ( Exception e) {
e. printStackTrace ( ) ;
}
return null;
}
}
b. package test
i. VarCode.java
package BookManager. src. test;
import java. util. Random;
public class VarCode {
public static void main ( String[ ] args) {
Random r = new Random ( ) ;
for ( int i= 0 ; i< 4 ; i++ ) {
int n = r. nextInt ( 3 ) ;
switch ( n) {
case 0 :
int num = r. nextInt ( 10 ) ;
System. out. print ( num) ;
break ;
case 1 :
char small = ( char ) ( r. nextInt ( 26 ) + 97 ) ;
System. out. print ( small) ;
break ;
case 2 :
char big = ( char ) ( r. nextInt ( 26 ) + 65 ) ;
System. out. print ( big) ;
}
}
}
}
c. package model
i. Book.java
package BookManager. src. model;
public class Book {
private int id;
private String name;
private double price;
private String publish;
private String publishDate;
public Book ( ) { }
public Book ( int id, String name, double price, String publish, String publishDate) {
this . id = id;
this . name = name;
this . price = price;
this . publish = publish;
this . publishDate = publishDate;
}
public int getId ( ) {
return id;
}
public void setId ( int id) {
this . id = id;
}
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
public double getPrice ( ) {
return price;
}
public void setPrice ( double price) {
this . price = price;
}
public String getPublish ( ) {
return publish;
}
public void setPublish ( String publish) {
this . publish = publish;
}
public String getPublishDate ( ) {
return publishDate;
}
public void setPublishDate ( String publishDate) {
this . publishDate = publishDate;
}
}
ii. User.java
package BookManager. src. model;
public class User {
private int uid;
private String username;
private String password;
public User ( ) { }
public User ( String username, String password) {
this . username = username;
this . password = password;
}
public int getUid ( ) {
return uid;
}
public void setUid ( int uid) {
this . uid = uid;
}
public String getUsername ( ) {
return username;
}
public void setUsername ( String username) {
this . username = username;
}
public String getPassword ( ) {
return password;
}
public void setPassword ( String password) {
this . password = password;
}
}
d. package dao
i. BookDao.java
package BookManager. src. dao;
import java. sql. Connection;
import java. sql. PreparedStatement;
import java. sql. ResultSet;
import java. sql. SQLException;
import java. util. ArrayList;
import BookManager. src. model. Book;
import BookManager. src. util. JdbcUtil;
public class BookDao {
public void updateBook ( Book b) {
try {
Connection conn = JdbcUtil. getConnection ( ) ;
String sql = "update book set name=?, price=?,publish=?, publishDate=? where id=?" ;
PreparedStatement prps = conn. prepareStatement ( sql) ;
prps. setString ( 1 , b. getName ( ) ) ;
prps. setDouble ( 2 , b. getPrice ( ) ) ;
prps. setString ( 3 , b. getPublish ( ) ) ;
prps. setString ( 4 , b. getPublishDate ( ) ) ;
prps. setInt ( 5 , b. getId ( ) ) ;
prps. execute ( ) ;
} catch ( SQLException e) {
e. printStackTrace ( ) ;
}
}
public Book findById ( int id) {
try {
Connection conn = JdbcUtil. getConnection ( ) ;
String sql = "select * from book where id=?" ;
PreparedStatement prps = conn. prepareStatement ( sql) ;
prps. setInt ( 1 , id) ;
ResultSet set = prps. executeQuery ( ) ;
if ( set. next ( ) ) {
int bid = set. getInt ( "id" ) ;
String name = set. getString ( "name" ) ;
double price = set. getDouble ( "price" ) ;
String publish = set. getString ( "publish" ) ;
String date = set. getString ( "publishDate" ) ;
Book b = new Book ( ) ;
b. setId ( bid) ;
b. setName ( name) ;
b. setPrice ( price) ;
b. setPublish ( publish) ;
b. setPublishDate ( date) ;
return b;
}
} catch ( SQLException e) {
e. printStackTrace ( ) ;
}
return null;
}
public boolean isExist ( int id) {
try {
Connection conn = JdbcUtil. getConnection ( ) ;
String sql = "select * from book where id=?" ;
PreparedStatement prps = conn. prepareStatement ( sql) ;
prps. setInt ( 1 , id) ;
ResultSet set = prps. executeQuery ( ) ;
if ( set. next ( ) ) {
return true ;
}
} catch ( SQLException e) {
e. printStackTrace ( ) ;
}
return false ;
}
public void deleteBook ( int id) {
try {
Connection conn = JdbcUtil. getConnection ( ) ;
String sql = "delete from book where id=?" ;
PreparedStatement prps = conn. prepareStatement ( sql) ;
prps. setInt ( 1 , id) ;
prps. execute ( ) ;
} catch ( SQLException e) {
e. printStackTrace ( ) ;
}
}
public ArrayList< Book> queryAll ( ) {
ArrayList< Book> list = new ArrayList < > ( ) ;
try {
Connection conn = JdbcUtil. getConnection ( ) ;
String sql = "select * from book" ;
PreparedStatement prps = conn. prepareStatement ( sql) ;
ResultSet set = prps. executeQuery ( ) ;
while ( set. next ( ) ) {
int id = set. getInt ( "id" ) ;
String name = set. getString ( "name" ) ;
double price = set. getDouble ( "price" ) ;
String publish = set. getString ( "publish" ) ;
String date = set. getString ( "publishDate" ) ;
Book b = new Book ( ) ;
b. setId ( id) ;
b. setName ( name) ;
b. setPrice ( price) ;
b. setPublish ( publish) ;
b. setPublishDate ( date) ;
list. add ( b) ;
}
} catch ( SQLException e) {
e. printStackTrace ( ) ;
}
return list;
}
public void addBook ( Book b) {
try {
Connection conn = JdbcUtil. getConnection ( ) ;
String sql = "insert into book(name, price, publish, publishDate) values(?,?,?,?)" ;
PreparedStatement prps = conn. prepareStatement ( sql) ;
prps. setString ( 1 , b. getName ( ) ) ;
prps. setDouble ( 2 , b. getPrice ( ) ) ;
prps. setString ( 3 , b. getPublish ( ) ) ;
prps. setString ( 4 , b. getPublishDate ( ) ) ;
prps. execute ( ) ;
} catch ( SQLException e) {
e. printStackTrace ( ) ;
}
}
}
ii. UserDao.java
package BookManager. src. dao;
import java. sql. Connection;
import java. sql. PreparedStatement;
import java. sql. ResultSet;
import java. sql. SQLException;
import BookManager. src. model. User;
import BookManager. src. util. JdbcUtil;
public class UserDao {
public boolean isExist ( String name) {
try {
Connection conn = JdbcUtil. getConnection ( ) ;
String sql = "select * from user where username=?" ;
PreparedStatement prps = conn. prepareStatement ( sql) ;
prps. setString ( 1 , name) ;
ResultSet set = prps. executeQuery ( ) ;
if ( set. next ( ) ) {
return true ;
} else {
return false ;
}
} catch ( Exception e) {
e. printStackTrace ( ) ;
}
return true ;
}
public boolean login ( String name, String pwd) {
try {
Connection conn = JdbcUtil. getConnection ( ) ;
String sql = "select * from user where username=? and password=?" ;
PreparedStatement prps = conn. prepareStatement ( sql) ;
prps. setString ( 1 , name) ;
prps. setString ( 2 , pwd) ;
ResultSet set = prps. executeQuery ( ) ;
if ( set. next ( ) ) {
return true ;
}
} catch ( SQLException e) {
e. printStackTrace ( ) ;
}
return false ;
}
public void register ( User u) {
try {
Connection conn = JdbcUtil. getConnection ( ) ;
String sql = "insert into user(username, password) values(?,?)" ;
PreparedStatement prps = conn. prepareStatement ( sql) ;
prps. setString ( 1 , u. getUsername ( ) ) ;
prps. setString ( 2 , u. getPassword ( ) ) ;
prps. execute ( ) ;
} catch ( Exception e) {
e. printStackTrace ( ) ;
}
}
}
e. package console
i. MainConsole.java
package BookManager. src. console;
import java. util. Scanner;
public class MainConsole {
public static void main ( String[ ] args) {
showView ( ) ;
Scanner sc = new Scanner ( System. in) ;
UserConsole uc = new UserConsole ( ) ;
BookConsole bc = new BookConsole ( ) ;
while ( true ) {
System. out. println ( "请选择功能:用户登录(A) 注册用户(B) 退出系统(Q)" ) ;
String option = sc. next ( ) . toUpperCase ( ) ;
switch ( option) {
case "A" :
boolean flag = uc. login ( ) ;
if ( flag) {
bc. showBookConsole ( ) ;
}
break ;
case "B" :
uc. register ( ) ;
break ;
case "Q" :
System. out. println ( "欢迎再次使用" ) ;
System. exit ( 0 ) ;
default :
System. out. println ( "输入无效" ) ;
}
}
}
private static void showView ( ) {
System. out. println ( "*****************************************" ) ;
System. out. println ( "* *" ) ;
System. out. println ( "* *" ) ;
System. out. println ( "* *" ) ;
System. out. println ( "* *" ) ;
System. out. println ( "* *" ) ;
System. out. println ( "* *" ) ;
System. out. println ( "* 欢迎使用图书管理系统 *" ) ;
System. out. println ( "* *" ) ;
System. out. println ( "* *" ) ;
System. out. println ( "* *" ) ;
System. out. println ( "* *" ) ;
System. out. println ( "* *" ) ;
System. out. println ( "* *" ) ;
System. out. println ( "* *" ) ;
System. out. println ( "*****************************************" ) ;
}
}
ii. BookConsole.java
package BookManager. src. console;
import java. util. ArrayList;
import java. util. Scanner;
import dao. BookDao;
import model. Book;
public class BookConsole {
private Scanner sc = new Scanner ( System. in) ;
private BookDao bookDao = new BookDao ( ) ;
public void showBookConsole ( ) {
loop : while ( true ) {
System. out. println ( "请选择您所要的操作" ) ;
System. out. println ( "查看图书(A) 新增图书(B) 修改图书(C) 删除图书(D) 注销用户(Q)" ) ;
String option = sc. next ( ) . toUpperCase ( ) ;
switch ( option) {
case "A" :
showBooks ( ) ;
break ;
case "B" :
addBook ( ) ;
break ;
case "C" :
updateBook ( ) ;
break ;
case "D" :
deleteBook ( ) ;
break ;
case "Q" :
System. out. println ( "注销成功!" ) ;
break loop;
default :
System. out. println ( "输入无效" ) ;
}
}
}
private void updateBook ( ) {
System. out. println ( "请输入要修改的图书编号:" ) ;
int id = sc. nextInt ( ) ;
Book b = bookDao. findById ( id) ;
if ( b== null) {
System. out. println ( "id不存在,请重新输入" ) ;
} else {
System. out. println ( "请选择要修改的属性:(A)书名 (B)价格 (C)出版社 (D)出版日期" ) ;
String option = sc. next ( ) . toUpperCase ( ) ;
switch ( option) {
case "A" :
System. out. println ( "请输入新书名:" ) ;
String name = sc. next ( ) ;
b. setName ( name) ;
break ;
case "B" :
System. out. println ( "请输入新价格:" ) ;
double price = sc. nextDouble ( ) ;
b. setPrice ( price) ;
break ;
case "C" :
System. out. println ( "请输入新出版社:" ) ;
String publish = sc. next ( ) ;
b. setPublish ( publish) ;
break ;
case "D" :
System. out. println ( "请输入新出版日期:" ) ;
String date = sc. next ( ) ;
b. setPublishDate ( date) ;
break ;
default :
System. out. println ( "输入无效" ) ;
return ;
}
bookDao. updateBook ( b) ;
System. out. println ( "修改成功" ) ;
}
}
private void deleteBook ( ) {
System. out. println ( "请输入要删除的编号:" ) ;
int id = sc. nextInt ( ) ;
boolean exist = bookDao. isExist ( id) ;
if ( exist) {
bookDao. deleteBook ( id) ;
System. out. println ( "删除成功!" ) ;
} else {
System. out. println ( "id不存在,请重新输入" ) ;
}
}
private void showBooks ( ) {
ArrayList< Book> list = bookDao. queryAll ( ) ;
if ( list. size ( ) == 0 ) {
System. out. println ( "当前无图书信息,请先添加图书信息" ) ;
return ;
}
System. out. println ( "编号\t书名\t\t价格\t出版社\t\t出版日期" ) ;
for ( Book b : list) {
int id = b. getId ( ) ;
String name = b. getName ( ) ;
double price = b. getPrice ( ) ;
String publish = b. getPublish ( ) ;
String date = b. getPublishDate ( ) ;
System. out. println ( id+ "\t" + name+ "\t" + price+ "\t" + publish+ "\t" + date) ;
}
}
private void addBook ( ) {
System. out. println ( "请输入书名:" ) ;
String name = sc. next ( ) ;
System. out. println ( "请输入价格:" ) ;
double price = sc. nextDouble ( ) ;
System. out. println ( "请输入出版社:" ) ;
String publish = sc. next ( ) ;
System. out. println ( "请输入出版日期:" ) ;
String publishDate = sc. next ( ) ;
Book b = new Book ( ) ;
b. setName ( name) ;
b. setPrice ( price) ;
b. setPublish ( publish) ;
b. setPublishDate ( publishDate) ;
bookDao. addBook ( b) ;
System. out. println ( "新增图书成功!" ) ;
}
}
iii. UserConsole.java
package BookManager. src. console;
import java. util. Scanner;
import dao. UserDao;
import model. User;
public class UserConsole {
private Scanner sc = new Scanner ( System. in) ;
private UserDao userDao = new UserDao ( ) ;
public boolean login ( ) {
System. out. println ( "欢迎登录图书系统" ) ;
System. out. println ( "请输入用户名:" ) ;
String name = sc. next ( ) ;
System. out. println ( "请输入密码:" ) ;
String pwd = sc. next ( ) ;
boolean flag = userDao. login ( name, pwd) ;
if ( flag) {
System. out. println ( "登录成功,当前用户:" + name) ;
return true ;
} else {
System. out. println ( "用户名或密码错误!" ) ;
return false ;
}
}
public void register ( ) {
System. out. println ( "欢迎注册新用户" ) ;
String name;
while ( true ) {
System. out. println ( "请输入用户名:" ) ;
name = sc. next ( ) ;
boolean exist = userDao. isExist ( name) ;
if ( exist) {
System. out. println ( "用户名已被注册,请换一个" ) ;
} else {
break ;
}
}
String pwd;
while ( true ) {
System. out. println ( "请输入密码:" ) ;
pwd = sc. next ( ) ;
if ( pwd. length ( ) < 6 ) {
System. out. println ( "密码长度小于6位,请重新输入" ) ;
} else {
break ;
}
}
User u = new User ( ) ;
u. setUsername ( name) ;
u. setPassword ( pwd) ;
userDao. register ( u) ;
System. out. println ( "注册成功" ) ;
}
}