实现一个通讯录

        一般来说通讯录的信息都是存在文件上的,我使用MySQL来存储信息。通讯录的原理就不在这多介绍了。

        直接看实现的代码吧,我只涉及到了增删查改,我会慢慢的完善这段代码

package com.company;
import java.io.PrintWriter;
import java.sql.*;
import java.util.Scanner;


interface Method {
    void Init_List(Statement statement) throws SQLException;//清空通讯录
    void Person_Add(Statement statement,Scanner scanner) throws Exception;//添加联系人
    void Person_Delete(Statement statement,Scanner scanner) throws Exception;//删除联系人
    void Person_Serach(Statement statement,Scanner scanner) throws Exception;//查找联系人
    void Person_change(Statement statement,Scanner scanner) throws SQLException;//修改联系人
    void Person_Show(Statement statement,Scanner scanner) throws SQLException;//显示所有联系人
}

class List implements Method{

    public void menu(){
        System.out.println("****************************************************");
        System.out.println("*********1:清空通讯录    2:增加联系人    ***********");
        System.out.println("*********3:删除联系人    4:查找联系人    ***********");
        System.out.println("*********     5:修改i联系人信息    *****************");
        System.out.println("*********     6:打印所有人的信息   *****************");
        System.out.println("*********           0:退出            **************");
        System.out.println("****************************************************");
        System.out.println("****************************************************");
    }

    @Override
    public void Init_List(Statement statement) throws SQLException {//清空数据库
        String sql = "DELETE FROM XT";
        String sql2 = "CREATE TABLE IF NOT EXISTS XT(id INT(20) PRIMARY KEY auto_increment," +
                "peoplename VARCHAR(80) ,phonenumber VARCHAR(80), address VARCHAR(80))CHARACTER SET utf8";
        statement.execute(sql);
        statement.execute(sql2);
        System.out.println("数据库已清空");
    }

    @Override
    public void Person_Add(Statement statement,Scanner scanner) throws Exception{//添加
        System.out.println("请依次输入新用户姓名,电话号码,家庭住址.中间用空格隔开");
        String Message_name = null;
        String Message_number = null;
        String Message_address = null;
        if(scanner.hasNext()){
            Message_name = scanner.next();
            Message_number = scanner.next();
            Message_address = scanner.next();
        }
        String sql = "INSERT INTO xt(peoplename,phonenumber,address) VALUES('"+Message_name+"','"+Message_number+"','"+Message_address+"')";//存入数据库
        statement.execute(sql);
        System.out.println("加入成功");
    }

    @Override
    public void Person_Delete(Statement statement,Scanner scanner) throws Exception {//删除
        System.out.println("请输入要删除的人的姓名");
        String Name = null;
        if (scanner.hasNext()) {
            Name = scanner.next();
        } else {
            throw new Exception("输入错误! 请输入要删除的人的姓名");
        }
        String sql = "delete from xt where peoplename=" + "'" + Name + "'";
        statement.executeUpdate(sql);
        System.out.println("删除成功!");
    }

    @Override
    public void Person_Serach(Statement statement,Scanner scanner) throws Exception {//查找
        System.out.println("请输入要查找的人的姓名");
        String Search_name = null;
        if (scanner.hasNext()) {
            Search_name = scanner.next();
        } else {
            System.out.println("输入错误,请输入要查找的人名");
        }
        String sql = "SELECT * FROM xt WHERE peoplename=" + "'" + Search_name + "'";
        ResultSet set = statement.executeQuery(sql);
        if (!set.next()) {
            System.out.println("查无此人!");
            return;
        }
        set.previous();
        System.out.println("id   " + "peoplename     " + "phonenumber         " + "address   ");
        PrintonesMessage(set);
    }

    @Override
    public void Person_change(Statement statement,Scanner scanner) throws SQLException {
        System.out.println("请输入要修改的人的姓名");
        String Change_Name = null;
        if(scanner.hasNext()){
            Change_Name = scanner.next();
        }
        String sql = "SELECT * FROM xt WHERE peoplename=" + "'" + Change_Name + "'";
        ResultSet ret = statement.executeQuery(sql);
        if (!ret.next()) {
            System.out.println("没有找到要修改的人!");
            return;
        }
        ret.previous();
        System.out.println("找到了要修改的联系人,他的信息如下");
        System.out.println("id   " + "peoplename     " + "phonenumber         " + "address   ");

        PrintonesMessage(ret);
        System.out.println("请输入要修改的属性名以及修改后的属性值,中间用空格隔开");
        String FieldName = scanner.next();
        String Message = scanner.next();
        String sql2 = "update xt set "+FieldName+"='"+Message+"' where peoplename='"+Change_Name+"'";
        statement.executeUpdate(sql2);
        System.out.println("修改成功");
    }

    private void PrintonesMessage(ResultSet ret) throws SQLException {
        PrintWriter printWriter = new PrintWriter(System.out);
        while (ret.next()) {
            System.out.printf("%-5s",ret.getString(1));
            System.out.printf("%-15s",ret.getString(2));
            System.out.printf("%-20s",ret.getString(3));
            System.out.printf("%-10s\n",ret.getString(4));
        }
    }

    @Override
    public void Person_Show(Statement statement,Scanner scanner) throws SQLException {//打印出所有人的信息
        String sql = "SELECT * FROM xt";
        ResultSet ret = statement.executeQuery(sql);
        if(!ret.next()){
            System.out.println("通讯录中没有联系人");
            return;
        }else {
            ret.previous();
        }
        System.out.println("所有联系人的信息如下");
        System.out.println("id   " + "peoplename     " + "phonenumber         " + "address   ");
        PrintonesMessage(ret);
    }
}

public class Main {
    public static void main(String[] args) {
        String UTR = "jdbc:mysql://127.0.0.1:3306/dxy?useSSL=false&serverTimezone=UTC&characterEncoding=UTF8";
        String name = "root";
        String Password = "?????";
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection coon = DriverManager.getConnection(UTR, name, Password);
            Statement statement = coon.createStatement();
            List list = new List();
            String choose = null;
            Scanner scanner = new Scanner(System.in);
            while (true) {
                list.menu();
                System.out.println("请输入选项");
                choose = scanner.next();
                switch (choose) {
                    case "1":
                        list.Init_List(statement);
                        break;
                    case "2":
                        list.Person_Add(statement,scanner);
                        break;
                    case "3":
                        list.Person_Delete(statement,scanner);
                        break;
                    case "4":
                        list.Person_Serach(statement,scanner);
                        break;
                    case "5":
                        list.Person_change(statement,scanner);
                        break;
                    case "6":
                        list.Person_Show(statement,scanner);
                        break;
                    case "0":
                        break;
                    default:
                        System.out.println("输入错误,请重新输入");
                        break;
                }
                if("0".equals(choose)){
                    System.out.println("Bye");
                    break;
                }
            }
            scanner.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
        实现的原理和通讯录没有什么区别,只是将操作转化为MySQL的语句罢了,涉及到JDBC的数据库连接,我在上一篇博文里有过介绍,写的很简略,希望能对大家有所帮助吧。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值