哈哈。大家平时都在使用电话本。以下使用java来模拟而一个简单的电话本吧...

首先给出联系人的抽象类

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("输入要查询的keyword")));
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();
}
}

详细的程序执行结果大家能够自己測试下,或者读读代码看看也应该能够明确...

以下是类图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDQ2OTAwMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

总结:这个模拟并没有什么太大的难度。可是重点就是使用面向对象的思想去设计,然后各个类之间达到解耦。

java模拟而一个电话本操作的更多相关文章

  1. Qt入门(5)——用Qt控件创建一个电话本界面

    具体实现步骤: 一.首先用 Qt Designer 创建一个两张图的对话框,分别保存为listdialog.ui和editdialog.ui文件 要注意其中各个空间对应的名称修改好 二.新建一个Qt应 ...

  2. C语言实现电话本 动态开辟 信息存储于文件

    下面是我用C写的一个电话本小项目,实现的功能有:添加 删除 修改 查找 排序 清空 显示,功能还是比较全的,内存也是动态开辟的.能存储于本地,能从本地读出并显示 头文件部分代码,contact.h: ...

  3. BZOJ 4175: 小G的电话本 SAM+FFT

    4175: 小G的电话本 Time Limit: 45 Sec  Memory Limit: 256 MBSubmit: 195  Solved: 48[Submit][Status][Discuss ...

  4. 浏览器与服务器交互原理以及用java模拟浏览器操作v

    浏览器应用服务器JavaPHPApache * 1,在HTTP的WEB应用中, 应用客户端和服务器之间的状态是通过Session来维持的, 而Session的本质就是Cookie, * 简单的讲,当浏 ...

  5. 一个电商项目的Web服务化改造6:单元测试4步走,构造数据、执行操作、断言、回滚

      最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA.     有点挑战,做完了,会有很大进步. 单元测试,在很早之前的文章已经介绍过.     可以在这里看到相关的 ...

  6. 重学 Java 设计模式:实战模版模式「模拟爬虫各类电商商品,生成营销推广海报场景」

    作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 黎明前的坚守,的住吗? 有人举过这样一个例子,先给你张北大的录 ...

  7. 用java中的Arraylist实现电话本系统管理

    大致思路:创建一个电话本条目的类,在主类中实例化.用实例化的对象调用构造参数接收输入值,然后将此对象存入Arraylist的对象中,实现动态添加电话本条目. 该系统具备添加.删除.修改.查询所有和按姓 ...

  8. 使用Java模拟一个简单的Dos学生成绩管理系统:

    使用Java模拟学生成绩管理系统... ------------------- 学生成绩管理系统:需要实现的功能:1.录入学生的姓名和成绩2.显示列表.列表中包括学生姓名与成绩3.显示最高分.最低分的 ...

  9. websocket通信 实现java模拟一个client与webclient通信

    发文原由: 熟悉socket通信的同学,对于socket模拟server与client,实现相互通信, 或者使用websocket与java模拟的websocket服务器通信(比如一个聊天室),对于这 ...

随机推荐

  1. [BZOJ3535][Usaco2014 Open]Fair Photography

    [BZOJ3535][Usaco2014 Open]Fair Photography 试题描述 FJ's N cows (1 <= N <= 100,000) are standing a ...

  2. [HNOI2006]公路修建问题 (二分答案,并查集)

    题目链接 Solution 二分答案+并查集. 由于考虑到是要求花费的最小值,直接考虑到二分. 然后对于每一个二分出来的答案,模拟 \(Kruskal\) 的过程再做一遍连边. 同时用并查集维护联通块 ...

  3. 《如何成为一位大家愿意追随的Leader》读后感

    今天看了左耳朵耗子老师的文章<如何成为一位大家愿意追随的Leader>深有感触.每一行字都往心里说,文章里说到Leader和Boss的不同点在于,Leader是大家跟我一起上,而Boss则 ...

  4. [转] Makefile 基础 (9) —— Makefile 使用make更新函数库文件

    该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客:(最原始版本) http://blog.csdn.net/haoel/article/details/2886 我转自 ...

  5. scrapy之spiders

    官方文档:https://docs.scrapy.org/en/latest/topics/spiders.html# 一句话总结:spider是定义爬取的动作(是否跟进新的链接)及分析网页结构(提取 ...

  6. 切糕(bzoj 3144)

    Description Input 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q列的矩阵,第z个 矩阵的第x行第y列是v(x, ...

  7. canvas之webgl的浏览器开启方式

    引自百度知道的回答 1.开启方式: 第一种:打开cmd,切换到Chorme的安装目录,敲入chrome.exe --enable -webgl,回车就会打开一个chrome浏览器窗口: 第二种:找到C ...

  8. 诡异的malloc函数和%S的输出

    今天测试代码过程中无意间发现,代码如下: #include <stdio.h> #include <string.h> #include <stdlib.h> #d ...

  9. LeetCode OJ--Binary Tree Preorder Traversal

    http://oj.leetcode.com/problems/binary-tree-preorder-traversal/ 二叉树的先跟遍历,写的是递归版本,也可以使用stack来进行,替代了递归 ...

  10. WCF的学习之旅

    一.WCF的简单介绍  Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是MS为SOA (S ...