首先给出联系人的抽象类
- package net.itaem.po;
- /**
- *
- * 电话人的信息
- * */
- public class User {
- private String name;
- private String phoneNumber;
- private String companyName;
- private String email;
- private String address;
- private String birthday;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPhoneNumber() {
- return phoneNumber;
- }
- public void setPhoneNumber(String phoneNumber) {
- this.phoneNumber = phoneNumber;
- }
- public String getCompanyName() {
- return companyName;
- }
- public void setCompanyName(String companyName) {
- this.companyName = companyName;
- }
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- public String getBirthday() {
- return birthday;
- }
- public void setBirthday(String birthday) {
- this.birthday = birthday;
- }
- @Override
- public String toString() {
- return "User [name=" + name + ", phoneNumber=" + phoneNumber
- + ", companyName=" + companyName + ", email=" + email
- + ", address=" + address + ", birthday=" + birthday + "]";
- }
- public User(String name, String phoneNumber, String companyName,
- String email, String address, String birthday) {
- this.name = name;
- this.phoneNumber = phoneNumber;
- this.companyName = companyName;
- this.email = email;
- this.address = address;
- this.birthday = birthday;
- }
- public User(String name, String phoneNumber){
- this.name = name;
- this.phoneNumber = phoneNumber;
- }
- }
给出操作数据库的UserDao,这里只是简单的模拟操作...所以使用打印来提示操作结果
下面给出工具类,用来获得MVC中的VIEW的请求内容
- package net.itaem.tool;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class GetInput {
- private static BufferedReader bufReader;
- static{
- bufReader = new BufferedReader(new InputStreamReader(System.in));
- }
- public static String getInputString(String info) throws IOException{
- System.out.println(info);
- String result = null;
- result = bufReader.readLine(); //读取内存输入的一行数据
- return result;
- }
- public static void main(String[] args) throws IOException{
- }
- }
下面给出控制类,相当于MVC中的C,Controller,这个类负责和DAO,VIEW,TOOL等其它类交互...
- package net.itaem.operate;
- import java.io.IOException;
- import net.itaem.dao.UserDao;
- import net.itaem.po.User;
- import net.itaem.tool.GetInput;
- /**
- * 操作类
- * */
- public class Operate {
- public Operate(){
- start();
- }
- public void start(){
- try {
- while(true){ //一直运行
- run();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- private void run() throws IOException{
- System.out.println("======================电话本===================");
- System.out.println("1查看所有联系人");
- System.out.println("2增加联系人");
- System.out.println("3删除联系人");
- System.out.println("4搜索联系人");
- System.out.println("5退出");
- String choose = GetInput.getInputString("输入你的选择");
- char choice = choose.toCharArray()[0];
- switch(choice){
- case '1':
- System.out.println(UserDao.getInstance().findAll()); //输出所有电话本用户
- break;
- case '2':
- UserDao.getInstance().add(new User(GetInput.getInputString("输入名字"),
- GetInput.getInputString("输入电话号码")));
- break;
- case '3':
- UserDao.getInstance().delete(new User(GetInput.getInputString("输入名字"),
- GetInput.getInputString("输入电话号码")));
- break;
- case '4':
- System.out.println(UserDao.getInstance().findUsersByKeyword(GetInput.getInputString("输入要查询的关键字")));
- break;
- case '5':
- exit();
- break;
- default:
- System.out.println("sorry your input was wrong, please input 1、2、3、4");
- }
- }
- private void exit(){
- System.exit(0); //退出
- }
- public static void main(String[] args) {
- new Operate().start();
- }
- }
具体的程序运行结果大家可以自己测试下,或者读读代码看看也应该可以明白...
下面是类图:
总结:这个模拟并没有什么太大的难度,但是重点就是使用面向对象的思想去设计,然后各个类之间达到解耦。