Java结合面向对象编程思想,开发“裹裹快投”快递服务控制台程序,可实现用户寄件、取件、查询订单、修改订单、取消订单等功能。 具体要求如下: (1)显示系统主菜单 包括寄件、取件、查询订单、修改订单、取消订单
时间: 2023-12-01 20:03:47 浏览: 56
好的,我会根据您的要求回答您的问题。根据您的需求,Java结合面向对象编程思想,开发“裹裹快投”快递服务控制台程序,可以实现用户寄件、取件、查询订单、修改订单、取消订单等功能。
首先,您需要设计一个类来表示订单,这个类应该包括订单编号、寄件人姓名、寄件人地址、收件人姓名、收件人地址、快递费用、快递状态等属性。您还需要为订单类提供一些方法,例如设置订单属性、获取订单属性、取消订单等。
然后,您需要设计一个类来表示快递服务控制台程序,这个类应该包括一个主菜单,可以通过主菜单实现用户寄件、取件、查询订单、修改订单、取消订单等功能。您可以使用switch语句或if语句来实现不同的功能选项。
在实现这个控制台程序时,您可以使用Java的输入输出流来实现用户输入和输出。例如,当用户输入寄件信息时,您可以使用Scanner类来读取用户输入的信息,并使用System.out.println()方法来输出提示信息。
此外,您还可以使用异常处理机制来处理用户输入的错误信息。例如,当用户输入一个无效的订单编号时,您可以抛出一个异常并提示用户重新输入。
最后,您需要测试您的程序,确保它可以正确地执行所需的功能,并且可以处理各种异常情况。
相关问题
Java结合面向对象编程思想,开发“裹裹快投”快递服务控制台程序,可实现用户寄件、
查询、签收、投诉等功能。
首先,我们需要定义一些类来表示快递服务中的各种对象。比如,我们可以定义一个用户类(User),一个快递员类(Courier),以及一个快递类(Express)等等。
下面是一个简单的 User 类的定义:
```
public class User {
private String name; // 用户名
private String phone; // 手机号码
private String address; // 收件地址
// 构造函数
public User(String name, String phone, String address) {
this.name = name;
this.phone = phone;
this.address = address;
}
// getter/setter 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
```
快递员类和快递类的定义类似,这里就不赘述了。
接下来,我们需要定义一个主控制台程序,用来实现用户输入指令、查询快递信息等功能。以下是一个简单的主程序的代码:
```
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 初始化快递公司
ExpressCompany company = new ExpressCompany();
// 进入主循环
while (true) {
System.out.println("请输入指令:");
String command = scanner.nextLine();
if (command.equals("寄件")) {
// 用户输入寄件相关信息
System.out.println("请输入寄件人姓名:");
String senderName = scanner.nextLine();
System.out.println("请输入寄件人手机号码:");
String senderPhone = scanner.nextLine();
System.out.println("请输入寄件人地址:");
String senderAddress = scanner.nextLine();
System.out.println("请输入收件人姓名:");
String receiverName = scanner.nextLine();
System.out.println("请输入收件人手机号码:");
String receiverPhone = scanner.nextLine();
System.out.println("请输入收件人地址:");
String receiverAddress = scanner.nextLine();
// 创建快递对象并保存到快递公司中
Express express = new Express(senderName, senderPhone, senderAddress, receiverName, receiverPhone, receiverAddress);
company.addExpress(express);
System.out.println("寄件成功!");
} else if (command.equals("查询")) {
// 用户输入快递单号
System.out.println("请输入快递单号:");
String expressNumber = scanner.nextLine();
// 查询快递信息并输出
Express express = company.findExpress(expressNumber);
if (express != null) {
System.out.println("快递单号:" + express.getNumber());
System.out.println("寄件人姓名:" + express.getSenderName());
System.out.println("寄件人手机号码:" + express.getSenderPhone());
System.out.println("寄件人地址:" + express.getSenderAddress());
System.out.println("收件人姓名:" + express.getReceiverName());
System.out.println("收件人手机号码:" + express.getReceiverPhone());
System.out.println("收件人地址:" + express.getReceiverAddress());
} else {
System.out.println("快递单号不存在!");
}
} else if (command.equals("签收")) {
// 用户输入快递单号
System.out.println("请输入快递单号:");
String expressNumber = scanner.nextLine();
// 签收快递并输出结果
boolean result = company.signExpress(expressNumber);
if (result) {
System.out.println("签收成功!");
} else {
System.out.println("快递单号不存在或已被签收!");
}
} else if (command.equals("投诉")) {
// 用户输入快递单号和投诉信息
System.out.println("请输入快递单号:");
String expressNumber = scanner.nextLine();
System.out.println("请输入投诉信息:");
String complaint = scanner.nextLine();
// 添加投诉信息并输出结果
boolean result = company.addComplaint(expressNumber, complaint);
if (result) {
System.out.println("投诉成功!");
} else {
System.out.println("快递单号不存在!");
}
} else if (command.equals("退出")) {
// 退出程序
break;
} else {
// 非法指令
System.out.println("非法指令,请重新输入!");
}
}
}
}
```
以上代码仅为示例,具体实现可能需要根据实际情况进行修改和完善。
Java结合面向对象编程思想,开发“裹裹快投”快递服务控制台程序,可实现用户寄件、取件、查询订单、修改订单、取消订单等功能
好的,下面我会给你提供一些实现思路和代码示例。
首先,我们可以定义一个 `Order` 类来表示快递订单,包含以下属性:
```java
public class Order {
private String orderId; // 订单号
private String senderName; // 寄件人姓名
private String senderPhone; // 寄件人电话
private String senderAddress; // 寄件人地址
private String receiverName; // 收件人姓名
private String receiverPhone; // 收件人电话
private String receiverAddress; // 收件人地址
private double weight; // 快递重量
private double fee; // 快递费用
private String status; // 订单状态:已下单、已发货、已签收、已取消
// 构造方法
public Order(String orderId, String senderName, String senderPhone, String senderAddress,
String receiverName, String receiverPhone, String receiverAddress, double weight) {
this.orderId = orderId;
this.senderName = senderName;
this.senderPhone = senderPhone;
this.senderAddress = senderAddress;
this.receiverName = receiverName;
this.receiverPhone = receiverPhone;
this.receiverAddress = receiverAddress;
this.weight = weight;
this.fee = calculateFee(); // 根据重量计算费用
this.status = "已下单"; // 初始状态为已下单
}
// 计算快递费用
private double calculateFee() {
// 这里可以根据快递公司的计费标准进行计算,这里简化为按每公斤5元计算
return weight * 5;
}
// 修改订单状态
public void setStatus(String status) {
this.status = status;
}
// 取消订单,将状态设置为已取消
public void cancelOrder() {
this.status = "已取消";
}
// 获取订单信息
public String getInfo() {
return "订单号:" + orderId +
"\n寄件人:" + senderName + ",电话:" + senderPhone + ",地址:" + senderAddress +
"\n收件人:" + receiverName + ",电话:" + receiverPhone + ",地址:" + receiverAddress +
"\n重量:" + weight + "kg,费用:" + fee + "元,状态:" + status;
}
}
```
接下来,我们可以定义一个 `ExpressService` 类来管理订单,包含以下方法:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ExpressService {
private List<Order> orderList; // 订单列表
private int currentOrderId; // 当前订单号
// 构造方法,初始化订单列表和当前订单号
public ExpressService() {
this.orderList = new ArrayList<>();
this.currentOrderId = 10000; // 初始订单号为10000
}
// 生成新订单号
private String generateOrderId() {
return "GGKT" + currentOrderId++;
}
// 添加订单
public void addOrder() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入寄件人姓名:");
String senderName = scanner.nextLine();
System.out.println("请输入寄件人电话:");
String senderPhone = scanner.nextLine();
System.out.println("请输入寄件人地址:");
String senderAddress = scanner.nextLine();
System.out.println("请输入收件人姓名:");
String receiverName = scanner.nextLine();
System.out.println("请输入收件人电话:");
String receiverPhone = scanner.nextLine();
System.out.println("请输入收件人地址:");
String receiverAddress = scanner.nextLine();
System.out.println("请输入快递重量(kg):");
double weight = scanner.nextDouble();
scanner.nextLine(); // 清空缓冲区
Order order = new Order(generateOrderId(), senderName, senderPhone, senderAddress,
receiverName, receiverPhone, receiverAddress, weight);
orderList.add(order);
System.out.println("订单已创建,订单号为:" + order.getOrderId());
}
// 查询订单
public void queryOrder() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要查询的订单号:");
String orderId = scanner.nextLine();
for (Order order : orderList) {
if (order.getOrderId().equals(orderId)) {
System.out.println(order.getInfo());
return;
}
}
System.out.println("未找到该订单!");
}
// 修改订单
public void modifyOrder() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要修改的订单号:");
String orderId = scanner.nextLine();
for (Order order : orderList) {
if (order.getOrderId().equals(orderId)) {
System.out.println(order.getInfo());
System.out.println("请输入要修改的内容(1-寄件人姓名,2-寄件人电话,3-寄件人地址,4-收件人姓名,5-收件人电话,6-收件人地址,7-快递重量):");
int choice = scanner.nextInt();
scanner.nextLine(); // 清空缓冲区
switch (choice) {
case 1:
System.out.println("请输入新的寄件人姓名:");
String senderName = scanner.nextLine();
order.setSenderName(senderName);
break;
case 2:
System.out.println("请输入新的寄件人电话:");
String senderPhone = scanner.nextLine();
order.setSenderPhone(senderPhone);
break;
case 3:
System.out.println("请输入新的寄件人地址:");
String senderAddress = scanner.nextLine();
order.setSenderAddress(senderAddress);
break;
case 4:
System.out.println("请输入新的收件人姓名:");
String receiverName = scanner.nextLine();
order.setReceiverName(receiverName);
break;
case 5:
System.out.println("请输入新的收件人电话:");
String receiverPhone = scanner.nextLine();
order.setReceiverPhone(receiverPhone);
break;
case 6:
System.out.println("请输入新的收件人地址:");
String receiverAddress = scanner.nextLine();
order.setReceiverAddress(receiverAddress);
break;
case 7:
System.out.println("请输入新的快递重量(kg):");
double weight = scanner.nextDouble();
scanner.nextLine(); // 清空缓冲区
order.setWeight(weight);
order.setFee(order.calculateFee()); // 重新计算费用
break;
default:
System.out.println("输入有误!");
return;
}
System.out.println("订单已修改,新信息为:");
System.out.println(order.getInfo());
return;
}
}
System.out.println("未找到该订单!");
}
// 取消订单
public void cancelOrder() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要取消的订单号:");
String orderId = scanner.nextLine();
for (Order order : orderList) {
if (order.getOrderId().equals(orderId)) {
order.cancelOrder();
System.out.println("订单已取消!");
return;
}
}
System.out.println("未找到该订单!");
}
// 显示所有订单
public void showAllOrders() {
System.out.println("所有订单如下:");
for (Order order : orderList) {
System.out.println(order.getInfo());
System.out.println("--------------------");
}
}
}
```
最后,我们可以定义一个 `Main` 类来实现控制台程序的交互:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
ExpressService expressService = new ExpressService();
Scanner scanner = new Scanner(System.in);
boolean flag = true;
while (flag) {
System.out.println("请选择操作(1-寄件,2-查询订单,3-修改订单,4-取消订单,5-显示所有订单,0-退出程序):");
int choice = scanner.nextInt();
scanner.nextLine(); // 清空缓冲区
switch (choice) {
case 1:
expressService.addOrder();
break;
case 2:
expressService.queryOrder();
break;
case 3:
expressService.modifyOrder();
break;
case 4:
expressService.cancelOrder();
break;
case 5:
expressService.showAllOrders();
break;
case 0:
flag = false;
System.out.println("程序已退出!");
break;
default:
System.out.println("输入有误!");
break;
}
}
}
}
```
这样,我们就完成了一个简单的快递服务控制台程序,可以实现用户寄件、取件、查询订单、修改订单、取消订单等功能。