本帖最后由 架构之路 于 2017-12-27 07:35 编辑
到目前为止已经学习了九天的课程,今天课上学习了一个集合版的学生管理系统小项目,课下自己也敲了出来,蛮好玩的,并且自己也做了部分优化,纯属个人见解,不喜勿喷,欢迎交流,谢谢O(∩_∩)O哈哈~,下面分享源码:
先上大家最喜欢的Student类:
package com.itheima_myStudentManager;
public class Student {
private String id;
private String name;
private String age;
private String address;
public Student() {
}
public Student(String id, String name, String age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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;
}
}
再上我们牛B哄哄的主函数及各种"函数"小弟代码:
package com.itheima_myStudentManager;
import java.util.ArrayList;
import java.util.Scanner;
public class MyStudentManager {
/**
* 牛B哄哄的主函数
*/
public static void main(String[] args) {
ArrayList<Student> stuArray = new ArrayList<Student>();
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("提示:请输入对应的数字进行相关操作,谢谢!");
System.out.println("————————————————————");
Scanner sc = new Scanner(System.in);
// String choiceStr = sc.nextLine();
// switch (choiceStr) {
// case "1":
// // 查询所有学生信息
// findAllStudent(stuArray);
// break;
// case "2":
// // 添加学生
// addStudent(stuArray);
// break;
// case "3":
// // 删除学生
// deleteStudent(stuArray);
// break;
// case "4":
// // 修改学生信息
// modifyStudent(stuArray);
// break;
// case "5":
// // 退出系统
// default:
// System.out.println("谢谢使用,再见!");
// return;
/**
* 1.经过测试,用Scanner的nextInt( )方法比nextLine( )方法更好,nextLine( )方法有点小bug
*/
int choiceNumber = sc.nextInt();
switch (choiceNumber) {
case 1:
// 查询所有学生信息
findAllStudent(stuArray);
break;
case 2:
// 添加学生
addStudent(stuArray);
break;
case 3:
// 删除学生
deleteStudent(stuArray);
break;
case 4:
// 修改学生信息
modifyStudent(stuArray);
break;
case 5:
// 退出系统
System.out.println("谢谢使用,再见!");
return;
default:
System.out.println("输入有误,请输入正确的数字!");
}
}
}
/**
* 1.修改学生信息,优化的地方是修改前对集合进行判空,为空则给出提示;
* 2.每一次输入信息后都会对输入的内容进行判断是否为空.
*/
public static void modifyStudent(ArrayList<Student> stuArray) {
if (stuArray.isEmpty()) {
System.out.println("暂没有学生信息,请先添加学生信息或者退出系统!");
return;
}
Scanner sc = new Scanner(System.in);
System.out.println("您正在修改学生信息!");
System.out.println("请输入学号");
while (true) {
String id = sc.nextLine();
int index = checkId(stuArray, id);
if (index != -1) {// id存在
System.out.println("请重新输入姓名");
while (true) {
String name = sc.nextLine();
if (name.trim().equals("")) {
System.out.println("姓名不能为空,请重新输入!");
} else {
System.out.println("请重新输入年龄");
while (true) {
String age = sc.nextLine();
if (age.trim().equals("")) {
System.out.println("年龄不能为空,请重新输入!");
} else {
System.out.println("请重新输入地址");
while (true) {
String address = sc.nextLine();
if (address.trim().equals("")) {
System.out.println("地址不能为空,请重新输入!");
} else {
Student stu = stuArray.get(index);// 拿到要修改的学生对象
stu.setName(name);
stu.setAge(age);
stu.setAddress(address);
System.out.println("修改学生信息成功!");
return;
}
}
}
}
}
}
} else {
System.out.println("您输入的学号不存在,请重新输入学号!");
}
}
}
/**
*1. 删除学生信息,优化的地方是删除前对集合进行判空,为空则给出提示;
*2.增加了删除前的确认动作,避免不小心删除!
*/
public static void deleteStudent(ArrayList<Student> stuArray) {
if (stuArray.isEmpty()) {
System.out.println("暂没有学生信息,请先添加学生信息或者退出系统!");
return;
}
Scanner sc = new Scanner(System.in);
System.out.println("您正在删除学生信息!");
System.out.println("请输入学号");
while (true) {
String id = sc.nextLine();
int index = checkId(stuArray, id);
if (index != -1) {// id存在
System.out.println("您确定删除该学生信息?是or否");
String confirm = sc.nextLine();
if ("是".equals(confirm)) {
stuArray.remove(index);
System.out.println("删除学生信息成功!");
}
break;
} else {
System.out.println("您输入的学号不存在,请重新输入学号!");
}
}
}
/**
*1.添加学生信息,优化的地方是每一次输入后都会对输入内容进行判断是否为空;
*2.每一次输入信息后都会对输入的内容进行判断是否为空.
*/
public static void addStudent(ArrayList<Student> stuArray) {
Scanner sc = new Scanner(System.in);
System.out.println("您正在添加学生信息!");
System.out.println("请输入学号");
while (true) {
String id = sc.nextLine();
if (id.trim().equals("")) {
System.out.println("学号不能为空,请重新输入!");
} else {
if (checkId(stuArray, id) == -1) {// id不存在
System.out.println("请输入姓名");
while (true) {
String name = sc.nextLine();
if (name.trim().equals("")) {
System.out.println("姓名不能为空,请重新输入!");
} else {
System.out.println("请输入年龄");
while (true) {
String age = sc.nextLine();
if (age.trim().equals("")) {
System.out.println("年龄不能为空,请重新输入!");
} else {
System.out.println("请输入地址");
while (true) {
String address = sc.nextLine();
if (address.trim().equals("")) {
System.out.println("地址不能为空,请重新输入!");
} else {
stuArray.add(new Student(id, name, age, address));
System.out.println("添加学生信息成功!");
return;
}
}
}
}
}
}
} else {
System.out.println("您输入的学号已存在,请重新输入学号!");
}
}
}
}
/**
* 查询所有学生信息,优化的地方是查看前对集合进行判空,为空则给出提示.
*/
public static void findAllStudent(ArrayList<Student> stuArray) {
if (stuArray.isEmpty()) {
System.out.println("暂没有学生信息,请先添加学生信息或者退出系统!");
return;
}
System.out.println("学号\t\t姓名\t年龄\t居住地");
for (int i = 0; i < stuArray.size(); i++) {
Student stu = stuArray.get(i);
System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getAddress());
}
}
/**
* 检测输入的id是否存在,优化的地方是独立封装成方法
*/
public static int checkId(ArrayList<Student> stuArray, String id) {
for (int i = 0; i < stuArray.size(); i++) {
Student stu = stuArray.get(i);
if (stu.getId().equals(id)) {
return i;// id存在,返回i
}
}
return -1;// id不存在,返回-1
}
}
|
|