基于JDBC的宠物管理系统
生活随笔
收集整理的這篇文章主要介紹了
基于JDBC的宠物管理系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本次系統是基于上次簡易版的寵物管理系統的升級,簡易版詳見java寵物管理系統(運用接口簡易版)
功能依然有以下幾點:
1.保存大量寵物信息
2.查看所有的寵物
3.通過名字查看某個寵物
4.輸入寵物信息,錄入系統中
5.修改系統中的寵物信息
6.刪除寵物的信息
7.按年齡或價格進行排序
優化的有:編寫了JDBC工具類,封裝JDBC操作;
新增用戶登錄功能,只有登錄成功才能使用該管理系統
一、向數據庫中插入信息
1.首先創建數據庫pet
create database pet;
2.使用數據庫use pet;
3.創建用戶表,并插入用戶信息
create table petuser (user_name VARCHAR(20) NOT NULL,user_password VARCHAR(20) NOT NULL);INSERT INTO petuser(user_name,user_password) VALUES('ab','123456'),('qw','1q2w3e'),('爬走','654321');4.創建寵物信息表,并插入信息
create table pets (name VARCHAR(20) NOT NULL,gender VARCHAR(20) NOT NULL,type VARCHAR(20) NOT NULL,age INT NOT NULL,price INT NOT NULL,weight INT NOT NULL );INSERT INTO pets(name,gender,type,age,price,weight) VALUES('white','M','dog',1,3000,2),('black','M','dog',2,2000,3),('blue','M','cat',1,1600,4), ('flower','F','cat',3,5000,3),('red','F','cat',1,4600,1);用戶表信息展示:
寵物表信息展示:
二、編寫Java代碼
Pet類
package demo;public class Pet {private String name;private String gender;private String type;private int age;private int price;private int weight;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getType() {return type;}public void setType(String type) {this.type = type;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}public int getWeight() {return weight;}public void setWeight(int weight) {this.weight = weight;}public Pet() {}public Pet(String name, String gender, String type, int age, int price, int weight) {this.name = name;this.gender = gender;this.type = type;this.age = age;this.price = price;this.weight = weight;}public void play(){System.out.printf("寵物:%s\t\t性別:%s\t\t類型:%s\t\t年齡:%d\t\t價格:%d\t\t重量:%d\n",this.name,this.gender,this.type,this.age,this.price,this.weight);}}JDBC工具類
package demo;import java.lang.reflect.Field; import java.sql.*; import java.util.ArrayList;public class JDBCUtil {public static final String URL = "jdbc:mysql://localhost:3306/pet?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8";public static final String USERNAME = "root";public static final String PASSWORD = "root";//執行增刪改public static int update(String sql,Object... args) {try (Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD)) {PreparedStatement preparedStatement = connection.prepareStatement(sql);for (int i = 0; i < args.length; i++) {preparedStatement.setObject(i + 1, args[i]);}int row = preparedStatement.executeUpdate();return row;} catch (SQLException throwables) {throwables.printStackTrace();}return 0;}/*** 通用查詢方法,返回任意類型的對象集合* 第一個<T>是聲明類型 ArrayList<T>使用聲明的類型作為集合類型* @param clazz* @param sql* @param args* @param <T>* @return*/public static <T> ArrayList<T> query(Class clazz, String sql, Object... args){//包裝數據的集合ArrayList<T> arrayList = new ArrayList<>();try(Connection connection = DriverManager.getConnection(URL,USERNAME,PASSWORD)){PreparedStatement preparedStatement = connection.prepareStatement(sql);//給?占位符賦值for (int i = 0; i < args.length; i++) {preparedStatement.setObject(i + 1,args[i]);}ResultSet resultSet = preparedStatement.executeQuery();//將ResultSet中的數據讀取出來,保存到ArrayList中while(resultSet.next()){//創建對象包裝當前行的數據Object obj = clazz.newInstance();//獲得類的所有屬性Field[] fields = clazz.getDeclaredFields();for(Field field : fields){//讀取當前列的信息Object value = resultSet.getObject(field.getName());//給屬性賦值field.setAccessible(true);field.set(obj,value);}arrayList.add((T) obj);}} catch (Exception e) {e.printStackTrace();}return arrayList;}public static int sort(String sql) {try (Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD)) {PreparedStatement preparedStatement = connection.prepareStatement(sql);ResultSet resultSet=preparedStatement.executeQuery(sql);while(resultSet.next()){//讀取每一列String name = resultSet.getString("name");String gender = resultSet.getString("gender");String type = resultSet.getString("type");int age = resultSet.getInt("age");int price = resultSet.getInt("price");int weight = resultSet.getInt("weight");System.out.println("寵物名:"+name+"-----性別:"+gender+"-----類型:"+type+"-----年齡:"+age+"-----價格:"+price+"-----重量:"+weight);}} catch (SQLException throwables) {throwables.printStackTrace();}return 0;} }PetManage類
package demo;import java.util.ArrayList; import java.util.Scanner;public class PetManage {public static void showAllpets() {ArrayList<Pet> arraylist = new ArrayList();arraylist = JDBCUtil.query(Pet.class, "select * from pets");for (int i = 0; i < arraylist.size(); i++) {arraylist.get(i).play();}}public static void findByName(){Scanner scanner = new Scanner(System.in);System.out.println("請輸入要查詢的寵物名:");String nam = scanner.next();ArrayList<Pet> arraylist = new ArrayList();arraylist = JDBCUtil.query(Pet.class, "select * from pets where name = ?",nam);for (int i = 0; i < arraylist.size(); i++) {arraylist.get(i).play();}}public static void addPet(){Scanner scanner = new Scanner(System.in);System.out.println("請輸入要添加的寵物名:");String nam = scanner.next();System.out.println("請輸入要添加的寵物性別:");String gder = scanner.next();System.out.println("請輸入要添加的寵物類型:");String ty = scanner.next();System.out.println("請輸入要添加的寵物年齡:");int ag = scanner.nextInt();System.out.println("請輸入要添加的寵物價格:");int pri = scanner.nextInt();System.out.println("請輸入要添加的寵物重量:");int wei = scanner.nextInt();int s = JDBCUtil.update("INSERT INTO pets(name,gender,type,age,price,weight)VALUES(?,?,?,?,?,?)",nam,gder,ty,ag,pri,wei);if(s>0){System.out.println("添加成功!");}}public static void updatePetByName(){Scanner scanner = new Scanner(System.in);System.out.println("請輸入要更新的寵物名:");String na = scanner.next();System.out.println("請輸入修改后的寵物名:");String nam = scanner.next();System.out.println("請輸入修改后的寵物性別:");String gder = scanner.next();System.out.println("請輸入修改后的寵物種類:");String ty = scanner.next();System.out.println("請輸入修改后的寵物年齡:");int ag = scanner.nextInt();System.out.println("請輸入修改后的寵物價格:");int pri = scanner.nextInt();System.out.println("請輸入修改后的寵物重量:");int wei = scanner.nextInt();int s = JDBCUtil.update("update pets set name=?,gender=?,type=?,age=?,price=?,weight=? where name=?",nam,gder,ty,ag,pri,wei,na);if(s>0){System.out.println("更新成功!");}}public static void removePetByName(){Scanner scanner = new Scanner(System.in);System.out.println("請輸入要刪除的寵物名:");String nam = scanner.next();int s = JDBCUtil.update("delete from pets where name=?",nam);if(s>0){System.out.println("刪除成功!");}}public static void sortByAge(){int s = JDBCUtil.sort("select * from pets order by age");}public static void sortByPrice(){int s = JDBCUtil.sort("select * from pets order by price");}}PetShopApp類
package demo;import java.sql.*; import java.util.Scanner;public class PetShopApp {public static final String URL = "jdbc:mysql://localhost:3306/pet?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8";public static void main(String[] args) {PetManage petmanage = new PetManage();Scanner scanner = new Scanner(System.in);System.out.println("賬號:");String username = scanner.nextLine();System.out.println("密碼:");String password = scanner.nextLine();try (Connection connection = DriverManager.getConnection(URL, "root", "root");) {System.out.println(connection);String sql = "select * from petuser where user_name = ? and user_password = ? ";PreparedStatement statement = connection.prepareStatement(sql);statement.setString(1, username);statement.setString(2, password);ResultSet resultSet = statement.executeQuery();int op;if (resultSet.next()) {System.out.println("登陸成功!歡迎!");for (; ; ) {System.out.println("--------------------歡迎使用寵物管理系統--------------------");System.out.println("請選擇執行的操作: 1.查看所有寵物 2.添加寵物 3.更新寵物 4.查找寵物 " +"5.刪除寵物 6.按年齡排序 7.按價格排序 其他:退出");if(scanner.hasNextInt()) {op = scanner.nextInt();switch (op) {case 1:petmanage.showAllpets();break;case 2:petmanage.addPet();break;case 3:petmanage.updatePetByName();break;case 4:petmanage.findByName();break;case 5:petmanage.removePetByName();break;case 6:petmanage.sortByAge();break;case 7:petmanage.sortByPrice();break;default:return;}}else if(scanner.hasNext()){System.out.println("請輸入數字!");//String m = scanner.next();scanner.next();}}}} catch (SQLException throwables) {throwables.printStackTrace();}} }三、運行展示
用戶登錄
查看寵物
添加寵物
添加后:
更新寵物
更新后:
查找寵物
刪除寵物
按年齡排序
按價格排序
總結
以上是生活随笔為你收集整理的基于JDBC的宠物管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Symbian中不能跨越线程(RThre
- 下一篇: C++ 下一代标准库 tr1中默认的哈希