本篇将介绍一个简易的Java小项目,期中综合运用了多个Java基础知识,包括类和对象,Java数组,包的引入,工具类等。最重要的是通过这一小项目让我们建立起Java编程思想——OOP(面向对象),以及如何分析问题,并用代码解决问题。并且这个项目初步引入了Java中一个简单框架,即MCV框架((Model-View-Controller))
一,项目呈现
这是部分功能呈现:
菜单:
房屋列表:
添加房屋:
查找房屋:
删除房屋:
二.项目分析及准备
解决一个项目的一般步骤:分析问题->明确框架->思考方法->转化为代码
由上面分析可知,我们需要四个的代码块,我将它如下分类(这也是分层模式的一种体现):
各类包功能阐释:
1.domain->House:一个House对象代表一个房屋信息(数据层)。
2.service->HouseService:处理HouseView传递的指令进行相应的数据分析和处理,是这个项目的核心代码(业务层)。
3.view->HouseView:生成与用户的交互界面,用于接收用户的输入指令并将它们交给HouseService进行处理(交互界面).
4.utils->Utility:工具类,其中封装了需要已经写好的工具方法,方便我们直接使用。
5.HouseRentApp:程序的入口,测试类。
三.项目实现
- Utility(别人写好的,直接拿来用,提高开发效率):
package HouseRent.utils;
import java.util.*;
/**
* Created with IntelliJ IDEA.
* Description:工具类
* User:lenovo
* Date:2024-06-09
* Time:17:40
*/
/**
工具类的作用:
处理各种情况的用户输入,并且能够按照程序员的需求,得到用户的控制台输入。
*/
public class Utility {
//静态属性。。。
private static Scanner scanner = new Scanner(System.in);
/**
* 功能:读取键盘输入的一个菜单选项,值:1——5的范围
* @return 1——5
*/
public static char readMenuSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1, false);//包含一个字符的字符串
c = str.charAt(0);//将字符串转换成字符char类型
if (c != '1' && c != '2' &&
c != '3' && c != '4' && c != '5') {
System.out.print("选择错误,请重新输入:");
} else break;
}
return c;
}
/**
* 功能:读取键盘输入的一个字符
* @return 一个字符
*/
public static char readChar() {
String str = readKeyBoard(1, false);//就是一个字符
return str.charAt(0);
}
/**
* 功能:读取键盘输入的一个字符,如果直接按回车,则返回指定的默认值;否则返回输入的那个字符
* @param defaultValue 指定的默认值
* @return 默认值或输入的字符
*/
public static char readChar(char defaultValue) {
String str = readKeyBoard(1, true);//要么是空字符串,要么是一个字符
return (str.length() == 0) ? defaultValue : str.charAt(0);
}
/**
* 功能:读取键盘输入的整型,长度小于2位
* @return 整数
*/
public static int readInt() {
int n;
for (; ; ) {
String str = readKeyBoard(10, false);//一个整数,长度<=10位
try {
n = Integer.parseInt(str);//将字符串转换成整数
break;
} catch (NumberFormatException e) {
System.out.print("数字输入错误,请重新输入:");
}
}
return n;
}
/**
* 功能:读取键盘输入的 整数或默认值,如果直接回车,则返回默认值,否则返回输入的整数
* @param defaultValue 指定的默认值
* @return 整数或默认值
*/
public static int readInt(int defaultValue) {
int n;
for (; ; ) {
String str = readKeyBoard(10, true);
if (str.equals("")) {
return defaultValue;
}
//异常处理...
try {
n = Integer.parseInt(str);
break;
} catch (NumberFormatException e) {
System.out.print("数字输入错误,请重新输入:");
}
}
return n;
}
/**
* 功能:读取键盘输入的指定长度的字符串
* @param limit 限制的长度
* @return 指定长度的字符串
*/
public static String readString(int limit) {
return readKeyBoard(limit, false);
}
/**
* 功能:读取键盘输入的指定长度的字符串或默认值,如果直接回车,返回默认值,否则返回字符串
* @param limit 限制的长度
* @param defaultValue 指定的默认值
* @return 指定长度的字符串
*/
public static String readString(int limit, String defaultValue) {
String str = readKeyBoard(limit, true);
return str.equals("")? defaultValue : str;
}
/**
* 功能:读取键盘输入的确认选项,Y或N
* 将小的功能,封装到一个方法中.
* @return Y或N
*/
public static char readConfirmSelection() {
System.out.println("请输入你的选择(Y/N): 请小心选择");
char c