지출 관리 앱 개발 예제

Ionic 예제

중급 난이도
예제 타입
10/30 등록일

지출 관리 앱 개발 예제

중급
태그
실습 프로젝트 데이터관리 Ionic 모바일
## 프로젝트 개요
모바일 앱에서 사용자 지출 내역을 추적하고 통계를 제공하는 실용적인 앱입니다. 입력/출력이 직관적인 인터페이스와 데이터 저장 기능을 포함하여 실제 프로젝트에 바로 활용 가능한 구조입니다.

## 주요 기능
- 지출 항목 추가 및 삭제
- 카테고리별 통계 표시
- 로컬 스토리지 데이터 저장
- 입력 검증 및 오류 처리
- 편집 기능 포함

## 사용 방법
1. Ionic CLI로 프로젝트 생성 후 코드 복사
2. `ionic serve` 명령어로 브라우저에서 실행
3. 앱을 안드로이드/아이오스 장치에 배포하여 테스트
4. 데이터는 로컬 스토리지에 자동 저장됨

## 확장 가능성
- 지출 항목 분류 시각화(차트 추가)
- 월별 통계 기능 구현
- 사용자 계정 관리 시스템 연동
- 알림 기능 추가
코드 예제
// app.component.ts
import { Component } from '@angular/core';
import { IonicModule } from '@ionic/angular';
import { Storage } from '@ionic/storage-angular';

@Component({
  selector: 'app-root',
  templateUrl: 'app.html'
})
export class AppComponent {
  expenses = [];
  newAmount = '';
  newCategory = '';
  errorMessage = '';

  constructor(private storage: Storage) {
    this.initStorage();
  }

  async initStorage() {
    await this.storage.create();
    const savedExpenses = await this.storage.get('expenses') || [];
    this.expenses = savedExpenses;
  }

  addExpense() {
    if (!this.newAmount || !this.newCategory) {
      this.errorMessage = '금액과 카테고리를 입력해주세요';
      return;
    }

    const amount = parseFloat(this.newAmount);
    if (isNaN(amount) || amount <= 0) {
      this.errorMessage = '유효한 금액을 입력해주세요';
      return;
    }

    this.expenses.push({
      id: Date.now(),
      amount: amount,
      category: this.newCategory,
      date: new Date().toISOString()
    });

    this.storage.set('expenses', this.expenses);
    this.resetForm();
  }

  deleteExpense(id: number) {
    this.expenses = this.exp3enses.filter(exp => exp.id !== id);
    this.storage.set('expenses', this.expenses);
  }

  editExpense(index: number) {
    // 편집 기능 구현 시 사용할 메서드
  }

  resetForm() {
    this.newAmount = '';
    this.newCategory = '';
    this.errorMessage = '';
  }
}

// app.html
<ion-app>
  <ion-header>
    <ion-toolbar>
      <ion-title>지출 관리 앱</ion-title>
    </ion-toolbar>
  </ion-header>

  <ion-content class="ion-padding">
    <ion-card>
      <ion-item>
        <ion-label>금액</ion-label>
        <ion-input type="number" [(ngModel)]="newAmount" placeholder="0.00"></ion-input>
      </ion-item>
      <ion-item>
        <ion-label>카테고리</ion-label>
        <ion-input [(ngModel)]="newCategory" placeholder="식비,교통비 등"></ion-input>
      </ion-item>
      <ion-button (click)="addExpense()">지출 추가</ion-button>
      <p *ngIf="errorMessage" color="danger">{{ errorMessage }}</p>
    </ion-card>

    <ion-grid>
      <ion-row *ngFor="let expense of expenses">
        <ion-col> {{ expense.category }} </ion-col>
        <ion-col> {{ expense.amount | currency:"KRW":0 }} </ion-col>
        <ion-col>
          <ion-button (click)="deleteExpense(expense.id)">삭제</ion-button>
        </ion-col>
      </ion-row>
    </ion-grid>
  </ion-content>
</ion-app>
등록일: 2025년 10월 30일 02:37
언어 정보
언어
Ionic
카테고리
Mobile
인기도
#32
학습 팁
코드를 직접 실행해보세요
변수를 바꿔가며 실험해보세요
오류가 나도 포기하지 마세요
다른 예제도 찾아보세요