سلام به من کمک کنید
من می خوام یه برنامه ساده بنویسم تو#C که یک عمل جمع رو انجام بده و قبل از وارد شدن pasword بخواد لطفاکمکم کنید ممنون میشم.
البته اینو بگم تازه کارم.
Printable View
سلام به من کمک کنید
من می خوام یه برنامه ساده بنویسم تو#C که یک عمل جمع رو انجام بده و قبل از وارد شدن pasword بخواد لطفاکمکم کنید ممنون میشم.
البته اینو بگم تازه کارم.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]نقل قول:
لتفا
دمت گرم حال دادی. کلی خندیدیم!
پروژه رو از [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] بگیرید.
قسمت اصلی برنامت اون قسمت پسوردشه.
معمولاً توی برنامه های واقعی user و password ها توی یه دیتابیس و یا یه فایل (معمولاً xml) نگهداری میشه.
معمولاً هم پسوردها به صورت encrypt شده ذخیره میشه (منظور اینه که اونو رمزگذاری میکنن که کسی با باز کردن دیتابیس و یا فایل نتونه پسوردو ببینه).
ما فرض می کنیم که user و pass ها توی یه فایل معمولیه (text file) به نام users.p30 .
و همچنین توی خط اول user و خط دوم پسورد اون user (به صورت رمز نشده) هستش. مثلاً اگه سه user با نام های admin و p30 و teifoor داشته باشیم فایلمون اینجوری باشه:
که زیر هر user پسوردش هست.کد:admin
123456
p30
hehehe
teifoor
havij
باید بتونی با فایل ها کار کنی. خیلی راحته. با مراجعه به [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] میتونی یاد بگیری.
البته یکم خودم توضیح می دم.
1- اول پروژه رو بساز (به هر نامی که دوس داری)
2- بعد Add New Item کن و یه Windows Form به پروژه اضافه کن.
3- توی این جدیده فرم جمع کردنو بساز:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
* توجه کنید که textBox نتیجه به صورت ReadOnly و کاربر نمی تونه اونو تغییر بده.
* روی دکمه دابل کلیک کن تا event ش باز بشه. توی event handler کد زیر رو بنویس:
int.Parse یک متد استاتیک هست که یک رشته میگیره و اونو تبدیل به int میکنه. .ToString هم که تو اون تاپیک برات توضیح دادم.کد:private void button1_Click(object sender, EventArgs e)
{
int a = int.Parse(textBox1.Text);
int b = int.Parse(textBox2.Text);
textBox3.Text = (a + b).ToString();
}
البته بهتره این کد رو توی یک try-catch بذاری چون اگر کاربر داده رو اشتباه وارد کرد برنامه متوقف نشه و فقط یه اخطار نشون بده:
کد:private void button1_Click(object sender, EventArgs e)
{
try
{
int a = int.Parse(textBox1.Text);
int b = int.Parse(textBox2.Text);
textBox3.Text = (a + b).ToString();
}
catch
{
MessageBox.Show("لتفا عدد را صحیح وارد کنید");
}
}
لطفاً به کلمۀ لتفاً دقت کنید!
4- توی فرم اول، ورود کاربر رو بساز:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
روی دکمه دابل کلیک کن:
کد زیر را در event handler قرار بده:
به خطوط bold توجه کن. ابتدا یک StreamReader می سازیم و نام فایل را به آن ارسال می کنیم. سپس تا وقتی که به انتهای فایل نرسیده ایم (userFile.EndOfStream == False) هی دوتا دوتا از فایل می خوانیم (خط اول user و خط دوم pass او) و هر جا ورودی کاریر (در textBox) با یکی از این ها برابر شد پنجرۀ جدید را باز می کنیم (addForm.Show())کد:private void button1_Click(object sender, EventArgs e)
{
StreamReader userFile = new StreamReader("users.p30");
while (!userFile.EndOfStream)
{
string user = userFile.ReadLine();
string pass = userFile.ReadLine();
if (user == textBox1.Text && pass == textBox2.Text)
{
this.Hide();
Form2 addForm = new Form2();
addForm.ShowDialog();
textBox1.Text = "";
textBox2.Text = "";
this.Show();
}
}
}
البته در کار با فایل ها باید حتماً try-catch استفاده کنید. زیرا امکان بروز خطا (عدم وجود فایل، خطا در فرمت فایلو...) بسیار زیاد است:
میبینید که اول خود فرم اولیه خودشو hide می کنه و بعد یه فرم Add رو می سازه و نشون می ده. بعد از اتمام اون هم user و pass و توی textBox پاک می کنه و دوباره صفحۀ Login رو نشون می ده.کد:private void button1_Click(object sender, EventArgs e)
{
try
{
StreamReader userFile = new StreamReader("users.p30");
while (!userFile.EndOfStream)
{
string user = userFile.ReadLine();
string pass = userFile.ReadLine();
if (user == textBox1.Text && pass == textBox2.Text)
{
this.Hide();
Form2 addForm = new Form2();
addForm.ShowDialog();
textBox1.Text = "";
textBox2.Text = "";
this.Show();
}
}
}
catch
{
MessageBox.Show("برنامه قادر به باز کردن فایل نیست");
}
}
* بعد از while هم می تونی یه MessageBox با این پیام که "شناسۀ کاربری و یا رمز عبور اشتباه وارد شده".
فقط یادت باشه که فایل users.p30 رو با محتوای بالا توی شاخۀ Debug پروژه کپی کنی.
پروژه رو از [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] بگیرید.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
حمید جان بازم دستت درد نکنه با این که به من خندیدی ...اینم بگم خودم هم اول خندیدم بعد زنگ زدم به دوستم گفتم بیاد ببینه چی جوابم دادی ..بازم ممنون
سلام
من اصلا کار با فایل ها رو نفهمیدم و این که stream reader رو میزنم اسمشو برام نمیاره .خیلی هم سرو کله زدم ولی بازم نشد.
باید namespace به نام System.IO رو استفاده کنی.
کد:using System.IO;
سلام من با #Cسرو کله میزنم ولی احساس می کنم خیلی سخته واز طرفی کار کردن با#Cخیلی دوست دارم.ولی نمی دونم از کجا شروع کنم
از مطالب اینجا هم زیاد سر در نمی یارم البته بعضی چیزهارو می فهمم ولی خیلی کم.
لطف کنید بگید از کجا شروع کنم . ممنون می شم .
استفاده معمول convert کجاست ؟
با مثال توضیح بدید لطفا.
اگه از استفاده کر دن از class ها صرف نظر کنیم چه مشکلی پیش میاد ؟
سلام
back ground یک فرم را چجوری میشه عوض کرد مثلا یک عکس گذاشت؟
برنامه رو درست کردم ولی 2تا مشکل دارم یگی این که قسمت passwordوقتی تایپ می گنم به شکل ستاره نیست و دوم این که وقتی تایپ می کنم while (!userFile.EndOfStream)
از endofstreamایراد میگیره .