using System.Collections;
static void Main(string[] args)
CouponType[] coupon = new CouponType[3];
coupon[0] = new CouponType("10%", 150);
coupon[1] = new CouponType("30%", 500);
coupon[2] = new CouponType("50%", 1500);
ArrayList cards = new ArrayList();
cards.Add(new Member("1111", "Aaaa", 2019, 7, 500, 30000));
cards.Add(new Member("2222", "bbbb", 2020, 3, 300, 7500));
cards.Add(new Member("3333", "cccc", 2020, 6, 1750, 180000));
cards.Add(new Member("4444", "dddd", 2019, 5, 165, 3800));
cards.Add(new Member("5555", "eeee", 2020, 9, 700, 40000));
Console.WriteLine("Menu \n1.Collect the points \n2.Exchange the coupon \n3.Create a report");
Console.WriteLine("Please select your demand");
int choice = Convert.ToInt32(Console.ReadLine());
Console.Write("Please input your card number : ");
string cardno = Convert.ToString(Console.ReadLine());
Console.Write("Please input the purchased value : ");
double p = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("card number :" + cardno);
foreach (Member mem in cards)
if (mem.CARDNO == cardno)
Console.WriteLine("\nThe total points : " + mem.SCORE);
Console.Write("The card number is invalid");
Console.Write("Please input your card number : ");
string cardno = Convert.ToString(Console.ReadLine());
Console.Write("Please input the type of coupon : ");
string type = Convert.ToString(Console.ReadLine());
Console.Write("Please input the amount of coupon you want to exchange : ");
int n = Convert.ToInt32(Console.ReadLine());
foreach (Member mem in cards)
if (mem.CARDNO == cardno)
Boolean couchecker = false;
foreach (CouponType cou in coupon)
if((mem.SCORE) >= (n * cou.EXSCORE))
mem.ExchangeCoupon(cou, n);
Console.Write("Card No: " + mem.CARDNO + "Name: " + mem.NAME + "Score used: " + (n * cou.EXSCORE) + "Remaining Score: " + mem.SCORE );
Console.Write("Not enough score");
Console.Write("Invalid coupon type");
Console.Write("The card number is invalid");
Console.WriteLine("Menu \n1.Numbers of redeemed coupon for each type \n2.Numbers of redeemed coupon for each type per member \n3.Overall sale");
Console.WriteLine("Please select your demand");
int choice2 = Convert.ToInt32(Console.ReadLine());
foreach (CouponType cou in coupon)
Console.WriteLine(cou.DISCOUNT + ": " + cou.EXCHANGENUM + "times");
foreach (CouponType cou in coupon)
Console.WriteLine(cou.DISCOUNT + ": " + (Convert.ToDouble(cou.EXCHANGENUM)/cards.Count) + "times");
foreach (Member mem in cards)
private int exchangednum;
public CouponType(string d , int exs)
{ get { return discount; } }
{ get { return exscore; } }
{ get { return exchangednum ; } }
public void ExchangeCoupon(int times)
public class ExchangedCoupon
private int exchangednum;
public ExchangedCoupon(int exn , CouponType t)
public void ExchangeCoupon()
if (type.DISCOUNT == "10%") return exchangednum;
if (type.DISCOUNT == "30%") return exchangednum;
if (type.DISCOUNT == "50%") return exchangednum;
private double storedscore;
public Member(string cn, string n ,int y, int m ,double sc, double s)
{ get { return cardno; } }
{ get { return storedscore; } }
{ get { return sales; } }
public double Collectscore(double purchased)
if (startyear < 2020 || startmonth < 6)
double getscore = purchased / 10;
Console.Write("The points you get : " + getscore);
public void ExchangeCoupon(CouponType cou, int times)
storedscore -= (cou.EXSCORE * times);