快乐E栈项目实战第一阶段

75 阅读3分钟

“携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第19天,点击查看活动详情

1. 前言

其实我想边总结java语法边做一些实际的电商项目,但是似乎Java的一些总结发文后重复内容太多,所以这里就只总结实战项目。先期会做快乐e栈的项目,这个项目可以扩展的东西还是很多的,比如可以扩展和iot设备的交互,快递柜也属于一个典型的可复制的iot设备了,我们这里主要通过这个项目来锻炼Java基础语法、面向对象、数据结构、多线程、文件操作IO流、数据库操作JDBC以及微信小程序开发等。快乐e栈的项目总结完后,后续还会总结一些其它的实战项目,比如旅游网站、医院系统网站等的实战项目,目前来说虽然go开发web已经很火了,但是国内商业上目前Java做这种项目还是更多一些,大概率维护的也是类似的Java项目,后续我们也可以使用Go移植这些项目来练手,这样也能有一个主观上的开发难易度的对比判断。

2. 第一阶段代码

简单的快递E栈功能,实现角色切换、存快递、删快递、修改快递、查询快递、取快递功能,目前根据第一阶段所学主要使用流程控制进行处理:

package happyEStack;

import java.util.Random;
import java.util.Scanner;

public class happyEStack {

	static String g_courierNum = "";
	static int g_takeCode = 0;
	static String g_companyName = "";
	static Scanner g_scanner = new Scanner(System.in);
	
	public static void main(String[] args) {
		while(true) {
			//1、角色切换
			System.out.println("=====欢迎使用快乐e栈快递柜=====");
			System.out.println("请输入您的身份:1-快递员,2-用户");
			
			int identity = getUserIntInput(g_scanner);
			if(identity != 1 && identity != 2) {
				System.out.println("您输入的身份类型错误");
				continue;
			}
			
			if(1 == identity) {
				System.out.println("请选择操作:1-存快递 2-删除快递 3-修改快递信息 4-查看所有快递");
				int option = getUserIntInput(g_scanner);
				
				switch(option) {
				case 1:  //2、存快递
					saveCourier();
					break;
				case 2:  //3、删除快递
					delCourier();
					break;
				case 3:  //4、修改快递
					modifyCourier();
					break;
				case 4:  //5、查看所有快递
					queryCourier();
					break;
				default:
					System.out.println("您选择的操作错误");
					continue;
				}
			} else if(2 == identity) {
				//6、取快递
				takeCourier();
			}
		}
	}
	
	/**
	 * 获取用户输入的Int类型值并判断
	 * 参数:Scanner对象
	 * 返回值:输入正确返回输入值,输入错误进行打印并返回-1
	 */
	public static int getUserIntInput(Scanner scanner) {
		if(scanner.hasNextInt()) {
			return scanner.nextInt();
		} else {
			System.out.println("你输入的信息错误");
		}
		
		return -1;
	}
	
	/**
	 * 获取用户输入的String类型值并判断
	 * 参数:Scanner对象
	 * 返回值:输入正确返回输入值,输入错误返回null
	 */
	public static String getUserStringInput(Scanner scanner) {
		if(scanner.hasNext()) {
			return scanner.next();
		} else {
			System.out.println("你输入的信息错误");
		}
		
		return null;
	}
	
	/**
	 * 数据初始化
	 */
	public static void init() {
		g_courierNum = "";
		g_companyName = "";
		g_takeCode = 0;
	}
	
	/**
	 * 存快递相关操作
	 */
	public static void saveCourier() {
		System.out.println("请输入快递单号:");
		g_courierNum = getUserStringInput(g_scanner);
		System.out.println("请输入公司名称:");
		g_companyName = getUserStringInput(g_scanner);
		g_takeCode = new Random().nextInt(900) + 100;
		System.out.println("快递已存入,取件码是:"+g_takeCode);
	}

	/**
	 * 删除快递相关操作
	 */
	public static void delCourier() {
		System.out.println("请输入要删除的快递单号:");
		String courierNumDel = getUserStringInput(g_scanner);
		if(courierNumDel.equals(g_courierNum)) {
			System.out.println("删除成功");
			init();
		} else {
			System.out.println("未找到快递");
		}
	}
	
	/**
	 * 修改快递相关操作
	 */
	public static void modifyCourier() {
		System.out.println("请输入要修改的快递单号:");
		String courierNumOld = getUserStringInput(g_scanner);
		if(courierNumOld.equals(g_courierNum)) {
			System.out.println("请输入新的快递单号:");
			g_courierNum = getUserStringInput(g_scanner);
			System.out.println("请输入新的公司名称:");
			g_companyName = getUserStringInput(g_scanner);
			System.out.println("修改成功");
		} else {
			System.out.println("未找到该快递");
		}
	}
	
	/**
	 * 查看快递相关操作
	 */
	public static void queryCourier() {
		System.out.println("所有快递信息如下:");
		System.out.println("快递单号\t"+"公司名称\t"+"取件码\t");
		System.out.println(g_courierNum+"\t"+g_companyName+"\t"+g_takeCode+"\t");
	}
	
	/**
	 * 取快递相关操作
	 */
	public static void takeCourier() {
		System.out.println("请输入取件码:");
		int takeCodeGet = getUserIntInput(g_scanner);
		if(takeCodeGet == g_takeCode) {
			System.out.println("取件成功");
			init();
		} else {
			System.out.println("未找到该快递");
		}
	}
}

3. 结果展示

数据都是内存中存储,主要是用来熟悉Java的流程控制和基础语法等:

在这里插入图片描述