学生管理系统利用数据库知识,优化无止境。。。。。

1:需要创建一个学生的基本信息类

package com.xt.java.base26;

public class Student {
    
    
    private String stuNum;
    
    private String name;
    
    private String gender;
    
    private int age;
    
    private double score;
    
    
    

    
    /**
     * @return the stuNum
     */
    public String getStuNum() {
        return stuNum;
    }

    /**
     * @param stuNum the stuNum to set
     */
    public void setStuNum(String stuNum) {
        this.stuNum = stuNum;
    }

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * @return the gender
     */
    public String getGender() {
        return gender;
    }

    /**
     * @param gender the gender to set
     */
    public void setGender(String gender) {
        this.gender = gender;
    }

    /**
     * @return the age
     */
    public int getAge() {
        return age;
    }

    /**
     * @param age the age to set
     */
    public void setAge(int age) {
        this.age = age;
    }

    /**
     * @return the score
     */
    public double getScore() {
        return score;
    }

    /**
     * @param score the score to set
     */
    public void setScore(double score) {
        this.score = score;
    }

    
    
    

}

2,我创建了一个私有的数据库获取驱动,更加安全。更加方便。

package com.xt.java.base26;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class StudentDAO {
    
    Connection conn=null;
    Statement stat=null;
    ResultSet rs=null;
    
    private String url="jdbc:mysql://localhost:3306/lyxdatabases?useunicode=true&characterEncoding=utf-8";
    private String bdDriver="com.mysql.jdbc.Driver";
    private String userName="root";
    private String passwd="1234";
    
    private StudentDAO(){
        
    }
    private static  StudentDAO sDao=null;
     public  static StudentDAO getStuDAO(){
        if(sDao==null){
            sDao=new StudentDAO();
        }
        return sDao;
    }
    
    public Connection getConnection() throws ClassNotFoundException, SQLException{
        try {
            Class.forName(bdDriver);
            return DriverManager.getConnection(url,userName,passwd);
            
        } catch (ClassNotFoundException e) {
            throw new ClassNotFoundException("数据加载驱动有问题!!");
        } catch (SQLException e) {
            throw new SQLException("数据库和Java连接有问题!!");
        }
    }
    
    
    //关闭Connection
    public void closeConn(Connection conn){
        try{
            if(conn!=null){
                conn.close();
            }
        }catch(Exception e){
            e.getMessage();
            e.getStackTrace();
            e.toString();
        }
    }
    //关闭Statement
    public void closeStat(Statement stat){
        try{
            if(stat!=null){
                stat.close();
            }
            
        }catch(Exception e){
            e.getMessage();
        }
        
    }
    //关闭ResultSet
    public void closeRs(ResultSet rs) throws Exception{
        if(rs!=null){
            rs.close();
        }
    }
    
    

}

3这是用户需要的基本操作的类。

package com.xt.java.base26;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class UserAcess {
    
    
    Connection conn=null;
    Statement stat=null;
    ResultSet rs=null;
     StudentDAO sDao=StudentDAO.getStuDAO();
     Scanner scanner=new Scanner(System.in);

    //添加一个学生的信息
    public void addStudent(){
        try {
            conn=sDao.getConnection();
            stat=conn.createStatement();
            
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        
        System.out.println("请输入你要输入的学生的学号:");
        String stuNum=scanner.next();
        System.out.println("请输入您要输入学生的姓名:");
        String name=scanner.next();
        System.out.println("请输入您要输入学生的性别");
        String gender=scanner.next();
        System.out.println("请输入您要输入学生的年龄:");
        int age=scanner.nextInt();
        System.out.println("请输入您要输入学生的成绩:");
        double score=scanner.nextDouble();
        StringBuffer sql=new StringBuffer("insert into student2 values ('");
        sql.append(stuNum).append("','").append(name).append("','").append(gender).append("',").append(age).append(",").append(score)
        .append(")");
        try {
            if(stat.executeUpdate(sql.toString())>0){
                System.out.println("数据添加成功!!");
            };
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            sDao.closeStat(stat);
            sDao.closeConn(conn);
        }
        
        
    }
        //删除一个学生的信息
        public void deleteStu(String stuNum){
            StringBuffer sql=new StringBuffer("delete from student2 where stuNum=");
            sql.append(stuNum);
            try {
                conn=sDao.getConnection();
                stat=conn.createStatement();
                if(stat.executeUpdate(sql.toString())>0){
                    System.out.println("数据删除成功!!");
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                sDao.closeStat(stat);
                sDao.closeConn(conn);
            }
            
        }    
        
        
        //改正一个学生的信息
        public void updateStu(String stuNum){
        
            while(true){
                System.out.println("-------------------------以下为改正的对象,您要选择的字母------------------------");
                System.out.println("学号----------1");
                System.out.println("名字----------2");
                System.out.println("性别----------3");
                System.out.println("年龄----------4");
                System.out.println("成绩----------5");
                System.out.println("操作完成,退出系统----------0");
                
                System.out.println("----------请选择您要改正的对象:");
                int mark=scanner.nextInt();
                StringBuffer sql=new StringBuffer("update student2 set");
                switch(mark){
                case 0:{
                    System.out.println("您将要退出整个系统!!");
                    System.exit(0);
                }
                case 1:{
                    System.out.println("请输出您将要改正的学号:");
                    String newStuNum=scanner.next();
                    sql.append(" stuNum='").append(newStuNum).append("' where stuNum='").append(stuNum).append("'");
                    break;
                    
                }
                case 2:{
                    System.out.println("请输出您将要改正的姓名:");
                    String newStuName=scanner.next();
                    sql.append(" name='").append(newStuName).append("' where stuNum='").append(stuNum).append("'");
                    break;
                }
                case 3:{
                    System.out.println("请输出您将要改正的性别:");
                    String newGender=scanner.next();
                    sql.append(" gender='").append(newGender).append("' where stuNum='").append(stuNum).append("'");
                    break;
                }
                case 4:{
                    System.out.println("请输出您将要改正的年龄:");
                    int newAge=scanner.nextInt();
                    sql.append(" age='").append(newAge).append("' where stuNum='").append(stuNum).append("'");
                    break;
                }
                case 5:{
                    System.out.println("请输出您将要改正的成绩:");
                    double newScore=scanner.nextDouble();
                    sql.append(" score=").append(newScore).append(" where stuNum='").append(stuNum).append("'");
                    break;
                }
                }
                
                try {
                    System.out.println(sql);
                    conn=sDao.getConnection();
                    stat=conn.createStatement();
                    if(stat.executeUpdate(sql.toString())>0){
                        System.out.println("学生的信息改正成功!!");
                    };
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                    System.out.println("ClassNotFoundException");
                } catch (SQLException e) {
                    e.printStackTrace();
                    System.out.println("SQLException");
                }finally{
                    sDao.closeStat(stat);
                    sDao.closeConn(conn);
                }
            
            }
        }
        
        //查询学生的信息
        public List<Student> quertStu(Student stu) throws Exception {
            List<Student> stuList=new ArrayList<Student>();
            Student studentTemp=null;
            StringBuffer sql=new StringBuffer("select*from student2 where 1=1");
            if(stu.getStuNum()!=null&&" ".equals(stu.getStuNum())){
                sql.append("and stuNum='").append(stu.getStuNum()).append("'");
            }
            if(stu.getName()!=null&&" ".equals(stu.getName())){
                sql.append("and stuName='").append(stu.getName()).append("'");
            }
            if(stu.getGender()!=null&&" ".equals(stu.getGender())){
                sql.append("and gender='").append(stu.getGender()).append("'");
            }
            if(" ".equals(stu.getAge())){
                sql.append("and age=").append(stu.getAge());
            }
            if(" ".equals(stu.getScore())){
                sql.append("and score=").append(stu.getScore());
            }
            
            try {
                conn=sDao.getConnection();
                stat=conn.createStatement();
                rs=stat.executeQuery(sql.toString());
                while(rs.next()){
                    studentTemp=new Student();
                    studentTemp.setStuNum(rs.getString(1));
                    studentTemp.setName(rs.getString(2));
                    studentTemp.setGender(rs.getString(3));
                    studentTemp.setAge(rs.getInt(4));
                    studentTemp.setScore(rs.getDouble(5));
                    
                    stuList.add(studentTemp);
                }
                return  (List<Student>) studentTemp;
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                
                sDao.closeRs(rs);
                sDao.closeStat(stat);
                sDao.closeConn(conn);
                return null;
            }
            
            
        }
        
        
        
        
    
    

}

4:重场戏,用户开始操作。

package com.xt.java.base26;

import java.util.Iterator;
import java.util.Scanner;

public class Main {

    @SuppressWarnings({ "null", "resource" })
    public static void main(String[] args) {
         UserAcess ua=new UserAcess();
         Scanner scanner=new Scanner(System.in);
        while(true){
            
             System.out.println("----------------欢迎进入学生管理系统-------------------");
             System.out.println("插入----------1");
             System.out.println("删除----------2");
             System.out.println("修改----------3");
             System.out.println("查询----------4");
             System.out.println("退出----------0

");
             System.out.println("请选择您要进行的操作:");
             int selectNum=scanner.nextInt();
             switch(selectNum){
             case 0:{
                 System.out.println("退出系统!!!");
                 System.exit(0);
             }
             case 1:{
                 ua.addStudent();
                 break;
             }
             case 2:{
                 System.out.println("请输入您要删除的学生的学号:");
                 String delStuNum=scanner.next();
                 ua.deleteStu(delStuNum);
                 break;
             }
             case 3:{
                 System.out.println("请输入您要改正的学生的学号:");
                 String updStuNum=scanner.next();
                 ua.updateStu(updStuNum);
                 break;
             }
             case 4:{
                 Student stu =null;
                 while(true){
                        System.out.println("-------------------------以下为你知道的对象,您要选择的字母------------------------");
                        System.out.println("学号----------1");
                        System.out.println("名字----------2");
                        System.out.println("性别----------3");
                        System.out.println("年龄----------4");
                        System.out.println("成绩----------5");
                        System.out.println("操作完成,退出系统----------0");
                        
                        System.out.println("----------请选择您要改正的对象:");
                        int mark=scanner.nextInt();
                        switch(mark){
                        case 0:{
                            System.out.println("退出系统!!");
                            System.exit(0);
                        }
                        case 1:{
                            System.out.println("请输入您知道的学号:");
                            String knowStuNum=scanner.next();
                            stu.setStuNum(knowStuNum);
                            break;
                        }
                        case 2:{
                            System.out.println("请输入您知道的姓名:");
                            String knowName=scanner.next();
                            stu.setName(knowName);
                            break;
                        }
                        case 3:{
                            System.out.println("请输入您知道的性别:");
                            String knowGender=scanner.next();
                            stu.setGender(knowGender);
                            break;
                        }
                        case 4:{
                            System.out.println("请输入您知道的年龄:");
                            int knowAge=scanner.nextInt();
                            stu.setAge(knowAge);
                            break;
                        }
                        case 5:{
                            System.out.println("请输入您知道的成绩:");
                            double knowScore=scanner.nextDouble();
                            stu.setScore(knowScore);
                            break;
                        }
                        
                        }
                try {
                    Iterator iterator=ua.quertStu(stu).iterator();
                    if(iterator.hasNext()){
                        System.out.println(iterator.next());
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                break;
             }
             }
             }
        }

    }

}
原文地址:https://www.cnblogs.com/lyxcode/p/7405381.html