เมื่อเร็ว ๆ นี้ฉันกำลังพยายามหา บริษัท 'x' พวกเขาส่งชุดคำถามมาให้ฉันและบอกให้ฉันแก้เพียงข้อเดียว
ปัญหาเป็นเช่นนี้ -
ภาษีการขายขั้นพื้นฐานมีผลในอัตรา 10% สำหรับสินค้าทั้งหมดยกเว้นหนังสืออาหารและผลิตภัณฑ์ทางการแพทย์ที่ได้รับการยกเว้น
อากรขาเข้าคือภาษีขายเพิ่มเติมที่ใช้กับสินค้านำเข้าทั้งหมดในอัตรา 5% โดยไม่มีข้อยกเว้น
เมื่อฉันซื้อสินค้าฉันจะได้รับใบเสร็จรับเงินซึ่งแสดงชื่อของสินค้าทั้งหมดและราคา (รวมภาษี) จบด้วยต้นทุนรวมของสินค้าและจำนวนภาษีขายทั้งหมดที่จ่าย
กฎการปัดเศษสำหรับภาษีขายคือสำหรับอัตราภาษี n% ราคาชั้นวางของ p จะมีจำนวน (np / 100 ปัดเศษขึ้นเป็น 0.05 ที่ใกล้ที่สุด)
“ พวกเขาบอกฉันว่าพวกเขาสนใจในด้านการออกแบบของโซลูชันของคุณและต้องการประเมินทักษะการเขียนโปรแกรมเชิงวัตถุของฉัน”
นี่คือสิ่งที่พวกเขาบอกด้วยคำพูดของพวกเขาเอง
- สำหรับวิธีแก้ปัญหาเราต้องการให้คุณใช้ Java, Ruby หรือ C #
- เรามีความสนใจในด้านการออกแบบของการแก้ปัญหาของคุณและต้องการที่จะประเมินผลการศึกษาของคุณObject Oriented ทักษะการเขียนโปรแกรม
- คุณอาจใช้ไลบรารีหรือเครื่องมือภายนอกเพื่อสร้างหรือทดสอบ โดยเฉพาะคุณอาจใช้ไลบรารีการทดสอบหน่วยหรือสร้างเครื่องมือที่มีให้สำหรับภาษาที่คุณเลือก (เช่น JUnit, Ant, NUnit, NAnt, Test :: Unit, Rake เป็นต้น)
- คุณอาจใส่คำอธิบายสั้น ๆ เกี่ยวกับการออกแบบและสมมติฐานพร้อมกับรหัสของคุณก็ได้
- โปรดทราบว่าเราไม่คาดหวังว่าจะมีแอปพลิเคชันบนเว็บหรือ UI ที่ครอบคลุม แต่เราคาดหวังว่าจะมีแอปพลิเคชันที่เรียบง่ายแบบคอนโซลและสนใจซอร์สโค้ดของคุณ
ดังนั้นฉันจึงให้โค้ดด้านล่าง - คุณสามารถคัดลอกวางโค้ดและเรียกใช้ใน VS.
class Program
{
static void Main(string[] args)
{
try
{
double totalBill = 0, salesTax = 0;
List<Product> productList = getProductList();
foreach (Product prod in productList)
{
double tax = prod.ComputeSalesTax();
salesTax += tax;
totalBill += tax + (prod.Quantity * prod.ProductPrice);
Console.WriteLine(string.Format("Item = {0} : Quantity = {1} : Price = {2} : Tax = {3}", prod.ProductName, prod.Quantity, prod.ProductPrice + tax, tax));
}
Console.WriteLine("Total Tax : " + salesTax);
Console.WriteLine("Total Bill : " + totalBill);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
private static List<Product> getProductList()
{
List<Product> lstProducts = new List<Product>();
//input 1
lstProducts.Add(new Product("Book", 12.49, 1, ProductType.ExemptedProduct, false));
lstProducts.Add(new Product("Music CD", 14.99, 1, ProductType.TaxPaidProduct, false));
lstProducts.Add(new Product("Chocolate Bar", .85, 1, ProductType.ExemptedProduct, false));
//input 2
//lstProducts.Add(new Product("Imported Chocolate", 10, 1, ProductType.ExemptedProduct,true));
//lstProducts.Add(new Product("Imported Perfume", 47.50, 1, ProductType.TaxPaidProduct,true));
//input 3
//lstProducts.Add(new Product("Imported Perfume", 27.99, 1, ProductType.TaxPaidProduct,true));
//lstProducts.Add(new Product("Perfume", 18.99, 1, ProductType.TaxPaidProduct,false));
//lstProducts.Add(new Product("Headache Pills", 9.75, 1, ProductType.ExemptedProduct,false));
//lstProducts.Add(new Product("Imported Chocolate", 11.25, 1, ProductType.ExemptedProduct,true));
return lstProducts;
}
}
public enum ProductType
{
ExemptedProduct=1,
TaxPaidProduct=2,
//ImportedProduct=3
}
class Product
{
private ProductType _typeOfProduct = ProductType.TaxPaidProduct;
private string _productName = string.Empty;
private double _productPrice;
private int _quantity;
private bool _isImportedProduct = false;
public string ProductName { get { return _productName; } }
public double ProductPrice { get { return _productPrice; } }
public int Quantity { get { return _quantity; } }
public Product(string productName, double productPrice,int quantity, ProductType type, bool isImportedProduct)
{
_productName = productName;
_productPrice = productPrice;
_quantity = quantity;
_typeOfProduct = type;
_isImportedProduct = isImportedProduct;
}
public double ComputeSalesTax()
{
double tax = 0;
if(_isImportedProduct) //charge 5% tax directly
tax+=_productPrice*.05;
switch (_typeOfProduct)
{
case ProductType.ExemptedProduct: break;
case ProductType.TaxPaidProduct:
tax += _productPrice * .10;
break;
}
return Math.Round(tax, 2);
//round result before returning
}
}
คุณสามารถ uncommnet อินพุตและรันสำหรับอินพุตที่แตกต่างกัน
ฉันให้วิธีแก้ปัญหา แต่ฉันถูกปฏิเสธ
"พวกเขากล่าวว่าพวกเขาไม่สามารถพิจารณาฉันสำหรับตำแหน่งที่เปิดอยู่ในปัจจุบันของเราได้เนื่องจากการแก้ปัญหาโค้ดไม่เป็นที่น่าพอใจ"
โปรดชี้แนะสิ่งที่ขาดหายไปที่นี่ โซลูชันนี้ไม่ใช่โซลูชัน OOAD ที่ดีหรือไม่
ฉันจะพัฒนาทักษะ OOAD ได้อย่างไร
รุ่นพี่ของฉันยังบอกด้วยว่าแอปพลิเคชัน OOAD ที่สมบูรณ์แบบจะไม่สามารถใช้งานได้จริง
ขอบคุณ