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操作学习笔记:单人信息管理程序的更多相关文章

  1. 吴裕雄--天生自然JAVAIO操作学习笔记:字符编码与对象序列化

    public class CharSetDemo01{ public static void main(String args[]){ System.out.println("系统默认编码: ...

  2. 吴裕雄--天生自然JAVAIO操作学习笔记:压缩流与回退流

    import java.io.File ; import java.io.FileInputStream ; import java.io.InputStream ; import java.util ...

  3. 吴裕雄--天生自然JAVAIO操作学习笔记:IO操作实例、Scanner、数据操作流与合并流

    import java.io.* ; public class ExecDemo01{ public static void main(String args[]) throws Exception{ ...

  4. 吴裕雄--天生自然JAVAIO操作学习笔记:字节流与字符流操作

    import java.io.* ; public class Copy{ public static void main(String args[]){ if(args.length!=2){ // ...

  5. 吴裕雄--天生自然JAVAIO操作学习笔记:RandomAccessFile

    import java.io.File ; import java.io.RandomAccessFile ; public class RandomAccessFileDemo01{ // 所有的异 ...

  6. 吴裕雄--天生自然JAVAIO操作学习笔记:File类

    import java.io.File ; import java.io.IOException ; public class FileDemo01{ public static void main( ...

  7. 吴裕雄--天生自然JAVAIO操作学习笔记:投票程序

    public class ExecDemo{ public static void main(String args[]){ new Operate() ; } }; import java.io.B ...

  8. 吴裕雄--天生自然JAVAIO操作学习笔记:System类对IO的支持和BuffereRead

    import java.io.OutputStream ; import java.io.IOException ; public class SystemDemo01{ public static ...

  9. 吴裕雄--天生自然JAVAIO操作学习笔记:内存操作流、管道流与打印流操作

    import java.io.* ; class Send implements Runnable{ // 线程类 private PipedOutputStream pos = null ; // ...

随机推荐

  1. 时间同步服务器ntpd的搭建

    如果系统没有默认安装,可以手动安装,一条命令就可以搞定: yum install ntp -y 安装之后修改配置文件: vim /etc/ntp.conf #restrict 127.0.0.1 #r ...

  2. 计算机二级-C语言-程序修改题-190114记录-对整型变量进行取余操作可以取得各个位上的值。

    //给定程序中fun函数的功能是:从低位开始取出长整形变量s中奇数位上的数,依次构成一个新的数放在t中.高位仍在高位,低位仍在低位.例如:当s中的数为7654321时,t中的数为7531. //重难点 ...

  3. 吴裕雄--天生自然Numpy库学习笔记:NumPy 排序、条件刷选函数

    numpy.sort() 函数返回输入数组的排序副本.函数格式如下: numpy.sort(a, axis, kind, order) 参数说明: a: 要排序的数组 axis: 沿着它排序数组的轴, ...

  4. 杭电 1772 cake

    Cake Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  5. 实时监听 mysql 操作,Linux 版

    效果 场景:某数据库新增了某条记录,服务器可以监听到变化的数据与操作,如 增加一条记录: id = 1009,name=''test,number = 11 服务器监听结果: 实现过程 测试过程:数据 ...

  6. MBR扇区故障修复!

    一:进行分区且格式化硬盘 [root@roomc~]#mkfs -t ext4 /dev/sdb1    //格式化sdb1盘 二:模拟破坏/sda主硬盘破坏再修复! [root@roomc~]#mk ...

  7. 扒网站工具 HTTrack Website Copier

    下载地址:http://www.pc6.com/softview/SoftView_30936.html 作者:匿名用户 链接:https://www.zhihu.com/question/34188 ...

  8. python实现队列(queue)

    队列队列是一种先进先出的数据结构,主要操作包括入队,出队.入队的元素加入到对尾,从队头取出出队的元素.这里用列表简单模拟队列,其实现如下: queue()is_empty()size()enqueue ...

  9. Solidity高级用法

    1.内存数组: 将数组与memory结合形成内存数组,在函数调用完后就解释 uint[ ] memory values = new uint[ ](3);//初始化了一个长度为3的内存数组: #内存数 ...

  10. T4 多文件生成说明

    1.安装T4,自动生成文件 Manager.ttinclude <#@ assembly name="System.Core"#> <#@ assembly na ...