فایل پایه را از اینجا دریافت کنید

زهرا می‌خواهد بداند که در هر بازه زمانی در سال ۲۰۱۷ چقدر هزینه کرده‌است. اما خواندن اس‌ام‌اس‌ها و نوشتن هزینه‌های هر‌روز بر‌روی کاغذ برای وی طاقت‌فرساست. به همین دلیل از نگین کمک گرفته‌است. نگین برنامه‌نویس اندروید است و تصمیم دارد برنامه‌ای بنویسد که به دوستش کمک کند. اما به دلیل اینکه در اندروید تازه‌کار است دچار مشکل شده‌است و حال از شما کمک می خواهد. برنامه بدین گونه است:

  • با اجرای برنامه، MainActivity اجرا می‌شود و activity_main را نمایش می‌دهد. در این صفحه، جدولی وجود دارد که ۵ تراکنش آخر را بصورت زیر نمایش می‌دهد.

توضیح تصویر

  • با لمس دکمه REPORT صفحه ReportActivity اجرا می‌شود؛ در این صفحه تاریخ ابتدا و انتهای بازه‌ای که قرار است در آن مجموع هزینه های انجام شده حساب شود انتخاب می‌شود. (روزهای ابتدا و انتهای بازه نیز جزئی از بازه هستند.)
  • با فشردن دکمه calculate مجموع هزینه‌ها در بازه انتخاب‌شده محاسبه می‌شود و در TextView با آیدی total که سمت چپ دکمه CALCULATE قراردارد، نشان داده‌می‌شود.
  • پیاده‌سازی برنامه به گونه‌ای است که با دریافت هر پیامک از بانک، اطلاعات آن بطور خودکار به‌عنوان یک رکورد توسط برنامه در یک دیتابیس SQLite ذخیره می‌شود.
  • هربار که برنامه باز می‌شود، لیست ۵ تراکنش آخر (که در MainActivity نشان داده‌می‌شود) بروز شده و ۵ تراکنش آخر را به ترتیب جدید به قدیم (از بالا به پایین) نمایش می‌دهد.
  • پیامک‌های ارسالی توسط بانک، حتی درصورتی‌که برنامه برروی صفحه باز نیست هم باید توسط برنامه در دیتابیس ثبت شوند.
  • ذخیره پیامک‌های دریافتی در دیتابیس با نام transaction و در جدول Transactions انجام می‌شود.
  • شمای جدول Transactions بصورت زیر است:
ColumnId ---> primary key auto Increment
Value ---> NUMERIC
Day ---> NUMERIC
Month ---> NUMERIC
Plain text
  • فرمت پیامک‌های بانکی و خروجی موردنظر هر پیامک به‌شکل زیر است:

ورودی نمونه ۱:

بانک صادرات پایانه فروش:-10,000 حساب:01000 مانده:4,445,164
Plain text

خروجی نمونه ۱:

-10000
Plain text

ورودی نمونه ۲:

بانک صادرات پایانه فروش:443 حساب:01000 مانده:4,445,164
Plain text

خروجی نمونه ۲:

443
Plain text

ورودی نمونه ۳:

بانک صادرات پایانه فروش:567,300 حساب:01000 مانده:4,445,164
Plain text

خروجی نمونه ۳:

567300
Plain text

نکات حیاتی

  • نام انتخابی برای دیتابیس و جدول مورد استفاده را دقیقا برابر با موارد گفته‌شده و بدون هیچ پسوندی انتخاب کنید.
  • برای جلوگیری از بروز خطای ناشی از حجم بالای فایل ارسالی، قبل از ساخت و ارسال فایل zip دقت کنید که پوشه‌های build در این فایل وجود نداشته باشند.
  • آیدی و متن‌های نمایشی موجود در فایل‌های activity_main.xml و report.xml را تغییر ندهید (حذف نکنید).
  • برای نمایش لیست روز‌ها و ماه‌ها در صفحه ReportActivity، به ترتیب از عناصر موجود در dayNum و monthName استفاده کنید.
  • درصورتیکه به دسترسی‌ای نیاز دارید که در نسخه‌های جدید اندروید به شکل متفاوتی از کاربر گرفته‌می‌شود، حتما این تفاوت را درنظر بگیرید و تغییرات لازم را برای زمان شروع برنامه اعمال کنید.
  • دیتابیس را حتما در مسیر پیشفرض قرار‌دهید. (نیازی به دسترسی خواندن و نوشتن برروی حافظه خارجی ندارید)
  • نیازی به ایجاد تغییرات در کلاس Application وجود ندارد و ایجاد تغییر در این کلاس، منجر به کسر لمتیاز می‌شود.
  • برای نمایش پنج تراکنش آخر در جدول صفحه نخست، به موارد زیر دقت کنید:
    • مبلغ بصورت رقم با معنی و بدون علامت , برای جدا کردن ارقام صفر نمایش داده‌می‌شود.
    • برای مبالغ منفی، علامت منفی (-) پشت رقم قرار می‌گیرد اما برای مبالغ مثبت، از کاراکتر + استفاده نمی‌شود.
    • عدد ماه و روز تراکنش بصورت عدد با معنا (بدون صفر مازاد در ابتدای آن‌ها) نمایش داده‌می‌شود.
    • نمایش تاریخ به این صورت است که عدد ماه در سمت چپ و عدد روز در سمت راست آن قرار می‌گیرد و با یک کاراکتر فاصله از هم جدا می‌شوند.

ساختار فایل پایه که برای تکمیل در اختیار شما قرار می‌گیرد، حاوی مسیر زیر است. شما باید فایل‌هایی که با علامت (---->) مشخص شده‌اند را تغییر دهید و پروژه تغییر‌داده‌شده را بعنوان فایل zip که حاوی مسیر زیر است ارسال کنید:

(تغییر فایل‌های تعیین شده در قسمت پایین و افزودن فایل جدید به فایل پایه در پوشه main از مسیر زیر، مانعی ندارد)

app
└───src
    └───main
        │   AndroidManifest.xml
        │
        ├───java
        │   └───com
        │       └───example
        │           └───mahsa_pc
        │               └───financialmesseges
        │                       MainActivity.java       <------
        │                       ReportActivity.java       <------
        │
        └───res
            ├───drawable
            │       button_border.xml
            │       custome_border.xml
            │       layout_border.xml
            │       main_layout_border.xml
            │
            ├───layout
            │       activity_main.xml
            │       report.xml
            │
            ├───mipmap-hdpi
            ├───mipmap-mdpi
            ├───mipmap-xhdpi
            ├───mipmap-xxhdpi
            ├───mipmap-xxxhdpi
            └───values
Plain text

ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.