PDA

نسخه کامل مشاهده نسخه کامل : از کجا شروع کنم



teifoor
26-04-2007, 23:00
سلام به من کمک کنید
من می خوام یه برنامه ساده بنویسم تو#C که یک عمل جمع رو انجام بده و قبل از وارد شدن pasword بخواد لطفاکمکم کنید ممنون میشم.
البته اینو بگم تازه کارم.

hamidreza_buddy
26-04-2007, 23:50
لتفا
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
دمت گرم حال دادی. کلی خندیدیم!

پروژه رو از اینجا ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) بگیرید.
قسمت اصلی برنامت اون قسمت پسوردشه.
معمولاً توی برنامه های واقعی user و password ها توی یه دیتابیس و یا یه فایل (معمولاً xml) نگهداری میشه.
معمولاً هم پسوردها به صورت encrypt شده ذخیره میشه (منظور اینه که اونو رمزگذاری میکنن که کسی با باز کردن دیتابیس و یا فایل نتونه پسوردو ببینه).

ما فرض می کنیم که user و pass ها توی یه فایل معمولیه (text file) به نام users.p30 .
و همچنین توی خط اول user و خط دوم پسورد اون user (به صورت رمز نشده) هستش. مثلاً اگه سه user با نام های admin و p30 و teifoor داشته باشیم فایلمون اینجوری باشه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که زیر هر user پسوردش هست.

باید بتونی با فایل ها کار کنی. خیلی راحته. با مراجعه به این تاپیک ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) میتونی یاد بگیری.
البته یکم خودم توضیح می دم.

1- اول پروژه رو بساز (به هر نامی که دوس داری)
2- بعد Add New Item کن و یه Windows Form به پروژه اضافه کن.
3- توی این جدیده فرم جمع کردنو بساز:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

* توجه کنید که textBox نتیجه به صورت ReadOnly و کاربر نمی تونه اونو تغییر بده.
* روی دکمه دابل کلیک کن تا event ش باز بشه. توی event handler کد زیر رو بنویس:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

int.Parse یک متد استاتیک هست که یک رشته میگیره و اونو تبدیل به int میکنه. .ToString هم که تو اون تاپیک برات توضیح دادم.
البته بهتره این کد رو توی یک try-catch بذاری چون اگر کاربر داده رو اشتباه وارد کرد برنامه متوقف نشه و فقط یه اخطار نشون بده:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید[/b]
لطفاً به کلمۀ لتفاً دقت کنید!

4- توی فرم اول، ورود کاربر رو بساز:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

روی دکمه دابل کلیک کن:
کد زیر را در event handler قرار بده:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

به خطوط bold توجه کن. ابتدا یک StreamReader می سازیم و نام فایل را به آن ارسال می کنیم. سپس تا وقتی که به انتهای فایل نرسیده ایم (userFile.EndOfStream == False) هی دوتا دوتا از فایل می خوانیم (خط اول user و خط دوم pass او) و هر جا ورودی کاریر (در textBox) با یکی از این ها برابر شد پنجرۀ جدید را باز می کنیم (addForm.Show())

البته در کار با فایل ها باید حتماً try-catch استفاده کنید. زیرا امکان بروز خطا (عدم وجود فایل، خطا در فرمت فایلو...) بسیار زیاد است:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
میبینید که اول خود فرم اولیه خودشو hide می کنه و بعد یه فرم Add رو می سازه و نشون می ده. بعد از اتمام اون هم user و pass و توی textBox پاک می کنه و دوباره صفحۀ Login رو نشون می ده.
* بعد از while هم می تونی یه MessageBox با این پیام که "شناسۀ کاربری و یا رمز عبور اشتباه وارد شده".

فقط یادت باشه که فایل users.p30 رو با محتوای بالا توی شاخۀ Debug پروژه کپی کنی.
پروژه رو از اینجا ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) بگیرید.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

teifoor
27-04-2007, 23:47
حمید جان بازم دستت درد نکنه با این که به من خندیدی ...اینم بگم خودم هم اول خندیدم بعد زنگ زدم به دوستم گفتم بیاد ببینه چی جوابم دادی ..بازم ممنون

teifoor
02-05-2007, 00:12
سلام
من اصلا کار با فایل ها رو نفهمیدم و این که stream reader رو میزنم اسمشو برام نمیاره .خیلی هم سرو کله زدم ولی بازم نشد.

hamidreza_buddy
02-05-2007, 03:17
باید namespace به نام System.IO رو استفاده کنی.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

teifoor
04-05-2007, 00:11
سلام من با #Cسرو کله میزنم ولی احساس می کنم خیلی سخته واز طرفی کار کردن با#Cخیلی دوست دارم.ولی نمی دونم از کجا شروع کنم
از مطالب اینجا هم زیاد سر در نمی یارم البته بعضی چیزهارو می فهمم ولی خیلی کم.
لطف کنید بگید از کجا شروع کنم . ممنون می شم .

teifoor
04-05-2007, 02:15
استفاده معمول convert کجاست ؟
با مثال توضیح بدید لطفا.

teifoor
04-05-2007, 02:18
اگه از استفاده کر دن از class ها صرف نظر کنیم چه مشکلی پیش میاد ؟

teifoor
04-05-2007, 02:21
سلام
back ground یک فرم را چجوری میشه عوض کرد مثلا یک عکس گذاشت؟

teifoor
05-05-2007, 22:37
برنامه رو درست کردم ولی 2تا مشکل دارم یگی این که قسمت passwordوقتی تایپ می گنم به شکل ستاره نیست و دوم این که وقتی تایپ می کنم while (!userFile.EndOfStream)
از endofstreamایراد میگیره .

teifoor
05-05-2007, 22:43
جواب سوال هامو بدین لطفا

teifoor
05-05-2007, 23:02
toint 32 کارش چیه ؟ من از یک کتاب خوندم ولی اصلا متوجه نشدم.

hamidreza_buddy
06-05-2007, 21:30
اگه از استفاده کر دن از class ها صرف نظر کنیم چه مشکلی پیش میاد ؟

اگه با مباحث شئ گرایی آشنا باشید متوجه می شید. مثلاً همین که می تونین به این راحتی یه فرم بسازید خودش از مزایای همین کلاس هاست. نمیشه توی یک پست مزایاشو گفت ولی اگه خیلی مشتاقی دربارۀ شئ گرایی و یا object oriented سرچ کن.

hamidreza_buddy
06-05-2007, 21:32
سلام
back ground یک فرم را چجوری میشه عوض کرد مثلا یک عکس گذاشت؟

همونجا که فرم رو طراحی میکنید میشه اینکارو کرد. روی فرم کلیک کن و توی پنجرۀ Property برو به BackGround و اونجا انتخاب کن.

hamidreza_buddy
06-05-2007, 21:36
برنامه رو درست کردم ولی 2تا مشکل دارم یگی این که قسمت passwordوقتی تایپ می گنم به شکل ستاره نیست و دوم این که وقتی تایپ می کنم while (!userFile.EndOfStream)
از endofstreamایراد میگیره .

برای پسورد باید Mode مربوط به TextBox رو Password کنی.

در مورد EndOfStream هم احتمالاً غلط املایی داری.
کد رو گذاشتم. اون رو بگیر و مقایسه کن. حجمش خیلی کمه.

hamidreza_buddy
06-05-2007, 21:39
toint 32 کارش چیه ؟ من از یک کتاب خوندم ولی اصلا متوجه نشدم.

این متد یک نوع داده رو به یک نوع دادۀ دیگه تبدیل می کنه. مثلاً ممکنه که یه char داشته باشی و بخواهی اونو int کنی. می تونی از این استفاده کنی.

لینکی برای Convert:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

teifoor
06-05-2007, 23:37
حمید جان ازت ممنون بابت راهنماییت