欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

电话本管理系统java实现

程序员文章站 2022-04-03 18:01:42
...

项目图片:telephone项目
电话本管理系统java实现
所用到的包:
电话本管理系统java实现
Person类:

public class Person {
    private int Id;                       //ID
    private String Name;                  //姓名
    private String Phonenumber;          //电话号码
    private int Age;                     //年龄
    private String Gender;               //性别
    private String Address;               //地址

    public void setName(String name) {
        Name = name;
    }

    public void setId(int id) {
        Id = id;
    }

    public void setPhonenumber(String phonenumber) {
        Phonenumber = phonenumber;
    }

    public void setAge(int age) {
        Age = age;
    }

    public void setGender(String gender) {
        Gender = gender;
    }

    public void setAddress(String address) {
        Address = address;
    }

    public String getName() {
        return Name;
    }

    public int getId() {
        return Id;
    }

    public String getPhonenumber() {
        return Phonenumber;
    }

    public int getAge() {
        return Age;
    }

    public String getGender() {
        return Gender;
    }

    public String getAddress() {
        return Address;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return Age == person.Age &&
                Objects.equals(Name, person.Name) &&
                Objects.equals(Phonenumber, person.Phonenumber) &&
                Objects.equals(Gender, person.Gender) &&
                Objects.equals(Address, person.Address);
    }

    @Override
    public int hashCode() {
        return Objects.hash(Name, Phonenumber, Age, Gender, Address);
    }

    @Override
    public String toString() {
        return
                "姓名:" + Name  + "\t"+
                "电话:" + Phonenumber + "\t" +
                "年龄:" + Age +"\t" +
                "性别:" + Gender +"\t" +
                "地址:" + Address;
    }
    //满参构造函数
    public Person(int id,String name,int age,String phonenumber, String gender, String address) {
        Id = id;
        Name = name;
        Phonenumber = phonenumber;
        Age = age;
        Gender = gender;
        Address = address;
    }
    //空参构造函数
    public Person(){}
}

JDBCTools类:

public class JDBCTools {
    //1.定义成员变量 DataSource
    private static DataSource ds;
    static{
        try{
            //1.加载配置文件
            Properties pro = new Properties();
            pro.load(JDBCTools.class.getClassLoader().getResourceAsStream("druid.properties"));
            //2.获取DataSource
            ds = DruidDataSourceFactory.createDataSource(pro);
        }catch (IOException e){
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /*
    * 获取连接
    * */
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
    /*
    * 获取连接池方法
    * */
    public static DataSource getDataSource(){
        return ds;
    }
    /*
    * 释放资源
    * */
    public static void close(Statement stmt, Connection conn){
        JDBCTools.close(null,stmt,conn);
    }
    /**
     * 释放资源
     */
    public static void close(ResultSet rs, Statement stmt, Connection conn){
        if (rs!=null) {
            try {
                rs.close();             //归还连接
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (stmt!=null){
            try{
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

LinkMySQL类:

private static LinkMySQL INSTANCE = new LinkMySQL();
    private LinkMySQL(){};                                 //私有化构造方法

    public static LinkMySQL getINSTANCE() {
        return INSTANCE;
    }

    //从数据库中获取数据
    public List<Person> GetContainter() {
        /**
         * 完成添加操作: 给account表添加一条
         * */
        //1.获取连接
        Connection conn = null;
        Statement pstmt = null;
        ResultSet rs = null;
        List<Person> link = null;
        try {
            conn = JDBCTools.getConnection();
            pstmt = conn.createStatement();
            //定义sql
            String sql = "SELECT * FROM Person";
            //执行sql
            rs = pstmt.executeQuery(sql);
            //遍历结果集,封装对象,装载集合
            Person person = null;
            link = new ArrayList<Person>();
            while(rs.next()){
                //获取数据
                int id = rs.getInt("id");              //获取id
                String name = rs.getString("NAME");    //获取姓名
                String gender = rs.getString("gender"); //获取性别
                int age = rs.getInt("age");             //获取年龄
                String phonenumber = rs.getString("telephone");//获取电话号码
                String address = rs.getString("address");      //获取地址
                person = new Person(id,name,age,phonenumber,gender,address);
                //装载集合
                link.add(person);
            }
//            System.out.print(link);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //6.释放资源
            JDBCTools.close(pstmt, conn);
        }
        return link;
    }

Operation包下
1.MainMenu类:

public class MainMenu {

    AddMenu addMenu = new AddMenu();                   //创建增加对象
    DeletMenu deletMenu = new DeletMenu();            //创建删除对象
    ModifyMenu modifyMenu = new ModifyMenu();         //创建修改对象
    FindMenu findMenu = new FindMenu();               //创建查找对象
    Viewall viewall = new Viewall();                  //创建查看对象
    Refreshdata refreshdata = new Refreshdata();      //创建刷新对象

    public void Main(){
        String choise;                                  //选择语句
        Scanner sc = new Scanner(System.in);           //键盘录入
        boolean flag = true;                          //循环的开关
        while(flag){
            InterFace.MainInterFace();                 //调用主界面
            System.out.print("请输入您的选择:");
            choise = sc.next();                        //从键盘中录入选项
            switch (choise){
                case "1":
                    addMenu.Add();                     //调用添加方法
                    break;
                case "2":
                    deletMenu.Delet();                 //调用删除方法
                    break;
                case "3":
                    modifyMenu.Modify();                //调用修改方法
                    break;
                case "4":
                    findMenu.Find();                     //调用修改操作
                    break;
                case "5":
                    viewall.ViewAll();                    //调用查看方法
                    break;
                case "6":
                    refreshdata.Refresh();                //调用数据库刷新方法
                    break;
                case "0":
                    flag = false;
                    break;
                default:
                    System.out.print("输入错误!!!");
                    System.out.print("\n");
                    break;
            }
        }
    }
}

2.InterFace类:

package Operation;


//界面类这是一个静态的类,为所有程序提供界面
public class InterFace {
    public static void MainInterFace(){
        System.out.print("****************主菜单****************\n");
        System.out.print("**************************************\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"1: 添加通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"2: 删除通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"3: 修改通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"4: 查找通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"5: 查看通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"6: 刷新数据  "+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"0: 退出      "+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("**************************************\n");
        System.out.print("****************主菜单****************\n");
    }
    //添加界面
    public static void AddInterFace(){
        System.out.print("****************添加界面**************\n");
        System.out.print("**************************************\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"1: 添加通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"2: 查看通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"0: 返回上一级"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("**************************************");
        System.out.print("\n");
        System.out.print("**************************************\n");
    }
    //删除界面
    public static void DelectInterFace(){
        System.out.print("****************删除界面**************\n");
        System.out.print("**************************************"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"1: 查看通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"2: 删除指定通讯录"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"3: 清空数据库"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"0: 返回上一级"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("**************************************"+"\n");
        System.out.print("**************************************"+"\n");
    }
    //修改界面
    public static void ModifyInterFace(){
        System.out.print("****************修改界面**************\n");
        System.out.print("**************************************"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"1: 查看通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"2: 修改姓名  "+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"3: 修改年龄  "+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"4: 修改号码  "+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"5: 修改地址  "+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"0: 返回上一级"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("**************************************"+"\n");
        System.out.print("**************************************"+"\n");
    }
    //查找界面
    public static void FindInterFace(){
        System.out.print("****************查找界面**************\n");
        System.out.print("**************************************"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"1: 查看通讯录"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"2: 按照姓名查找"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"3: 按照电话查找"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"4: 按照地址查找"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("--"+"\t"+"\t"+"\t"+"0: 返回上一级"+"\t"+"\t"+"\t"+"--"+"\n");
        System.out.print("**************************************"+"\n");
        System.out.print("**************************************"+"\n");
    }

}

添加类add:

public class AddMenu {
    //增加方法体
    public void Add(){
        String choise;                                     //选择语句
        Scanner sc = new Scanner(System.in);               //键盘录入
        Viewall vw = new Viewall();                        //创建查看类对象
        boolean flag = true;                              //循环的开关
        while(flag){
            InterFace.AddInterFace();                 //调用添加界面
            System.out.print("请输入您的选择:");
            choise = sc.next();                      //从键盘中录入选项
            switch (choise){
                case "1":                           //调用添加方法
                    this.AddBook();
                    break;
                case "2":                           //调用查看方法
                    vw.ViewAll();
                    break;
                case "0":
                    flag = false;
                    break;
                default:
                    System.out.print("输入错误!!!");
                    System.out.print("\n");
                    break;
            }
        }
    }
    //添加信息
    public void AddBook(){
        //1.获取连接
        Connection conn = null;
        PreparedStatement pstmt = null;
        JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource());
        Scanner sc = new Scanner(System.in);       //键盘录入
        try{
            conn = JDBCTools.getConnection();
            String name = null;
            String gender = null;
            int sex = 0;
            int age = 0;
            String tell = null;
            String address = null;
            boolean flag = true;                                //开关
            while(flag){
                List<Person> link = LinkMySQL.getINSTANCE().GetContainter();  //获取一个容器用于判断是否有重复元素
                switch (1){
                    case 1:
                        System.out.print("请输入您要添加的姓名:");
                        name = sc.next();                        //从键盘中获取名字
                        if (CheckOut.CheckoutName(name)){        //校检名字
                            System.out.print("格式正确!!");
                            System.out.print("\n");
                        }else{
                            System.out.print("格式错误请重新输入!!");
                            System.out.print("\n");
                            flag = false;
                            break;
                        }
                    case 2:
                        System.out.print("请输入性别:");
                        gender = sc.next();                      //从键盘中录入性别
                        sex = CheckOut.CheckoutGender(gender);
                        if(sex==-1){
                            System.out.print("性别输入格式错误,请重新输入!!");
                            System.out.print("\n");
                            flag = false;
                            break;
                        }else {
                            System.out.print("格式正确");
                        }
                    case 3:
                        System.out.print("请输入年龄:");
                        String uu = sc.next();
                        if (CheckOut.CheckoutaAge(uu)){
                            age = Integer.parseInt(uu);                      //从键盘中录入年龄
                            System.out.print("输入正确");
                            System.out.print("\n");
                        }else {
                            System.out.print("年龄输入错误");
                            System.out.print("\n");
                            flag = false;
                            break;
                        }
                    case 4:
                        System.out.print("请输入电话:");
                        tell = sc.next();                        //从键盘录入电话
                        if (CheckOut.CheckoutTell(tell)){
                            System.out.print("格式正确");
                            System.out.print("\n");
                        }else{
                            System.out.print("输入电话格式错误");
                            System.out.print("\n");
                            flag = false;
                            break;
                        }
                    case 5:                                       //怎么校检地址???
                        System.out.print("请输入地址:");
                        address = sc.next();                     //从键盘中录入地址
                    case 6:                                      //检查环节
                        String ab = "y";                               //判断是否录入
                        for(int i = 0;i < link.size();i++){
                            Person p = link.get(i);              //获取对象
                            if (p.getPhonenumber()!=null){
                                if(p.getPhonenumber().equals(tell)){
                                    System.out.print("有重复的号码存在!!!\n");
                                    System.out.print("是否覆盖信息? y:覆盖继续录入 n:结束录入 输入其他默认为n\n");
                                    System.out.print("请输入:");
                                    ab = sc.next();                              //从键盘录入选项
                                    if (ab.equals("y")){
                                        String sq = "DELETE FROM Person WHERE telephone = ?";
                                        template.update(sq,tell);              //将数据插入到数据库中
                                    }else{
                                        break;                                 //结束录入
                                    }
                                }
                            }
                        }
                        if (!ab.equals("y")){
                            break;
                        }
                    case 7:
                        //定义sql
                        String sql="INSERT INTO Person(NAME,gender,telephone,age,address) VALUES(?,?,?,?,?)";
                        template.update(sql,name,sex,tell,age,address);//将数据插入到数据库中
                        System.out.print("添加成功");
                        System.out.print("\n");
                    case 8:
                        System.out.print("是否继续添加信息?? "+"\t"+"是:y"+"\t"+"否:n"+"其他操作均为n");
                        System.out.print("\n");
                        System.out.print("请输入:");

                        String c = sc.next();                                //录入选项
                        if(c.equals("y")){
                            System.out.print("请继续输入");
                            System.out.print("\n");
                        }else{
                            System.out.print("添加结束\n");
                            flag = false;
                            break;
                        }
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

校检类CheckOut:

//校检类  -- 用于检查用户输入的信息是否符合规范
public class CheckOut {
        //校检名字
        public static Boolean CheckoutName(String name) {
            //姓名中可包含汉字和字母
            String RULE = "([\u4e00-\u9fa5]+|[a-zA-Z]+)";
            Pattern pattern = Pattern.compile(RULE);
            Matcher matcher = pattern.matcher(name);
            if (matcher.matches()) {
                //不包含特殊字符
                return true;
            } else {
                //包含了特殊字符
                return false;
            }
        }
        //校检年龄
        public static boolean CheckoutaAge(String age){
        if(age == null){ //验证是否为空
            return false;
        }
        return age.matches("\\d+"); //使用正则表达式判断该字符串是否为数字,第一个\是转义符,\d+表示匹配1个或 //多个连续数字,"+"和"*"类似,"*"表示0个或多个
      }

    //校检电话
        public static Boolean CheckoutTell(String tell){
            Scanner sc = new Scanner(System.in);                      //键盘录入
            String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8}$";   //正则表达式电话规则
            return tell.matches(regex);
        }
        //校检性别
        public static int CheckoutGender(String gender){
            if (gender.equals("男")){
                return 1;
            }else if(gender.equals("女")){
                return 2;
            }else {
                return -1;
            }
        }
}

删除类Delect:

//删除--菜单
public class DeletMenu {

    //删除方法体
    public void Delet(){
        String choise;                                     //选择语句
        Scanner sc = new Scanner(System.in);           //键盘录入
        int a = 0;
        Viewall vw = new Viewall();                    //创建查看类对象
        boolean flag = true;                          //循环的开关

        while (flag){
            InterFace.DelectInterFace();              //调用删除界面
            System.out.print("\n");
            System.out.print("请输入您的选择:");
            choise = sc.next();                     //从键盘中录入选项
            switch (choise){
                case "1":
                    vw.ViewAll();                      //调用查看方法并刷新数据库
                    break;
                case "2":
                    this.delect();
                    break;
                case "3":
                    this.delectall();
                    break;
                case "0":
                    flag = false;
                    break;
            }
        }
    }
    //删除指定数据库
    public void delect(){
        LinkMySQL linkMySQL = LinkMySQL.getINSTANCE();     //获取对象
        List<Person> list;
        Scanner input = new Scanner(System.in);
        Connection conn = null;                            //1.获取连接
        PreparedStatement pstmt = null;
        JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource());
        try{
            conn = JDBCTools.getConnection();
            System.out.print("请输入您要删除的电话号:");
            String tell = input.next();                      //从键盘录入电话号码

            list = linkMySQL.GetContainter();                //获取当前的存储信息
            for (int i = 0;i < list.size();i++){
                if (list.get(i).getPhonenumber().equals(tell)){
                    //定义sql
                    String sql = "DELETE FROM person WHERE telephone = ?";
                    template.update(sql,tell);//将数据插入到数据库中
                    System.out.print("数据删除成功!!");
                    System.out.print("\n");
                    return;
                }
            }
            System.out.print("没有该数据");
            System.out.print("\n");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    //清空数据库
    public void delectall(){
        Connection conn = null;                            //1.获取连接
        PreparedStatement pstmt = null;
        JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource());
        try{
            conn = JDBCTools.getConnection();
            //定义sql
            String sql = "TRUNCATE person";       //数据库清空并创建一个一模一样的新表
            template.update(sql);//将数据插入到数据库中
            System.out.print("数据库已经清空!!");
            System.out.print("\n");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

查找类FInd:

//查找菜单 --- 没啥技术含量的一个类
public class FindMenu {
    public void Find(){
        LinkMySQL linkMySQL = LinkMySQL.getINSTANCE();     //获取linkMySQL
        List<Person> list = linkMySQL.GetContainter();     //获取一个容器
        Viewall vw = new Viewall();                        //创建一个查看对象
        String choise;                                     //选择语句
        Scanner sc = new Scanner(System.in);               //键盘录入

        boolean flag = true;                               //循环的开关
        while (flag){
            InterFace.FindInterFace();                     //调用查找界面
            System.out.print("请输入您的选择:");
            choise = sc.next();                     //从键盘中录入选项
            switch (choise){
                case "1":
                    vw.ViewAll();                   //调用查找函数
                    break;
                case "2":
                    this.FindName(list);                //调用姓名查找方法
                    break;
                case "3":
                    this.FindTell(list);                //调用电话查找方法
                    break;
                case "4":
                    this.FindAdress(list);              //调用地址查找方法
                    break;
                case "0":                               //刷新数据库
                    flag = false;
                    break;
                 default:
                     System.out.print("输入错误!!请重新输入");
                     System.out.print("\n");
                     break;
            }
        }
    }
    //按照姓名查找
    public void FindName(List<Person> list){
        boolean flag = false;
        Scanner sc = new Scanner(System.in);               //键盘录入
        System.out.print("请输入姓名:");                   //判断
        String name =  sc.next();                          //从键盘中获取姓名
        for(int i = 0;i < list.size();i++){
            Person person = list.get(i);
            if(person.getName().equals(name)){
                System.out.print(person);
                System.out.print("\n");
                flag = true;
            }
        }
        if (flag){
            return;
        }
        System.out.print("抱歉没有信息!!");
        System.out.print("\n");
    }
    //查找电话
    public void FindTell(List<Person> list){
        Scanner sc = new Scanner(System.in);               //键盘录入
        System.out.print("请输入电话:");                   //判断
        String tell =  sc.next();                          //从键盘中获取姓名
        for(int i = 0;i < list.size();i++){
            Person person = list.get(i);
            if(person.getPhonenumber().equals(tell)){
                System.out.print(person);
                System.out.print("\n");
                return;
            }
        }
        System.out.print("抱歉没有信息!!");
        System.out.print("\n");
    }
    //查找地址
    public void FindAdress(List<Person> list){
        boolean flag = false;
        Scanner sc = new Scanner(System.in);               //键盘录入
        System.out.print("请输入地址:");                   //判断
        String address =  sc.next();                          //从键盘中获取姓名
        for(int i = 0;i< list.size();i++){
            Person person = list.get(i);
            if (address!=null&&person.getAddress()!=null) {
                if (person.getAddress().equals(address)) {
                    System.out.print(person);
                    System.out.print("\n");
                    flag = true;
                }
            }else {
                break;
            }
        }
        if (flag){
            return;
        }
        System.out.print("抱歉没有信息!!");
        System.out.print("\n");
    }
}

修改类Modify:

//修改菜单
public class ModifyMenu {
    LinkMySQL linkMySQL;
    List<Person> list;
    Viewall vw = new Viewall();                             //创建一个查看对象
    //修改方法体
    public void Modify(){
        String choise;                                       //选择语句
        Scanner sc = new Scanner(System.in);                //键盘录入
        linkMySQL = LinkMySQL.getINSTANCE();                //获取唯一数据库连接
        list = linkMySQL.GetContainter();                   //获取容器
        boolean flag = true;                                //循环的开关
        while (flag){
            InterFace.ModifyInterFace();                    //调用修改界面
            System.out.print("请输入您的选择:");
            choise = sc.next();                             //从键盘中录入选项
            switch (choise){
                case "1":
                    list = vw.ViewAll();                    //调用查看方法
                    break;
                case "2":
                    list = this.ModifyName(list);          //调用修改姓名方法
                    break;
                case "3":
                    list = this.ModifyAge(list);           //调用年龄
                    break;
                case "4":
                    this.ModifyTell(list);                  //调用修改电话操作
                    break;
                case "5":
                    this.ModifyAddress(list);               //调用修改地址操作
                    break;
                case "0":
                    flag = false;
                    break;
                default:                                   //如果输入错误执行此类
                    System.out.print("输入错误!!请重新输入");
                    System.out.print("\n");
                    break;
            }
        }

    }
    //修改姓名
    public List<Person> ModifyName(List<Person> list){
        Connection conn = null;
        Scanner in = new Scanner(System.in);                                //键盘录入出现重置

        PreparedStatement pstmt = null;
        JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource());  //获取连接
        try{
            conn = JDBCTools.getConnection();                               //获取连接

            String name = null;                                             //名字的缓存地址
            System.out.print("请输入要修改的姓名:");
            name = in.next();                                               //录入姓名
            for (int i = 0; i < list.size(); i++) {
                Person p = list.get(i);

                if(p.getName().equals(name)&&p.getName()!=null){            //判断数据库中是否包含对应的数据
                    System.out.print("请输入修改后的姓名:");
                    String nm = in.next();                                  //键盘录入修改后的姓名
                    if (!CheckOut.CheckoutName(nm)){                        //判断是否符合规范 不符合怎方法结束
                        System.out.print("姓名不符合规范!!!\n");
                        return list;
                    }
                    String sql="UPDATE Person SET NAME = ? WHERE NAME = ?";
                    template.update(sql,nm,name);                           //将数据插入到数据库中

                    System.out.print("姓名修改成功");
                    System.out.print("\n");

                    return LinkMySQL.getINSTANCE().GetContainter();         //为保证容器的随时刷新返回一个容器
                }else if(p.getName() == null){                              //如果数据库中的信息为空则直接结束循环
                    break;
                }
            }

            System.out.print("抱歉没有这个数据");
            System.out.print("\n");

        }catch (SQLException e) {
            e.printStackTrace();
        }
        return list;                                         //没有修改数据则返回之前的容器
    }
    //修改年龄
    public List<Person> ModifyAge(List<Person> list){
        Connection conn = null;
        PreparedStatement pstmt = null;
        JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource());
        try{
            Scanner in = new Scanner(System.in);                //键盘录入出现重置
            conn = JDBCTools.getConnection();                   //获取连接

            System.out.print("请输入姓名:");
            String name = in.next();                            //录入姓名
            for (int i = 0; i < list.size(); i++) {
                Person p = list.get(i);

                if(p.getName().equals(name)&&p.getName()!=null){  //判断数据库中是否有对应的值

                    System.out.print("请输入修改后的年龄:");
                    String uu = in.next();

                    if (!CheckOut.CheckoutaAge(uu)){             //判断age是否符合规范
                        System.out.print("年龄不符合规范!!!\n");
                        return list;
                    }
                    int age = Integer.parseInt(uu);                       //如果姓名信息存在则修改age
                    String sql="UPDATE Person SET age = ? WHERE NAME = ? ";
                    template.update(sql,age,name);                              //将数据插入到数据库中

                    System.out.print("年龄修改成功");
                    System.out.print("\n");
                    return LinkMySQL.getINSTANCE().GetContainter();             //为保证容器的随时刷新返回一个容器
                }else if (p.getName()==null){                                  //数据库为空结束循环
                    break;
                }
            }
            System.out.print("没有这个数据");
            System.out.print("\n");
        }catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }
    //修改电话
    public List<Person> ModifyTell(List<Person> list){
        JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource());
        Connection conn = null;
        PreparedStatement pstmt = null;
        try{
            Scanner in = new Scanner(System.in);                //键盘录入出现重置
            conn = JDBCTools.getConnection();                   //获取连接

            System.out.print("请输入要要修改谁的电话:");
            String name = in.next();                            //录入姓名
            for (int i = 0; i < list.size(); i++) {
                Person p = list.get(i);

                if(p.getName().equals(name)){                   //判断数据库中是否包含数据
                    System.out.print("请输入修改后的电话:");           //对修改的信息进行判断
                    String tell = new Scanner(System.in).next();      //如果姓名信息存在则录入电话

                    if (CheckOut.CheckoutTell(tell)){                   //判断录入的是否符合格式
                        String sql="UPDATE Person SET telephone = ? WHERE NAME = ? ";
                        template.update(sql,tell,name);                 //将数据插入到数据库中
                        System.out.print("电话修改成功");
                        System.out.print("\n");
                        list = LinkMySQL.getINSTANCE().GetContainter();//为保证容器的随时刷新返回一个容器
                        return list;
                    }else {
                        System.out.print("电话格式不符合规范!!!\n");
                        return list;
                    }
                }
            }
            System.out.print("没有这个数据");
            System.out.print("\n");
        }catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }
    //修改地址
    public List<Person> ModifyAddress(List<Person> link){
        JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource());
        Connection conn = null;
        PreparedStatement pstmt = null;
        try{
            Scanner in = new Scanner(System.in);                //键盘录入出现重置
            conn = JDBCTools.getConnection();                   //获取连接

            System.out.print("请输入要要修改谁的地址:");
            String name = in.next();                            //录入姓名
            for (int i = 0; i < link.size(); i++) {
                Person p = link.get(i);

                if(p.getName().equals(name)){
                    System.out.print("请输入修改后的地址:");     //对修改的信息进行判断
                    String address = in.next();                   //如果姓名信息存在则修改age
                    String sql="UPDATE Person SET address = ? WHERE NAME = ? ";
                    template.update(sql,address,name);          //将数据插入到数据库中
                    System.out.print("地址修改成功");
                    System.out.print("\n");
                    return LinkMySQL.getINSTANCE().GetContainter();//为保证容器的随时刷新返回一个容器
                }
            }
            System.out.print("没有这个数据");
            System.out.print("\n");
        }catch (SQLException e) {
            e.printStackTrace();
        }
        return link;
    }
}

对数据库进行刷新类:

public class Refreshdata {
    //让MySQL数据库自动刷新id的序号
    public void Refresh(){
        Connection conn = null;
        PreparedStatement pstmt = null;
        JdbcTemplate template = new JdbcTemplate(JDBCTools.getDataSource());  //获取连接
        try{
            conn = JDBCTools.getConnection();                               //获取连接

            String sql1="ALTER TABLE Person DROP id";                        //删除键值id
            String sql2="ALTER TABLE Person ADD id INT(3) NOT NULL FIRST";  //重新给id赋值为null
            String sql3="ALTER TABLE Person MODIFY COLUMN id INT( 3 ) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(id)"; //将id从1开始依次赋值

            template.update(sql1);                                      //将数据插入到数据库中
            template.update(sql2);                                      //将数据插入到数据库中
            template.update(sql3);                                      //将数据插入到数据库中

            System.out.print("数据库刷新成功");
            System.out.print("\n");

        }catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

查看类:

//用于查看数据操作
public class Viewall {
    LinkMySQL linkMySQL;
    List<Person> list ;
    public List<Person> ViewAll(){
        linkMySQL = LinkMySQL.getINSTANCE();      //获取连接对象
        list = linkMySQL.GetContainter();         //从数据库中获取一个随时刷新的容器
        for (int i = 0;i < list.size();i++){
           list.get(i).setId(i+1);                               //通过ID进行排序
            Person person = list.get(i);
            if (i == 0){
                System.out.print("\n");
            }
           System.out.print("--"+(i+1)+"#:\t"+person+"--");
           System.out.print("\n\n");
            if (i == (list.size()-1)){
                System.out.print("\n");
            }
        }
        return list;
    }

}

duird配置文件:

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/number?serverTimezone=Asia/Shanghai
username=root
password=12345qazwsx
#初始化连接数量
initialSize=5
#最大连接数
maxActive=10
#最大等待时间
maxWait=3000

数据库的创建

# 创建性别表
CREATE TABLE sex(
	id INT PRIMARY KEY AUTO_INCREMENT,
	gender VARCHAR(20)
);
INSERT INTO sex (gender) VALUES ('男'),('女');
# 创建联系人表
CREATE TABLE Person(
	id INT(3)UNSIGNED AUTO_INCREMENT PRIMARY KEY,-- Id号
	NAME VARCHAR(12),                 -- 姓名
	gender INT, 		          -- 性别
	telephone VARCHAR(11) NOT NULL UNIQUE, -- 电话
	age INT,                          -- 年龄
	address VARCHAR(20),              -- 地址
	FOREIGN KEY (gender) REFERENCES sex(id) -- 外键,关联部门表(部门表的主键)
);

INSERT INTO Person(NAME,gender,telephone,age,address) VALUES('帅',1,'15139389215',19,'深圳');
INSERT INTO Person(NAME,gender,telephone,age,address) VALUES('蛋',1,'15139989215',80,'郑州');
INSERT INTO Person(NAME,gender,telephone,age,address) VALUES('冉',2,'13939379621',19,'深圳');
INSERT INTO Person(NAME,gender,telephone,age,address) VALUES('玉',1,'18480415522',19,'南阳');
INSERT INTO Person(NAME,gender,telephone,age,address) VALUES('果',2,'45444334445',19,'黑土地');

SELECT * FROM Person;
SELECT * FROM sex;
SELECT * FROM sex,Person;
DELETE FROM Person WHERE telephone = '15139389215';

DELETE FROM person WHERE telephone = '15139389215';
TRUNCATE person;
UPDATE Person SET age = 15 WHERE NAME = '曹帅龙'; 

ALTER TABLE Person DROP id;
ALTER TABLE Person ADD id INT(3) NOT NULL FIRST;
ALTER TABLE Person MODIFY COLUMN id INT( 3 ) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(id);
SELECT * FROM category  ORDER BY id  ;


作者寄语:
jar包暂时无法上传。
如果有需要可以直接进行复制粘贴。
程序存在问题,时间效率不高,请大神给一些建议。如果有好的修改方案或者修改后的
成品,希望能发个作者一份 QQ:2902469114

相关标签: Java练习题