Java类的设计作业题——组装电脑

题目

类的设计应用:
计算机组装店有很多品牌的计算机配件,包括处理器(CPU)、主板(mainBoard)、内存(Ram)、……等。 每种配件都多个厂家(company)、型号(type)、价格(price)三个基本信息。
按下图所示的类的关系和要求编写适当的类,实现相关的功能。
1、假设每种配件有两个厂家,每个厂家产品有两个型号,每个型号价格不同
2、程序运行时逐个显示不同配件的型号,提供 配件型号选择菜单(如输入1,代表选择型号1,输入2,代码选择型号2)
3、根据选择的配件型号,创造出一个Computer实例,
4、 创建实例完成时,输出总价格
5、调用Conputer实例的showDetail()方法,输出输出配件的详细信息。
根据类图完成类的设置,并在Test类的main方法中测试你的程序

放一张我的效果图:

Java类的设计作业题——组装电脑_第1张图片

前言

说一下题目,老师这题目错别字好多,描述也有些问题,有一丝强迫症的我看着真难受。

老师一直在强调:不要用面向对象的语言写面向过程风格的代码!因此在敲代码之前还是要思考一下:类的设计和关系!唉,敲这个题也是敲了好久,还是太菜了  (。•ˇ‸ˇ•。)  。另外,码风一定要正,除了自己看着舒服,还要别人看的清晰舒服!

完整代码

package theme5_2;

public class Product {
	private String name; //产品名称
	private String factory; //厂家
	private String type; //型号
	private double price; //价格
	

	public Product() {
		super();
	}
	
	public Product(String name, String factory, String type, double price) {
		super();
		this.name = name;
		this.factory = factory;
		this.type = type;
		this.price = price;
	}
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getFactory() {
		return factory;
	}

	public void setFactory(String factory) {
		this.factory = factory;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public double getPrice() {
		return price;
	}

	public void setPrice(double price) {
		this.price = price;
	}

	@Override
	public String toString() {
		return "[产品名称=" + name + ", 厂家=" + factory + ", 型号=" + type + ", 价格=" + price + "]";
	}
}
package theme5_2;

public class CPU extends Product {

	private String buffer; //CPU特有属性:缓存。以此参数作为属性举例,其他参数略
	
	
	public CPU() {
		super();
	}

	public CPU(String name, String factory, String type, double price, String buffer) {
		super(name, factory, type, price);
		this.buffer=buffer;
	}
	
	public String getBuffer() {
		return buffer;
	}

	public void setBuffer(String buffer) {
		this.buffer = buffer;
	}

	@Override
	public String toString() {
		String superStr=super.toString();
		return "CPU "+superStr.substring(0, superStr.length()-1)+", 缓存=" + buffer + "]";
	}

}
package theme5_2;

public class Rem extends Product {
	private String capacity; //内存特有的属性:内存容量。以此参数作为属性举例,其他参数略

	public Rem() {
		super();
	}

	public Rem(String name, String factory, String type, double price, String capacity) {
		super(name, factory, type, price);
		this.capacity=capacity;
	}

	public String getCapacity() {
		return capacity;
	}

	public void setCapacity(String capacity) {
		this.capacity = capacity;
	}
	
	@Override
	public String toString() {
		String superStr=super.toString();
		return "内存条 "+superStr.substring(0, superStr.length()-1)+", 容量=" + capacity + "]";
	}	
}
package theme5_2;

public class Screen extends Product {
	private String size; //显示器特有属性:大小。以此参数作为属性举例,其他参数略
	
	
	public Screen() {
		super();
	}

	public Screen(String name, String factory, String type, double price, String size) {
		super(name, factory, type, price);
		this.size=size;
	}
	
	public String getSize() {
		return size;
	}

	public void setSize(String size) {
		this.size = size;
	}

	@Override
	public String toString() {
		String superStr=super.toString();
		return "显示器 "+superStr.substring(0, superStr.length()-1)+", 尺寸=" + size + "]";
	}
}
package theme5_2;

public class Computer extends Product {
	private CPU cpu;
	private Screen screen;
	private Rem rem;
	
	public Computer() {
		super();
	}
	
	public Computer(String name, String factory, String type, double price, CPU cpu, Screen screen, Rem rem) {
		super(name, factory, type, price);
		this.cpu=cpu;
		this.screen=screen;
		this.rem=rem;
	}

	public CPU getCpu() {
		return cpu;
	}

	public void setCpu(CPU cpu) {
		this.cpu = cpu;
	}

	public Screen getScreen() {
		return screen;
	}

	public void setScreen(Screen screen) {
		this.screen = screen;
	}

	public Rem getRem() {
		return rem;
	}

	public void setRem(Rem rem) {
		this.rem = rem;
	}

	@Override
	public String toString() {
		return "电脑 "+super.toString();
	} 
	
	public void showDetail()
	{
		System.out.println("配件:");
		if(cpu!=null)
			System.out.println(cpu);
		if(screen!=null)
			System.out.println(screen);
		if(rem!=null)
			System.out.println(rem);
	}
	
}
package theme5_2;

public class Customer {
	private String name;

	public Customer() {
		super();
	}

	public Customer(String name) {
		super();
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}
package theme5_2;

import java.util.Scanner;

public class Shop {
	//商店中各个配件的存货。注意数组越界
	private CPU[] cpus=new CPU[2];
	private Screen[] screens=new Screen[2];
	private Rem[] rems=new Rem[2];
	
	//构造方法。相当于店铺进货
	public Shop() {
		super();
		
		cpus[0]=new CPU("CPU", "Intel", "I7-7600", 1500, "2M");
		cpus[1]=new CPU("CPU", "Intel", "I5-7600", 1000, "2M");
		
		screens[0]=new Screen("显示器", "KTC", "KTC2400", 1500, "24英寸");
		screens[1]=new Screen("显示器", "联想", "21英寸高清", 1700, "21英寸");
		
		rems[0]=new Rem("内存条", "戴尔", "2133P-R", 1790, "32G");
		rems[1]=new Rem("内存条", "戴尔", "DDR4", 1279, "16G");
	}
	
	public void service(Customer cust)
	{
		System.out.println("欢迎 "+cust.getName());
		System.out.println("选择您喜欢的配件,组装适合您的电脑:");
		System.out.println("说明:选择对应编号即可添加到购物车,0:不选择\n");
		
		double cost=0;
		
		showCpus();
		int opt1=getOpt(cpus.length);
		CPU cpu=null;
		if(opt1!=0)
		{
			cost+=cpus[opt1-1].getPrice();
			cpu=cpus[opt1-1];
		}
			
		showScreens();
		int opt2=getOpt(screens.length);
		Screen screen=null;
		if(opt2!=0)
		{
			cost+=screens[opt2-1].getPrice();
			screen=screens[opt2-1];
		}
			
		showRems();
		int opt3=getOpt(rems.length);
		Rem rem=null;
		if(opt3!=0)
		{
			cost+=rems[opt3-1].getPrice();
			rem=rems[opt3-1];
		}
			
		Computer com=new Computer("组装机", cust.getName(), null, cost, cpu, screen, rem);
		System.out.println(com);
		com.showDetail();
	}
	
	private int getOpt(int max)
	{
		Scanner sc=new Scanner(System.in);
		int opt;
		while((opt=sc.nextInt())>max || opt<0)
			System.out.print("输入非法,请重现输入:");
		System.out.println();
		return opt;
	}
	
	private void showCpus() 
	{
		for(int i=0;i
package theme5_2;

public class Test {
	public static void main(String[] args) {
		
		Shop shop=new Shop();
		Customer cust=new Customer("ysq");
		
		shop.service(cust);
	}
}

 

你可能感兴趣的:(Java)