پروژه ی محاسبه درآمد ماهیانه با استفاده از کلاس اسکنر جاوا


در این مرحله از آموزش که با نحوه وارد کردن اطلاعات به درون برنامه خود و همچنین انواع متدهای مورد استفاده در کلاس Scanner آشنا شدیم، نیاز است تا پروژه ای تعریف کنیم تا کاربردی بودن کلاس Scanner بیشتر برای ما روشن شود. فرض کنیم که ما نیاز داریم تا برنامه ای شخصی طراحی کنیم که این امکان را به ما می دهد تا درآمد ماهیانه خود را وارد آن کنیم، سپس مخارج خود همچون اقساط، بدهی ها، هزینه آب و برق و تلفن و غیره را از آن کم کنیم و در نهایت موجودی باقیمانده را به ما نشان دهد. برای این منظور پروژه ای جدید تحت عنوان MyFinancialTurnover ایجاد کرده و کلاسی تحت عنوان Project در آن می سازیم. برای این منظور کد خود را به این صورت شروع می کنیم:

import java.util.Scanner;
class Project {
    public static void main(String[] args) {
	Scanner myScanner = new Scanner(System.in);
	System.out.println("My Financial Turnover");
    }
}

در ابتدا یک شیئ از روی کلاس Scanner به نام myScanner می سازیم سپس از آنجا که نیاز داریم تا عنوان نرم افزاری که طراحی می کنیم روی صفحه به نمایش در آید در دستور ;()System.out.println جمله My Financial Turnover به معنی گردش مالی من را نوشته تا در بخش کنسول به نمایش درآید. حال نیاز داریم تا متغیری از جنس عددی برای میزان درآمد و هزینه های جاری خود در نظر بگیریم. برای این منظور یکی از دو گزینه int و یا double را که قبلا در آموزش انواع متغیرها توضیح داده شد را می توانیم استفاده کنیم. چنانچه بخواهیم این امکان را به خود بدهیم که اعداد اعشاری برای میزان حقوق خود وارد کنیم می بایست از متغیر double استفاده کنیم (مثلا قبض آب معادل با 23000.120 تومان) ولی اگر بخواهیم ورودی های ما به صورت عدد صحیح باشند بایستی از متغیر int استفاده کنیم (مثلاً 2340000 تومان) که در این برنامه ما از متغیرهایی از جنس int استفاده خواهیم کرد.

حال نیاز داریم تا متغیرهایی برای درآمد ماهیانه، اقساط و هزینه های جاری ایجاد کنیم. به منظور جلوگیری از طولانی شدن سورس کد خود، کلیه متغیرها را با یکدیگر ادغام خواهیم کرد و به صورت زیر می نویسیم:

int monthlyIncome, loanPayment, currentExpenses;

حال یک دستور دیگر مبنی بر نوشتن جمله :Please enter your monthly income به معنی لطفا درآمد ماهیانه خود را وارد نمایید: به کد خود به همراه کامنت های مورد نیاز می نویسیم و کد ما به صورت زیر در خواهد آمد:

import java.util.Scanner;
class Project {
    public static void main(String[] args) {
	Scanner myScanner = new Scanner(System.in);
	// The title of the program
	System.out.println("My Financial Turnover");
	// Variables
	int monthlyIncome, loanPayment, currentExpenses;
	// Text to ask for entering your income
	System.out.println("Please enter your monthly income:");
    }
}

جمله :Please enter your monthly income  از ما می خواهد تا عددی را وارد برنامه کنیم، از این رو می بایست مقدار متغیر monthlyIncome که در خط بالا ایجاد کردیم را با استفاده از کلاس Scanner وارد برنامه خود کنیم. برای این منظور کد خود را به شکل زیر تکمیل می کنیم:

import java.util.Scanner;
class Project {
    public static void main(String[] args) {
	Scanner myScanner = new Scanner(System.in);
	// The title of the program
	System.out.println("My Financial Turnover");
	// Variables
	int monthlyIncome, loanPayment, currentExpenses;
	// Code to ask for entering your income
	System.out.println("Please enter your monthly income:");
	monthlyIncome = myScanner.nextInt();
    }
}

در حقیقت ما یک متغیر از جنس int یا عدد صحیح تحت عنوان monthlyIncome ایجاد کرده ایم اما هیچ گونه مقداری برای آن در نظر نگرفته ایم. حال با نوشتن کد ;()monthlyIncome = myScanner.nextInt به برنامه می گوییم که با استفاده از شیئ ساخته شده از روی کلاس Scanner که قبلاً به اسم myScanner ایجاد کردیم، مقداری را از طریق صفحه کلید برای متغیر monthlyIncome در حافظه ذخیره سازد. از سوی دیگر متد ()nextInt نشانگر نوع ورودی است که ما اجازه داریم به برنامه بدهیم و از آنجا که نوع متغیر ما از جنس int است، نوع ورودی هم می بایست از نوع عدد صحیح باشد (به طور مثال اگر نوع متغیر ما از جنس double بود می بایست از متد ()nextDouble استفاده می کردیم.) به همین صورت، برای متغیرهای loadPayment و currentExpenses به معنی به ترتیب پرداخت وام و هزینه های جاری، از کلاس Scanner استفاده می کنیم تا اطلاعات وارد برنامه شوند:

import java.util.Scanner;
class Project {
    public static void main(String[] args) {
	Scanner myScanner = new Scanner(System.in);
	// The title of the program
	System.out.println("My Financial Turnover");
	// Variables
	int monthlyIncome, loanPayment, currentExpenses;
	// Code to ask for entering your income
	System.out.println("Please enter your monthly income:");
	monthlyIncome = myScanner.nextInt();
	// Code to ask for entering your loan payment
	System.out.println("Please enter your loan payment:");
	loanPayment = myScanner.nextInt();
	// Code to ask for entering your current expenses
	System.out.println("Please enter your durrent expenses:");
	currentExpenses = myScanner.nextInt();
    }
}

چنانچه برنامه را اجرا کنیم تصویر زیر را مشاهده خواهیم کرد:

برنامه طراحی شده منتظر خواهد ماند تا ما میزان درآمد ماهیانه خود را وارد کنیم و به مجرد این که عددی از جنس عدد صحیح وارد کردیم، مرحله بعد اجرا می شود و از ما می خواهد تا میزان اقساط پرداختی وام را مشخص کنیم و در نهایت از ما می خواهد تا میزان هزینه های جاری را وارد کنیم. فرض کنیم که فردی ماهیانه 1000000 تومان درآمد دارد و 120000 تومان قسط وام دارد و هزینه های جاری وی 400000 تومان است. در این صورت خروجی برنامه به شکل زیر خواهد بود:


تا اینجای کار ما توانسته ایم با موفقیت اطلاعات ورودی را وارد برنامه خود کنیم اما این در حالی است که ما نیاز داریم تا میزان اقساط ماهیانه و هزینه های جاری را از درآمد ماهیانه کم کنیم و مانده موجودی را نمایش دهیم. برای این منظور می بایست کد خود را به شکل زیر تکمیل کنیم:

import java.util.Scanner;
class Project {
    public static void main(String[] args) {
	Scanner myScanner = new Scanner(System.in);
	// The title of the program
	System.out.println("My Financial Turnover");
	// Variables
	int monthlyIncome, loanPayment, currentExpenses;
	// Code to ask for entering your income
	System.out.println("Please enter your monthly income:");
	monthlyIncome = myScanner.nextInt();
	// Code to ask for entering your loan payment
	System.out.println("Please enter your loan payment:");
	loanPayment = myScanner.nextInt();
	// Code to ask for entering your current expenses
	System.out.println("Please enter your durrent expenses:");
	currentExpenses = myScanner.nextInt();
	// Calculating the remainder
	int result = monthlyIncome - (loanPayment + currentExpenses);
	System.out.println("The left over money equals to: " + result);
    }
}


در حقیقت یک متغیر از جنس int تحت عنوان result به معنی نتیجه ایجاد می کنیم. مقدار این متغیر را درآمد ماهیانه منهای حاصل جمع میزان قسط وام و هزینه های جاری قرار می دهیم. از آنجا که می خواهیم دو عمل اصلی جمع و تفرین با یکدیگر تداخل نداشته باشند حاصل جمع loanPayment و currentExpenses را داخل پرانتز قرار می دهیم که در این صورت برنامه اول مقدار داخل پرانتز را محاسبه کرده و سپس مقدار آن را از monthlyIncome کم می کند. سپس با قرار دادن ;(System.out.println("The left over money equals to: " + result جمله :The left over money equals to به معنی میزان پول باقیمانده معادل است با: را در بخش کنسول به نمایش در می آوریم. یکی از ویژگی های اپراتورها یا همان اعمال اصلی ریاضیاتی ادغام کردن چند چیز علاوه بر محاسبات ریاضیاتی است، از همین رو با قرار دادن علامت + پس از جمله ":The left over money equals to" و نوشتن نام متغیر result می توانیم نتیجه نهایی را به صورت یک string یا رشته به شکل زیر نمایش دهیم:

به طور خلاصه میزان درآمدی که وارد کرده ایم سه میلیون و یکصد هزار تومان است که جمع مخارج (قسط وام و هزینه های جاری) معادل با یک میلیون و دویست هزار تومان از آن کم شده و در نهایت نتیجه حاصل کسر مخارج از درآمد ماهیانه به میزان یک میلیون و نهصد هزار تومان نمایش داده شده است.

در این آموزش توانستیم با موفقیت یک پروژه حسابداری کوچک طراحی کنیم. با کمی ذوق و خلاقیت خواهیم توانست با همین دانش ابتدایی از زبان برنامه نویسی جاوا برنامه های متعددی همچون برنامه محاسبه تناسب قد و وزن یا اصطلاحا BMI، تبدیل سرعت ماشین خود از مایل به کیلومتر، محاسبه هزینه مکالمه تلفنی با خارج از کشور بر حسب دقیقه و بسیاری برنامه های کاربردی دیگر طراحی کنیم.

دانلود فایل‌های تمرین
لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
کاربر میهمان
مجتبیمن یک کاربر مهمان هستم
سلام دوستان
من هر اعدد اعشاری وارد متغییر ها میکنم ارور میده!!!!
Exceptioninrhread "main" "java.util.inputmismatchException....
عبدالحمید ارجمند
عبدالحمید ارجمندAndroid Developer - Java - عاشق گجتهای اپل و مایکــ
میتونید پروژه ی تمرینی دیگری هم بنویسید و اونهم پروژه ی تبدیل واحد هست : مولفه ها : 1- کیلومتر 2- متر 3-سانتی متر 4- میلی متر 5- اینچ 6-مایل . هر کیلومتر 1000 متر ، هر متر 100 سانتی متر ، هر سانتی متر 10 میلیمتر ، هر اینچ 2.54 سانتی متر و هر مایل 1.61 کیلومتر است ، با احتساب خواهید تونست به راحتی متراژ متلوزیون های خونه ، مسیرهای دریای و خیلی چیزهای دیگه رو هم توی برنامه تون بگنجونید . موفق باشید
mostafa
mostafa BlockChain Expert , SmartContract Developer
واقعا عالی بود زبان نوشته ها کاملا برای من که هیچی نمیدونستم قابل فهم بود ازتون نهایت تشکر رو دارم.
کاربر میهمان
Aqilhexمن یک کاربر مهمان هستم
import java.util.scanner;

public class project {

public static void main(string[] args) {

scanner myscanner = new scanner (system.in);

double zamin;
double zohal = 2.54;
double moshtari = 1.08;

system.out.print(\"mohasebeye vazne shoma roye sayarat\\n\\n\");
system.out.print(\"vazne khod ra vared konid : \");
zamin = myscanner.nextdouble();
double zaminmoshtari = zamin * moshtari;
double zaminzohal = zamin * zohal;

system.out.println(\"vazne shoma roye sayareye moshtari: \" +zaminmoshtari);
system.out.println(\"vazne shoma roye sayareye zohal: \" +zaminzohal);


}

}
من تونستم با کلاس سکنر پروژه محسابه وزن روی سیارات رو بنویسم،شاید بدرد دوستان بخوره بتونن بیشتر مطلب رو همونطور که خودم کامل مطلب رو درک کنم بقیه دوستان هم کامل یاد بگیرن،خیلی ممنون واقعا زحمت کشیدین سکان آکادمی
کاربر میهمان
Fffمن یک کاربر مهمان هستم
عکس مربوط به کد bmi
http://bayanbox.ir/download/7877607045084237783/bmi.png

عکس مربوط به کد تبدیل سرعت اتومبیل
http://bayanbox.ir/download/6377343960912071428/speed.png
Mohsen Afkar
Mohsen Afkar
فایل تمرین چرا مشکل داره؟!
yasaman_sh
yasaman_sh
ایا میشود result را به صورت جداگانه حساب نکرد و در داخل print فرمول ان را نوشت؟
Hossein94
Hossein94
چرا دانلود نمیشه؟
M-Yall
M-Yall
از آموزش شیوا و صحیحتون ممنونم . فقط یه سوال داشتم ، بعد از اجرای برنامه هایی که ورودی میخواد Cursor روی قسمت کدنویسی میمونه تا زمانیکه پایین صفحه کلیک کنم.این طبیعیه؟
ASPIRIN
ASPIRIN
سلام . ببخشید این هم عکس برنامه:
http://cdn.persiangig.com/preview/9fre5GR5KW/App.png