Java實(shí)現(xiàn)簡單班級(jí)管理系統(tǒng)
本文設(shè)計(jì)一個(gè)簡單的班級(jí)管理系統(tǒng),滿足如下要求:
1、設(shè)計(jì)學(xué)生類Student,包含學(xué)號(hào)(String型)、姓名(String型)、性別(‘M’/'F’代表男/女)、年齡(int型)、是否黨員(boolean型)、語文(double型)、數(shù)學(xué)(double型)等信息,要能夠方便輸出學(xué)生信息;
2、設(shè)計(jì)班級(jí)類BanJi,其中創(chuàng)建班級(jí)時(shí)可指定班級(jí)的最大容量??上虬嗉?jí)中批量增加學(xué)生信息,以及打印輸出班級(jí)中所有學(xué)生的信息。
import java.util.Scanner; class Student{ ?? ?String id,name; char sex; int age; boolean isDy; double chinese,math; ?? ?Student(String i,String n,char s,int a,boolean Dy,double c,double m){ ?? ??? ?id=i; name=n; sex=s; age=a; isDy=Dy; chinese=c; math=m; ?? ?} ?? ?public String toString(){ //此函數(shù)在用System.out.print(s)打印Student型對(duì)象s時(shí),會(huì)被自動(dòng)調(diào)用 ?? ??? ?String sex1 = "未知";//即此處控制如何輸出學(xué)生信息 ?? ??? ?if(sex=='M' || sex=='m') ?? ??? ??? ?sex1 = "男"; ?? ??? ?else if(sex=='F' || sex=='f') ?? ??? ??? ?sex1 = "女"; ?? ??? ?String isDy1 = "未知"; ?? ??? ?if(isDy == true) ?? ??? ??? ?isDy1 = "黨員"; ?? ??? ?else ?? ??? ??? ?isDy1 = "非黨員"; ?? ??? ?return id+" "+name+" "+sex1+" "+age+" "+isDy1+" "+chinese+" "+math; ?? ?} ?? ?void print() { ?? ??? ?System.out.print(this); ?? ?} } class BanJi{ //班級(jí)類,實(shí)際上是存儲(chǔ)學(xué)生的順序表,數(shù)組+表長 ?? ? Student [] s; // 此處并未創(chuàng)建數(shù)組對(duì)象,僅是數(shù)組的引用 ?? ? int len; ?? ? BanJi(int x){ s = new Student[x];} //此處創(chuàng)建【數(shù)組】對(duì)象,而非Student對(duì)象,用[]而不是()! ?? ? void append() { // 向班級(jí)中批量增加學(xué)生元素 ?? ??? ? int i=0; ?? ??? ? String id,name; char sex; int age; boolean isDy; double chinese,math; ?? ??? ? System.out.print("按如下格式輸入:\n"); ? ? ? ? ?System.out.print("000 張三 F 20 true 33.44 66\n"); ? ? ? ? ?System.out.print("請(qǐng)輸入:\n"); ? ? ? ? ?Scanner sc = new Scanner(System.in); ? ? ? ? ?while(sc.hasNext() == true) { ? ? ? ? ?? ? id = sc.next(); ? ? ? ? ?? ? name = sc.next(); ? ? ? ? ?? ? String xb = sc.next(); sex = xb.charAt(0);// 不能直接讀取char型,xb.charAt(0)取字符串xb的第一個(gè)字符 ? ? ? ? ?? ? age = sc.nextInt(); ? ? ? ? ?? ? isDy = sc.nextBoolean(); ? ? ? ? ?? ? chinese = sc.nextDouble(); ? ? ? ? ?? ? math = sc.nextDouble(); ? ? ? ? ?? ? //必須創(chuàng)建一個(gè)Student型對(duì)象,并將其填入數(shù)組s ? ? ? ? ?? ? s[i] = new Student(id,name,sex,age,isDy,chinese,math); ? ? ? ? ?? ? i++; ? ? ? ? ?}//end-while 必須輸入結(jié)束符才能使hasNext()為假 ? ? ? ? ?len = i; ?? ? } ?? ? void print() { ?? ??? ? for(int i=0;i<len;i++) ?? ??? ??? ? System.out.print(s[i]+"\n"); ?? ? } } class App{ ?? ?public static void main(String [] args) { ?? ??? ?BanJi h = new BanJi(50); ?? ??? ?h.append(); ?? ??? ?h.print(); ?? ?} }
//本例掌握:
1、系統(tǒng)性地學(xué)習(xí)了Scanner讀取不同類型數(shù)據(jù)、讀取未知數(shù)量的數(shù)據(jù)(haxNext()–面向String型、hasNextInt()、hasNextDouble())、如何結(jié)束輸入(ctrl+Z);
2、重點(diǎn): Student[] s=new Student[100]; 創(chuàng)建的是一個(gè)數(shù)組對(duì)象,而非Student對(duì)象
注:s是 一個(gè)Student[]型 數(shù)組對(duì)象,內(nèi)有100個(gè)空指針(即null),
如果希望使用st[i].show(); ,s[i]必須先創(chuàng)建對(duì)象,然后才能使用。即:s[i]=new Student(…); //注此處使用圓括號(hào),即調(diào)用了Student的構(gòu)造函數(shù)
否則,將會(huì)產(chǎn)生空指針引用異常。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringCloud網(wǎng)關(guān)Gateway架構(gòu)解析
這篇文章主要介紹了SpringCloud網(wǎng)關(guān)Gateway架構(gòu)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Java超詳細(xì)講解設(shè)計(jì)模式之一的工廠模式
工廠模式有 3 種不同的實(shí)現(xiàn)方式,分別是簡單工廠模式、工廠方法模式和抽象工廠模式,工廠模式最大的特點(diǎn)就是解耦合,本篇帶你詳細(xì)了解它2022-03-03SpringBoot2.7.14整合redis7的詳細(xì)過程
這篇文章主要介紹了SpringBoot2.7.14整合redis7的詳細(xì)過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-10-10使用Prometheus+Grafana的方法監(jiān)控Springboot應(yīng)用教程詳解
這篇文章主要介紹了用Prometheus+Grafana的方法監(jiān)控Springboot應(yīng)用,本文通過實(shí)例代碼詳解給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03MyBatis將查詢出的兩列數(shù)據(jù)裝配成鍵值對(duì)的操作方法
這篇文章主要介紹了MyBatis將查詢出的兩列數(shù)據(jù)裝配成鍵值對(duì)的操作代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08詳解java解決分布式環(huán)境中高并發(fā)環(huán)境下數(shù)據(jù)插入重復(fù)問題
這篇文章主要介紹了java解決并發(fā)數(shù)據(jù)重復(fù)問題 ,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03Java設(shè)計(jì)模式之橋梁(Bridge)模式
這篇文章主要介紹了Java設(shè)計(jì)模式之橋梁(Bridge)模式,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)Java設(shè)計(jì)模式的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05