学完面向对象的第一个小案例分享
本案例使用了Java语言中的ArrayList集合来帮助存储数据。我把项目分成了Student,StudentManger,StudentOpterator三个部分来完成学生信息的管理。我会依次讲解每个部分最后在附上代码。
目录
一、界面展示
二、学生类(Student)
成员变量(学生类的属性):学号(sid)、姓名(name)、年龄(age)、居住地(adress)
封装:有参和无参的构造器
方法:给出每个成员变量的get和set方法
代码如下:
public class Student {
private String sid;
private String name;
private String age;
private String address;
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
三、主程序(启动)
创建一个StudentOpterator的引用变量Opterator,再调用start()方法完成启动
public class StudentManger {
public static void main(String[] args) {
StudentOpterator Opterator = new StudentOpterator();
Opterator.start();
}
}
四、学生的管理功能(StudentOpterator)
说明:创建一个ArrayList集合来存放学生信息,然后在开头就写上Scanner,以免后续在重复写
包括:
start启动方法:
打印提示
用switch语句完成操作的选择
用循环完成再次回到主界面
public void start(){
while (true) {
System.out.println("------欢迎来到学生管理系统!--------");
System.out.println("1、添加学生");
System.out.println("2、删除学生");
System.out.println("3、修改学生");
System.out.println("4、查看所有学生");
System.out.println("5、退出");
System.out.println("请输入你的操作:");
String line = sc.next();
switch(line){
case "1":
addStudent();
break;
case "2":
deleteStudent();
break;
case "3":
updatestudent();
break;
case "4":
showstudent();
break;
case "5":
System.out.println("已退出,欢迎下次使用!");
return;
default:
System.out.println("你的输入有误!");
}
}
}
4.1 addStudent():添加学生信息操作
创建学生对象s把输入的数据赋值给学生对象的成员变量
显示提示信息,提示要怎么输入
从键盘输入所需的数据
将学生对象添加到studentlist集合中保存
给出添加后的提示
public void addStudent(){
//创建student对象s
Student s = new Student();
String sid;
while(true){
System.out.println("请输入学生的学号:");
sid = sc.next();
boolean flag = isused(sid);
if(flag){
System.out.println("你输入的学号已被占用,请重新输入:");
}
else break;
}
s.setSid(sid);
System.out.println("请输入学生的姓名:");
String name = sc.next();
s.setName(name);
System.out.println("请输入学生的年龄:");
String age = sc.next();
s.setAge(age);
System.out.println("请输入学生的住址:");
String address = sc.next();
s.setAddress(address);
//把s放到studentlist里面
studentlist.add(s);
System.out.println("学生信息录入成功!");
}
4.2 deleteStudent():删除学生信息
显示提示信息
键盘录入要删除的学生学号
用Boolean flag 进行标记
遍历集合将对应学生对象从集合中删除
给出删除成功提示
public void deleteStudent(){
System.out.println("请输入你要删除的学生学号:");
String sid = sc.next();
boolean flag = false;
//删除学生
for (int i = 0; i < studentlist.size(); i++) {
Student s = studentlist.get(i);
if(s.getSid().equals(sid)){
studentlist.remove(i);
flag = true;
break;
}
}
if(flag) System.out.println("删除成功!");
else System.out.println("没有找到你要删除的学号!");
}
4.3 updatestudent():修改学生信息
显示提示信息。
键盘录入要修改的学生学号。
键盘录入要修改的学生信息。
遍历集合修改对应的学生信息。
给出修改成功提示。
public void updatestudent(){
System.out.println("请输入你要修改的学生的学号:");
String sid = sc.next();
for (int i = 0; i < studentlist.size(); i++) {
Student s1 = studentlist.get(i);
if(s1.getSid().equals(sid)){
System.out.println("请输入新的学生的姓名:");
s1.setName(sc.next());
System.out.println("请输入新的学生的年龄:");
s1.setAge(sc.next());
System.out.println("请输入新的学生的住址:");
s1.setAddress(sc.next());
System.out.println("修改学生信息成功!");
return;
}
}
System.out.println("你输入的学号不存在,请重新输入。");
}
4.4 showstudent():展示学生信息
显示学生的信息
public void showstudent(){
if(studentlist.size() == 0){
System.out.println("无学生信息可打印,请先输入学生信息!");
return;
}
for (int i = 0; i < studentlist.size(); i++) {
Student s = studentlist.get(i);
System.out.println(s.getSid()+"-"+s.getName()+"-"+s.getAge()+"-"+s.getAddress());
}
}
4.5 isused(String sid):判断学号重复
定义Boolean类型的方法
遍历集合中学生的成员变量sid
使用return返回
public boolean isused(String sid){
//boolean flag = false;
for (int i = 0; i < studentlist.size(); i++) {
Student s = studentlist.get(i);
if(s.getSid().equals(sid)){
return true;
}
}
return false;
}
五、完整代码
5.1 Student
public class Student {
private String sid;
private String name;
private String age;
private String address;
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
5.2 StudentOpterator
import java.util.ArrayList;
import java.util.Scanner;
public class StudentOpterator {
private ArrayList<Student> studentlist = new ArrayList<>();
Scanner sc = new Scanner(System.in);
//循环回到这里
public void start(){
while (true) {
System.out.println("------欢迎来到学生管理系统!--------");
System.out.println("1、添加学生");
System.out.println("2、删除学生");
System.out.println("3、修改学生");
System.out.println("4、查看所有学生");
System.out.println("5、退出");
System.out.println("请输入你的操作:");
String line = sc.next();
switch(line){
case "1":
addStudent();
break;
case "2":
deleteStudent();
break;
case "3":
updatestudent();
break;
case "4":
showstudent();
break;
case "5":
System.out.println("已退出,欢迎下次使用!");
return;
default:
System.out.println("你的输入有误!");
}
}
}
//添加学生的信息
public void addStudent(){
//创建student对象s
Student s = new Student();
String sid;
while(true){
System.out.println("请输入学生的学号:");
sid = sc.next();
boolean flag = isused(sid);
if(flag){
System.out.println("你输入的学号已被占用,请重新输入:");
}
else break;
}
s.setSid(sid);
System.out.println("请输入学生的姓名:");
String name = sc.next();
s.setName(name);
System.out.println("请输入学生的年龄:");
String age = sc.next();
s.setAge(age);
System.out.println("请输入学生的住址:");
String address = sc.next();
s.setAddress(address);
//把s放到studentlist里面
studentlist.add(s);
System.out.println("学生信息录入成功!");
}
//删除学生的信息
public void deleteStudent(){
System.out.println("请输入你要删除的学生学号:");
String sid = sc.next();
boolean flag = false;
//删除学生
for (int i = 0; i < studentlist.size(); i++) {
Student s = studentlist.get(i);
if(s.getSid().equals(sid)){
studentlist.remove(i);
flag = true;
break;
}
}
if(flag) System.out.println("删除成功!");
else System.out.println("没有找到你要删除的学号!");
}
//修改学生信息
public void updatestudent(){
System.out.println("请输入你要修改的学生的学号:");
String sid = sc.next();
for (int i = 0; i < studentlist.size(); i++) {
Student s1 = studentlist.get(i);
if(s1.getSid().equals(sid)){
System.out.println("请输入新的学生的姓名:");
s1.setName(sc.next());
System.out.println("请输入新的学生的年龄:");
s1.setAge(sc.next());
System.out.println("请输入新的学生的住址:");
s1.setAddress(sc.next());
System.out.println("修改学生信息成功!");
return;
}
}
System.out.println("你输入的学号不存在,请重新输入。");
}
//展示学生的信息
public void showstudent(){
if(studentlist.size() == 0){
System.out.println("无学生信息可打印,请先输入学生信息!");
return;
}
for (int i = 0; i < studentlist.size(); i++) {
Student s = studentlist.get(i);
System.out.println(s.getSid()+"-"+s.getName()+"-"+s.getAge()+"-"+s.getAddress());
}
}
//判断学号是否重复
public boolean isused(String sid){
//boolean flag = false;
for (int i = 0; i < studentlist.size(); i++) {
Student s = studentlist.get(i);
if(s.getSid().equals(sid)){
return true;
}
}
return false;
}
}
5.3 StduentManger
public class StudentManger {
public static void main(String[] args) {
StudentOpterator Opterator = new StudentOpterator();
Opterator.start();
}
}