電話薄程序java程序實現

實驗項目名稱電話薄程序

使用了數據庫+JDBC+面向對象知識,主要分爲五個功能頁面,分別爲添加記錄、查找記錄、修改記錄、刪除記錄和排序記錄
實現這五個功能模塊共創建了六個類:
1.App.java 程序的主類
2.Meau.java 菜單類或窗口類
3.Operate.java 功能實現類
4. Person.java 定義屬性和方法
5. TelNotRegex.java 用戶輸入驗證類
6. Package.java
在這裏插入圖片描述
運行後的信息:
在這裏插入圖片描述
數據庫建table表:

CREATE TABLE telephone(

id INT PRIMARY KEY AUTO_INCREMENT,

NAME VARCHAR(32),
age INT,
sex VARCHAR(32),
telNum VARCHAR(32),
address VARCHAR(32)
);

SELECT *FROM telephone

具體代碼實現部分:
App.java 程序的主類

package cn.itcast.datasource.Telephone;

import cn.itcast.datasource.JDBCUtils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;

public class App {
    public static void main(String[] args) {
        /*獲取連接池方法*/
        JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
        Menu m = new Menu();
        m.mainMenu();
    }
}

Meau.java 菜單類或窗口類

import cn.itcast.datasource.JDBCUtils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.Scanner;

public class Menu {
    static Operate o = new Operate();
    Scanner sc = new Scanner(System.in);
    /*獲取連接池方法*/
    JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    public void mainMenu() {

        System.out.println("**************電話薄系統**************");
        System.out.println("**************************************");
        System.out.println("**            1 添加記錄            **");
        System.out.println("**            2 查找記錄            **");
        System.out.println("**            3 修改記錄            **");
        System.out.println("**            4 刪除記錄            **");
        System.out.println("**            5 排序記錄            **");
        System.out.println("**            6 退出記錄            **");
        System.out.println("**************************************");
        System.out.println("請輸入正確的數字,最小是:1  最大是:6");
        int select = sc.nextInt();

        switch (select) {
            case 1:
               addMenu ();     //添加用戶菜單
                break;
            case 2:
                searchMenu (); //查找用戶菜單
                break;
            case 3:
                modifyMenu (); //修改用戶信息主菜單
                break;
            case 4:
                deleteMenu ();// 刪除用戶信息菜單
                break;
            case 5:
                 orderMenu (); //排序用戶信息菜單
                break;
            case 6: {
                //一旦退出系統自動清空所有的訂單信息
                String sql = "TRUNCATE TABLE telephone";
                template.update(sql);
                System.out.println("歡迎下次使用😀😀😀");
                System.exit(0);//退出
            }
        }
    }
    public void addMenu (){
        System.out.println("****************添加記錄**************");
        System.out.println("**************************************");
        System.out.println("**            1 添加新記錄          **");
        System.out.println("**            2 查找全記錄          **");
        System.out.println("**            3 返回上一級          **");
        System.out.println("**************************************");
        System.out.println("請輸入正確的數字,最小是:1  最大是:3");
        o.addLogic();
    }
    public void searchMenu (){
        o.empty();
        //    searchLogic() 用戶查詢信息業務邏輯控制
        System.out.println("****************查找記錄**************");
        System.out.println("**************************************");
        System.out.println("**            1 按姓名查找          **");
        System.out.println("**            2 按年齡查找          **");
        System.out.println("**            3 按性別查找          **");
        System.out.println("**            4 按號碼查找          **");
        System.out.println("**            5 按住址查找          **");
        System.out.println("**            6 查看全記錄          **");
        System.out.println("**            7 返回上一級          **");
        System.out.println("**************************************");
        System.out.println("請輸入正確的數字,最小是:1  最大是:7");
        o.searchLogic();
    }
    //        modifyMenu () 修改用戶信息主菜單
    public void modifyMenu (){
        o.empty();
        System.out.println("****************修改記錄**************");
        System.out.println("**************************************");
        System.out.println("**            1 查看全記錄          **");
        System.out.println("**            2 修改指定記錄        **");
        System.out.println("**            3 返回上一級          **");
        System.out.println("**************************************");
        System.out.println("請輸入正確的數字,最小是:1  最大是:3");
        o.modifyLogicLogic();
    }
    public void modify(){
        System.out.println("****************修改記錄**************");
        System.out.println("**************************************");
        System.out.println("**            1 修改姓名            **");
        System.out.println("**            2 修改年齡            **");
        System.out.println("**            3 修改性別            **");
        System.out.println("**            4 修改號碼            **");
        System.out.println("**            5 修改住址            **");
        System.out.println("**            6 返回上一級          **");
        System.out.println("**************************************");
        System.out.println("請輸入正確的數字,最小是:1  最大是:6");
    }
    //    deleteLogic() 刪除信息業務邏輯控制
    public void deleteMenu (){
        o.empty();
        System.out.println("****************刪除記錄**************");
        System.out.println("**************************************");
        System.out.println("**          1 查看全記錄            **");
        System.out.println("**          2 刪除指定記錄          **");
        System.out.println("**          3 刪除全部記錄          **");
        System.out.println("**          4 返回上一級            **");
        System.out.println("**************************************");
        System.out.println("請輸入正確的數字,最小是:1  最大是:4");
        o.deleteLogic();
    }
    //排序用戶信息菜單
    public void orderMenu (){
        o.empty();
        System.out.println("****************排序記錄**************");
        System.out.println("**************************************");
        System.out.println("**            1 按姓名排序          **");
        System.out.println("**            2 按年齡排序          **");
        System.out.println("**            3 按性別排序          **");
        System.out.println("**            4 查看全記錄          **");
        System.out.println("**            5 返回上一級          **");
        System.out.println("**************************************");
        System.out.println("請輸入正確的數字,最小是:1  最大是:5");
        o.orderLogic();
    }
}

Operate.java 功能實現類

import cn.itcast.datasource.JDBCUtils.JDBCUtils;

import org.springframework.jdbc.core.JdbcTemplate;


import java.util.List;
import java.util.Map;
import java.util.Scanner;

public class Operate {
    /*獲取連接池方法*/
    JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    static Menu m = new Menu();
    TelNoteRegex tel = new TelNoteRegex();
    Scanner sc = new Scanner(System.in);
    Package pk =new Package();
    int count = 100;//電話薄的內存
    int s;//定義全局變量s
    int choice;
    Long tot;
    //用戶信息爲空的時候,輸出提示信息
    public void empty(){
        tot = pk.total();
        if(tot==0){
            System.out.println("對不起,還未存儲,請存儲後操作!!!");
            m.mainMenu();
        }
    }
    //查找是判斷用戶是否存在
    public void judge(List list){
        if(list != null && !list.isEmpty()){
            System.out.println(list);
        }else{
            System.out.println("查找的用戶不存在,請覈對後查找!");
        }
    }
    // ddLogic() 用戶添加信息業務邏輯控制
    public void addLogic() {
        int select = sc.nextInt();
      select= tel.selectRegex(select);
        switch (select) {
            case 1:
                addOperation();//添加新記錄
                m.mainMenu();
            case 2:
                showAll();//查看全記錄
                m.mainMenu();
            case 3:
                m.mainMenu();//返回上級菜單
                break;
        }
    }
    //更新表中的數據
    public void addOperation() {
        for (int j = s; j <= count; j++) {//限定數據庫表長
            ++s;
            if (s <= count) {  //添加電話薄信息
                //添加一條記錄,爲每一個電話薄的電話號碼初始置爲123456
                String sql = "insert into telephone(telNum )values (?)";
                template.update(sql, "123456");
                System.out.println("s的值"+s);
                System.out.println("輸入姓名,1-10位字母");
                String name = sc.next();
               tel.nameRegex(name);
                //判斷用戶名是否已存在
                String sql9= "select *from telephone where name = ?";
                List<Map<String, Object>> list1 = template.queryForList(sql9, name);
                if(list1 != null && !list1.isEmpty()){
                    System.out.println("用戶名已存在,請覈對後重新輸入!");
                    //刪除當前添加的空白行
                    String sql10 ="delete from telephone where id = ?";
//                    System.out.println("未減之前的"+s);
                    template.update(sql10,s);
                    s--;
//                    System.out.println("減完之後的"+s);
                    m.addMenu();
                }else{
                    tel.nameRegex(name);
                }
                //對數據庫內容重新排序
                pk.update();
                //更新表中的數據
                String sql1 = "update telephone set name = ? where id = ?";
                template.update(sql1, name, s);
                System.out.println("輸入年齡,1-100歲");
                int age = sc.nextInt();
                tel.ageRegex(age);
                String sql2 = "update telephone set age = ? where id = ?";
                template.update(sql2, age, s);
                System.out.println("輸入性別,(男 m or M) (女 f or F)");
                String sex = sc.next();
                tel.sexRegex(sex);
                String sql3 = "update telephone set sex = ? where id = ?";
                template.update(sql3, sex, s);
                System.out.println("輸入電話號碼,6-10位字母");
                String telNum = sc.next();
                tel.telNumRegex(telNum);
                String sql4 = "update telephone set telNum = ? where id = ?";
                template.update(sql4, telNum, s);
                System.out.println("輸入地址,1-20位字母或數字");
                String address = sc.next();
                tel.addressRegex(address);
                System.out.println(address);
                String sql5 = "update telephone set address = ? where id = ?";
                template.update(sql5, address, s);
                System.out.println("添加成功!");
                break;
            } else {
                System.out.println("對不起,電話薄內存已滿!");
                break;
            }
        }
    }
    public void showAll() {
        //遍歷telephone表
        String sql = "select * from telephone";
        List<Map<String, Object>> list = template.queryForList(sql);
        for (Map<String, Object> stringObjectMap : list) {
            System.out.println(stringObjectMap);
        }
    }
    //    searchLogic() 用戶查詢信息業務邏輯控制
    public void searchLogic(){
        int select = sc.nextInt();
        select= tel.selectRegex(select);
        switch (select){
            case 1:
                searchByName();//按姓名查詢用戶信息
                m.mainMenu();
            case 2:
                searchByAge();//按年齡查詢用戶信息
                m.mainMenu();
            case 3:
                searchBySex();// 按性別查詢用戶信息
                m.mainMenu();
            case 4:
                searchByTelNum();// 按電話號碼查詢用戶信息
                m.mainMenu();
            case 5:
                searchByAdd();// 按地址查詢用戶信息
                m.mainMenu();
            case 6:
                showAll();// 查詢全部用戶信息
                m.mainMenu();
            case 7:
                m.mainMenu();//返回上級菜單
                break;
        }
    }
    public void searchByName(){
        System.out.println("輸入姓名,1-10位字母");
        String name = sc.next();
        tel.nameRegex(name);
        String sql = "select *from telephone where name = ?";
        List<Map<String, Object>> list = template.queryForList(sql, name);
        judge(list);
    }
    public void searchByAge(){
        System.out.println("輸入年齡,1-100歲");
        int age = sc.nextInt();
        tel.ageRegex(age);
        String sql = "select *from telephone where age = ?";
        List<Map<String, Object>> list = template.queryForList(sql, age);
        judge(list);
    }
    public void searchBySex(){
        System.out.println("輸入性別,(男 m or M) (女 f or F)");
        String sex = sc.next();
        tel.sexRegex(sex);
        String sql = "select *from telephone where sex = ?";
        List<Map<String, Object>> list = template.queryForList(sql, sex);
        judge(list);
    }
    public void searchByTelNum(){
        System.out.println("輸入電話號碼,6-10位字母");
        String telNum = sc.next();
        tel.telNumRegex(telNum);
        String sql = "select *from telephone where telNum = ?";
        List<Map<String, Object>> list = template.queryForList(sql, telNum);
        judge(list);
    }
    public void searchByAdd(){
        System.out.println("輸入地址,1-20位字母或數字");
        String address = sc.next();
        tel.addressRegex(address);
        String sql = "select *from telephone where address = ?";
        List<Map<String, Object>> list = template.queryForList(sql, address);
        judge(list);
    }
    //    modifyLogicLogic() 修改信息業務邏輯控制
    public void modifyLogicLogic(){
        int select = sc.nextInt();
        select= tel.selectRegex(select);
        switch (select){
            case 1:
                showAll();//查看全記錄
                m.mainMenu();
            case 2:
                modify();// 修改指定用戶信息
                m.mainMenu();
            case 3:
                m.mainMenu();//返回上級菜單
        }
    }
    public void modify(){
        System.out.println("請輸入記錄序號:");
        System.out.println("請輸入正確的數字:最小是 1  最大是 "+tot);
        choice=sc.nextInt();
        m.modify();
        int select = sc.nextInt();
        select= tel.selectRegex(select);
        switch (select){
            case 1:
                modifyByName();// 按姓名
                m.modifyMenu();
            case 2:
                modifyByAge();// 按年齡
                m.modifyMenu();
            case 3:
                modifyBySex();// 按性別
                m.modifyMenu();
            case 4:
                modifyByTelNum();// 按電話號碼
                m.modifyMenu();
            case 5:
                modifyByAdd();// 按地址
                m.modifyMenu();
            case 6:
                m.modifyMenu();//返回上級菜單
                break;
        }
    }
    public void  modifyByName(){
        String sql = "update telephone set name = ? where id = ?";
        System.out.println("輸入姓名,1-10位字母");
        String name = sc.next();
        tel.nameRegex(name);
        template.update(sql,name,choice);
        System.out.println("姓名,修改成功!");
    }
    public void modifyByAge(){
        String sql = "update telephone set age = ? where id = ?";
        System.out.println("輸入年齡,1-100歲");
        int age = sc.nextInt();
        tel.ageRegex(age);
        template.update(sql,age,choice);
        System.out.println("年齡,修改成功!");
    }
    public void modifyBySex(){
        String sql = "update telephone set sex = ? where id = ?";
        System.out.println("輸入性別,(男 m or M) (女 f or F)");
        String sex = sc.next();
        tel.sexRegex(sex);
        template.update(sql,sex,choice);
        System.out.println("性別,修改成功!");
    }
    public void modifyByTelNum(){
        String sql = "update telephone set telNum = ? where id = ?";
        System.out.println("輸入電話號碼,6-10位字母");
        String telNum = sc.next();
        tel.telNumRegex(telNum);
        template.update(sql,telNum,choice);
        System.out.println("電話號碼,修改成功!");
    }
    public void modifyByAdd(){
        String sql = "update telephone set address = ? where id = ?";
        System.out.println("輸入地址,1-20位字母或數字");
        String address = sc.next();
        tel.addressRegex(address);
        template.update(sql,address,choice);
        System.out.println("地址,修改成功!");
    }
    public void deleteLogic(){
        int select = sc.nextInt();
        select= tel.selectRegex(select);
        switch (select){
            case 1:
                showAll();//查看全記錄
                m.deleteMenu();
            case 2:
                delete();// 刪除指定用戶信息
                m.deleteMenu();
            case 3:
                deleteAll();// 刪除全部用戶信息
                m.deleteMenu();
            case 4:
                m.mainMenu();//返回上級菜單
                break;
        }
    }
    public void delete(){
        System.out.println("請輸入正確的數字:最小是 1  最大是 "+tot);
        System.out.println("請輸入記錄序號:");

        int select = sc.nextInt();
        String sql = "delete from telephone where id = ?";
         template.update(sql,select);
        System.out.println("刪除成功,請繼續操作!");
        //對數據庫內容重新排序
        pk.update();
    }
    public void deleteAll(){
        String sql = "TRUNCATE TABLE telephone";
        template.update(sql);
        System.out.println("電話薄內容已清空,請繼續操作!");
        m.mainMenu();
    }
    //    orderLogic() 排序信息業務邏輯控制
    public void orderLogic(){

        int select = sc.nextInt();
        select= tel.selectRegex(select);
        switch (select){
            case 1:
                orderName();//按姓名排序用戶信息
                m.orderMenu();
            case 2:
                orderAge();//按年齡排序用戶信息
                m.orderMenu();
            case 3:
                orderSex();// 按性別排序用戶信息
                m.orderMenu();
            case 4:
                showAll();
            case 5:
                m.mainMenu();//返回上級菜單
                break;
        }
    }
    public void orderName(){
        System.out.println("按姓名排序後的結果:");
        String sql ="SELECT * FROM telephone ORDER BY name asc";
        List<Map<String,Object>> list = template.queryForList(sql);
        for (Map<String,Object>stringObjectMap:list){
            System.out.println(stringObjectMap);
        }
    }
    public void orderAge(){
        System.out.println("按年齡排序後的結果:");
        String sql ="SELECT * FROM telephone ORDER BY age DESC";
        List<Map<String,Object>> list = template.queryForList(sql);
        for (Map<String,Object>stringObjectMap:list){
            System.out.println(stringObjectMap);
        }
    }
    public void orderSex(){
        System.out.println("按性別排序後的結果:");
        String sql ="SELECT * FROM telephone ORDER BY sex asc";
        List<Map<String,Object>> list = template.queryForList(sql);
        for (Map<String,Object>stringObjectMap:list){
            System.out.println(stringObjectMap);
        }
    }
}


Person.java 定義屬性和方法

public class Person {
    private int id; //用戶ID 屬性
    private String name;// 用戶姓名屬性
    private int age;// 用戶年齡屬性
    private String sex; //用戶性別屬性
    private String telNum;// 用戶電話號碼屬性
    private String address; //用戶地址屬性

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", sex='" + sex + '\'' +
                ", telNum='" + telNum + '\'' +
                ", address='" + address + '\'' +
                '}';
    }

    public Person() {
    }

    public Person(int id, String name, int age, String sex, String telNum, String address) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.telNum = telNum;
        this.address = address;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getTelNum() {
        return telNum;
    }

    public void setTelNum(String telNum) {
        this.telNum = telNum;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

TelNotRegex.java 用戶輸入驗證類

import cn.itcast.datasource.JDBCUtils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.Scanner;

public class TelNoteRegex {
    /*獲取連接池方法*/
    static JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
  static   Scanner sc = new Scanner(System.in);
  static Operate o =new Operate();
  static  Package pk = new Package();

    public  static int selectRegex(int select){
        while (true){
            if (select<0||select>10){
                System.out.println("您的輸入操作不正確!請重新輸入");
                select=sc.nextInt();
                selectRegex(select);
            }else {
                break;
            }
        }
        return select;
    }
    public static String nameRegex(String name){
        while (true){
            if(name.length()<1||name.length()>10){
                System.out.println("您的輸入操作不正確!請重新輸入");
                 name = sc.next();
            }else {
                break;
            }
        }
        return name;
    }
    public  static int ageRegex(int age){
        while (true){
            if (age<1||age>138){
                System.out.println("您的輸入操作不正確!請重新輸入");
                age=sc.nextInt();
                ageRegex(age);
            }else {
                break;
            }
        }
        return age;
    }
    public static String sexRegex(String sex){
        while (true){
            String str = "m";
            if(!(sex.equals("m") || sex.equals("M") || sex.equals("f") || sex.equals("F"))) {
                System.out.println("您的輸入操作不正確!請重新輸入");
                sex = sc.next();
                sexRegex(sex);
            }else {
                break;
            }
        }
        return sex;
    }
    public static String telNumRegex(String telNum){
      boolean a = false,b;
      char[]ch=telNum.toCharArray();
        for (int i = 0; i <ch.length ; i++) {
            if (ch[i]>='1'&&ch[i]<='9'){
                a=true;
            }else {
                a=false;
            }
        }
            if(telNum.length()<=11||telNum.length()>=6){
                b=true;
            }else {
                b=false;
            }
            if(!a&&b){
                System.out.println("您的輸入操作不正確!請重新輸入");
                telNum=sc.next();
                telNum=telNumRegex(telNum);
            }
        return telNum;
    }
    public static String addressRegex(String address){
        while (true){
            int len = address.length();
            if (len>20||len<1){
                System.out.println("您的輸入操作不正確!請重新輸入");
                address=sc.next();
                address=addressRegex(address);
            }else {
                break;
            }
        }
        return address;
    }
}

Package.java

import cn.itcast.datasource.JDBCUtils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;


public class Package {
    JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource()); /*獲取連接池方法*/

    public Long total(){
        //查詢telephone表的總記錄數
        String sql= "select count(Id) from telephone";
        Long total = template.queryForObject(sql,Long.class);
        return total;
    }
    //對數據庫內容按id值重新排序
    public void update()  {
        String sql1="ALTER TABLE telephone DROP id";
        String sql2="ALTER TABLE telephone ADD id INT(3) NOT NULL FIRST";
        String sql3="ALTER TABLE telephone MODIFY COLUMN id INT( 3 ) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(id)";
        template.update(sql1);
        template.update(sql2);
        template.update(sql3);
    }
}

如需源碼請訪問百度網盤鏈接:

https://pan.baidu.com/s/1Xs3vpKn2zTNX6ZlAih0UVQ
提取碼:81kw

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章