介绍
这是利用Java编写的一个拥有增删改查功能的图书管理程序,利用了MySQL数据库能实现对书本的ISBN码和书本名称以及价格的储存与修改。
软件架构
- JDK 11
- MySQL 5.7.224
- maven 3.8.4
- mysql-connector-java 8.0.28.jar
安装教程
- 导入到idea社区版
- 导入mysql-connector-java 8.0.28.jar这是链接MySQL数据库的驱动
- 下载并安装好MySQL数据库
使用说明
- 通过输入数字来选择想要的功能
- 按照提示操作即可
参与贡献
- 我把名字打长就会有人跟着念
项目结构
MySQL数据库内容
Main类
public class Main {
public static void main(String[] args)
{
GongNeng.run();//进行功能选择
}
}
功能选择类
import java.util.Scanner;
public class GongNeng {
public static void run()
{
System.out.println("|---------------------图书管理系统2.0----------------------------|");
System.out.println("| 1、查找 |");
System.out.println("| 2、插入 |");
System.out.println("| 3、删除 |");
System.out.println("| 4、修改 |");
System.out.println("| 5、退出 |");
System.out.println("|>>>>请输入你想要的功能所对应的相应数字(列如输入数字1进入到查询功能):<<<<|");
Scanner scanner=new Scanner(System.in);
String chooseStr=scanner.next();
if (chooseStr.equals("1"))
{
ChaXun chaXun=new ChaXun();
chaXun.choose();
run();
}
else if (chooseStr.equals("2"))
{
ChaRu chaRu=new ChaRu();
chaRu.shuru();
run();
}
else if (chooseStr.equals("3"))
{
ShanChu shanChu=new ShanChu();
shanChu.choosegonneng();
run();
}
else if (chooseStr.equals("4"))
{
XiuGai xiuGai=new XiuGai();
xiuGai.choose();
run();
}
else if (chooseStr.equals("5"))
System.exit(0);
else
run();
}
}
增加数据类
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class ChaRu {
String book_name;
String book_ISBN;
float book_price;
private Connection con2;
public void shuru()
{
System.out.println(">输入书本ISBN:");
Scanner scanner=new Scanner(System.in);
book_ISBN =scanner.nextLine();//输入文本时用nextLine()方法,一直读取到行分隔符为止
System.out.println(">输入书名称:");
Scanner scanner1=new Scanner(System.in);
book_name =scanner1.nextLine();
System.out.println(">输入书本价格:(请保留两位小数)");
Scanner scanner2=new Scanner(System.in);
book_price =scanner2.nextFloat();
String sqlStr="'"+book_ISBN+"'"+","+"'"+book_name+"'"+","+"'"+book_price+"'";
jdbc(sqlStr);
}
public void jdbc(String str_value)
{
Statement statement;
con2=GetDBConnection.connectDB("library","root","x20000j08r01");//链接数据库
String sqlStr="insert into book(ISBN,bookname,price) values("+str_value+")";
try{
statement = con2.createStatement();
/*statement.executeUpdate(sqlStr);*/
int count=statement.executeUpdate(sqlStr);//计算执行了多少条SQL语句
if(count > 0){
System.out.println("添加成功!");
}else{
System.err.println("添加失败");
}
con2.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
删除功能类
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class ShanChu {
public void choosegonneng()
{
System.out.println(">>>>请选择要按照什么信息来删除书本:(输入1按照书本名称来删除书本信息,输入2按照书本ISBN来删除书本信息,输入数字3退出程序,输入其他重新选择)<<<<<");
Scanner scanner=new Scanner(System.in);
String chooseStr=scanner.next();
if (chooseStr.equals("1"))//选择功能
{
ShuRu_bookname();
}
else if (chooseStr.equals("2"))
{
ShuRu_bookISBN();
}
else if (chooseStr.equals("3"))
{
System.exit(0);
}
else
{
choosegonneng();
}
}
public void ShuRu_bookname()
{
System.out.println(">>>>>请输入要删除书本的名称:");
Scanner scanner=new Scanner(System.in);
String bookname=scanner.nextLine();
String sql_str="DELETE FROM book WHERE bookname="+"'"+bookname+"'";
jdbc(sql_str);
}
public void ShuRu_bookISBN()
{
System.out.println(">>>>>>请输入要删除书本的ISBN码:");
Scanner scanner=new Scanner(System.in);
String bookisbn=scanner.next();
String sql_str="DELETE FROM book WHERE ISBN="+"'"+bookisbn+"'";
jdbc(sql_str);
}
public void jdbc(String str_value)
{
Statement statement;
Connection con2 = GetDBConnection.connectDB("library", "root", "x20000j08r01");//链接数据库
try{
statement = con2.createStatement();
int count=statement.executeUpdate(str_value);//计算执行了多少条SQL语句
if(count > 0){
System.out.println("删除成功!");
}else{
System.err.println("删除失败");
}
con2.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
修改数据类
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class XiuGai {
String sqlStr;
String sql_str;
ChaXun chaXun=new ChaXun();
Bookinfo bookinfo=new Bookinfo();
String ISBN;
String bookname;
float price;
public void choose(){
System.out.println(">>>>请选择要修改的书本,输入数字1通过书名来选择,输入数字2通过ISBN码来选择,输入数字3退出程序,输入其他重新选择:<<<<<");
Scanner scanner=new Scanner(System.in);
String chooseStr=scanner.next();
if (chooseStr.equals("1"))
{
System.out.println(">>>>请输入要修改的书本名称:");
Scanner scanner2=new Scanner(System.in);
String setBookname1= scanner2.nextLine();
String setbookname2="'"+setBookname1+"'";
sqlStr="select ISBN,bookname,price from book where bookname="+setbookname2;
chaXun.jdbc(sqlStr);
if (chaXun.rs_number!=0)//判断是否匹配到书本
{
ISBN=bookinfo.getISBN();//获取要修改的书的信息
bookname=bookinfo.getBookname();
xiugai();
}
}
else if (chooseStr.equals("2"))
{
System.out.println(">>>>>请输入要修改的书本的ISBN码:");
Scanner scanner3=new Scanner(System.in);
String setbookisbn= scanner3.next();
String setbookisbn2="'"+setbookisbn+"'";
sqlStr="select ISBN,bookname,price from book where ISBN="+setbookisbn2;
chaXun.jdbc(sqlStr);
if (chaXun.rs_number!=0)
{
ISBN=bookinfo.getISBN();
bookname=bookinfo.getBookname();
xiugai();
}
}
else if (chooseStr.equals("3"))
{
System.exit(0);
}
else
choose();
}
public void xiugai()
{
System.out.println("请选择要修改该书的信息");
System.out.println(">>>>输入数字1修改该书本的名称,输入数字2修改该书本的ISBN码,输入数字3修改该书本的价格,输入数字4退出程序,输入其他重新选择:");
Scanner scanner=new Scanner(System.in);
String chooseStr=scanner.next();
if (chooseStr.equals("1"))
{
System.out.println(">>>>请输入要修改的书本名称:");
Scanner scanner2=new Scanner(System.in);
String setBookname1= scanner2.nextLine();
String setbookname2="'"+setBookname1+"'";
sql_str="UPDATE book \n" +
"SET bookname= \n" +setbookname2+
"WHERE bookname="+"'"+bookname+"'";
jdbc(sql_str);
}
else if (chooseStr.equals("2"))
{
System.out.println(">>>>>请输入要修改的书本的ISBN码:");
Scanner scanner3=new Scanner(System.in);
String setbookisbn= scanner3.nextLine();
String setbookisbn2="'"+setbookisbn+"'";
sql_str="UPDATE book \n" +
"SET ISBN= \n" +setbookisbn2+
"WHERE ISBN="+"'"+ISBN+"'";
jdbc(sql_str);
}
else if (chooseStr.equals("3"))
{
System.out.println(">>>>>请输入要修改的书本的价格:");
Scanner scanner3=new Scanner(System.in);
String setbookprice= scanner3.next();
String setbookprice2="'"+setbookprice+"'";
sql_str="UPDATE book \n" +
"SET price= \n" +setbookprice2+
"WHERE bookname="+"'"+bookname+"'";
jdbc(sql_str);
}
else if (chooseStr.equals("4"))
{
System.exit(0);
}
else
xiugai();
}
private void jdbc(String sql_str) {
Statement statement;
Connection con2 = GetDBConnection.connectDB("library", "root", "x20000j08r01");//链接数据库
try{
statement = con2.createStatement();
int count=statement.executeUpdate(sql_str);//计算执行了多少条SQL语句
if(count > 0){
System.out.println("修改成功!");
}else{
System.err.println("修改失败");
}
con2.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
查询类
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class ChaXun {
Statement statement;
Connection con2;
ResultSet rs;
int rs_number=0;
String sqlStr;
Bookinfo bookinfo=new Bookinfo();
public void choose(){
System.out.println("请选择查询方式(支持模糊查询):");
System.out.println(">>>>输入数字1通过书名来查询,输入数字2通过ISBN码来查询,输入数字3退出,输入其他重新选择:<<<<");
Scanner scanner=new Scanner(System.in);
String chooseStr=scanner.next();
if (chooseStr.equals("1"))
{
System.out.println(">>>>请输入要查询的书本名称:");
Scanner scanner2=new Scanner(System.in);
String setBookname1= scanner2.next();
String setbookname2="'"+"%"+setBookname1+"%"+"'";
sqlStr="select ISBN,bookname,price from book where bookname like "+setbookname2;
jdbc(sqlStr);
}
else if (chooseStr.equals("2"))
{
System.out.println(">>>>>请输入要查询的书本的ISBN码:");
Scanner scanner3=new Scanner(System.in);
String setbookisbn= scanner3.next();
String setbookisbn2="'"+"%"+setbookisbn+"%"+"'";
sqlStr="select ISBN,bookname,price from book where ISBN like "+setbookisbn2;
jdbc(sqlStr);
}
else if (chooseStr.equals("3"))
{
System.exit(0);
}
else
choose();
}
public void jdbc(String sqlStr)
{
con2=GetDBConnection.connectDB("library","root","x20000j08r01");
try {
statement= con2.createStatement();
rs=statement.executeQuery(sqlStr);
while (rs.next())
{
bookinfo.setISBN(rs.getString(1));
bookinfo.setBookname(rs.getString(2));
bookinfo.setPrice(rs.getFloat(3));
System.out.println(bookinfo.toString());
rs_number++;
}
con2.close();
if (rs_number==0)
{
System.err.println("未查询到数据!");
}
else
System.out.println("查询成功一共查询到"+rs_number+"本书!");
} catch (SQLException e) {
System.out.println(e);
}
}
}
bookinfo类
public class Bookinfo {
static String ISBN;
static String bookname;
static float price;
public String getISBN() {
return ISBN;
}
public void setISBN(String ISBN) {
this.ISBN = ISBN;
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
@Override
public String toString() {
return "书的信息为{" +
"ISBN='" + ISBN + '\'' +
", bookname='" + bookname + '\'' +
", price=" + price +
'}';
}
}
数据库链接类
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class GetDBConnection {
//todo 记得在运行程序前检查有没有打开MySQL服务,如果没有就执行命令:net start mysql,关闭指令为:net stop mysql(记得用管理员身份运行cmd)
public static Connection connectDB( String DBName,String id,String p)
{
Connection con=null;
String url="jdbc:mysql://localhost:3306/"+DBName+"?useSSL=true&serverTime=CST&characterEncoding=utf-8";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
con= DriverManager.getConnection(url,id,p);
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
}
运行截图
总结
本项目的仓库地址为图书管理2.0,相比之前的图书管理1.0利用文本文件来充当数据库新版的图书管理系统使用了MySQL数据库来储存数据,与之前相比还增加了一个修改功能。