前言
一 学生管理系统(简易版)— 使用ArrayList还是有一点繁琐,使用字典会好很多。
下面是需求文档:
思路:我的思路就是数据管理和业务那一套逻辑。下面是解答
先给出项目结构
DataManager
package cn.hjblogs.dataManager;
import cn.hjblogs.business.Student;
import java.util.ArrayList;
public class DataManager {
ArrayList<Student> data_store; // 数据存储器
// 构造方法
public DataManager() {
data_store = new ArrayList<Student>();
}
public ArrayList<Student> getData_store() {
return this.data_store;
}
// 添加学生
public void addStudent(Student student){
data_store.add(student);
}
// 删除学生 by id
public void deleteStudent(String id){
for (int i = 0; i < data_store.size(); i++) {
if (data_store.get(i).getId().equals(id)){
data_store.remove(i);
break;
}
}
}
// 修改学生 by id
public void updateStudent(String id, Student student){
for (int i = 0; i < data_store.size(); i++) {
if (data_store.get(i).getId().equals(id)){
data_store.set(i, student);
break;
}
}
}
// 查询所有学生
public void queryStudent(){
System.out.println("id name age address");
for (int i = 0; i < data_store.size(); i++) {
System.out.print(data_store.get(i).getId() + " " + data_store.get(i).getName() + " " + data_store.get(i).getAge() + " " + data_store.get(i).getAddress());
System.out.println();
}
}
}
Business
package cn.hjblogs.business;
import cn.hjblogs.dataManager.DataManager;
import java.util.Scanner;
public class Business {
DataManager dataManager;
public Business() {
// 实例化数据管理
dataManager = new DataManager();
loop: while (true){
int choice = menu_choice();
switch (choice){
case 1:
addStudent_b();
break;
case 2:
deleteStudent_b();
break;
case 3:
updateStudent_b();
break;
case 4:
queryStudent_b();
break;
case 5:
System.out.println("退出成功!");
break loop; // 退出循环,如果不加标签,只能退出switch,这是一个标签循环(给循环起名字,然后break 标签名,循环取什么名字都可以)
default:
System.out.println("输入错误,请重新输入!");
break;
}
}
}
public int menu_choice(){
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("请输入你的选择:");
Scanner sc = new Scanner(System.in);
return sc.nextInt();
}
// 添加学生
public void addStudent_b(){
// 这里id存在与否,用ArrayList真不好处理,应该用HashMap
while (true){
System.out.println("请输入学生id:");
Scanner sc = new Scanner(System.in);
String id = sc.next();
if (isIdExist(id)){
System.out.println("id已存在,返回主菜单!");
break; // 这里不用continue,因为id已存在,返回主菜单
}
System.out.println("请输入学生姓名:");
String name = sc.next();
System.out.println("请输入学生年龄:");
int age = sc.nextInt();
System.out.println("请输入学生地址:");
String address = sc.next();
Student student = new Student(id, name, age, address);
dataManager.addStudent(student);
System.out.println("添加成功!");
System.out.println("是否继续添加?(y/n)");
String choice = sc.next();
if (choice.equals("n")){
break;
}
}
}
// 删除学生 by id
public void deleteStudent_b(){
while (true){
System.out.println("请输入学生id:");
Scanner sc = new Scanner(System.in);
String id = sc.next();
if (!isIdExist(id)){
System.out.println("id不存在,返回主菜单!");
break; // 这里不用continue,因为id不存在,返回主菜单
}
dataManager.deleteStudent(id);
System.out.println("删除成功!");
System.out.println("是否继续删除?(y/n)");
String choice = sc.next();
if (choice.equals("n")){
break;
}
}
}
// 修改学生 by id
public void updateStudent_b(){
while (true){
System.out.println("请输入学生id:");
Scanner sc = new Scanner(System.in);
String id = sc.next();
if (!isIdExist(id)){
System.out.println("id不存在,返回主菜单!");
break; // 这里不用continue,因为id不存在,返回主菜单
}
System.out.println("请输入学生姓名:");
String name = sc.next();
System.out.println("请输入学生年龄:");
int age = sc.nextInt();
System.out.println("请输入学生地址:");
String address = sc.next();
Student student = new Student(id, name, age, address);
dataManager.updateStudent(id, student);
System.out.println("修改成功!");
System.out.println("是否继续修改?(y/n)");
String choice = sc.next();
if (choice.equals("n")){
break;
}
}
}
// 查询所有学生
public void queryStudent_b(){
dataManager.queryStudent();
}
public boolean isIdExist(String id){
for (int i = 0; i < dataManager.getData_store().size(); i++) {
if (dataManager.getData_store().get(i).getId().equals(id)){
return true;
}
}
return false;
}
}
Student
package cn.hjblogs.business;
public class Student {
// 成员变量
String id;
String name;
int age;
String address;
// 构造方法
public Student(String id, String name, int age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return this.id;
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
public String getAddress() {
return this.address;
}
}
Test
package cn.hjblogs.business;
public class Test {
public static void main(String[] args) {
Business business = new Business();
}
}
上面代码所有测试均通过。
二 学生管理系统(升级版):在上面简易版的上面继续添加登录注册等功能
需求如下:
思路:新增一个用户类并增加上述功能即可。(有时间可以写写看,其实换汤不换药)
可以将学生业务写到一个StudentBusiness里面,用户业务写到UserBusess里面,再用一个总Business管理所有业务。