• 课堂练习之最高折扣,最低优惠规划


    一、题目要求与设计思路

    1.题目要求

    书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:

                                      本数                    折扣

                                       2                       5%

                                       3                       10%

                                       4                       20%

                                       5                       25%

    根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。设计算法能够计算出读者购买一批书的最低价格。
    2.设计思路
    五本一下的情况就是基础,其他所有比五本以上的情况都在该基础之上,我们只需将买6、7、8、9本的用户最低价格解决了,其他的就可以直接叠加了,通过计算,买6本的时候按5-25%打折、1本不打折方式价钱最少;买7本的时候按5-25%打折、2-5%打折方式价钱最少;买8本的时候按两次4-20%打折方式价钱最少;买9本的时候按5-25%打折、4-20%打折方式价钱最少。然后用户输入购买数量i,利用下列语句实现a = i / 5;b = 30 * a;c = i % 5。
    二、源代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Linq;
     7 using System.Text;
     8 using System.Windows.Forms;
     9 
    10 namespace youhuifangfa
    11 {
    12     public partial class Form1 : Form
    13     {
    14         double b, sum;
    15         int a, i, c;
    16         public Form1()
    17         {
    18             InitializeComponent();
    19         }
    20 
    21         private void button1_Click(object sender, EventArgs e)
    22         {
    23             i = int.Parse(textBox1.Text);
    24             if (i % 5 != 3)
    25             {
    26                 a = i / 5;
    27                 b = 30 * a;
    28                 c = i % 5;
    29                 if (c == 0)
    30                 {
    31                     sum = b;
    32                    
    33                 }
    34                 if (c == 1)
    35                 {
    36                     sum = b + 8;
    37                 }
    38                 else if (c == 2)
    39                 {
    40                     sum = b + 16 * 0.95;
    41                 }
    42                 else if (c == 3)
    43                 {
    44                     sum = b + 24 * 0.9;
    45                 }
    46                 else if (c == 4)
    47                 {
    48                     sum = b + 32 * 0.8;
    49                 }
    50 
    51             }
    52             else if(i%5==3&&i!=3)
    53             {
    54                 a = i / 5;
    55                 b = 30 * (a - 1);
    56                 c = i % 5;
    57                 sum = b + 32 * 0.8 * 2;
    58             }
    59             else if (i == 3)
    60             {
    61                 sum = 0.9 * 24;
    62             }
    63             textBox3.Text = sum.ToString();
    64         }
    65 
    66         private void textBox1_TextChanged(object sender, EventArgs e)
    67         {
    68 
    69         }
    70     }
    71 }

    三、运行结果截图

    四、心得体会

    这个题目一开始看着挺不好计算的,但是再复杂再大的高楼都有一个基础,那么这道题目来说,店里给的折扣说明就是基础,我们只需要按着这个基础往上考虑就好了,所以,软件开发,尤其像这一类的实现肯定会有办法,找到实质性的东西,找到什么是变量,什么是不变的量,什么是基础就好办了。

  • 相关阅读:
    排序算法之冒泡排序的思想以及Java实现
    排序算法之希尔排序的思想以及Java实现
    c# npoi分批往excel追加数据
    c# Timer按月执行任务
    windows服务+定时任务(quartz.net)+nancy
    c# linq分组 lambda分组
    批量插入sql技巧
    解决windows server 2008R2自动关机
    c# DataGridView在使用DataSource时,只显示指定的列或禁止自动生成列
    c# mongodb时间类型字段保存时相差八个小时解决办法
  • 原文地址:https://www.cnblogs.com/hanshidiguo/p/4425931.html
Copyright © 2020-2023  润新知