*學生管理系統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. 模