您的位置:首页 > 其它

个人账目管理系统(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;
}
}

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: