我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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吃货联盟订餐系统内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用Java模拟一个吃货联盟订餐系统

本篇文章给大家分享的是有关使用Java模拟一个吃货联盟订餐系统,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录