JDBC 实现一个控制台的菜单系统

开发环境及工具:IDEA 2018  +  MySQL5.5

新建项目如下:

第一步:选择Java,点击next

默认next,到如下界面,自己命名即可:

点击finish,完成新建过程。

搭建项目框架如下:

注意点:out文件夹不用自己新建,其他按照eclipse里面建包,建类一样。

导入mysql的jar包(去官网下或者网盘下载)

网盘链接: https://pan.baidu.com/s/1cMXavTW7F5eh18lF796TZg
提取码:k1a8 

src下面新建lib文件夹,将jar包粘贴进去,,注意还未导入成功!!!!!

做如下操作:右键,选择add as library,后面点击OK即可。

成功结果如下:

数据库准备(建表):

/*
SQLyog Ultimate v12.08 (64 bit)
MySQL - 5.5.58 : Database - test1
*********************************************************************
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`test1` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `test1`;

/*Table structure for table `user` */

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
  `uid` varchar(10) NOT NULL,
  `pwd` varchar(10) DEFAULT NULL,
  `name` varchar(10) DEFAULT NULL,
  `role` int(3) DEFAULT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*Data for the table `user` */

insert  into `user`(`uid`,`pwd`,`name`,`role`) values ('1000','123','jack',0),('1001','123','bob',0),('1002','456','rose',1),('1005','222','nihao',0);

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

封装 数据库的连接与关闭 在DBC类:

import java.sql.Connection;
import java.sql.DriverManager;

public class DBC {

    private static final String sqlUser="root";                                     //root为用户名
    private static final String sqlPassword="123456";                               //123456为连接密码
    private static final String databaseURL="jdbc:mysql://localhost:3306/test1";    //test1为数据库名

    private static Connection conn=null;

    public static Connection  getConn()
    {

        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(databaseURL, sqlUser, sqlPassword);
            if (!conn.isClosed()) {
                //System.out.println("数据库连接成功");
            }
            return conn;
        }catch (Exception e)
        {
            e.printStackTrace();
            return null;
        }
    }

    public static void closeConn()
    {
        if(conn!=null)
        {
            try{
                conn.close();
            }catch (Exception e)
            {
                e.printStackTrace();
                conn=null;
            }
        }
    }
}

 建立Java Bean,这里为新建的User类

public class User {

    private String uid;       //用户id
    private String pwd;       //用户密码
    private String name;      //用户姓名
    private int role;         //用户权限--此系统中暂未对权限进行控制

    public int getRole() {
        return role;
    }

    public void setRole(int role) {
        this.role = role;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

}

对数据库的操作,DBO类

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DBO {

    Connection conn;

    public boolean checkUser(String uid,String pwd)   //验证用户名和密码
    {
        try
        {
            conn = DBC.getConn();
            PreparedStatement pstmt=conn.prepareStatement("select * from user where uid=? and pwd=?");
            pstmt.setString(1, uid);
            pstmt.setString(2, pwd);
            ResultSet rs=pstmt.executeQuery();
            if(rs.next())
                return true;
            return false;
        }
        catch(Exception e){
            e.printStackTrace();
            return false;
        }finally{
            DBC.closeConn();
        }
    }

    public boolean insertUser(String uid,String pwd,String uname,int role)   //增添用户
    {
        try
        {
            conn = DBC.getConn();
            PreparedStatement pstmt=conn.prepareStatement("insert into user(uid,pwd,name,role) values(?,?,?,?)");
            pstmt.setString(1, uid);
            pstmt.setString(2, pwd);
            pstmt.setString(3, uname);
            pstmt.setInt(4, role);
            pstmt.execute();
            return true;
        }
        catch(Exception e){
            e.printStackTrace();
            return false;
        }finally{
            DBC.closeConn();
        }
    }

    public boolean deleteUser(String uid)   //删除用户
    {
        try{
            conn=DBC.getConn();
            PreparedStatement pstmt=conn.prepareStatement("delete from user where uid=?");
            pstmt.setString(1, uid);
            return pstmt.executeUpdate();
        }catch(Exception e){
            e.printStackTrace();
            return -1;
        }finally{
            DBC.closeConn();
        }
    }

    public boolean updateUser(String id,String pwd)   //修改用户
    {
        try{
            conn=DBC.getConn();
            PreparedStatement pstmt=conn.prepareStatement("update user set pwd=? where uid=?");
            pstmt.setString(1, pwd);
            pstmt.setString(2, id);
            pstmt.execute();
            return true;
        }catch(Exception e){
            e.printStackTrace();
            return false;
        }finally{
            DBC.closeConn();
        }
    }

    public User searchUser(String uid)   //查询用户
    {
        try{
            conn=DBC.getConn();
            PreparedStatement pstmt=conn.prepareStatement("select * from user where uid=?");
            pstmt.setString(1, uid);
            ResultSet rs=pstmt.executeQuery();
            if(rs.next()){
                User user = new User();
                user.setUid(rs.getString(1));
                user.setPwd(rs.getString(2));
                user.setName(rs.getString(3));
                user.setRole(rs.getInt(4));
                return user;
            }else
                return null;
        }catch(Exception e){
            e.printStackTrace();
            return null;
        }finally{
            DBC.closeConn();
        }
    }
}

显示界面菜单,即Main类

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        DBO dbo = new DBO();
        while(true)
        {
            System.out.println("********人员管理系统*******");
            System.out.print("请输入用户账号:");
            Scanner sc = new Scanner(System.in);
            String uid = sc.nextLine();
            System.out.print("请输入用户密码:");
            String upwd = sc.nextLine();
            //System.out.println(uid+","+upwd);
            if(!dbo.checkUser(uid,upwd))
            {
                System.out.println("登录失败,账户或密码错误!");
                continue;
            }
            else
            {
                System.out.println("登录成功!");
            }
            int select=0;
            while(select != -1)
            {
                System.out.println("1.增加人员   2.删除人员   3.修改人员   4.查询人员   0.退出系统");
                System.out.print("请输入选择:");
                select = sc.nextInt();
                switch (select)
                {
                    case 1:
                        Scanner sc1 = new Scanner(System.in);
                        System.out.print("请输入用户账号:");
                        String newid = sc1.nextLine();
                        System.out.print("请输入用户密码:");
                        String newpwd = sc1.nextLine();
                        System.out.print("请输入用户姓名:");
                        String newname = sc1.nextLine();
                        System.out.print("请输入用户权限(0/1):");
                        int role = sc1.nextInt();
                        if(dbo.checkUser(newid,newpwd))
                        {
                            System.out.println("该账户已经存在!");
                        }
                        else
                        {
                            if(dbo.insertUser(newid,newpwd,newname,role))
                            {
                                System.out.println("添加成功!");
                            }
                            else
                            {
                                System.out.println("添加失败!");
                            }
                        }
                        break;
                    case 2:
                        Scanner sc2 = new Scanner(System.in);
                        System.out.print("请输入用户账号:");
                        newid = sc2.nextLine();
                        if(dbo.deleteUser(newid))
                        {
                            System.out.println("删除成功!");
                        }
                        else
                        {
                            System.out.println("删除失败!");
                        }
                        break;
                    case 3:
                        Scanner sc3 = new Scanner(System.in);
                        System.out.print("请输入用户账号:");
                        newid = sc3.nextLine();
                        System.out.print("请输入用户新密码:");
                        newpwd = sc3.nextLine();
                        if(dbo.updateUser(newid,newpwd))
                        {
                            System.out.print("修改成功!");
                        }
                        else
                        {
                            System.out.print("修改失败!");
                        }
                        break;
                    case 4:
                        Scanner sc4 = new Scanner(System.in);
                        System.out.print("请输入用户账号:");
                        newid = sc4.nextLine();
                        User user = dbo.searchUser(newid);
                        if(user!=null)
                        {
                            System.out.println("账户   密码   姓名   权限");
                            System.out.println(user.getUid()+"   "+user.getPwd()+"     "+user.getName()+"   "+user.getRole());
                        }
                        else
                        {
                            System.out.println("对不起,查无此人!");
                        }
                        break;
                    case 0:
                        select = -1;
                        System.out.println("退出成功!");
                        break;
                    default:System.out.println("输入非法,请重新输入!");
                }
            }
            System.out.println("***************************");
        }
    }
}

运行界面如下:

验证添加人员功能:

数据库中:

验证修改人员功能:

验证删除人员功能:

plus:小项目试试水,,。

好的,以下是一个简单的控制台程序,可以连接数据库并实现一些基本的学生公寓管理功能。这里假设数据库中有一个名为`student`的表,包含`id`、`name`、`gender`、`room_id`四个字段。 ```java import java.sql.*; public class StudentApartmentManagementSystem { private static final String JDBC_URL = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"; private static final String JDBC_USER = "root"; private static final String JDBC_PASSWORD = "123456"; private static Connection conn = null; public static void main(String[] args) { try { // 连接数据库 conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD); System.out.println("数据库连接成功!"); // 显示操作菜单 System.out.println("请选择操作:"); System.out.println("1. 添加学生"); System.out.println("2. 修改学生信息"); System.out.println("3. 删除学生"); System.out.println("4. 查询学生信息"); System.out.println("5. 退出"); // 循环读取用户输入 while (true) { System.out.print("请输入操作编号:"); int choice = Integer.parseInt(System.console().readLine()); switch (choice) { case 1: addStudent(); break; case 2: updateStudent(); break; case 3: deleteStudent(); break; case 4: queryStudent(); break; case 5: System.out.println("程序退出!"); System.exit(0); default: System.out.println("输入错误,请重新输入!"); break; } } } catch (SQLException e) { System.out.println("数据库连接失败:" + e.getMessage()); } finally { // 关闭数据库连接 if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } // 添加学生 private static void addStudent() throws SQLException { System.out.print("请输入学生姓名:"); String name = System.console().readLine(); System.out.print("请输入学生性别(男/女):"); String gender = System.console().readLine(); System.out.print("请输入学生所在房间号:"); int roomId = Integer.parseInt(System.console().readLine()); // 执行 SQL 插入语句 String sql = "INSERT INTO student(name, gender, room_id) VALUES (?, ?, ?)"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setString(1, name); stmt.setString(2, gender); stmt.setInt(3, roomId); int rows = stmt.executeUpdate(); if (rows > 0) { System.out.println("添加学生成功!"); } else { System.out.println("添加学生失败!"); } } // 修改学生信息 private static void updateStudent() throws SQLException { System.out.print("请输入要修改的学生ID:"); int id = Integer.parseInt(System.console().readLine()); System.out.print("请输入学生姓名:"); String name = System.console().readLine(); System.out.print("请输入学生性别(男/女):"); String gender = System.console().readLine(); System.out.print("请输入学生所在房间号:"); int roomId = Integer.parseInt(System.console().readLine()); // 执行 SQL 更新语句 String sql = "UPDATE student SET name=?, gender=?, room_id=? WHERE id=?"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setString(1, name); stmt.setString(2, gender); stmt.setInt(3, roomId); stmt.setInt(4, id); int rows = stmt.executeUpdate(); if (rows > 0) { System.out.println("修改学生信息成功!"); } else { System.out.println("修改学生信息失败!"); } } // 删除学生 private static void deleteStudent() throws SQLException { System.out.print("请输入要删除的学生ID:"); int id = Integer.parseInt(System.console().readLine()); // 执行 SQL 删除语句 String sql = "DELETE FROM student WHERE id=?"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setInt(1, id); int rows = stmt.executeUpdate(); if (rows > 0) { System.out.println("删除学生成功!"); } else { System.out.println("删除学生失败!"); } } // 查询学生信息 private static void queryStudent() throws SQLException { System.out.print("请输入要查询的学生姓名:"); String name = System.console().readLine(); // 执行 SQL 查询语句 String sql = "SELECT id, name, gender, room_id FROM student WHERE name=?"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setString(1, name); ResultSet rs = stmt.executeQuery(); while (rs.next()) { System.out.println("学生ID:" + rs.getInt("id")); System.out.println("学生姓名:" + rs.getString("name")); System.out.println("学生性别:" + rs.getString("gender")); System.out.println("学生所在房间号:" + rs.getInt("room_id")); } } } ``` 注意:以上代码中的数据库连接信息(`JDBC_URL`、`JDBC_USER`、`JDBC_PASSWORD`)需要根据实际情况修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值