[فایل پایه را از اینجا دریافت کنید](https://blog.quera.ir/wp-content/uploads/2018/05/FinancialMesseges_contestant-1.zip)
زهرا میخواهد بداند که در هر بازه زمانی در سال ۲۰۱۷ چقدر هزینه کردهاست. اما خواندن اساماسها و نوشتن هزینههای هرروز برروی کاغذ برای وی طاقتفرساست. به همین دلیل از نگین کمک گرفتهاست. نگین برنامهنویس اندروید است و تصمیم دارد برنامهای بنویسد که به دوستش کمک کند. اما به دلیل اینکه در اندروید تازهکار است دچار مشکل شدهاست و حال از شما کمک می خواهد.
برنامه بدین گونه است:
+ با اجرای برنامه، ``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
```
+ فرمت پیامکهای بانکی و خروجی موردنظر هر پیامک بهشکل زیر است:
ورودی نمونه ۱:
```
بانک صادرات پایانه فروش:-10,000 حساب:01000 مانده:4,445,164
```    
خروجی نمونه ۱:
```
-10000
```
ورودی نمونه ۲:
```
بانک صادرات پایانه فروش:443 حساب:01000 مانده:4,445,164
```    
خروجی نمونه ۲:
```
443
```
ورودی نمونه ۳:
```
بانک صادرات پایانه فروش:567,300 حساب:01000 مانده:4,445,164
```    
خروجی نمونه ۳:
```
567300
```
# نکات حیاتی
+ نام انتخابی برای دیتابیس و جدول مورد استفاده را **دقیقا** برابر با موارد گفتهشده و **بدون هیچ پسوندی** انتخاب کنید.
+  برای جلوگیری از بروز خطای ناشی از حجم بالای فایل ارسالی، قبل از ساخت و ارسال فایل ``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
```