1. 面向对象最初级程序设计思维:设计过程与抽象过程,(类是对象的模板与抽象,是具有相同属性和方法的一组对象的集 合,对象是类的实体,由属性与行为共同组成一个具体的实体。)
  2. 类与对象的关系:类是对象抽象,对象是类的实例化实体。
  3. 使用类图理解类的关系
  4. 面向对象三大特性应用:1、封装 ;2、继承;3、多态;是程序设计更符合人思考的方式。
  5. 封装:{维护数据安全性将属性私有化(以包机制,与private修饰成员)};
  6. 继承:{再有包含关系的使用时,有助于提升代码的重用性,减少代码的冗余}。注:单根继承,多实现;特点方法重写。
  7. 多态:{再有继承关系与实现关系下一种定义多种形态,包括:向上转型,父类对象指向子类实例;向下转型子类类型指向父类对象;方法重写实现引用的动态绑定机制。多态的应用使得程序的可维护性与可扩张性更强更灵活 }。
  8. java异常的捕获!维护程序Exception类的运行Bug.......
  9. javaDoc:API帮助文档。
  10. 基础面向对象设计核心以上6点

    步骤1、发现类:分析需求将需要操作的对象与操作流程列举出来!抽象出包含关系的类,并将类分成bean类与util类与assist类。

步骤2、发现类的属性:

步骤3、发现类的方法:

步骤4、优化设计:(辅助类)。


下面依次为 测试类,工具类,实体类,界面辅助类

//测试类package com.test;import java.util.InputMismatchException;import javax.sound.midi.SysexMessage;
import javax.swing.plaf.synth.SynthSeparatorUI;import eat.util.EatManager;/*** 测试吃货联盟系统的使用功能* @author ASUS**/public class TestEat {//吃的唯一大亏就是没有辅助工具,每次遍历数组与if判断太沉重了public static void main(String[] args) {//创建管理工具业务操作对象EatManager em=new EatManager();do{try{//来个欢迎语em.hello();//点餐前登陆系统   em.men.show();//根据界面选择要执行的功能编号int number=em.getNumber();                         //执行该功能编号em.execure(number);}catch(InputMismatchException e){System.err.println("您录入的格式或范围不对!!"}catch(NullPointerException e){System.err.println("获取当前对象失败!!");}catch(Exception e){System.out.println(e.getMessage());}}while(true);}//  take care:longinfo variable:is  of User1 class,when at  use Object attribute it only belong User class.}//工具类managerpackage eat.util;import java.util.InputMismatchException;import java.util.Scanner;import com.assist.LongInfo;import com.assist.MainMenu;import com.assist.Menu;import com.assist.OrderMenu;import com.assist.Service;import com.assist.UserInfo;import com.user.bean.Order1;import com.user.bean.User1;/*** 吃货联盟业务需求工具类,用于业务对象的点餐管理* 用于界面获取,数据获取,协助使用流程控制* * @author ASUS**/public class EatManager {//需要操作的时用户点餐,所以用户数据的交互是一定存在的。public    User1 longinfo=null;//界面管理,开始默认时登陆界面public Menu men=new LongInfo();            //用对象管理类,对象和实体类建立好了以后,根据流程直接写;//数据调用交互对象                          //由于跨包使用需要public修饰          public EatDataCenter1   edc=new EatDataCenter1();/** 获取String输入的方法*/public String getString(String need){Scanner input=new Scanner(System.in);System.out.print(need);String number=input.next();return number;}/** 创建获取int输入方法*/private  int getInt(String need){Scanner input=new Scanner(System.in);System.out.print(need);int number=input.nextInt();return number;}/** 获取功能编号*/public int getNumber()throws InputMismatchException,NullPointerException,Exception{int number=getInt("请输入您要操作的功能编号:");return number;}/** 执行功能编号*/public void execure(int number)throws InputMismatchException,NullPointerException,Exception{//判断对象mu1属于哪个界面的对象执行对应的功能序号。if(men instanceof LongInfo){switch(number){case 1:System.out.println("\n>>>用户登陆<<<\n");//登陆后需要标记longinfo,并且切换至主菜单对象更换longin();break;case 2:System.out.println("\n>>>用户注册<<<\n");//注册完成需要重新登陆register();break;case 3:System.out.println("感谢您对本系统的使用再见~~");System.exit(1);break;default :judge(number);}//主菜单功能}else if(men instanceof MainMenu){switch(number){case 1:System.out.println("\n>>>我要订餐<<<\n");//点餐就是生成根据用户编号对应的点餐订单,,即写代码按照生成点餐订单的流程order();break;case 2:System.out.println("\n>>>个人信管理<<<\n");//需要切换菜单对象men=new UserInfo();break;case 3:System.out.println("\n>>>个人订单管理中心<<<\n");//需要切换对应菜单对象men=new OrderMenu();break;case 4:System.out.println("\n>>>菜品信息评价<<<\n");//注意付给数据的正负appraiseDish();break;case 5:System.out.println("\n>>>客服中心<<<\n");//切换客户界面所属对象men=new Service();break;case 6:men=new LongInfo();//返回后需要longinfo 置空。longinfo=null;break;default :if(number<1||number>6){System.out.println("您录入的编号范围有误请重新输入1~6整数\n");}else{throw new Exception("您录入格式不正确,请重新录入\n");}}//个人用户管理中心}else if(men instanceof UserInfo){switch(number){case 1:System.out.println("\n>>>用户信息如下<<<\n");//个人用户信息属于私密信息需要密码验证才能查看showLongInfo();break;case 2:System.out.println("\n>>>修改密码<<<\n");//先验证原密码;;;修改成功需要重新登陆并且把当前longinfo置空modifierPasswd();break;case 3:System.out.println("\n>>>修改送餐地址<<<\n");//需先验证密码modifierAddress();break;case 4:System.out.println("\n>>>更换联系方式<<<\n");//需要先验证密码changePhone();break;case 5:System.out.println("\n>>>更改昵称<<<\n");     //需要先验证密码changeNick();break;case 6://返回主功能界面需要切换界面men =new MainMenu();break;default :if(number<1||number>6){System.out.println("您录入的编号范围有误请重新输入1~6整数\n");}else{throw new Exception("您录入格式不正确,请重新录入\n");}}//订单信息管理中心}else if(men instanceof OrderMenu){switch(number){case 1:System.out.println("\n>>>个人订单如下<<<\n");//打印个人用户当前所有订单   只要是longinfo=edc.user[i]对象的,那么订单信息就打印出来lookForOrder();break;case 2:System.out.println("\n>>>支付订单<<<\n");//订单状态为 以预定”1“与待付款的才能付款”2“,payBill();break;case 3:System.out.println("\n>>>您的待签收订单号如下<<<\n");//前提条件是属于当前用户的订单并且录入订单号是已付款未签收的。signOrder();break;case 4:System.out.println("\n>>>您的可删除订单如下<<<\n");//前提条件是属于当前用户的订单并且录入订单号是已签收的。deleteOrder();break;case 5://返回主功能界面需要切换界面men =new MainMenu();break;default :if(number<1||number>5){System.out.println("您录入的编号范围有误请重新输入1~3整数\n");}else{throw new Exception("您录入格式不正确,请重新录入\n");}}//客服服务中心}else if(men instanceof Service){switch(number){case 1:System.out.println("\n>>>找回密码\n");//找回密码实在忘记原密码的情况做的一个操作。设定一个私有密码属性只提供GET接口,//并且密保为存储常量,只能通过对应的构造方法与对应用户的ID才能存入。retrievePassword();break;case 2:System.out.println("\n>>>建议留言\n");//设定一个数据中心的留言板,前提用登陆信息不为空suggest();break;case 3:System.out.println("\n>>>人工服务\n");//人工服务用于解决madeService();break;case 4://返回上一级菜单需要做菜单切换men=new MainMenu();break;default :if(number<1||number>4){System.out.println("您录入的编号范围有误请重新输入1~4整数\n");}else{throw new Exception("您录入格式不正确,请重新录入\n");}}}}/*** 录入判断* @throws Exception */private void judge(int number) throws InputMismatchException, Exception {if(number<1||number>3){System.out.println("您录入的编号范围有误请重新输入1~3整数\n");}else{throw new Exception("您录入格式不正确,请重新录入\n");}}/**UnsatisfiedLinkError* 菜品评价* @throws Exception */private void appraiseDish() throws InputMismatchException,NullPointerException, Exception {boolean flag=false;DishNameMenu();int number =getInt("\n请输入您需要评价的菜品编号:");for (int i = 0; i < edc.dish.length; i++) {if(edc.dish[i]==null)  break;if(edc.dish[i].getDishID()==number){flag=true;int appraise=getInt("请对"+number+"号菜品做出您的评价,赞为正数,踩为负数:");int sumAppraise=appraise+edc.dish[i].getAppraise();edc.dish[i].setAppraise(sumAppraise);System.out.println("\n第"+number+"号菜品评价成功,您对该菜品的评价结果为:"+appraise+"赞");break;}}if(!flag){throw new Exception("您输入的格式或者范围不对~~");}}/*** 人工服务*/private void madeService() {if(longinfo!=null){System.out.println("请拨打客服电话400600~~");}else{System.out.println("操作异常请从新登陆");longinfo=null;men=new LongInfo();}}/*** */private void suggest() {if(longinfo!=null){String suggest=getString("感谢"+longinfo.getUserNock()+longinfo.getSex()+"您对本系统的使用,请您在下方给我们留下宝贵的建议~~");//遍历留言板for (int i = 0; i <edc.str.length; i++) {if(edc.str[i]==null){edc.str[i]=suggest;System.out.println("留言成功!感谢"+longinfo.getUserNock()+longinfo.getSex()+"给我们的宝贵意见~~");break;}}}else{System.out.println("操作异常请从新登陆");longinfo=null;men=new LongInfo();}}/*** 找回密码*/private void retrievePassword(){//属于提供用户的密保String pwd=getString("请输入您的密保:");for (int i = 0; i < edc.pwd.length; i++) {if(edc.pwd[i]==null)  break;//遍历找寻该用户的密保   只要该密保数组的对象地址是longinfo的if(edc.pwd[i].getPwd2().equals(pwd)){String newPwd=getString("请输入您的新密码:");String  towNewPwd=getString("请再次输入您的新密码:");if(newPwd.equals(towNewPwd)){System.out.println("密码找回成功!请从新登陆~\n");//找回密码后 保存新密码longinfo.setPasswd(towNewPwd);longinfo=null;men=new LongInfo();}else{System.out.println("您两次录入的密码不一致,找回失败!");break;}}else{System.out.println("抱歉您输入的密保有误,请联系客服处理~~");break;}}}/*** 删除订单* @throws Exception */private void deleteOrder() throws InputMismatchException,NullPointerException, Exception{//假设每次只签收一条订单,第二次操作需重新选择签收功能lookForOrder();int id=getInt("\n请输入您要删除的订单编号:");//遍历数组,遍历属于该用户的订单System.out.println("您待删除的订单状态如下"); for (int i = 0; i < edc.order.length; i++) {if(edc.order[i]==null)  break;if(edc.order[i].getState().equals("已签收")){//对象的销毁不能==null
//                              edc.order[i]==null;edc.order[i].equals(null);System.out.println("订单号"+id+"删除成功!");break;}if(id!=edc.order[i].getOrderId()||edc.order[i].getStatus()>2||longinfo.getUserID()!=edc.order[i].getUserId()){throw new Exception("您录入的订单编号有误或者已支付!!");}}}/*** 签收订单* @throws InputMismatchException,NullPointerException,Exception */private void signOrder() throws InputMismatchException,NullPointerException,Exception{//假设每次只签收一条订单,第二次操作需重新选择签收功能lookForOrder();int id=getInt("\n请输入您要签收的订单编号:");//遍历数组,遍历属于该用户的订单System.out.println("您待签收的订单状态如下"); for (int i = 0; i < edc.order.length; i++) {if(edc.order[i]==null)  break;if(edc.order[i].getState().equals("已付款")&&longinfo.getUserID()!=edc.order[i].getUserId()){edc.order[i].setStatus(4);System.out.println("订单号"+id+"签收成功!");break;}      if(id!=edc.order[i].getOrderId()||edc.order[i].getStatus()>2||longinfo.getUserID()!=edc.order[i].getUserId()){throw new Exception("您录入的订单编号有误或者待支付或已签收!!");}}}/*** 支付订单* @throws Exception */private void payBill() throws InputMismatchException ,Exception {int index=-1;if(longinfo.equals(edc.order[0])){index=1;}//假设每次只支付一条订单让后回到订单管理界面lookForOrder();//计算机的思维何人不一样,思考需要判定,运算根据判定依据做出逻辑运算,否则就会出现运行Bug.int id=getInt("\n请输入您要支付的订单编号:");//遍历数组:1、属于longinfo.getUserID的订单,并且,2、订单状态必须为1与2所对应状态。付款后属性为3.System.out.println("您待付款订单状态如下");              for (int i = 0; i <edc.order.length; i++) {if(edc.order[i]==null)  break;if(id==edc.order[i].getOrderId()){index=i;}//保证是自己的订单,并且订单号对上号,并且是属于未支付状态的订单。  if(edc.order[index].getUserId()!=longinfo.getUserID()&&edc.order[i].getState().equals("已预定")||edc.order[i].getState().equals("待付款")){double pay=getInt(id+"号订单需要支付的金额为:"+edc.order[i].getSumPrice()+"元:");if((pay-edc.order[i].getSumPrice())>=0){System.out.println("找零:"+(pay-edc.order[i].getSumPrice())+"元,支付成功谢谢!!");//修改订单状态edc.order[i].setStatus(3);  break;}else if((pay-edc.order[i].getSumPrice())<0){System.out.println("\n抱歉,支付金额不足支付失败~~~~");break;}             }//支付结果就两种结果支付与不支付,,  //影响支付的就两种情况,订单号不对或者该订单已经支付(但前者的影响值包含后者的结果所以可以放到一个if判定中)if(id==edc.order[i].getOrderId()||edc.order[i].getStatus()>2||longinfo.getUserID()!=edc.order[i].getUserId()){throw new Exception("您录入的订单编号有误或者已支付!!");}}}/*** 查看用户的个人订单信息*/private void lookForOrder() {System.out.println("订单编号\t订单人\t菜品名称\t菜品份数\t菜品单价\t订单总价\t\t订单状态");//遍历当前用户的userID order fornationfor (int i = 0; i < edc.order.length; i++) {//防止空指针if(edc.order[i]==null)  break;//只要是longinfo对象的,那么订单信息就是他的,用户ID是唯一的   iD是int基本数据只能==判定if(edc.order[i].getUserId()==(longinfo.getUserID())){System.out.println(edc.order[i].getOrderId()+"\t"+longinfo.getUserNock()+"\t"+edc.dish[edc.dish[i].getDishID()-1].getDishName()+"\t"+edc.order[i].getCount()+"\t"+edc.dish[edc.dish[i].getDishID()-1].getPrice()+"\t"+edc.order[i].getSumPrice()+"\t\t"+edc.order[i].getState());}}}/*** 修改用户昵称*/private void changeNick() {//密码核对boolean flag=  cheakPasswd();if(flag){String nick=getString("\n请输入您的昵称:");longinfo.setUserNock(nick);System.out.println("修改成功!您的新昵称为:"+nick+"\n");}else{System.out.println("抱歉!密码错误您还没有此权限!!");}}/*** 更改联系方式*/private void changePhone() {//核对密码boolean flag=    cheakPasswd();if(flag){String phone=getString("\n请输入您的新手机号:");longinfo.setPhone(phone);System.out.println("修改成功!您的新联系方式为:"+phone+"\n");}else{System.out.println("抱歉!密码错误您还没有此权限!!");}}/*** 个人信息显示*/private void showLongInfo() {boolean flag= cheakPasswd();if(flag){System.out.println("用户编号\t+用户名\t用户密码\t用户昵称\t用户性别\t用户年龄\t用户联系方式\t\t用户用餐地址");for (int i = 0; i < edc.user.length; i++) {if(edc.user[i]==null)  break;if(longinfo.getUserID()==edc.user[i].getUserID()){System.out.println(longinfo.getUserID()+"\t"+longinfo.getUserName()+"\t"+longinfo.getPasswd()+"\t"+longinfo.getUserNock()+"\t"+longinfo.getSex()+"\t"+longinfo.getAge()+"\t"+longinfo.getPhone()+"\t\t"+longinfo.getAddress());}}}else{System.out.println("抱歉!密码错误您还没有此权限!!");}}/** 登陆功能*/private void longin()  {/* 1. 获取登录需要的数据 *///用户名String userName = getString("请输入您的用户名:");//密码String password = getString("请输入您的密码:");//验证登陆::数据操作一般方法数据中心User1 user = edc.login(userName, password);/* 3. 根据登录结果处理后续操作 */if(user == null){System.out.println("\n登陆失败用户名或密码错误!\n");        return;}//切换菜单:    为什么要切换菜单;;目的时多态的应用解决了函数嵌套men = new MainMenu();//保存登录用的信息//为什么要用一个用户保存登陆信息,目的方便后续操作,和退出注销,   ,,这个是重点longinfo = user; }/*** 欢迎语*/public void hello()throws NullPointerException,Exception{if(men instanceof MainMenu){System.out.println("\n"+longinfo.getUserNock()+longinfo.getSex()+"您好!\n");}}/** 用户注册*/private void register(){//细节来一个获取下表为空的index;int index=-1;//输入数据int age=getInt("请输入您的年龄:");if(age>15&&age<60){String name=getString("请录入您的用户名:");String pwd=getString("请录入您的用密码:");//遍历数组//看用户名是否存在,回到登陆界面,在注册徐重新选择编号2for (int i = 0; i <edc.user.length; i++) {           if(edc.user[i]==null){String pwd2=getString("请再次输入您的注册密码:");if(pwd2.equals(pwd)){String phone=getString("请录入您的电话号码:");int sex=getInt("请录入您的性别:");String nick=getString("请录入您的昵称:");int id=edc.maxID(edc.maxUserID)+1;String address=getString("请输入您的送餐地址:");//设定二级密保用于找回密码for (int j = 0; j <edc.pwd.length; j++) {if(edc.pwd[j]==null){String pwd3=getString("请输入您的二级密保:");edc.pwd[j]=new User1(pwd3,id);System.out.println("密保保存成功请牢记~~");break;}  }edc.user[i]=new User1(id,name,pwd,nick,sex,age,phone,address);System.out.println("\n恭喜"+nick+edc.user[i].getSex()+"您已注册成功!请重新登陆。\n");break;}else{System.out.println("注册失败,您两次录入的密码不一致");break;}}else if(edc.user[i].getUserName().equals(name)){System.out.println("注册失败您输入的用户名已经存在~~");break;}}}else{System.out.println("对不起您目前不符合网上订餐需求!合法年龄为15到60周岁~~\n");}}/*** 点餐*/private void order(){//标记int index=-1;//显示菜品信息供用户选择DishNameMenu();//需要填写的时=是,选择菜品,份数,送餐时间,是否付款int number=getInt("\n请选择您喜欢的菜品编号:");while(number<1||number>7){number=getInt("您选择的菜品编号有误!请从新选择1~7");}int count=getInt("请选择您喜欢的菜品份数:");int time=getInt("请输入您的预定时间 :");//订单默认生成加1int ordID=edc.maxID()+1;double sum=edc.dish[number-1].getPrice()*count;for (int i = 0; i < edc.order.length; i++) {if(edc.order[i]==null){edc.order[i].setStatus(1);index=i;}}System.out.println("\n"+longinfo.getUserNock()+longinfo.getSex()+"您已点餐成功!您的当前点餐信息如下:\n");System.out.println("订单编号\t菜品名称\t菜品份数\t菜品单价\t订单总价\t\t订单状态");//打印选材信息,输出的订单,菜品编号应该是菜品名,,总价按照菜品编号做下标-1调菜品单价,并且不用显示订单状态System.out.println(ordID+"\t"+edc.dish[number-1].getDishName()+"\t"+count+"份\t"+edc.dish[number-1].getPrice()+"\t元"+sum+"元\t\t"+edc.order[index].getState());String select=getString("\n确认是否开始派单或放弃下单,y|n? :");if(select.equals("y")){System.out.print("请支付:"+sum+"元:");double pay=new Scanner(System.in).nextDouble();if((pay-sum)>0){System.out.println("\n找零:"+(pay-sum)+"元,您的订单已经开始派送!");//订单保存,并把订单状态改成阴茎付款for (int i = 0; i <edc.order.length; i++) {if(edc.order[i]==null){edc.order[i]=new Order1(ordID,longinfo.getUserID(),edc.dish[number-1].getDishID(),count,sum,time,3);}}}else {System.out.println("\n余额不足~~");}}else if(select.equals("n")){System.out.println("\n订单失败!请从新选择你需要的操作~~");//订单编号属于自动生成,用户编号、价格秩序丢用对应的数据,   状态时默认待付款}}/*** 遍历菜品信息的* */private void DishNameMenu(){System.out.println("\n***菜品信息如下***\n");System.out.println("菜品编号\t菜品名称\t菜品单价\t\t菜品评价");//遍历数组输出for (int i = 0; i <edc.dish.length; i++) {//因为一开始设定了10个长度的菜品存储长度,而手动添加了七道,所以后面的要break掉。if(edc.dish[i]==null) break;System.out.println(edc.dish[i].getDishID()+"\t"+edc.dish[i].getDishName()+"\t"+edc.dish[i].getPrice()+"元\t\t"+edc.dish[i].getAppraises());}}/*** 修改密码属于数据操作理应放到数据管理中心*/private void modifierPasswd(){boolean flag=   cheakPasswd();if(flag){String newPwd=getString("\n请输入您的新密码:");String newPwdAgain=getString("请再次输入您的新密码:");if(newPwd.equals(newPwdAgain)){System.out.println(longinfo.getUserNock()+"您的密码已经修改成功,5S后将重新登陆\n");longinfo.setPasswd(newPwd);men=new LongInfo();longinfo=null;}}else{System.out.println("\n原密码错误!,密码修改失败\n");}}   /*** 修改送餐地址*/private void modifierAddress(){boolean flag=  cheakPasswd();if(flag){String address=getString("\n请输入您的新地址内容:");longinfo.setAddress(address);System.out.println("地址修改成功您的新的送餐地址为:"+address+"\n");}else{System.out.println("抱歉!密码错误您还没有此权限!!");}}/*** 用于密码验证修改个人信息部分* @return*/private boolean  cheakPasswd(){String pwd=getString("请输入您的原密码:");//应为每次登陆进来都会保存用户登陆信息在longinfo中,所以验证对等问题只需要longinfo调用自己的属性值比对。if(longinfo.getPasswd().equals(pwd)){return true;}return false;}}//工具类2.操作数据中心package eat.util;import com.assist.LongInfo;
import com.user.bean.Dish1;
import com.user.bean.Order1;
import com.user.bean.User1;import jdk.nashorn.internal.runtime.regexp.joni.ScanEnvironment;/** 面向对象,实际数据的核心就是对象,对象的数据,数据必定是值属性索要操作的值,,行为只是流程。* * 所以对象的属性和属性值,由实体类,数据中心承载;; 对象的行为,成为了业务的亏成构成,流程工具类与类,* * 只不过一个业务的发展由多个对象构成而已。** 此类主要用于操作数据;数据的来源与对象对属性值的操作*/public class EatDataCenter1 {//用于管控密保存放public static final User1[]pwd=new User1[10];//用户      订单       菜品public static User1[]user=new User1[10];public static Order1[]order=new Order1[10];public static Dish1[]dish=new Dish1[10];//菜品编号默认最大值public int maxDishID=7;//订单编号默认最大值public int maxOrderID=102;//用户编号默认最大值public int maxUserID=1002;//用户留言板:留言的是字符串内容public static String[]str=new String[10];//业务需求数据初始化;;数据操作数据中心,静态手动添加,    目标一定是对象static{//密保信息pwd[0]=new User1("jk",1001);pwd[2]=new User1("pt",1002);//用户信息user[0]=new User1(1001,"juck","6666","杰克",1,30,"158888888","意大利德玛镇");             //根据构造方法添加user[1]=new User1(1002,"pet","8888","彼德",2,32,"158999999","北美德克萨斯州");          //根据构造方法添加//订单信息order[0]=new Order1(101,1001,1,2,60.0,12,2);                                                  //杰克先生的订单order[1]=new Order1(102,1002,3,1,40.0,18,2);                                                  //彼德女士的订单order[2]=new Order1(103,1001,5,1,100.0,16,1);                                                 //杰克先生的订单//菜品信息:关于菜的全部初始化dish[0]=new Dish1(1,"鸡蛋羹",30.0,33);dish[1]=new Dish1(2,"鸡扒",50.0,22);dish[2]=new Dish1(3,"红烧萝卜",40.0,-4);dish[3]=new Dish1(4,"猪手",100.0,20);dish[4]=new Dish1(5,"石锅鱼",60.0,10);dish[5]=new Dish1(6,"西红柿面",20.0,13);dish[6]=new Dish1(7,"生吃蔬菜",30.0,-19);}//数据中心存放数据数据操作提供给工具类,   跨类交付的一般都是对象用需求实体类做形参与返回值类型。/*** 验证用户登陆* @param userName:用户名* @param password:密码* @return*/public  User1   login(String userName,String password){//遍历存储数组比对信息,,,登陆功能用方法实现只需要做一个比对方法把遍历时用户名密码相同的对象给回用户接受数据,//接受后不为空则登陆OK,并切换菜单,与保存登陆信息。for (int i = 0; i < user.length; i++) {if(user[i]==null)  break;                   if(user[i].getUserName().equals(userName)&&user[i].getPasswd().equals(password)){return user[i];                        }}return null;}/** 获取用户的最大编号*/public int maxID(int userID){     userID=user[0].getUserID();for (int i = 1; i <= user.length; i++) { if(user[i]==null){break;}                         if(userID<user[i].getUserID()){userID=user[i].getUserID();                      }}return userID;}/*** 获取订单编号的最大值,重载最大值获取方法*/public int maxID(){     this.maxOrderID=user[0].getUserID();for (int i = 1; i <= user.length; i++) {    if(user[i]==null){break;}                         if(this.maxOrderID<user[i].getUserID()){this.maxOrderID=user[i].getUserID();                        }}return this.maxOrderID;}}//实体类如下Order 订单实体类package com.user.bean;
/*** 订单实体类;承载订单相关的属性攻数据中心数据交付* @author ASUS**/public class Order1 {/**订单编号*/private  int orderId;/**订单菜品编号*/private int dishId;/**订单用户编号*/private int userId;/**菜品总价*/private double sumPrice;/**订单状态*/private  int status;        //其中订单状态时多形态,在取显示状态有不同形式所以在get接口设置取值需求/**订单菜品份数*/private int count;/**送餐时间*/private int sendTime;@Overridepublic String toString() {return "Order1 [orderId=" + orderId + ", dishId=" + dishId + ", userId=" + userId + ", sumPrice="+ sumPrice + ", status=" + status + ", count=" + count + ", sendTime=" + sendTime + "]";}public Order1() {}public Order1(int orderId, int userId, int dishId,int count ,double sumPrice,int sendTime,int status) {this.orderId = orderId;this.dishId = dishId;this.userId = userId;this.sumPrice = sumPrice;this.status = status;this.count = count;this.sendTime = sendTime;}public int getOrderId() {return orderId;}public void setOrderId(int orderId) {this.orderId = orderId;}public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}public  int getStatus() {return status;}public  void setStatus(int status) {this.status = status;}public int getDishId() {return dishId;}public void setDishId(int dishId) {this.dishId = dishId;}public double getSumPrice() {return sumPrice;}public void setSumPrice(double sumPrice) {this.sumPrice = sumPrice;}//不同的状态在控制台不能出现共同的操作public  String getState() {if(status==1)    return "已预定";if(status==2)  return "待付款";if(status==3)  return "已付款" ;if(status==4) return "已签收" ;return "?";}public int getCount() {return count;}public void setCount(int count) {this.count = count;}public int getSendTime() {return sendTime;}public void setSendTime(int sendTime) {this.sendTime = sendTime;}                                  }//实体类:Dish  菜单实体类package com.user.bean;
/** 菜品实体类,构成菜的相关属性供数据操作中心做数据交互。菜的对象承载菜的所有属性,以及属性的相关处理*/public class Dish1 {/**菜品名*/private String dishName;/**菜品价格*/private double price;/**菜品编号*/private int dishID;/**菜品评价*/private int appraise;//对菜品评价做除好差之分public String getAppraises() {if(appraise>0) return (+appraise)+"赞";if(appraise<0)  return (-appraise)+"踩";return null;}public Dish1(int dishId, String dishName, double price,int appraise) {this.dishName = dishName;this.price = price;this.dishID = dishId;this.appraise = appraise;}public Dish1() {}public int getAppraise() {return appraise;}public String getDishName() {return dishName;}public void setDishName(String dishName) {this.dishName = dishName;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public int getDishID() {return dishID;}public void setDishID(int dishId) {this.dishID = dishId;}public void setAppraise(int appraise) {this.appraise = appraise;}}//实体类  :User1 用户实体类package com.user.bean;/** 吃货联盟用户实体类。*/public class User1 {//密保,用于找回密码用   不提供对外set接口,只留get取值接口private String pwd2;//用户这个实体相关的属性数据载体,private String userNock;private int userID;private String userName ;private String passwd;private int gender;private int age;private String phone;private String address;/** 设置性别的方法,贵属性所有*/public String getSex(){if(gender==1) return "先生";if(gender==2) return "女士";return "?";}public User1() {}//用于交付的登陆对象数据public User1(String userName, String passwd) {this.userName = userName;this.passwd = passwd;}public String getUserNock() {return userNock;}//用于设定密保public User1(String pwd2, int userID) {this.pwd2 = pwd2;this.userID = userID;}public User1( int userID, String userName, String passwd,String userNock, int gender, int age, String phone,String address) {this.userNock = userNock;this.userID = userID;this.userName = userName;this.passwd = passwd;this.gender = gender;this.age = age;this.phone = phone;this.address = address;}public String getPwd2() {return pwd2;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public void setUserNock(String userNock) {this.userNock = userNock;}public int getUserID() {return userID;}public void setUserID(int userId) {this.userID = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPasswd() {return passwd;}public void setPasswd(String passwd) {this.passwd = passwd;}public int getGender() {return gender;}public void setGender(int gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}}// Menu  界面父类接口package com.assist;/*** 控制台界面功能:父类* @author ASUS**/   public interface Menu {//各个界面显示信息void show()throws  NullPointerException,Exception;}//LongInfo  登陆界面实现界面接口package com.assist;/*** 登陆界面* @author ASUS**/public class LongInfo implements Menu {@Overridepublic void show() {System.out.println("\t>>>欢迎来到”吃货联盟订餐系统“\n");System.out.println("******************************");System.out.println("\t编号1.用户登陆\n");System.out.println("\t编号2.用户注册\n");System.out.println("\t编号3.退出系统\n");System.out.println("******************************");}}//ManMenu  主菜单界面package com.assist;public class MainMenu implements Menu {@Overridepublic void show() {System.out.println("\t欢迎来到”吃货联盟订餐系统“");System.out.println("********************************");System.out.println("        No1. 我要订餐");System.out.println("        No2. 个人信息管理");System.out.println("        No3. 个人订单管理");System.out.println("        No4. 菜品信息评价");System.out.println("        No5. 客服中心");System.out.println("        No6. 退出登陆");System.out.println("********************************");}}//订单管理界面  package com.assist;/*** 订单管理界面* @author ASUS**/public class OrderMenu implements Menu {@Overridepublic void show() {System.out.println("\n*****>>>订单信息管理中心<<<****\n");System.out.println("\tNo1.个人订单查看\n");System.out.println("\tNo2.支付订单\n");System.out.println("\tNo3.签收订单\n");System.out.println("\tNo4.删除订单\n");System.out.println("\tNo5.返回主功能菜单界面请输入5\n");System.out.println("************************");}}//用户个人信息界面package com.assist;/*** 用户的个人信息管理* @author ASUS**/public class UserInfo implements Menu {@Overridepublic void show() {System.out.println("\n*****>>>用户信息管理中心<<<*****\n");System.out.println("\t编号1.用户个人信息\n");System.out.println("\t编号2.修改密码\n");System.out.println("\t编号3.修改送餐地址\n");System.out.println("\t编号4.修改联系方式\n");System.out.println("\t编号5.更改昵称\n");System.out.println("\t编号6.返回主功能菜单界面请选择6\n");System.out.println("************************");}}//客户界面package com.assist;public class Service implements Menu {@Overridepublic void show() {System.out.println("\n*****>>>客服服务中心<<<****\n");System.out.println("\tNo1.找回密码\n");System.out.println("\tNo2.建议留言\n");System.out.println("\tNo3.人工服务\n");System.out.println("\tNo4.返回主功能菜单界面返回主菜单请输入4\n");System.out.println("************************");}}

以吃货联盟初级改版为例,(面向对象初级程序设计模拟网上点餐控制台程序(第一版未使用工具辅助类)。相关推荐

  1. Java面向对象 --- 吃货联盟订餐系统(完整版)

    文章目录 为什么使用面向对象 划分类 代码编写 为什么使用面向对象 Java面向对象版本的吃货联盟订餐系统: 因为基础版本都在一个类中实现的功能,太过于麻烦,不清楚 ,所以说我们利用面向对象制作吃货联 ...

  2. java吃货联盟系统源码_小项目,吃货联盟,java初级小项目,源代码

    小项目,吃货联盟,java初级小项目,源代码 1importjava.util.Scanner;23/**4* 吃货联盟订餐管理系统5*6*/7publicclassOrderingMsg {8pub ...

  3. 泡椒java_吃货联盟 源代码 Java初级小项目

    今天给大家一个小的项目:吃货联盟订餐系统.项目功能也很简单:只是模拟日常的订餐流程呦,所以有错误以及功能不完善的地方大家多多包涵 O(∩_∩)O哈哈~ 首先,先展示下代码功能,代码也不是很多,就200 ...

  4. java吃货联盟系统源码_吃货联盟 源代码 Java初级小项目

    咳咳,今天博主给大家写一个小的项目:吃货联盟订餐系统.博主不是大神(互联网架构师的路上ing),也是小白一个,不过是刚入门的小白^_^.项目功能也很简单:只是模拟日常的订餐流程呦,所以有错误以及功能不 ...

  5. 第一本书 第九章 使用对象吃货联盟

    如果有一天,能做到让程序自学习就好了:发呆发呆(`・ω・´):这个小项目我写了5个小时: 优化了好多天:希望大家珍惜:谢谢 by 阿飞~ ~   package com.opp.opp.bookone ...

  6. 吃货联盟美食推荐系统

    [摘要]随着信息技术的飞速发展,计算机技术被广泛应用于生活,各管理系统.电子销售系统都是计算机技术的产物.中国作为美食之都,各色美食令人挑花眼,以往,人们要通过他人告知,才知道哪里有美食,这种口口相传 ...

  7. Java基础 吃货联盟订餐系统

    Java基础 吃货联盟订餐系统 需求分析 系统概述 搭建框架 编写功能 项目总结 需求分析 系统概述 "只要动动手指,就能送餐上门",网上订餐深受现代人青睐,现开发一个网上订餐系统 ...

  8. 吃货联盟订餐系统需求分析

    吃货联盟订餐系统需求分析功能如下:我要订餐//如果多次订餐,将新输入的信息插入空的数组查看餐袋//将输入后的信息打印签收订单//获取订单号后,给订单状态赋值为已签收删除订单//所有数组赋值0我要点赞/ ...

  9. java吃货联盟app讲解_吃货联盟订餐系统——JAVA实现

    package com.chihuo; import java.util.Scanner; public class OrderingMgr { public static void main(Str ...

最新文章

  1. 论文笔记:ShuffleNet v1
  2. web dialog 内嵌 图片_Unity游戏如何在iOS上调用Facebook原生对话框分享图片
  3. onsize里获取的对话框大小有时会包含滚动条_Python实战分析:获取数据
  4. vue可缓存的单页面多标签页
  5. 通知 Notification的介绍,以及自定义通知
  6. bitbucket配置_用Bitbucket搭建博客初探
  7. 开博记念及附上第一个android工程:Txt文本阅读器
  8. python获取当前日期所在的是本月第几周
  9. react中使用Route报错` A <Route> is only ever to be used as the child of <Routes> element, never rendered`
  10. 如何玩转抖音电商-基础篇
  11. mac安装淘宝镜像cnpm,绝对有效!!!!!!
  12. 通信工程师传输与接入ATM网络组成和接口
  13. 北航计算机学院李卫国,北航学生评选“心目中最爱戴的老师”
  14. 量化交易入门笔记-KD指标策略
  15. 打造迪士尼梦幻体验的神奇魔法
  16. C# 使用代码将图片的背景去除
  17. dede教程:默认网站地图sitemap.html优化
  18. ElasticSearch倒排索引-构建千亿级日志分析系统
  19. 【重磅】阿里巴巴创新中心一周内迎两位省委书记视察指导
  20. mac brew安装,brew卸载重装

热门文章

  1. MySQL高级性能优化
  2. TortoiseSVN安装步骤
  3. Redis应用场景概述
  4. 创建用户tea,stu,并给这两个用户resource,connect角色
  5. 分享Dreamweaver制作网页13种技巧
  6. airserver怎么下载使用?IOS设备无线传送到Mac电脑的屏幕上教程
  7. 回顾Bob大叔的简洁架构
  8. 跨境电商app应该如何开发?
  9. java和office二级证书用处_计算机二级证书有用吗
  10. SLAM学习笔记-------------(三)三维空间刚体运动