首页 新闻 赞助 找找看

java 的一个ATM项目问题阻碍了我一天到现在还没有想出来求指教

0
悬赏园豆:5 [已解决问题] 解决于 2019-06-12 13:51

我在写一个关于ATM取款机的项目,由于没有数据库我就用了文件来代替数据库
但是我却出现了一个问题困扰了我一天。我发现我用存钱功能时它的HashMap集合里面的金钱数没有发生改变,而且我将他们写入文件后 看到金钱数没有改变 而且存入的格式和我想的不一样 如下
原来的格式:
小明-000-1233
小红-012-1235
存入后:
小明-000-1233.0
小明-000-1233.0小红-012-1235.0
不仅格式不一样 而且还多了个小明

代码如下:

public class AtmPoson {
private String name;
private String password;
private Float money;
public AtmPoson() {};
public AtmPoson(String name,String password, Float money) {
this.setName(name);
this.setPassword(password);
this.setMoney(money);

}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}
public Float getMoney() {
    return money;
}
public void setMoney(Float money) {
    this.money = money;
}

}

package LEI;
////登录
////存钱
////取钱
////转账
////
public class ATM {
Shuju shuju=new Shuju();

//存钱
public String savaMoney(String name,Float savamoney) {
    AtmPoson poson =shuju.transfer().get(name);
    poson.setMoney(poson.getMoney()+savamoney);
    shuju.setMap(poson.getName(), poson);
    shuju.writeIn(shuju.transfer());
    
    
    return "存钱成功,总金额为"+poson.getMoney();
}

package LEI;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class Shuju {

//将文件信息转化为HashMap集合
public HashMap<String,AtmPoson> transfer(){
    HashMap<String, AtmPoson>hm=new HashMap<String, AtmPoson>();
    File file=null;
    FileReader fd=null;
    BufferedReader reader=null;
    try {
        file=new File("src\\LEI\\atmziliao.txt");
        fd = new FileReader(file);
        reader=new BufferedReader(fd);
        String str;
        StringBuffer sf=new StringBuffer();
        
        while((str=reader.readLine())!=null) {
            sf.append(str+'\n');
            String[] value=str.split("-");
            AtmPoson poson=new AtmPoson(value[0],value[1],Float.parseFloat(value[2]));
            hm.put(value[0], poson);
            
        }
        
        
        //System.out.println(sf);
        
    } catch (IOException e) {
        // TODO 自动生成的 catch 块
        e.printStackTrace();
    }finally {
        try {
            reader.close();
        } catch (IOException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }
    return hm;

}
//修改HashMap集合
public void setMap(String name,AtmPoson poson) {
this.transfer().put(name, poson);
}
//将Hashmap写入文件
public void writeIn(HashMap<String,AtmPoson> hm) {
File file=null;
FileWriter fw=null;
BufferedWriter bw=null;

    try {
        file=new File("src\\LEI\\atmziliao.txt");
        fw=new FileWriter(file);
        bw=new BufferedWriter(fw);
        StringBuilder builder=new StringBuilder();
        Set<String>keys=hm.keySet();
        Iterator<String>it=keys.iterator();
        
        while(it.hasNext()) {
            String Key=it.next();
            AtmPoson value =hm.get(Key);
            builder.append(value.getName());
            builder.append("-");
            builder.append(value.getPassword());
            builder.append("-");
            builder.append(value.getMoney());
            bw.write(builder.toString());
            bw.newLine();
            bw.flush();
            
        }
        
    } catch (IOException e) {
        // TODO 自动生成的 catch 块
        e.printStackTrace();
    }finally {
        try {
            bw.close();
        } catch (IOException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }
}

}

public class Test1 {
public static void main(String[]args) {

    ATM atm=new ATM();

    System.out.println(atm.savaMoney("小明", (float) 1000.0));
        }

}

知冬的主页 知冬 | 菜鸟二级 | 园豆:209
提问于:2019-05-15 18:31
< >
分享
最佳答案
0

这应该是跟数据库的事务回滚有关系把

收获园豆:5
刘下来 | 小虾三级 |园豆:919 | 2019-05-15 19:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册