Java實(shí)現(xiàn)簡(jiǎn)單班級(jí)管理系統(tǒng)
本文設(shè)計(jì)一個(gè)簡(jiǎn)單的班級(jí)管理系統(tǒng),滿足如下要求:
1、設(shè)計(jì)學(xué)生類Student,包含學(xué)號(hào)(String型)、姓名(String型)、性別(‘M’/'F’代表男/女)、年齡(int型)、是否黨員(boolean型)、語(yǔ)文(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ù)組+表長(zhǎng)
?? ? 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)生空指針引用異常。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
開(kāi)發(fā)者在Idea 中常見(jiàn)的配置,你都了解嗎
idea這款java開(kāi)發(fā)工具真是好用無(wú)比,不僅好用而且界面也很好看,有黑白主題,功能強(qiáng)大配置簡(jiǎn)單,好了不多說(shuō)了,今天給大家羅列下Idea 中常見(jiàn)的配置,喜歡的朋友一起看看吧2021-06-06
詳解OpenAPI開(kāi)發(fā)如何動(dòng)態(tài)的添加接口實(shí)現(xiàn)
這篇文章主要為大家介紹了OpenAPI開(kāi)發(fā)如何動(dòng)態(tài)的添加接口實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
將springboot項(xiàng)目生成可依賴的jar并引入到項(xiàng)目中的方法
SpringBoot項(xiàng)目默認(rèn)打包的是可運(yùn)行jar包,也可以打包成不可運(yùn)行的jar包,本文給大家介紹將springboot項(xiàng)目生成可依賴的jar并引入到項(xiàng)目中的方法,感興趣的朋友一起看看吧2023-11-11
SpringBoot 調(diào)度任務(wù)及常用任務(wù)表達(dá)式
這篇文章主要介紹了SpringBoot 調(diào)度任務(wù)及常用任務(wù)表達(dá)式,需要的朋友可以參考下2017-12-12
java非遞歸實(shí)現(xiàn)之二叉樹(shù)的前中后序遍歷詳解
樹(shù)的遍歷順序大體分為三種:前序遍歷(先根遍歷、先序遍歷),中序遍歷(中根遍歷),后序遍歷(后根遍歷),本文將給大家詳細(xì)的介紹,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值2021-09-09
javaweb中ajax請(qǐng)求后臺(tái)servlet(實(shí)例)
下面小編就為大家?guī)?lái)一篇javaweb中ajax請(qǐng)求后臺(tái)servlet(實(shí)例)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06

