接口
has-a
comparable
公开
javascript
项目码云地址(点击后要求可直接跳到该项目首页)。html
https://gitee.com/201621123065/java201621123065.gitjava
团队成员表格git
学生 | 负责任务 | 博客地址 |
---|---|---|
郭启鹏 | 菜单类 | http://www.cnblogs.com/201621123065guo/p/7696075.html |
上次的系统比较,系统的设计等有何修改。其余感想。编程
import java.util.Scanner; /** 菜单类,用于显示全部级菜单供用户选择 */ public class Menu { public Menu() { } /** 设置菜单类中的数据信息 */ public void setData(String as[], double ad[], int ai[], String as1[], int ai1[]) { goodsName = as; goodsPrice = ad; custNo = ai; custBirth = as1; custScore = ai1; } /**显示一级菜单,即登陆界面 */ public void showLoginMenu() { System.out.println("\n\n\t\t\t 欢迎使用购物管理系统\n\n"); System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); System.out.println("\t\t\t\t 1. 登 录 系 统\n\n"); System.out.println("\t\t\t\t 2. 更 改 管 理 员 信 息\n\n"); System.out.println("\t\t\t\t 3. 退 出\n\n"); System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); System.out.print("请选择,输入数字:"); } /** 显示二级菜单,即系统的主菜单,这个方法里面包含了对这个菜单处理的全部流程 */ public void showMainMenu() { // 显示二级菜单,即系统的主菜单 System.out.println("\n\n\t\t\t\t欢迎使用购物管理系统\n"); System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); System.out.println("\t\t\t\t 1. 客 户 信 息 管 理\n"); System.out.println("\t\t\t\t 2. 购 物 结 算\n"); System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); // 用户选择服务项目 System.out.print("请选择,输入数字:"); Scanner scanner = new Scanner(System.in); boolean flag = false; do { String s = scanner.next(); // 用户选择"客户信息管理" if (s.equals("1")) { // 显示客户信息管理菜单并处理这个菜单的整个流程,当这个流程处理完 showCustMMenu(); break; } // 用户选择"购物结算" if (s.equals("2")) { // 定义购物结算类的对象,并处理整个购物结算的流程 Pay pay = new Pay(); pay.setData(goodsName, goodsPrice, custNo, custBirth, custScore); pay.calcPrice(); break; } } System.out.print("输入错误,请从新输入数字:"); flag = false; } while (!flag); } /** * 显示三级菜单-客户信息管理,并处理全部客户信息管理的流程 * */ public void showCustMMenu() { System.out.println("购物管理系统 > 客户信息管理\n"); System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); System.out.println("\t\t\t\t 1. 显 示 所 有 客 户 信 息\n"); System.out.println("\t\t\t\t 2. 添 加 客 户 信 息\n"); System.out.println("\t\t\t\t 3. 修 改 客 户 信 息\n"); System.out.println("\t\t\t\t 4. 查 询 客 户 信 息\n"); System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); System.out.print("请选择,输入数字或按'n'返回上一级菜单:"); Scanner scanner = new Scanner(System.in); boolean flag = true; do { // 建立客户信息管理对象,并设置数据,这里的数据仍是原始的那些数据 CustManagement custmanagement = new CustManagement(); custmanagement.setData(goodsName, goodsPrice, custNo, custBirth, custScore); String s = scanner.next(); // 客户选择"显示全部客户信息" if (s.equals("1")) { custmanagement.show(); break; } // 客户选择"添加客户信息" if (s.equals("2")) { custmanagement.add(); break; } // 客户选择"修改客户信息" if (s.equals("3")) { custmanagement.modify(); break; } // 客户选择"查询客户信息" if (s.equals("4")) { custmanagement.search(); break; } // 客户选择"返回上一级菜单" if (s.equals("n")) { showMainMenu(); break; } System.out.println("输入错误, 请从新输入数字:"); flag = false; } while (!flag); } /*====================定义该类所拥有的变量====================*/ public String goodsName []; // 商品的名称 public double goodsPrice[]; // 商品的价格 public int custNo []; // 顾客的会员号 }
从头开始,只写了菜单类,其余功能之后再继续完善。数组
增长了代码的复用性,使得代码效率提升,提高代码可读性;同时也提高了程序的可移植性和灵活性。框架
在抽象类中定义抽象方法须要用abstract声明,在接口中默认方法都是抽象的(abstract),可不用声明函数
让类实现Comparable接口,并覆盖compareTo方法就能够实现对象的自动排序,Comparable接口有compareTo一个方法,覆盖这个方法就能排序了。学习
Comparator 和 Comparable都是java的一个接口, 而且是用来对自定义的class比较大小,Comparable 定义在 Person类的内部,Comparator 是定义在Person的外部。this
求面积和周长的方法应声明为abstract,由于 Rectangle,Cirlce都要进行求面积和周长。定义为抽象就能够求解。
package PTA4; public abstract class Arr implements Comparable<Arr>{ public final static double PI=3.14; public abstract double getPerimeter(); public abstract double getArea(); public int compareTo(Arr other){ if(this.getArea() < other.getArea()) return -1; if(this.getArea() > other.getArea()) return 1; return 0; } }
在Shape类上实现Comparable最好
面向接口编程的最大的好处是接口和实现分离了, 用起来方便,结构清晰,适合团队开发
StudentDao接口读取、录入、显示学生信息。
都有StudentDao中的三个方法;不一样于StudenDaoListImpl使用ArrayList来存储信息,StudentDaoArrayImpl用数组来存储。
程序结构更清晰,适合团队开发,提升工做效率。
例如StudentDaoListlmpl和StudentDaoArrayImpl都继承了StudentDao接口,能实现StudentDao中的功能。
面向接口编程就是经过定义接口,承接接口实现不一样类之间的通讯和各模块之间的交互。
好处:
行数 | 新增行数 | 文件数 | 新增文件数 |
---|---|---|---|
1154 | 260 | 67 | 16 |