JAVA 怎么让数据库连接不释放 java不连接数据库管理系统_JAVA 怎么让数据库连接不释放

需要实现学生管理系统,需要进行登录操作,登录满足开发的完整性和 满足面向对象,所以我们队用户进行了封装 

JAVA 怎么让数据库连接不释放 java不连接数据库管理系统_JAVA 怎么让数据库连接不释放_02

这是包的命名

实现用户登录,需要先创建User实体

User.java


package student.bean;
/**
 *用户实体类
 */
public class User {

    private String username;
    private String password;

    public User() {
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}


登录的操作实现,因为没有用到数据库,所以我们直接写死!!!

LoginDao.java


package student.dao;

import student.bean.Student;
import student.bean.User;

public class LoginDao {

    public boolean login(User user){
        if ("admin".equals(user.getUsername())&&
                "123456".equals(user.getPassword())){
            return true;
        }
        return false;
    }
}


实现登录的操作后,我们对登录页面进行编写

LoginMenu.java

package student.ui;

import student.bean.User;
import student.dao.LoginDao;
import student.dao.StudentDao;

import java.util.Scanner;

public class LoginMenu {
    /**
     * 用户登录界面
     */

    StudentMenu studentMenu = new StudentMenu();
    User user = new User();
    LoginDao loginDao = new LoginDao();
    StudentDao studentDao = new StudentDao();

    public void login() {
        Scanner sc = new Scanner(System.in);
        Scanner sc1 = new Scanner(System.in);
        System.out.println("学员管理系统");
        System.out.println("------------------------");
        while (true) {
            System.out.println("【用户登录】");
            System.out.print("请输入用户名:");
            user.setUsername(sc.nextLine());
            System.out.print("请输入密 码:");
            user.setPassword(sc.nextLine());
            if (loginDao.login(user)) {
//                studentMenu.mainMenu();
                break;
            } else {
                System.out.println("用户密码错误,请重新输入!!!");
                continue;
            }
        }
    }
}

登录界面写好后开始进入系统,对各项功能进行编写

JAVA 怎么让数据库连接不释放 java不连接数据库管理系统_java_03

 既然知道了需要实现哪些功能,这就需要我们去创建一个实体类,学生类,那我们也应该创建一个学生实体,因此,我们去创建了一个学生实体;

Student.java


package student.bean;

import student.util.Util;

import java.util.Arrays;

/**
 *学生实体类
 */

public class Student {
    Util util=new Util();
    private String id;//学号
    private String name;//姓名
    private double[] score;//成绩
    private double avg;//平均成绩
    private double sum=0.0;//总分

    private int index;

    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }

    public void Student(){}

    public Student() {
    }

    public Student(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public Student(String id, String name, double[] score) {
        this.id = id;
        this.name = name;
        setScore(score);
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public double getAvg() {
        return avg;
    }


    public double getSum() {
        return sum;
    }

    public double[] getScore() {
        return score;
    }

    public void setScore(double[] score) {
        this.score = score;
        this.sum = this.score[0]+ this.score[1]+ this.score[2];
        double temp=this.sum/this.score.length;
        this.avg=util.format("0.00",temp);
    }

    @Override
    public String toString() {
        return "Student{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", score=" + Arrays.toString(score) +
                ", avg=" + avg +
                ", sum=" + sum +
                '}';
    }

}


写完学生这个实体类后,我们接下来就是在Dao中写入各种方法,实现对实体的操作!!这里就不过多赘述了,直接上代码!!

StudentDao.java


package student.dao;

import student.bean.Student;
import student.ui.StudentMenu;

import javax.swing.plaf.IconUIResource;
import java.util.Objects;
import java.util.Scanner;

/**
 * 操作学生类
 */
public class StudentDao {
    static int n=2;
    private static StudentMenu studentMenu=new StudentMenu();
    private static Student[] student=new Student[50];
    private static StudentDao studentDao=new StudentDao();

    static {
        double scores[]={99,88,77};
        double scores1[]={88,77,66};
        Student s1=new Student("1001","jack",scores);
        Student s2=new Student("1002","peter",scores1);
        student[0]=s1;
        student[1]=s2;
    }

    /**
     * 显示所有学生信息
     */
    public  void showStudent(){
        System.out.println("所有学员信息:");
        System.out.println("------------------------------------------------------------------------");
        System.out.println("学号\t\t姓名\t成绩一\t成绩二\t" +
                "成绩三\t平均分\t总分");
        for(int i=0;i<n;i++){
            System.out.println(student[i].getId()+"\t\t"+student[i].getName()
            +"\t"+student[i].getScore()[0]+"\t"+student[i].getScore()[1]
                    +"\t"+student[i].getScore()[2]+"\t"+
                    student[i].getAvg()+"\t"+student[i].getSum());
        }
    }

    /**
     * 按总分位置,插入学生信息
     */
    public void insertSotrStudent(Scanner sc){
        studentMenu.addStudent(sc);
        sortStudentSum();
    }

    /**
     * 通过学号查找学生
     * @param id 学号
     * @return 返回查询出来的结果,是一个Student
     */
    public Student selectStudentId(String id){
        return getStuById(id);
    }

    /**
     * 通过学号模糊查询学生个人信息
     * @param id 学生学号
     * @return 查询出来的数据集
     */
    public Student[] selectStudentIds(String id){
        return getStuByIds(id);
    }

    /**
     * 通过学号模糊查询学生个人信息
     * @param name 学生学号
     * @return 查询出来的数据集
     */
    public Student[] selectStudentNmaes(String name){
        return getStuByNames(name);
    }

    /**
     * 通过平均值查询学生个人信息
     * @param min 最小平均值
     * @param max 最大平均值
     * @return 查询出来的student数组
     */
    public Student[] selectStudentAvgs(double min ,double max){
        return getStuByAvgs(min,max);
    }

    /**
     * 通过学号模糊查询学生个人信息
     * @param name 学生学号
     * @return 查询出来的数据集
     */
    private Student[] getStuByNames(String name) {
        int count=0;
        for (int i=0;i<n;i++){
            if (student[i].getName().contains(name)){
                count++;
            }
        }
        Student[] students=new Student[count];
        int j=0;
        for (int i=0;i<n;i++){
            if (student[i].getName().contains(name)){
                students[j]=student[i];
                j++;
                continue;
            }
        }
        return students;
    }

    /**
     * 通过平均值查询学生个人信息
     * @param min 最小平均值
     * @param max 最大平均值
     * @return 查询出来的student数组
     */
    private Student[] getStuByAvgs(double min,double max) {
        int count=0;
        for (int i=0;i<n;i++){
            if (student[i].getAvg()>=min &&student[i].getAvg()<=max){
                count++;
            }
        }
        Student[] students=new Student[count];
        int j=0;
        for (int i=0;i<n;i++){
            if (student[i].getAvg()>=min &&student[i].getAvg()<=max){
                students[j]=student[i];
                j++;
                continue;
            }
        }
        return students;
    }


    /**
     * 增加学生信息
     * @param stu 学生信息
     * @param
     */
    public  int addStudent(Student stu){
        student[n]=stu;
        return ++n;
    }


    /**
     * 按照sum总分从小到大排序
     */
    public void sortStudentSum(){
        for (int i=0;i<n;i++){
            for (int j=i;j<n-1;j++){
                if (student[j].getSum()>student[j+1].getSum()){
                    Student stuTemp=new Student();
                    stuTemp=student[j];
                    student[j]=student[j+1];
                    student[j+1]=stuTemp;
                }
            }
        }
        showStudent();
    }

    /**
     * 查看学生信息
     * @param id 需要查询的学号
     * @return 返回查询出来的结果
     */
    public Student getStuById(String id){
        Student tempStudent=null;
        for (int i=0;i<n;i++){
            if (student[i].getId().equals(id)){
                tempStudent=student[i];
                student[i].setIndex(i);
                break;
            }
        }
        return tempStudent;
    }

    /**
     * 查看学生信息
     * @param id 需要查询的学号
     * @return 返回查询出来的结果
     */
    public Student[] getStuByIds(String id){
        int count=0;
        for (int i=0;i<n;i++){
            if (student[i].getId().contains(id)){
               count++;
            }
        }
        Student[] students=new Student[count];
        int j=0;
        for (int i=0;i<n;i++){
            if (student[i].getId().contains(id)){
                students[j]=student[i];
                j++;
                continue;
            }
        }
        return students;
    }

    /**
     * 删除学生信息
     * @param id 要删除学生的学号
     * @return 是否产出成功的boolean值
     */
    public boolean deleStudent(String id) {
        boolean flag = true;
        Student[] stuTemp = new Student[n - 1];
        int count = 0;
        for (int i = 0; i < n; i++) {
            if (student[i].getId().equals(id)) {
                flag = false;
                break;
            }
        }
        if (flag) {
            return flag;
        } else {
            for (int i = 0; i < n; i++) {
                if (student[i].getId().equals(id)) {
                    flag = false;
                    continue;
                } else {
                    stuTemp[count] = student[i];
                    count++;
                }
            }
            for (int i = 0; i < stuTemp.length; i++) {
                student[i] = stuTemp[i];
            }
            student[n - 1] = null;
            n = n - 1;
            return flag;
        }
    }

    /**
     * 学生信息修改,修改学生姓名
     * * @param id 学生学号
     * @param value 学生成绩
     */
    public void updateStudent(String id,String  value) {
        Student stu=getStuById(id);
        stu.setName(value);
    }

    /**
     * 学生信息修改,修改学生成绩
     * @param id 学生学号
     * @param scores 学生成绩
     */
    public void updateStudent(String id,double[]  scores) {
        Student stu=getStuById(id);
        stu.setScore(scores);
    }
}


学生实体的操作写完后,就开始写主页面的菜单信息!

StudentMenu.java


package student.ui;

import student.bean.Student;
import student.bean.User;
import student.dao.LoginDao;
import student.dao.StudentDao;

import java.util.Scanner;

public class StudentMenu {
    /**
     * 用户界面
     */
    User user = new User();
    LoginDao loginDao = new LoginDao();
    private static StudentDao studentDao = new StudentDao();
    Scanner sc = new Scanner(System.in);
    Scanner sc1 = new Scanner(System.in);
    Scanner sc2 = new Scanner(System.in);

    public void mainMenu() {

        System.out.println("学员管理系统");
        System.out.println("------------------------");
        while (true) {
            System.out.println("学员管理系统平台");
            System.out.println("--------------------------------------------------");
            System.out.println("\t\t\t\t○功能菜单:");
            System.out.println("\t\t\t\t\t-----------------------");
            System.out.println("\t\t\t\t\t1、录入单个学员信息");
            System.out.println("\t\t\t\t\t-----------------------");
            System.out.println("\t\t\t\t\t2、显示所有学员信息");
            System.out.println("\t\t\t\t\t-----------------------");
            System.out.println("\t\t\t\t\t3、排序显示所有学员信息");
            System.out.println("\t\t\t\t\t-----------------------");
            System.out.println("\t\t\t\t\t4、插入单个学员信息");
            System.out.println("\t\t\t\t\t-----------------------");
            System.out.println("\t\t\t\t\t5、查找学员信息");
            System.out.println("\t\t\t\t\t-----------------------");
            System.out.println("\t\t\t\t\t6、删除单个学员信息");
            System.out.println("\t\t\t\t\t-----------------------");
            System.out.println("\t\t\t\t\t7、读取所有学员信息");
            System.out.println("\t\t\t\t\t-----------------------");
            System.out.println("\t\t\t\t\t8、保存所有学员信息");
            System.out.println("\t\t\t\t\t-----------------------");
            System.out.println("\t\t\t\t\t9、修改学生信息");
            System.out.println("\t\t\t\t\t-----------------------");
            System.out.println("\t\t\t\t\t0、退出系统");
            System.out.print("请选择功能编号:");
            int num = sc1.nextInt();
            switch (num) {
                case 1:
                    addCase();
                    System.out.println("按任意键进入菜单选择!!");
                    sc.nextLine();
                    continue;
                case 2:
                    studentDao.showStudent();
                    System.out.println("按任意键进入菜单选择!!");
                    sc.nextLine();
                    continue;
                case 3:
                    studentDao.sortStudentSum();
                    System.out.println("按任意键进入菜单选择!!");
                    sc.nextLine();
                    continue;
                case 4:
                    studentDao.insertSotrStudent(sc);
                    System.out.println("按任意键进入菜单选择!!");
                    sc.nextLine();
                    continue;
                case 5:
                    select();
                    continue;
                case 6:
                    deleStudent();
                    System.out.println("按任意键进入菜单选择!!");
                    sc.nextLine();
                    continue;
                case 7:
                    break;
                case 8:
                    break;
                case 9:
                    updateStudent(sc);
                    System.out.println("按任意键进入菜单选择!!");
                    sc.nextLine();
                    continue;
                case 0:
                    break;
                default:
                    System.out.println("输入错误,请重新输入!!");
                    continue;
            }
            break;
        }
    }

    /**
     * 修改学生信息
     */
    private void updateStudent(Scanner sc) {
        System.out.println("单个学员信息的修改");
        while (true) {
            System.out.println("请输入学号:");
            String id = sc.nextLine();
            Student stutemp = studentDao.getStuById(id);
            if (stutemp == null) {
                System.out.println("学号未找到,是否继续修改?(y/n)");
                String str = sc.nextLine();
                if ("y".equals(str)) {
                    continue;
                } else {
                    break;
                }
            } else {
                System.out.println("学号\t\t姓名\t成绩一\t成绩二\t" +
                        "成绩三\t平均分\t总分");
                System.out.println(stutemp.getId() + "\t\t" + stutemp.getName()
                        + "\t" + stutemp.getScore()[0] + "\t" + stutemp.getScore()[1]
                        + "\t" + stutemp.getScore()[2] + "\t" +
                        stutemp.getAvg() + "\t" + stutemp.getSum());
                System.out.println("-----------------------");
                System.out.println("1、修改姓名");
                System.out.println("-----------------------");
                System.out.println("2、修改成绩");
                System.out.println("-----------------------");
                System.out.println("0、退出");
                System.out.println("请输入编号选择功能:");
                int s = sc1.nextInt();
                switch (s) {
                    case 1:
                        System.out.println("请输入你要修改的值:");
                        String valueName = sc.nextLine();
                        studentDao.updateStudent(id, valueName);
                        System.out.println("修改成功!是否继续修改?(y/n)");
                        String str1 = sc.nextLine();
                        if ("y".equals(str1)) {
                            continue;
                        } else {
                            break;
                        }
                    case 2:
                        double[] scores = new double[3];
                        for (int i = 0; i < 3; i++) {
                            System.out.println("请输入成绩" + (i +1)+ "修改后的值:");
                            scores[i] = sc2.nextDouble();
                        }
                        studentDao.updateStudent(id, scores);
                        System.out.println("修改成功!是否继续修改?(y/n)");
                        String str2 = sc.nextLine();
                        if ("y".equals(str2)) {
                            continue;
                        } else {
                            break;
                        }
                    case 0:
                        break;
                }
                break;
            }
        }
    }

    /**
     * 单个学员信息录入
     *
     * @param sc 扫描器
     * @param
     * @return
     */
    public void addStudent(Scanner sc) {
        System.out.println("单个学员信息的循环录入");
        boolean flag = false;
        String id;
        do {
            flag = false;
            System.out.println("学号:");
            id = sc.nextLine();
            Student tempStu = studentDao.getStuById(id);
//            Student tempStu=null;
            if (tempStu != null) {
                System.out.println(id + "学号重复了,请重新输入!!");
                flag = true;
            }
        } while (flag);
        System.out.println("姓名:");
        String stuName = sc.nextLine();
        double[] scores = new double[3];
        for (int i = 0; i < scores.length; i++) {
            System.out.println("成绩:" + (i + 1));
            scores[i] = Double.parseDouble(sc.nextLine());
        }
        Student stu = new Student(id, stuName, scores);
        studentDao.addStudent(stu);
    }

    /**
     * 封装case 1:中的方法
     */
    public void addCase() {
        Scanner scanner = new Scanner(System.in);
        addStudent(scanner);
        studentDao.showStudent();
    }

    public void deleStudent() {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("请输入你要删除的学号:");
            String id = scanner.nextLine();
            boolean flag = studentDao.deleStudent(id);
            if (flag) {
                System.out.println("学号未找到,是否继续删除?(y/n)");
                String str = scanner.nextLine();
                if ("y".equals(str)) {
                    continue;
                } else {
                    break;
                }
            }
            {
                System.out.println("删除成功!是否继续删除?(y/n)");
                String str = scanner.nextLine();
                if ("y".equals(str)) {
                    continue;
                } else {
                    break;
                }
            }
        }

    }

    /**
     * 封装case5的方法
     */
    public void select() {
        while (true) {
            System.out.println("查找学生信息:");
            System.out.println("-----------------------");
            System.out.println("1、通过学号查找学生信息");
            System.out.println("-----------------------");
            System.out.println("2、通过姓名查找学生信息");
            System.out.println("-----------------------");
            System.out.println("3、通过平均成绩查询学生信息");
            System.out.println("-----------------------");
            System.out.println("4、退出");
            System.out.println("请输入编号选择功能:");
            int s = sc1.nextInt();
            switch (s) {
                case 1:
                    selectStudentId();
                    System.out.println("按任意键进入菜单选择!!");
                    sc.nextLine();
                    continue;
                case 2:
                    selectStudentNames();
                    System.out.println("按任意键进入菜单选择!!");
                    sc.nextLine();
                    continue;
                case 3:
                    selectStudentAvgs();
                    System.out.println("按任意键进入菜单选择!!");
                    sc.nextLine();
                    continue;
                case 4:
                    break;
            }
            break;
        }
    }

    /**
     * 封装case5中case1,通过学号模糊查找学生
     */
    public void selectStudentId() {
//        Student student = new Student();
        while (true) {
            System.out.println("请输入你要查找的学号:");
            Scanner sc = new Scanner(System.in);
            String id = sc.nextLine();
            Student[] student = studentDao.selectStudentIds(id);
            if (student != null) {
                System.out.println("学号包含" + id + "的学生个人信息为:");
                System.out.println("------------------------------------------------------------------------");
                System.out.println("学号\t\t姓名\t成绩一\t成绩二\t" +
                        "成绩三\t平均分\t总分");
                for (int i = 0; i < student.length; i++) {
                    System.out.println(student[i].getId() + "\t\t" + student[i].getName()
                            + "\t" + student[i].getScore()[0] + "\t" + student[i].getScore()[1]
                            + "\t" + student[i].getScore()[2] + "\t" +
                            student[i].getAvg() + "\t" + student[i].getSum());
                }
                System.out.println("是否继续查询?(y/n)");
                String s = sc.nextLine();
                if ("y".equals(s)) {
                    continue;
                } else {
                    break;
                }
            } else {
                System.out.println("学号不存在!");
                System.out.println("是否继续查询?(y/n)");
                String s = sc.nextLine();
                if ("y".equals(s)) {
                    continue;
                } else {
                    break;
                }
            }
        }
    }

    /**
     * 封装case5中case2,通过学号模糊查找学生
     */
    public void selectStudentNames() {
        while (true) {
            System.out.println("请输入你要查找的姓名:");
            Scanner sc = new Scanner(System.in);
            String name = sc.nextLine();
            Student[] student = studentDao.selectStudentNmaes(name);
            if (student != null) {
                System.out.println("姓名包含" + name + "的学生个人信息为:");
                System.out.println("------------------------------------------------------------------------");
                System.out.println("学号\t\t姓名\t成绩一\t成绩二\t" +
                        "成绩三\t平均分\t总分");
                for (int i = 0; i < student.length; i++) {
                    System.out.println(student[i].getId() + "\t\t" + student[i].getName()
                            + "\t" + student[i].getScore()[0] + "\t" + student[i].getScore()[1]
                            + "\t" + student[i].getScore()[2] + "\t" +
                            student[i].getAvg() + "\t" + student[i].getSum());
                }
                System.out.println("是否继续查询?(y/n)");
                String s = sc.nextLine();
                if ("y".equals(s)) {
                    continue;
                } else {
                    break;
                }
            } else {
                System.out.println("姓名不存在!");
                System.out.println("是否继续查询?(y/n)");
                String s = sc.nextLine();
                if ("y".equals(s)) {
                    continue;
                } else {
                    break;
                }
            }
        }
    }

    /**
     * 封装case5中case2,通过平均成绩查找学生
     */
    public void selectStudentAvgs() {
        while (true) {
            System.out.println("请输入你要查找的最低平均值:");
            double minAvg = sc2.nextDouble();
            System.out.println("请输入你要查找的最高平均值:");
            double maxAvg = sc2.nextDouble();
            Student[] student = studentDao.selectStudentAvgs(minAvg, maxAvg);
            if (student != null) {
                System.out.println("平均成绩在" + minAvg + "-" + maxAvg + "中的学生个人信息为:");
                System.out.println("------------------------------------------------------------------------");
                System.out.println("学号\t\t姓名\t成绩一\t成绩二\t" +
                        "成绩三\t平均分\t总分");
                for (int i = 0; i < student.length; i++) {
                    System.out.println(student[i].getId() + "\t\t" + student[i].getName()
                            + "\t" + student[i].getScore()[0] + "\t" + student[i].getScore()[1]
                            + "\t" + student[i].getScore()[2] + "\t" +
                            student[i].getAvg() + "\t" + student[i].getSum());
                }
                System.out.println("是否继续查询?(y/n)");
                String s = sc.nextLine();
                if ("y".equals(s)) {
                    continue;
                } else {
                    break;
                }
            } else {
                System.out.println("成绩区间不存在!");
                System.out.println("是否继续查询?(y/n)");
                String s = sc.nextLine();
                if ("y".equals(s)) {
                    continue;
                } else {
                    break;
                }
            }
        }
    }
}


最后,这些都写完,项目也已经基本写完了,接下来就是把登录页面,和主页面进行拼接,让他们可以连续执行

StudentTest.java


package student.ui;

import java.util.Scanner;

public class StudentTest {
    public static void main(String[] args) {
        LoginMenu loginMenu=new LoginMenu();
        loginMenu.login();

        StudentMenu studentMenu=new StudentMenu();
        studentMenu.mainMenu();
    }
}


最后就是我自己写的一个工具类,实现double数据取两位数

Util.java


package student.util;

import java.math.RoundingMode;
import java.text.DecimalFormat;

/**
 *
 */
public class Util {
    public static double format(String rule, double num){
        DecimalFormat df = new DecimalFormat("0.00");
        df.setRoundingMode(RoundingMode.HALF_UP);
        num= Double.parseDouble(df.format(num));
        return num;
    }
}


到这里,这个项目就算完成了,但是还有很多地方是不够完善的,例如没有进行成绩判断哪些,这些就需要同学们自己进行修改了。刚开始学习java,还有很多不规范的地方,也希望各位指正!!!