【C#】クラスのサンプル(レンタルビデオ店)

C#を使ってレンタルビデオ店用のプログラムを作るには、次のような手順が必要です

コード

ビデオショップのクラスを定義します。映画、顧客、レンタルのためのクラスが必要になることが多いでしょう。例えば

class Movie
{
    public string Title { get; set; }
    public string Genre { get; set; }
    public bool IsAvailable { get; set; }
    public decimal Price { get; set; }
    public int Stock { get; set; }
}

class Customer
{
    public string Name { get; set; }
    public string Phone { get; set; }
    public string Email { get; set; }
    public List<Rental> Rentals { get; set; }
}

class Rental
{
    public Movie Movie { get; set; }
    public Customer Customer { get; set; }
    public DateTime RentDate { get; set; }
    public DateTime DueDate { get; set; }
    public bool IsReturned { get; set; }
}

ストアで実行可能なさまざまなアクションのためのメソッドを作成します。例えば、映画のレンタル、映画の返却、映画の在庫確認、ストアへの新しい映画の追加、新しい顧客の作成などのためのメソッドです

class VideoStore
{
    public List<Movie> Movies { get; set; }
    public List<Customer> Customers { get; set; }
    public List<Rental> Rentals { get; set; }

    public void RentMovie(Movie movie, Customer customer)
    {
        if (movie.IsAvailable && movie.Stock > 0)
        {
            movie.IsAvailable = false;
            movie.Stock -= 1;
            Rental rental = new Rental
            {
                Movie = movie,
                Customer = customer,
                RentDate = DateTime.Now,
                DueDate = DateTime.Now.AddDays(7),
                IsReturned = false
            };
            Rentals.Add(rental);
            customer.Rentals.Add(rental);
            Console.WriteLine("Movie " + movie.Title + " has been rented to " + customer.Name + ".");
        }
        else if (!movie.IsAvailable)
        {
            Console.WriteLine("Movie " + movie.Title + " is not available.");
        }
        else
        {
            Console.WriteLine("Movie " + movie.Title + " is out of stock.");
        }
    }

    public void ReturnMovie(Rental rental, Customer customer)
    {
        rental.IsReturned = true;
        rental.Movie.IsAvailable = true;
        rental.Movie.Stock += 1;
        customer.Rentals.Remove(rental);
        Rentals.Remove(rental);
        Console.WriteLine("Movie " + rental.Movie.Title + " has been returned by " + customer.Name + ".");
    }

    public void CheckAvailability(string title)
    {
        var movie = Movies.FirstOrDefault(m => m.Title == title);
        if (movie != null)
        {
            if (movie.IsAvailable)
            {
                Console.WriteLine("Movie " + movie.Title + " is available.");
            }
            else
            {
                Console.WriteLine("Movie " + movie.Title + " is not available.");
            }
        }
        else
        {
            Console.WriteLine("Movie not found.");
        }
    }

    public void AddMovie(Movie movie)
    {
        Movies.Add(movie);
        Console.WriteLine("Movie " + movie.Title + " has been added to the store.");
    }

    public void CreateCustomer(string name, string phone, string email)
    {
        var customer = new Customer
        {
            Name = name,
            Phone = phone,
            Email = email,
            Rentals = new List<Rental>()
        };
        Customers.Add(customer);
        Console.WriteLine("Customer " + customer.Name + " has been added to the store.");
    }
}

これはあくまで例であり、アプリケーションの要件に応じてクラス、プロパティ、メソッドを調整する必要があることに注意してください。また、より多くのプロパティを追加したい場合もあるでしょう。

使い方

上記のクラスを使用するには、クラスのインスタンスを作成し、必要に応じてメソッドを呼び出す必要があります。

例えば、映画をレンタルする場合、まず映画と顧客のインスタンスを作成し、映画と顧客のインスタンスを引数としてVideoStoreクラスのRentMovieメソッドを呼び出すことになります

// Create a new movie
Movie movie = new Movie { Title = "The Shawshank Redemption", Genre = "Drama", IsAvailable = true, Price = 3.5M , Stock = 2};

// Create a new customer
Customer customer = new Customer { Name = "John Doe", Phone = "555-555-5555", Email = "johndoe@example.com", Rentals = new List<Rental>()};

// Create an instance of the VideoStore class
VideoStore videoStore = new VideoStore { Movies = new List<Movie>(), Customers = new List<Customer>(), Rentals = new List<Rental>()};

// Add the movie to the store
videoStore.AddMovie(movie);

// Create a new customer
videoStore.CreateCustomer(customer.Name, customer.Phone, customer.Email);

// Rent the movie
videoStore.RentMovie(movie, customer);

同様に、映画を返却するには、まず videoStore クラスの Rentals リストからレンタルを見つけ、次に ReturnMovie メソッドを呼び出し、引数として rental と customer のインスタンスを渡します

// Find the rental in the Rentals list
Rental rental = videoStore.Rentals.FirstOrDefault(r => r.Movie == movie && r.Customer == customer && !r.IsReturned);

// Return the movie
videoStore.ReturnMovie(rental, customer);
// Check the availability of a movie
videoStore.CheckAvailability("The Shawshank Redemption");

また、クラスのメソッドや変数を使用して、現在の映画の在庫、レンタルされた映画のリスト、顧客の詳細などを表示することができます。
また、この例は基本的なものであり、要件に応じてより多くの機能や特徴を追加することができることに留意することが重要です

レンタルビデオ店の要望に応じて、プログラムに機能性を追加することができます。例えば、以下のようなものが考えられます。

  • お客様がレンタル履歴にアクセスするためのログインシステムを追加する。
  • タイトル、ジャンル、その他の条件から映画を検索するための検索機能を追加する。
  • 返却遅延を処理し、遅延損害金を計算するシステムを追加する。
  • レンタル期限や遅延をメールやテキストメッセージで通知する機能を追加する。
  • お客様が事前に映画を予約できる機能を追加する。
  • 人気のある映画やレンタルされた映画を表示する機能を追加する。
  • レンタルで得た金額を記録する機能を追加する。

追加する機能は、レンタルビデオ店の要件とその顧客のニーズに依存することを覚えておくことが重要です。
機能を追加する場合は、エンドユーザーと相談して要件を理解し、ニーズを満たすように機能を設計することが不可欠です。

C#,学習,設計

Posted by hidepon