自己写的第一个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 ...
随机推荐
- win10 ocx控件注册失败的解决办法
首先注意:ocx放在大部分系统目录无法注册,比如program file ,但windows目录可以. 第一步:关闭防火墙 第二步:确定是否缺少控件运行需要的微软运行库或其他运行环境 这里提供一个挺全 ...
- 【XML】学习笔记第三章-namesapce
目录 命名空间 命名空间概述 命名空间语法 命名空间的声明 命名空间作用域 对命名空间的使用 元素对命名空间的使用 属性对命名空间的使用 DTD对命名空间的支持 命名空间 命名空间概述 标记中出现了同 ...
- 【Vue】学习笔记:Vue组件
文末有我看的这个视频的链接. 目录 组件注册 全局注册 组件基础 组件命名规则 template选项 单项数据流 data选项 局部注册 单独配置组件的选项对象 ES6对象属性简写 组件通信 父组件向 ...
- Qt/C++音视频开发74-合并标签图形/生成yolo运算结果图形/文字和图形合并成一个/水印滤镜
一.前言 在使用yolo做人工智能运算后,运算结果除了一个方框,还可能需要增加文字显示在对应方框上,以便标记是何种物体,比如显示是人还是动物,或者还有可能追踪人员,显示该人员的姓名.这种应用场景非常普 ...
- Qt/C++编写监控实时显示和取流回放工具(回放支持切换进度)
一.前言 现在各个监控大厂做的设备,基本上都会支持通过rtsp直接取流显示,而且做的比较好的还支持通过rtsp回放取流,基本上都会约定一个字符串的规则,每个厂家都是不一样的规则,比如回放对应的rtsp ...
- Solution Set - “谁将重力悬空,坠入一场蔚蓝的梦”
目录 0.「NOI Simu.」皮配 1.「BZOJ #4671」异或图 2.「CF 1158F」Density of subarrays 3.「CF 794G」Replace All 4.「UR # ...
- JS 模拟鼠标事件mouse over、click,kepress
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- 第五章 ReentrantLock源码解析
最常用的方式: int a = 12; //注意:通常情况下,这个会设置成一个类变量,比如说Segement中的段锁与copyOnWriteArrayList中的全局锁 final Reentrant ...
- Java API 之集合
1. 包装类 (基本类型中没有多少我们能够使用的方法和属性,为了便捷我们需要自己去写) 针对每一种基本类型提供了对应的类的形式 --- 包装类 byte short int long float ...
- Linux系统设置用户密码规则(复杂密码策略)方法
Linux系统下的用户密码的有效期 可以修改密码可以通过login.defs文件控制.设置密码过期期限(默认情况下,用户的密码永不过期.) 编辑 /etc/login.defs 文件,可以设置当前密码 ...