S2 第二学期的第二本书的第六章上机和简答题

1.继承

[csharp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Threading.Tasks;  
  6.   
  7. namespace Day06_01  
  8. {  
  9.    public  class Person  
  10.     {  
  11.         public string Name { getset; }  
  12.         public int Age { getset; }  
  13.   
  14.        public Person () {}  
  15.   
  16.   
  17.        public Person(string name,int age)   
  18.        {  
  19.            this.Name = name;  
  20.            this.Age = age;  
  21.        }  
  22.     }  
  23. }  
  24.   
  25.   
  26.   
  27. using System;  
  28. using System.Collections.Generic;  
  29. using System.Linq;  
  30. using System.Text;  
  31. using System.Threading.Tasks;  
  32.   
  33. namespace Day06_01  
  34. {  
  35.     //继承  
  36.    public  class Student:Person  
  37.     {  
  38.         public string ExamNo { getset; }  
  39.        public Student() { }  
  40.   
  41.        //子类构造函数  
  42.        public Student(string name,int age,string examno):base(name,age)  
  43.        {  
  44.            base.Name = name;  
  45.            base.Age = age;  
  46.            this.ExamNo = examno;  
  47.   
  48.        }  
  49.     }  
  50. }  
  51.   
  52.   
  53. using System;  
  54. using System.Collections.Generic;  
  55. using System.Linq;  
  56. using System.Text;  
  57. using System.Threading.Tasks;  
  58.   
  59. namespace Day06_01  
  60. {  
  61.     class Program  
  62.     {  
  63.         static void Main(string[] args)  
  64.         {  
  65.         //    Student student = new Student();  
  66.         //    student.Name = "bb";  
  67.         //    student.Age = 15;  
  68.         //    Console.WriteLine("您好我叫{0},今年{1}岁", student.Name, student.Age);  
  69.         //    Console.ReadLine();  
  70.             Student studetn = new Student("郝静芳",20,"00001");  
  71.         }  
  72.     }  
  73. }  


2.上级模拟汽车行驶

[csharp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Threading.Tasks;  
  6.   
  7. namespace Day06_02上级模拟汽车行驶  
  8. {  
  9.    public  class Vehicle  
  10.     {  
  11.         public string Type { getset; }  
  12.         public string  Place { getset; }  
  13.   
  14.         public Vehicle(string type,string place )  
  15.         {  
  16.             this.Type = type;  
  17.             this.Place = place;  
  18.         }  
  19.         public void VehicleRun()  
  20.         {  
  21.             Console.WriteLine("汽车在行驶!");  
  22.         }  
  23.     }  
  24. }  
  25.   
  26.   
  27.   
  28. using System;  
  29. using System.Collections.Generic;  
  30. using System.Linq;  
  31. using System.Text;  
  32. using System.Threading.Tasks;  
  33.   
  34. namespace Day06_02上级模拟汽车行驶  
  35. {  
  36.    public  class Truck:Vehicle  
  37.     {  
  38.        public Truck(string type,string place):base(type,place)  
  39.        {  
  40.   
  41.        }  
  42.        public void TruckRun()  
  43.        {  
  44.            Console.WriteLine("型号为{0},产地为{1}的在行驶!",this.Type,this.Place);  
  45.        }  
  46.     }  
  47. }  
  48.   
  49.   
  50. using System;  
  51. using System.Collections.Generic;  
  52. using System.Linq;  
  53. using System.Text;  
  54. using System.Threading.Tasks;  
  55.   
  56. namespace Day06_02上级模拟汽车行驶  
  57. {  
  58.     class Program  
  59.     {  
  60.         static void Main(string[] args)  
  61.         {  
  62.             Truck truck = new Truck("奔驰","德国");  
  63.             truck.VehicleRun();  
  64.             truck.TruckRun();  
  65.             Console.ReadLine();  
  66.   
  67.         }  
  68.     }  
  69. }  


3.多态

[csharp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Threading.Tasks;  
  6.   
  7. namespace Day06_03多态  
  8. {  
  9.   public  class Person  
  10.     {  
  11.       public virtual void Say()  
  12.       {  
  13.           Console.WriteLine("打招呼");  
  14.       }  
  15.     }  
  16. }  
  17.   
  18.   
  19.   
  20. using System;  
  21. using System.Collections.Generic;  
  22. using System.Linq;  
  23. using System.Text;  
  24. using System.Threading.Tasks;  
  25.   
  26. namespace Day06_03多态  
  27. {  
  28.    public class Chinese:Person  
  29.     {  
  30.        public override void Say()  
  31.        {  
  32.            Console.WriteLine("中国人说:您好!");  
  33.                       
  34.        }  
  35.     }  
  36. }  
  37.   
  38. using System;  
  39. using System.Collections.Generic;  
  40. using System.Linq;  
  41. using System.Text;  
  42. using System.Threading.Tasks;  
  43.   
  44. namespace Day06_03多态  
  45. {  
  46.    public class American:Person  
  47.     {  
  48.        public override void Say()  
  49.        {  
  50.            Console.WriteLine("美国人说:Hello!");  
  51.   
  52.        }  
  53.     }  
  54. }  
  55.   
  56.   
  57.   
  58. using System;  
  59. using System.Collections.Generic;  
  60. using System.Linq;  
  61. using System.Text;  
  62. using System.Threading.Tasks;  
  63.   
  64. namespace Day06_03多态  
  65. {  
  66.     class Program  
  67.     {  
  68.         static void Main(string[] args)  
  69.         {  
  70.             List<Person> list = new List<Person>()  
  71.             {  
  72.                 new Chinese(),  
  73.                 new American()  
  74.                  
  75.             };  
  76.   
  77.             foreach (Person person in list)  
  78.             {  
  79.                 person.Say();  
  80.             }  
  81.         }  
  82.     }  
  83. }  

4.上级实现工作汇报

[csharp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Threading.Tasks;  
  6.   
  7. namespace Day06_04上级实现工作汇报  
  8. {  
  9.    public class Job  
  10.     {  
  11.         public string Description { getset; }  
  12.         public string Name { getset; }  
  13.   
  14.         public Job(string name,string description)  
  15.         {  
  16.             this.Name = name;  
  17.             this.Description = description;   
  18.         }  
  19.     }  
  20. }  
  21.   
  22.   
  23. namespace Day06_04上级实现工作汇报  
  24. {  
  25.    public class PM:Employee  
  26.     {  
  27.         public int YearOfExperience { getset; }  
  28.   
  29.         public PM(string id, int age, string name, char gender, int yearofexperience, List<Job> list)  
  30.             : base(id, age, name, gender, list)  
  31.         {  
  32.             this.YearOfExperience = yearofexperience;  
  33.         }  
  34.   
  35.          
  36.         public string DoWork()  
  37.         {  
  38.             string message = this.Name + ":管理员完成工作内容";  
  39.             return message;  
  40.         }  
  41.         public override void SayHi()  
  42.         {  
  43.             Console.WriteLine("经理");  
  44.         }  
  45.     }  
  46. }  
  47.   
  48.   
  49. namespace Day06_04上级实现工作汇报  
  50. {  
  51.     public  class SE : Employee  
  52.     {  
  53.         public int Popularity { getset; }  
  54.   
  55.         public SE(string id, int age, string name, char gender,int popularity, List<Job> list):base(id,age,name,gender,list)  
  56.         {  
  57.             this.Popularity = popularity;  
  58.         }  
  59.   
  60.           
  61.         public string DoWork()  
  62.         {  
  63.             StringBuilder sb = new StringBuilder();  
  64.             sb.Append(this.Name + ":\n");  
  65.             for (int i = 0; i < this.WorkList.Count;i++ )  
  66.             {  
  67.                 sb.Append((i+1)+" ,"+WorkList[i].Name+":"+WorkList[i].Description+"\n");  
  68.             }  
  69.             return sb.ToString();  
  70.         }  
  71.         public override void SayHi()  
  72.         {  
  73.             Console.WriteLine("员工");  
  74.         }  
  75.     }  
  76. }  
  77.   
  78.   
  79. namespace Day06_04上级实现工作汇报  
  80. {  
  81.     public partial class FrmMain : Form  
  82.     {  
  83.         public FrmMain()  
  84.         {  
  85.             InitializeComponent();  
  86.         }  
  87.         //员工集合  
  88.         List<Employee> emp = new List<Employee>();  
  89.   
  90.         //员工信息初始化  
  91.         public void Init()  
  92.         {  
  93.             //实例化SE对象  
  94.             List<Job> list = new List<Job>();  
  95.             list.Add(new Job("编码""购物车模块"));  
  96.             list.Add(new Job("测试""给购物车模块做单元测试"));  
  97.             SE se=new SE("0001",20,"小艾",'男',100,list);  
  98.             //实例化PM对象  
  99.             PM pm = new PM("0002",25,"小比",'男',50,null);  
  100.             emp.Add(se);  
  101.             emp.Add(pm);  
  102.         }  
  103.   
  104.         private void Report_Click(object sender, EventArgs e)  
  105.         {  
  106.             foreach (Employee employee in emp)  
  107.             {  
  108.                 if (employee is PM)  
  109.                 {  
  110.                     MessageBox.Show(((PM)employee).DoWork(),"汇报",MessageBoxButtons.OK);  
  111.                 }  
  112.   
  113.                 if (employee is SE)  
  114.                 {  
  115.                     MessageBox.Show(((SE)employee).DoWork(), "汇报", MessageBoxButtons.OK);  
  116.                 }  
  117.             }  
  118.   
  119.             List<Employee> em = new List<Employee>()  
  120.             {  
  121.                 new PM("0002",25,"小比",'男',50,null),  
  122.                 new SE("0001",20,"小艾",'男',100,null)  
  123.             };  
  124.             foreach(Employee emps in em)  
  125.             {  
  126.                emps.SayHi();  
  127.             }  
  128.   
  129.         }  
  130.   
  131.         private void FrmMain_Load(object sender, EventArgs e)  
  132.         {  
  133.             Init();  
  134.         }  
  135.     }  
  136. }  


5.上级4使用多态实现计算器

[csharp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. namespace 上级4使用多态实现计算器  
  2. {  
  3.    public  class Operation  
  4.     {  
  5.         public double Number1 { getset; }  
  6.         public double Number2 { getset; }  
  7.   
  8.         public virtual double GetResult()  
  9.         {  
  10.             double result = 0;  
  11.             return result;  
  12.         }  
  13.     }  
  14. }  
  15.   
  16.   
  17.   
  18. namespace 上级4使用多态实现计算器  
  19. {  
  20.    public  class OperationAdd:Operation  
  21.     {  
  22.        public override double GetResult()  
  23.        {  
  24.            double result = Number1 + Number2;  
  25.            return result;  
  26.        }  
  27.     }  
  28. }  
  29.   
  30.   
  31. namespace 上级4使用多态实现计算器  
  32. {  
  33.     public class OperationDiv : Operation  
  34.     {  
  35.        public override double GetResult()  
  36.        {  
  37.            if (Number2 == 0)  
  38.            {  
  39.                throw new Exception("除数不能为0!");                 
  40.            }  
  41.            double result = Number1 / Number2;  
  42.            return result;  
  43.        }  
  44.     }  
  45. }  
  46.   
  47.   
  48. namespace 上级4使用多态实现计算器  
  49. {  
  50.    public  class OpreationCheng:Operation  
  51.     {  
  52.        public override double GetResult()  
  53.        {  
  54.            double result = Number1 * Number2;  
  55.            return result;  
  56.        }  
  57.     }  
  58. }  
  59.   
  60.   
  61.   
  62. namespace 上级4使用多态实现计算器  
  63. {  
  64.    public class OpreationJian:Operation  
  65.     {  
  66.         public override double GetResult()  
  67.         {  
  68.             double result = Number1 + Number2;  
  69.             return result;  
  70.         }  
  71.     }  
  72. }  
  73.   
  74.   
  75.   
  76. namespace 上级4使用多态实现计算器  
  77. {  
  78.     public partial class FrmMain : Form  
  79.     {  
  80.         public FrmMain()  
  81.         {  
  82.             InitializeComponent();  
  83.             this.comboBox1.SelectedIndex = 0;  
  84.         }  
  85.   
  86.         private void btnCount_Click(object sender, EventArgs e)  
  87.         {  
  88.              
  89.             try  
  90.             {  
  91.                 Operation opr = new Operation();  
  92.                 switch (this.comboBox1.SelectedItem.ToString().Trim())  
  93.                 {  
  94.                     case "+":  
  95.                         opr = new OperationAdd();  
  96.                         break;  
  97.                     case "-":  
  98.                         opr = new OpreationJian();  
  99.                         break;  
  100.   
  101.                     case "*":  
  102.                         opr = new OpreationCheng();  
  103.                         break;  
  104.                     case "/":  
  105.                         opr = new OperationDiv();  
  106.                         break;  
  107.                 }  
  108.                 opr.Number1 = double.Parse(this.textBox1.Text.Trim());  
  109.                 opr.Number2 = double.Parse(this.textBox2.Text.Trim());  
  110.                 this.label2.Text = opr.GetResult().ToString();  
  111.                 this.label1.Visible = true;  
  112.                 this.label2.Visible = true;  
  113.             }  
  114.             catch (Exception ex)  
  115.             {  
  116.                 MessageBox.Show(ex.Message);  
  117.             }  
  118.         }  
  119.   
  120.     }  
  121. }  


6.猫狗继承关系

[csharp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. namespace Day06_06猫狗继承关系  
  2. {  
  3.     public class Animals  
  4.     {  
  5.         public string Name  
  6.         {  
  7.             get;  
  8.             set;  
  9.   
  10.         }  
  11.   
  12.         public string Color  
  13.         {  
  14.             get;  
  15.             set;  
  16.   
  17.         }  
  18.         public virtual void Bark()  
  19.         {  
  20.   
  21.   
  22.   
  23.         }  
  24.         public Animals(string name, string color)  
  25.         {  
  26.             this.Color = color;  
  27.             this.Name = name;  
  28.         }  
  29.   
  30.   
  31.   
  32. namespace Day06_06猫狗继承关系  
  33. {  
  34.     public class Dog : Animals  
  35.     {  
  36.   
  37.   
  38.         public Dog(string name, string color)  
  39.             : base(name, color)  
  40.         {  
  41.             this.Name = name;  
  42.             this.Color = color;  
  43.   
  44.   
  45.         }  
  46.   
  47.   
  48.         public override void Bark()  
  49.         {  
  50.             string message = string.Format("我是{0}狗{1},汪汪"this.Color, this.Name);  
  51.             Console.WriteLine(message);  
  52.         }  
  53.     }  
  54. }  
  55.   
  56.   
  57.   
  58. namespace Day06_06猫狗继承关系  
  59. {  
  60.     public class Cat : Animals  
  61.     {  
  62.   
  63.   
  64.   
  65.         public Cat(string name, string color)  
  66.             : base(name, color)  
  67.         {  
  68.             this.Name = name;  
  69.             this.Color = color;  
  70.   
  71.   
  72.         }  
  73.   
  74.   
  75.         public override void Bark()  
  76.         {  
  77.   
  78.             Console.WriteLine  
  79.             ("我是{0}的{1},喵喵"this.Color, this.Name);  
  80.   
  81.         }  
  82.     }  
  83. }  
  84.   
  85.   
  86.   
  87. namespace Day06_06猫狗继承关系  
  88. {  
  89.     class Program  
  90.     {  
  91.         static void Main(string[] args)  
  92.         {  
  93.             List<Animals> a = new List<Animals>()  
  94.           {  
  95.               new Dog("哈士奇","灰"),  
  96.               new Cat("加菲猫","咖啡")  
  97.           };  
  98.             foreach (Animals animalse in a)  
  99.             {  
  100.                 animalse.Bark();  
  101.             }  
  102.             Console.ReadLine();  
  103.              
  104.         }  
  105.     }  
  106. }  

7.简答题银行ATM业务

[csharp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. namespace SimATM  
  2. {  
  3.     public class Card  
  4.     {  
  5.         public Card() { }  
  6.         public Card(string cardNum, string password,string accountName, double balance)  
  7.         {  
  8.             this.CardNum = cardNum;  
  9.             this.Password = password;  
  10.             this.AccountName = accountName;  
  11.             this.Balance = balance;  
  12.         }  
  13.           
  14.         private string cardNum;  
  15.         public string CardNum  
  16.         {  
  17.             get { return cardNum; }  
  18.             set { cardNum = value; }  
  19.         }  
  20.         private string password;  
  21.         public string Password  
  22.         {  
  23.             get { return password; }  
  24.             set { password = value; }  
  25.         }  
  26.         private string accountName;  
  27.         public string AccountName  
  28.         {  
  29.             get { return accountName; }  
  30.             set { accountName = value; }  
  31.         }  
  32.         private double balance;  
  33.         public double Balance  
  34.         {  
  35.             get { return balance; }  
  36.             set { balance = value; }  
  37.         }  
  38.   
  39.         public virtual bool GetMoney(double money) { return true; }  
  40.   
  41.     }  
  42. }  
  43.   
  44.   
  45. namespace SimATM  
  46. {  
  47.     public class LocalCard:Card  
  48.     {  
  49.         public LocalCard() { }  
  50.         public LocalCard(string cardNum, string password, string accountName, double balance)  
  51.             : base(cardNum,password, accountName, balance)  
  52.         { }  
  53.         //取款  
  54.         public override bool GetMoney(double money)  
  55.         {  
  56.             if (this.Balance >= money)  
  57.             {  
  58.                 this.Balance = this.Balance - money;  
  59.                 return true;  
  60.             }  
  61.             else  
  62.             {  
  63.                 return false;  
  64.             }  
  65.         }  
  66.         //转账  
  67.         public  bool PostMoney(Card card, double money)  
  68.         {  
  69.             if (this.Balance >= money)  
  70.             {  
  71.                 this.Balance = this.Balance - money;  
  72.                 card.Balance += money;  
  73.                 return true;  
  74.             }  
  75.             else  
  76.             {  
  77.                 return false;  
  78.             }  
  79.         }  
  80.     }  
  81. }  
  82.   
  83.   
  84. namespace SimATM  
  85. {  
  86.     public class OtherCard:Card  
  87.     {  
  88.         public OtherCard() { }  
  89.         public OtherCard(string cardNum, string password, string accountName, double balance)  
  90.             : base(cardNum,password, accountName, balance)  
  91.         { }  
  92.         //取款  
  93.         public override bool GetMoney(double money)  
  94.         {  
  95.             if (this.Balance >= money)  
  96.             {  
  97.                 this.Balance = this.Balance - money - 2;  
  98.                 return true;  
  99.             }  
  100.             else  
  101.             {  
  102.                 return false;  
  103.             }  
  104.         }  
  105.     }  
  106. }  
  107.   
  108.   
  109. namespace SimATM  
  110. {  
  111.     public partial class MainForm : Form  
  112.     {  
  113.         Card myCard;  
  114.         OtherCard yourCard;  
  115.         Dictionary<string, Card> cards = new Dictionary<string, Card>();  
  116.         string key = null;  
  117.           
  118.         public MainForm()  
  119.         {  
  120.             InitializeComponent();  
  121.         }  
  122.   
  123.         private void btnExit_Click(object sender, EventArgs e)  
  124.         {  
  125.             this.Dispose();  
  126.         }  
  127.   
  128.         private void btnQuit_Click(object sender, EventArgs e)  
  129.         {  
  130.             Init();  
  131.   
  132.             this.txtCardNum.Text = "";  
  133.             this.txtPwd.Text = "";  
  134.         }  
  135.   
  136.         private void Init()  
  137.         {  
  138.             this.lblAccountName.Text = "";  
  139.             this.lblBalance.Text = "";  
  140.             this.lblCardNum.Text = "";  
  141.             this.txtPostNum.Text = "";  
  142.             this.txtGetMoney.Text = "";  
  143.             this.txtPostMoney.Text = "";  
  144.             this.btnGet.Enabled = false;  
  145.             this.btnPost.Enabled = false;  
  146.             this.btnQuery.Enabled = false;  
  147.               
  148.         }  
  149.   
  150.         private void MainForm_Load(object sender, EventArgs e)  
  151.         {  
  152.             Init();  
  153.   
  154.             myCard = new LocalCard("1234""1234""张三", 10000.00);  
  155.             yourCard = new OtherCard("4321""4321""李四", 2000.00);  
  156.             cards.Add(myCard.CardNum,myCard);  
  157.             cards.Add(yourCard.CardNum, yourCard);  
  158.         }  
  159.   
  160.         private void btnInsert_Click(object sender, EventArgs e)  
  161.         {  
  162.             Init();  
  163.             if (String.IsNullOrEmpty(txtCardNum.Text)  
  164.                 || String.IsNullOrEmpty(txtPwd.Text))  
  165.             {  
  166.                 MessageBox.Show("用户名密码能为空");  
  167.                 return;  
  168.             }  
  169.             key = txtCardNum.Text;  
  170.             if(!cards.ContainsKey(key))  
  171.             {  
  172.                 MessageBox.Show("没有这个用户");  
  173.                 return;  
  174.             }  
  175.             if (cards[key].Password == txtPwd.Text)  
  176.             {  
  177.                 this.lblAccountName.Text = cards[key].AccountName;  
  178.                 this.lblCardNum.Text = key;  
  179.                 this.btnGet.Enabled = true;  
  180.                 this.btnQuery.Enabled = true;  
  181.                 if (cards[key] is LocalCard)  
  182.                 {  
  183.                     this.btnPost.Enabled = true;  
  184.                 }  
  185.             }  
  186.         }  
  187.   
  188.         private void btnQuery_Click(object sender, EventArgs e)  
  189.         {  
  190.             this.lblBalance.Text = cards[key].Balance.ToString();  
  191.         }  
  192.   
  193.         private void btnGet_Click(object sender, EventArgs e)  
  194.         {  
  195.             if (String.IsNullOrEmpty(this.txtGetMoney.Text))  
  196.             {  
  197.                 MessageBox.Show("取款额不能为空");  
  198.                 return;  
  199.             }  
  200.             if (cards[key].GetMoney(double.Parse(txtGetMoney.Text)))  
  201.             {  
  202.                 MessageBox.Show("取款成功");  
  203.                 lblBalance.Text = cards[key].Balance.ToString();  
  204.             }  
  205.             else  
  206.             {  
  207.                 MessageBox.Show("余额不足。");  
  208.             }  
  209.         }  
  210.   
  211.         private void btnPost_Click(object sender, EventArgs e)  
  212.         {  
  213.             if (String.IsNullOrEmpty(this.txtPostMoney.Text)  
  214.                 ||String.IsNullOrEmpty(txtPostNum.Text))  
  215.             {  
  216.                 MessageBox.Show("转账金额和转账帐户不能为空");  
  217.                 return;  
  218.             }  
  219.             string targetCardKey = txtPostNum.Text;  
  220.             if (!cards.ContainsKey(targetCardKey))  
  221.             {  
  222.                 MessageBox.Show("转账账户不存在,请重新输入!");  
  223.             }  
  224.             else  
  225.             {  
  226.                 if (((LocalCard)(cards[key])).PostMoney(cards[targetCardKey], double.Parse(txtPostMoney.Text)))  
  227.                 {  
  228.                     MessageBox.Show("转帐成功");  
  229.                     lblBalance.Text = cards[key].Balance.ToString();  
  230.                 }  
  231.                 else  
  232.                 {  
  233.                     MessageBox.Show("余额不足。");  
  234.                 }  
  235.             }  
  236.         }  
  237.     }  
  238. }  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值