JAVA 面向对象的题目

本人初学,还望各位大侠能给点详细的思路,有详细代码最好。
一、背景:
控制台应用程序的菜单处理,菜单会有子菜单项,可能会有多级。菜单项可能会随时更新和添加,需要能很方便地通过配置文件进行维护。
一、需求:
A. 首页菜单如下:
购物系统
--------------------------------------
1. 客户信息管理
2. 购物结算
3. 真情回馈
4. 注销
5. 退出
--------------------------------------
请选择(1~5):

输入 1 时呈现:
购物系统 -- 客户信息管理
--------------------------------------
1. 显示所有客户信息
2. 添加客户信息
3. 修改客户信息
4. 查询客户信息
5. 返回上层
--------------------------------------
请选择(1~5):

输入 2 时执行“购物结算”逻辑,假定只是输出“do 购物结算”,执行完成后显示首页菜单。
输入 3、4 时执行各模块逻辑,逻辑也是假定输出字符串,执行完成后显示首页菜单。
输入 5 时退出系统,终止程序。
B. 二级页面,客户信息管理
输入 1~4 执行各模块逻辑,假定输出字符串,执行完成后显示“客户信息管理”菜单。
输入 5 时则返回上层菜单,即返回首页菜单。
C. 其他要求
C.1 首页菜单及二级菜单的菜单项是不定的,可能会随时进行增、删,需要做到动态配置。
C.2 各菜单项可能有多级子菜单,也是会随时进行增、删,需要做到动态配置。
C.3 各菜单项所执行的功能应是单独的,互不影响,即撤换掉一个时不影响其他功能的使用。
C.4 在菜单停顿输入必须检查所输入的值,假定是“请选择(1~5)”,如果输入 6 的话则重显“请选择(1~5)”以便于能继续输入

-------以下是我写的代码,请大侠详细指出我的不足------------
import java.io.*;
import java.util.*;
public class gwxt
{
private String adm,pas ;
public void in()
{
Scanner in= new Scanner(System.in);
System.out.println("\n"+"请输入用户名:");
adm=in.next();
System.out.println("\n"+"请输入密码:");
pas=in.next();
if(adm.equals("admin") && pas.equals("password"))
{
System.out.println("欢迎登录!");
readFileByLines("c:/java/gwxt/Main.txt");
}
else
{
System.out.println("输入有误,请重新输入!");
}
}
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
try {
System.out.println("购物系统 -- 客户信息管理"+"\r\n"+"--------------------------------------");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
// 显示行号
int []count =new int[line];
for(int i=0;i<line;i++)
{
count[i]=line;
}
System.out.println(line+". "+tempString);
line++;
}
System.out.println( "--------------------------------------" );
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
public static void main(String [] args)
{
new gwxt().in();
}
}

第1个回答  2012-07-16
import
java.io.*;

import
java.util.*;

public
class gwxt

{

private String adm, pas;

publicvoid in()

{

Scanner in =
new Scanner(System.in);

System.
out.println("\n" + "请输入用户名:");

adm = in.next();

System.
out.println("\n" + "请输入密码:");

pas = in.next();

//没有针对用户名,密码错误进行反复操作,'重新输入'无效

if (adm.equals("admin") && pas.equals("password"))

{

System.
out.println("欢迎登录!");

readFileByLines(
"c:/java/gwxt/Main.txt");

}

else

{

System.
out.println("输入有误,请重新输入!");

}

}

publicstaticvoid readFileByLines(String fileName) {

File file =
new File(fileName);

BufferedReader reader =
null;

try {

System.
out.println("购物系统 -- 客户信息管理" + "\r\n"

+
"--------------------------------------");

reader =
new BufferedReader(new FileReader(file));

String tempString =
null;

int line = 1;

// 一次读入一行,直到读入null为文件结束

while ((tempString = reader.readLine()) != null) {

// 显示行号

//行号直接用数字显示就可以了,用数组画蛇添足

// int[] count = new int[line];
//
// for (int i = 0; i < line; i++)
//
// {
//
// count[i] = line;
//
// }

System.
out.println(line + ". " + tempString);

line++;

}

System.
out.println("--------------------------------------");

reader.close();
//多余,交给finally处理

}
catch (IOException e) {

e.printStackTrace();

}
finally {

if (reader != null) {

try {

reader.close();

}
catch (IOException e1) {

}

}

}

}

publicstaticvoid main(String[] args)

{

new gwxt().in();

}

}追问

那后面的功能该如何去实现。

追答

有空给你写个完整的参考下

追问

谢大哥!

第2个回答  2012-07-20
我觉得用户名和密码用对象存储比较好,
还有就是在每级菜单选择用死循环,可以便于运行完后返会

建一个菜单类,一个功能实现的操作类,一个输入的校验类,一个客户类
第3个回答  2012-08-02
注意要使用面向对象的思想,菜单是对象,要设计好这个对象是关键,也是这个问题考核的关键!
第4个回答  2012-07-16
你这个程序拿来学习可以的 多做几个吧 过后你再回头看看 就可以了 现在还评不了你做的 也不知道评 只能说 你会用了这个知识点
第5个回答  2012-07-11
菜单是树形结构,你写的是啥我没整明白,登录模拟啊?追问

想不出来怎么写。。。。所以瞎写了点

在Java面向对象中,对于类和对象的描述错误的是( )。单选题?
解答:B:类是对象的模板,对象是类的实例,一个类可以创建对个对象。

Java面向对象,编程题,谢谢!
第一种:public static void main(String args[]) { Scanner scn = new Scanner(System.in); System.out.print("第一个数:"); int a = scn.nextInt(); System.out.print("操作(+,-,*,\/):"); String option = scn.next(); System.out.print("第二个数:"); ...

java 用eclipse做的面向对象的初级题,完全不知道怎么做
先建立动物类Animal(抽象类)。 然后弄个“唱歌”sing的方法(没有实现的抽象方法)然后派生出相应的子类,如:狗类,猫类,牛类,羊类四个类。在派生类中实现“唱歌”的方法,如system.out.println("喵喵喵")。最后建个测试类,弄个main方法,利用多态性初始化10个不用的动物。如:Animal[10] ...

几道java题 1.试论述java编程面向对象的编程思路 2.比较break和continue...
1,java基本编程思路:第一步:写框架(内层和外层):public class 类名{\/\/外层 public static void main(String[ ] args){\/\/内层 } } 第二步:看题目中是否有“接收”“输入”“录入”等字眼,则导入util包,创建Scanner扫描仪对象:import java.util.Scanner;\/\/写在文件的第一行 Scanner i...

java面向对象编程题目。要求用抽象类和接口
}}\/\/Circle类继承抽象类Shapepublic class Circle extends Shape {privatefinaldoublePI=3.14;privatedoubleradius;Circle(){}Circle(doubleradius){this.radius=radius;}public double getRadius() {return radius;}public void setRadius(double radius) {this.radius = radius;}publicdouble area() {...

老师要求张浩使用面向对象的思想编写一个计算器类(Calculator),可以实 ...
Java程序:public class Main002 {public static void main(String[] args) {Calculator c1 = new Calculator(2);Calculator c2 = new Calculator(3);Calculator c3;c3 = c1.add(c2);System.out.println("c1 + c2 = " + c3.toString());c3 = c1.subtract(c2);System.out.println("c1 ...

java面向对象题目,高手来帮忙!!!
首先抽象出以下属性,生成一个基类 baseClass:水平\/垂直坐标(x,y),宽度(width),高度(height),颜色(color),以及绘制自己的方法draw(Graphics g)同时生成一个接口:intofaceBase 接口定义几个公用方法如增删改高度等;然后,几个实体类扩展于这个基类并实现接口:窗户(Window)车门(Door)引擎(...

7-1 jmu-Java-03面向对象基础-04-形状-继承(15 分)
import java.util.*;abstract class Shape{ final static double PI=3.14;public abstract double getPerimeter();public abstract double getArea();public static double sumAllArea(Shape []shapes) { double x=0;for(Shape e:shapes) { x+=e.getArea();} return x;} public static double ...

Java使用面向对象思想,输出员工信息并计算员工的工资。
} public void setDept(Department dept) { this.dept = dept; } public void countSalary(double sales){ System.out.print("本月的工资为:"); System.out.println(salary + salary<100000?(sales * 0.01): salary<200000?(sales * 0.02): (sales * 0.03) ...

Java面向对象程序设计__哪位JAVA高手帮我做一下这些题目.
1 Smalltalk语言和C++语言 2 object 3 class 4 RuntimeException和Error 5 Third 6 (7)new Rectangle(2.5,8.7);(8)myRect.area();(9)this.width (10)this.length

相似回答