博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用map集合添加菜单,运用反射,获取方法,执行程序
阅读量:4949 次
发布时间:2019-06-11

本文共 3391 字,大约阅读时间需要 11 分钟。

public class Menu {

static Scanner input=new Scanner(System.in);
public static void main(String[] args) {

//创建map集合

HashMap<String, String> map = new HashMap<String, String>();
//添加元素,值为方法名
map.put("C", "addProduct");
map.put("U", "editProduct");
map.put("D", "delete");
map.put("DA", "deleteAll");
map.put("I", "findByld");
map.put("FA", "findAll");
//System.out.println(map);
while(true){
//菜单
System.out.println("C:创建 U:修改 D:删除 DA:删除所有 I:通过id查询 FA:查询所有 Q:退出");
System.out.println("请选择");
String s=input.nextLine().toUpperCase();
if(s.equalsIgnoreCase("q")){
System.exit(0);
}
//通过输入的菜单项找到对应的方法
String value = map.get(s);
//通过反射执行键对应的方法
//System.out.println(value);
if(value==null){
System.out.println("输入有误");
}else{
try {
//获取类对象
Class menu = Menu.class;
//获取构造
Constructor con = menu.getConstructor();
//获取对象
Object object = con.newInstance();
//通过类对象,暴力获取诶类中的方法(传入方法名和参数类型)
Method method = menu.getDeclaredMethod(value);
//修改方法权限
method.setAccessible(true);
//启动方法,传入对象和参数
method.invoke(object);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//查询所有商品
private static void findAll() {
Service service = new Service();
List<Products> list = service.findAll();
printList(list);
}

private static void findByld() {

findAll();
System.out.println("请输入要查的商品id");
String pid=input.nextLine();
Service service = new Service();
List<Products> list = service.findById(pid);
if(list==null){
System.out.println("没有此商品");
return;
}
printList(list);
}
private static void deleteAll() {
//创建集合存储pid
LinkedList<String> list = new LinkedList<String>();
Service service = new Service();
while (true){
System.out.println("请输入需要删除的商品id(以-1结束)");
String pid=input.nextLine();
if(pid.equals("-1")){
break;
}
List<Products> p =service.findById(pid);
printList(p);
list.add(pid);
}
System.out.println("是否要删除(Y/N)");
if(input.nextLine().equalsIgnoreCase("y")){
service.deleteAll(list);
}
}
private static void delete() {
findAll();
//查询需要修改的商品
System.out.println("请输入需要删除的商品编号");
String pid=input.nextLine();
Service service = new Service();
List<Products> list = service.findById(pid);
printList(list);
System.out.println("是否要删除(Y/N)");
if(input.nextLine().equalsIgnoreCase("y")){
service.delete(pid);
}
}
//修改数据
private static void editProduct() {
findAll();
//查询需要修改的商品
System.out.println("请输入需要修改的商品编号");
String pid=input.nextLine();
System.out.println("请输入商品名");
String pname=input.nextLine();
System.out.println("请输入价格");
int price=Integer.parseInt((input.nextLine()));
System.out.println("请输入是否上架(1/0)");
String flag=input.nextLine();
System.out.println("请输入商品类名");
String category_id=input.nextLine();
Products p=new Products(pid,pname,price,flag,category_id);
Service service = new Service();
service.editProduct(p);
}
//创建数据
private static void addProduct() {
// TODO Auto-generated method stub
System.out.println("请输入商品名");
String pname=input.nextLine();
System.out.println("请输入价格");
int price=Integer.parseInt((input.nextLine()));
System.out.println("请输入是否上架(1/0)");
String flag=input.nextLine();
System.out.println("请输入商品类名");
String category_id=input.nextLine();
Products p=new Products("1",pname,price,flag,category_id);
Service service = new Service();
service.addProduct(p);
}
//遍历集合
public static void printList(List<Products> list) {
for (Products products : list) {
System.out.println(products);
}
}

}

转载于:https://www.cnblogs.com/Flyrun/p/7999195.html

你可能感兴趣的文章
MongoDB在windows下安装配置
查看>>
Upselling promotion stored procedure
查看>>
mysql编码配置
查看>>
KVM地址翻译流程及EPT页表的建立过程
查看>>
sigar
查看>>
iOS7自定义statusbar和navigationbar的若干问题
查看>>
c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码...
查看>>
程序员如何提高影响力:手把手教你塑造个人品牌
查看>>
身份证校验原理和PHP实现
查看>>
[Locked] Wiggle Sort
查看>>
deque
查看>>
计算机
查看>>
Ext JS学习第十三天 Ext基础之 Ext.Element
查看>>
python--迭代器与生成器
查看>>
SQL之case when then用法详解
查看>>
STL 排序函数
查看>>
Microsoft Dynamics CRM 2011 面向Internet部署 (IFD) ADFS虚拟机环境搭建的步骤(CRM与ADFS装在同一台服务器上) 摘自网络...
查看>>
Setting up a Passive FTP Server in Windows Azure VM(ReplyCode: 227, Entering Passive Mode )
查看>>
Atitit mtp ptp rndis midi协议的不同区别
查看>>
Ajax辅助方法
查看>>