PDA

View Full Version : سوال: کدنویسی این برنامه چطوره؟؟



raha1234567
چهارشنبه 23 آذر 1390, 08:46 صبح
سلام دوستان میشه لطف کنید و ببنید این برنامه ایرادی داره؟
موضوع::لبخندساده:
میخوام برام هزینه بار رو محاسبه بکنه
1.وزن کالا را برحسب کیلوگرم درtext میگیره
2.نوع کالا را در combo میگیره که اگر نوع کالا
حجیم باشد ضریب=0.9 معمولی =1 شکستنی1.8 خوراکی=1.25
که این ضرایب در وزن ضرب میشه
3.بعد مبدا و مقصد را هر کدوم در یک comboجدا میگیره که با توجه به مسیر انتخاب شهر فاصله هاش فرق میکنه
4.در یک list وسیله حمل بار را میگیره که اگر مثلا ماشن مورد نظر وانت باشد هزینه بار در هرکیلومتر کیلوگرم 50 تومان هست.
6.حال اگر وزن بار بیش از یک تن باشد 10% تخفیف اگر بیش از 3تن باشد 15% تخفیف داره
7.و در پایان 10% بابت بیمه و مالیات به هزینه بار افزوده میشه و برای نوع شکستنی 17% افزوده میشه
من وزن بار که به کیلو باشه یا تن با combo مشخص کردم حالا این کد درسته به نظر شما؟



private void button1_Click(object sender, EventArgs e)
{
double fa=0,vz=0,hz=0,bm;
int vh=0;
vz =Convert.ToDouble( textBox1.Text);

//2
if(rbh1.Checked){
vz*=0.9;}
else if(rbm2.Checked){
vz*=1;}
else if(rbs3.Checked){
vz *= 1.8;}
else
vz*=1.25;
//3
if (cmb1.SelectedIndex == 0 && cmb2.SelectedIndex == 1)
fa = 100;
else if (cmb1.SelectedIndex == 0 && cmb2.SelectedIndex == 2)
fa = 500;
else if (cmb1.SelectedIndex == 0 && cmb2.SelectedIndex == 3)
fa = 1200;
else if (cmb1.SelectedIndex == 1&& cmb2.SelectedIndex == 2)
fa = 600;
else if (cmb1.SelectedIndex == 1 && cmb2.SelectedIndex == 3)
fa = 1000;
else if (cmb1.SelectedIndex == 2 && cmb2.SelectedIndex == 3)
fa = 800;
//4
switch (listBox1.SelectedIndex)
{
case 0:
vh = 50000;
break;
case 1:
vh = 45000;
break;
case 2:
vh = 65000;
break;
case 3:
vh = 30000;
break;
case 4:
vh = 120000;
break;
}
//5
if (cmb3.SelectedIndex == 1 && vz >= 1 && vz <= 3)
hz-= (10 / 100)+hz;
vz *= 1000;
if (cmb3.SelectedIndex == 1 && vz>3)
hz-= (15/ 100);
vz *= 1000;
//6
bm = (10 / 100);
if (rbs3.Checked)
bm = (17 / 100);
hz =( vz * fa * vh) + bm;
MessageBox.Show(hz.ToString());

}

linux
چهارشنبه 23 آذر 1390, 08:59 صبح
بهتر هست که به جای اینکه در رخداد کلیک دکمه این کد را بنویسید بصورت یک تابع درون کلاس نوشته شود. اصول نام گذاری را هم رعایت کنید

gwbasic
چهارشنبه 23 آذر 1390, 09:47 صبح
این طور کدنویسی وحشتناکه !!! فکر می کنی خودت بعدا این کدو ببینی چیزی دستگیرت می شه؟ نمی دونم از کجا بگم!!!
1- اول نام گذاری کنترل ها و متغیرهای محلی cmb1 و cm2 و cm3 و vh . به جای اینها و استفاده از حروف تنها از کلمات با معنی استفاده کنید حتی شده فینگلیش
2- استفاده مستقیم از کنترلهای فرم. مثلا شما گفتی اگه cmb3.SelectedIndex == 1 و ... فرض کنید بعدا نیاز پیدا کنید که یک Item به کمبو اضافه کنید آنوقت ترتیب اندیس ها تغییر می کنه و شما باید حواست باشه که هر 1 بود مثلا تغییر بدی به 2. در نتیجه تغییرات احتمالی ولو کوچک ممکنه که باعث تغییر خیلی زیاد در کد شما بشه !!!
3- نحوه محاسبه: شما این کارو بهیچ وجه نباید داخل فرم انجام بدی. این کار باید توسط کلاسی جداگانه انجام بشه که اون کلاس داده های مورد نیازو بگیره و خروجی رو برگردونه. بطور مثال برای هر قلم از مواردی که روی هزینه تاثیر می ذاره یک متد بنویسید که ورودی رو بگیره و هزینه اون مورد رو حساب کنه ( مثلا برای محاسبه هزینه وزن کالا متدی تحت عنوان CostProductWeight بنویسید که ورودیها یعنی وزن کالا و نوع کالا دقت کنید نوع کلا نه ضریب رو بگیره و محاسبه رو انجام بده) و در نهایت یک متد کلی بنویسید که TotalCost نام داره و این متد در داخل خودش تمام متدهای دیگه رو صدا بزنه و در نهایت مجموع محاسبه رو برگردونه.

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

raha1234567
چهارشنبه 23 آذر 1390, 10:04 صبح
بله چشم حتما رعایت میشه آخه من این برنامه رو فقط به عنوان یه نمونه سوال میخواستم حل کنم ببینم توانایی حلش رو دارم و کدش رو گذاشتم مطمئن شم درسته یا نه وگرنه رعایت میکنم همه اینا رو که گفتید.

ya30ien2
چهارشنبه 23 آذر 1390, 13:01 عصر
منم فکر میکنم بجای اینکه این همه درصد و رقم رو داخل برنامه نویسی جا بدی بهتر باشه برنامه رو بطوری تعریف کنید که کاربری که میخواد از برنامه استفاده که بتونه براحتی اینها رو تغییر بده که برنامه برای مدت طولانی تری قابل استفاده باشه