第八次实验

第八次实验

打折的商品

老张的团队正在开发一个商场销售系统,需求中存在这样一段描述:
商品打折需求:
商场商品的打折存在两种场景,一个是消费到一定级别将得到白铁、青铜、白银和黄金四个VIP等级,当然普通消费者不同的消费级别也会有打折,其中打折算法如下:

  • 普通消费者
    • 消费区间(0-200],不打折
    • (200-500]总价打折98%
    • (500-1000]总价打折95%
    • 1000+总价打折90%
  • 白铁:
    • 消费区间(0-200],总价打折98%
    • (200-500]总价打折95%
    • (500-1000]总价打折90%
    • 1000+总价打折88%
  • 青铜:
    • 消费区间(0-200],总价打折95%
    • (200-500]总价打折90%
    • (500-1000]总价打折88%
    • 1000+总价打折85%
  • 白银:
    • 消费区间(0-200],总价打折90%
    • (200-500]总价打折88%
    • (500-1000]总价打折85%
    • 1000+总价打折80%
  • 黄金:
    • 消费区间(0-200],总价打折88%
    • (200-500]总价打折85%
    • (500-1000]总价打折80%
    • 1000+总价打折75%
      考虑到将来的销售情况,打折算法可能增加或减少,在已知打折区间不会变化的前提下,尝试给出相应的打折算法设计,并应对将来的算法数量扩充预做准备。
      老张给出了测试代码和预期的输出以供参考:
public static void main(String[] args) {
		Discount d=new DiscountNormal();
		System.out.println("普通消费者");
		System.out.printf("应收%.2f元\n",d.getPrice(188));//输出188元打折结果
		System.out.printf("应收%.2f元\n",d.getPrice(288));//输出288元打折结果
		System.out.printf("应收%.2f元\n",d.getPrice(588));//输出588元打折结果
		System.out.printf("应收%.2f元\n",d.getPrice(1088));//输出1088元打折结果
		d=new DiscountIron();
		System.out.println("白铁VIP");
		System.out.printf("应收%.2f元\n",d.getPrice(188));//输出188元打折结果
		System.out.printf("应收%.2f元\n",d.getPrice(288));//输出288元打折结果
		System.out.printf("应收%.2f元\n",d.getPrice(588));//输出588元打折结果
		System.out.printf("应收%.2f元\n",d.getPrice(1088));//输出1088元打折结果
		d=new DiscountBronze();
		System.out.println("青铜VIP");
		System.out.printf("应收%.2f元\n",d.getPrice(188));//输出188元打折结果
		System.out.printf("应收%.2f元\n",d.getPrice(288));//输出288元打折结果
		System.out.printf("应收%.2f元\n",d.getPrice(588));//输出588元打折结果
		System.out.printf("应收%.2f元\n",d.getPrice(1088));//输出1088元打折结果
		d=new DiscountSilver();
		System.out.println("白银VIP");
		System.out.printf("应收%.2f元\n",d.getPrice(188));//输出188元打折结果
		System.out.printf("应收%.2f元\n",d.getPrice(288));//输出288元打折结果
		System.out.printf("应收%.2f元\n",d.getPrice(588));//输出588元打折结果
		System.out.printf("应收%.2f元\n",d.getPrice(1088));//输出1088元打折结果
		d=new DiscountGold();
		System.out.println("黄金VIP");
		System.out.printf("应收%.2f元\n",d.getPrice(188));//输出188元打折结果
		System.out.printf("应收%.2f元\n",d.getPrice(288));//输出288元打折结果
		System.out.printf("应收%.2f元\n",d.getPrice(588));//输出588元打折结果
		System.out.printf("应收%.2f元\n",d.getPrice(1088));//输出1088元打折结果
	}

输出应为:

普通消费者
应收188.00元
应收282.24元
应收558.60元
应收979.20元
白铁VIP
应收184.24元
应收273.60元
应收529.20元
应收957.44元
青铜VIP
应收178.60元
应收259.20元
应收517.44元
应收924.80元
白银VIP
应收169.20元
应收253.44元
应收499.80元
应收870.40元
黄金VIP
应收165.44元
应收244.80元
应收470.40元
应收816.00

聪明的排序器

排序可能应用在许多场景,老张的团队由于当前开发软件的需要,针对很多不同类型的数据都有排序的要求,手下的程序员们复制–>粘贴–>修改不断的重复,老张认为这是在累加无效的开发成本,于是希望设计一个聪明的排序器,老张先针对整型数据写出了初始的选择排序代码:

    public void sort(int[] data) {
		for(int i=0;i<data.length-1;i++) {
			int pos=i;
			for(int j=i+1;j<data.length;j++) {
				if(data[j]>data[pos]) {	
					pos=j;
				}
			}
			int t=data[i];
			data[i]=data[pos];
			data[pos]=t;
		}
	}

这段代码经过测试对整型数据实现是没有问题的,于是尝试针对一个模拟类尝试进行修改,这个类描述了某宠物管理系统中猫咪的信息:
猫咪类类图
当老张着手修改排序程序的时候,发现最主要的问题是Cat对象是不能直接用">“、”<"比较的,如果能抽象一个所有对象都能简单实现的比较过程,适合所有数据类型的排序流程就比较容易了,于是老张做了以下的设计:
聪明的排序器设计
为此,老张写下了以下的测试代码:

public static void main(String[] args) {
		Integer [] data= {11,3,25,8,9,36,13,29,10,50};
		CleverSorter cs=new CleverSorter(new IntegerComparer());
		cs.sort(data);
		for(Integer i:data)System.out.println(i);
		Cat[] cats=new Cat[10];
		cats[0]=new Cat(11,50);
		cats[1]=new Cat(3,10);
		cats[2]=new Cat(25,29);
		cats[3]=new Cat(8,13);
		cats[4]=new Cat(9,36);
		cats[5]=new Cat(36,9);
		cats[6]=new Cat(13,8);
		cats[7]=new Cat(29,25);
		cats[8]=new Cat(10,3);
		cats[9]=new Cat(50,11);
		cs=new CleverSorter(new CatHeightComparer());
		cs.sort(cats);
		for(Cat c:cats)System.out.println(c);
	} 

经过一番调试,老张得到了满意的输出:

50
36
29
25
13
11
10
9
8
3
[11,50]
[9,36]
[25,29]
[29,25]
[8,13]
[50,11]
[3,10]
[36,9]
[13,8]
[10,3]

你能写出老张设计的CleverSorter、Comparer、IntegerComparer、CatHeightComparer、Cat几个类的内容吗?

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个基于Java的Spring Boot框架开发的项目是一个强大且高效的应用程序,它充分发挥了Spring Boot框架的优势,为用户提供了卓越的性能和灵活性。 首先,Spring Boot框架是一个轻量级的开发框架,它简化了Java应用程序的开发过程,并提供了一系列开箱即用的功能模块,如自动配置、快速启动等。这使得开发人员能够以更小的工作量和更短的开发周期来构建稳定、可靠的应用程序。 其次,该项目使用Spring Boot框架作为服务端的开发框架,它提供了丰富的功能和组件,例如依赖管理、容器管理、面向切面编程等,使得开发人员能够更加高效地编写代码,并提供了便捷的接口和工具来管理和维护项目。 该项目还具有良好的扩展性和灵活性。Spring Boot框架采用模块化和可插拔的设计,使得开发人员可以根据实际需求轻松添加或移除功能模块。这样,无论是进行新的功能开发还是对现有功能进行修改和扩展,都能够快速、方便地完成,提高了项目的可维护性和可扩展性。 此外,Spring Boot框架还提供了丰富的生态系统和社区支持。开发人员可以方便地获取到各种扩展包、工具和文档,加快项目的开发进度。同时,社区中有许多经验丰富的开发人员积极参与并提供技术支持,能够解决开发过程中的问题和难题。 总之,这个基于Java的Spring Boot框架开发的项目具有简单、高效、可扩展和强大的优点。它将帮助开发人员快速构建稳定、灵活的应用程序,并提供了丰富的功能和工具来满足各种业务需求。无论是中小型企业还是大型企业,都能够从该项目中受益,并获得更高的工作效率和业务价值。
这个项目是一个基于Java语言开发的Web应用程序,采用SSM(Spring+SpringMVC+MyBatis)或SSH(Spring+SpringMVC+Hibernate)框架进行开发,使用MySQL作为数据存储,JSP作为页面开发。 项目的目标是构建一个高效、可靠、易于维护的Web应用程序。通过使用SSM或SSH框架,可以实现代码的模块化和解耦,提高开发效率和代码质量。MySQL数据库作为数据存储,可以提供稳定的数据存储和快速的数据查询。而JSP作为页面开发技术,可以方便地生成动态的网页内容。 在项目中,Spring框架提供了依赖注入和面向切面编程的功能,可以提高代码的可维护性和可测试性。SpringMVC负责处理请求和响应,可以实现灵活的URL映射和请求处理。MyBatis或Hibernate可以简化数据库操作,提供了方便的ORM(对象关系映射)功能,使得数据的持久化变得简单和高效。 通过以上技术选择和框架搭建,该项目可以实现一个高性能、可扩展性强的Web应用程序。开发人员可以基于框架提供的功能和组件进行快速开发,减少重复代码的编写,提高开发效率。同时,使用MySQL作为数据存储,可以保证数据的安全性和可靠性。而JSP作为页面开发技术,可以生成动态的网页内容,提供良好的用户体验。 总之,这个项目采用Java语言开发,框架使用SSM或SSH,存储使用MySQL,页面使用JSP。通过这些技术和工具的组合,可以实现一个高效、可靠、易于维护的Web应用程序,满足用户的需求,并提供良好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值