1.编写一个学生类,提供name、age、gender、phone、address、email成员变量,且为每个成员变量提供setter、getter方法。为学生提供默认的构造器和带所有成员变量的构造器。为学生提供方法,用于描绘吃、喝、玩、睡等行为。
2.利用第1题定义的Student类,定义一个Student[]数组保存多个Student对象作为通讯录数据。程序可通过name、email、address查询,如果找不到数据,则进行友好的提示。
/*
* 需求:利用之前定义的Student类,定义一个Student[]数组保存多个student对象作为通讯录数据
* 程序可通过name、email、address查询,如果找不到数据,则进行友好的提示
* */
import java.util.Scanner;
class Student{
private String name;
private int age;
private String gender;
private long phone;
private String address;
private String email;
//创建没有参数的构造器
public Student(){
}
//创建带有所有成员变量参数的构造器
public Student(String name,int age,String gender,long phone,String address,String email){
this.name=name;
this.age=age;
this.gender=gender;
this.phone=phone;
this.address=address;
this.email=email;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return this.age;
}
public void setGender(String gender){
this.gender=gender;
}
public String getGender(){
return this.gender;
}
public void setPhone(long Phone){
this.phone=phone;
}
public long getPhone(){
return this.phone;
}
public void setAdress(String adress){
this.address=adress;
}
public String getAdress(){
return this.address;
}
public void setEmail(String email){
this.email=email;
}
public String getEmail(){
return this.email;
}
public void Play(){
System.out.println("学生玩游戏");
}
public void Eat(){
System.out.println("学生吃东西");
}
public void Drink(){
System.out.println("学生喝东西");
}
}
class Manger{
private Student[] a;
/*public Manger(Student[] a){
this.a=a;
}*/
public void SeachName(Student[] stu2){
String str="张三";
for(int i=0;i<stu2.length;i++){
boolean b1=false;
if(stu2[i].getName().equals(str)){
System.out.println("根据学生姓名查询的信息为:"+stu2[i].getName()+","+stu2[i].getAge());
b1=true;
}
if(i==stu2.length&&b1==false){
System.out.println("查询结果不存在,请稍后查询");
}
}
}
public void SeachAge(Student[] stu2){
for(int i=0;i<stu2.length;i++){
boolean b1=false;
if(stu2[i].getAge()==12){
System.out.println("根据学生年龄查询的信息为:"+stu2[i].getName()+","+stu2[i].getAge());
b1=true;
}
if(i==stu2.length&&b1==false){
System.out.println("查询结果不存在,请稍后查询");
}
}
}
}
public class Test1 {
public static void main(String[] args){
Student stu1=new Student();
stu1.setName("张三");
stu1.setAge(12);
stu1.setGender("fafas");
stu1.setAdress("fdasfa");
stu1.setPhone(1233432542);
stu1.setEmail("1243124512@qq.com");
System.out.println("学生姓名:"+stu1.getName());
System.out.println("学生年龄:"+stu1.getAge());
System.out.println("学生的地址:"+stu1.getAdress());
stu1.Play();
stu1.Eat();
stu1.Drink();
Student[] stu2=new Student[3];
Scanner in;
in=new Scanner(System.in);
for(int i=0;i<stu2.length;i++){
//临时的stuI一定要在for里面定义,否则StuI赋值给stu2[i]之后
//因为指向相同,stu2[i]会不断的重写,最后出现所有的stu2值全部一样;
Student StuI=new Student();
//给成员变量初始化
System.out.println("请输入第"+(i+1)+"个学生信息");
System.out.println("姓名:");
StuI.setName(in.next());
StuI.setAge(Integer.valueOf(in.next()));
StuI.setPhone(Integer.valueOf(in.next()));
stu2[i]=StuI;
}
for(int i=0;i<stu2.length;i++){
System.out.println(stu2[i].getName());
}
/*
* 下面的代码因为值为null,所以出现空指针异常
* */
/*stu2[0].setName("李四");
stu2[0].setAge(12);
stu2[0].setAdress("asd");
stu2[0].setPhone(s12432523);
stu2[0].setEmail("dasdasdsad");
stu2[1].setName("张三");
stu2[1].setAge(15);
stu2[1].setAdress("dasfa");
stu2[1].setPhone(124432543);
stu2[1].setEmail("dasfasgsg");
stu2[2].setName("王五");
stu2[2].setAge(18);
stu2[2].setAdress("asfga");
stu2[2].setPhone(1241232523);
stu2[2].setEmail("asdfasfasfasf");*/
Manger m=new Manger();
m.SeachAge(stu2);
m.SeachName(stu2);
//使用带所有参数的构造器
Student stu3=new Student("王五",15,"fafgas",124125,"dasfaga","124151521");
System.out.println("学生姓名:"+stu3.getName()+"学生的年龄为:"+stu3.getAge()+"学生的电话号码为:"+stu3.getPhone());
}
}
3.定义普通人、老师、班主任、学生、学校这些类,提供适当的成员变量、方法用于描述其内部数据和行为特征,并提供主类使之运行。要求有良好的封装性,将不同类放在不同包下面,增加文档注释,生成API文档。
1)首先定义Person类,定义其成员变量,定义方法得到成员变量的值
public class Person {
private String name;
public String getName(){
return this.name;
}
public void setName(String name){
this.name=name;
}
}
2)定义Student类,继承父类Person,调用得到成员变量name的函数
public class Student extends Person{
Student(String name){
//其中this可以省略
this.setName(name);
}
public void study(School s){
System.out.println("学生"+this.getName()+"在"+s.getSchoolName()+"上课");
}
}
3)定义Teacher类,继承父类Person,调用获得成员变量name的方法
public class Teacher extends Person {
Teacher(){
}
Teacher(String name){
setName(name);
}
//老师给某同学布置作业
public void setHomework(Student s){
System.out.println(this.getName()+"老师给学生"+s.getName()+"布置作业");
}
}
3)定义班主任类MainTeacher类,继承Teacher类。
public class MainTeacher extends Teacher {
MainTeacher(String name){
setName(name);
}
public void joinCompetition(Student s,School sc){
//班主任要求某学生参加某学校的什么比赛
System.out.println(this.getName()+"班主任要求学生"+s.getName()+"参加"+sc.getSchoolName()+"的"+sc.getCompetition());
}
}
4)定义学校类School,创建得到学校类中的方法学校的名字schoolName(),获得参加什么比赛,比赛名字的方法getCompetition()
public class School {
private String schoolName;
private String competition;
School(String name){
setSchoolName(name);
}
public String getCompetition(){
return competition;
}
public void setCompetition(String competition){
this.competition=competition;
}
public void setSchoolName(String name){
this.schoolName=name;
}
public String getSchoolName(){
return schoolName;
}
}