JAVA基础课程总结并实战《吃货联盟订餐系统》⽂章⽬录
吃货联盟订餐系统
⼀、需求说明
⼆、分析需求
根据上述需求,我们可以得知,运⾏的页⾯需要先展⽰出来,然后填⼊选择内容的数字,对应跳转到对应内容,且可以输⼊0返回开始的主菜单。根据之前所学内容,可以实现的⽅法有很多种,个⼈感觉采⽤do-while来实现⽐较合适,输⼊不同数字跳转不同功能项,可以⽤switch来实现。
姓名:输⼊String
餐品信息:序号、餐品名String、价格double、点赞数 int 可以⽤ 3个⼀维数组来实现
份数:输⼊int ⼤于0的整数
时间:输⼊int 10~20点之间的整数
地址:输⼊String
订单信息:String ⼆维数组
序号、姓名、餐品名、份数、价格(总价)、地址、时间、状态
签收订单:改变订单的状态,如果已完成则不能再次签收
删除订单:不能删除未完成的订单,序号要对应变动
我要点赞:对应菜品点赞数++
以上分析完毕,试着开始分步实施
三、具体实施
1、搭建框架
先把最外层的do-while框架和switch搭建起来,并把菜品的名称、价格、点赞数以及存放后期信息的⼆维数组先初始化,如图所⽰:
public class test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String caidan[]={"蒸⽺羔","蒸熊掌","蒸⿅尾","烧花鸭"};
double jiage[]={800,700,600,500};
int dianzan[]={50,100,150,200};
int xuanze;
String xinxi[][]=new String[1024][];
do {
switch (xuanze){
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
default:
}
if (xuanze>0&&xuanze<6){
System.out.print("请输⼊0返回:");
Int();
}else {
break;
}
}while (xuanze==0);
System.out.println("谢谢使⽤,欢迎下次光临!");
}
}
2、制作导航页
导航页相对⽐较简单,只是展⽰所有功能的序号以及名称
System.out.println("欢迎使⽤吃货联盟“订餐系统”");
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.print("请选择:");
Int();
3、制作第⼀个功能项:我要订餐
考虑好每⼀次输⼊数字说,如果不在范围内或者说不在选择项内的数字,需要返回提⽰,⽽不是直接结束,所有具体如下:
int Int();
if (renshu<0){
System.out.print("订餐⼈数输⼊错误,请重新输⼊:");
break;
}//展⽰菜单
System.out.println("序号\t"+"菜品名称\t"+"价格\t");
for (int i = 0; i < caidan.length; i++) {
System.out.println(i+1+"\t"+caidan[i]+"\t"+jiage[i]);
}
int caihao;
do {
System.out.print("请输⼊序号选择菜品;");
Int();
if (caihao<1||caihao>caidan.length){
System.out.println("输⼊错误,请重新输⼊");
}
}while (caihao<1||caihao>caidan.length);
int shuliang;
do {
System.out.print("请输⼊菜品份数;");
Int();
if (shuliang<0){
System.out.println("输⼊错误,请重新输⼊");
}
}while (shuliang<0);
int shijian;
do {
System.out.print("请输⼊送餐时间(10点~20点的整点):");
Int();
if (shijian<10||shijian>21){
System.out.println("输⼊错误,请重新输⼊");
}
}while (shijian<10||shijian>21);
String dizhi;
System.out.print("请输⼊送餐地址:");
();
System.out.println("订餐成功,您的订单信息如下:");
System.out.println("菜名为:"+caidan[caihao-1]+"\t"+"⼀共"+shuliang+"份");
System.out.println("送餐时间为:"+shijian+"点");
System.out.println("送餐地址为:"+dizhi);
double caiqian=jiage[caihao-1]*shuliang;
double yunfei=caiqian>50?0:6;
double zongjia=caiqian+yunfei;
System.out.println("餐费为:"+caiqian+"元,运费为"+yunfei+"元,总费⽤⼀共为:"+zongjia+"元"); for (int i = 0; i < xinxi.length; i++) {
if (xinxi[i]==null){
xinxi[i]=new String[2];
xinxi[i][0]=renshu+"\t"+caidan[caihao-1]+"\t"+shuliang+"份\t"+shijian+"点\t"+dizhi+
"\t"+zongjia+"元";
xinxi[i][1]="已预定";
break;
}
}
break;
4、制作第⼆项-查看餐袋
该项内容只作为我要订餐内容的展⽰,所有⽐较容易就可以实现
System.out.println("序号\t订餐⼈\t餐品名称\t送餐时间\t送餐地址\t总⾦额\t订单状态");
for (int i = 0; i < xinxi.length; i++) {
if (xinxi[i]!=null){
System.out.println(i+1+"\t"+xinxi[i][0]+xinxi[i][1]);
}else {
break;
}
}
java网课推荐break;
5、制作第三项-签收订单
因为制作第⼆项时,已经将所有信息填⼊⼆维数组,所以签收订单只是修改数组中的,订单状态⼀栏的值就可以了,需要注意的地⽅是,订单状态为未签收时才可以签收,如果是已签收状态,则需要提⽰客户已经是已签收状态,不需要重复签收,如果客户输⼊的订单序号有错误,也需要反馈相关提⽰
case 3:
System.out.print("*******签收订单");
System.out.println("序号\t订餐⼈\t餐品名称\t送餐时间\t送餐地址\t总⾦额\t订单状态");
for (int i = 0; i < xinxi.length; i++) {
if (xinxi[i]!=null){
System.out.println(i+1+"\t"+xinxi[i][0]+xinxi[i][1]);
}else {
break;
}
}
int shuzi=0;
int jiewei=0;
do {
System.out.print("请输⼊要签收的订单号:");
for (int i = 0; i < xinxi.length; i++) {
if (xinxi[i]==null){
jiewei=i;
break;
}
}
Int();
if (shuzi<0||shuzi>jiewei){
System.out.print("输⼊错误,请重新输⼊");
}else if(!"已预定".equals(xinxi[shuzi-1][1])){
System.out.println("订单已签收,不能重复签收");
}
else {
xinxi[shuzi-1][1]="已签收";
System.out.println("签收成功!");
break;
}
}while (shuzi<0||shuzi>jiewei||!"已预定".equals(xinxi[shuzi-1][1]));
break;
6、制作第四项删除订单
这个内容其实是有⼀点难度的,因为不光要考虑输⼊的订单序号是否正常,还需要考虑,订单删除之后,其他的订单序号都需要依次变化,并且只能删除已签收的订单,如果订单状态是未签收,则需要提⽰不可以删除。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论