Java实现简单班级管理系统
作者:LYQyzwds 时间:2023-01-07 16:20:29
本文设计一个简单的班级管理系统,满足如下要求:
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的构造函数
否则,将会产生空指针引用异常。
来源:https://blog.csdn.net/m0_46527503/article/details/109405359
标签:java,班级,管理系统
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
解决springMVC 跳转js css图片等静态资源无法加载的问题
2022-04-13 04:06:51
JAVA内存溢出解决方案图解
2023-07-22 14:57:23
![](https://img.aspxhome.com/file/2023/9/125569_0s.png)
Android使用SharedPreferences存储数据的实现方法
2021-08-22 02:05:49
Spring MVC数据绑定方式
2023-03-18 03:06:55
利用C#版OpenCV实现圆心求取实例代码
2022-10-28 12:51:48
![](https://img.aspxhome.com/file/2023/3/94663_0s.jpg)
Android 可拖动的seekbar自定义进度值
2023-12-28 12:37:24
![](https://img.aspxhome.com/file/2023/3/122123_0s.png)
Java读取txt文件和写入txt文件的简单实例
2022-01-01 05:04:16
Android中的应用认领总结
2022-03-12 02:54:05
浅谈Java编程中的synthetic关键字
2022-01-27 18:48:41
Android开发实现webview中img标签加载本地图片的方法
2023-03-15 01:33:40
![](https://img.aspxhome.com/file/2023/3/114293_0s.png)
java高并发的线程中断的几种方式详解
2022-08-25 01:35:09
linux的shell命令检测某个java程序是否执行
2021-07-27 14:32:20
通过spring注解开发,简单测试单例和多例区别
2023-11-06 09:18:31
![](https://img.aspxhome.com/file/2023/0/113410_0s.png)
Spring MVC学习教程之视图深入解析
2021-12-16 23:37:55
Java中的动态和静态编译实例详解
2021-07-30 15:25:10
完美解决客户端webview持有的页面缓存,不会立即释放的问题
2021-09-23 03:30:50
java 中锁的性能提高办法
2021-07-28 10:50:28
解析android中ProgressBar的用法
2021-07-13 20:38:52
android scrollview 滑动到顶端或者指定位置的实现方法
2022-04-27 00:12:40
Android中Service的全面总结
2022-12-30 22:09:09
![](https://img.aspxhome.com/file/2023/4/138814_0s.jpg)