栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

java小项目家庭记账程序

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java小项目家庭记账程序

文章目录
  • java小项目家庭记账程序
    • **1.项目目标:**
    • 2.项目需求:
    • 3.具体思路:
    • 4.具体代码:
      • 1.页面:
      • 2.Option_1类:
      • 3.Option_2类:
      • 4.Option_3类:
      • Test类:
    • 5.总结:

java小项目家庭记账程序 1.项目目标:

1.模拟实现一个基于文本界面的家庭记账软件。

2.掌握初步的编程技巧和调试技巧。

3.灵活运用基础知识。

2.项目需求:

1 收支明细

2 登记收入

3 登记支出

4 退 出

请选择(1-4):_

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PYoflv5C-1659009633909)(C:Users20264AppDataRoamingTyporatypora-user-imagesimage-20220728193452612.png)]

3.具体思路:

首先,这个记账的页面只要你不按推出,肯定是会一直存在的,所以,我会考虑用一个while来装这个页面,然后就是对数据的打印等,我想到可以用一个二维数组来装这个数据,并且可以把选项123分别单独写一个类,为了程序的耦合性。

4.具体代码: 1.页面:

这个类实现了进入页面的显示,当用户输入1 2 3 4时,后会得到相应的反应,然后如果输入1234以外的数字和字母,程序会提醒用户输入错误并重新输入。

对输入的字符进行处理(如图1):

将nextInt用try包围起来,如果输入到int以外的字符,就抛出异常,我在catch中再次调用键盘扫描的方法即nextInt(),再次开启扫描。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ZO4d9xU-1659009633911)(C:Users20264AppDataRoamingTyporatypora-user-imagesimage-20220728195319082.png)]

​ 图1

import java.util.InputMismatchException;
import java.util.Scanner;

    public void face (){
        boolean flag = true;
        Scanner sc = new Scanner(System.in);
        int num = 4;
        String[][] acount = new String[10][4];
        int StartMoney = 10000;
        acount[0][0] = "1.收入";
        acount[0][1] = "2.账户总金额";
        acount[0][2] = "3.收支金额";
        acount[0][3] = "说明";
        while (flag){
            System.out.println("-----------------家庭收支记账软件-----------------");
            System.out.println("1.收支明细");
            System.out.println("2.登记收入");
            System.out.println("3.登记支出");
            System.out.println("4.退tt出:请选择1-4");


            try {
                int option = sc.nextInt();
                switch (option){
                    default:
                        System.out.println("输入错误");
                    case 1:
                        System.out.println("收入明细:");
                        new  Option_1().ergodic(acount);//实例化这个选项1这个类,并传入数组。
                        break;
                    case 2:
                        System.out.println("登记收入:");
                        StartMoney =  new Option_2().income(StartMoney,acount);//starMoney初始值为10000,然后每次调用完income方法后会返回一个经过求和以后的一个总金额。
                        System.out.println("总的:"+StartMoney);
                        break;
                    case 3:
                        System.out.println("登记支出:");
                        StartMoney =  new Option_3().outcome(StartMoney,acount);//同option2

                        break;

                    case 4:
                        System.out.println("已退出");
                        flag = false;//将flag修改为false,跳出while循环。
                        break;

                }
            } catch (Exception e){
                sc.next();
                System.out.println("输入错误");
            }

        }
    }
}
2.Option_1类:

这个类里面就是对传入的这个数组进行输出打印,

package com.ccw;

public class Option_1 {

    public Option_1() {
    }

    public static void main(String[] args) {
        String[][] acount = new String[10][4];

        new Option_1().ergodic(acount);
    }
    public void  ergodic(String[][] acount) {

        acount[0][0] = "收入";
        acount[0][1] = "账户总金额";
        acount[0][2] = "收支金额";
        acount[0][3] = "说明";
        for (int i = 0; i < acount.length; i++) { // 8 4

            for (int j = 0; j 
3.Option_2类:
package com.ccw;

import java.util.Scanner;

public class Option_2 {
    int AllMoney ;
    int index;
    int money;
    String str = "+";
    String explain;
    public Option_2() {
        Scanner sc = new Scanner(System.in);
        System.out.println("收入金额");
        money = sc.nextInt();
        System.out.println("说明");
        explain = sc.next();
    }

    public String[][] copy(String[][] acount,int OutMoney){
            String[][] copyacount;
            copyacount = new String[acount.length+1][];
            for (int i = 0; i < acount.length; i++) {
                copyacount[i] = acount[i].clone();
            }
            copyacount[index][0] =  "收入";
            copyacount[index][1] = OutMoney+"" ;
            copyacount[index][2] = str;
            copyacount[index][3] = explain;
        return copyacount;
    }
    public int  income(int OutMoney,String[][] acount){
        OutMoney+=money;
        str = "+"+money;

        for (int i = 0; i < acount.length; i++) {
            if (acount[i][0]==null){
                 index = i ;
                 break;
            }
        }
        if ((index+1)==acount.length){
            
        }

        acount[index][0] =  "收入";
        acount[index][1] = OutMoney+"" ;
        acount[index][2] = str;
        acount[index][3] = explain;

        return OutMoney;
    }

}
4.Option_3类:

这个类和Option2类基本都是差不多 的就不过多解释了。

package com.ccw;

import java.util.Scanner;

public class Option_3 {
    int AllMoney ;
    int index;
    int money;
    String str = "+";
    String explain;
    public Option_3() {
        Scanner sc = new Scanner(System.in);
        System.out.println("支出");
        money = sc.nextInt();
        System.out.println("说明");
        explain = sc.next();
    }

    public String[][] copy(String[][] acount,int OutMoney){
        String[][] copyacount;
        copyacount = new String[acount.length+1][];
        for (int i = 0; i < acount.length; i++) {
            copyacount[i] = acount[i].clone();
        }
        copyacount[index][0] =  "支出";
        copyacount[index][1] = OutMoney+"" ;
        copyacount[index][2] = str;
        copyacount[index][3] = explain;
        return copyacount;
    }
    public int  outcome(int OutMoney,String[][] acount){
        OutMoney-=money;
        str = "-"+money;

        for (int i = 0; i < acount.length; i++) {
            if (acount[i][0]==null){
                index = i ;
                break;
            }
        }
        if ((index+1)==acount.length){

        }

        acount[index][0] =  "支出";
        acount[index][1] = OutMoney+"" ;
        acount[index][2] = str;
        acount[index][3] = explain;

        return OutMoney;
    }
    public void  assignment() {

    }
}
Test类:
public class Test {
    public static void main(String[] args) {
        Option_1 op1 = new Option_1();

        Surface surface = new Surface();
        surface.face();
    }
}//实例化页面的类,并使用face方法加载页面。
5.总结:

项目中并没有做到对这个存放数据的数组的扩容,只有最初初始化数组的时候手动将数组长度调大,希望下次可以改进一下。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1029564.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号