[فایل پایه را از اینجا دریافت کنید](https://blog.quera.ir/wp-content/uploads/2018/05/FinancialMesseges_contestant-1.zip)
زهرا میخواهد بداند که در هر بازه زمانی در سال ۲۰۱۷ چقدر هزینه کردهاست. اما خواندن اساماسها و نوشتن هزینههای هرروز برروی کاغذ برای وی طاقتفرساست. به همین دلیل از نگین کمک گرفتهاست. نگین برنامهنویس اندروید است و تصمیم دارد برنامهای بنویسد که به دوستش کمک کند. اما به دلیل اینکه در اندروید تازهکار است دچار مشکل شدهاست و حال از شما کمک می خواهد.
برنامه بدین گونه است:
+ با اجرای برنامه، ``MainActivity`` اجرا میشود و ``activity_main`` را نمایش میدهد. در این صفحه، جدولی وجود دارد که ۵ تراکنش آخر را بصورت زیر نمایش میدهد.
![توضیح تصویر](https://blog.quera.ir/wp-content/uploads/2018/05/board-2.png)
+ با لمس دکمه ``REPORT`` صفحه ``ReportActivity`` اجرا میشود؛ در این صفحه تاریخ ابتدا و انتهای بازهای که قرار است در آن مجموع هزینه های انجام شده حساب شود انتخاب میشود. (روزهای ابتدا و انتهای بازه نیز جزئی از بازه هستند.)
+ با فشردن دکمه ``calculate`` مجموع هزینهها در بازه انتخابشده محاسبه میشود و در ``TextView`` با آیدی ``total`` که سمت چپ دکمه ``CALCULATE`` قراردارد، نشان دادهمیشود.
+ پیادهسازی برنامه به گونهای است که با دریافت هر پیامک از بانک، اطلاعات آن بطور خودکار بهعنوان یک رکورد توسط برنامه در یک دیتابیس ``SQLite`` ذخیره میشود.
+ هربار که برنامه باز میشود، لیست ۵ تراکنش آخر (که در ``MainActivity`` نشان دادهمیشود) بروز شده و ۵ تراکنش آخر را به ترتیب جدید به قدیم (از بالا به پایین) نمایش میدهد.
+ پیامکهای ارسالی توسط بانک، حتی درصورتیکه برنامه برروی صفحه باز نیست هم باید توسط برنامه در دیتابیس ثبت شوند.
+ ذخیره پیامکهای دریافتی در دیتابیس با نام ``transaction`` و در جدول ``Transactions`` انجام میشود.
+ شمای جدول ``Transactions`` بصورت زیر است:
```
ColumnId ---> primary key auto Increment
Value ---> number
Day ---> number
Month ---> number
```
+ فرمت پیامکهای بانکی و خروجی موردنظر هر پیامک بهشکل زیر است:
ورودی نمونه ۱:
```
بانک صادرات پایانه فروش:-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`` استفاده کنید.
+ درصورتیکه به دسترسیای نیاز دارید که در نسخههای جدید اندروید به شکل متفاوتی از کاربر گرفتهمیشود، **حتما** این تفاوت را درنظر بگیرید و تغییرات لازم را برای **زمان شروع برنامه** اعمال کنید.
+ دیتابیس را **حتما** در مسیر پیشفرض قراردهید. (نیازی به دسترسی خواندن و نوشتن برروی حافظه خارجی ندارید)
+ برای نمایش پنج تراکنش آخر در جدول صفحه نخست، به موارد زیر دقت کنید:
+ مبلغ بصورت رقم با معنی و **بدون** علامت ```,``` برای جدا کردن ارقام صفر نمایش دادهمیشود.
+ برای مبالغ منفی، علامت منفی (```-```) پشت رقم قرار میگیرد اما برای مبالغ مثبت، از کاراکتر ```+``` **استفاده نمیشود**.
+ عدد ماه و روز تراکنش بصورت عدد با معنا (بدون صفر مازاد در ابتدای آنها) نمایش دادهمیشود.
+ نمایش تاریخ به این صورت است که عدد ماه در سمت چپ و عدد روز در سمت راست آن قرار میگیرد و با یک *کاراکتر فاصله* از هم جدا میشوند.
ساختار فایل پایه که برای تکمیل در اختیار شما قرار میگیرد، حاوی مسیر زیر است. شما باید فایلهایی که با علامت (---->) مشخص شدهاند را تغییر دهید و پروژه تغییردادهشده را بعنوان فایل ``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
```