VC#2010. Практикум. Скидки в магазине

ivt
0

Чтобы не ехать в гости с пустыми руками, Матроскин решает зайти в магазин и купить подарки. Магазин празднует свое 50-летие. По этому поводу объявлены скидки на все игрушки.


Если счет после скидки равен 50$, то в качестве специального подарка покупатель получает видеокассету с фильмом.

Учитывая скидки, выбери, какие 4 игрушки можно купить, чтобы получить бесплатно видеофильм.



Теоретические сведения

Во время создания программы изучаются следующие темы:

- компоненты Form, Panel, Label, CheckBox;

- использование переменных, арифметические операции;

- оператор проверки условия;

- свойства Checked, Tag компонента CheckBox;

- использование объекта sender.


Практикум

Создание интерфейса программы

1. Создайте новый проект, сохраните его.

2. Добавьте на форму компоненты Panel, Label и CheckBox, как показано на рисунке:


3. Измените имя метки, в которой будет выводиться общая сумма покупки на lblSum.

 

Программирование функций интерфейса

4. Напишите обработчик события OnCheckedChanged объекта checkBox1:

    private void checkBox1_CheckedChanged(object sender, EventArgs e)

    {

      if (checkBox1.Checked) iSum += 3; else iSum -= 3;

      lblSum.Text = Convert.ToString(iSum) + "$";

    }

5. В классе Form1 объявите переменную iSum целого типа:

  public partial class Form1 : Form

  {

    int iSum = 0;

    public Form1()

    {

      InitializeComponent();

    }

Запустите программу и убедитесь, что первый переключатель работает.

 

На заметку: строку

      if (checkBox1.Checked) iSum += 3; else iSum -= 3;

можно записать так:

      iSum += checkBox1.Checked ? 3 : -3;

 

6. Для всех переключателей можно написать аналогичный код, однако, это не самое лучшее решение. Процедуру checkBox1_CheckedChanged можно изменить таким образом, чтобы вместо числа 3 использовалось свойство CheckBox1.Tag:

      iSum += checkBox1.Checked ? (int)checkBox1.Tag : -(int)checkBox1.Tag;

Теперь измените код, чтобы вместо имени компонента checkBox1 использовался аргумент sender. После всех изменений процедура должна выглядеть следующим образом:

    private void checkBox1_CheckedChanged(object sender, EventArgs e)

    {

      iSum += ((CheckBox)sender).Checked ? (int)((CheckBox)sender).Tag :

             -(int)((CheckBox)sender).Tag;

      this.lblSum.Text = Convert.ToString(iSum) + "$";

    }

7. В обработчике события OnLoad формы напишите код для задания начальных значений свойству Tag и определения обработчика события On CheckedChanged всеx чекбоксов:

    private void Form1_Load(object sender, EventArgs e)

    {

      this.checkBox1.Tag = 3;

      this.checkBox2.Tag = 6;

      this.checkBox3.Tag = 8;

      this.checkBox4.Tag = 10;

      this.checkBox5.Tag = 12;

      this.checkBox6.Tag = 15;

      this.checkBox7.Tag = 20;

      this.checkBox8.Tag = 22;

      this.checkBox9.Tag = 24;

      this.checkBox10.Tag = 25;

      this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);

      this.checkBox2.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);

      this.checkBox3.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);

      this.checkBox4.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);

      this.checkBox5.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);

      this.checkBox6.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);

      this.checkBox7.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);

      this.checkBox8.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);

      this.checkBox9.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);

      this.checkBox10.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);

      this.lblSum.Text = "";

      this.lblSum.TextAlign = System.Drawing.ContentAlignment.TopRight;

    }

 

Запустите программу и убедитесь, что все переключатели работают.

 

Изменение кода с учетом скидок

8. Измените процедуру checkBox1_CheckedChanged следующим образом:

    private void checkBox1_CheckedChanged(object sender, EventArgs e)

    {

      int iPrice, iSale = 0;

      iPrice = (int)((CheckBox)sender).Tag;

      if (iPrice >= 3 && iPrice <= 5) iSale = 1;

      if (iPrice >= 6 && iPrice <= 10) iSale = 2;

      if (iPrice >= 11 && iPrice <= 15) iSale = 3;

      if (iPrice >= 16 && iPrice <= 20) iSale = 4;

      if (iPrice >= 21 && iPrice <= 25) iSale = 5;

      iPrice -= iSale;

      iSum += ((CheckBox)sender).Checked ? iPrice : -iPrice;

      this.lblSum.Text = Convert.ToString(iSum) + "$";

    }

 

Упражнения

1. Добавьте в программу проверку, чтобы в случае, когда головоломка будет решена, на экране появлялась кнопка «Выход», которая будет закрывать окно.





Tags

Дописати коментар

0Коментарі
* Please Don't Spam Here. All the Comments are Reviewed by Admin.
Дописати коментар (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Learn More
Accept !