Java实战之吃货联盟订餐系统

 更新时间:2021年04月28日 14:33:02   作者:不想搬砖ouo  
这篇文章主要介绍了Java实战之吃货联盟订餐系统,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下

一、前言

刚刚学完java基础入门,主要学习Java基本环境搭建,定义变量、选择结构,循环结构、数组等。本阶段结束尝试接触此次吃货联盟订餐系统,第一次敲这么长的代码,后面多见识见识应该就好了,多加努力啊!

吃货联盟订餐系统包含的功能:我要订餐、查看餐袋、签收订单、删除订单、我要点赞、退出系统

二、基本业务分析

我要订餐

1.输入订餐人姓名

2.将所有的菜品进行展示

3.输入要订的菜品序号

4.输入要订的菜品份数

5.输入配送时间

6.输入配送地址

7.显示订餐信息

查看餐袋

1.直接展示所有的订单信息

我要签收

1.展示所有的订单信息

2.输入要签收的订单序号

3.如果已经完成不允许重复签收

4.如果未完成则可以进行签收

5.展示签收成功

删除订单

1.展示所有的订单信息

2.输入要删除的订单序号

3.如果未完成(已预订)则不允许删除

4.如果已完成可以进行订单删除

5.展示删除成功

我要点赞

1.展示所有的菜品信息

2.输入点赞的菜品序号

3.提示点赞成功

退出系统

1.提示结束语

2.执行程序退出

三、完整代码

public class OrderingMsg {

	public static void main(String[] args) {
		//初始化数据
		//数据主体:一组订单信息
		String[] names = new String[4];         //订餐人姓名
		String[] dishMegs = new String[4];      //所选菜品
		int[] times = new int[4];               //送餐时间
		String[] addresses = new String[4];       //送餐地址
		int[] states = new int[4];               //订单状态:0 已预购 1 已完成
		double[] sumPrices = new double[4];     //总金额
		
		//初始化两个订单信息
		names[0] = "盖伦";
		dishMegs[0] = "红烧带鱼 2份";
		times[0] = 3;
		addresses[0] = "德玛西亚";
		sumPrices[0] = 76.0;
		states[0] = 1;
		
		names[1] = "拉克丝";
		dishMegs[1] = "红烧带鱼 1份";
		times[1] = 10;
		addresses[1] = "德玛西亚";
		sumPrices[0] = 20;
		
		//供选择的菜品信息
		String[] dishNames = {"红烧带鱼","鱼香肉丝","时令蔬菜"};
		//菜品单价
		double[] prices = new double[] {38.0,20.0,10};
		int[] praiseNums = new int[3];
		Scanner input = new Scanner(System.in);
		//用户输入0返回主菜单,否则退出系统
		int num = -1;
		//标记用户是否提出系统 true:退出系统
		boolean isExit = false;
		System.out.println("\n欢迎使用吃货联盟系统");
		//循环:显示菜单,根据用户选择,执行响应功能
		do {
			//显示菜单
			System.out.println("*******************");
			System.out.println("1:我要订餐");
			System.out.println("2:查看餐袋");
			System.out.println("3:签收订单");
			System.out.println("4:删除订单");
			System.out.println("5:我要点赞");
		    System.out.println("6:退出系统");
		    System.out.println("*******************");
		    System.out.println("请选择:");
			//记录客户选择功能的编号
		    int choose = input.nextInt();
		    //记录用户选择的功能编号
		    boolean isAdd = false;
		    //找到要签收的订单
		    boolean isSignFind = false;
		    //找到要删除的订单
		    boolean isDelFind = false;
		    //根据用户选择的功能编号执行响应功能
		    switch (choose) {
			
		    case 1:
		    	//我要订餐
				System.out.println("*********我要订餐*********");
				//循环展示菜单
				for (int j = 0; j <names.length; j++) {
					//找到第一个空位置,可以添加订单信息
					if(names[j]==null) {
						//标记位置,可以订餐
						isAdd =true;
						System.out.println("请输入订餐人的姓名:");
						String name = input.next();
						//显示供选择的菜品信息
						System.out.println("序号"+"\t"+"菜名"+"\t"+"单价");
						for (int i = 0; i < dishNames.length; i++) {
							String price = prices [i] +"元";
							String priaiseNum =(praiseNums[i])>0?praiseNums[i]+"赞":"";
							System.out.println((i+1)+"\t"+dishNames[i]+"\t"+price+"\t"+priaiseNum);
						}
						//用户点菜
						System.out.println("请选择您要点的菜品编号:");
						int chooseDish = input.nextInt();
						System.out.println("请选择您需要的份数:");
						int number = input.nextInt();
					 String  dishMeg =	dishNames[chooseDish-1]+""+number+"份";
					 double sumPrice = prices[chooseDish-1]*number;
					 //餐费满50元,免送餐费10元
					 double deliCharge =(sumPrice>=50)?0:6;
					 System.out.println("请输入送餐时间(送餐时间是10点至20点间整点送餐:)");
					 int time = input.nextInt();
					 while (time<10||time>20) {
						 System.out.println("您输入有误,请输入10~20间的整数!");
						 time = input.nextInt();
					 }
					 System.out.println("请输入送餐地址:");
					 String address =input.next();
					 //无需添加状态,默认是0,即已预订状态.
					 System.out.println("订餐成功!");
					 System.out.println("您订的是:"+dishMeg);
					 System.out.println("送餐时间是:"+time+"点");
					 System.out.println("餐费:"+sumPrice+"元,送餐费"+deliCharge+"元,总计:"+(sumPrice+deliCharge)+"元");
					 //添加数据
					 names[j]=name;
					 dishMegs[j] =dishMeg;
					 times[j] =time;
					 addresses[j] =address;
					 sumPrices[j] =sumPrice+deliCharge;
					 break;
					}
				}
				if(!isAdd) {
					System.out.println("对不起,您的餐袋已满!");
				}
		    	break;
		    case 2:
		    	 //查看餐袋
				System.out.println("*********查看餐袋**********");
				System.out.println("序号\t订餐人\t餐品信息\t\t送餐时间\t\t总金额\t订单状态");
				for (int i = 0; i < names.length; i++) {
					//查看餐袋中的内容,如果是空就跳出,不在查看
					if (names[i]==null) {
						String state = (states[i]==0)?"已预定":"已完成";
						String data = times[i]+"日";
						String sumPrice = sumPrices[i]+"元";
						System.out.println((i+1)+"\t"+names[i]+"\t"+dishMegs[i]+"\t"+addresses[i]+"\t"+sumPrice+"\t"+state);
					}
				}
		    	break;
		    case 3:
		    	//签收订单
		    	System.out.println("*********签收订单**********");
		    	System.out.println("请选择要签收的订单序号:");
		    	int signOrder = input.nextInt();
		    	for (int i = 0; i < names.length; i++) {
					//状态为已预定,序号为用户输入的订单序号:可签收
		    		//状态为已完成,序号为用户输入订单序号:不可签收
		    		if (names[i]!=null&&states[i]==1&&signOrder==i+1) {
						System.out.println("您选择的订单已完成签收,不能再次签收");
						isSignFind = true;
					}
				}
		    	//未找到的订单序号:不可签收
		    	if (!isSignFind) {
					System.out.println("您选择的订单不存在!");
				}
		    	break;
		    case 4:
		    	//删除订单
		    	System.out.println("*********删除订单**********");
		    	System.out.println("请输入要删除的订单序号:");
		    	int delId = input.nextInt();
		    	for (int i = 0; i < names.length; i++) {
					//状态值为已完成 选侯志为用户输入的序号:可删除
		    		//状态值为已预定 序号值为用户输入的序号:不可删除
		    		if (names[i]!=null&&states[i]==1&&delId==i+1) {
						isDelFind = true;
						//执行删除操作:删除位置后的元素依次前移
						for (int j = delId+1; j < names.length-1; j++) {
							names[j] = names[j+1];
							dishMegs[j] = dishMegs[j+1];
							times[j] = times[j+1];
							addresses[j] = addresses[j+1];
							states[j] = states[j+1];
						}
						//最后一位清空
						names[names.length-1] = null;
						dishMegs[dishMegs.length-1] = null;
						times[names.length] = 0;
						addresses[names.length-1] = null;
						states[names.length-1] = 0;
						System.out.println("删除订单成功!");
						break;
					}else if (names[i]!=null&&states[i]==0&&delId==i+1) {
						System.out.println("您选择的订单未签收,不能删除!");
						isDelFind = true;
						break;
					}
				}
		    	//未找到该序号的订单,不能删除
		    	if (isDelFind) {
					System.out.println("您要删除的订单不存在!");
				}
		    	break;
		    case 5:
		    	//我要点赞
		    	System.out.println("*********我要点赞**********");
		    	//显示菜品信息
		    	System.out.println("序号"+"\t"+"菜名"+"\t"+"单价");
		    	for (int i = 0; i < dishNames.length; i++) {
					String price = prices[i]+"元";
					String praiseNum = (praiseNums[i])>0?praiseNums[i]+"赞":"";
					System.out.println((i+1)+"\t"+dishNames[i]+"\t"+price+"\t"+praiseNum);
				}
		    	System.out.println("请选择您要点赞的菜品序号:");
		    	int praiseNum = input.nextInt();
		    	praiseNums[praiseNum-1]++;   //点赞数+1
		    	System.out.println("点赞成功");
		    	break;
		    case 6:
		    	//退出系统
		    	isExit = true;
		    	break;
		    	default:
		    		//退出系统
		    		isExit = true;
		    	    break;
		    	    
	}
		    if (isExit) {
				System.out.println("返回0输出:");
				num = input.nextInt();
			}else {
				break;
			}
        }while (num==0);
		System.out.println("感谢使用,欢迎下次光临");
   }
}

四、有关eclipse的快捷键

1.补全代码的声明:alt + /

2.快速修复: ctrl + 1

3.批量导包:ctrl + shift + o

4.使用单行注释:ctrl + /

5.使用多行注释: ctrl + shift + /

6.取消多行注释:ctrl + shift + \

7.复制指定行的代码:ctrl + alt + down 或 ctrl + alt + up

8.删除指定行的代码:ctrl + d

9.上下移动代码:alt + up 或 alt + down

10.切换到下一行代码空位:shift + enter

11.切换到上一行代码空位:ctrl + shift + enter

12.如何查看源码:ctrl + 选中指定的结构 或 ctrl + shift + t

13.退回到前一个编辑的页面:alt + left

14.进入到下一个编辑的页面(针对于上面那条来说的):alt + right

15.光标选中指定的类,查看继承树结构:ctrl + t

16.复制代码: ctrl + c

17.撤销: ctrl + z

18.反撤销: ctrl + y

19.剪切:ctrl + x

20.粘贴:ctrl + v

21.保存: ctrl + s

22.全选:ctrl + a

23.格式化代码: ctrl + shift + f

24.选中数行,整体往后移动:tab

25.选中数行,整体往前移动:shift + tab

26.在当前类中,显示类结构,并支持搜索指定的方法、属性等:ctrl + o

27.批量修改指定的变量名、方法名、类名等:alt + shift + r

28.选中的结构的大小写的切换:变成大写: ctrl + shift + x

29.选中的结构的大小写的切换:变成小写:ctrl + shift + y

30.调出生成 getter/setter/构造器等结构: alt + shift + s

31.显示当前选择资源(工程 or 文件)的属性:alt + enter

32.快速查找:参照选中的 Word 快速定位到下一个 :ctrl + k

33.关闭当前窗口:ctrl + w

34.关闭所有的窗口:ctrl + shift + w

35.查看指定的结构使用过的地方:ctrl + alt + g

36.查找与替换:ctrl + f

37.最大化当前的 View:ctrl + m

38.直接定位到当前行的首位:home

39.直接定位到当前行的末位:end

到此这篇关于Java实战之吃货联盟订餐系统的文章就介绍到这了,更多相关Java吃货联盟订餐系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Socket编程简单示例(聊天服务器)

    Socket编程简单示例(聊天服务器)

    socket编程是在不同的进程间进行网络通讯的一种协议,下面这篇文章主要给大家介绍了关于Socket编程简单示例的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • MyBatis新增数据并返回主键值方式

    MyBatis新增数据并返回主键值方式

    这篇文章主要介绍了MyBatis新增数据并返回主键值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java多线程处理千万级数据更新操作

    Java多线程处理千万级数据更新操作

    这篇文章主要为大家详细介绍了Java如何通过多线程处理千万级数据更新操作,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-11-11
  • springboot+mybatis如何屏蔽掉mybatis日志

    springboot+mybatis如何屏蔽掉mybatis日志

    这篇文章主要介绍了springboot+mybatis如何屏蔽掉mybatis日志问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 解决Java & Idea启动tomcat的中文乱码问题

    解决Java & Idea启动tomcat的中文乱码问题

    这篇文章主要介绍了Java & Idea启动tomcat的中文乱码问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 分享java中设置代理的两种方式

    分享java中设置代理的两种方式

    有时候我们的程序中要提供可以使用代理访问网络,代理的方式包括http、https、ftp、socks代理。比如在IE浏览器设置代理,这里简单介绍下,需要的朋友可以参考下
    2015-12-12
  • 2020年编程选Java的8大理由,JAVA前景如何

    2020年编程选Java的8大理由,JAVA前景如何

    这篇文章主要介绍了2020年编程选Java的8大理由,JAVA前景如何,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • MyBatis-Plus Page 分页不生效的问题解决

    MyBatis-Plus Page 分页不生效的问题解决

    分页是常见的一种功能,本文主要介绍了MyBatis-Plus Page分页不生效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • mybatis注解如何实现对象批量更改

    mybatis注解如何实现对象批量更改

    这篇文章主要介绍了mybatis注解实现对象批量更改的方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 一文详解Springboot中filter的原理与注册

    一文详解Springboot中filter的原理与注册

    这篇文章主要为大家详细介绍了Springboot中filter的原理与注册的相关知识,文中的示例代码讲解详细,对我们掌握SpringBoot有一定的帮助,需要的可以参考一下
    2023-02-02

最新评论