写学生信息录入系统,要求可以录入多个学生的信息(包括学号/姓名/性别/年龄/入学日期)(用Student类型的数组)。学号用String。录入格式如下:
1,zhangfei,man,25,2008-1-1
存入Student对象中.
a、录入完毕后,找到所有姓zhang的学生,并打印出他们的信息
b、要求打印出所有的入学日期在xx年的学生信息.
(Date类的getYear过时,Calendar类get(Calendar.Year))
定义一个Student类型的数组
import java.text.SimpleDateFormat;//进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
import java.util.Date;
public class Student {
// 包括学号/姓名/性别/年龄/入学日期
private int id;
private String name;
private String gender;
private int age;
private Date date;
public Student() {
super();
}
public Student(int id, String name, String gender, int age, Date date) {
super();
this.id = id;
this.name = name;
this.gender = gender;
this.age = age;
this.date = date;
}
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String strDate = sdf.format(this.date);
return "Student [id=" + id + ", name=" + name + ", gender=" + gender
+ ", age=" + age + ", date=" + strDate + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((date == null) ? 0 : date.hashCode());
result = prime * result + ((gender == null) ? 0 : gender.hashCode());
result = prime * result + id;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (age != other.age)
return false;
if (date == null) {
if (other.date != null)
return false;
} else if (!date.equals(other.date))
return false;
if (gender == null) {
if (other.gender != null)
return false;
} else if (!gender.equals(other.gender))
return false;
if (id != other.id)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
学生信息系统
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
/**
* 学生录入程序
*/
public class StudentManager {
/**
* 主方法
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(System.in);
System.out.println("请录入班级学生个数:");
int niNum = scan.nextInt();//学生个数
if(niNum<0){
System.out.println("人数输入错误!");//录入错误报错
return;
}
Student[] stuArr = initStuMes(scan, niNum);//调用initStuMes方法
System.out.println("请录入要查找的学生的姓");
String strFirstName = scan.next();//学生的姓
findStuByFirstName(stuArr, strFirstName);//调用findStuByFirstName方法
System.out.println("请录入要查找的年份:");
int niYear = scan.nextInt();//查找的年份
findStuByDate(stuArr, niYear);//调用findStuByDate
}
/**
* 初始化学生信息
* @param scan 录入
* @param niNum 学生人数
* @return 完整学生数组
* @throws ParseException
*/
public static Student[] initStuMes(Scanner scan, int niNum)
throws ParseException {
Student[] stuArr = new Student[niNum];//创建一个数组存储录入的学生信息
for(int i=0;i<stuArr.length;i++){
System.out.println("请录入每个学生的信息:格式如下:");
System.out.println("学号,姓名,性别,年龄,入学日期");
String strInput = scan.next();
String[] strArr = strInput.split(",");//用split拆分此字符串。
if(strArr.length!=5){
System.out.println("学生信息录入错误,请重新录入:");//录入错误报错
i--;// 作废本次循环
continue;
}
int niStuId = Integer.parseInt(strArr[0]);//学号
int niStuAge = Integer.parseInt(strArr[3]);//年龄
// 对录入的入学日期的校验
if(!strArr[4].matches("\\d{4}-\\d{1,2}-\\d{1,2}")){//matches定义入学日期格式
System.out.println("学生信息录入错误,请重新录入:");//入学日期录入错误报错
i--;//作废本次循环
continue;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//定义日期格式
Date date = sdf.parse(strArr[4]);
// 初始化每个学生的信息
Student student = new Student(
niStuId,strArr[1],strArr[2],niStuAge,date);
stuArr[i] = student;//将学生信息存入stuArr数组中
}
return stuArr;
}
/**
* 通过姓查找学生信息
* @param stuArr 学生数组
* @param strName 要查找的学生的姓氏
*/
public static void findStuByFirstName(Student[] stuArr,String strName){
for(int i=0;i<stuArr.length;i++){
String strStuName = stuArr[i].getName();//从数组中获得姓名
if(strStuName.startsWith(strName)){//姓是一样的,输出
System.out.println(stuArr[i]);
}else{
System.out.println("找不到");
}
}
}
/**
* 通过入学日期查找学生
* @param stuArr 学生数组
* @param year 学生入学年份
*/
public static void findStuByDate(Student[] stuArr,int year){
for(int i=0;i<stuArr.length;i++){
Date date = stuArr[i].getDate();
Calendar c = Calendar.getInstance();//初始化c
c.setTime(date);//获取入学日期
int niYear = c.get(Calendar.YEAR);//获取入学年份
if(niYear == year){
System.out.println(stuArr[i]);
}else{
System.out.println("没有该年入学的学生");
}
}
}
}
转载于:https://blog.51cto.com/7617661/1255804