零钱通项目

一 , 零钱通明细

    思路  : 1.  先完成显示菜单,并且可以选择菜单,给出对应提示

        2.完成零钱通明细

        3. 完成收益入账

        4. 消费

        5. 退出  

        6. 用户输入4退出时。给出提示” 你确定要退出吗? y/n ,必须输入正确的 y /n ,否则循环输入指令

        7,在收益入账和消费时,判断金额是否合理

  面向过程进行编程:

 1 public class SmallChangeSys {
 2     public static void main(String[] args) {
 3         //定义相关变量
 4         boolean loop = true;
 5         Scanner scanner = new Scanner(System.in);
 6         String key = "";
 7         //1.完成零钱通明细
 8 //        1》可以把零钱通收益入账和消费保存到数组2》可以使用对象  3> String拼接
 9         String details = "--------------零钱通明细---------------";
10         //  2. 收益入账
11         double money = 0; //定义收益入账
12         double balance = 0; //余额
13         Date date =null;
14         SimpleDateFormat sid = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
15 //        3  消费
16 //        定义变量  消费的理由
17         String note = "";
18 //        4   定义一个变量    使用while + break  完成判断
19         String choice= "";
20          //菜单显示
21         do {
22             System.out.println("\n==================零钱通菜单=================");
23             System.out.println("\t\t\t\t1. 零钱通明细");
24             System.out.println("\t\t\t\t2. 收益入账");
25             System.out.println("\t\t\t\t3. 消费");
26             System.out.println("\t\t\t\t4. 退       出");
27             System.out.println("请选择(1——4):");
28             key = scanner.next();
29             switch (key){
30                 case "1":
31                     System.out.println(details);
32                     break;
33                 case "2":
34                     System.out.println("收益入账金额:");
35                     money = scanner.nextDouble();
36                     //money进行校验  编程思想  找出不正确的金额条件 然后给出提示,就直接给出break
37                     if (money < 0 ){
38                         System.out.println("请输入正确的金额 >0");
39                         break;
40                     }
41                     balance += money;
42                     date = new Date();
43                     details += "\n收益入\t +" + money + "\t" + sid.format(date) + "\t" + balance;
44                     break;
45                 case "3":
46                     System.out.println("请输入消费金额:");
47                     money = scanner.nextDouble();
48                     //money校验
49                     if (money < 0 || money > balance){
50                         System.out.println("你的消费金额应该在 0 ~" + balance);
51                         break;
52                     }
53                     System.out.println("请输入消费去向");
54                     note = scanner.next();
55                     balance -= money; //在余额中减去消费的金额
56                     date = new Date();  //获取当前的日期
57                     details += "\n" + note + "\t-" + money + "\t" + sid.format(date) + "\t" + balance;
58                     break;
59                 case "4":
60                     while (true) {   //直到输出y/n位为止
61                         System.out.println("你确定要退出吗?y/n");
62                         choice = scanner.next();
63                         if ("y".equals(choice) || "n".equals(choice)){
64                             break;
65                         }
66                     }
67                     if (choice.equals("y")){ //当输入的是y时
68                         loop = false;
69                     }
70                     break;
71                 default:
72                     System.out.println("你输入的不对");
73             }
74         }while (loop);
75         System.out.println("退出了零钱通系统");
76     }
77 }

知识点:1》 do ...whie 的使用  2》字符串的拼接保存数据  3》金额的校验   4》Switch 的使用 

      5》  while...true  和  if  的综合使用判断结束     6》日期的应用     7 》变量的定义及设计

 

 

面向oop思想进行编程

  

public class SmallChangeOop {
    //定义相关变量
    boolean loop = true;
    Scanner scanner = new Scanner(System.in);
    String key = "";
    //1.完成零钱通明细
//        1》可以把零钱通收益入账和消费保存到数组2》可以使用对象  3> String拼接
    String details = "--------------零钱通明细---------------";
    //  2. 收益入账
    double money = 0; //定义收益入账
    double balance = 0; //余额
    Date date =null;
    SimpleDateFormat sid = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //        3  消费
//        定义变量  消费的理由
    String note = "";
    //        4   定义一个变量    使用while + break  完成判断
    String choice= "";
    public void menuTest(){
        do {
            System.out.println("\n==================oop零钱通菜单=================");
            System.out.println("\t\t\t\t1. 零钱通明细");
            System.out.println("\t\t\t\t2. 收益入账");
            System.out.println("\t\t\t\t3. 消费");
            System.out.println("\t\t\t\t4. 退       出");
            System.out.println("请选择(1——4):");
            key = scanner.next();
            switch (key){
                case "1":
                    details();
                    break;
                case "2":
                    shouYi();
                    break;
                case "3":
                    pay();
                    break;
                case "4":
                    exit();
                    break;
                default:
                    System.out.println("你输入的不对");
            }
        }while (loop);
        System.out.println("退出了零钱通系统");
    }
    public void details(){
        System.out.println(details);
        return;
    }
    public void shouYi(){
        System.out.println("收益入账金额:");
        money = scanner.nextDouble();
        //money进行校验  编程思想  找出不正确的金额条件 然后给出提示,就直接给出break
        if (money < 0 ){
            System.out.println("请输入正确的金额 >0");
            return;
        }
        balance += money;
        date = new Date();
        details += "\n收益入\t +" + money + "\t" + sid.format(date) + "\t" + balance;
    }
    public void pay(){
        System.out.println("请输入消费金额:");
        money = scanner.nextDouble();
        //money校验
        if (money < 0 || money > balance){
            System.out.println("你的消费金额应该在 0 ~" + balance);
            return;
        }
        System.out.println("请输入消费去向");
        note = scanner.next();
        balance -= money; //在余额中减去消费的金额
        date = new Date();  //获取当前的日期
        details += "\n" + note + "\t-" + money + "\t" + sid.format(date) + "\t" + balance;
    }
    public void exit(){
        while (true) {   //直到输出y/n位为止
            System.out.println("你确定要退出吗?y/n");
            choice = scanner.next();
            if ("y".equals(choice) || "n".equals(choice)){
                break;
            }
        }
        if (choice.equals("y")){ //当输入的是y时
            loop = false;
        }
    }
}
//======================================================================================================================================================================
public class SmallChangeApp {
    public static void main(String[] args) {
        new SmallChangeOop().menuTest();
    }
}

  面向oop思想总结 : 把变量全部封装成属性  ,把功能全部封装成一个方法,外部类随时可以调用,更加简单方便

        

posted @ 2022-12-02 21:04  阿文程序猿  阅读(109)  评论(0)    收藏  举报