零钱通设计需求分析:
1.菜单页面
2.入账
3.消费
4.明细
5.退出
步骤:
1.先设计出大概框架;菜单功能选择页面,新建各个功能的方法
2.细化各个功能
(零钱通明细采用String语句拼接)
class App {
boolean loop = true;
String detail = new String();
String note = new String();
double money = 0;
double balance = 0;
Date date = null;//时间默认的显示是外国的格式
SimpleDateFormat gs = new SimpleDateFormat("yyyy-MM-dd HH:mm");//自定义格式用于时间
Scanner in = new Scanner(System.in);
public void Main(){
do {
System.out.print("--------零钱通--------\n" +
"\t1.零钱通明细\n" +
"\t2.入账\n" +
"\t3.消费\n" +
"\t4.退出\n" +
"请选择功能");
int s = in.nextInt();
switch (s) {
case 1:
this.detail();
break;
case 2:
this.Ruzhang();
break;
case 3:
this.Xiaofei();
break;
case 4:
this.Tuichu();
}
}while(loop);
System.out.println("-------退出了零钱通------");
}
public void detail()
{
System.out.println("-----零钱通明细-----");
System.out.println(detail);
}
public void Ruzhang(){
System.out.println("------入账-------");
System.out.println("收益入账金额:");
money =in.nextDouble();
if(money<=0){
System.out.println("收益入账金额应该大于0");
return;//退出该方法
}
date=new Date();//获取当前的时间
balance+=money;
detail +="入账:"+money+"\t"+gs.format(date)+"\t"+"余额:"+balance+"\n";
}
public void Xiaofei(){
System.out.println("------消费------");
System.out.println("消费金额:");
money=in.nextDouble();
if (money<=0||money>balance){
System.out.println("消费金额应该0-"+balance);
return;
}
balance-=money;
date=new Date();
System.out.println("请输入消费的原因:");
note=in.next();
detail+=note+":"+money+"\t"+gs.format(date)+"\t"+"余额:"+balance+"\n";
}
public void Tuichu(){
String choice="";
while (true){
System.out.println("确定退出嘛? y/n");
choice=in.next();
if(choice.equals("y")||choice.equals("n"))
break; ;
}
if(choice.equals("y")){//"=="在比较基本数据类型时值相等则为true,在比较引用类型时,必须内存地址相等才返回true;
// “equals”指比较字符串的内容;
loop=false;
}
}
}
public class Main {
public static void main(String[] args) {
App app;
app = new App();
app.Main();
}
}