用java抽象类实现菜单交互模块
//——————————————Menu类————————————
InputData类参见上面;
abstract class Menu
{
protected String title = null; // 菜单标题
public String getTitle() // 获取菜单
{
return this.title;
}
public void setTitle(String title)
{
this.title = title; // 设置菜单
}
public abstract void operate(); // 菜单操作
}
class MenuAdd extends Menu // 添加菜单
{
public void operate() // 覆写抽象方法
{
System.out.println(“增加菜单调用成功!数据增加成功!”);
}
}
class MenuDelete extends Menu // 删除菜单
{
public void operate() // 覆写抽象方法
{
System.out.println(“删除菜单调用成功!数据删除成功!”);
}
}
class MenuAlter extends Menu // 修改菜单
{
public void operate() // 覆写抽象方法
{
System.out.println(“修改菜单调用成功!数据修改成功!”);
}
}
class MenuLook extends Menu // 查看菜单
{
public void operate() // 覆写抽象方法
{
System.out.println(“查看菜单调用成功!数据查看成功!”);
}
}
class MenuExit extends Menu // 退出菜单
{
public void operate() // 覆写抽象方法
{
System.out.println(“退出菜单调用成功!系统退出成功!”);
System.exit(0);
}
}
//———————————————工厂类——————————————
class Factory
{
private Menu[] menu = null; // 声明菜单数组
private int menuNum = 0; // 菜单个数
public Factory()
{
this.menuNum = 5;
this.menu = makeMenu(this.menuNum); // 开辟5个空间
this.initMenu();
this.selectMenu();
}
private Menu[] makeMenu(int menuNum)
{
return new Menu[menuNum]; // 生成菜单模型
}
private void initMenu() // 实例化菜单
{
this.menu[0] = new MenuAdd();
this.menu[0].setTitle(“[1]**增加数据**”);
this.menu[1] = new MenuDelete();
this.menu[1].setTitle(“[2]**删除数据**”);
this.menu[2] = new MenuAlter();
this.menu[2].setTitle(“[3]**修改数据**”);
this.menu[3] = new MenuLook();
this.menu[3].setTitle(“[4]**查看数据**”);
this.menu[4] = new MenuExit();
this.menu[4].setTitle(“[5]**系统退出**”);
}
private void selectMenu()
{
InputData input = new InputData(); // 获取标准输入
int select = 0;
do
{
System.out.println(“******数据管理系统**********”);
for (Menu m : this.menu)
{
System.out.println(m.getTitle());// 打印菜单信息
}
select = input.getInt(“请选择:”, “请输入正确的选项”) – 1; // 用户输入
if (select >= 0 && select < this.menuNum)
{
this.menu[select].operate(); // 执行选择的菜单操作
}
else
{
System.out.println(“请输入合法的选项数字!”);
}
}
while (true);
}
}
//———————————————菜单操作类—————————————————
public class MenuDataSystem
{
public static void main(String[] args)
{
new Factory(); // 系统初始化
}
}
/*
administrator@xu-desktop:~$ java com.mldn.MenuDataSystem
******数据管理系统**********
[1]**增加数据**
[2]**删除数据**
[3]**修改数据**
[4]**查看数据**
[5]**系统退出**
请选择:
1
增加菜单调用成功!数据增加成功!
******数据管理系统**********
[1]**增加数据**
[2]**删除数据**
[3]**修改数据**
[4]**查看数据**
[5]**系统退出**
请选择:
2
删除菜单调用成功!数据删除成功!
******数据管理系统**********
[1]**增加数据**
[2]**删除数据**
[3]**修改数据**
[4]**查看数据**
[5]**系统退出**
请选择:
3
修改菜单调用成功!数据修改成功!
******数据管理系统**********
[1]**增加数据**
[2]**删除数据**
[3]**修改数据**
[4]**查看数据**
[5]**系统退出**
请选择:
4
查看菜单调用成功!数据查看成功!
******数据管理系统**********
[1]**增加数据**
[2]**删除数据**
[3]**修改数据**
[4]**查看数据**
[5]**系统退出**
请选择:
–
请输入正确的选项
请选择:
34
请输入合法的选项数字!
******数据管理系统**********
[1]**增加数据**
[2]**删除数据**
[3]**修改数据**
[4]**查看数据**
[5]**系统退出**
请选择:
5
退出菜单调用成功!系统退出成功!
*/
————–// 数据接收类
package com.mldn;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;
class InputData // 实现类型数据输入
{
private BufferedReader buf = null; // 读取数据
public InputData()
{
this.buf = new BufferedReader(new InputStreamReader(System.in)); // 接收标准输入;
}
public String getString(String info) // 获取输入的字符串形式
{
String temp = null; // 接收输入数据
System.out.println(info); // 打印提示信息
try
{
temp = this.buf.readLine(); // 读取标准输入以字符串形式返回;
}
catch (IOException e)
{
e.printStackTrace();
}
return temp;
}
public int getInt(String info, String err) // 获取整型的输入数据
{
int temp = 0; // 接收输入
String str = null; // 获取字符串信息
boolean flag = true; // 监视输入
while (flag)
{
str = this.getString(info); // 打印提示,并等待接收字符串信息
if (str.matches(“^\\d+$”)) // 判断是数字组成
{
temp = Integer.parseInt(str); // String–>Integer–>int
flag = false; // 结束循环
}
else
{
System.out.println(err); // 打印错误信息
}
}
return temp;
}
public float getFloat(String info, String err) // 获取输入的float型小数
{
float temp = 0.0f; // 接收输入
String str = null; // 获取字符串信息
boolean flag = true; // 监视输入
while (flag)
{
str = this.getString(info); // 打印提示,并等待接收字符串信息
if (str.matches(“^\\d+.?\\d+f$”)) // 判断是数字组成
{
temp = Float.parseFloat(str); // String–>Float–>float
flag = false; // 结束循环
}
else
{
System.out.println(err); // 打印错误信息
}
}
return temp;
}
public Date getDate(String info, String err) // 获取输入的Date型日期
{
Date temp = null; // 接收输入
String str = null; // 获取字符串信息
boolean flag = true; // 监视输入
while (flag)
{
str = this.getString(info); // 打印提示,并等待接收字符串信息
if (str.matches(“^\\d{4}-[0-1]\\d-[0-3]\\d$”)) // 判断是数字组成
{
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”); // 实例化日期风格
try
{
temp = sdf.parse(str); // String–>Date
}
catch (ParseException e)
{
e.printStackTrace();
}
flag = false; // 结束循环
}
else
{
System.out.println(err); // 打印错误信息
}
}
return temp;
}
}
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《用java抽象类实现菜单交互模块》
本文地址:http://www.xiupu.net/archives-187.html
关注公众号:
微信赞赏
支付宝赞赏