Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Market Management - Quản lý chợ búa bằng lập trình C#

  1. #1
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Thumbs down Market Management - Quản lý chợ búa bằng lập trình C#

    Qua vụ trao đổi Rùa và Thỏ của Cường, X lấy lại niềm tin với C# và cố gắng luyện tập. Và để tăng không khí, mình chợt nghĩ ra bài này mời anh em cùng trao đổi thảo luận nhé

    Đề bài :
    Có một cái chợ có quản lý một lượng các loại hàng hóa bao gồm:
    a. Một nhóm chuyên bán Quần Áo gồm các hãng sau
    + Adidas :
    - Loại Thể Thao : giá $138
    - Loại Du Lịch : giá $320
    + Nike :
    - Loại Thể Thao : giá $115
    - Loại Văn Phòng : giá $288
    b. Một nhóm bán thực phẩm với thành thành phần như sau
    + Hoa Quả :
    - Cam : giá $25 / kg
    - Táo : giá $33 / kg
    - Dừa : giá $15 / quả
    + Rau :
    - Cải : giá $22 / kg
    - Cần : giá $5 / mớ
    + Thịt
    - Gà : giá $35 / kg
    - Lợn : giá $48 / kg
    - Bò : giá $70 / kg
    Đó là danh sách thông tin của chợ.

    1. Thiết kế lớp Market chứa đầy đủ những thông tin trên. <hoàn toàn theo hướng OOP; thêm vào đó có tính mở rộng như cái bài Rùa và Thỏ>

    2. Có một người đi chợ mua một số hàng hóa như sau :
    + 2 bộ Nike, 1 bộ Adidas
    + 4.5 kg táo, 3 mớ rau cần , 2 con gà và 2.5 kg thịt Lợn
    Viết một class chuyên xử lý vụ tiền nong này.
    Các giá trị đồng tiền có thể dùng là : $100,$10,$5,$1. Tính xem người ở trên đi chợ đã dùng bao nhiêu tờ tiền các loại.


    Mọi người cùng thử nhé ..Tớ mới chỉ nghỉ ra chứ thực ra là chưa phân tích kĩ lắm. Nhưng đề bài thì hợp lý đó.

    Bước đầu cùng đi vào phân tích thiết kế cho Market nhé
    Đã được chỉnh sửa lần cuối bởi Xcross87 : 27-01-2008 lúc 03:07 PM.
    None!

  2. #2
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Good job !

    Mọi người thử sức với bài nào xem thế nào nhé
    Keep moving forward!

    ... Retired ...

  3. #3
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Hi ! C++ tham gia với được không . Đọc cái đề cũng hay cho mình tham gia với nhé T_T.
    Mới suy nghĩ 1 chút thôi, có gì Xcross, hay nhc có ý tưởng thì gì bổ sung thêm nhé :
    C++ Code:
    1. #include <iostream>
    2. #include <string>
    3. const int SIZE = 10;
    4.  
    5. class Product{
    6. private :
    7.   /*Chỗ này thêm gì vào cũng được, ví dụ tên sản phẩm, tính năng,
    8.     cân nặng...*/
    9.   double price;
    10. public :
    11.   Product(){}
    12.   Product(int val):price(val){}
    13.   double getPrice(){return price;}
    14.   void setPrice(double val){  
    15.     price = val;
    16.   }
    17. };
    18.  
    19. /*Chỗ này ta có thể thêm nhiều class Mặt hàng, ví dụ SportProduct của Xcross, hoặc đồ tiêu dùng GroceriesProduct...*/
    20. class MarketProduct{
    21. private :
    22.   /*Trong chợ thì có thịt, cải, rau quả....*/
    23.   Product meat;
    24.   Product milk;
    25. public :
    26.  
    27.  
    28.   double getMeatprice(){
    29.     return meat.getPrice();
    30.   }
    31.   double getMilkprice(){
    32.     return milk.getPrice();
    33.   }
    34.   void set(double val1, double val2){
    35.     meat.setPrice(val1);
    36.     milk.setPrice(val2);
    37.   }
    38. };
    39.  
    40. /*Class này thì cố định, ấn định số khách hàng.*/
    41. class Customer{
    42. private :
    43.   /*Chỗ này có thể thêm vào số xã hội, địa chỉ, accout bank...*/
    44.   std::string name;
    45.   double account;
    46. public :
    47.   Customer():account(1000){}
    48.   void setName(std::string n){
    49.     name = n;
    50.   }
    51.   std::string getName(){
    52.     return name;
    53.   }
    54.   void setMoney(double money){
    55.     account = money;
    56.   }
    57.   double getMoney(){
    58.     return account;
    59.   }
    60. };
    61.  
    62. /*Class này có thể phát triển thêm ví dụ :
    63. TownCenter DiamondPlaza;
    64. TownCenter Chợ Lớn;
    65. TownCenter Thuận Kiều;
    66. .....*/
    67. class TownCenter{
    68. private :
    69.   int numberCustomer;
    70.   /*Chỗ này trong chợ có nhiều loại thành phẩm, ví dụ thêm vào cái Sport, Groceries, Beer....*/
    71.   MarketProduct _mp;
    72.   Customer list[SIZE];
    73.  
    74. public :
    75.   TownCenter():numberCustomer(0){}
    76.   void set_mp(double val1, double val2){
    77.     _mp.set(val1, val2);
    78.   }
    79.   double getMilk(){
    80.     return _mp.getMilkprice();
    81.   }
    82.   double getMeat(){
    83.     return _mp.getMeatprice();
    84.   }
    85.  
    86.   void _register(){
    87.     std::string oss;
    88.     std::cout << "Enter name : \n";
    89.     std::cin >> oss;
    90.     list[numberCustomer].setName(oss);
    91.     numberCustomer++;
    92.   }
    93.  
    94.   void BuyStuff(Product &what, int id){
    95.     list[id].setMoney(list[id].getMoney() - what.getPrice());
    96.   }
    97.  
    98. };
    99.  
    100. int main(){
    101.   Product gold(14.3);
    102.   TownCenter town;
    103.  
    104.   town.set_mp(13.7, 14.3);
    105.   town._register();
    106.   std::cout << "Buy what : ";
    107.   town.BuyStuff(gold, 1);
    108.  
    109.   return 0;
    110.  
    111. }

    Do lúc đầu ngồi suy nghĩ cái Nike, Addidas của Xcross sao thấy khó phát triển thêm nên mình chỉnh lại 1 chút, cái này chỉ là ý chủ quan của mình thôi, Xcross và nhc có thể nêu ý tưởng khác.
    Mình nghĩ thì ta có thể xây dựng 2 lớp Hồ Chí Minh City có vài chợ, mỗi chợ có nhiều loại thành phẩm khác nhau, mỗi loại thành phẩm của các chợ thì có giá cả khác nhau, mỗi chợ thêm 1 đăc tính riêng ( ví dụ chương trình khuến mãi khác nhau ). Rùi ta sẽ có Customer với số tiền sẽ chọn đi mua sắm ở đâu đó trong các chợ này. Ta sẽ hỏi xem họ có trong danh sách khách hàng quen thuộc của chợ này không, nếu có thì ta có thể giảm giá cho họ 1 tí T_T. Nếu không thì hỏi họ có đăng ký làm thành viên không, sau khi đăng ký thành viên thì ta giảm giá không thì miễn, hì hì.
    Nếu chi tiết thêm ta có thể xây dựng thêm class BankAccout, khi mua 1 món hàng ta thêm chi tiết mua bằng cash hay mua bằng credit card...Ta đánh thuế tùy loại thành phẩm...
    Còn về loại tiền thì nếu chi tiết 1 chút ta có thể cho thêm số loại tiền như Xcross đã đề cập, thì thêm 1 class Money độc lập chắc cũng không ảnh hưởng lắm, nhưng mình nghĩ nếu loại tiền thì mục đích của nó để làm gì vì cơ sở mua hàng thì chỉ có giá thôi mà phải không nhỉ ?
    Mình chỉ mới nghĩ được tới đó T_T.

  4. #4
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Bài của Rok viết khá hay và ý tưởng độc đáo dựa trên từ cái đề bài của mình
    Tuy nhiên có đôi chỗ bị hạn chế

    1. Mỗi loại sản phẩm có 1 cái tên, giờ đến lúc thanh toán, người mua cần hóa đơn ghi rõ tên sản phẩm và giá tiền thì sao ?. Có thể giải quyết tạm thời với một phương thức lấy tên sản phẩm
    2. Rok làm theo hướng OOP thật nhưng khả năng code được re-use mình nghĩ không được cao lắm bởi vì, giả sử chợ lại tăng thêm một đống mặt hàng nữa chả lẽ lại khai báo thêm Product MH1, rồi lại tạo thêm phương thức cho một hàng đó ?. Như vậy quá ư là vất vả trong việc triển khai code.

    Với 2 hạn chế mình nêu trên, nếu Rok triển khai mạnh hơn nữa để mở rộng ra với ngân hàng quản lý và thanh toán tiền bằng Card thì sẽ gặp trục trặc.

    @rok: cậu lần sau khai báo class và định nghĩa class trong từng file tách biệt cho dễ nhìn nhé ..để lẫn lộn thế kia khó nhìn quá.
    None!

  5. #5
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    1. Mỗi loại sản phẩm có 1 cái tên, giờ đến lúc thanh toán, người mua cần hóa đơn ghi rõ tên sản phẩm và giá tiền thì sao ?. Có thể giải quyết tạm thời với một phương thức lấy tên sản phẩm
    2. Rok làm theo hướng OOP thật nhưng khả năng code được re-use mình nghĩ không được cao lắm bởi vì, giả sử chợ lại tăng thêm một đống mặt hàng nữa chả lẽ lại khai báo thêm Product MH1, rồi lại tạo thêm phương thức cho một hàng đó ?. Như vậy quá ư là vất vả trong việc triển khai code.

    Với 2 hạn chế mình nêu trên, nếu Rok triển khai mạnh hơn nữa để mở rộng ra với ngân hàng quản lý và thanh toán tiền bằng Card thì sẽ gặp trục trặc.
    Xcross nói đúng thật, nãy h ngòi thêm vào quả thật rối tung cả lên T_T. Xcross có cách gì khắc phục cái này không nhỉ . Hồi đầu cứ nghĩ demo 1 món rùi cứ thêm vào là được ai ngờ cái khâu lấy thông tin giá cả cho khác hàng lại cực kì cực khổ hic hic, đi qua cả 4, 5 cái instance.
    @rok: cậu lần sau khai báo class và định nghĩa class trong từng file tách biệt cho dễ nhìn nhé ..để lẫn lộn thế kia khó nhìn quá.
    Ờ hì hì, do trước h xài toàn cgwin, nên riết thành thói quen viết chia ra file không debug được T_T, để mình tập dần đây, thanks Xcross.

  6. #6
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Mặc định Market Management - Quản lý chợ búa bằng lập trình C#

    Nghĩ mãi cuối cùng cũng chỉ có hướng thế này

    . Ta chia thành các sub-class nhỏ
    . Sử dụng Generic List Collection để lưu trữ các class
    Chia thứ tự các nhóm theo thứ tự
    ProductStore > ProductGroup > ProductType

    ProductStore là List chính lưu trữ các thành phần nhóm ProductGroup
    còn ProductGroup là một List con lưu trữ các thành phần sản phẩm ProductType

    ProductStore: Market
    ProductGroup: Cloth, Food,Fruit,Vegetables
    ProductType;
    + Cloth: Sport, Formal, Tour
    + Food: Mear, Egg, Milk
    + Fruit: Coconut, Orange, Apple
    + Vegetables: Cabbage, Spinach

    Ban đầu tạm thời ta chưa tính đến chuyện chuyển đổi Currency, lấy đơn vị chuẩn là Dollar $.
    Mình mới định hướng tạo class ProductType như sau:
    Visual C# Code:
    1.     class ProductType
    2.     {
    3.         #region <--- Variables --->
    4.         private string _productName;
    5.         private double _price;
    6.         private MarketUnitType _unitType;
    7.         #endregion
    8.  
    9.         #region <--- Constructors --->
    10.         public ProductType() { }
    11.         public ProductType(double price)
    12.         {            
    13.             _price = price;            
    14.         }
    15.         #endregion
    16.  
    17.         #region <--- Properties --->
    18.         public string ProductName
    19.         {
    20.             get { return _productName; }
    21.             // set { _productName = value; }
    22.         }
    23.         public double Price
    24.         {
    25.             get { return _price; }
    26.             set { _price = value; }
    27.         }
    28.         public MarketUnitType UnitType
    29.         {
    30.             get { return _unitType; }            
    31.         }
    32.         #endregion
    33.  
    34.         #region <--- Methods --->
    35.         public double GetPrice(double amountOfUnit)
    36.         {
    37.             return (_price * amountOfUnit);
    38.         }
    39.         #endregion
    40.     }

    trong đó ta thiết lập đơn vị buôn bán trong chợ
    Visual C# Code:
    1.     enum MarketUnitType {
    2.         KILOGRAM = 0, // kilogram
    3.         BUNCH, // mớ rau
    4.         SET, // bộ quần áo
    5.         ONE, // dành cho đơn vị Quả và Con
    6.     }

    chết thật, nếu là sản phẩm nếu thừa kế như trên có một số chỗ vướng mắc xử lý thuộc tính.

    Vì thế mình sửa lại một chút và đây là demo
    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3.  
    4. namespace Management
    5. {
    6.     // Market Unit Type
    7.     enum MarketUnitType
    8.     {
    9.         KILO = 0,
    10.         SET,
    11.         ONE,
    12.         BUNCH
    13.     }
    14.  
    15.     #region ~ PRODUCT class ~
    16.     class Product
    17.     {
    18.         // VARIABLE
    19.         private double _price;
    20.         private MarketUnitType _unitType;
    21.  
    22.         // CONSTRUCTOR
    23.         public Product() { }
    24.         public Product(double price)
    25.         {
    26.             _price = price;
    27.         }
    28.  
    29.         // PROPERTIES
    30.         public double Price
    31.         {
    32.             get { return _price; }
    33.             set { _price = value; }
    34.         }
    35.         public MarketUnitType UnitType
    36.         {
    37.             get { return _unitType; }
    38.         }
    39.         public double CalculatePrice(double amountOfUnit)
    40.         {
    41.             return ( _price * amountOfUnit) ;
    42.         }
    43.  
    44.         // METHODS
    45.         protected void SetUnitType(MarketUnitType unitType)
    46.         {
    47.             _unitType = unitType;
    48.         }
    49.     }
    50.     #endregion
    51.  
    52.     #region ~ ClothGroup class ~
    53.     class ClothGroup : Product        
    54.     {
    55.         // VARIABLE
    56.         private string _producer;
    57.         private string _productName;
    58.  
    59.         // CONSTRUCTOR
    60.         public ClothGroup()
    61.         {
    62.             SetUnitType(MarketUnitType.SET);
    63.         }
    64.         public ClothGroup(string producer)
    65.         {
    66.             SetUnitType(MarketUnitType.SET);
    67.             _producer = producer;
    68.         }
    69.  
    70.         // PROPERTIES
    71.         public string Producer
    72.         {
    73.             get { return _producer; }
    74.             set { _producer = value; }
    75.         }
    76.         public string ProductName
    77.         {
    78.             get { return _productName; }
    79.         }
    80.  
    81.         // METHODS
    82.         protected void SetProducer(string producer)
    83.         {
    84.             _producer = producer;
    85.         }
    86.         protected void SetProductName(string productName)
    87.         {
    88.             _productName = productName;
    89.         }
    90.     }
    91.     #endregion
    92.  
    93.     #region ~ CLOTHSPORT class ~
    94.     class ClothSport : ClothGroup
    95.     {
    96.         // CONSTRUCTOR
    97.         public ClothSport()
    98.         {
    99.             SetProductName("Sport Cloth");
    100.         }
    101.         public ClothSport(string producer)
    102.         {
    103.             SetProducer(producer);
    104.             SetProductName("Sport Cloth");
    105.         }
    106.     }
    107.     #endregion
    108.  
    109.     public class Test
    110.     {
    111.         static void Main()
    112.         {
    113.             ClothSport Nike = new ClothSport("Nike");            
    114.             Nike.Price = 115;
    115.             double price = Nike.CalculatePrice(2);
    116.             Console.WriteLine(" 2 Set of {0} {1}  costs ${2} ", Nike.Producer, Nike.ProductName, price);
    117.         }
    118.     }
    119.  
    120. }

    ban đầu từ Product ta tạo cơ bản về khung của sản phẩm sau đó kế thừa ra chia thành các nhóm

    Product -> ClothGroup + FoodGroup + VegeGroup + FruitGroup

    ClothGroup -> ClothSport + ClothFormal + ClothTour
    FoodGroup -> ...
    VegeGroup -> ...
    FruitGroup -> ...
    chia tương tự như vậy

    Ta tạo thành group và thiết lập các protected method để access vào thuộc tính đã có từ lớp trên
    Khi đã tạo thành Group thì các lớp con kế thừa từ Group không bị phức tạp nhiều và ta cũng không phải mất công chế biến, chỉ cần thêm.
    None!

  7. #7
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Thanks Xcross nhá ! Tuần rùi test nhiều quá nên chưa trả lời cho được. Mình hiểu ý Xcross rùi T_T ! Để mình thử viết rùi xem sao, mình đã thử không kế thừa và kết quả thật tệ hại T_T. Thanks for your idea !

  8. #8
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    218

    http://forums.congdongcviet.com/show...9a+th%E1%BB%8F
    (link lại bài Thỏ và Rùa cho mọi người đỡ phải mất công tìm kiếm giống em )

    Cho em tham gia đề tài này với.

  9. #9
    Ngày gia nhập
    03 2009
    Bài viết
    1

    anh ơi, e có tự học được mọt ít về C-Sharp.giả sử code cho từng hàm một hay từng công việc một thì OK,nhưng viết cả một project cụ thể thì thấy vướng mắc rất nhiều chỗ,giống như làm mà không biết trình tự công việc vậy.
    Vậy muốn học về thiết kế class diaphram thì học thế nào?nghe bảo hocl về 3layer, thế còn Design Pattern thì thế nào?Chỉ giáo cho em với.

Các đề tài tương tự

  1. The Manor apartment for rent, HOT PRICE in the market
    Gửi bởi thaominh trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 12-09-2013, 02:02 PM
  2. Phần mềm quản lý khách sạn fts hotel management
    Gửi bởi quynhcute trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 17-08-2012, 02:56 PM
  3. Hệ thống quản lý các dự án - Project Management Team System
    Gửi bởi huynguyen trong diễn đàn Ý tưởng sản phẩm CNTT của bạn
    Trả lời: 31
    Bài viết cuối: 23-06-2011, 10:53 PM
  4. Câu đố hóc búa !!!
    Gửi bởi Forlorn_hope trong diễn đàn Giải trí - Thư giãn
    Trả lời: 15
    Bài viết cuối: 02-06-2008, 11:13 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn