Java實(shí)現(xiàn)單人信息管理程序
本文實(shí)例為大家分享了Java實(shí)現(xiàn)單人信息管理程序的具體代碼,供大家參考,具體內(nèi)容如下
對前一個(gè)菜單程序進(jìn)行擴(kuò)充,要求增加一個(gè)人的完整信息,人的信息包括姓名和年齡。保存后也可以修改、刪除、查詢此信息。
可以使用對象序列化保存,需要增加文件操作類,專門負(fù)責(zé)保存和讀取文件的內(nèi)容,并修改 Operate 類,為其增加具體的操作:

文章目錄
一、增加文件操作類
二、 Person 類
三、操作類
一、增加文件操作類
package Chapter_9;
import java.io.*;
//此類專門用于保存和讀取對象
public class FileOperate {
private File file = null;//定義一個(gè)文件對象
public FileOperate(String pathName){//通過構(gòu)造方法傳遞文件路徑
this.file = new File(pathName);//實(shí)例化File對象
}
public boolean save(Object obj) throws Exception{//可以保存對象
ObjectOutputStream oos = null;//對象輸出流
boolean flag = false;//定義操作標(biāo)志位
try{
oos = new ObjectOutputStream(new FileOutputStream(this.file));//實(shí)例化對象輸出流
oos.writeObject(obj);//保存對象
flag = true;
}catch (Exception e){
throw e;//有異常拋出
}finally {
if (oos != null){//判斷對象輸出流對象是否被實(shí)例化
oos.close();//不管是否有異常都要關(guān)閉
}
}
return flag;
}
public Object load()throws Exception{//讀取對象
Object obj = null;//接收保存的對象
ObjectInputStream ois = null;//聲明對象輸入流
try{
ois = new ObjectInputStream(new FileInputStream(this.file));//實(shí)例化對象輸入流
obj = ois.readObject();//讀取對象
}catch (Exception e){
throw e;
}finally {
if (ois !=null){//判斷輸入流是否被實(shí)例化
ois.close();//關(guān)閉輸入流
}
}
return obj;
}
}
程序中的類的功能就是向程序中寫入對象和讀取對象,在操作時(shí)只需要傳入一個(gè)路徑即可
二、 Person 類
import java.io.*;
public class Person implements Serializable {//此類的對象可以被序列化
private String name;
private int age;
public Person(String name,int age){//通過構(gòu)造方法設(shè)置屬性內(nèi)容
this.name = name;
this.age = age;
}
public String toString(){
return "姓名:" + this.name + "; 年齡:" + this.age;
}
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;
}
}
三、操作類
package Chapter_9;
public class Operate {
public static void add(){//增加數(shù)據(jù)操作
InputData input = new InputData();//實(shí)例化輸入數(shù)據(jù)對象
FileOperate fo = new FileOperate("D://test.txt");
String name = input.getString("請輸入姓名:");
int age = input.getInt("請輸入年齡:","年齡必須是數(shù)字!");
Person per = new Person(name,age);//實(shí)例化 Person 對象
try {
fo.save(per);//保存對象
}catch (Exception e){
e.printStackTrace();
}
System.out.println("信息增加成功");
}
public static void delete(){//刪除數(shù)據(jù)操作
FileOperate fo = new FileOperate("D://test.txt");
try{
fo.save(null);//清除對象
}catch (Exception e){
e.printStackTrace();
}
System.out.println("信息刪除成功!");
}
public static void update(){//修改數(shù)據(jù)操作
InputData input = new InputData();//實(shí)例化輸入數(shù)據(jù)對象
FileOperate fo = new FileOperate("D:\\test.txt");
Person per = null;
try{
per = (Person)fo.load();//讀取數(shù)據(jù)
}catch (Exception e1){
e1.printStackTrace();
}
String name = input.getString("請輸入新的姓名(原姓名:" + per.getName() + "):");
int age = input.getInt("請輸入是新的年齡(原年齡:" +
per.getAge() + ")","年齡必須是數(shù)字!");
per = new Person(name,age);//重新實(shí)例化對象
try{
fo.save(per);//重新保存對象
}catch (Exception e){
e.printStackTrace();
}
System.out.println("信息更新成功");
}
public static void find(){
FileOperate fo = new FileOperate("D:\\test.txt");
Person per = null;
try{
per = (Person)fo.load();//讀取對象
}catch (Exception e1){
e1.printStackTrace();
}
System.out.println(per);
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)爬取往期所有雙色球開獎(jiǎng)結(jié)果功能示例
這篇文章主要介紹了Java實(shí)現(xiàn)爬取往期所有雙色球開獎(jiǎng)結(jié)果功能,涉及Java網(wǎng)頁抓取、正則替換、文件讀寫等相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
SpringBoot中@ComponentScan注解過濾排除不加載某個(gè)類的3種方法
這篇文章主要給大家介紹了關(guān)于SpringBoot中@ComponentScan注解過濾排除不加載某個(gè)類的3種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用SpringBoot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-07-07
Java OpenCV4.0.0實(shí)現(xiàn)實(shí)時(shí)人臉識別
這篇文章主要為大家詳細(xì)介紹了Java OpenCV4.0.0實(shí)現(xiàn)實(shí)時(shí)人臉識別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
Java經(jīng)典快排思想以及快排的改進(jìn)講解
今天小編就為大家分享一篇關(guān)于Java經(jīng)典快排思想以及快排的改進(jìn)講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-01-01
一文盤點(diǎn)Java創(chuàng)建實(shí)例對象的方式
Java對象是通過加載、鏈接、初始化三大步驟來完成對象的創(chuàng)建及初始化,那么接下來就說一下Java創(chuàng)建實(shí)例對象的方式有哪幾種,文中并通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下2025-02-02
Java 中的Printstream介紹_動力節(jié)點(diǎn)Java學(xué)院整理
PrintStream 是打印輸出流,它繼承于FilterOutputStream。接下來通過本文給大家介紹Java 中的Printstream,需要的朋友參考下吧2017-05-05
java實(shí)現(xiàn)PPT轉(zhuǎn)化為PDF
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)PPT轉(zhuǎn)化為PDF的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
java并發(fā)學(xué)習(xí)之BlockingQueue實(shí)現(xiàn)生產(chǎn)者消費(fèi)者詳解
這篇文章主要介紹了java并發(fā)學(xué)習(xí)之BlockingQueue實(shí)現(xiàn)生產(chǎn)者消費(fèi)者詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11

