کد ماشین حساب در ویندوز فرم سی شارپ c# همراه با سورس کدها
اولین قدم قبل از نوشتن کد ماشینحساب در ویندوز فرم سی شارپ c#، طراحی ظاهری آن خواهد بود. ما در اینجا بهصورت یک ظاهر بسیار ساده آموزش خود را شروع میکنیم. (تذکر:در جلسه اول با محیط ویندوز فرم آشنا شدیم و همچنین کار کردن با دستورات را در آموزش برنامه نویسی تحت کنسول آموزش دادیم)
ابتدا کنترل ها را از پنجره Toolbax روی فرم قرار می دهیم:
کنترل های مورد نیاز :
TextBox
Button
Label
خصوصیات(نام و متن) هر یک از اشیاء که در فرم قرار داده ایم را به شکل زیر تنظیم کردیم:
textbox1:
textbox2:
label1:
label2:
Button1:
Button2:
Button3:
Button4:
کد سی شارپ ماشین حساب:
روی هر کدام از این اشیا کلیک کنیم به کد مربوط به آن قسمت از برنامه هدایت می شویم و دستورات زیر را وارد می کنیم. این دستورات با توجه به آموزشی که قبلا تحت کنسول داشتیم بسیار ساده و قابل فهم می باشند:
برنامه ماشین حساب ساده اینجا به پایان رسید.
ماشین حساب با دستور if
حالا می خواهیم این ماشین حساب را کمی پیشرفته تر طراحی کنیم چیزی مشابه تصویر زیر:
یک فرم مشابه تصویر بالا طراحی می کنیم سپس کدهای زیر را در این form قرار می دهیم:
//—————————-تعریف متغیر ها
public double Result1, Result2, Sum, Mul, Min, Div;
Boolean OPMul,OPSum,OPMin,OPDiv;
//———————-توابع مربوط به کلیک کردن دکمه های 0 تا 9
private void button1_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “1”;
}
private void button2_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “2”;
}
private void button3_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “3”;
}
private void button4_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “4”;
}
private void button5_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “5”;
}
private void button6_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “6”;
}
private void button7_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “7”;
}
private void button8_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “8”;
}
private void button9_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text +”9″;
}
private void button0_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “0”;
}
//——————–تابع دکمه پاک کردن
private void buttonC_Click(object sender, EventArgs e)
{
txtResult.Text = “”;
}
//————————————عملگرها
private void buttonMul_Click(object sender, EventArgs e)
{
if (txtResult.Text != “”)
{
Result1 = double.Parse(txtResult.Text);
txtResult.Text = “”;
OPMul = true;
}
}
private void buttonDiv_Click(object sender, EventArgs e)
{
if (txtResult.Text != “”)
{
Result1 = double.Parse(txtResult.Text);
txtResult.Text = “”;
OPDiv = true;
}
}
private void buttonMin_Click(object sender, EventArgs e)
{
if (txtResult.Text != “”)
{
Result1 = double.Parse(txtResult.Text);
txtResult.Text = “”;
OPMin = true;
}
}
private void buttonSum_Click(object sender, EventArgs e)
{
if (txtResult.Text != “”)
{
Result1 = double.Parse(txtResult.Text);
txtResult.Text = “”;
OPSum = true;
}
}
//————————————عملگر مساوی
private void buttonEqual_Click(object sender, EventArgs e)
{
if (txtResult.Text != “”)
{
Result2 = double.Parse(txtResult.Text);
if (OPSum == true)
{
Sum = Result1 + Result2;
txtResult.Text = Sum.ToString();
OPSum = false;
}
else if (OPMin == true)
{
Min = Result1 – Result2;
txtResult.Text = Min.ToString();
OPMin = false;
}
else if (OPMul == true)
{
Mul = (Result1 * Result2);
txtResult.Text = Mul.ToString();
OPMul = false;
}
else if (OPDiv == true)
{
Div = Result1 / Result2;
txtResult.Text = Div.ToString();
OPDiv = false;
}
}
}
توضیح کد:
- ابتدا تابع click هر دکمه تعریف شد که اگر فشرده شود چه مقداری کنار مقدار داخل txtResult قرار بگیرد و مجدد در txtResult نمایش داده شود مثلا اگر داخل txtResult از قبل مقدار 2 بود و حال دکمه 1 فشرده شود،مقداری که در داخل txtResult نمایش داده می شود 21 است.
- در داخل تابع click هر عملگر ابتدا با یک دستور if چک می کنیم اگر txtResult خالی نبود، مقدار داخل txtResult را از رشته به عدد تبدیل می کند و در متغیر Result1 ذخیره می کند.سپس txtResult را خالی می کنیم برای ورود عدد دوم. سرانجام یک متغیر Boolean مخصوص به خود را true می کند تا بعدا در تابع مساوی بتوانیم تشخیص دهیم که کدام عملگر کلیک شده است.( مثلا تابع ضرب متغیر OPMul را true می کند.)
- داخل تابع click مربوط به عملگر مساوی، ابتدا عدد دومی که وارد شده را از رشته به عدد تبدیل کرده و داخل Result2 ذخیره می کنیم. با دستور if ، هر کدام از متغیر های بولین OPSum ،OPMin ،OPMul،OPDiv را چک می کنیم .مثلا اگر OPMul == true بود یعنی دکمه ضرب کلیک شده است.بنابراین Result1 را در Result2 ضرب کرده و تبدیل به رشته می کنیم و داخلtxtResult ذخیره می کنیم . در نهایت متغیر بولین خاص آن عملگر را false می کنیم.
ماشین حساب با دستور switch
حالا می خواهیم همان ماشین حساب با فرم بالا را با دستور switch بنویسیم.
public double Result1, Result2, Sum, Mul, Min, Div;
public string OP;
private void button1_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “1”;
}
private void button2_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “2”;
}
private void button3_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “3”;
}
private void button4_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “4”;
}
private void button5_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “5”;
}
private void button6_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “6”;
}
private void button7_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “7”;
}
private void button8_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “8”;
}
private void button9_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text +”9″;
}
private void button0_Click(object sender, EventArgs e)
{
txtResult.Text = txtResult.Text + “0”;
}
//——————–تابع دکمه پاک کردن
private void buttonC_Click(object sender, EventArgs e)
{
txtResult.Text = “”;
}
//————————————عملگرها
private void buttonSum_Click(object sender, EventArgs e)
{
if (txtResult.Text != “”)
{
Result1 = double.Parse(txtResult.Text);
txtResult.Text = “”;
OP = “+”;
}
}
private void buttonMin_Click(object sender, EventArgs e)
{
if (txtResult.Text != “”)
{
Result1 = double.Parse(txtResult.Text);
txtResult.Text = “”;
OP = “-“;
}
}
private void buttonMul_Click(object sender, EventArgs e)
{
if (txtResult.Text != “”)
{
Result1 = double.Parse(txtResult.Text);
txtResult.Text = “”;
OP = “*”;
}
}
private void buttonDiv_Click(object sender, EventArgs e)
{
if (txtResult.Text != “”)
{
Result1 = double.Parse(txtResult.Text);
txtResult.Text = “”;
OP = “/”;
}
}
//————————————عملگر مساوی
private void buttonEqual_Click_1(object sender, EventArgs e)
{
if (txtResult.Text != “”)
{
Result2 = double.Parse(txtResult.Text);
switch (OP)
{
case “+”:
txtResult.Text = (Result1 + Result2).ToString();
break;
case “-“:
txtResult.Text = (Result1 – Result2).ToString();
break;
case “*”:
txtResult.Text = (Result1 * Result2).ToString();
break;
case “/”:
txtResult.Text = (Result1 / Result2).ToString();
break;
return;
}
}
}
کدنویسی با دستور switch مشابه کدنویسی با دستور if است و توضیح خاصی ندارد.
- برای دانلود سورس کد ماشین حساب با دستور if کلیک کنید:
- برای دانلود سورس کد ماشین حساب با دستور switch کلیک کنید:
امیدواریم از آموزش کد ماشین حساب در ویندوز فرم سی شارپ c# استفاده کافی برده باشید و در آموزش بعد به نوشتن پروژه بازی جورچین می پردازیم. با ما همراه باشید.
لطفا سوالات و پیشنهادات خود را در قسمت ثبت دیدگاه پایین همین آموزش با ما در میان بگذارید.
ممنونم عالی بود
سلام .من برنامه ماشین حساب رو نوشتم ولی نمیدونم کجا باید متغیر هامو تعریف کنم ممنون میشم راهنمایی کنید
سلام و عرض ادب
طبق آموزش اگر ماشین حساب را بدون دکمه اعداد و به صورت مبتدی نوشتید متغیرها را داخل هر کدام از باتن ها تعریف می کنیم ولی اگر با دستور if یا switch ماشین حساب را نوشتید(پیشرفته تر) باید متغیرها به صورت سراسری تعریف شود یعنی داخل کلاس فرم.
اگر پاسخ خود را نیافتید مجدد سوال خود را به صورت جزئی تر مطرح کنید.
با تشکر از همراهی شما
سلام خسته نباشید چجوری میتونم با حلقه forبنویسم کد ماشین حسابو کلا ۴ تا دکمه میخواد جمع ضرب تقسیم منها با دوتا تکست باکس میصه کمک کنید
سام خسته نباشید. ممنون از زحماتتون. بسیااار عالی و مفید بود.
امام من یه سوال داشتم :
*** میخاستم بدونم چطور میشه کاری کنیم که از کیبوردمون برای عملگرها استفاده کنیم؟ باتشکر
سلام و عرض ادب
شما می توانید با مطالعه پست مربوط به کدهای اسکی این کار را اجرایی کنید.
با تشکر از همراهی شما
عالی بود.. سپاسگزارم ♥ :)
سلام خدمت اساتید بزرگوار. در دیتابیسم جدولی دارم که از طریق دیتا گرید آن را فراخوانی کرده ام حال نیاز دارم که یک ستون از جدول دیتابیسم را با کمبو باگس فراخوانی کنم البته از طریق کد نویسی لطفاً راهنماییم کنید
سلام و عرض ادب. از راه های متفاوتی می تونید این کار رو انجام بدید. یک نمونه کد رو براتون میگذارم:
private void Form1_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@”Data Source=DPI-PC\sqlexpress;Initial Catalog=Test;User ID=sa;Password=123″) ;
conn.Open();
SqlCommand sc = new SqlCommand(“select customerid,contactname from customers”, conn);
SqlDataReader reader;
reader = sc.ExecuteReader();
DataTable dt = new DataTable();
dt.Columns.Add(“customerid”, typeof(string));
dt.Columns.Add(“contactname”, typeof(string));
dt.Load(reader);
comboBox1.ValueMember = “customerid”;
comboBox1.DisplayMember = “contactname”;
comboBox1.DataSource = dt;
conn.Close();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string ID = comboBox1.SelectedValue.ToString();
}
با عرض سلام خدمت استاد گرانقدر آقای مهدی نیکخواه. کدهایی را که برای فراخوانی یک ستون از جدول دیتا بیس برایم گذاشته بودید استفاده کردم دستتان درد نکند نیمی از کارم را پیش برد ولی در کمبوباگسم به تعداد ستونهای مورد نظر در دیتابیسم نوشته زیر را می آورد
Systm. Data. DataRoeView
یعنی به جای داده های درون ستون دیتابیسم عبارت فوق را فراخوانی می کند. چکار باید بکنم.
باز هم از شما تشکر می کنم.
سلام و عرض ادب.
لطفا اجازه دهید تست کنیم و اگر کدی که برای شما ارسال شده مشکلی داشت آن را اصلاح کنیم
با تشکر از همراهی شما
یه کد برای ماشین حساب می خوام که همزمان جمع یا تفریق بکند مثلا ۲+۲+۲=با چهار نکنه بلکه بنویسه ۶
سلام و عرض ادب.
این سایت در حوزه آموزش هست و استراتژی شرکت بر مبنای قبول سفارشات کوچک و خاص نیست. لطفا برای درخواست خود از سایتهایی که سفارش پروژه های کوچک رو قبول می کنند اقدام نمایید.
با تشکر از همراهی شما
سلام دستوردیگه ای به جز سویچ وریزلت وجودنداره برای ماشین حساب
سلام و عرض ادب. اگر منظور این هست که آیا می توان ماشین حساب را بدون دستور سویچ نوشت بله امکانش هست و شما می توانید فقط با تعریف متغیرها این کار رو انجام بدید و یا راه های دیگری که وجود دارد.
سلام میشه لطف کنید برنامه روبه شکل ساده ترش بنویسید
سلام و عرض ادب
به کارشناس مربوطه اطلاع داده می شود و در صورت امکان روی سایت قرار می گیرد.(از طریق ایمیل به شما اطلاع رسانی می شود)
با تشکر از همراهی شما
سلام میشه لطف کنید کد عملیت های دیگه مثل جذر و … را بنویسید
سلام و عرض ادب
از کد زیر برای عملیات جذر می توانید استفاده کنید
double gazr;
gazr = double.Parse(txtNum1.Text);
gazr = Math.Sqrt(gazr);
lblresult.Text = gazr.ToString();
با تشکر از همراهی شما
سلام خسته نباشید میشه کد های سینوس کسینوس تانژانت کتانژانت و توان رو بزارید؟ممنون میشم با دستور سوییچ باشن
سلام میتونید بگید چجوری میتونیم اعداد رو یک به یک پاک کنیم
سلام د کمه پاک کردن چرا نداره
سلام و عرض ادب
چون این قسمت از آموزش در سطح مقدماتی و برای آشنایی با کد نویسی بوده است .
ولی با این کد می توانید پاک کردن را در برنامه اعمال کنید
if (textBox1.Text.Length != 0
}
textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length – 1);
{
سلام استاد گل محمدی یه خواهشی داشتم توی اون ماشین حساب مبتدی که اول این سایت نوشتین میتونین فاکتور و توان رو هم اضافه کنید
خیلی برنامه ناشیانه و پر حجمی بود
دکمه های ۰ تا ۹ رو با یک زیر برنامه و عملگرهای ۴ عمل اصلی رو با یک زیر برنامه می شه نوشت ،
دکمه های مساوی و بک اسپیس و کلیر کردن رو هم هر کدوم یه خط کد دارن (البته مساوی دستور سوئیچ رو جا می ده یکم طولانی تره)
این آموزشتون گمراه کننده است
البته مطمئنم مهارت شما بسیار بالاست و برای آموزش از این روش استفاده کردید
موفق باشید
زکات علم در نشر آن است
سلام و عرض ادب. بابت ارسال نظرتون ممنون ولی همان طور که خودتون اشاره کردید هدف آموزش بوده که کاربر قدم به قدم یاد بگیره و با آموزش ها بیاد جلو.
با تشکر از همراهی شما
سلام چطور میشه چند تا عملیات مختلف رو پشت سر هم انجام داد ؟ مثلا ۲+۵-۳×۴
عالی
سلام و عرض ادب. از ارسال نظر و انرژی مثبت شما ممنونم.
با تشکر از همراهی شما
ببخشید میشه ی راهنمایی بکنید ک چجوری فایل دانلود شده رو اجرا کنم؟من توی برنامه ویژوال ک بازش میکنم خالیه
سلام و عرض ادب. سوال شما خیلی کلی هست و نمی شود جواب خاصی داد. ممکن است فایلی که دانلود کرده اید مشکل داشته باشد. ممکن است ورژن ها باهم تفاوت داشته باشد. ممکن است شما اشتباه فایل پروژه را باز کنید و هزار امکان دیگر.
سلام خیلی خوب بود اما یه سئوال داشتم برای عملگر اعشار کد ننوشتین چطوری برای این عملگر کد بنویسم
سلام خسته نباشید ببخشید برنامه ماشین حساب و من نوشتم ولی اونجوری ک من نوشتم مثلا دوتا عدد می دی بهت می گی چ عملگری بعد انجام میده من می خوام یه. عبارت مثلا ۲*۳+۵-۶/۲۰اینجوری بدم با رعایت الویت ها برام حساب کنه بعدم می خوام داخل کنسول اپلیکیشن باشه میشه توضیح بدبد چجوری می تونم انجامش بدم؟
کد درصد و _/+ رو بزارید
ممنون از این مقاله کاربردی
سلام و عرض ادب
رضایت شما موجب خرسندی ماست و حمایت شما برای ما بسیار ارزشمند است.
با تشکر از همراهی شما