Announcement

Collapse
No announcement yet.

Bài tập Lập Trình Win lớp Thầy Nam chiều thứ 5

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C#] Bài tập Lập Trình Win lớp Thầy Nam chiều thứ 5

    Cần giúp đỡ bộ môn Lập trình Win, đặc biệt 2 bài tập (2 và 5) của thầy Nam chiều thứ 5.
    Bạn nào làm r có thể share cho mình source code tham khảo dc không, tại vì nói thẳng là mình chưa biết cách làm gì hết, có hỏi thánh google thì cũng ko hiểu. Mong dc các bạn giúp đỡ.
    À có đề bài cho các bạn muốn làm:
    1. Viết ứng dụng trên Consoe App in ra tháng trước và sau tháng và năm nhập vào.
    Ví dụ: Nhập tháng 9/2013
    Sẽ in ra cả lịch tháng 8/2013 và tháng 10/2013, nhưng là cả lịch tháng đó kể cả THỨ NGÀY
    2. Khai báo phương thức nhập tham số là tên của 1 thư mục sau đó in tên, in danh sách các tên, tập tin trong thư mục đó. Nếu ko tìm thấy: "File not found"
    Mong các bạn giúp đỡ ^^

  • #2
    Đây nè bác. Bác muốn trình bày đẹp thì bác dùng /t rồi tuỳ cơ ứng biến nha. Phần này là ý tưởng của mình thôi nên mình liệt kê ra một đống dòng.
    Code:
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                DateTime d;
                Console.Write("Nhap thang nam:");
                d = DateTime.Parse(Console.ReadLine());
                d=d.AddMonths(-1);
                for (int i = 1; i <= DateTime.DaysInMonth(d.Year,d.Month); i++)
                {
                    d = DateTime.Parse(i.ToString() + "/" + d.Month + "/" + d.Year);
                    Console.WriteLine(d.DayOfWeek +" "+ i.ToString() + "/" + d.Month + "/" + d.Year);
                }
                d = d.AddMonths(1);
                for (int i = 1; i <= DateTime.DaysInMonth(d.Year, d.Month); i++)
                {
                    d = DateTime.Parse(i.ToString() + "/" + d.Month + "/" + d.Year);
                    Console.WriteLine(d.DayOfWeek + " " + i.ToString() + "/" + d.Month + "/" + d.Year);
                }
                Console.ReadLine();
            }
        }
    }

    Comment


    • #3
      À quên mất bài 2:
      Code:
      using System;
      using System.Collections.Generic;
      using System.Text;
      using System.IO;
      
      namespace ConsoleApplication1
      {
          class Program
          {
              static void Main(string[] args)
              {
                  string[] a;
                  string s;
                  Console.Write("Nhap duong dan: ");
                  s = Console.ReadLine();
                  if (!Directory.Exists(s))
                  {
                      Console.WriteLine("Thu muc khong ton tai");
                      Console.ReadLine();
                      return;
                  }
                  a=Directory.GetDirectories(s);
                  for (int i = 0; i < a.Length; i++)
                  {
                      Console.WriteLine("<DIR>" + a[i]);
                  }
                  a = Directory.GetFiles(s);
                  for (int i = 0; i < a.Length; i++)
                  {
                      Console.WriteLine("<FILE>" + a[i]);
                  }
                  Console.ReadLine();
              }
          }
      }

      Comment


      • #4
        Originally posted by 11520592 View Post
        À quên mất bài 2:
        Code:
        using System;
        using System.Collections.Generic;
        using System.Text;
        using System.IO;
        
        namespace ConsoleApplication1
        {
            class Program
            {
                static void Main(string[] args)
                {
                    string[] a;
                    string s;
                    Console.Write("Nhap duong dan: ");
                    s = Console.ReadLine();
                    if (!Directory.Exists(s))
                    {
                        Console.WriteLine("Thu muc khong ton tai");
                        Console.ReadLine();
                        return;
                    }
                    a=Directory.GetDirectories(s);
                    for (int i = 0; i < a.Length; i++)
                    {
                        Console.WriteLine("<DIR>" + a[i]);
                    }
                    a = Directory.GetFiles(s);
                    for (int i = 0; i < a.Length; i++)
                    {
                        Console.WriteLine("<FILE>" + a[i]);
                    }
                    Console.ReadLine();
                }
            }
        }
        bạn quên 1 vấn đề là trong các folder mình lấy ra nó không phải là folder rỗng?

        Comment


        • #5
          Bài 1:

          Code:
                  static void Main(string[] args)
                  {
                      DateTime current;
                      DateTime before;
                      DateTime after;
                      Console.WriteLine("Enter (mm/yyyy)"); 
          
                      current = DateTime.ParseExact(Console.ReadLine(),"MM/yyyy",null);
                      before = current.AddMonths(-1);
                      after = current.AddMonths(1);
                      
                      PrintMonth(before);
                      PrintMonth(current);            
                      PrintMonth(after);
                                                                    
                  }
          
                  static void PrintMonth(DateTime current)
                  {
                      int firstDayOfWeek = int.Parse(current.DayOfWeek.ToString("d"));
                      int dayInMonth = DateTime.DaysInMonth(current.Year, current.Month);
          
                      Console.WriteLine(current.ToString("MMM yyyy"));
                      Console.WriteLine("Su Mo Tu We Th Fr Sa");
          
                      int day = 1;
          
                      for (int i = 0; i < 7; i++)
                          if (i < firstDayOfWeek)
                              Console.Write("{0,2} ", "");
                          else
                              Console.Write("{0,2} ", day++);
          
                      while (day <= dayInMonth)
                      {
                          Console.Write("\n");
                          for (int i = 0; i < 7; i++)
                          {
                              if (!(day <= dayInMonth)) break;
                              Console.Write("{0,2} ", day++);
                          }
                      }
                      Console.Write("\n\n");
                  }
          Blog: http://khuongntrd.blogspot.com/ Email: khuongntrd@gmail.com
          Facebook: https://www.facebook.com/dkuns2

          Comment


          • #6
            Originally posted by 11520086 View Post
            bạn quên 1 vấn đề là trong các folder mình lấy ra nó không phải là folder rỗng?

            2. Khai báo phương thức nhập tham số là tên của 1 thư mục sau đó in tên, in danh sách các tên, tập tin trong thư mục đó. Nếu ko tìm thấy: "File not found"
            Mình không hiểu cái đề là nhập thư mục rồi mới suy ra danh sách file thì làm sao có trường hợp "file not found" được nhể, chỉ có thể là "Directory not exists", hoặc "Folder is emptry"
            Blog: http://khuongntrd.blogspot.com/ Email: khuongntrd@gmail.com
            Facebook: https://www.facebook.com/dkuns2

            Comment


            • #7
              bạn quên 1 vấn đề là trong các folder mình lấy ra nó không phải là folder rỗng?
              Không hiểu câu này lắm. Nếu mà cả hai mảng Directory và File mà Length nó =0 thì xuất Folder Empty thôi. Mình cũng chỉ làm cái gọi là đưa ra ý tưởng thôi chứ đâu phải đưa ra cả một cái bài giải hoàn chỉnh bẫy tất cả các lỗi đâu.

              Comment


              • #8
                ý mình là khi bạn dùng mảng a để GetDirectories(s) ra thì các phần tử a[i] là 1 folder và có thể tiếp tục GetDirectories(a[i]) . theo mình nghĩ là vậy ^^

                Comment


                • #9
                  thanks các bác, để mình tìm hiểu thêm

                  Comment


                  • #10
                    Originally posted by 11520592 View Post
                    À quên mất bài 2:
                    Code:
                    using System;
                    using System.Collections.Generic;
                    using System.Text;
                    using System.IO;
                    
                    namespace ConsoleApplication1
                    {
                        class Program
                        {
                            static void Main(string[] args)
                            {
                                string[] a;
                                string s;
                                Console.Write("Nhap duong dan: ");
                                s = Console.ReadLine();
                                if (!Directory.Exists(s))
                                {
                                    Console.WriteLine("Thu muc khong ton tai");
                                    Console.ReadLine();
                                    return;
                                }
                                a=Directory.GetDirectories(s);
                                for (int i = 0; i < a.Length; i++)
                                {
                                    Console.WriteLine("<DIR>" + a[i]);
                                }
                                a = Directory.GetFiles(s);
                                for (int i = 0; i < a.Length; i++)
                                {
                                    Console.WriteLine("<FILE>" + a[i]);
                                }
                                Console.ReadLine();
                            }
                        }
                    }
                    Bạn cho mình hỏi là chỗ a.Length, có fải nó trả về tổng số (thư mục + tệp) hay không vậy
                    và tại sao fải khai báo chổ string[] a :happy:

                    P/s: mất gốc lập trình, mình đang cố gắng học lại, mong các bác đừng gạch đá quá :smile:

                    Comment


                    • #11
                      [MENTION=11596]11520086[/MENTION]:
                      ý mình là khi bạn dùng mảng a để GetDirectories(s) ra thì các phần tử a[i] là 1 folder và có thể tiếp tục GetDirectories(a[i]) . theo mình nghĩ là vậy ^^
                      À tại theo mình đọc đề bài thì hình như chỉ yêu cầu liệt kê dạng lệnh dir của cmd thôi bạn chứ không phải duyệt vào bên trong . Nếu duyệt vào bên trong thì có cái tham số Option của cái method GetDirectories
                      Code:
                      using System;
                      using System.Collections.Generic;
                      using System.Text;
                      using System.IO;
                      
                      namespace ConsoleApplication1
                      {
                          class Program
                          {
                              static void Main(string[] args)
                              {
                                  DirectoryInfo d;
                                  Console.Write("Nhap duong dan: ");
                                  d = new DirectoryInfo(Console.ReadLine());
                                  if (!d.Exists)
                                  {
                                      Console.WriteLine("Thu muc khong ton tai");
                                      Console.ReadLine();
                                      return;
                                  }
                                  try
                                  {
                                      foreach(DirectoryInfo dir in d.GetDirectories("*",SearchOption.AllDirectories))
                                      {
                                          Console.WriteLine("<DIR>" + dir.FullName);
                                      }
                                  }
                                  catch(UnauthorizedAccessException) {
                                      Console.WriteLine("Co thu muc khong truy cap duoc");
                                  }
                                  try
                                  {
                                      foreach (FileInfo f in d.GetFiles("*.*", SearchOption.AllDirectories))
                                      {
                                          Console.WriteLine("<FILE>" + f.FullName);
                                      }
                                  }
                                  catch (UnauthorizedAccessException)
                                  {
                                      Console.WriteLine("Co file khong truy cap duoc");
                                  }
                                  Console.ReadLine();
                              }
                          }
                      }
                      Bạn có thể code như trên để lấy toàn bộ Thư mục và File, thư mục con,.... nhưng nếu trong thư mục bạn đang cố lấy có một thư mục con không cho phép truy cập thì tất cả các thư mục còn lại sẽ không được lấy luôn. Nên tốt hơn cả là làm tay bằng giải thuật DFS hoặc BFS.
                      [MENTION=11638]11520128[/MENTION]:
                      Như thế này bạn. Do là không có method gộp chung việc tìm File và Directory (Hoặc là do mình không biết ) nên mình chia ra hai thành phần để làm tuần tự. Mảng a thực chất ra chỉ là một mảng tạm để lưu giữ danh sách thư mục hoặc danh sách File. Do tại một thời điểm nó chỉ lưu trử một trong hai nên khi mình dùng a=Directory.GetDirectories(s) nó sẽ lưu danh sách các thư mục vì thế a.Length sau dòng code này là số thư mục có trong đường dẫn không bao gồm số Files. Nếu bạn muốn biết tổng số thì phải cộng dồn thôi.
                      Hoặc bạn thấy đoạn code trên, mình viết lại không có sử dụng một biến phụ s hay mảng a nào cả mà thay vào đó là vòng lặp foreach.
                      Trong hiểu biết hạn hẹp của mình thì mình chỉ có thể làm như thế. Bạn nào có kỹ thuật tốt hơn thì share cho mọi người cùng tham khảo nhé.
                      Last edited by 11520592; 13-03-2013, 18:46.

                      Comment


                      • #12
                        Thanks bạn, mình hiểu ràu

                        Comment

                        LHQC

                        Collapse
                        Working...
                        X