1. 程式人生 > >*學生管理系統java面向物件版本

*學生管理系統java面向物件版本

學生管理系統java面向物件版本

    鑑於初學者都在用學生管理系統練習業務邏輯,本人也提供一個java寫的面向物件版本

技術能力有限,僅供新手學習參考。大神略過。
+++++++++學生類+++++++++++++

package studentmanagementsystem;
/*
學生類:
屬性:姓名、年齡、學號(ID)、性別
方法:複寫toString()、equals()、compareto()、get()set()等
 */
import java.util.Objects;
public class Student<e> implements Comparable  {
    private String name;
    private int age;
    private int ID;
    private String sex;
    boolean flag=false;//退出判斷年齡的迴圈標記
    public Student() {
    }
    public Student(String name, int age, int ID, String sex) {
        this.name = name;
        this.age = age;
        this.ID = ID;
        this.sex = sex;
    }
    @Override
    public String toString() {
        return "學生"+"姓名:"+name+"\t\t"+"年齡:"+age+"\t\t"+"學號:"+ID+"\t\t"+"性別:"+sex;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int ages) {
        if (ages > 0 && ages < 80) {
            this.age = ages;
            flag=true;
        } else {
            System.out.println("輸入年齡錯誤");
        }
    }
    public int getID() {
        return ID;
    }
    public void setID(int ID) {
        this.ID = ID;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        if (sex.equals("男") || sex .equals("女") ) {
            this.sex = sex;
            flag=true;
        } else {
            System.out.println("輸入錯誤");
        }

    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass())
            return false;
        Student student = (Student) o;
        return age == student.age &&
                ID == student.ID &&
                flag == student.flag &&
                Objects.equals(name, student.name) &&
                Objects.equals(sex, student.sex);
    }
    @Override
    public int hashCode() {
        return Objects.hash(ID);
    }
    @Override
    public int compareTo(Object o) {
        Student st = (Student) o;
        return this.getID()-((Student) o).getID();
    }
}

學生容器類

package studentmanagementsystem;
import java.util.*;
public class StuSystem {
    //容器類
    private  Scanner sc = new Scanner(System.in);
     ArrayList<Student> list = new ArrayList();
    //新增學生
    private  Student st;
    public void addstudent (Student st){
         //判斷id重複
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).getID() == st.getID()) {
                    System.out.println("已註冊過該賬號");
                }
            }
            list.add(st);
            System.out.println("註冊成功+++");
    }
    //設定
    public  void setInformation(int temp) {
        a:
        while (true) {
        System.out.println("正在查詢");//加入sleep等待
            if (list.size()==0) {
                System.out.println("沒有找到該學生");
                break a;
            }
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getID()==temp) {
                System.out.println(list.get(i).toString());
                list.remove(i);
                list.add(i,getConsoleString());
                //把封裝好的物件直接給了
                System.out.println("\t\t" + "設定成功");
                break a;
            }
        }
            if (true) {
                System.out.println("沒有該學生,請重新輸入");
                break;
            }
        }
    }

    public  void referAll() {
        for (int i = 0; i < list.size(); i++) {
            Collections.sort(list);
            System.out.println(list.get(i).toString());
        }
    }

    public  void referStudent(int id) {
        a:
        while (true) {
            System.out.println("正在查詢");//加入sleep等待
            if (list.size()==0) {
                System.out.println("沒有找到該學生");
                break a;
            }
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).getID()==id) {
                    System.out.println(list.get(i).toString());
                    break a;
                }
            }

            if (true) {
                System.out.println("沒有該學生,請重新輸入");
                break;
            }
        }
    }

    public  void removeInformation(int id) {
        a:
        while (true) {
            System.out.println("正在查詢");//可加入sleep等待
            if (list.size()==0) {
                System.out.println("沒有找到該學生");
                break a;
            }
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).getID()==id) {
                    System.out.println(list.get(i).toString());
                    System.out.println("是否刪除,y/n");
                    String temp=sc.next();
                    if (temp.equals("y")) {
                    list.remove(i);
                    } else if (temp.equals("n")) {
                        break a;
                    }
                    //把封裝好的物件直接給了
                    System.out.println("\t\t" + "刪除成功");
                    break a;
                }
            }

            if (true) {
                System.out.println("沒有該學生,請重新輸入");
                break;
            }
        }
    }
    /*
    抽取控制檯
     */
    public  Student getConsoleString(){
        //定義學生物件儲存資訊
        Student xin = new Student();//定義新的物件,來接收新的物件資訊
        System.out.println("==================================================");
        System.out.println("請輸入學生資訊");
        System.out.println("請輸入姓名");
        try {
            String name = sc.next();
            xin.setName(name);
        } catch (Exception e) {
            System.out.println("輸入錯誤");
        }
        while (true) {
        System.out.println("請輸入年齡");
            try {
                int age =sc.nextInt();
                xin.setAge(age);
            } catch (Exception e) {
                System.out.println("輸入錯誤");
                break ;
            }
            if (xin.flag==true) {
            break;
            }
        }
        xin.flag=false;
        System.out.println("請輸入學號");
        try {
            int id =sc.nextInt();
            xin.setID(id);
        } catch (Exception e) {
            System.out.println("輸入錯誤");
            int id =sc.nextInt();
        }

        while (true) {
        System.out.println("請輸入性別");
        String sex = sc.next();
        xin.setSex(sex);
            if (xin.flag==true) {
                break;
            }

        }
        System.out.println("=================================================");
        return xin;
    }
}


主方法介面及呼叫

package studentmanagementsystem;
import javax.sound.midi.Soundbank;
import java.util.*;
/**
 * @auther sunguangyuan
 *@version 1.0
 *
1.新增  2.修改   3.刪除   4.按學號查詢   5.查詢所有學員   6.退出");
2一共三個類,學生類 、系統類(容器類)、主方法類(介面類)
3介面資訊也應該封裝起來,並暴露介面,為後期拓展方便
 */
public class StudentManageStudent {
    public static void main(String[] args) {
        StuSystem tank = new StuSystem();
        Scanner sc = new Scanner(System.in);
            title:
            while (true) {
                System.out.println("請輸入要執行的功能");
                System.out.println("1.新增   2.修改   3.刪除   4.按學號查詢   5.查詢所有學員   6.退出");
                try {
                    int temp = sc.nextInt();
                    switch (temp) {
                        case 1:
                            //新增  此處封裝性不好
                            if (tank.list.size() == 0) {
                                tank.list.add(tank.getConsoleString());
                                System.out.println("註冊成功");
                                break;
                            } else if (tank.list.size() >= 1) {
                                tank.addstudent(tank.getConsoleString());
                                break;
                            }
                            break;
                        case 2:
                            //修改 :根據學號確定要設定的物件
                            System.out.println("請輸入你的學號");
                            int setid = sc.nextInt();
                            tank.setInformation(setid);
                            break;
                        case 3:
                            //刪除
                            System.out.println("請輸入您的學號");
                            int removeid = sc.nextInt();
                            tank.removeInformation(removeid);
                            break;
                        case 4:
                            //查詢
                            System.out.println("請輸入您的學號");
                            int referid = sc.nextInt();
                            tank.referStudent(referid);
                            break;
                        case 5:
                            System.out.println("========================");
                            System.out.println("========================");
                            //查詢所有學生
                            tank.referAll();
                            System.out.println("========================");
                            System.out.println("========================");
                            break;
                        case 6:
                            //退出
                            System.out.println("歡迎使用,再見");
                            System.exit(0);
                        default:
                            System.out.println("¥¥¥輸入有誤,請重新輸入¥¥¥");
                            break;
                    }
                } catch (Exception e) {
                    System.out.println("輸入有誤");
                    break title;
                }

            }
        }
        }

功能:常見業務的增刪改查,以及根據學號的排序功能等
已知bug: 由於為新手練習用,沒有引入io,針對Scanner的異常僅僅是簡單的捕獲
未作處理,主方法體的title標籤為僅為退出用
功能拓展:主介面還應該提供介面,拓展功能
主介面封裝不夠良好,還可以優化
容器類的arrylist屬性應該封裝起來,提高安全性(時間緊,沒來及改良)
還有名字字元數不等會出現對齊錯亂

關於這個主介面的封裝和介面的暴露如果有大神瀏覽,懇請指教,謝謝

相關推薦

*學生管理系統java面向物件版本

學生管理系統java面向物件版本 鑑於初學者都在用學生管理系統練習業務邏輯,本人也提供一個java寫的面向物件版本 技術能力有限,僅供新手學習參考。大神略過。 +++++++++學生類+++++++++++++ package studentmanag

《超市管理系統面向物件分析》論文筆記

一、基本資訊 標題:超市管理系統的面向物件分析 時間:2016 來源:科技展望 關鍵詞:超市管理系統; 用例圖; 面向物件; 二、研究內容 1.主要內容:         基於中小型超市的特點:規模較小,庫存量不大。用面向物件的方法對超

基於文字介面的客戶資訊管理系統-純面向物件

    很久沒寫部落格了,從現在開始記錄Java專案,從基礎開始慢慢的向上延伸,純粹作為本人的個人記錄,也順便拿出來分享一下,不喜勿噴,有錯請指正一:專案介紹介紹:模擬實現一個基於文字介面的——客戶資訊管理系類和物件(屬性、方法及構造器)類的封裝引用陣列陣列的插入、刪除和替換

Python-停車管理系統面向物件

這個管理系統可實現車輛入庫,按車牌號或者車型查詢車輛,修改車輛資訊,車輛出庫時實現計費,按車型統計車輛數和顯示全部車輛資訊的功能 (1)定義車輛類,屬性有車牌號、顏色、車型(小汽車、小卡、中卡和大卡)、到達的時間和離開的時間等資訊和相關的對屬性做操作的行為。 (

java 面向物件(圖書管理系統1)

複習: 1、建構函式    a、建構函式的作用,用來建立物件,用new 關鍵字呼叫。還可以給這個物件的屬性賦值。    b、有引數的建構函式和無引數的建構函式。    c、無引數的建構函式預設 就有,如果你定義了有引數的建構函式,那麼預設無引數的建構函式       就失效

面向物件銀行管理系統JAVA程式碼《上》

面向物件模擬銀行管理系統(java): 一般銀行賬戶分為:借記卡賬戶和信用卡賬戶 借記卡賬戶 DebitAccount :是指先存款後消費(或取現),沒有透支功能的銀行卡。 即儲存卡賬戶,餘額必須大於0。 信用卡賬戶 CreditAccount :信用卡是一種非

Java版本 學生管理系統

package BookDemo_1; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Test { public static void main(

面向物件寫一個簡單的學生管理系統

package com.xuesheng; //使用面向物件編寫一個學生管理系統。 //1、學生類屬性有:姓名、性別、年齡、班級;學生可以自由選科; //3、在測試類中例項化學生物件,並列印每個學生選擇的科目,例如:三班的小紅選了文科。 public class Xuesh

JAVA使用GUI編寫一個簡單的學生管理系統0.1版本--學生登陸介面

JAVA入門,寫的不好請多包涵,如有不懂,下方可提問,有問會必答! import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Login{ public stati

java構建學生管理系統(一)

class 管理系統 同時 進步 傳參 databases 什麽 界面 查看 用java搭建學生管理系統,重要還是對數據庫的操作,諸如增刪改查等。 1.基本的功能: 老師完成對學生信息的查看和修改,完成對班級的信息的概覽。 學生可以看自己的成績和對自己信息的修改。 學生和老

面向對象:簡單的學生管理系統

pytho 自己的 成績 姓名 學生 增刪改 文件 管理系 系統 根據需求編寫程序:   學生成績管理系統   1.根據姓名查看學生成績   2.根據科目查看學生成績   3.查看總平均分   4.根據姓名刪除學生信息   先分析需要哪些對象:   學生對象:

java學生管理系統

要求:1、新增學生    2、刪除指定學號的學生    3、修改指定學號的成績               4、查詢指定學號的資訊      &n

springMVC-spring-Hibernate 開發學生管理系統簡單案例-java各檔案編寫(四)

四、java各檔案編寫 原始檔:https://download.csdn.net/download/flyingshadower/10628472 (1)工程目錄: (2)StudentEntity 利用Hibernate自動生成實體類 package com.student

Java練習 SDUT-3349_答答租車系統面向物件綜合練習)

答答租車系統(面向物件綜合練習) Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 各位面向物件的小夥伴們,在學習了面向物件的核心概念——類的封裝、繼承、多型之後,答答租車系統開始營運了。 請你充分利用面向物件思想,為公司解

Java基礎15-陣列例項學生管理系統

1 import java.util.Scanner; 2 public class Student{ 3 public static void main(String[] args){ 4 Scanner in=new Scanner(System.in); 5

適合中職學生學生管理系統的研發(java+jdbc+mysql)(三)

登陸成功之後顯示新增和查詢的操作,這裡面新增的操作,是實現了監聽之後重新的新增的方法,與LoginActivity實現分離,這裡面AddLayout做新增的介面和資料庫新增的操作 public class ActionListenerImp implements java.awt.even

適合中職學生學生管理系統的研發(java+jdbc+mysql)(二)

 上一章節我們說到了登陸介面的操作,只有介面,接下來要實現一個承載登陸介面的Activity.這裡面有一個IO流的操作,把賬號和密碼儲存到本地 因為登陸介面LoginLayout與LoginActivity用的介面回撥實現的介面的分離,所有我們LoginActivity裡面要Stude

適合中職學生學生管理系統的研發(java+jdbc+mysql)(一)

中職學生從學生主動性來講幾乎沒有,基礎差,在學習java的過程中,大部分學生是懶作的.所有研發一套適合中職學生的管理系統. 首先登陸介面此係統所有的介面都是用java的swing寫的 這裡面因為登陸與登陸邏輯相分離(採用的是介面回撥,這個是難點,多型知識一定要紮實,否則理解上可能

適合中職學生學生管理系統的研發(java+jdbc+mysql)(四)

這一長比較重要設計的到資料庫,我們上三的時候說到介面新增按鈕之後進入介面新增的操作,我這裡對JDBC進行了封裝,當然連線JDBC有很多的技術,我們這裡採用的properties方式,這種方式方便開發者管理,並且對初學者來說容易操作. driver=com.mysql.jdbc.Driver ur

Java學生管理系統

1.準備環境 win7 eclipse sql2008sever 連線資料庫需要jar包,上篇文章已寫 2.定義模組 (1)StuManage:主介面 (2)StuModel:資料模型 (3)StuAddDialog:新增學生資訊模組 (4)StuUpDialog:修改學生資訊模組 3. 模