下载链接

Download
类图见文末

后续篇章

实验一:设计模式在Gourmet咖啡系统中的应用
实验二:异常和IO在Gourmet咖啡系统中的应用

Modeling the Gourmet Coffee System

Prerequisites, Goals, and Outcomes

Prerequisites: Before you begin this exercise, you need mastery of the following:

  • UML

    • Knowledge of class diagram notation
  • Object-Oriented Design
    • Knowledge of modeling concepts:

      • Identifying classes
      • Identifying relationships between classes
      • Identifying class attributes
      • Identifying class methods

Goals: Reinforce your object-oriented design skills

Outcomes: You will master the following skills:

  • Produce a UML class diagram, from a specification, that shows:

    • classes
    • attributes
    • methods
    • relationships

Background
This assignment asks you to model a coffee store application.

Description
Gourmet Coffee is a store that sells coffee from countries around the globe. It also sells coffee brewing machines(咖啡冲泡机) and other accessories for coffee consumption(咖啡消费配件). The Gourmet Coffee System maintains a product catalog, processes orders, and tracks the store’s sales.

The catalog maintains the following information about the store’s products:

  • Coffee

    • Code
    • Description
    • Price
    • Country of origin
    • Type of roast
    • Flavor
    • Aroma
    • Acidity
    • Body
  • Coffee brewer

    • Code
    • Description
    • Price
    • Model of the brewer
    • Type of the water supply: Pour-over or Automatic
    • Capacity: number of cups
  • Coffee accessory

    • Code
    • Description
    • Price

The following tables show some of the products sold by Gourmet Coffee.

Figure 1 Coffee

Figure 2 Coffee brewers

Figure 3 Coffee accessories

The Gourmet Coffee System processes orders. An order contains a list of products, their quantities, and the total cost. The following is an example of an order:

Figure 4 Order

In the Gourmet Coffee System, the user can:

  • Display the catalog: lists the code and description of each product
  • Display a product
  • Display the current order: lists quantity, code, and price of each product in the current order, and the total of the order.
  • Add a product to the current order—if the specified product is already part of the order, this command will modify the quantity of that product
  • Remove a product from the current order
  • Register the sale of the current order—this command adds the order to the store’s sales and empties the current order
  • Display the sales: lists all the orders that have been sold

Run the sample executable that is provided to learn more about the Gourmet Coffee System.

Files
Following is a sample executable of the Gourmet Coffee System.

  • gourmet-coffee-sample-executable.jar — Download this file now. It is a sample executable.

Tasks
These steps will guide you for completing this assignment:

  • First, run the sample executable by issuing the following command at the command prompt:
    C:>java -jar gourmet-coffee-sample-executable.jar
  • Then, follow the technique described in page 1.2.5 Modeling Classes to model the Gourmet Coffee System.
    • Identify the following:

      • The classes
      • The association relationships (include direction, multiplicity, and association attribute)
      • The specialization/generalization relationships
      • The attributes of each class
      • The methods of each class
    • Your class diagram should include:
      • The class of the gourmet coffee application
      • The accessor methods
      • The mutator methods if are needed
      • For the collections:
        • The methods to add and access elements
        • The methods to remove elements if are needed
      • The methods that compute other values not included in the attributes.
        Use Sun’s coding conventions when naming classes, methods, and attributes.
  • Use Eclipse, Violet, PowerPoint, or another tool of your choosing to draw a UML class diagram.
  • Save the UML class diagram in a SVG, GIF, or JPG format in a file named uml-gou-cof.

Submission
Upon completion, submit only the SVG, GIF, or JPG file uml-gou-cof. The extension of this file will depend on the tool used to create the diagram.

说明

英文一定要看得懂啊~~只不过这是一个UML建模的实验,但是之后会要求基于Java编程实现的,下面会实现一下。

Product类

/*** Product is created to be used as the super class.* @author BlankSpace* @version 2.0*/public class Product {private String code;private String description;private double price;public Product(String code, String description, double price) {this.code = code;this.description = description;this.price = price;}public String getCode() {return this.code;}public String getDescription() {return this.description;}public double getPrice() {return this.price;}//Identifying whether objects are equal by code.@Overridepublic boolean equals(Object product) {return (product instanceof Product) && (this.getCode().equals(((Product)product).getCode()));}@Overridepublic String toString() {return this.getCode() + "," + this.getDescription() + "," + this.getPrice();}}

Coffee类

/*** Coffee is Product's subclass. It represents a type of Products which is something special.* @author BlankSpace* @version 2.0*/public class Coffee extends Product {private String countryOfOrigin;private String typeOfRoast;private String flavor;private String aroma;private String acidity;private String body;public Coffee(String code, String description, double price, String countryOfOrigin, String typeOfRoast, String flavor, String aroma, String acidity, String body) {super(code, description, price);this.countryOfOrigin = countryOfOrigin;this.typeOfRoast = typeOfRoast;this.flavor = flavor;this.aroma = aroma;this.acidity = acidity;this.body = body;}public String getCountryOfOrigin() {return this.countryOfOrigin;}public String getTypeOfRoast() {return this.typeOfRoast;}public String getFlavor() {return this.flavor;}public String getAroma() {return this.aroma;}public String getAcidity() {return this.acidity;}public String getBody() {return this.body;}}

CoffeeBrewer类

/*** CoffeeBrewer is Product's subclass. It represents a type of Products which is something special.* @author BlankSpace* @version 2.0*/public class CoffeeBrewer extends Product {private String modelOfTheBrewer;private String typeOfTheWaterSupply;private int    numberOfCups;public CoffeeBrewer(String code, String description, double price, String modelOfTheBrewer, String typeOfTheWaterSupply, int numberOfCups) {super(code, description, price);this.modelOfTheBrewer = modelOfTheBrewer;this.typeOfTheWaterSupply = typeOfTheWaterSupply;this.numberOfCups = numberOfCups;}public String getModelOfTheBrewer() {return this.modelOfTheBrewer;}public String getTypeOfTheWaterSupply() {return this.typeOfTheWaterSupply;}public int getNumberOfCups() {return this.numberOfCups;}}

OrderItem类

/*** An orderItem contains one certain type of product and the quantity of user needs.* The class's objects will be added into an order's item list.* @author BlankSpace* @version 2.0*/public class OrderItem {private Product product;private int     quantity;public OrderItem(Product product, int quantity) {this.product = product;this.quantity = quantity;}public Product getProduct() {return this.product;}public void setQuantity(int quantity) {this.quantity = quantity;}public int getQuantity() {return this.quantity;}/*** to calculate the cost of purchasing the product* @return the result*/public double getValue() {return this.getProduct().getPrice() * this.getQuantity();}@Overridepublic String toString() {return this.getQuantity() + "," + this.getProduct().getCode() + "," + this.getProduct().getPrice();}}

Order类

import java.util.ArrayList;/*** the class which saves a certain order's all orderItems* @author BlankSpace* @version 2.0*/public class Order {//to save all orderItems.private ArrayList<OrderItem> orderItemList = new ArrayList<>();/*** to add the orderItem to the list.* @param orderItem*/public void addOrderItem(OrderItem orderItem) {this.orderItemList.add(orderItem);}/*** to delete the orderItem which user wants to delete.* @param orderItem*/public void removeOrderItem(OrderItem orderItem) {this.orderItemList.remove(orderItem);}/*** @return the list which saves all orderItems*/public ArrayList<OrderItem> getAllOrderItem(){return this.orderItemList;}/*** to search the orderItem which user wants to find in the list.* @param product* @return the orderItem which user wants to find*/public OrderItem getOrderItem(Product product) {for (OrderItem orderItem : orderItemList) {if (orderItem.getProduct().equals(product)) {return orderItem;}}return null;}/**    * @return the number of orderItems which are saved in the list.*/     public int getNumberOfOrderItems() {return this.orderItemList.size();}/*** to sum all the orderItems' value in the list.* @return the sum of all the orderItems' value.*/public double getValue() {double value = 0.0;for (OrderItem orderItem : orderItemList) {value += orderItem.getValue();}return value;}}

Catalog类

import java.util.ArrayList;/*** Catalog is created to save all the product's item.* @author BlankSpace* @version 2.0*/public class Catalog {private ArrayList<Product> products;public Catalog() {products = new ArrayList<>();}/*** to add the type of products to the list.* @param product*/public void addProduct(Product product) {this.products.add(product);}/*** to search the product which user wants to find in the list.* @param code* @return the product which user wants to find.*/public Product getProduct(String code) {for (Product product : products) {if (product.getCode().equals(code)) {return product;}}return null;}/*** @return the list which saves all kinds of products.*/public ArrayList<Product> getAllProduct() {return this.products;}/*** @return the number of product categories which are saved in the list.*/public int getNumberOfProducts() {return this.products.size();}}

Sales类

import java.util.ArrayList;/*** the class which can save all orders.* @author BlankSpace* @version 2.0*/public class Sales {//to save all orders.private ArrayList<Order> orders = new ArrayList<>();/*** to add the order to the list.* @param order*/public void addOrder(Order order) {this.orders.add(order);}/*** @return the list which saves all orders*/public ArrayList<Order> getAllOrder(){return this.orders;}/*** @return the number of orders which are saved in the list.*/public int getNumberOfOrders() {return this.orders.size();}}

GourmetCoffeeSystem类

import java.io.IOException;
import java.text.NumberFormat;
import java.util.Scanner;/*** 程序包的可运行部分* 使用了单例模式* 实际上唯一存在的实例有catalog、currentOrder、sales三个属性* @author BlankSpace* @version 2.0 */
public class GourmetCoffee {//静态初始化块static {CURRENCY = NumberFormat.getCurrencyInstance();}//用于后面格式化字符串private static final NumberFormat CURRENCY;//用于表示唯一的实例(实现单例模式)private static GourmetCoffee coffeeSystem = new GourmetCoffee(load());//用于获取整个程序体的输入private static Scanner scanner = new Scanner(System.in);//GourmetCoffeeSystem的三个属性:catalog、currentOrder、salesprivate Catalog catalog;private Order   currentOrder;private Sales   sales;//private修饰的构造器private GourmetCoffee(Catalog catalog) {this.catalog = catalog;this.currentOrder = new Order();this.sales = new Sales();}//main方法,程序的入口public static void main(String[] args) throws IOException {coffeeSystem.run();}/*** 执行初始化,把信息存入Catalog的实例中* @return 所有的产品信息*/private static Catalog load() {Catalog catalog = new Catalog();//这里利用了OOP中的多态:相当于Product product = new Coffee(......);......catalog.addProduct(new Coffee("C001", "Colombia, Whole, 1 lb",         17.99, "Colombia",             "Medium", "Rich and Hearty", "Rich", "Medium", "Full"));catalog.addProduct(new Coffee("C002", "Colombia, Ground, 1 lb",        18.75, "Colombia",             "Medium", "Rich and Hearty", "Rich", "Medium", "Full"));catalog.addProduct(new Coffee("C003", "Italian Roasts, Whole, 1 lb",   16.80, "Latin American Blend", "Italian Roast", "Dark and heavy", "Intense", "Low", "Medium"));catalog.addProduct(new Coffee("C004", "Italian Roasts, Ground, 1 lb",  17.55, "Latin American Blend", "Italian Roast", "Dark and heavy", "Intense", "Low", "Medium"));catalog.addProduct(new Coffee("C005", "French Roasts, Whole, 1 lb",    16.80, "Latin American Blend", "French Roast", "Bittersweet, full intense", "Intense, full", "None", "Medium"));catalog.addProduct(new Coffee("C006", "French Roasts, Ground, 1 lb",   17.55, "Latin American Blend", "French Roast", "Bittersweet, full intense", "Intense, full", "None", "Medium"));catalog.addProduct(new Coffee("C007", "Guatemala, Ground, 1 lb",       17.99, "Guatemala",            "Medium",  "Rich and complex", "Spicy", "Medium to high", "Medium to full"));catalog.addProduct(new Coffee("C008", "Guatemala, Ground, 1 lb",       18.75, "Guatemala",            "Medium",  "Rich and complex", "Spicy", "Medium to high", "Medium to full"));catalog.addProduct(new Coffee("C009", "Guatemala, Whole, 1 lb",        19.99, "Sumatra",              "Medium", "Vibrant and powdery", "Like dark chocolate", "Gentle", "Rich and full"));catalog.addProduct(new Coffee("C010", "Guatemala, Ground, 1 lb",       20.50, "Sumatra",              "Medium", "Vibrant and powdery", "Like dark chocolate", "Gentle", "Rich and full"));catalog.addProduct(new Coffee("C011", "Special Blend, Whole, 1 lb",    16.80, "Latin American Blend", "Dark roast", "Full, roasted flavor", "Hearty", "Bold and rich", "Full"));catalog.addProduct(new Coffee("C012", "Special Blend, Ground, 1 lb",   17.55, "Latin American Blend", "Dark roast", "Full, roasted flavor", "Hearty", "Bold and rich", "Full"));catalog.addProduct(new CoffeeBrewer("B001", "Home Coffee Brewer",          150.0,"Brewer 100", "Pourover", 6));catalog.addProduct(new CoffeeBrewer("B002", "Coffee Brewer, 2 Warmers",    200.0, "Brewer 200", "Pourover", 12));catalog.addProduct(new CoffeeBrewer("B003", "Coffee Brewer, 3 Warmers",    280.0, "Brewer 210", "Pourover", 12));catalog.addProduct(new CoffeeBrewer("B004", "Commercial Brewer, 20 cups",  380.0, "Quick Coffee 100", "Automatic", 20));catalog.addProduct(new CoffeeBrewer("B005", "Commercial Brewer, 40 cups",  480.0, "Quick Coffee 200", "Automatic", 40));catalog.addProduct(new Product("A001", "Almond Flavored Syrup",            9.0));catalog.addProduct(new Product("A002", "Irish Creme Flavored Syrup",       9.0));catalog.addProduct(new Product("A003", "Mint Flavored syrup",              9.0));catalog.addProduct(new Product("A004", "Caramel Flavored Syrup",           9.0));catalog.addProduct(new Product("A005", "Gourmet Coffee Cookies",           12.0));catalog.addProduct(new Product("A006", "Gourmet Coffee Travel Thermo",     18.0));catalog.addProduct(new Product("A007", "Gourmet Coffee Ceramic Mug",       8.0));catalog.addProduct(new Product("A008", "Gourmet Coffee 12 Cup Filters",    15.0));catalog.addProduct(new Product("A009", "Gourmet Coffee 36 Cup Filters",    45.0));return catalog;}private void run() throws IOException {//对传统印象中的for循环语句加以改造,使之更灵活for(int choice = this.getChoice(); choice != 0; choice = this.getChoice()) {//不需要default语句,因为在获取输入的时候就稳妥的处理了数据switch (choice) {case 1:this.displayCatalog();break;case 2:this.displayProductInformation();break;case 3:this.displayOrder();break;case 4:this.addOrModifyProduct();break;case 5:this.removeProduct();break;case 6:this.saleOrder();break;case 7:this.displayOrdersSold();break;}}}/*** 打印主菜单的方法*/private static void printMainMenu() {System.out.println(//退出系统"[0]  Quit\n"//显示目录:列出每个产品的代码和描述+ "[1]  Display catalog\n"//显示产品+ "[2]  Display product\n"//显示当前订单:列出当前订单中每个产品的数量、代码和价格,以及订单总价格。+ "[3]  Display current order\n"//将产品添加到当前订单,如果指定的产品已经是订单的一部分,此命令将修改该产品的数量+ "[4]  Add|modify product to|in current order\n"//从当前订单中删除产品+ "[5]  Remove product from current order\n"//注册当前订单的销售此命令将订单添加到商店的销售中并清空当前订单+ "[6]  Register sale of current order\n"//显示销售:列出所有已售出的订单+ "[7]  Display sales");}/*** 读取、处理选择值的方法* 与用户交互,读取选择的数据加以处理* @return 选择* @throws IOException*/private int getChoice() throws IOException {//不满足条件,循环会一直持续下去while(true) {try {System.out.println();printMainMenu();int choice = Integer.parseInt(scanner.next());System.out.println();//提前处理数据,只有输入0到7的整数才是合法的if (0 <= choice && choice <= 7) {return choice;}//提示用户输入错误System.out.println("Invalid choice:  " + choice);} catch (NumberFormatException numberFormatException) {//打印异常System.out.println(numberFormatException);}}}/*** 打印所有产品信息的方法*/private void displayCatalog() {int numberOfProducts = this.catalog.getNumberOfProducts();if (numberOfProducts == 0) {System.out.println("The catalog is empty");} else {for (Product product : this.catalog.getAllProduct()) {System.out.println(product.getCode() + " " + product.getDescription());}}}/*** 打印所选产品信息的方法* 利用instance of来分析判断前面的对象是否是后面的类或其子类、实现类的实例,使代码更加健壮* @throws IOException*/private void displayProductInformation() throws IOException {Product product = this.readProduct();if (product != null) {System.out.println("  Description: " + product.getDescription());System.out.println("  Price: " + product.getPrice());if (product instanceof Coffee) {//进行强制类型转换Coffee coffee = (Coffee)product;//输出咖啡产品信息System.out.println("  Origin: " + coffee.getCountryOfOrigin());System.out.println("  Roast: " + coffee.getTypeOfRoast());System.out.println("  Flavor: " + coffee.getFlavor());System.out.println("  Aroma: " + coffee.getAroma());System.out.println("  Acidity: " + coffee.getAcidity());System.out.println("  Body: " + coffee.getBody());} else if (product instanceof CoffeeBrewer) {CoffeeBrewer coffeeBrewer = (CoffeeBrewer)product;System.out.println("  Model: " + coffeeBrewer.getModelOfTheBrewer());System.out.println("  Water Supply: " + coffeeBrewer.getTypeOfTheWaterSupply());System.out.println("  Number of Cups: " + coffeeBrewer.getNumberOfCups());}} else {System.out.println("There are no products with that code");}}/*** 打印订单信息的方法*/private void displayOrder() {int numberOfOrderItems = this.currentOrder.getNumberOfOrderItems();if (numberOfOrderItems == 0) {System.out.println("The current order is empty");} else {for (OrderItem orderItem : this.currentOrder.getAllOrderItem()) {System.out.println(orderItem.toString());}System.out.println("Total: " + CURRENCY.format(this.currentOrder.getValue()));}}/*** 添加或修改订单中产品信息的方法* @throws IOException*/private void addOrModifyProduct() throws IOException {Product product = this.readProduct();if (product != null) {int quantity = this.readQuantity();OrderItem orderItem = this.currentOrder.getOrderItem(product);if (orderItem == null) {this.currentOrder.addOrderItem(new OrderItem(product, quantity));System.out.println("The product " + product.getCode() + " has been added");} else {orderItem.setQuantity(quantity);System.out.println("The quantity of the product " + product.getCode() + " has been modified");}} else {System.out.println("There are no products with that code");}}/*** 清除订单信息中某一产品信息的方法* @throws IOException*/private void removeProduct() throws IOException {Product product = this.readProduct();if (product != null) {OrderItem orderItem = this.currentOrder.getOrderItem(product);if (orderItem != null) {this.currentOrder.removeOrderItem(orderItem);System.out.println("The product " + product.getCode() + " has been removed from the current order");} else {System.out.println("There are no products in the current order with that code");}} else {System.out.println("There are no products with that code");}}/*** 交易当前订单的方法*/private void saleOrder() {if (this.currentOrder.getNumberOfOrderItems() > 0) {this.sales.addOrder(this.currentOrder);this.currentOrder = new Order();System.out.println("The sale of the order has been registered");} else {System.out.println("The current order is empty");}}/*** 展示交易过的订单的方法*/private void displayOrdersSold() {//获取交易过的订单数int numberOfOrders = this.sales.getNumberOfOrders();if (numberOfOrders != 0) {int count = 1;for (Order order : this.sales.getAllOrder()) {System.out.println("Order " + count++);for (OrderItem orderItem : this.currentOrder.getAllOrderItem()) {System.out.println("   " + orderItem.toString());}System.out.println("   Total: " + CURRENCY.format(order.getValue()));}} else {System.out.println("There are no sales");}}/*** 读取要检索的产品的方法* @return 要检索的产品* @throws IOException*/private Product readProduct() throws IOException {System.out.print("Product code> ");return this.catalog.getProduct(scanner.next());}/*** 读取购买数的方法* @return 购买数* @throws IOException*/private int readQuantity() throws IOException {while(true) {try {System.out.print("Quantity> ");int quantity = Integer.parseInt(scanner.next());if (quantity > 0) {return quantity;}System.out.println("Invalid input. Please enter a positive integer");} catch (NumberFormatException e) {System.out.println(e);}}}}

类图

【Java】Gourmet咖啡系统相关推荐

  1. 【Java】异常和IO在Gourmet咖啡系统中的应用

    下载链接 Download 前尘往事 面向对象设计.UML建模与基本的Java面向对象编程实现 实验一:设计模式在Gourmet咖啡系统中的应用 Using File I/O in the Gourm ...

  2. 【Java】设计模式在Gourmet咖啡系统中的应用

    下载链接 Download 前尘往事 面向对象设计.UML建模与基本的Java面向对象编程实现 后续篇章 实验二:异常和IO在Gourmet咖啡系统中的应用 Using Design Patterns ...

  3. java毕业设计咖啡销售平台mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计咖啡销售平台mybatis+源码+调试部署+系统+数据库+lw java毕业设计咖啡销售平台mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S架构 开 ...

  4. 基于JAVA自考学位系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA自考学位系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA自考学位系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: 项目架构:B/S ...

  5. 基于JAVA二手房屋租赁系统计算机毕业设计源码+系统+lw文档+部署

    基于JAVA二手房屋租赁系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA二手房屋租赁系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...

  6. 基于JAVA电视设备租借系统计算机毕业设计源码+系统+lw文档+部署

    基于JAVA电视设备租借系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA电视设备租借系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...

  7. 计算机毕业设计Java智慧公寓系统演示录屏2021(源码+系统+mysql数据库+Lw文档)

    计算机毕业设计Java智慧公寓系统演示录屏2021(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java智慧公寓系统演示录屏2021(源码+系统+mysql数据库+Lw文档) 本源码技术栈 ...

  8. 基于java蔬菜销售系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java蔬菜销售系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java蔬菜销售系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 本源码技术栈: 项目架构 ...

  9. java云服务器系统选择,java云服务器系统选择

    java云服务器系统选择 内容精选 换一换 登录Windows操作系统弹性云服务器时,无法正常进入系统.自启动系统修复模式,但选择修复选项后报错,无法继续进行系统恢复.Windows文件已损坏.登录管 ...

最新文章

  1. 如何复制计算机页面,怎么把电脑命令行窗口里的内容复制到剪贴板
  2. java socket中属性详解_前端开发:关于Vue组件中的data属性值是函数而不是对象的详解...
  3. Codeforces Round #541 (Div. 2) C.Birthday
  4. 计算机代码内大数据内存堆栈溢出问题
  5. php移动端url,什么是PC和移动端URL路径规范化
  6. 顶级程序员的心得 Coders at Work (I)
  7. sync.Once简介
  8. @工程师,怎样才能让面试者一眼相中你?
  9. Kent Beck 的《测试驱动开发》(TDD) Money示例Ruby版
  10. 2015蓝桥杯C++A:饮料换购
  11. linux安装wineQQ
  12. RADIUS服务器不是消息,RADIUS通过如下哪些手段来确保RADIUS服务器与RADIUS客户端之间交互消息正确性()。...
  13. wpd小波包分解_基于奇异值分解和小波包分解的故障检测
  14. Transformer is All You Need: Multimodal Multitask Learning with a Unified Transformer
  15. python 中 函数的使用!!!
  16. 弓箭传说微信小程序抖音小程序开发
  17. 超越谷歌与特斯拉?百度Apollo生态有一套
  18. 索为百万工业互联网APP平台“众工业”在2018工业互联网峰会重磅发布
  19. 任务描述本关任务:利用所学知识,按要求自行绘制一个 K 线图。
  20. 创建电子商务网站的七个步骤_新电子商务需要避免的7个错误

热门文章

  1. codeforces 558E A Simple Task 线段树
  2. 通知中心 NSNotificationCenter 的简单使用方法
  3. sharepoint 页面定制经验小结
  4. 计算机与生命科学专业排名,2019软科世界一流学科排名发布,54个专业TOP10牛校榜单全给你...
  5. java 反射的效率_如何提高使用Java反射的效率?
  6. python中不能使用下标运算的有哪些_Python中最常见的10个问题(列表)
  7. 实现光晕效果_马自达6车灯升级激光四透镜实现四近四远光
  8. 北海计算机职称考试地点,【2017年广西北海职称计算机考试报名时间9月1日-5日】- 环球网校...
  9. 实现iframe_面试官:来说说单点登录的三种实现方式
  10. c语言可以编制出功能复杂的程序,2018级《C语言程序设计》复习题及答案(5页)-原创力文档...