Java任务:模块化设计之客户端

来自CloudWiki
跳转至: 导航搜索

任务描述

Java任务:重复菜单操作之客户端中 我们实现了用户的功能选择。

但是,看着main方法里密密麻麻的代码,你是否有些眩晕呢?

这一节 让我们用模块化的思想,通过编写不同的方法来重新我们主类里的代码,简化主类的逻辑。

任务实现

算法分析

分析Java任务:重复菜单操作之客户端中的代码,

我们发现Main类中代码的功能主要有两个: 打印菜单;让用户选择功能;

伪代码如下:

while(True) {
     打印菜单;
     让用户选择功能;
}

因此,我们可以通过编写两个小方法showMenu 和getChoice 来实现打印菜单和让用户选择的功能;

编写showMenu()方法

public static void showMenu() {
		// 编写主菜单输出语句
		System.out.println("**********面馆管理系统**********\r\n" 
							+ "1.查询所有商品\r\n" 
							+ "2.根据商品编号查找商品\r\n" 
							+ "3.购买商品\r\n" 
							+ "4.取消购买\r\n" 
							+ "5.查询购物车\r\n" 
							+ "6.退出系统\r\n" 
							+ "*******************************");
		
	        System.out.println("请选择(1-6):");
	}

编写getChoice方法

public static void getChoice(Scanner sc) {
		
		 //获取用户对于菜单的选择
		   String value = sc.next();
		   int choise = Integer.valueOf(value);
		   switch(choise) {
				case 1:	//处理查询所有商品的业务
					System.out.println("您选择了:查询所有商品的业务");
					break;
				case 2:	//处理按商品编号查询
					System.out.println("您选择了: 按商品编号查询的业务");
					break;
				case 3:	//购买商品,将商品加入到用户的购物车中
					System.out.println("您选择了:列出购买商品的业务");
					break;
				case 4:	//删除商品,从购物车中删除商品信息
					System.out.println("您选择了:处理删除商品的业务");
					break;
				case 5:	//显示某个用户购物车中所有的商品
					System.out.println("您选择了:显示所有商品的业务");
					break;
				case 6:	//退出当前应用程序
					System.out.println("您选择了:退出当前应用程序");
					sc.close();
					System.exit(0);
					break;
				default:
					System.out.println("您的选择不正确");
			}
		   
	}

main方法中完成调用

写完上述代码后,我们会发现main方法里的逻辑变得异常简单,

所有的主要逻辑都放在了每个方法内部去实现。

                Scanner sc = new Scanner(System.in);
		while(true) {
			showMenu() ;
			getChoice(sc);
			  
		}

完整代码

import java.util.Scanner;

public class Main {
	
	public static void showMenu() {
		// 编写主菜单输出语句
		System.out.println("**********面馆管理系统**********\r\n" 
							+ "1.查询所有商品\r\n" 
							+ "2.根据商品编号查找商品\r\n" 
							+ "3.购买商品\r\n" 
							+ "4.取消购买\r\n" 
							+ "5.查询购物车\r\n" 
							+ "6.退出系统\r\n" 
							+ "*******************************");
		
	   System.out.println("请选择(1-6):");
	}
	public static void getChoice(Scanner sc) {
		
		 //获取用户对于菜单的选择
		   String value = sc.next();
		   int choise = Integer.valueOf(value);
		   switch(choise) {
				case 1:	//处理查询所有商品的业务
					System.out.println("您选择了:查询所有商品的业务");
					break;
				case 2:	//处理按商品编号查询
					System.out.println("您选择了: 按商品编号查询的业务");
					break;
				case 3:	//购买商品,将商品加入到用户的购物车中
					System.out.println("您选择了:购买商品的业务");
					break;
				case 4:	//删除商品,从购物车中删除商品信息
					System.out.println("您选择了:处理删除商品的业务");
					break;
				case 5:	//显示某个用户购物车中所有的商品
					System.out.println("您选择了:显示所有商品的业务");
					break;
				case 6:	//退出当前应用程序
					System.out.println("您选择了:退出当前应用程序");
					sc.close();
					System.exit(0);
					break;
				default:
					System.out.println("您的选择不正确");
			}
		   
	}
	public static void main(String[] args) {
		// * 获取用户的输入数据
	 Scanner sc = new Scanner(System.in);
		while(true) {
			showMenu() ;
			getChoice(sc);
			  
		}
	   
	}
}


 public  static void start(Scanner sc){
		
		System.out.println("****************************");
		System.out.println("*****欢迎登录商院面馆平台客户端****");
		System.out.println("****************************");
		System.out.println("账号:");
		String uname = sc.nextLine();
		System.out.println("密码:");
		String pwd = sc.nextLine();
		System.out.println("用户名为:"+uname+",密码为:"+pwd);	
		 	
	}