自己写的第一个java项目!
项目名为“零钱通”
细节参考
【零基础 快速学Java】韩顺平 零基础30天学会Java
基本版:
1 package project;
2
3 import java.text.SimpleDateFormat;
4 import java.util.Date;
5 import java.util.Scanner;
6
7 public class SmallChangeSys {
8 public static void main(String[] args) {
9 //1.零钱通菜单
10 boolean loop = true;
11 Scanner scanner = new Scanner(System.in);
12 String key = "";
13 //2.零钱通明细
14 String details = "==============零钱通明细==============";
15 //3.收益入账
16 double money = 0;
17 double balance = 0;
18 Date date = null;
19 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//用于日期格式化的
20 //4.零钱通消费
21 String note = "";
22 //5.零钱通退出确认
23 String choice = "";
24 //6.判断金额入账和消费时金额是否合理
25
26 do {
27 System.out.println("==============零钱通菜单==============");
28 System.out.println("\t\t\t1 零钱通明细");
29 System.out.println("\t\t\t2 收益入账");
30 System.out.println("\t\t\t3 消费");
31 System.out.println("\t\t\t4 退 出");
32
33 System.out.println("请选择1-4");
34 key = scanner.next();
35
36 //switch 控制
37 switch (key) {
38 case "1":
39 System.out.println(details);
40 break;
41 case "2":
42 System.out.println("收益入账金额");
43 money = scanner.nextDouble();
44 //money范围校验
45 if (money <= 0) {
46 System.out.println("收益入账金额范围 需要 大于 0");
47 break;
48 }
49 balance += money;
50 //拼接信息到收益入账
51 date = new Date();//获取当前日期
52 details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + balance;
53 break;
54 case "3":
55 System.out.println("3 消费");
56 money = scanner.nextDouble();
57 //money范围校验
58 if (money <= 0 || money > balance) {
59 if (money <= 0){
60 System.out.println("您的消费金额应该 大于 0");
61 break;
62 }else{
63 System.out.println("消费不能透支余额!");
64 break;
65 }
66 }
67
68 System.out.println("消费说明");
69 note = scanner.next();
70 balance -= money;
71 date = new Date();//获取当前日期
72 details += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
73 break;
74 case "4":
75 System.out.println("4 退 出");
76
77 while (true) {
78 System.out.println("你确定要退出吗?y/n");
79 choice = scanner.next();
80 if ("y".equals(choice) || "n".equals(choice)) {
81 break;
82 }
83
84 }
85 //当用户退出while后再判断choice是y还是n,就可以决定是否退出
86 if ("y".equals(choice)) {
87 loop = false;
88 }
89
90 break;
91 default:
92 System.out.println("选择有误,请重新选择");
93 break;
94 }
95 } while (loop);
96 System.out.println("==============退出了零钱通项目==============");
97
98
99 }
100 }
OOP版
SmallChangeSysOOP:
1 package project;
2
3 import java.text.SimpleDateFormat;
4 import java.util.Date;
5 import java.util.Scanner;
6
7 /**
8 * 该类完成零钱通的各个功能
9 * 要求使用OOP(面向对象)
10 */
11 public class SmallChangeSysOOP {
12 //属性
13 //1.零钱通菜单
14 boolean loop = true;
15 Scanner scanner = new Scanner(System.in);
16 String key = "";
17 //2.零钱通明细
18 String details = "==============零钱通明细==============";
19 //3.收益入账
20 double money = 0;
21 double balance = 0;
22 Date date = null;
23 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//用于日期格式化的
24 //4.零钱通消费
25 String note = "";
26 //5.零钱通退出确认
27 String choice = "";
28 //6.判断金额入账和消费时金额是否合理
29
30 //完成零钱通菜单
31 public void mainMenu(){
32 do {
33 System.out.println("============零钱通菜单(OOP)============");
34 System.out.println("\t\t\t1 零钱通明细");
35 System.out.println("\t\t\t2 收益入账");
36 System.out.println("\t\t\t3 消费");
37 System.out.println("\t\t\t4 退 出");
38
39 System.out.println("请选择1-4");
40 key = scanner.next();
41
42 //switch 控制
43 switch (key) {
44 case "1":
45 this.detail();
46 break;
47 case "2":
48 this.income();
49 break;
50 case "3":
51 this.pay();
52 break;
53 case "4":
54 this.exit();
55 break;
56 default:
57 System.out.println("选择有误,请重新选择");
58 break;
59 }
60 } while (loop);
61 }
62 //完成零钱通明细
63 public void detail(){
64 System.out.println(details);
65 }
66 //完成收益入账
67 public void income(){
68 System.out.println("收益入账金额");
69 money = scanner.nextDouble();
70 //money范围校验
71 if (money <= 0) {
72 System.out.println("收益入账金额范围 需要 大于 0");
73 return;//退出方法,不再执行后面的代码
74 }
75 balance += money;
76 //拼接信息到收益入账
77 date = new Date();//获取当前日期
78 details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + balance;
79 }
80 //完成消费
81 public void pay(){
82 System.out.println("3 消费");
83 money = scanner.nextDouble();
84 //money范围校验
85 if (money <= 0 || money > balance) {
86 if (money <= 0){
87 System.out.println("您的消费金额应该 大于 0");
88 return;
89 }else{
90 System.out.println("消费不能透支余额!");
91 return;
92 }
93 }
94
95 System.out.println("消费说明");
96 note = scanner.next();
97 balance -= money;
98 date = new Date();//获取当前日期
99 details += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
100 }
101 //退出
102 public void exit(){
103 System.out.println("4 退 出");
104
105 while (true) {
106 System.out.println("你确定要退出吗?y/n");
107 choice = scanner.next();
108 if ("y".equals(choice) || "n".equals(choice)) {
109 break;
110 }
111
112 }
113 //当用户退出while后再判断choice是y还是n,就可以决定是否退出
114 if ("y".equals(choice)) {
115 loop = false;
116 }
117 }
118
119 }
SmallChangeSysApp:
1 package project;
2
3
4 /**
5 * 直接调用SmallChangeSysOOP对象,显示主菜单
6 */
7 public class SmallChangeSysApp {
8 public static void main(String[] args) {
9 new SmallChangeSysOOP().mainMenu();
10 }
11 }
感谢韩老师精细的视频讲解,推荐新入行的小伙伴学习
链接:【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩_bilibili
自己写的第一个java项目!的更多相关文章
- 作为Java新手,如何才能快速的看透一个Java项目?
前言 技术学习是一个总结.纠错.触类旁通的过程,而不是单纯重复练习的过程,如果你问一个做过5年以上Java的老码农,他们很多人都会有很强的"搬砖感",这种"搬砖感&quo ...
- 初学者如何吃透一个Java项目
不少初学者朋友在学习Java过程中,会对着视频敲Java项目,其中遇到的BUG还能解决,但就是每次敲完一个项目,就感觉很空虚,项目里面的知识点感觉懂了但又好像没懂 这些朋友应该怎样才能掌握一个项目所用 ...
- 在Eclipse中,如何把一个java项目变成web项目
经常在eclipse中导入web项目时,出现转不了项目类型的问题,导入后就是一个java项目.解决步骤:1.进入项目目录,可看到.project文件,打开.2.找到<natures>... ...
- java学习笔记(一):开始第一个java项目
这里使用IntelliJ IDEA 来新建第一个java项目 在新建项目向导,你可以选择你的项目支持的技术,你正在做一个普通的Java项目,只需单击下一步. 下一步,新建一个test的项目. 新建一个 ...
- 【系列教程1】Gradle入门系列二:第一个Java项目
这篇教程的主要内容是讲解如何用Gradle编译和打包一个简单的Java项目. 该Java项目只有一个需求:我们的构建脚本必须创建一个可执行的Jar文件,换句话说,我们必须能够使用命令java -jar ...
- [IntelliJ IDEA入门] 新建一个Java项目
新建一个Project 是否有JDK配置 选择JavaEE 点击Next 项目路径和文件 .idea (directory based) 创建项目的时候自动创建一个 .idea 的项目配置目录来保存项 ...
- Gradle入门(3):构建第一个Java项目
Gradle插件通过引入特定领域的约定和任务来构建你的项目.Java插件是Gradle自身装载的一个插件.Java插件提供的基本功能远比源代码编译和打包多.它为你的项目建立了一个标准的项目布局,并确保 ...
- JetBrains Fleet初体验,如何运行一个java项目
序言 各位好啊,我是会编程的蜗牛,JetBrains 日前宣布其打造的下一代 IDE Fleet 正式推出公共预览版,现已开放下载.作为java开发者,对于JetBrains开发的全家桶可以说是印象深 ...
- 如何创建一个Java项目
目录 新建项目 项目信息配置 创建Java类 编译和运行 新建项目 首先双击eclipse进入到eclipse页面. 菜单"File"下的"New"里" ...
- 一个Java项目的学习
1. java命令行的启动 首先是gradle build 其次是:java -Dabc.appid=1234 -classpath "a.jar:b.jar" com.ctri ...
随机推荐
- 【C#】【平时作业】习题-11-ADO.NET
目录 选择题 简述并举例说明 什么是ADO.NET? 什么是连接字符串? connection对象的作用? commmand对象的作用? dataAdapter对象的作用? DataReader对象的 ...
- Mac下如何添加User到group中
原因: 使用mac的时候需要像linux一样对用户和群组进行操作,但是linux使用的gpasswd和usermod在mac上都不可以使用,mac使用dscl来对group和user操作. 介绍: $ ...
- leetcode 05 回文字符串
leetcode 05 回文字符串 1. 描述 给你一个字符串,找到里面最长的回文字符串 2. 事例 示例 1: 输入:s = "babad" 输出:"bab" ...
- Qt开源作品28-邮件发送工具
一.前言 邮件发送工具是好多年前就开源出来的,核心就是调用最底层socket通信来实现的邮件发送程序,以前用C#写过,微软都封装好的,不知道底层是如何实现的,只知道调用方法,这次用C++实现了下,参考 ...
- springboot~多节点应用里的雪花算法唯一性
雪花算法的唯一性,在单个节点中是可以保证的,对应kubernetes中的应用,如果是横向扩展后,进行多副本的情况下,可能出现重复的ID,这需要我们按着pod_name进行一个workId的生成,我还是 ...
- Solution Set - “一二行诗句相遇,十万颗恒星解体”
目录 0.「集训队互测 2018」Fim4 1.「ABC 294Ex」K-Coloring 2.「NOI Simu.」解码 3.「NOI Simu.」图 4.「NOI Simu.」表达式 5.「ULR ...
- 分布式事务-XA-DTP-TCC-BASE介绍
前言 数据库事务(简称:事务,Transaction)是指数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成. 事务拥有以下四个特性,习惯上被称为 ACID 特性: 原子性(Atomici ...
- javaIO类--File类
-------------------- File类 是对文件系统中文件以及目录(文件夹)进行封装的对象,可以通过面向对象的思想来操作文件和目录(文件夹).File类保存文件或目录的各种元素的信息,包 ...
- 日志数据采集-Flume
1. 前言 在一个完整的离线大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集.结果数据导出.任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop ...
- ctfshow 红包题第七弹 .git
.git源码泄露 发现有后们 flag在上级目录里面 直接Letmein=show_source('../flag.txt');就出来了