欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(使用數(shù)據(jù)庫)

 更新時(shí)間:2022年01月24日 14:41:24   作者:吾人為學(xué)  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Java基礎(chǔ)—學(xué)生信息管理系統(tǒng)(使用數(shù)據(jù)庫),供大家參考,具體內(nèi)容如下

前一段時(shí)間寫了學(xué)生信息管理系統(tǒng)(使用ArrayList),今天再來更新一下使用數(shù)據(jù)庫的管理系統(tǒng),總體上來說要比用ArrayList簡便一些,同時(shí)輸入的數(shù)據(jù)也能存儲起來。

這次程序是在上一篇的基礎(chǔ)上進(jìn)行修改的,所以結(jié)構(gòu)上來看十分相似。

在寫程序之前,要先在MySQL上建立Student Info表。

create table Student (
?? ?ID varchar(50) primary key not null,
?? ?Name varchar(30) not null,
?? ?Gender char(5) not null,
?? ?Age int not null,
?? ?Score int not null
);

1、就和上一篇博客一樣,先將學(xué)生信息進(jìn)行封裝,這一步并不必要,只是修改起來方便些。

public class Student {
?? ?
?? ?private String stuName;
?? ?private String stuNo;
?? ?private String gender;
?? ?private int age;?? ?
?? ?private int score;
?? ?public String getStuName() {
?? ??? ?return stuName;
?? ?}

?? ?public void setStuName(String stuName) {
?? ??? ?this.stuName = stuName;
?? ?}

?? ?public String getStuNo() {
?? ??? ?return stuNo;
?? ?}

?? ?public void setStuNo(String stuNo) {
?? ??? ?this.stuNo = stuNo;
?? ?}

?? ?public String getGender() {
?? ??? ?return gender;
?? ?}

?? ?public void setGender(String gender) {
?? ??? ?this.gender = gender;
?? ?}

?? ?public int getAge() {
?? ??? ?return age;
?? ?}

?? ?public void setAge(int age) {
?? ??? ?this.age = age;
?? ?}

?? ?public int getScore() {
?? ??? ?return score;
?? ?}

?? ?public void setScore(int score) {
?? ??? ?this.score = score;
?? ?}
?? ?
}

2.新建操作類,因?yàn)檫@次要使用MySql數(shù)據(jù)庫,所以要使用JDBC將Java與數(shù)據(jù)庫鏈接起來。

1> 先將mysql-connector-java.jar 加入到lib庫中,之后右鍵Add path。

2> 然后在程序中要先開啟JDBC,加載驅(qū)動器,如果驅(qū)動器不存在,會拋出異常,所以需要加上try-catch

//開啟JDBC

public void getDBconn(){
?? ?String url = "jdbc:mysql://localhost:3306/homework";
?? ?String user = "root";
?? ?String password = "root";
?? ??? ?
?? ??? ?try {
?? ??? ??? ?/**1.加載JDBC驅(qū)動器*/
?? ??? ??? ?Class.forName("com.mysql.jdbc.Driver");
?? ??? ??? ?
?? ??? ??? ?/**2.獲取連接*/
?? ??? ??? ?conn = DriverManager.getConnection(url, user, password);
?? ??? ??? ?stat = conn.createStatement();
?? ??? ?} catch (ClassNotFoundException e) {
?? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ?e.printStackTrace();
?? ??? ?} catch (SQLException e) {
?? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?
?? ?}

3>同樣,在程序結(jié)束后一定要關(guān)閉連接,防止出問題。如果關(guān)閉異常,也要拋出異常。

//關(guān)閉JDBC
public void closeRs(){
?? ?try{
?? ? ? ?if(rs != null){
?? ??? ?rs.close();
?? ??? ??? ?}
?? ??? ??? ?if(stat != null){
?? ??? ??? ??? ?stat.close();
?? ??? ??? ?}
?? ??? ??? ?if(conn != null){
?? ??? ??? ??? ?conn.close();
?? ??? ??? ?}
?? ??? ?}catch(Exception e){
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ?}

3.接下來就是程序的主體:增、刪、改、查四個(gè)操作部分,這部分因?yàn)楣P者偷懶,所以和上一篇使用ArrayList的結(jié)構(gòu)很像,但是內(nèi)容有較大的修改,每一個(gè)try-catch后都加上了finally,無論操作是否成功都要關(guān)閉連接

//增加學(xué)生信息
public void addStu(Student stu){
?? ??? ?
?? ?String sql = "insert into studentinfo values ( '" + stu.getStuNo()+ "', '" + stu.getStuName() + "', '"
?? ??? ?+ stu.getGender() + "', " + stu.getAge() + " , " + stu.getScore() + ")";
?? ??? ?
?? ??? ?try {
?? ??? ??? ?int affectedRows = stat.executeUpdate(sql);
?? ??? ??? ?if(affectedRows > 0){
?? ??? ??? ??? ?System.out.println("該學(xué)生信息已添加!");
?? ??? ??? ?}else{
?? ??? ??? ??? ?System.out.println("操作有誤,請重新添加!");
?? ??? ??? ??? ?append();
?? ??? ??? ?}
?? ??? ?} catch (SQLException e) {
?? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ?e.printStackTrace();
?? ??? ?}finally{
?? ??? ??? ?closeRs();
?? ??? ?}
?? ??? ?
?? ?}
?? ?
?? ?//輸入學(xué)生信息
?? ?public void append(){
?? ??? ?
?? ??? ?Student stu = new Student();
?? ??? ?
?? ??? ?/**
?? ??? ? * 通過封裝方法,將學(xué)生信息賦給stus
?? ??? ? */
?? ??? ?stu.setStuName(name());
?? ??? ?stu.setStuNo(stuNum());?? ??? ?
?? ??? ?stu.setGender(gender());?? ??? ?
?? ??? ?stu.setAge(age());?? ??? ?
?? ??? ?stu.setScore(score());?? ?
?? ??? ?//將stu中的信息增添到stus中
?? ??? ?addStu(stu);
?? ??? ?
?? ?}
?? ?
?? ?
?? ?//得到學(xué)生姓名
?? ?public String name(){?? ?
?? ??? ?String name;?? ??? ?
?? ??? ?System.out.println("請輸入學(xué)生的姓名:");
?? ??? ?name = scanner.next();?? ??? ?
?? ??? ?return name;
?? ?}
?? ?
?? ?
//得到學(xué)生學(xué)號
public String stuNum(){
?? ??? ?String stuNum;?? ??? ?
?? ??? ?System.out.println("請輸入學(xué)生的學(xué)號:");
?? ??? ?stuNum = scanner.next();?? ??? ?
?? ??? ?
?? ??? ?//如果學(xué)號不為11位,則重新輸入,直到學(xué)號正確
?? ??? ?if(stuNum.length() != 11){
?? ??? ??? ?System.out.println("您輸入的學(xué)號有誤!請重新輸入!");
?? ??? ??? ?stuNum();?? ?
?? ??? ?}
?? ??? ??? ??? ?
?? ??? ?return stuNum;
?? ?}
?? ?
?? ?//得到學(xué)生的性別
?? ?public String gender(){
?? ??? ?
?? ??? ?String stuGender;
?? ??? ?
?? ??? ?System.out.println("請輸入學(xué)生的性別:");
?? ??? ?stuGender = scanner.next();
?? ??? ?
?? ??? ?if(!stuGender.equals("男") && !stuGender.equals("女") ){
?? ??? ??? ?System.out.println("您輸入的學(xué)生性別有誤!請重新輸入!");
?? ??? ??? ?gender();
?? ??? ?}
?? ??? ?
?? ??? ?return stuGender;
?? ?}
?? ?
?? ?//得到學(xué)生的年齡
?? ?public int age(){
?? ??? ?
?? ??? ?int stuAge;
?? ??? ?
?? ??? ?System.out.println("請輸入學(xué)生的年齡:");
?? ??? ?stuAge = scanner.nextInt();
?? ??? ?
?? ??? ?if(stuAge < 0 || stuAge >= ?80){
?? ??? ??? ?System.out.println("您輸入的年齡有誤!請重新輸入!");
?? ??? ??? ?age();
?? ??? ?}
?? ??? ?
?? ??? ?return stuAge;
?? ?}
?? ?
?? ?//得到學(xué)生的成績
?? ?public int score(){
?? ??? ?int stuScore;
?? ??? ?
?? ??? ?System.out.println("請輸入學(xué)生的成績:");
?? ??? ?stuScore = scanner.nextInt();
?? ??? ?
?? ??? ?if(stuScore < 0 || stuScore > 100){
?? ??? ??? ?System.out.println("您輸入的成績有誤!請重新輸入!");
?? ??? ??? ?score();
?? ??? ?}
?? ??? ?
?? ??? ?return stuScore;
?? ?}
?? ?
?? ?
?? ?/**
?? ? *?
?? ? * 刪除學(xué)生信息
?? ? *?
?? ? * @param stuNo
?? ? */
?? ?public void delStu(){
?? ??? ?
?? ??? ?System.out.println("請輸入您想刪除的學(xué)號:");
?? ??? ?String stuNo = scanner.next();
?? ??? ?

?? ??? ?String sql = "delete from studentinfo where ID = '" + stuNo + "' ";
?? ??? ?
?? ??? ?try {
?? ??? ??? ?int affectedRows = stat.executeUpdate(sql);
?? ??? ??? ?if(affectedRows > 0){
?? ??? ??? ??? ?System.out.println("該學(xué)生信息已刪除!");
?? ??? ??? ?}else{
?? ??? ??? ??? ?System.out.println("操作有誤,請重新輸入!");
?? ??? ??? ??? ?delStu();
?? ??? ??? ?}
?? ??? ?} catch (SQLException e) {
?? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ?e.printStackTrace();
?? ??? ?}finally{
?? ??? ??? ?closeRs();
?? ??? ?}
?? ?}
?? ?
?? ?
?? ?/**
?? ? * 修改學(xué)生信息:
?? ? * 1.姓名
?? ? * 2.學(xué)號
?? ? * 3.性別
?? ? * 4.年齡
?? ? * 5.成績
?? ? * @param stu
?? ? */
?? ?public void updateStu(String stuNo){
?? ??? ?
?? ??? ?String sql = null;
?? ?
?? ??? ?information();
?? ??? ?int choose = scanner.nextInt();
?? ??? ?
?? ??? ?switch(choose){
?? ??? ??? ?case 1:
?? ??? ??? ??? ?System.out.println("請輸入要更新的名字:");
?? ??? ??? ??? ?String Name = scanner.next();
?? ??? ??? ??? ?sql = "update studentinfo set Name = '" + Name +"' where ID = '" + stuNo + "'";
?? ??? ??? ??? ?break;
?? ??? ??? ?case 2:
?? ??? ??? ??? ?System.out.println("請輸入要更新的性別:");
?? ??? ??? ??? ?String Gender = scanner.next();
?? ??? ??? ??? ?sql = "update studentinfo set Gender = '" + Gender +"' where ID = '" + stuNo + "'";
?? ??? ??? ??? ?break;
?? ??? ??? ?case 3:
?? ??? ??? ??? ?System.out.println("請輸入要更新的年齡:");
?? ??? ??? ??? ?int Age = scanner.nextInt();
?? ??? ??? ??? ?sql = "update studentinfo set Age = " + Age +" where ID = '" + stuNo + "'";
?? ??? ??? ??? ?break;
?? ??? ??? ?case 4:
?? ??? ??? ??? ?System.out.println("請輸入要更新的成績:");
?? ??? ??? ??? ?int Score = scanner.nextInt();
?? ??? ??? ??? ?sql = "update studentinfo set Score = " + Score +" where ID = '" + stuNo + "'";
?? ??? ??? ??? ?break;
?? ??? ??? ?case 0:
?? ??? ??? ??? ?System.exit(0);
?? ??? ??? ??? ?break;
?? ??? ?}?? ?
?? ??? ?
?? ??? ?try {
?? ??? ??? ?int affectedRows = stat.executeUpdate(sql);
?? ??? ??? ?if(affectedRows > 0){
?? ??? ??? ??? ?System.out.println("該學(xué)生信息已修改!");
?? ??? ??? ?}else{
?? ??? ??? ??? ?System.out.println("操作有誤!");
?? ??? ??? ?}
?? ??? ?} catch (SQLException e) {
?? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ?e.printStackTrace();
?? ??? ?}finally{
?? ??? ??? ?closeRs();
?? ??? ?}
?? ?}
?? ?
?? ?public void information(){
?? ??? ?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("請輸入序號:");
?? ?}
?? ?/**
?? ? * 根據(jù)學(xué)號查詢學(xué)生信息
?? ? * 如果存在,輸出學(xué)生信息
?? ? * @param stuNo
?? ? */
?? ?public void queryStuByStuNo(String stuNo){
?? ??? ?
?? ??? ?String sql = "select * from studentinfo where ID = '" + stuNo + "'";
?? ??? ?
?? ??? ?try {
?? ??? ??? ?if(stuNo.equals("0")){
?? ??? ??? ??? ?
?? ??? ??? ??? ?sql = "select * from studentinfo";
?? ??? ??? ??? ?rs = stat.executeQuery(sql);
?? ??? ??? ??? ?
?? ??? ??? ??? ?while(rs.next()){
?? ??? ??? ??? ??? ?System.out.print("學(xué)號:" + rs.getString("ID") + "\t");
?? ??? ??? ??? ??? ?System.out.print("姓名:" + rs.getString("Name") + "\t");
?? ??? ??? ??? ??? ?System.out.print("性別:" + rs.getString("Gender") + "\t");
?? ??? ??? ??? ??? ?System.out.print("年齡:" + rs.getInt("Age") + "\t");
?? ??? ??? ??? ??? ?System.out.println("成績:" + rs.getInt("Score") + "\t");
?? ??? ??? ??? ?}
?? ??? ??? ?}else{
?? ??? ??? ??? ?if(rs.next()){
?? ??? ??? ??? ??? ?rs = stat.executeQuery(sql);
?? ??? ??? ??? ??? ?System.out.print("學(xué)號:" + rs.getString("ID") + "\t");
?? ??? ??? ??? ??? ?System.out.print("姓名:" + rs.getString("Name") + "\t");
?? ??? ??? ??? ??? ?System.out.print("性別:" + rs.getString("Gender") + "\t");
?? ??? ??? ??? ??? ?System.out.print("年齡:" + rs.getInt("Age") + "\t");
?? ??? ??? ??? ??? ?System.out.println("成績:" + rs.getInt("Score") + "\t");
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ?} catch (SQLException e) {
?? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ?e.printStackTrace();
?? ??? ?}finally{
?? ??? ??? ?closeRs();
?? ??? ?}
?? ??? ?
?? ?
?? ?}

4.定義操作菜單,允許用戶輸入選擇要操作的功能。

import java.util.Scanner;
public class SystemService {

?? ?Scanner scanner = new Scanner(System.in);
?? ?StudentSystem ss = new StudentSystem();
?? ?
?? ?public void serviceChoose(){
?? ??? ?
?? ??? ?System.out.println("-----歡迎使用學(xué)生信息管理系統(tǒng)-----");
?? ??? ?
?? ??? ?while(true){
?? ??? ??? ?
?? ??? ??? ?ss.getDBconn();
?? ??? ??? ?
?? ??? ??? ?System.out.println("1.添加學(xué)生信息");
?? ??? ??? ?System.out.println("2.刪除學(xué)生信息");
?? ??? ??? ?System.out.println("3.修改學(xué)生信息");
?? ??? ??? ?System.out.println("4.查詢學(xué)生信息");
?? ??? ??? ?System.out.println("0.退出系統(tǒng)");
?? ??? ??? ?
?? ??? ??? ?System.out.println("請輸入序號:");
?? ??? ??? ?switch(scanner.nextInt()){
?? ??? ??? ??? ?
?? ??? ??? ??? ?case 1:
?? ??? ??? ??? ??? ?ss.append();
?? ??? ??? ??? ??? ?System.out.println();
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case 2:
?? ??? ??? ??? ??? ?ss.delStu();
?? ??? ??? ??? ??? ?System.out.println();
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case 3:
?? ??? ??? ??? ??? ?System.out.println("請輸入要修改的學(xué)生的學(xué)號:");
?? ??? ??? ??? ??? ?ss.updateStu(scanner.next());
?? ??? ??? ??? ??? ?System.out.println();
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case 4:
?? ??? ??? ??? ??? ?System.out.println("請輸入要查詢的學(xué)生的學(xué)號(若為0,則查詢所有學(xué)生信息):");
?? ??? ??? ??? ??? ?ss.queryStuByStuNo(scanner.next());
?? ??? ??? ??? ??? ?System.out.println();
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case 0:
?? ??? ??? ??? ??? ?System.exit(0);//退出系統(tǒng)
?? ??? ??? ??? ??? ?ss.closeRs();
?? ??? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ?}
}

5.定義主方法,使用該系統(tǒng)

public class Main {

?? ?public static void main(String[] args) {
?? ??? ?SystemService ss = new SystemService();
?? ??? ?ss.serviceChoose();
?? ?}
?? ?
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java如何簡單快速入門JWT(token生成與驗(yàn)證)

    Java如何簡單快速入門JWT(token生成與驗(yàn)證)

    這篇文章主要給大家介紹了關(guān)于Java如何簡單快速入門JWT(token生成與驗(yàn)證)的相關(guān)資料,JWT是一個(gè)加密的字符串,JWT傳輸?shù)男畔⒔?jīng)過了數(shù)字簽名,因此傳輸?shù)男畔⒖梢员或?yàn)證和信任,需要的朋友可以參考下
    2023-12-12
  • 詳解ElasticSearch6.4.0集群搭建

    詳解ElasticSearch6.4.0集群搭建

    這篇文章主要介紹了詳解ElasticSearch6.4.0集群搭建,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • SpringBoot自定義Starter的教程指南

    SpringBoot自定義Starter的教程指南

    SpringBoot的Starter自動配置機(jī)制極大地簡化了依賴管理和應(yīng)用配置,使得開發(fā)者可以以最少的配置快速啟動和運(yùn)行Spring應(yīng)用,有時(shí),標(biāo)準(zhǔn)的Starter可能無法滿足特定需求,需要創(chuàng)建自定義Starter,所以本文給大家介紹了SpringBoot自定義Starter的教程指南
    2024-11-11
  • Java深入學(xué)習(xí)圖形用戶界面GUI之布局管理器

    Java深入學(xué)習(xí)圖形用戶界面GUI之布局管理器

    本文章向大家介紹Java GUI布局管理器,主要包括布局管理器使用實(shí)例、應(yīng)用技巧、基本知識點(diǎn)總結(jié)和需要注意事項(xiàng),具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-05-05
  • Java?CAS機(jī)制詳解

    Java?CAS機(jī)制詳解

    這篇文章主要介紹了Java?CAS機(jī)制,CAS機(jī)制是一種數(shù)據(jù)更新的方式。在具體講什么是CAS機(jī)制之前,我們先來聊下在多線程環(huán)境下,對共享變量進(jìn)行數(shù)據(jù)更新的兩種模式:悲觀鎖模式和樂觀鎖模式
    2023-01-01
  • mybatis打印的sql日志不寫入到log文件的問題及解決

    mybatis打印的sql日志不寫入到log文件的問題及解決

    這篇文章主要介紹了mybatis打印的sql日志不寫入到log文件的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • SpringSecurity自定義登錄界面

    SpringSecurity自定義登錄界面

    這篇文章主要為大家詳細(xì)介紹了SpringSecurity自定義登錄界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • java實(shí)現(xiàn)Floyd算法

    java實(shí)現(xiàn)Floyd算法

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)Floyd算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Java如何通過Socket同時(shí)發(fā)送文本和文件

    Java如何通過Socket同時(shí)發(fā)送文本和文件

    這篇文章主要介紹了Java如何通過Socket同時(shí)發(fā)送文本和文件問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 詳解SpringBoot+Dubbo集成ELK實(shí)戰(zhàn)

    詳解SpringBoot+Dubbo集成ELK實(shí)戰(zhàn)

    這篇文章主要介紹了詳解SpringBoot+Dubbo集成ELK實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評論