软件工程作业-10-买书
题目要求:
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
设计思想:
输入输出部分:输入要买的书的数量然后经程序计算出最小的花费输出结果。
因为购买书的数量不同其折扣价格也会不一样而且购买同一本书不会享受打折,所以可以得出结论1.购买5本及以下时按照购买不同的本数购买时最省钱当钩码数量大于5本肯定会有重复购买的书籍,不防先计算一下购买6-9本的情况下选择哪种购买方式更为省钱(举例说明购买6本书有如下选择A.5种书其中两本一样B.4种书其中有两本0和两本1C.3种书012各两本)经过计算除了购买8本书的时候挑选5种书的价格比挑选4种书高以外其余都是挑选5种书最省钱,所以在1-9本书以内便有了最省钱的算法,至于10本及以上可以除以5来计算买几次5种书剩下的余数在按5以内的公式计算。只有8本书的情况例外,所以要另行计算。
代码实现:
1 import java.util.Scanner; 2 public class HarryPotent { 3 double Money; 4 int Bnumber; 5 static double Gongshi(int n)//5本以内的计算公式 6 { 7 double money=0; 8 if(n==1) 9 { 10 money=8; 11 } 12 else if(n==2) 13 { 14 money=(8*2*0.95); 15 } 16 else if(n==3) 17 { 18 money=(8*3*0.9); 19 } 20 else if(n==4) 21 { 22 money=(8*4*0.8); 23 } 24 else if(n==5) 25 { 26 money=(8*5*0.75); 27 } 28 return money; 29 } 30 static double Minmoney(int n)//5本以上的计算方法 31 { 32 double LMoney=0; 33 double number=0; 34 int YuShu=0; 35 if(n<=5) 36 { 37 LMoney=Gongshi(n); 38 } 39 else if(n%5==3) 40 { 41 n=n-8; 42 number=n/5; 43 LMoney=(number*8*5*0.75)+(8*4*2*0.8); 44 } 45 else 46 { 47 number=n/5; 48 YuShu=n%5; 49 LMoney=(number*8*5*0.75)+Gongshi(YuShu); 50 } 51 return LMoney; 52 } 53 @SuppressWarnings("unused") 54 public static void main(String[] args) 55 { 56 int Booknumber; 57 HarryPotent BOOK=new HarryPotent(); 58 System.out.println("请输入您想要购买的书的数量"); 59 @SuppressWarnings("resource") 60 Scanner a=new Scanner(System.in); 61 Booknumber=a.nextInt(); 62 if(Booknumber<0) 63 { 64 System.out.println("您的输入有误无法计算结果。。。"); 65 } 66 else 67 { 68 System.out.println("您可以支付的最小额度为:"+Minmoney(Booknumber)+"元"); 69 } 70 } 71 72 }
运行结果截图:
输入5本书:
输入8本书:
随便输入一个正整数:
输入负数:
实验心得:
这次课堂小实验还是比较简单的,最起码比灌水的哥们儿好找主要还是思路,这次的程序虽然实现了作业的要求但是并不健全比如说输入非整型变量系统会报错,收获不是特别多就是再次加强了我对编程思想很重要的理解。还有就是对Java的部分语法又充实了一次。