Java SE应用部分31Java IO操作05IO操作实例讲解之实现简单MIS.docx
- 文档编号:8691742
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:21
- 大小:1.94MB
Java SE应用部分31Java IO操作05IO操作实例讲解之实现简单MIS.docx
《Java SE应用部分31Java IO操作05IO操作实例讲解之实现简单MIS.docx》由会员分享,可在线阅读,更多相关《Java SE应用部分31Java IO操作05IO操作实例讲解之实现简单MIS.docx(21页珍藏版)》请在冰豆网上搜索。
JavaSE应用部分31JavaIO操作05IO操作实例讲解之实现简单MIS
JavaSE应用部分-31.JavaIO操作(05)IO操作实例讲解之实现简单MIS
定义一个Person类,产生一个对象,要求里面有姓名、年龄、成绩属性,之后把此对象保存在文件之中,可以在屏幕上显示人员的信息,也可以修改信息,但是要求有一个完整的菜单出现。
如果完成此程序需要有几个类呢?
1、Person类
2、文件的操作类
3、输入数据的类
4、具体的操作Person的类
使用Eclipse进行开发
先分别定义以下几个类:
Person类
定义Person类属性
PersonOperate类
InputData输入数据类
定义三个方法:
Menu菜单显示类:
FileOperate文件操作类
Main主类测试客户端:
定义好这五个类后我们就要分别写代码哈~
首先是Person类
我们要写上Setter和Getter方法
然后写上两个构造方法
去掉黄色警告CTRL+1
这样Person类就写完了哈~~~
InputData类写代码
所有的输入数据的代码实际上都是很相似的,所以在此处设计一个InputData类,此类专门用于取得输入的各种数据类型。
这样就完成了输入数字的功能,我们在Test中进行验证
Person类完整代码:
packageorg.redking.demo.vo;
importjava.io.Serializable;
@SuppressWarnings("serial")
publicclassPersonimplementsSerializable{
privateStringname;
privateintage;
privatefloatscore;
publicPerson(){}
publicPerson(Stringname,intage,floatscore){
super();
this.name=name;
this.age=age;
this.score=score;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicfloatgetScore(){
returnscore;
}
publicvoidsetScore(floatscore){
this.score=score;
}
publicStringtoString(){
return"姓名:
"+this.name+",年龄:
"+this.age+",成绩:
"+this.score;
}
}
PersonOperate类完整代码:
packageorg.redking.demo.op;
importorg.redking.demo.util.FileOperate;
importorg.redking.demo.util.InputData;
importorg.redking.demo.vo.Person;
publicclassPersonOperate{
privateInputDatainput=null;
publicPersonOperate(){
this.input=newInputData();
}
//完成具体的Person对象操作
publicvoidadd(){
//要使用输入数据的类
Stringname=null;
intage=0;
floatscore=0.0f;
System.out.print("输入姓名:
");
name=this.input.getString();
System.out.print("输入年龄:
");
age=this.input.getInt();
System.out.print("输入成绩:
");
score=this.input.getFloat();
//生成Person对象,把对象保存在文件中
Personp=newPerson(name,age,score);
try{
newFileOperate().save(p);
System.out.println("数据保存成功!
");
}catch(Exceptione){
System.out.println("数据保存失败!
");
}
}
publicvoidshow(){
//从文件中把内容读进来
Personp=null;
try{
p=(Person)newFileOperate().read();
}catch(Exceptione){
System.out.println("内容显示失败,请确定数据是否存在!
");
}
if(p!
=null){
System.out.println(p);
}
}
publicvoidupdate(){
//先将之前的信息查出来
Personp=null;
try{
p=(Person)newFileOperate().read();
}catch(Exceptione){
System.out.println("内容显示失败,请确定数据是否存在!
");
}
if(p!
=null){
Stringname=null;
intage=0;
floatscore=0.0f;
System.out.print("请输入新的姓名(原姓名:
"+p.getName()+")");
name=this.input.getString();
System.out.print("请输入新的年龄(原年龄:
"+p.getAge()+")");
age=this.input.getInt();
System.out.print("请输入新的成绩(原成绩:
"+p.getScore()+")");
score=this.input.getFloat();
//信息重新设置
p.setName(name);
p.setAge(age);
p.setScore(score);
try{
newFileOperate().save(p);
System.out.println("数据更新成功!
");
}catch(Exceptione){
System.out.println("数据更新失败!
");
}
}
}
}
InputData类完整代码:
packageorg.redking.demo.util;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
publicclassInputData{
privateBufferedReaderbuf=null;
publicInputData(){
buf=newBufferedReader(newInputStreamReader(System.in));
};
publicStringgetString(){
Stringstr=null;
try{
str=buf.readLine();
}catch(IOExceptione){}
returnstr;
}
publicintgetInt(){
inttemp=0;
//如果输入的不是数字,至少应该有一个提示,告诉用户输入错了~
//可以使用正则验证
Stringstr=null;
booleanflag=true;
while(flag){
//输入数据
str=this.getString();
if(!
(str.matches("\\d+"))){
//如果输入的不是一个数字,则必须重新输入
System.out.print("输入的内容必须是整数,请重新输入:
");
}else{
//输入的是一个正确的数字,则可以进行转换
temp=Integer.parseInt(str);
//表示退出循环
flag=false;
}
}
returntemp;
}
publicfloatgetFloat(){
floatf=0.0f;
//如果输入的不是数字,至少应该有一个提示,告诉用户输入错了~
//可以使用正则验证
Stringstr=null;
booleanflag=true;
while(flag){
//输入数据
str=this.getString();
if(!
(str.matches("\\d+.?
\\d{1,2}"))){
//如果输入的不是一个数字,则必须重新输入
System.out.print("输入的内容必须是小数(小数点后两位),请重新输入:
");
}else{
//输入的是一个正确的数字,则可以进行转换
f=Float.parseFloat(str);
//表示退出循环
flag=false;
}
}
returnf;
}
}
FileOperate文件操作类完整代码:
packageorg.redking.demo.util;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
publicclassFileOperate{
publicstaticfinalStringFILENAME="E:
\\person.ser";
//把对象保存在文件之中
publicvoidsave(Objectobj){
ObjectOutputStreamout=null;
try{
out=newObjectOutputStream(newFileOutputStream(newFile(FILENAME)));
//写入对象
out.writeObject(obj);
}catch(Exceptione){
try{
throwe;
}catch(Exceptione1){}
}finally{
try{
out.close();
}catch(Exceptione){}
}
}
//把对象从文件之中读出来
publicObjectread()throwsException{
Objectobj=null;
ObjectInputStreaminput=null;
try{
input=newObjectInputStream(newFileInputStream(newFile(FILENAME)));
obj=input.readObject();
}catch(Exceptione){
throwe;
}finally{
try{
input.close();
}catch(Exceptione){}
}
returnobj;
}
}
Menu菜单类完整代码:
packageorg.redking.demo.menu;
importorg.redking.demo.op.PersonOperate;
importorg.redking.demo.util.InputData;
publicclassMenu{
InputDatainput=null;
publicMenu(){
this.input=newInputData();
//循环出现菜单
while(true){
this.show();
}
}
//需要定义的菜单内容
publicvoidshow(){
System.out.println("\t\t\t1、增加人员信息");
System.out.println("\t\t\t2、浏览人员信息");
System.out.println("\t\t\t3、修改人员信息");
Sys
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java SE应用部分31Java IO操作05IO操作实例讲解之实现简单MIS SE 应用 部分 31 IO 操作 05 实例 讲解 实现 简单 MIS