个人账目管理系统(MVC框架)
2015-01-04 12:09
288 查看
package com.tcl.tallyView; import java.util.Scanner; public class PersonTallyMain { public static void main(String[] args) { System.out.println("+----------------------------+"); System.out.println("| |"); System.out.println("| 欢 迎 使 用 个 人 记 账 本 |"); System.out.println("| |"); System.out.println("+----------------------------+"); PersonTallyView ptv = new PersonTallyView(); Scanner sc = new Scanner(System.in); do { System.out.println("----------------------------------"); System.out.println("-- 1.添加 4.查询账目 --"); System.out.println("-- 2.修改 5.查询全部--"); System.out.println("-- 3.删除 0.退出 --"); System.out.println("----------------------------------"); System.out.println("请选择:"); char choose = sc.nextLine().charAt(0); switch (choose) { case '1': // 添加 ptv.addTally(); break; case '2': // 修改 ptv.updateTally(); break; case '3': // 删除 ptv.deleteTally(); break; case '4': // 查询账目 ptv.getOneTally(); break; case '5': // 查询全部 ptv.getAllTallies(); break; case '0': // 退出系统 System.out.println("确定退出么?(按 y 退出,按任意键继续)"); choose = sc.nextLine().charAt(0); if (choose == 'y' || choose == 'Y') { System.out.println("谢谢使用!"); System.exit(0); } break; default: System.out.println("请输入相应的选项!"); break; } } while (true); } } package com.tcl.file; public abstract class FileIO { public abstract void checkFileExist(); public abstract void writeToFile(String content,boolean mide); public abstract String readFromFile(); } package com.tcl.tallyView; import java.util.List; import java.util.Scanner; import com.tcl.operations.TallyOperations; import com.tcl.pojo.Tally; import com.tcl.util.Tools; public class PersonTallyView { Scanner in = new Scanner(System.in); TallyOperations to = new TallyOperations(); Tools tools = new Tools(); public void addTally() { double money; int id = tools.getNewID(); System.out.println("类型(收入 0 支出 1):"); String type = in.nextLine(); do { try { System.out.println("金额:"); money = Double.parseDouble(in.nextLine()); break; } catch (Exception e) { System.out.println("输入金额错误,请重新输入!"); } } while (true); System.out.println("备注:"); String remark = in.nextLine(); String time = tools.getTime(); Tally tally = new Tally(); tally.setId(id); tally.setType(type); tally.setDate(time); tally.setMoney(money); tally.setRemark(remark); to.insertTally(tally); System.out.println("添加成功,信息如下:"); printTop(); print(tally); printBottom(); } public void updateTally() { float money = 0.0f; System.out.println("请输入要修改的流水账号:"); int id = Integer.parseInt(in.nextLine()); Tally tally = to.getOneTally(id); if (tally != null) { printTop(); print(tally); printBottom(); System.out.println("类型(收入 0 支出 1):"); String type = in.nextLine(); do { try { System.out.println("金额:"); money = Float.parseFloat(in.nextLine()); break; } catch (Exception e) { System.out.println("输入金额错误,请重新输入!"); } } while (true); System.out.println("备注:"); String remark = in.nextLine(); String time = tools.getTime(); tally.setId(id); tally.setType(type); tally.setDate(time); tally.setMoney(money); tally.setRemark(remark); to.updateTally(tally); System.out.println("修改成功,信息如下:"); printTop(); print(tally); printBottom(); } else { System.out.println("没有账目记录!"); } } public void deleteTally() { List<Tally> tallyArray = to.getAllTallies(); if (tallyArray.size() <= 0) { System.out.println("没有账目记录!"); return; } System.out.println("请输入要查询的流水账号:"); int id = Integer.parseInt(in.nextLine()); Tally tally = to.getOneTally(id); if (tally != null) { printTop(); print(tally); printBottom(); System.out.println("是否删除?(输入y删除,其他键取消操作)"); String flag = in.nextLine(); if (flag.equalsIgnoreCase("y")) { to.deleteTally(tally.getId()); System.out.println("删除成功!"); } } else { System.out.println("没有账目记录!"); } } public void getAllTallies() { List<Tally> tallyArray = to.getAllTallies(); if (tallyArray.size() <= 0) { System.out.println("没有账目记录!"); return; } printTop(); for (Tally tally : tallyArray) { print(tally); } printBottom(); } public void getOneTally() { List<Tally> tallyArray = to.getAllTallies(); if (tallyArray.size() <= 0) { System.out.println("没有账目记录!"); return; } System.out.println("请输入要查询的流水账号:"); int id = Integer.parseInt(in.nextLine()); Tally tally = to.getOneTally(id); if (tally != null) { printTop(); print(tally); printBottom(); } else { System.out.println("没有账目记录!"); } } private void printTop() { System.out.println("--------------------------------------------"); System.out .println("--流水账号 类型 金额 日期 备注 --"); System.out.println("--------------------------------------------"); } private void printBottom() { System.out.println("--------------------------------------------"); } private void print(Tally tally) { String type = Integer.parseInt(tally.getType()) == 0 ? "收入" : "支出"; System.out.println("--" + tally.getId() + " " + type + " " + tally.getMoney() + " " + tally.getDate() + " " + tally.getRemark() + "--"); } } package com.tcl.file; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class FileIOTxtImpl extends FileIO { public final String FILEPATH = "C:\\personAccount\\"; public final String FILENAME = "account.txt"; File file = new File (FILEPATH+FILENAME);//文件路径字符串 @Override public void checkFileExist() { // TODO Auto-generated method stub File fileDir = new File(FILEPATH); if(!fileDir.exists()){//路径不存在则创建 fileDir.mkdir(); } if(!file.exists()){//文件不存在则创建 try { file.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } @Override public String readFromFile() { String fileString="" ;//读取文件中所有的内容 try { FileReader fr =new FileReader(file); BufferedReader br = new BufferedReader(fr); String line; while((line=br.readLine())!=null){ fileString += line+"\n"; } fr.close(); } catch (Exception e) { e.printStackTrace(); } return fileString; } @Override public void writeToFile(String content, boolean mode) { // TODO Auto-generated method stub try { FileWriter fw = new FileWriter(file,mode); fw.write(content); fw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } package com.tcl.operations; import java.util.List; import com.tcl.pojo.Tally; public abstract class Operations { public abstract void insertTally(Tally tally); public abstract void updateTally(Tally tally); public abstract void deleteTally(int id); public abstract Tally getOneTally(int id); public abstract List<Tally> getAllTallies(); } package com.tcl.operations; import java.util.List; import com.tcl.file.FileIOTxtImpl; import com.tcl.pojo.Tally; import com.tcl.util.Tools; public class TallyOperations extends Operations { public FileIOTxtImpl f = new FileIOTxtImpl(); public Tools tool = new Tools(); public TallyOperations(){ f.checkFileExist(); } @Override public List<Tally> getAllTallies() { // TODO Auto-generated method stub String content = f.readFromFile(); List<Tally> list = tool.stringToList(content); return list; } @Override public Tally getOneTally(int id) { // TODO Auto-generated method stub List<Tally> list = this.getAllTallies(); for(Tally tally:list){ if(id==tally.getId()){ return tally; } } return null; } @Override public void insertTally(Tally tally) { // TODO Auto-generated method stub String newTally = tool.tallyToString(tally); f.writeToFile(newTally, true); } @Override public void updateTally(Tally tally) { // TODO Auto-generated method stub List<Tally> list = this.getAllTallies(); for(int i=0;i<list.size();i++){ if(list.get(i).getId()==tally.getId()){ list.get(i).setType(tally.getType()); list.get(i).setMoney(tally.getMoney()); list.get(i).setRemark(tally.getRemark()); break; } } String data = tool.listToString(list); f.writeToFile(data, false); } @Override public void deleteTally(int id) { // TODO Auto-generated method stub List<Tally> list = this.getAllTallies(); for(int i=0;i<list.size();i++){ if(list.get(i).getId()==id){ list.remove(i); break; } } String data = tool.listToString(list); f.writeToFile(data, false); } } package com.tcl.pojo; public class Tally { private int id; private String type; private double money; private String date; private String remark; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getType() { return type; } public void setType(String type) { this.type = type; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } } package com.tcl.util; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.tcl.file.FileIOTxtImpl; import com.tcl.pojo.Tally; public class Tools { public String getTime() { Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(date); } public List<Tally> stringToList(String content) { String tallyArray[] = content.split("\n"); List<Tally> list = new ArrayList<Tally>(); for (int i = 0; i < tallyArray.length; i++) { String lineArray[] = tallyArray[i].split(" "); Tally tally = new Tally(); tally.setId(Integer.parseInt(lineArray[0])); tally.setType(lineArray[1]); tally.setMoney(Double.parseDouble(lineArray[2])); tally.setDate(lineArray[3]); tally.setRemark(lineArray[4]); list.add(tally); } return list; } public String listToString(List<Tally> list) { String content = ""; for (int i = 0; i < list.size(); i++) { Tally tally = list.get(i); String lineContent = tally.getId() + " " + tally.getType() + " " + tally.getMoney() + " " + tally.getDate() + " " + tally.getRemark() + "\n"; content += lineContent; } return content; } public String tallyToString(Tally tally) { return tally.getId() + " " + tally.getType() + " " + tally.getMoney() + " " + tally.getDate() + " " + tally.getRemark() + "\n"; } public int getNewID() { FileIOTxtImpl fi = new FileIOTxtImpl(); fi.checkFileExist(); String data = fi.readFromFile(); if (data != null && !data.equals("")) { List<Tally> list = this.stringToList(data); Tally tally = list.get(list.size() - 1); int id = tally.getId(); return id + 1; } else return 1; } }
运行结果:
相关文章推荐
- 个人账目管理系统(一)数据库连接
- 实战EdaEagle——个人帐目管理系统(一)
- 王笑媚的毕业设计课题--个人文献管理系统
- 九酷网络个人主页空间管理系统3.0漏洞查找实例
- 想工作室个人信息管理系统
- [源码发布]个人知识库管理系统
- TroyKM个人知识管理系统---开发进度
- 知识点编辑-针式个人知识库管理系统
- Office2007界面风格的绿色软件--针式个人知识库管理系统[V3.5]
- 星光topsales客户管理系统 v1.0 个人版 绿色
- 主界面-针式个人知识库管理系统
- 个人理财帐户管理系统C语言源码
- 开源: 个人财务管理系统文档与源码下载
- 开源: 个人财务管理系统文档与源码下载
- 针式个人知识库管理系统V3.62版帮助目录
- 开发个人财务管理系统(一)建数据库
- 开源: 个人财务管理系统文档与源码下载
- 个人管理系统
- 针式个人知识管理系统帮助:实现您的PKM梦想!
- 知识点评介-针式个人知识库管理系统