es java 增删改查_【java作业】如何用序列化的方法写增删改查

培训19天的时候老师布置了一个用序列化反序列化做学生管理系统的作业。百度没找到怎么写,后来老师写了一份,我就贴出来吧。50810a8114411a9ff6d4f54cd3ef8a84.png对蠢萌蠢萌、纱布拉基的我来说真TM难

首先你的包和里面的类是跟下图这样的:51aa0e59dd6bf6f11670f607c26feaaa.pngWorkspace

1.先写Student.java吧:

package com.ujiuye.model.vo;

import java.io.Serializable;

public class Student implements Serializable{//用序列化和反序列化流需要实现 Serializable    private static final long serialVersionUID = -2899075793925437728L;//版本号

//姓名 :name ,年龄 age ,学号 stuNo,班级名称 className.

private String name;

private int age;

private String  stuNo;

private String className;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getStuNo() {

return stuNo;

}

public void setStuNo(String stuNo) {

this.stuNo = stuNo;

}

public String getClassName() {

return className;

}

public void setClassName(String className) {

this.className = className;

}

public Student() {

super();

}

public Student(String name, int age, String stuNo, String className) {

super();

this.name = name;

this.age = age;

this.stuNo = stuNo;

this.className = className;

}

@Override

public String toString() {

return "Student [name=" + name + ", age=" + age + ", stuNo=" + stuNo + ", className=" + className + "]";

}

}

2.然后写Test_Main.java,代码如下:

package com.ujiuye.view;

public class Test_Main {

public static void main(String[] args) {

//扫描仪

Scanner sc=new Scanner(System.in);

//dao层对象

StudentDAO s=new StudentDAOImp();

while (true) {

try {

System.out.println("欢迎进入学生管理系统,添加请按1 ,删除请按2,修改请按3,查询请按4,退出请按5");

//选择判断

String choose = sc.next();

//判断 异常的处理

if(!choose.matches("^[1-5]$")) {

throw new RuntimeException("必须输入1-5之间的数字");

}

//字符串转数字

switch (Integer.valueOf(choose)) {

case 1:

s.add();

break;

case 2:

s.delete();

break;

case 3:

s.update();

break;

case 4:

s.query();

break;

case 5:

System.exit(0);

break;//退出jvm

}

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

}

}

3.接口 StudentDAO.java:

package com.ujiuye.model.DAO;

public interface StudentDAO {

public void add();

public void delete();

public void update();

public void query();

}

4.重头戏 工具类 IOUtiles.java:

package com.ujiuye.utils;

import java.io.EOFException;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.util.ArrayList;

import java.util.List;

import org.junit.Test;

import com.ujiuye.model.vo.Student;

public class IOUtils {

//向外读取

public static List getStudent(){

List list=null;

//判断 文件是否存在  防止文件找不到异常

File f=new File("stu.txt");

if(!f.exists()) {

try {

f.createNewFile();

} catch (IOException e) {

e.printStackTrace();

}

}

try(ObjectInputStream ois=new ObjectInputStream(new FileInputStream("stu.txt"))){

//读取

list = (List) ois.readObject();

}catch(EOFException e) {

//EOFException 第一次创建文件后,文件中没有任何内容,会报文件到达末尾异常

//第一次需要创建一个集合对象

list=new ArrayList<>();

}catch(Exception e) {

e.printStackTrace();

}

return list;

}

//向文件中写入

public static void  writeStudent(List list) {

try(ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(new File("stu.txt")))){

oos.writeObject(list);

}catch(Exception e) {

e.printStackTrace();

}

}

//单元测试

@Test

public  void fun() {

List list = getStudent();

System.out.println(list);

}

@Test

public void fun1() {

List list=new ArrayList<>();

list.add(new Student("zs", 18, "1001", "0226java"));

list.add(new Student("ls", 18, "1002", "0226java"));

writeStudent(list);

}

}

5.最后是StudentDAOImp.java,添加跟查询是老师写的,删除跟添加是我自己写的:package com.ujiuye.model.DAO;

import java.util.List;

public class StudentDAOImp implements StudentDAO {

@Override

public void add() {

//添加思路 : ① 读取 然后② 再进行添加

List list = IOUtils.getStudent();

//添加

Scanner sc=new Scanner(System.in);

System.out.println("请输入学生的姓名:");

String name = sc.next();

System.out.println("请输入学生的年龄:");

int age = sc.nextInt();

System.out.println("请输入学生的学号:");

String  stuNo= sc.next();

System.out.println("请输入学生的班级:");

String className = sc.next();

//添加入集合

list.add(new Student(name, age, stuNo, className));

//写入文件。

IOUtils.writeStudent(list);

System.out.println("添加成功");

query();

}

@Override

public void delete() {

List list=IOUtils.getStudent();

if(list.size()==0) {

throw new RuntimeException("对不起,没有数据");

}

Scanner sc=new Scanner(System.in);

System.out.println("请输入要删除的学生信息的学号");

String stuNo=sc.next();

Iterator it=list.iterator();

while(it.hasNext()) {

if(it.next().getStuNo().equals(stuNo)) {

it.remove();

}else {

System.out.println("没有该学号的学生");

}

}

IOUtils.writeStudent(list);

System.out.println("删除成功");

query();

}

@Override

public void update() {

List list=IOUtils.getStudent();

if(list.size()==0) {

throw new RuntimeException("对不起,没有数据");

}

Scanner sc=new Scanner(System.in);

System.out.println("请输入学号");

String stuNo=sc.next();

Iterator it=list.iterator();

while(it.hasNext()) {

if(it.next().getStuNo().equals(stuNo)) {

System.out.println("请输入学生的姓名 :");

String name=sc.next();

System.out.println("请输入学生的年龄 :");

int age=sc.nextInt();

System.out.println("请输入学生的班级名称 :");

String className=sc.next();

it.remove();

list.add(new Student(name, age, stuNo, className));

IOUtils.writeStudent(list);

System.out.println("添加成功");

}else {

System.out.println("没有该学号的学生");

}

}

}

@Override

public void query() {

List list = IOUtils.getStudent();

//判断 如果集合中没有中没有元素,抛出异常返回

if(list.size()==0) {

throw new RuntimeException("对不起,没有数据,请添加后 再查询");

}

//遍历

System.out.println("姓名\t年龄\t学号\t班级名称");

for (Student student : list) {

System.out.println(student.getName()+"\t"+student.getAge()+\t"+student.getStuNo()+"\t"+student.getClassName());

}

}

}

emmm,差不多就是这样。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值