IRANSYSTEM

ایران سیستم|IRANSYSTEM

IRANSYSTEM

ایران سیستم|IRANSYSTEM

IRANSYSTEM

تیم اموزشی ایران سیستم با هدف اشنا کردن علاقه مندان به اموزش مسائل کامپیوتر. نرم افزار . بازی و ...
در این سایت تلاش کردیم، تمامی نیازهای کاربران برای دسترسی سریع و آسان به محتوای کاربردی در حوزه‌های مختلف را هم‌ زمان فراهم آوریم.
با تشکر

ساخت ماشین حساب ساده

سه شنبه, ۲۴ بهمن ۱۳۹۶، ۰۵:۰۴ ب.ظ
تو این پست ساخت یه برنامه کاربردی ساده رو یاد میگیریم
سعی میکنم تو پست آینده ماشین حسابمون رو حرفه ای ترش کنیم
یه پروژه سی شارپ رو شروع کنید

به پروژه تون 19 تا دکمه اضافه کنید Button 
یه تکست باکس Text Box
و یه لیست باکس List Box
فرمتون رو شبیه شکل زیر درست کنید

اسم دکمه ها و اندازه هاشون رو دستکاری کنین تا شبیه ماشین حساب شه
طرح و زیبایی قالب کار با خودتون ...
خوب قیافه شو درست کردیم حالا بریم سراغ کد نویسیش :)
تکست باکس و لیست باکسمون که دریافت کننده هستن 
پس باید برای دکمه ها تک تک کد وارد کنیم
ابتدا باید چند تا متغییر تعریف کنیم
میدونیم که برای انجام عملیات چهارگانه ریاضی ( - + * / ) ما نیاز به سه تا متغیر داریم
متغیر اول عدد اول رو میگیره متغیر دوم عدد بعدی رو میگیره متغییر سوم جواب رو در خودش جا میده
ترجیحا این متغییر ها رو بصورت رشته ای تعریف میکنم
برای اینکار روی صفحه ی فورم دوبل کلیک میکنیم و بعد از کد زیر
public Form1()
{
InitializeComponent();
}
متغییر هارو به کمک کد زیر تعریف میکنیم
private String a, b, c;
دوتا متغییر از نوع double هم لازم داریم تا به کمکش بتونیم چند تا عدد رو باهم جمع کم ضرب یا تقسیم کنیم
private double abc = 1 , cba = 0;
متغییر abc با مقدار یک برای ضرب و تقسیم و متغییر cba با مقدار صفر برای جمع و کم
یه متغییر دیگه از نوع عدد صحیح با مقدار یک هم اضافه میکنیم
int i = 1;
توضیحات این متغییر رو هنگام استفاده بیان میکنم
بهتره یه متغییر منطقی هم به عنوان کلید به برنامه مون اضافه کنیم تا جلوی ایراد های احتمالی رو بگیریم
private bool key = false;
متغییر های bool متغییر های منطقی هستن که فقط دو حالت دارن (یک یا صفر ، درست یا نادرست ) 
اینجا متغییر key رو اختیاری نادرست تعریف کردم میتونستیم true یا درست هم تعریفش کنیم
در ادامه کار بیشتر متوجه ماجرا میشین ;)
حالا بریم سراغ دکمه هامون ...
ساده ترین کد برای دکمه CL هستش ... روش دوبار کلیک کنید و کد زیر رو براش تعریف کنید
textBox1.Clear();
این دستور تکست باکسمون رو خالی میکنه
دکمه بعدی دکمه بک اسپیسی که درست کردیم هستش
روش دوبل کلیک کنید تا بریم سراغ کدهای این دکمه 
دیگه هر دکمه ای که بحثش شد خودتون بدونید که باید روش دوبل کلیک کنید تا برین قسمت کد نویسی اون دکمه دیگه D: )
textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1);
اگه یکم انگلیسی تون خوب باشه زود متوجه میشین که این کد دستور میده از طول نوشته های تکست باکسمون یکی کم کنه که این خودش باعث میشه کارکتر به کارکتر عمل پاک کردن انجام بشه
کد ساده ی بعدی مال نقطه هه هسسش (همون که کار ممیز رو انجام میده) :)
if (textBox1.Text == "")
textBox1.Text = "0.";
else
textBox1.Text += button57.Text;
شرط کردیم که اگه تکست باکسمون خالی بود توی تکست باکس عبارت .0رو نمایش بده اگه خالی نبود هم به نوشته های تکست باکس نوشته دکمه که . هستش رو اضافه کنه
کد نویسیم هم یکم حالت خسته داره آکولاد ماکولاد خبری نی شما خوشتون اومد خودتون بزارین :)
حالا بریم سراغ عدد ها :
کد عددها شبیه همه فقط فرق خیلی کوچیکی داره اونم اینه که عدد دکمه رو تو کدها عوض میکنیم
من برای جالب تر شدن کارم عدد یک رو برای دکمه یک عدد دو رو برای دکمه دو و .... در نظر گرفتم
برای مثال کد عدد یک به شکل زیر میشه :
if (key)
{
textBox1.Clear();
key = false;
}
textBox1.Text += button1.Text;
شرط کردیم اگه منطقی که تعریف کردیم پا برجا بود (یعنی اگه نادرست بود)
تکست باکس رو خالی کن و منطقمون رو هم همچنان نادرست قرار بده (هیچ کاری انجام نده)
ولی اگه تعریفمون صحت نداشت (یعنی عملی که داریم انجام میدیم درست بود)
به نوشته های موجود در تکست باکسمون نوشته دکمه رو اضافه کن
ما میتونستیم به شکل زیر هم بنویسیم
if (key)
{
textBox1.Clear();
key = false;
}
textBox1.Text += "1";
و یا میتونستیم جای شرط هارو هم عوض کنیم 
در کل سلیقه است دیگه هر مدلی میشه نوشت 
این کد رو برای همه دکمه های عدد (صفر تا نه) تعریف کنید (کد بالایی یا پایینی)
فقط دقت کنید عدد هارو تغییر بدین
در نهایت کدهای تمام ده عدد رو به کمک این تکه کدها تکمیل میکنیم
حالا کد دکمه مثبت منفی رو باید بنویسیم
خوب این دکمه کارش اینه که عدد وارد شده رو منفی یا مثبت کنه
کد زیر رو براش تعریف کنید :
if (textBox1.Text == "")
{
MessageBox.Show("هیچ عددی وارد نشده است");
listBox1.Items.Add("Error");
listBox1.Items.Add("================================");
}
else
{
textBox1.Text = (double.Parse(textBox1.Text) * -1).ToString();
}
شرط کردیم اگه تکست باکس خالی بود پیام اخطار نمایش بده و تو لیست باکسمون هم اخطار رو ثبت کنه
ولی اگه تکست باکس خالی نبود عدد موجود در تکست باکس رو ضرب در منفی یک کنه
حالا کد دکمه های چهار تا عمل ریاضی رو باید وارد کنیم
اول کد دکمه تقسیم :
if (textBox1.Text == "")
{
MessageBox.Show("هیچ عددی وارد نشده است");
listBox1.Items.Add("Error");
listBox1.Items.Add("================================");
}
else
{
listBox1.Items.Add(textBox1.Text);
listBox1.Items.Add("÷");
if (i == 1)
{
abc = double.Parse(textBox1.Text);
i++;
}
else
{
abc /= double.Parse(textBox1.Text);
}
textBox1.Clear();
a = (abc).ToString();
c = "/";
}
قسمت اول شرطمون همون شرط خالی بودن تکست باکس هست که بالاتر راجبش گفتم
قسمت دوم (در غیر این صورت = else )
به لیست باکسمون ابتدا محتویات تکست باکس رو اضافه میکنه
بعد علامت تقسیم رو اضافه میکنه
اگه اولین عدد ورودی بود
مقدار موجود در تکست باکس رو برای مقدار abc قرار میده
اگه اولین ورودی نبود
مقدار جدید رو تقسیم بر مقدار قبلی میکنه
تکست باکس رو تمیز میکنه (خالیش میکنه)
به متغییر که قبلا تعریف کرده بودیم مقدار abc رو نسبت میده
و به متغییر هم علامت تقسیم رو نسبت میده (عملی که قراره بعدا انجام بشه)
کد دکمه ی ضرب به شکل زیر هست
if (textBox1.Text == "")
{
MessageBox.Show("هیچ عددی وارد نشده است");
listBox1.Items.Add("Error");
listBox1.Items.Add("================================");
}
else
{
listBox1.Items.Add(textBox1.Text);
listBox1.Items.Add("×");
abc *= double.Parse(textBox1.Text);
textBox1.Clear();
a = (abc).ToString();
c = "*";
}
میبینید که فقط علامت ها عوض شدن ( علامت تقسیم / تبدیل به ضرب شده * )
کد دکمه تفریق :
int i = 1;
if (textBox1.Text == "")
{
MessageBox.Show("هیچ عددی وارد نشده است");
listBox1.Items.Add("Error");
listBox1.Items.Add("================================");
}
else
{
listBox1.Items.Add(textBox1.Text);
listBox1.Items.Add("-");
cba -= double.Parse(textBox1.Text);
if (i == 1)
{
cba *= -1;
i++;
}
textBox1.Clear();
a = (cba).ToString();
c = "-";
}
ابتدا متغییر i از نوع عدد صحیح رو تعریف کردیم و بهش مقدار یک دادیم
این کار برای انجام دادن یک عمل برای یک بار در چرخه هستش
خوب شرط اول که ثابت هست (اگر تکست باکس خالی بود...)
شرط دوم ابتدا مقدار تکست باکس و علامت - رو به لیست باکس اضافه میکنه
سپس مقدار موجود در تکست باکس رو از مقدار متغییر cba تفریق میکنه 
همونطور که میدونید مقدار اولیه ی این متغییر صفر بود
پس وقتی ما اولین عدد وارد شده مون رو از صفر کم کنیم اولین ورودی ما منفی خواهد شد
برای رفع این ایراد ما دوباره شرط میکنیم که اگر مقدار یک بود (که هست)
مقدار متغییر cba رو ضرب در 1- کن 
(که در این صورت اولین عددی که وارد کردیم دیگه علامتش عوض نمیشه)

بعد به یکی اضافه میکنیم تا دیگه این شرط تکرار نشه
و ....
کد دکمه جمع :
if (textBox1.Text == "")
{
MessageBox.Show("هیچ عددی وارد نشده است");
listBox1.Items.Add("Error");
listBox1.Items.Add("================================");
}
else
{
listBox1.Items.Add(textBox1.Text);
listBox1.Items.Add("+");
cba += double.Parse(textBox1.Text);
textBox1.Clear();
a = (cba).ToString();
c = "+";
}
کد دکمه جمع هم مثل کدهای دکمه ی تفریقه با این فرق که اینجا دیگه نیازی به شرط یکبار مصرف نداریم!!!
حالا میرسیم به دکمه قولشون :)
کدهای دکمه مساوی :
b = textBox1.Text;
listBox1.Items.Add(textBox1.Text);
listBox1.Items.Add("=");
switch (c)
{
case "+":
textBox1.Text = (double.Parse(a) + double.Parse(b)).ToString();
listBox1.Items.Add(textBox1.Text);
listBox1.Items.Add("================================");
abc = 0;
key = true;
break;
case "-":
textBox1.Text = (double.Parse(a) - double.Parse(b)).ToString();
listBox1.Items.Add(textBox1.Text);
listBox1.Items.Add("================================");
abc = 0;
i = 1;
key = true;
break;
case "*":
textBox1.Text = (double.Parse(a) * double.Parse(b)).ToString();
listBox1.Items.Add(textBox1.Text);
listBox1.Items.Add("================================");
abc = 1;
key = true;
break;
case "/":
textBox1.Text = (double.Parse(a) / double.Parse(b)).ToString();
listBox1.Items.Add(textBox1.Text);
listBox1.Items.Add("================================");
key = true;
abc = 1;
i = 1;
break;
}

آخرین ورودی رو به متغییر b نسبت میده
و ...
توضیحات این قسمت رو بعدا مینویسم
دیگه خسته شدم :/

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

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
تجدید کد امنیتی