بهترین فرصت آموزش در جشنواره تخفیف های توسینسو بهترین فرصت آموزش در جشنواره تخفیف های توسینسو
مانده تا پایان تخفیف ها
مشاهده دوره ها
0

تحلیل کد دریافت نام کاربری و رمز عبور و چاپ پیام

با سلام خدمت مهندسین محترم من یک کدی رو نوشتم که username و پسورد رو از کاربر بگیره و در صورت درست بودن اون یک پیامی رو چاپ کنه اما در قسمت فراخوانی متدهای به کارگرفته شده در کلاسی که نوشتم در تابع main ارور میده نمیفمم چرا؟؟!! کد به این صورت هست:

class Program
    {
        static void Main(string[] args)
        {
            welcome w = new welcome();
            w.giveinfo();
            w.display();

            Console.ReadKey();
        }

        class welcome
        {
            string password;
            string p;
            string username;
            string u;

            public static void giveinfo(string u, string p)
            {
                Console.WriteLine("please enter your username to save:");
                u = Console.ReadLine();
                Console.WriteLine("please enter your password to save:");
                p = Console.ReadLine();
                Console.Clear();
            }
            public static void DisPlay(string username, string password, string u, string p): this (string u,string p)
            {
                Console.WriteLine("welcome to Bank , please enter your username:");
                username = Console.ReadLine();
                Console.WriteLine("then, please enter your password:");
                password = Console.ReadLine();

                if ((u == username) && (p == password))
                {
                    Console.WriteLine("welcome to your bank profile");
                }
                else
                {
                    Console.WriteLine(" the username and password isnt correct please try again...");
                }
            }
        }
    }  
پرسیده شده در 1396/03/10 توسط

5 پاسخ

1

سلام به شما دوست عزیز

لزومی ندارد که متدهای شما در این برنامه از نوع Static تعریف شوند. متدهایی که استاتیک تعریف شوند فقط می توانند به اعضای استاتیک دسترسی داشته باشند. ولی در این برنامه شما متغیر های u,p, username, password را به صورت معمولی و غیراستاتیک تعریف کرده اید. من کد شما را به شکل زیر تغییر دادم

class welcome
        {
            string password;
            string p;
            string username;
            string u;

            public  void giveinfo()
            {
                Console.WriteLine("please enter your username to save:");
                 u = Console.ReadLine();
                Console.WriteLine("please enter your password to save:");
                 p = Console.ReadLine();
                Console.Clear();
            }
            public  void DisPlay()
            {
                Console.WriteLine("welcome to Bank , please enter your username:");
                string username = Console.ReadLine();
                Console.WriteLine("then, please enter your password:");
                string password = Console.ReadLine();

                if ((u == username) && (p == password))
                {
                    Console.WriteLine("welcome to your bank profile");
                }
                else
                {
                    Console.WriteLine(" the username and password isnt correct please try again...");
                }
            }
        }
        private static void Main(string[] args)
        {
           var myW=new welcome();
            myW.giveinfo();
            myW.DisPlay();
            Console.ReadKey();
}
پاسخ در 1396/03/11 توسط
0

شما دو تا تابع تعریف کردی تو کلاس (giveinfo و display)که هر کدوم چنذ تا پارامتر دارند ولی زمان استفاده از اونها اصلا بهشون پارامتری رو پاس ندادی !

بنابر این برنامه شما اصلا حتی کامپایل هم نمبشه چه برسه به اینکه در اجرا خطا بده.

پاسخ در 1396/03/10 توسط
0

با سلام خیلی ممنون از پاسخگویی تون. با توجه به این کدی که فرستادید یه چنتا سوال برام پیش اومد؟؟

1. چرا تابع main رو از نوع private تعریف کردید؟؟

2. مگه میشه برای ساختن یک شی از روی کلاس ، اون کلاس رو از نوع var تعریف کرد نه با نام کلاس؟؟؟

3. الان برنامه خب کامل اجرا میشه ولی دستور اول بخش if رو در صورت صحیح بودن انجام نمیده و دستور دوم رو چاپ میکنه، همه ی قسمت های کد که دسته پس چی اشتباهه؟؟

پاسخ در 1396/03/11 توسط
1

سلام

این که تابع main را private یا public تعریف کنید مشکلی پیش نمیاید.

در سی شارپ جدید این امکان وجود دارد که شما موقع تعریف یک شی اون رو از نوع var تعریف کنید. البته بعدش باید مقداردهی کنید اون شی رو تا کامپایلر بتونه نوع شی رو خودش تشخیص بده.

من کد بالا رو دوباره اجرا کردم و اگر شما username و password رو درست وارد کرده باشید جواب درست به شما خواهد داد.

پاسخ در 1396/03/11 توسط
0

الان تقریبا کد رو درستش کردم.ولی چجوری باید در قسمت main از متدها برای فراخوانی شون استفاده کنم؟؟؟

 class Program
    {
        static void Main(string[] args)
        {
            welcome w = new welcome();
            
            Console.ReadKey();
        }

        class welcome
        {
            string password;
            string p;
            string username;
            string u;

            public static void giveinfo()
            {
                Console.WriteLine("please enter your username to save:");
               string  u = Console.ReadLine();
                Console.WriteLine("please enter your password to save:");
               string  p = Console.ReadLine();
                Console.Clear();
            }
            public static void DisPlay(string u, string p)
            {
                Console.WriteLine("welcome to Bank , please enter your username:");
                string username = Console.ReadLine();
                Console.WriteLine("then, please enter your password:");
                string password = Console.ReadLine();

                if ((u == username) && (p == password))
                {
                    Console.WriteLine("welcome to your bank profile");
                }
                else
                {
                    Console.WriteLine(" the username and password isnt correct please try again...");
                }
            }
        }
    }
پاسخ در 1396/03/10 توسط

پاسخ شما