ثبت نام دانشجو بوسیله آرایه در سی شارپ

milititi*

عضو جدید
سلام ...برنامه ثبت نام دانشجو رو با آرایه نوشتم...از لیست باکس واسه نشون دادت تغییرات استفاده کردم.. ویرایش و حذف رو نمیدونم....چکار کنم...ممنمون میشم کمکم کنید:confused:
 

RIG

متخصص C#.net


Dim lst As List(Of String)
lst.Clear() 'پاک کردن تمام آیتمها
lst.RemoveAt(20) 'پاک کردن آیتم 20 ام
lst.Remove("myItem") ' پاک کردن آیتم مشخص شده
lst.IndexOf("myItem") ' پیدا کردن ایندکس آیتم مشخص شده
lst.Insert(12, "myItem") ' اضافه کردن آیتم به لیست در آیندکس مشخص شده





--------------------------
براي تغيير مقدار بايد مطابق كد زيز عمل كنيد
lst.Item(0) = "ALI"
 

milititi*

عضو جدید
ثبت نام دانشجو بوسیله آرایه در سی شارپ

مشاهده پیوست sabte nahaee.rar

ثبت نام دانشجو...شامل ذخیره.ویرایش.حذف.جستجو.......
*********فقط یک نکته نمیدونم کجای کارم اشتباست که دکمه حذف باید 2بار زده بشه تا جواب بده.....
هرکسی جوابشو پیدا کرد واسم بفرسته**********ممنون:redface:
 

milititi*

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

milititi*

عضو جدید
ثبت نام دانشجو با آرایه

ثبت نام دانشجو با آرایه

ثبت نام دارای کلیدهای ذخیره.جستجو.ویرایش.حذف
فقط نمیدونم چرا باید کلید حذف رو 2بار زد تا حذف انجام شود....اگه جوابی پیدا کردید خوشحال میشم بهم بگید..ممنون

:redface:

مشاهده پیوست sabte nahaee.rar
 

zahra1386

مدیر بازنشسته
کاربر ممتاز
آره منم امتحان کردم قسمت حذف کار نمیکنه!

مشکل در این قسمت هاست:
کد:
 for (s = i-1; s <= j; s++)
            {
               st[s].id = st[s + 1].id;
               st[s].name = st[s + 1].name;
               st[s].family = st[s + 1].family;
               st[s].course = st[s + 1].course;
               st[s].average = st[s + 1].average;
               st[s].address = st[s+ 1].address;
             }
           
            for (i = 0; i <=j; i++)
            {
                listBox1.Items.Add(i + "      " + st[i+1].id + "             " + st[i+1].name + "               " + st[i+1].family + "                  " + st[i+1].course + "                  " + st[i+1].average + "                   " + st[i+1].address);
            }
مشکل حلقه ی اول مقدار i , j هست...باید توجه داشته باشین که مقدار این متغیرها با اجرای توابع تغییر میکنه ...من مجدد اونها رو مقدار دهی کردم و مشکل حلقه ی اول رفع شد..

اما مشکل حلقه ی دوم مقادیر آرایه ی []st هست که توسط حلقه ی قبلی تعیین میشه!فکر میکنم اگر روند حذفت رو طوری تعریف کنی که با گرفتن "آی دی مورد نظر برای حذف شدن" در ورودی تابع انجام بشه این مشکل هم بر طرف بشه..
 

HH2BN1990

کاربر فعال
این حلقه ی اول تو قسمت حذف نشون می ده که شما می خواستی از آخر آرایه یک عنصر رو حذف کنی !
ولی از اونجایی که مقدار i و j برابر هستش این حلقه به مشکل بر می خوره !! باید S رو صفر بزارین !

کد:
[LEFT]        private void button4_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            if (j > 0)
            {
                for (int s = 0; s < (j - 1); s++)
                {
                    st[s].id = st[s + 1].id;
                    st[s].name = st[s + 1].name;
                    st[s].family = st[s + 1].family;
                    st[s].course = st[s + 1].course;
                    st[s].average = st[s + 1].average;
                    st[s].address = st[s + 1].address;
                }
                st[j] = new student();
                j--;
                for (i = 0; i < j; i++)
                {
                    listBox1.Items.Add((i + 1) + "      " + st[i].id + "             " + st[i].name + "               " + st[i].family + "                  " + st[i].course + "                  " + st[i].average + "                   " + st[i].address);
                }
            }
        }
[/LEFT]


 

milititi*

عضو جدید
سلام.ممنون از راهنماییتون
اول باید id مورد نظر رو در تکس باکس جلوی آی دی (شماره دانشجو)بنویسیم.بعد سرچ رو انتخاب.اونوقت حذف رو میزنیم
بازم ممنون:gol:
 
آخرین ویرایش:

milititi*

عضو جدید
سلام ممنون از راهنماییتون

سلام ممنون از راهنماییتون

آره منم امتحان کردم قسمت حذف کار نمیکنه!

مشکل در این قسمت هاست:
کد:
 for (s = i-1; s <= j; s++)
            {
               st[s].id = st[s + 1].id;
               st[s].name = st[s + 1].name;
               st[s].family = st[s + 1].family;
               st[s].course = st[s + 1].course;
               st[s].average = st[s + 1].average;
               st[s].address = st[s+ 1].address;
             }
           
            for (i = 0; i <=j; i++)
            {
                listBox1.Items.Add(i + "      " + st[i+1].id + "             " + st[i+1].name + "               " + st[i+1].family + "                  " + st[i+1].course + "                  " + st[i+1].average + "                   " + st[i+1].address);
            }


مشکل حلقه ی اول مقدار i , j هست...باید توجه داشته باشین که مقدار این متغیرها با اجرای توابع تغییر میکنه ...من مجدد اونها رو مقدار دهی کردم و مشکل حلقه ی اول رفع شد..

اما مشکل حلقه ی دوم مقادیر آرایه ی []st هست که توسط حلقه ی قبلی تعیین میشه!فکر میکنم اگر روند حذفت رو طوری تعریف کنی که با گرفتن "آی دی مورد نظر برای حذف شدن" در ورودی تابع انجام بشه این مشکل هم بر طرف بشه..


اول باید id مورد نظر رو در تکس باکس جلوی آی دی (شماره دانشجو)بنویسیم.بعد سرچ رو انتخاب.اونوقت حذف رو میزنیم
بازم ممنون
 

HH2BN1990

کاربر فعال
سلام.ممنون از راهنماییتون
اول باید id مورد نظر رو در تکس باکس جلوی آی دی (شماره دانشجو)بنویسیم.بعد سرچ رو انتخاب.اونوقت حذف رو میزنیم
بازم ممنون:gol:

کد:
[LEFT]            listBox1.Items.Clear();
           
            for (int k = 0; k < j; k++)
            {
                listBox1.Items.Add(k + "      " + st[k].id + "             " + st[k].name + "               " + st[k].family + "                  " + st[k].course + "                  " + st[k].average + "                   " + st[k].address);
            }


            for (int k = j; k < (i-1); k++)
            {
               st[k].id = st[k + 1].id;
               st[k].name = st[k + 1].name;
               st[k].family = st[k + 1].family;
               st[k].course = st[k + 1].course;
               st[k].average = st[k + 1].average;
               st[k].address = st[k+ 1].address;
             }
            i--;
            for (int k = j; k < i; k++)
            {
                listBox1.Items.Add(k + "      " + st[k].id + "             " + st[k].name + "               " + st[k].family + "                  " + st[k].course + "                  " + st[k].average + "                   " + st[k].address);


            }[/LEFT]

خوب با این توضیحات اینجور میشه که j اشاره می کنه به اندیسی که قراره حذف بشه و i تعداد اعضای آرایه رو نشون می ده !
خوب ما اول می آیم اعضایی که قبل اون عضوی از آرایه که قراره حذف بشه رو نشون می دیم (حلقه ی اول) بعد با حلقه ی دوم مابقی اعضا رو شیفت می دیم ! و بعد اعضایی که بعد از عضوی که قراره حذف بشه رو نشون می دیم (حلقه ی سوم )
البته شاید راه حل دیگه هم باشه ولی این به ذهن من رسید ! البته اگه به جای آرایه از List استفاده می شد که خیلی راحت تر بود !
 

milititi*

عضو جدید
کد:
[LEFT]           listBox1.Items.Clear();
           
            for (int k = 0; k < j; k++)
            {
                listBox1.Items.Add(k + "      " + st[k].id + "             " + st[k].name + "               " + st[k].family + "                  " + st[k].course + "                  " + st[k].average + "                   " + st[k].address);
            }


            for (int k = j; k < (i-1); k++)
            {
               st[k].id = st[k + 1].id;
               st[k].name = st[k + 1].name;
               st[k].family = st[k + 1].family;
               st[k].course = st[k + 1].course;
               st[k].average = st[k + 1].average;
               st[k].address = st[k+ 1].address;
             }
            i--;
            for (int k = j; k < i; k++)
            {
                listBox1.Items.Add(k + "      " + st[k].id + "             " + st[k].name + "               " + st[k].family + "                  " + st[k].course + "                  " + st[k].average + "                   " + st[k].address);


            }[/LEFT]

خوب با این توضیحات اینجور میشه که j اشاره می کنه به اندیسی که قراره حذف بشه و i تعداد اعضای آرایه رو نشون می ده !
خوب ما اول می آیم اعضایی که قبل اون عضوی از آرایه که قراره حذف بشه رو نشون می دیم (حلقه ی اول) بعد با حلقه ی دوم مابقی اعضا رو شیفت می دیم ! و بعد اعضایی که بعد از عضوی که قراره حذف بشه رو نشون می دیم (حلقه ی سوم )
البته شاید راه حل دیگه هم باشه ولی این به ذهن من رسید ! البته اگه به جای آرایه از List استفاده می شد که خیلی راحت تر بود !


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

HH2BN1990

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

خب شما اگه یک breakpoint بزارین و اون تابع رو debug کنید متوجه میشین قضیه از چه قراره
فرض کنید 3 تا دانشجو رو ثبت کردیم و می خوایم دومی رو حذف کنیم !
وقتی برای اولین بار برنامه وارد تابع حذف میشه ما این مقدار ها رو داریم
j که مقدارش یک هست یعنی اندیس عضوی از آرایه که قراره حذف بشه . و i هم مقدارش 3 هست یعنی تعداد اعضای آرایه !
خوب با این شرایط حلقه ی اول اجرا نخواهد شد طبق اون شرط ! چون مقدار s دو هستش .
وقتی وارد حلقه ی دوم میشه مقدار i صفر میشه !و چون مقدار j یک مونده بنابراین این حلقه میاد 2تا عضو اول آرایه رو اضافی می کنه به لیست .
برای بار دوم که این تابع اجرا میشه مقدار j که همون یک مونده ولی مقدار i از سه به دو عوض شده ! بنابراین حلقه ی اول یک بار اجرا می شه طبق اون شرطی که داره .(مقدار s یک هستش) پس میاد اعضایی که بعد از عضو دوم که قرار هست حذفش کنیم یکی شیفت می ده .تو این مثال عضو سه میاد به جای عضو دوم .
وقتی وارد حلقه ی دوم میشه دوباره مقدار i صفر میشه ! و چون مقدار j یک هست بنابراین این حلقه دوبار اجرا میشه ! پس عضو اول و دوم رو وارد لیست می کنه . (در ضمن لیست باکس یه بار دیگه اول تابع خالی شده )
اما تو این مثال که 3 تا عضو داشتیم درست کار کرد تعداد عضو بالا بشه دیگه کار نمی کنه ! چرا چون i تعداد اعضای آرایه رو نشون می ده و با صفر شدنش ما دیگه نمی دونیم تعداد اعضا چقدره ! و چون حلقه ی دوم تا j پیش میره پس i هم تعداد اعضا رو تا اون عضو حذف شده نشون می ده ! یعنی اگه 10 تا عضو باشه و شما عضو 6 رو حذف کنید ! باید مقدار i نه بشه ولی تبدیل به 6 میشه !

امیدوارم واضح گفته باشم ! :D
 

milititi*

عضو جدید
خب شما اگه یک breakpoint بزارین و اون تابع رو debug کنید متوجه میشین قضیه از چه قراره
فرض کنید 3 تا دانشجو رو ثبت کردیم و می خوایم دومی رو حذف کنیم !
وقتی برای اولین بار برنامه وارد تابع حذف میشه ما این مقدار ها رو داریم
j که مقدارش یک هست یعنی اندیس عضوی از آرایه که قراره حذف بشه . و i هم مقدارش 3 هست یعنی تعداد اعضای آرایه !
خوب با این شرایط حلقه ی اول اجرا نخواهد شد طبق اون شرط ! چون مقدار s دو هستش .
وقتی وارد حلقه ی دوم میشه مقدار i صفر میشه !و چون مقدار j یک مونده بنابراین این حلقه میاد 2تا عضو اول آرایه رو اضافی می کنه به لیست .
برای بار دوم که این تابع اجرا میشه مقدار j که همون یک مونده ولی مقدار i از سه به دو عوض شده ! بنابراین حلقه ی اول یک بار اجرا می شه طبق اون شرطی که داره .(مقدار s یک هستش) پس میاد اعضایی که بعد از عضو دوم که قرار هست حذفش کنیم یکی شیفت می ده .تو این مثال عضو سه میاد به جای عضو دوم .
وقتی وارد حلقه ی دوم میشه دوباره مقدار i صفر میشه ! و چون مقدار j یک هست بنابراین این حلقه دوبار اجرا میشه ! پس عضو اول و دوم رو وارد لیست می کنه . (در ضمن لیست باکس یه بار دیگه اول تابع خالی شده )
اما تو این مثال که 3 تا عضو داشتیم درست کار کرد تعداد عضو بالا بشه دیگه کار نمی کنه ! چرا چون i تعداد اعضای آرایه رو نشون می ده و با صفر شدنش ما دیگه نمی دونیم تعداد اعضا چقدره ! و چون حلقه ی دوم تا j پیش میره پس i هم تعداد اعضا رو تا اون عضو حذف شده نشون می ده ! یعنی اگه 10 تا عضو باشه و شما عضو 6 رو حذف کنید ! باید مقدار i نه بشه ولی تبدیل به 6 میشه !

امیدوارم واضح گفته باشم ! :D

ممنون ...باید ببینم ایراد کارم کجاست....iرو مساوی صفر قرار ندادم...مگه اندیس در سی شارپ از صفر شروع نمیشه!....یعنی از اولین اندیس کار رو شروع کن...
روز خوش:question:
 

HH2BN1990

کاربر فعال
ممنون ...باید ببینم ایراد کارم کجاست....iرو مساوی صفر قرار ندادم...مگه اندیس در سی شارپ از صفر شروع نمیشه!....یعنی از اولین اندیس کار رو شروع کن...
روز خوش:question:

i یک متغیر عمومی هستش !

کد:
[LEFT]for (i = 0; i <=j; i++)[/LEFT]
اینجا مساوی صفر کردین !!!!!!!!
 

milititi*

عضو جدید
i یک متغیر عمومی هستش !

کد:
[LEFT]for (i = 0; i <=j; i++)[/LEFT]
اینجا مساوی صفر کردین !!!!!!!!




سلام ....راست گفتی حق با شما بود ..در جستجو j دستکاری میشد...یه متغییر جدید تعریف کردم که طول آرایه رو داشته باشه مثل sum.که هروقت ذخیره رو زدم یدونه بهش اضافه شه....
اما برنامه رو چه تغییری بدم که جواب بده...



مشاهده پیوست sabt.txt
 

HH2BN1990

کاربر فعال
قبلا گفتم تو تابع حذف باید چی بنویسی !

کد:
[LEFT]           listBox1.Items.Clear();
           
            for (int k = 0; k < j; k++)
            {
                listBox1.Items.Add(k + "      " + st[k].id + "             " + st[k].name + "               " + st[k].family + "                  " + st[k].course + "                  " + st[k].average + "                   " + st[k].address);
            }


            for (int k = j; k < (i-1); k++)
            {
               st[k].id = st[k + 1].id;
               st[k].name = st[k + 1].name;
               st[k].family = st[k + 1].family;
               st[k].course = st[k + 1].course;
               st[k].average = st[k + 1].average;
               st[k].address = st[k+ 1].address;
             }
            i--;
            for (int k = j; k < i; k++)
            {
                listBox1.Items.Add(k + "      " + st[k].id + "             " + st[k].name + "               " + st[k].family + "                  " + st[k].course + "                  " + st[k].average + "                   " + st[k].address);


            }[/LEFT]
 

milititi*

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

HH2BN1990

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

الان من عصبانیم ؟؟؟/؟؟؟؟؟؟:que:
خب مگه i طول آرایه رو نگه نمی داشت؟
می تونی از i استتفاده کنی !
 

sara _irani

عضو جدید
دوست عزیز میشه پروژه رو بزاری من ببینم
منم میخوام این کارو بکنم
ببینم چی کار کردی
 

milititi*

عضو جدید
دوست عزیز میشه پروژه رو بزاری من ببینم
منم میخوام این کارو بکنم
ببینم چی کار کردی

سلام.صبح زیباتون بخیر
یه مقدار اجراش ایراد داره ..احتمالا تا چند ساعت دیگه با نام اصلاح ثبت نام دانشجو میزارم رو تالار...
:redface:
 

milititi*

عضو جدید
اصلاحیه تاپیک(ثبت نام دانشجو با آرایه)

اصلاحیه تاپیک(ثبت نام دانشجو با آرایه)

اصلاح شده ثبت نام دانشجو با آرایه....( نام کاربری HH2BN1990در رفع اشکال این پروژه خیلی کمک کرد :gol: )......امیدوارم اشکال دیگه ای نداشته باشه

مشاهده پیوست sabte nahaee.rar
 

amin_blog

عضو جدید
چطور

چطور

چطور میتونیم کاری کنیم که این برنامه اطلاعات رو در یک فایل dat یا تکست ذخیره کنه؟
 

Similar threads

بالا