日期:2014-05-20  浏览次数:20762 次

求一些JAVA面向对象编程的练习题
学java 2周了,现在学面向对象,求一些面向对象编程的练习,好加深理解!

------解决方案--------------------
你看看下面这两题如何?半年前我自己出的,本想给老紫竹群里的朋友一些练习题,但到现在为止我没发现有谁把做好后的东西传给我,哎。


题一

一、背景:

控制台应用程序的菜单处理,菜单会有子菜单项,可能会有多级。菜单项可能会随时更新和添加,需要能很方便地通过配置文件进行维护。

一、需求:

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)”以便于能继续输入


题二

-----------------------------------
A. 背景
-----------------------------------

A.1 为了方便生成非数字的流水号,现在需要制作一个流水号生成器,每调用一
次可以获得流水号的下一个流水,并且能根据不同的要求进行变化。


-----------------------------------
B. 需求
-----------------------------------

B.1 要求根据不同的场景生成流水号

B.2 流水号有多种表现形式,比如:M000001、M200903140001、20090314000001
等等之类的,流水号可能是从 1 开始的,但也可能根据设定时间段从 1 开


B.2.1 比如:M000001 的话,M 这个字符是固定的,而后面的数字是每调
用一次流水号生成员都能获得下一个值

B.2.2 比如:20090314000001 的话,20090314 可能是当前的日期,也可
能是当前的分钟或者说是小时,这样的话每一天或者每一小时或者
是每一分钟的开始均从 1 开始

B.2.3 比如:M20090314000001 的话,M 是固定的,后面的与 B.2.2 一致

B.2.4 情况可能是多种多样的,具体的流水号产生逻辑今后可能还会增加,
而且可以进行任意组合使用

B.3 流水号不同号码的长度是固定的,数字位数不足时前面添 0 补足位数

B.4 流水号可以放置于内存当中,但是为了停机后再次启动流水后也能延续下去,
就可能需要进行持久化处理,持久化暂时设置为文件和数据库,但是今后可
能会增加其他的持久化方式,比如 LDAP,FTP,SOCKET 等等。


-----------------------------------
C. 要求
-----------------------------------

C.1 采用面向对象方式进行程序设计

C.2 应做到设计合理,扩展方便,运行正确,需要考虑并发请求流水号的问题

C.3 代码格式标准,注释合理

C.4 提交代码时需要提供打包后的 jar 文件、所有源代码、Ant 或 Maven 构建脚
本、有类图的话需要提供类图