吴裕雄--天生自然JAVAIO操作学习笔记:单人信息管理程序
import java.io.* ;
public class ExecDemo03{
public static void main(String args[]) throws Exception{
new Menu() ;
}
};
import java.io.File ;
import java.io.FileInputStream ;
import java.io.FileOutputStream ;
import java.io.ObjectInputStream ;
import java.io.ObjectOutputStream ;
public class FileOperate{ // 此类专门用于保存和读取
private File file = null ; // 定义文件对象
public FileOperate(String pathName){ // 通过 构造传递文件路径
this.file = new File(pathName) ;
}
public boolean save(Object obj) throws Exception{ // 保存对象
ObjectOutputStream oos = null ; // 对象输出流
boolean flag = false ; // 定义操作标志位
try{
oos = new ObjectOutputStream(new FileOutputStream(this.file)) ; // 实例化对象输出流
oos.writeObject(obj) ; // 写入对象
flag = true ;
}catch(Exception e){
throw e ; // 有异常交给被调用处处理
}finally{
if(oos!=null){
oos.close() ;
}
}
return flag ;
}
public Object load() throws Exception{ // 读取对象
Object obj = null ; // 接收读取的内容
ObjectInputStream ois = null ;
try{
ois = new ObjectInputStream(new FileInputStream(this.file)) ; // 实例化对象输入流
obj = ois.readObject() ; // 读取对象
}catch(Exception e){
throw e ;
}finally{
if(ois!=null){
ois.close() ; // 关闭
}
}
return obj ;
}
};
import java.io.* ;
import java.util.* ;
import java.text.* ;
public class InputData{
private BufferedReader buf = null ;
public InputData(){// 只要输入数据就要使用此语句
this.buf = new BufferedReader(new InputStreamReader(System.in)) ;
}
public String getString(String info){ // 得到字符串信息
String temp = null ;
System.out.print(info) ; // 打印提示信息
try{
temp = this.buf.readLine() ; // 接收数据
}catch(IOException e){
e.printStackTrace() ;
}
return temp ;
}
public int getInt(String info,String err){ // 得到一个整数的输入数据
int temp = 0 ;
String str = null ;
boolean flag = true ; // 定义一个标记位
while(flag){
str = this.getString(info) ; // 接收数据
if(str.matches("^\\d+$")){ // 判断是否由数字组成
temp = Integer.parseInt(str) ; // 转型
flag = false ; // 结束循环
}else{
System.out.println(err) ; // 打印错误信息
}
}
return temp ;
}
public float getFloat(String info,String err){ // 得到一个小数的输入数据
float temp = 0 ;
String str = null ;
boolean flag = true ; // 定义一个标记位
while(flag){
str = this.getString(info) ; // 接收数据
if(str.matches("^\\d+.?\\d+$")){ // 判断是否由数字组成
temp = Float.parseFloat(str) ; // 转型
flag = false ; // 结束循环
}else{
System.out.println(err) ; // 打印错误信息
}
}
return temp ;
}
public Date getDate(String info,String err){ // 得到一个小数的输入数据
Date temp = null ;
String str = null ;
boolean flag = true ; // 定义一个标记位
while(flag){
str = this.getString(info) ; // 接收数据
if(str.matches("^\\d{4}-\\d{2}-\\d{2}$")){ // 判断是否由数字组成
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;
try{
temp = sdf.parse(str) ; // 将字符串变为Date型数据
}catch(Exception e){}
flag = false ; // 结束循环
}else{
System.out.println(err) ; // 打印错误信息
}
}
return temp ;
}
};
public class Menu{
    public Menu(){
        while(true){
            this.show() ;        // 无限制调用菜单的显示
        }
    }
    public void show(){
        System.out.println("===== Xxx系统 =====") ;
        System.out.println("    [1]、增加数据") ;
        System.out.println("    [2]、删除数据") ;
        System.out.println("    [3]、修改数据") ;
        System.out.println("    [4]、查看数据") ;
        System.out.println("    [0]、系统退出\n") ;
        InputData input = new InputData() ;
        int i = input.getInt("请选择:","请输入正确的选项!") ;
        switch(i){
            case 1:{
                Operate.add() ;        // 调用增加操作
                break ;
            }
            case 2:{
                Operate.delete() ;    // 调用删除操作
                break ;
            }
            case 3:{
                Operate.update() ;    // 调用更新操作
                break ;
            }
            case 4:{
                Operate.find() ;        // 调用查看操作
                break ;
            }
            case 0:{
                System.exit(1) ;        // 系统退出
                break ;
            }
            default:{
                System.out.println("请选择正确的操作!") ;
            }
        }
    }
};
public class Operate{
    public static void add(){    // 增加操作
        InputData input = new InputData() ;        // 实例化输入数据对象
        FileOperate fo = new FileOperate("d:\\test.per") ;
        String name = input.getString("请输入姓名:") ;
        int age = input.getInt("请输入年龄:" , "年龄必须是数字!") ;
        Person per = new Person(name,age) ;    // 实例化Person对象
        try{
            fo.save(per) ;    // 保存对象
        }catch(Exception e){
            e.printStackTrace() ;
        }
        System.out.println("信息增加成功!") ;
    }
    public static void delete(){    // 删除操作
        FileOperate fo = new FileOperate("d:\\test.per") ;
        try{
            fo.save(null) ;    // 保存对象
        }catch(Exception e){
            e.printStackTrace() ;
        }
        System.out.println("信息删除成功!") ;
    }
    public static void update(){    // 更新操作
        InputData input = new InputData() ;        // 实例化输入数据对象
        FileOperate fo = new FileOperate("d:\\test.per") ;
        Person per = null ;
        try{
            per = (Person)fo.load() ;    // 读取对象
        }catch(Exception e){
            e.printStackTrace() ;
        }
        String name = input.getString("请输入姓名(原姓名:"+per.getName()+"):") ;
        int age = input.getInt("请输入年龄(原年龄:"+per.getAge()+"):" , "年龄必须是数字!") ;
        per = new Person(name,age) ;    // 实例化Person对象
        try{
            fo.save(per) ;    // 保存对象
        }catch(Exception e){
            e.printStackTrace() ;
        }
        System.out.println("信息修改成功!") ;
    }
    public static void find(){    // 查看操作
        FileOperate fo = new FileOperate("d:\\test.per") ;
        Person per = null ;
        try{
            per = (Person)fo.load() ;    // 读取对象
        }catch(Exception e){
            e.printStackTrace() ;
        }
        System.out.println(per) ;
    }
};
import java.io.Serializable ;
public class Person implements Serializable{
private String name ; // 定义name属性
private int age ; // 定义age属性
public Person(String name,int age){
this.name = name;
this.age = age ;
}
public String toString(){
return "姓名:" + this.name + ";年龄:" + this.age ;
}
public void setName(String name){
this.name = name ;
}
public void setAge(int age){
this.age = age ;
}
public String getName(){
return this.name ;
}
public int getAge(){
return this.age ;
}
};
吴裕雄--天生自然JAVAIO操作学习笔记:单人信息管理程序的更多相关文章
- 吴裕雄--天生自然JAVAIO操作学习笔记:字符编码与对象序列化
		public class CharSetDemo01{ public static void main(String args[]){ System.out.println("系统默认编码: ... 
- 吴裕雄--天生自然JAVAIO操作学习笔记:压缩流与回退流
		import java.io.File ; import java.io.FileInputStream ; import java.io.InputStream ; import java.util ... 
- 吴裕雄--天生自然JAVAIO操作学习笔记:IO操作实例、Scanner、数据操作流与合并流
		import java.io.* ; public class ExecDemo01{ public static void main(String args[]) throws Exception{ ... 
- 吴裕雄--天生自然JAVAIO操作学习笔记:字节流与字符流操作
		import java.io.* ; public class Copy{ public static void main(String args[]){ if(args.length!=2){ // ... 
- 吴裕雄--天生自然JAVAIO操作学习笔记:RandomAccessFile
		import java.io.File ; import java.io.RandomAccessFile ; public class RandomAccessFileDemo01{ // 所有的异 ... 
- 吴裕雄--天生自然JAVAIO操作学习笔记:File类
		import java.io.File ; import java.io.IOException ; public class FileDemo01{ public static void main( ... 
- 吴裕雄--天生自然JAVAIO操作学习笔记:投票程序
		public class ExecDemo{ public static void main(String args[]){ new Operate() ; } }; import java.io.B ... 
- 吴裕雄--天生自然JAVAIO操作学习笔记:System类对IO的支持和BuffereRead
		import java.io.OutputStream ; import java.io.IOException ; public class SystemDemo01{ public static ... 
- 吴裕雄--天生自然JAVAIO操作学习笔记:内存操作流、管道流与打印流操作
		import java.io.* ; class Send implements Runnable{ // 线程类 private PipedOutputStream pos = null ; // ... 
随机推荐
- 微信小程序GET 400 (Bad Request)解决方案
			解决了接口的问题,接下来就是请求不正确,得不到数值 400 (Bad Request) 可以用这个方法:wx.request传入的对象参数中的head改一下 wx.request({ header: ... 
- VS2017控制台应用中通过代码连接MySQL数据库
			一,右键单击项目名称,选择属性 二,项目名->属性->c/c+±>常规->附加包含目录 添加路径:C:\Program Files\MySQL\MySQL Server 8.0 ... 
- idea新建项目相关名词意义
			新建项目中的对比 建完之后的项目对比 对比 新建中Artifact的名称对应maven中名字 新建中package的名字对应的是项目中src下package名字 新建中project name的名字对 ... 
- 如何使html中的元素不被选中
			有时候,为了提高用户的体验度,需要使网页中的部分内容防误操作,不被选中,比如今天的商城项目中的一个细节部分: + —号其实是a标签做的,当连续点击多次,就会使符号被选中,这样感觉起来不太好,于是查找解 ... 
- ES-倒排索引
			一.什么事倒排索引 二.倒排索引为什么查询速度快 (1)ES全文检索的底层是使用倒排索引实现的 (2)倒排索引会将文档的内容进行关键词分词,可以使用关键词直接定位到文档的内容 
- MariaDB-Galera部署
			Galera Cluster:集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分别是Percona Xtradb ... 
- 计算机基础- 序列化(Serialization)和持久化(Persistence)的区别
			参考 https://en.wikipedia.org/wiki/Serialization https://en.wikipedia.org/wiki/Persistence_(computer_s ... 
- sqllab less-1
			1.访问sqllab 的less-1 按提示加入http://10.9.2.81/Less-1/?id=1 2. 后面加入单引号,发生报错http://10.9.2.81/Less-1/?id=1‘ ... 
- 看Web视频整理标签笔记
			原来观看web视频,初学html的时候发现记忆不太深刻,所以自己整理了一些笔记,加深记忆且方便忘记时查看.html的规范(遵循)1.一个html文件开始标签和结束标签<html></ ... 
- 关于java自学的内容以及感受(7.21)
			直接切入正题说一下自学到的内容: 定义合法标识符的规则: 可以由英文字母,数字,_,$组成. 不能数字开头和包含空格. 不可以使用关键字和保留字,但是可以包含关键字和保留字. byte short i ... 
