Posted on 2010-11-06 17:24
セ军魂ミ 阅读(305)
评论(0) 编辑 收藏 所属分类:
java技术io编程
按选项选择操作的io小程序
1)、 在主程序中就调用一个Menu方法;
public class Main {
public static void main(String[] args){
new Menu();
}
}
2)、在vo包里包装一个Person类,并实现Serializable接口, 且定义四个属性:姓名,学号,年龄,成绩;
3)、在op包里建立两个类,分别为 FileOperate和InputData,前者主要实现了文件的读、写即保存和输出;后者主要构建了两个方法,一个是字符串的输入 ,另一个是整数的输入,并判断输入的是否为真。
public class FileOperate {
public static final String FILENAME="d:\\person.ser";
//把对象保存在文件之中
public void save(Object obj){
ObjectOutputStream out = null;
try{
out = new ObjectOutputStream(new FileOutputStream(new File(FILENAME)));
//写入对象
out.writeObject(obj);
}catch(Exception e){
try{
throw e;
}catch(Exception e1){}
}
finally{
try{
out.close();
}catch(Exception e){}
}
}
//把对象从文件中读出来
public Object read() throws Exception{
Object obj = null;
ObjectInputStream input = null;
try{
input = new ObjectInputStream(new FileInputStream(new File(FILENAME)));
obj = input.readObject();
}catch(Exception e){
throw e;
}
finally{
try{
input.close();
}catch(Exception e){}
}
return obj;
}
}
public class InputData {
private BufferedReader buf = null;
//将字节的输入流量变为字符流,之后放入缓冲之中
public InputData(){
buf = new BufferedReader(new InputStreamReader(System.in));
};
public String getString(){
String str = null;
try{
str=buf.readLine();
}catch(IOException e){}
return str;
}
public int getInt(){
int temp=0;
//如果输入的不是数字,至少应该有一个提示,告诉用户输入错了
//可以使用正则验证
String str = null;
boolean flag = true;
while(flag){
//输入数据
str = this.getString();
if(!(str.matches("\\d+"))){
//如果输入的不是一个数字,则必须重新输入
System.out.print("输入的内容必须是整数,请你重新输入:");
}
else{
//输入的是一个正确的数字,则可以进行转换
temp=Integer.parseInt(str);
//表示退出循环
flag = false;
}
}
return temp;
}
}
4)、在Menu类里建立控制台的初始信息;
public class Menu {
InputData input = null ;
public Menu(){
this.input=new InputData();
//循环出现菜单
while(true){
this.show();
}
}
//需要定义的菜单内容
public void show(){
System.out.println("\t\t 1、增加人员信息");
System.out.println("\t\t 2、浏览人员信息"); ;
System.out.println("\t\t 3、修改人员信息");
System.out.println("\t\t 4、退出系统");
System.out.print("\n请选择要使用的操作:");
int temp = input.getInt();
switch(temp){
case 1:{
new PersonOperate().add();
break;
}
case 2:{
new PersonOperate().show();
break;
}
case 3:{
new PersonOperate().update();
break;
}
case 4:{
System.out.println("选择的是退出系统");
System.out.println("系统退出");
System.exit(1);
}
default: {
System.out.println("你输入的内容不正确");
break;
}
}
}
}
5)、在PersonOperate类中进行数据的具体操作,完成最终结果的显示即核心;
import com.dr.util.FileOperate;
import com.dr.util.InputData;
import com.dr.vo.Person;
public class PersonOperate {
private InputData input =null;
public PersonOperate(){
this.input=new InputData();
}
//完成具体的Person对象操作
public void add(){
//要使用输入数据的类
String name = null;
String id = null;
int age = 0;
int score = 0;
System.out.print("输入姓名为:");
name = this.input.getString();
System.out.print("输入学号为:");
id = this.input.getString();
System.out.print("输入年龄为:");
age = this.input.getInt();
System.out.print("输入成绩为:");
score = this.input.getInt();
//生成Person对象,把对象保存在文件中
Person p = new Person(name,id,age,score);
try{
new FileOperate().save(p); //io操作层
System.out.println("数据保存成功!");
}catch(Exception e){
System.out.println("数据保存失败!");
}
}
public void show(){
//从文件中把内容读进来
Person p = null;
try{
p = (Person) new FileOperate().read();
}catch(Exception e){
System.out.println("内容显示失败,请确定数据是否存在!");
}
if(p!=null){
System.out.println(p);
}
}
public void update(){
//先将之前的信息查出来
Person p = null;
try{
p = (Person) new FileOperate().read();
}catch(Exception e){
System.out.println("内容显示失败,请确定数据是否存在!");
}
if(p!=null){
String name = null;
String id= null;
int age = 0;
int score=0;
System.out.print("请输入新的姓名(原姓名为:"+p.getName()+")");
name = this.input.getString();
System.out.print("请输入新的学号(原学号为:"+p.getId()+")");
id = this.input.getString();
System.out.print("请输入新的年龄(原年龄为:"+p.getAge()+")");
age = this.input.getInt();
System.out.print("请输入新的成绩(原成绩为:"+p.getScore()+")");
score = this.input.getInt();
//信息重新设置
p.setName(name);
p.setId(id);
p.setAge(age);
p.setScore(score);
try{
new FileOperate().save(p);
System.out.println("数据更新成功!");
}catch(Exception e){
System.out.println("数据更新失败!");
}
}
}
}
6)、程序最后的运行结果及方式:
最后希望大家给予点评,我好做修改!谢谢!