零钱通项目
第一个简单的小项目
先使用面向过程编写,再用面向对象重写
零钱通项目需求
具体界面如下图
一共包含4个功能
1.零钱通明细:可以查询入账+消费的流水
2.收益入账:对余额进行充值,输入金额,输出明细
3.消费:顾名思义就是花钱,输入用途和金额,输出明细,并且对金额进行验证,不能出现透支等情况
4.退出:写一个是否确认退出输入y/n的条件
如下图
面向过程编写
创建一些基本的属性
因为刚入门所以采用比较简单的字符串拼接方法来显示流水
Boolean loop=true; //判断是否退出程序
Scanner sc=new Scanner(System.in);
String key=""; //接收数字选择菜单
String details="---------------零钱通明细---------------\n";
double money=0; //接收金额
double balance=0; //余额
String note=""; //消费用途
因为流水要显示日期,所以临时浅学了个Data
Date date=null;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm"); //日期格式化
写一个do-while
来嵌套整个系统
do {
}while (loop);
输出主菜单并且获取用户选择Key
System.out.println("===============零钱通菜单===============");
System.out.println("\t\t\t1 零钱通明细");
System.out.println("\t\t\t2 收益入账");
System.out.println("\t\t\t3 消费");
System.out.println("\t\t\t4 退 出");
System.out.print("请选择(1-4):");
用switch
语句来分别实现4个菜单选项的功能
switch (key){
case "1":
case "2":
case "3":
case "4":
default:
}
功能1:零钱通明细
因为采用字符串拼接所以明细相对简单,直接输出字符串details
即可
case "1":
System.out.println(details);
break;
功能2:收益入账
虽然比较长但其实都是一些简单的功能,if
用来判断充值是否为正数,主要就是details
拼接的问题
case "2":
System.out.print("收益入账金额:");
money=sc.nextDouble(); //接收入账金额
while (true) {
if (money<=0){ //金额验证是否有效
System.out.println("输入有误,请重新输入");
System.out.print("收益入账金额:");
money=sc.nextDouble();
}
else {
break;
}
}
balance+=money; //余额计算
date=new Date(); //时间获取
details+="\n收益入账\t+"+money+"\t"+sdf.format(date)+"\t"+balance; //拼接字符串
System.out.println(details);
break;
功能3:消费
其实功能3和功能2基本一致,复制过来加个用途就能套用,if
判断条件改为判断余额够不够
case "3":
System.out.print("消费用途:");
note=sc.next();
System.out.print("消费金额:");
money=sc.nextDouble();
while (true) {
if (money>balance){
System.out.println("余额不足,请重新输入");
System.out.print("消费用途:");
note=sc.next();
System.out.print("消费金额:");
money=sc.nextDouble();
}
else {
break;
}
}
balance-=money;
date=new Date();
details+="\n"+note+"\t-"+money+"\t"+sdf.format(date)+"\t"+balance;
System.out.println(details);
break;
功能4:退出
常规的退出,利用前面的loop
来退出零钱通系统
System.out.println("是否确认退出,请输入y/n");
note=sc.next();
while(true){
if (note.equals("y")){
loop=false;
break;
}
else if(note.equals("n")){
loop=true;
break;
}
else {
System.out.println("输入有误,请重新输入");
note=sc.next();
}
}
break;
程序退出
美观一点加一句退出项目
System.out.println("===========选择退出了零钱通项目===========");
面向对象编写
下面用OOP来写,其实直接照搬就好了
创建属性
同样的创建属性就不用过多赘述了
创建方法
写了四个方法:
details:输出流水
income:本质就是功能2的代码,下同
pay:功能3
exit:功能4
这里要注意的一点是方法里的退出是return
不是break
所以稍加更改就可以使用了
创建主类
再创建一个主类SmallchangeApp
,完成对SmallChangeSysOOP
的调用即可
总结
OOP更加灵活,用方法来管理各个功能,更容易维护和拓展
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果