1,用户端采集或者录入或者生成业务数据
2,将业务数据放入集合,按照业务需求,进行数据管理操作
3,将集合的数据放入数据库
难点:怎么遍历HashMap得到键和值
// 获取 所有的 entry对象 entrySet
Set<Map.Entry<String,String>> entrySet = map.entrySet();
// 遍历得到每一个entry对象
for (Map.Entry<String, String> entry : entrySet) {
// 解析
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+"的CP是:"+value);
实现删除功能出现的异常问题
在迭代器进行迭代的时候不能对集合的长度进行改变,否则
会报错:java.util.ConcurrentModificationException
如果单纯的是使用for循环,就没有问题,这个问题只是出现在了迭代器中
演示:
for (Map.Entry<Integer,Student> entry: entrySet) {
if(id == entry.getKey()){
stuMap.remove(id);
flag = true;
break; //跳出迭代器循环,防止出现异常
}
}
实现修改功能出现的学号问题
//保存原id
int temp = id;
//还原id
stuMap.get(entry.getKey()).setStu_id(temp);
//ID计数器减一
student.count--;
1.学生类
package test0728.demo1;
/**
* 学生类
*/
public class Student {
public static int count = 0; //学号计数器
private int stu_id; //学号
private String stu_name; //姓名
private Integer stu_age; //年龄
private String stu_place; //籍贯
private Long stu_tel; //电话号码
private Integer stu_score; //分数
public Student() {
}
public Student(String stu_name, Integer stu_age, String stu_place, Long stu_tel, Integer stu_score) {
//每产生一个学生对象,学号加一
count ++;
stu_id = count;
this.stu_name = stu_name;
this.stu_age = stu_age;
this.stu_place = stu_place;
this.stu_tel = stu_tel;
this.stu_score = stu_score;
}
public static int getCount() {
return count;
}
public static void setCount(int count) {
Student.count = count;
}
public int getStu_id() {
return stu_id;
}
public void setStu_id(int stu_id) {
this.stu_id = stu_id;
}
public String getStu_name() {
return stu_name;
}
public void setStu_name(String stu_name) {
this.stu_name = stu_name;
}
public Integer getStu_age() {
return stu_age;
}
public void setStu_age(Integer stu_age) {
this.stu_age = stu_age;
}
public String getStu_place() {
return stu_place;
}
public void setStu_place(String stu_place) {
this.stu_place = stu_place;
}
public Long getStu_tel() {
return stu_tel;
}
public void setStu_tel(Long stu_tel) {
this.stu_tel = stu_tel;
}
public Integer getStu_score() {
return stu_score;
}
public void setStu_score(Integer stu_score) {
this.stu_score = stu_score;
}
@Override
public String toString() {
return "学号:" + stu_id + " 姓名:" + stu_name + " 年龄:" + stu_age + " 籍贯:" + stu_place + " 电话:" + stu_tel + " 分数:" + stu_score;
}
@Override
public boolean equals(Object obj) {
if(obj != null && obj instanceof Student) {
Student stu = (Student)obj;
if(this.stu_name == stu.getStu_name()) {
return true;
}
}
return false;
}
}
2.学生业务类
package test0728.demo1;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
/**
* 学生业务类
*/
public class StudentService {
private Map<Integer,Student> stuMap = new HashMap(); //学生集合
private Set<Map.Entry<Integer,Student>> entrySet = stuMap.entrySet(); //获取所有entry对象(难点)
private Student student; //学生
private Scanner sc = new Scanner(System.in); //键盘扫描器
private boolean flag; //标记
//录入学员
public void insert() {
System.out.println("请输入新增学员姓名:");
String name = sc.next();
System.out.println("请输入新增学员年龄:");
Integer age = sc.nextInt();
System.out.println("请输入新增学员籍贯:");
String place = sc.next();
System.out.println("请输入新增学员电话:");
Long tel = sc.nextLong();
System.out.println("请输入新增学员分数:");
Integer score = sc.nextInt();
student = new Student(name,age,place,tel,score);
stuMap.put(student.getStu_id(),student);
System.out.println("恭喜你,录入学员成功!");
}
//删除指定学员(容易出异常)
public void delete() {
flag = false;
System.out.println("请输入要删除的学员的学号:");
int id = sc.nextInt();
for (Map.Entry<Integer,Student> entry: entrySet) {
if(id == entry.getKey()){
stuMap.remove(id);
flag = true;
break; //跳出迭代器循环,防止出现异常
}
}
if(flag) {
System.out.println("恭喜你,删除学员成功!");
} else {
System.out.println("对不起,没有找到要删除的学员!");
}
}
//修改学员信息(按照学号,注意学号问题)
public void update() {
flag = false;
System.out.println("请输入要修改的学员的学号:");
int id = sc.nextInt();
for (Map.Entry<Integer,Student> entry: entrySet) {
if(id == entry.getKey()){
//保存原id
int temp = id;
System.out.println("请输入新增学员姓名:");
String name = sc.next();
System.out.println("请输入新增学员年龄:");
Integer age = sc.nextInt();
System.out.println("请输入新增学员籍贯:");
String place = sc.next();
System.out.println("请输入新增学员电话:");
Long tel = sc.nextLong();
System.out.println("请输入新增学员分数:");
Integer score = sc.nextInt();
student = new Student(name,age,place,tel,score);
stuMap.replace(entry.getKey(),student);
//还原id
stuMap.get(entry.getKey()).setStu_id(temp);
//ID计数器减一
student.count--;
flag = true;
break;
}
}
if(flag) {
System.out.println("恭喜你,修改学员成功!");
} else {
System.out.println("对不起,没有找到要修改的学员!");
}
}
//查询学员信息(按照学号)
public void select() {
flag = false;
System.out.println("请输入需要查询的学员学号:");
int id = sc.nextInt();
for (Map.Entry<Integer,Student> entry: entrySet) {
if(id == entry.getKey()){
System.out.println("恭喜你,查询学员成功!");
System.out.println(stuMap.get(entry.getKey()));
flag = true;
break;
}
}
if(!flag) {
System.out.println("对不起,没有找到要查询的学员!");
}
}
//打印所有学员信息
public void printStudent() {
System.out.println("恭喜你,打印所有学员成功!");
for (Map.Entry<Integer,Student> entry: entrySet) {
System.out.println(stuMap.get(entry.getKey()));
}
}
//学生管理系统菜单
public void menu() {
StudentService stuService = new StudentService();
System.out.println("欢迎来到学生管理系统!");
while (true) {
System.out.println();
System.out.println("1.增 2.删 3.改 4.查 5.打印 (其他指令.退出系统)");
System.out.println("请输入你的指令:");
String order = sc.next(); //指令
switch(order) {
case "1":
stuService.insert();
break;
case "2":
stuService.delete();
break;
case "3":
stuService.update();
break;
case "4":
stuService.select();
break;
case "5":
stuService.printStudent();
break;
default:
System.out.println("退出系统成功,期待你下次使用!");
return;
}
}
}
}
3.测试类
package test0728.demo1;
/*
* 测试类
* 作业:
* 1,用户端采集或者录入或者生成业务数据
* 2,将业务数据放入集合,按照业务需求,进行数据管理操作
* 3,将集合的数据放入数据库
*
* 学院管理系统完成 .
*/
public class Test {
public static void main(String[] args) {
StudentService stuService = new StudentService();
stuService.menu();
}
}
欢迎来到学生管理系统!
1.增 2.删 3.改 4.查 5.打印 (其他指令.退出系统)
请输入你的指令:
1
请输入新增学员姓名:
qy
请输入新增学员年龄:
19
请输入新增学员籍贯:
长沙
请输入新增学员电话:
152
请输入新增学员分数:
99
恭喜你,录入学员成功!
1.增 2.删 3.改 4.查 5.打印 (其他指令.退出系统)
请输入你的指令:
1
请输入新增学员姓名:
qy
请输入新增学员年龄:
19
请输入新增学员籍贯:
长沙
请输入新增学员电话:
152
请输入新增学员分数:
99
恭喜你,录入学员成功!
1.增 2.删 3.改 4.查 5.打印 (其他指令.退出系统)
请输入你的指令:
1
请输入新增学员姓名:
QY
请输入新增学员年龄:
20
请输入新增学员籍贯:
邵阳
请输入新增学员电话:
188
请输入新增学员分数:
90
恭喜你,录入学员成功!
1.增 2.删 3.改 4.查 5.打印 (其他指令.退出系统)
请输入你的指令:
5
恭喜你,打印所有学员成功!
学号:1 姓名:qy 年龄:19 籍贯:长沙 电话:152 分数:99
学号:2 姓名:qy 年龄:19 籍贯:长沙 电话:152 分数:99
学号:3 姓名:QY 年龄:20 籍贯:邵阳 电话:188 分数:90
1.增 2.删 3.改 4.查 5.打印 (其他指令.退出系统)
请输入你的指令:
2
请输入要删除的学员的学号:
2
恭喜你,删除学员成功!
1.增 2.删 3.改 4.查 5.打印 (其他指令.退出系统)
请输入你的指令:
5
恭喜你,打印所有学员成功!
学号:1 姓名:qy 年龄:19 籍贯:长沙 电话:152 分数:99
学号:3 姓名:QY 年龄:20 籍贯:邵阳 电话:188 分数:90
1.增 2.删 3.改 4.查 5.打印 (其他指令.退出系统)
请输入你的指令:
3
请输入要修改的学员的学号:
3
请输入新增学员姓名:
QY
请输入新增学员年龄:
19
请输入新增学员籍贯:
长沙
请输入新增学员电话:
188
请输入新增学员分数:
100
恭喜你,修改学员成功!
1.增 2.删 3.改 4.查 5.打印 (其他指令.退出系统)
请输入你的指令:
5
恭喜你,打印所有学员成功!
学号:1 姓名:qy 年龄:19 籍贯:长沙 电话:152 分数:99
学号:3 姓名:QY 年龄:19 籍贯:长沙 电话:188 分数:100
1.增 2.删 3.改 4.查 5.打印 (其他指令.退出系统)
请输入你的指令:
4
请输入需要查询的学员学号:
3
恭喜你,查询学员成功!
学号:3 姓名:QY 年龄:19 籍贯:长沙 电话:188 分数:100
1.增 2.删 3.改 4.查 5.打印 (其他指令.退出系统)
请输入你的指令:
exit
退出系统成功,期待你下次使用!