Java新手入门项目–零钱通(面向过程版)

导读:本篇文章讲解 Java新手入门项目–零钱通(面向过程版),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

后续还有面向对象版…

零钱通主界面

-----------------零钱通菜单-----------------
               1 零钱通明细
               2 收益入账
               3 消费
               4 退出
请选择(1-4)

收益入账

请选择(1-4)
2
------------------收益入账------------------
请输入收益金额
1000

消费

请选择(1-4)
3
--------------------消费-------------------
请输入消费金额
100
请输入消费地点
麦当劳

零钱通明细

请选择(1-4)
1
-----------------零钱通明细-----------------
收益入账	+1000.0	2022-08-20 17:02:13	余额:1000.0
麦当劳	-100.0	2022-08-20 17:03:24	余额:900.0

退出界面

请选择(1-4)
4
-------------你确定要退出吗?y/n-------------
y
-----------------零钱通退出-----------------

思路分析

首先,设计主界面,需要用户输入1–4时,应该使用if-else-if语句或者switch-case语句,只要不退出,这个界面就会反复显示,所以采用do-while做成死循环
其次,如何使收益入账和消费的记录传入零钱通明细,这里巧妙的使用了字符串拼接,创建了一个字符串对象detail初始化为—————–零钱通明细—————–。
当用户输入1时,将detail输出。
当用户输入2时,将detail进行拼接,detail = detail + “\n收益入账\t+” + money + “\t” + sdf.format(date) + “\t余额:” + balance;
当用户输入3时,也将detail进行拼接,detail = detail + “\n” + note + “\t-” + money + “\t” + sdf.format(date) + “\t余额:” + balance;
这样收益入账和消费的记录就可以传入零钱通明细中。
然后,为了输出时间,引入了两个类java.text.SimpleDateFormat和java.util.Date,java.util.Date是时间,java.text.SimpleDateFormat是修改时间格式
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
输出时间用sdf.format(date),sdf和date是之前创建的属性名,大家可以自由修改。
最后,设计退出界面,在退出的时候需要一次确认,如果输入的不是y或n,就会反复提示,所以采用死循环,如果输入的是y或n,就跳出循环,继续判断。如果是y,就让外层死循环的条件改为false,这样就可以跳出循环,输出—————–零钱通退出—————–,进而结束程序。

最终版本

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class SmallChangeSys {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        boolean loop = true;
        double money = 0;
        double balance = 0;
        String detail = "-----------------零钱通明细-----------------";
        String note = "";
        char c;
        Date date = null;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        do {
            System.out.println("\n-----------------零钱通菜单-----------------");
            System.out.println("               1 零钱通明细");
            System.out.println("               2 收益入账");
            System.out.println("               3 消费");
            System.out.println("               4 退出");
            System.out.println("请选择(1-4)");
            int choose = scanner.nextInt();
            if (choose == 1) {
                System.out.println(detail);
            } else if (choose == 2) {
                System.out.println("------------------收益入账------------------");
                System.out.println("请输入收益金额");
                money = scanner.nextDouble();
                balance = balance + money;
                date = new Date();
                if (money <= 0) {
                    System.out.println("输入有误");
                    break;
                }
                detail = detail + "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t余额:" + balance;
            } else if (choose == 3) {
                System.out.println("--------------------消费-------------------");
                System.out.println("请输入消费金额");
                money = scanner.nextDouble();
                if (money <= 0) {
                    System.out.println("输入有误");
                    break;
                }
                balance = balance - money;
                date = new Date();
                if (balance < 0) {
                    System.out.println("余额不足");
                    break;
                }
                System.out.println("请输入消费地点");
                note = scanner.next();
                detail = detail + "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t余额:" + balance;
            } else if (choose == 4) {
                do {
                    System.out.println("-------------你确定要退出吗?y/n-------------");
                    c = scanner.next().charAt(0);
                    if (c == 'y') {
                        break;
                    } else if (c == 'n') {
                        break;
                    }
                } while (true);
                if (c == 'y') {
                    loop = false;
                } else {
                    loop = true;
                }
            } else {
                System.out.println("输入有误");
            }
        } while (loop);
        System.out.println("-----------------零钱通退出-----------------");
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/120190.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!