الگوریتم نویسی



قبل از کد نویسی باید چند کنترل دیگر  به برنامه اضافه کنیم

کنترل هایی مانند جدول زیر به فرم اضافه نموده و خواص آنها را نیز تنظیم نمایید

کنترل Panel

مقدار

نام خصوصیت

pnlSearch

Name

128, 128, 255

Back Color

False

Visible

25,226

Location

419,152

Size

کادر متن txtSearch درون پنل pnlSearchایجاد می کنیم

کنترل TextBox

مقدار

نام خصوصیت

txtSearch

Name

Tahoma 12

Font

5

MaxLength

58,39

Location

122,27

Size


برچسب  lblSearch درون پنل pnlSearchایجاد می کنیم

کنترل Label

مقدار

نام خصوصیت

lblSearch

Name

Tahoma 12

Font

"کد مورد نظر را وارد نمایید:"

Text

180,40

Location

200,19

Size


دکمه های تایید و انصراف را در ینل pnlSearch با خصوصیات جداول زیر قرار می دهیم:

کنترل Button

مقدار

نام خصوصیت

btnConfirmSearch

Name

تایید

Text

227,91

Location

153,27

Size


کنترل Button

مقدار

نام خصوصیت

btnCancelSearch

Name

انصراف

Text

43,91

Location

153,27

Size


1- روی دکمه "انصراف" در کادر جستجو  در صفحه فرم Double Click کرده تا پنجره کدنویسی متد رویداد click آن باز شود. دستورات را در آن می نویسیم:
private void btnCancelSearch_Click(object sender, EventArgs e)
        {
            showButton(false);
            pnlSearch.Visible = false; // مخفی کردت کنترل
        }

2- روی دکمه "تایید" در کادر جستجو  در صفحه فرم Double Click کرده تا پنجره کدنویسی متد رویداد click آن باز شود. دستورات را در آن می نویسیم:
private void btnConfirmSearch_Click(object sender, EventArgs e)
{
for (int i = 0; i < recCount; i++)
  if( ds.Tables["baseInfo"].Rows[i]["Id"].ToString()==txtSearch.Text )
  {
     recNo = i;  // رکوردی که فیلد کد آن با محتوای کادرمتن یکی بود پیدا شد شماره آن به متغیر رکورد جاری داده شود
     FillTextBox();
     btnCancelSearch.PerformClick();
     return;
  }
  MessageBox.Show("رکورد پیدا نشد", "کاربر محترم", MessageBoxButtons.OK, MessageBoxIcon.Stop);
  btnCancelSearch.PerformClick(); // اجرای رویداد کلیک دکمه انصراف جستجو
}

2- روی دکمه "ذخیره"  در صفحه فرم Double Click کرده تا پنجره کدنویسی متد رویداد click آن باز شود. دستورات را در آن می نویسیم:
 private void btnSave_Click(object sender, EventArgs e)
        {
             string sqlStatement="" ;
            if(txtLname.Text=="")
            {
                MessageBox.Show("فیلد نام خانوادگی خالی است","کاربر محترم: فیلدها باید پر باشد");
                return;
            }
            if(flagAdd)
              sqlStatement = "Insert into  baseinfo (Fname,Lname) values ('"+txtFname.Text+"','"+txtLname.Text +"')";  
            else if(flagEdit)
                sqlStatement = "update  baseinfo set Fname='" + txtFname.Text + "', Lname='" + txtLname.Text + "' where Id=" + txtId.Text;  // Sql تعریف متغیر برای نگهداری دستورات               
            
            OleDbCommand cmd2 = new OleDbCommand(sqlStatement, conn1);  //  تخصیص حافظه به شئ و  تنظیم آن
            conn1.Open();
            int exe = cmd2.ExecuteNonQuery();
            conn1.Close();
            if (exe < 0)
            {
                MessageBox.Show("دستور اجرا نشد دوباره سعی کنید", "کاربر محترم", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            ds.Clear();
           da1.Fill(ds,"baseInfo"); // da1 کپی اطلاعات از بانک اطلاعاتی به دیتاست با از طریق شی
   recCount = ds.Tables["baseInfo"].Rows.Count; // تعداد کل رکوردها در متغیر ذخیره می شود 
            if (flagAdd)
                recNo = recCount - 1;
            FillTextBox();
            flagAdd = false;
            flagEdit = false;
            //  مخفی کردن دکمه های ذخیره و انصراف و نمایش سایر دکمه ها با فراخوانی متد
            showButton(false);         
        }


کدنویسی روالهای رویداد


1- روی دکمه "اولین" در صفحه فرم Double Click کرده تا پنجره کدنویسی متد رویداد click آن باز شود. دستورات را در آن می نویسیم:

  private void btnFirst_Click(object sender, EventArgs e)

        {

            if (recCount == 0) return;  //  اگر هیچ رکوردی نبود خارج شود

           

            // متغیر رکوردجاری با اولین شماره رکورد مقداردهی شود

            recNo = 0;   

            FillTextBox();  // نمایش رکورد جاری

        }


2- روی دکمه "قبلی" در صفحه فرم Double Click کرده تا پنجره کدنویسی متد رویداد click آن باز شود. دستورات را در آن می نویسیم:


        private void btnPrevious_Click(object sender, EventArgs e)

        {

            if (recNo > 0)

            {

                recNo--;     // شماره رکوردجاری را یک واحد کاهش دهد

                FillTextBox();  // نمایش رکورد جاری

            }

        }


3- روی دکمه "بعدی" در صفحه فرم Double Click کرده تا پنجره کدنویسی متد رویداد click آن باز شود. دستورات را در آن می نویسیم:

 private void btnNext_Click(object sender, EventArgs e)

        {   

            recNo++;   // یک واحد به شماره رکورد جاری اضافه می کنیم

            

            //  اگر شماره رکورد جاری از تعداد رکوردها کمتر بود

            if (recNo < recCount)     

                FillTextBox();  // نمایش رکورد جاری

            else

                recNo--;  // یک واحد به شماره رکورد جاری کم می کنیم

        }


4- روی دکمه "آخرین" در صفحه فرم Double Click کرده تا پنجره کدنویسی متد رویداد click آن باز شود. دستورات را در آن می نویسیم:

       private void btnLast_Click(object sender, EventArgs e)

        {

            recNo=recCount;

            // به دلیل اینکه رکوردها از صفر شماره گذاری می شود شماره آخرین رکورد یکی کمتر از تعداد رکوردها خواهد بود

            recNo--; 


            if (recNo>=0)     // آخرین رکورد اگر رکوردی بود 

                FillTextBox();  // نمایش رکورد جاری      

        }


5- روی دکمه "اضافه" در صفحه فرم Double Click کرده تا پنجره کدنویسی متد رویداد click آن باز شود. دستورات را در آن می نویسیم:

        private void btnAdd_Click(object sender, EventArgs e)

        {

            txtId.Text = "";  //textbox خالی کردن 

            txtFname.Text = "";

            txtLname.Text = "";

            flagAdd = true;  // مشخض می کند که دکمه اضافه کلیک شده است

            flagEdit = false;

            //نمایش دکمه های دخیره و انصراف و مخفی کردن سایر دکمه ها

            showButton(true);  

            txtFname.Focus();  // انتقال مکان نما به کادر متن

        }


6- روی دکمه "ویرایش" در صفحه فرم Double Click کرده تا پنجره کدنویسی متد رویداد click آن باز شود. دستورات را در آن می نویسیم:

       private void btnEdit_Click(object sender, EventArgs e)

        {

            flagAdd = false;

            flagEdit = true;

            showButton(true);

            txtFname.Focus();  

        }


7- روی دکمه "انصراف" در صفحه فرم Double Click کرده تا پنجره کدنویسی متد رویداد click آن باز شود. دستورات را در آن می نویسیم:

 private void btnCancel_Click(object sender, EventArgs e)

        {

            flagAdd = false;

            flagEdit = false;

            //  مخفی کردن دکمه های ذخیره و انصراف و نمایش سایر دکمه ها  

            showButton(false);  

            if (recCount > 0)  // اگر رکوردی بود

                FillTextBox(); // نمایش رکورد جاری

        }


8- روی دکمه "حذف" در صفحه فرم Double Click کرده تا پنجره کدنویسی متد رویداد click آن باز شود. دستورات را در آن می نویسیم:

   private void btnDelete_Click(object sender, EventArgs e)

   {

      DialogResult a = MessageBox.Show("آیا می خواهید حذف کنید"

     , "حذف رکورد جاری", MessageBoxButtons.YesNo, MessageBoxIcon.Warning,        MessageBoxDefaultButton.Button2);

     if(a==DialogResult.Yes)

     {   

       // Sql تعریف متغیر برای نگهداری دستورات 

     string sqlStatement = "delete from baseinfo where Id="+ txtId.Text ;

      // تعریف شی و تخصیص حافظه به شئ و  تنظیم آن

        OleDbCommand cmd2 = new OleDbCommand(sqlStatement, conn1);  

        conn1.Open();   // بازکردن اتصال

        int exe=cmd2.ExecuteNonQuery();  // اجرای دستور 

        conn1.Close();

        if(exe<0)

        {

      MessageBox.Show("رکورد حذف نشد","کاربرمحترم" ,MessageBoxButtons.OK        ,MessageBoxIcon.Error );

      return;

      }

      ds.Clear();   // پاک کردن اطلاعات شئ دیتاست

      // da1 کپی اطلاعات از بانک اطلاعاتی به دیتاست با از طریق شی

      da1.Fill(ds, "baseInfo"); 

      // تعداد کل رکوردها در متغیر ذخیره می شود  

      recCount = ds.Tables["baseInfo"].Rows.Count;  

      // اگر رکورد حذفی آخرین بود رویداد کلیک آخرین رکورد اجرا شود

      if (recNo >= recCount) btnLast.PerformClick();

      if(recCount>0)  // اگر رکوردی بود

      FillTextBox(); // رکورد جاری نمایش دهد

     }  

 }



کدها:

با دکمه F7 به بخش کد نویسی رفته بعد از متد  public frmBaseInfo یک متد به نام showButton جهت نمایش و عدم نمایش دکمه ها در زمان های مختلف اجرا با کد زیر می نویسیم:

private void showButton(bool flag)

        {

            txtFname.Enabled = flag;    // فعال یا غیر فعال کردن کادر متن جهت دریافت اطلاعات

            txtLname.Enabled = flag;    // فعال یا غیر فعال کردن کادر متن جهت دریافت اطلاعات

            pnlInsertEditSearchDelete.Visible = !flag;  // نمایش یا عدم نمایش دکمه های درج و .

            pnlMoveButton.Visible = !flag;      //  نمایش یا عدم نمایش دکمه های حرکت رکردها

            pnlSaveCancel.Visible = flag;     // نمایش یا عدم نمایش دکمه های ذخیره و انصراف

        }


جهت تست متد showButton ، متد frmBaseInfo به شکل زیر تغییر می دهیم:

   public frmBaseInfo()

        {

            InitializeComponent();

            pnlSaveCancel.Left=166;     // انتقال کادر دکمه های ذخیره و انصراف

            pnlSaveCancel.Top= 162;

            //  مخفی کردن دکمه های ذخیره و انصراف و نمایش سایر دکمه ها با فراخوانی متد

            showButton(false);   

        }


جهت استفاده از کلاس های OleDb با دستور using System.Data.OleDb  فضای نامی مربوطه را در بخش using ها اضافه می نماییم.


برای نمایش تمامی رکوردها چند متغیر سراسری در سطح فرم و چند متد باید نعریف کنیم توجه متغیر ها باید در بیرون از همه متدها و در کلاس فرم باشد مانند مثال:


 public partial class frmBaseInfo : Form

    {  

        /* در مسیر فایل اجرایی پروزه کیی شود مانند مثال Tel.mdb  توجه فایل   

        D:\TelePhone\TelePhone\bin\Debug     */

        string strConnection = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=tel.mdb";  

        OleDbConnection conn1;     // تعریف شئ برای اتصال به بانک

        OleDbCommand cmd1;         // تعریف شی برای اجرای دستورات

        OleDbDataAdapter da1;     // تعریف شی برای ایجاد ارتباط بین بانک اطلاعاتی و دیتاست

        DataSet ds;               // تعریف شی دیتاست 

        int recNo = 0;            // تعریف متغیر برای نگهداری شماره رکورد جاری

        int recCount=0;          // تعریف متغیر برای نگهداری نعداد رکوردهای جدول

        bool flagAdd = false, flagEdit = false;    

         // تعریف دو متغیر برای اینکه بدانیم کاربر کدام دکمه ها را انتخاب کرده است


  دستورات را در متد  frmBaseInfo  زیر دستور  InitializeComponent بنویسید.
توجه: دستورات قبلی که در این متد نوشته ایم را پاک نمی کنیم بلکه دستورات جدید را در محل مشخص شده اضافه می کنیم.
 
 public frmBaseInfo()
        {
            InitializeComponent();
            // Sql تعریف متغیر برای نگهداری دستورات  
            string sqlStatement = "select * from baseinfo"; 
             // تخصیص حافطه به شئ و بازکردن آن 
            conn1 = new OleDbConnection(strConnection);    
            cmd1 = new OleDbCommand(sqlStatement, conn1);  //  تخصیص حافظه به شئ و  تنظیم آن
            da1 = new OleDbDataAdapter(cmd1);              //  تخصیص حافظه به شئ و  تنظیم آن
            ds = new DataSet();                            //  تخصیص حافظه به شئ 
            //da1 کپی اطلاعات از بانک اطلاعاتی به دیتاست با از طریق شی
            da1.Fill(ds,"baseInfo");
            
            // تعداد کل رکوردها در متغیر ذخیره می شود 
            recCount = ds.Tables["baseInfo"].Rows.Count;  

           // اگر شماره رکوردی وجود داشت برای نمایش اولین آن دستور بعدی اجرا شود
            if (recCount>0)  
            FillTextBox();                                // فراخوانی متد برای خواندن اطلاعات از فیلدها به کادرهای متن
 توجه متد FillTextBox را جلوتر تعریف خواهیم نمود.//                                                                                       

تعریف متد FillTextBox برای انتقال اطلاعات از فیدهای رکورد به TextBox ها
راهنمایی : مکان تعریف متد بایذ  قبل از {{ بسته آخر صفحه باشد.

 private void FillTextBox()
        {
            txtId.Text = ds.Tables["baseInfo"].Rows[recNo]["Id"].ToString();
            txtFname.Text = ds.Tables["baseInfo"].Rows[recNo]["Fname"].ToString();
            txtLname.Text = ds.Tables["baseInfo"].Rows[recNo]["Lname"].ToString();
        }




یک پروزه جدید در محیط vs ایجاد کنید

  1. مشخصات Form1 را مطابق جدول زیر تغییر دهید:

499, 481

size

Tahoma  Bold 10

Font

frmBaseInfo

Name

Yes

RightToLeft

CenterScreen

StartPosition

فرم مشخصات افراد

Text


3. کنترل هایی مانند جدول زیر به فرم اضافه نموده و خواص آنها را نیز تنظیم نمایید

کنترل Panel

مقدار

نام خصوصیت

pnlBaseInfo

Name

192, 255, 192

Back Color

Fixed3D

Border Style

12,12

Location

462,208

Size

پنل pnlInsertEditSearchDelete را درون پنل pnlBaseInfo ایجاد می کنیم

کنترل Panel

مقدار

نام خصوصیت

pnlInsertEditSearchDelete

Name

255, 224, 192

Back Color

Fixed3D

Border Style

41,3

Location

283,40

Size


دکمه های اضافه - ویرایش - جستجو و حذف را در ینل pnlInsertEditSearchDelete با خصوصیات جداول زیر قرار می دهیم:

کنترل Button

مقدار

نام خصوصیت

btnAdd

Name

اضافه

Text

207,6

Location

65,27

Size


کنترل Button

مقدار

نام خصوصیت

btnEdit

Name

ویرایش

Text

141,6

Location

65,27

Size


کنترل Button

مقدار

نام خصوصیت

btnSearch

Name

جستجو

Text

75,6

Location

65,27

Size


کنترل Button

مقدار

نام خصوصیت

btnDelete

Name

حذف

Text

9,6

Location

65,27

Size


پنل pnlSaveCancel را درون پنل pnlBaseInfo ایجاد می کنیم

کنترل Panel

مقدار

نام خصوصیت

pnlSaveCancel

Name

255, 192, 255

Back Color

Fixed3D

Border Style

41,47

Location

152,38

Size

دکمه های ذخیره و انصراف را در ینل pnlSaveCancel  با خصوصیات جداول زیر قرار می دهیم:

کنترل Button

مقدار

نام خصوصیت

btnSave

Name

ذخیره

Text

78,5

Location

65,27

Size


کنترل Button

مقدار

نام خصوصیت

btnCancel

Name

انصراف

Text

7,5

Location

65,27

Size


پنل pnlMoveButton را درون پنل pnlBaseInfo ایجاد می کنیم

کنترل Panel

مقدار

نام خصوصیت

pnlMoveButton

Name

1.     شروع

2.     W , L را بخوان

3.     Perimeter = (W + L)*2

4.     Area = W * L

5.     Area, Perimeter  را چاپ کن

6.     پایان

0

1-شروع:  

الف) یک پروژه #C از نوع کنسول در محیط VS ایجاد می کنیم.
ب) تمام متغیر هایی که در الگوریتم استفاده کرده ایم را در متد Main  به شکل زیر تعریف می کنیم.

static void Main(string[] args)

 {  //  تعریف متغیر های صحیح برای نگهداری مقادیر 

            int w, l, Perimeter, Area;

}



تبدیل سایر خطوط الگوریتم:

static void Main(string[] args)

        {

            int w, l, Perimeter, Area;


            // -----------------------------------------------------------------------------------    را بخوان   W , L  (2

            //  نمایش پیام برای دریافت طول

            Console.Write("Please enter a number for length:");

            w = int.Parse(Console.ReadLine());


            //  نمایش پیام برای دریافت عرض

            Console.Write("Please enter a number for width:");

            l = int.Parse(Console.ReadLine());

            // ---------------------------------------------------------------------------  Perimeter = (W + L)*2 (3


            // محاسبه محیط

            Perimeter = (w + l) * 2;



            // --------------------------------------------------------------------------------------   Area = W * L (4


            //  محاسبه مساحت

            Area = w * l;


            // ------------------------------------------------------------------------ را چاپ کن Perimeter , Area (5 


            Console.WriteLine("Perimeter is:{0}", Perimeter);

            Console.WriteLine("Area is:{0}", Area);

     //---------------------------------------------------------------------------------------------------------پایان (6

        }


آخرین ارسال ها

آخرین جستجو ها