Java 设计简单班级管理系统

设计一个简单的班级管理系统,满足如下要求:

  1. 设计学生类Student,包含学号(String型)、姓名(String型)、性别(‘M’/'F’代表男/女)、年龄(int型)、是否党员(boolean型)、语文(double型)、数学(double型)等信息,要能够方便输出学生信息;
  2. 设计班级类BanJi,其中创建班级时可指定班级的最大容量。可向班级中批量增加学生信息,以及打印输出班级中所有学生的信息。
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(){ //此函数在用System.out.print(s)打印Student型对象s时,会被自动调用
		String sex1 = "未知";//即此处控制如何输出学生信息
		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{ //班级类,实际上是存储学生的顺序表,数组+表长
	 Student [] s; // 此处并未创建数组对象,仅是数组的引用
	 int len;
	 BanJi(int x){ s = new Student[x];} //此处创建【数组】对象,而非Student对象,用[]而不是()!
	 void append() { // 向班级中批量增加学生元素
		 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("请输入:\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的第一个字符
        	 age = sc.nextInt();
        	 isDy = sc.nextBoolean();
        	 chinese = sc.nextDouble();
        	 math = sc.nextDouble();
        	 //必须创建一个Student型对象,并将其填入数组s
        	 s[i] = new Student(id,name,sex,age,isDy,chinese,math);
        	 i++;
         }//end-while 必须输入结束符才能使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. 系统性地学习了Scanner读取不同类型数据、读取未知数量的数据(haxNext()–面向String型、hasNextInt()、hasNextDouble())、如何结束输入(ctrl+Z);
  2. 重点: Student[] s=new Student[100]; 创建的是一个数组对象,而非Student对象
    :s是 一个Student[]型 数组对象,内有100个空指针(即null),
    如果希望使用st[i].show(); ,s[i]必须先创建对象,然后才能使用。即:s[i]=new Student(…); //注此处使用圆括号,即调用了Student的构造函数
    否则,将会产生空指针引用异常。
  • 0
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值