Java實現(xiàn)聯(lián)系人管理系統(tǒng)
基于Java的聯(lián)系人管理系統(tǒng),供大家參考,具體內(nèi)容如下
基于eclipse做的一個簡單的聯(lián)系人管理系統(tǒng)
對于聯(lián)系人姓名首字母進(jìn)行了一個排序,對于存入信息時手機(jī)號碼與電子郵箱做了一個判斷,只有在輸入正確格式的手機(jī)號和電子郵箱才能成功存入數(shù)據(jù)
聯(lián)系人基本屬性類
此類包含聯(lián)系人編號、姓名、手機(jī)號、QQ、電子郵箱等信息
/** 編號*/ private int sno; /** 姓名*/ private String name; /** 手機(jī)號*/ private String phone; /** QQ*/ private String qq; /** 電子郵箱*/ private String email;
快捷生成相應(yīng)的方法與構(gòu)造器
public User(int sno, String name, String phone, String qq, String email) { ?? ??? ?super(); ?? ??? ?this.sno = sno; ?? ??? ?this.name = name; ?? ??? ?this.phone = phone; ?? ??? ?this.qq = qq; ?? ??? ?this.email = email; ?? ?} ?? ?public int getSno() { ?? ??? ?return sno; ?? ?} ?? ?public void setSno(int sno) { ?? ??? ?this.sno = sno; ?? ?} ?? ?public String getName() { ?? ??? ?return name; ?? ?} ?? ?public void setName(String name) { ?? ??? ?this.name = name; ?? ?} ?? ?public String getQq() { ?? ??? ?return qq; ?? ?} ?? ?public void setQq(String qq) { ?? ??? ?this.qq = qq; ?? ?} ?? ?public String getEmail() { ?? ??? ?return email; ?? ?} ?? ?public void setEmail(String email) { ?? ??? ?this.email = email; ?? ?} ?? ?public String getPhone() { ?? ??? ?return phone; ?? ?} ?? ?public void setPhone(String phone) { ?? ??? ?this.phone = phone; ?? ?} ?? ?@Override ?? ?public String toString() { ?? ??? ?return sno + "\t" + name + "\t" + phone + "\t" + qq + "\t" + email; ?? ?}
由此完成聯(lián)系人屬性定義,再實現(xiàn)對聯(lián)系人進(jìn)行管理的功能
功能類
功能我在功能類與測試類中共同實現(xiàn),因在測試類中反復(fù)調(diào)用方法
首先定義一個ArrayList數(shù)組來對信息進(jìn)行存儲
static ArrayList<User> list = new ArrayList<>();
添加聯(lián)系人方法
/** 1-添加聯(lián)系人 */ public void add(User u) { ?? ??? ?list.add(u); }
聯(lián)系人查詢功能(根據(jù)不同信息進(jìn)行查詢:編號、姓名、手機(jī)號)
/** 2-聯(lián)系人查詢(根據(jù)編號查詢) */ public User findBySno(int sno) { ?? ??? ?User us = null; ?? ??? ?for (User u : list) { ?? ??? ??? ?if (u.getSno() == sno) { ?? ??? ??? ??? ?us = u; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ??? ?return us; ?? ?} ?? ?/** 3-聯(lián)系人查詢(根據(jù)姓名查詢) */ ?? ?public User findByName(String name) { ?? ??? ?User us = null; ?? ??? ?for (User u : list) { ?? ??? ??? ?if (u.getName().equals(name)) { ?? ??? ??? ??? ?us = u; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ??? ?return us; ?? ?} ?? ? ?? ?/** 4-聯(lián)系人查詢(根據(jù)手機(jī)號查詢) */ ?? ?public User findByPhone(String phone) { ?? ??? ?User us = null; ?? ??? ?for (User u : list) { ?? ??? ??? ?if (u.getPhone().equals(phone)) { ?? ??? ??? ??? ?us = u; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ??? ?return us; ?? ?}
聯(lián)系人列表
/** 5-聯(lián)系人列表 */ public ArrayList<User> findAll() { ?? ??? ?return list; }
刪除聯(lián)系人
/** 6-刪除聯(lián)系人 */ ?? ?public boolean delete(int sno) { ?? ??? ?User user = findBySno(sno); ?? ??? ?if (user != null) { ?? ??? ??? ?return list.remove(user); ?? ??? ?} ?? ??? ?return false; }
此類完成
測試實現(xiàn)類
此類調(diào)用功能類中方法實現(xiàn)功能的運(yùn)用
首先創(chuàng)建對象與控制臺輸入功能
private UserManage um = new UserManage(); private Scanner sc = new Scanner(System.in);
創(chuàng)建窗口指令界面提供用戶提示消息
/** 輸入窗口的指令界面 */ public void menu() { ?? ??? ?msg("==================================="); ?? ??? ?msg("======SOFTEEM聯(lián)系人管理系統(tǒng)============"); ?? ??? ?msg("======【1】聯(lián)系人添加=================="); ?? ??? ?msg("======【2】根據(jù)編號查看聯(lián)系人信息=========="); ?? ??? ?msg("======【3】根據(jù)姓名查看聯(lián)系人信息=========="); ?? ??? ?msg("======【4】根據(jù)手機(jī)號查看聯(lián)系人信息========="); ?? ??? ?msg("======【5】查看所有聯(lián)系人==============="); ?? ??? ?msg("======【6】根據(jù)標(biāo)號刪除聯(lián)系人============"); ?? ??? ?msg("======【0】退出系統(tǒng)==================="); ?? ??? ?msg("請輸入操作指令: "); ?? ??? ?start(); ?? ?}
按照提示消息來使用功能,在此方法中調(diào)用各個功能
/** 程序按鍵入口 */ private void start() { ?? ??? ?sc = new Scanner(System.in); ?? ??? ?int i = sc.nextInt(); ?? ??? ?switch (i) { ?? ??? ?case 1: ?? ??? ??? ?add(); ?? ??? ??? ?break; ?? ??? ?case 2: ?? ??? ??? ?queryById(); ?? ??? ??? ?break; ?? ??? ?case 3: ?? ??? ??? ?queryByname(); ?? ??? ??? ?break; ?? ??? ?case 4: ?? ??? ??? ?queryByPhone(); ?? ??? ??? ?break; ?? ??? ?case 5: ?? ??? ??? ?list(); ?? ??? ??? ?break; ?? ??? ?case 6: ?? ??? ??? ?delete(); ?? ??? ??? ?break; ?? ??? ?case 0: ?? ??? ??? ?exit(); ?? ??? ??? ?break; ?? ??? ?default: ?? ??? ??? ?msg("請輸入正確的操作指令!!!"); ?? ??? ??? ?break; ?? ??? ?} ?? ??? ?menu(); ?? ?}
聯(lián)系人的增刪改查功能,另外添加了對聯(lián)系人姓名首字母進(jìn)行排序的功能
/** 1-用戶添加的客戶端實現(xiàn) */ private void add() { ?? ??? ?String regex = "^1[13456789]\\d{9}$"; ?? ??? ?String email="\\w+@\\w+\\.\\w+"; ?? ??? ?msg("請輸入用戶信息:((按以下格式:編號/姓名/手機(jī)號/QQ/郵箱))"); ?? ??? ?sc = new Scanner(System.in); ?? ??? ?String s = sc.nextLine(); ?? ??? ?// 根據(jù)"/"截取用戶信息 ?? ??? ?String[] info = s.split("/"); ?? ??? ?if (um.findBySno(Integer.parseInt(info[0])) != null) { ?? ??? ??? ?msg("該ID用戶已存在,請重新輸入!"); ?? ??? ??? ?add(); ?? ??? ??? ?return; ?? ??? ?} else { ?? ??? ??? ?User u = new User(Integer.parseInt(info[0]), info[1], info[2], info[3], info[4]); ?? ??? ??? ?if (info[2].matches(regex)) { ?? ??? ??? ??? ? ?? ??? ??? ?}else{ ?? ??? ??? ??? ?msg("格式錯誤,請輸入正確的手機(jī)號!"); ?? ??? ??? ??? ?add(); ?? ??? ??? ?} ?? ??? ??? ?if (info[4].matches(email)) { ?? ??? ??? ??? ? ?? ??? ??? ?}else{ ?? ??? ??? ??? ?msg("格式錯誤,請輸入正確的郵箱!"); ?? ??? ??? ??? ?add(); ?? ??? ??? ?} ?? ??? ??? ?um.add(u); ?? ??? ??? ?msg("添加成功!");?? ? ?? ??? ?} ?? ?} ?? ?/** 2-根據(jù)編號查詢聯(lián)系人 */ ?? ?private void queryById() { ?? ??? ?sc = new Scanner(System.in); ?? ??? ?msg("請輸入聯(lián)系人編號:"); ?? ??? ?int sno = sc.nextInt(); ?? ??? ?User u = um.findBySno(sno); ?? ??? ?if (u == null) { ?? ??? ??? ?msg(sno + "號不存在,請重新輸入!"); ?? ??? ??? ?queryById(); ?? ??? ??? ?return; ?? ??? ?} ?? ??? ?msg("編號\t姓名\t手機(jī)號\t\tQQ\t\t郵箱"); ?? ??? ?msg(u); ?? ?} ?? ?/** 3-根據(jù)姓名查詢聯(lián)系人 */ ?? ?private void queryByname() { ?? ??? ?sc = new Scanner(System.in); ?? ??? ?msg("請輸入聯(lián)系人姓名:"); ?? ??? ?String name = sc.next(); ?? ??? ?User u = um.findByName(name); ?? ??? ?if (u == null) { ?? ??? ??? ?msg(name + "不存在,請重新輸入"); ?? ??? ??? ?queryByname(); ?? ??? ??? ?return; ?? ??? ?} ?? ??? ?msg("編號\t姓名\t手機(jī)號\t\tQQ\t\t郵箱"); ?? ??? ?msg(u); ?? ?} ?? ? ?? ?/** 4-根據(jù)手機(jī)號查詢聯(lián)系人*/ ?? ?private void queryByPhone() { ?? ??? ?sc = new Scanner(System.in); ?? ??? ?msg("請輸入聯(lián)系人手機(jī)號:"); ?? ??? ?String phone = sc.next(); ?? ??? ?User u = um.findByPhone(phone); ?? ??? ?if (u == null) { ?? ??? ??? ?msg(phone + "不存在,請重新輸入"); ?? ??? ??? ?queryByPhone(); ?? ??? ??? ?return; ?? ??? ?} ?? ??? ?msg("編號\t姓名\t手機(jī)號\t\tQQ\t\t郵箱"); ?? ??? ?msg(u); ?? ?} ?? ?/** 5-顯示所有聯(lián)系人(按名字首拼音排序) */ ?? ?private void list() { ?? ??? ?(um.findAll()).sort((a, b) -> { ?? ??? ??? ?//分別獲取要比較的兩個聯(lián)系人的的姓名 ?? ??? ??? ?String name1 = a.getName(); ?? ??? ??? ?String name2 = b.getName(); ?? ??? ??? ?//聲明變量存儲轉(zhuǎn)換之后的漢語拼音 ?? ??? ??? ?String p1 = ""; ?? ??? ??? ?String p2 = ""; ?? ??? ??? ?//將漢字轉(zhuǎn)拼音 ?? ??? ??? ?for (int i = 0; i < name1.length(); i++) { ?? ??? ??? ??? ?p1 += PinyinHelper.toHanyuPinyinStringArray(name1.charAt(i))[0]; ?? ??? ??? ?} ?? ??? ??? ?for (int i = 0; i < name2.length(); i++) { ?? ??? ??? ??? ?p2 += PinyinHelper.toHanyuPinyinStringArray(name2.charAt(i))[0]; ?? ??? ??? ?} ?? ??? ??? ? ?? ??? ??? ?return p1.compareTo(p2); ?? ??? ?}); ?? ??? ? ?? ??? ?msg("編號\t姓名\t手機(jī)號\t\tQQ\t\t郵箱"); ?? ??? ?for (User u : um.findAll()) { ?? ??? ??? ?msg(u); ?? ??? ?} ?? ?} ?? ?/** 6-根據(jù)編號刪除聯(lián)系人 */ ?? ?private void delete() { ?? ??? ?sc = new Scanner(System.in); ?? ??? ?msg("請輸入用戶編號:"); ?? ??? ?int sno = sc.nextInt(); ?? ??? ?if (um.delete(sno)) { ?? ??? ??? ?msg("刪除成功!"); ?? ??? ?} else { ?? ??? ??? ?msg("刪除失敗!"); ?? ??? ?} ?? ?} ?? ??? ?public void msg(Object obj) { ?? ??? ?System.out.println(obj); ?? ?}
程序的退出功能
/** 0-體統(tǒng)退出 */ private void exit() { ?? ??? ?sc = new Scanner(System.in); ?? ??? ?msg("是否確定退出?(Y/N)"); ?? ??? ?String op = sc.next(); ?? ??? ?if (op.equalsIgnoreCase("Y")) { ?? ??? ??? ?msg("謝謝使用,再見!"); ?? ??? ??? ?System.exit(1); ?? ??? ?} ?? ?}
聯(lián)系人管理系統(tǒng)的程序入口
public static void main(String[] args) { ?? ??? ?TestUser tu = new TestUser(); ?? ??? ?tu.menu(); ?? ?}
功能實現(xiàn)里沒有什么技術(shù)難點(diǎn),只要細(xì)心一點(diǎn)將對象方法調(diào)用和一些簡單的判斷語句使用靈活就能輕松的完成此系統(tǒng)。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
如何用Netty實現(xiàn)高效的HTTP服務(wù)器
這篇文章主要介紹了如何用Netty實現(xiàn)高效的HTTP服務(wù)器,對HTTP感興趣的同學(xué)可以參考一下2021-04-04Java中ArrayList和LinkedList的區(qū)別
ArrayList和LinkedList在這個方法上存在一定的性能差異,本文就介紹了Java中ArrayList和LinkedList的區(qū)別,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06spring cloud實現(xiàn)前端跨域問題的解決方案
這篇文章主要介紹了 spring cloud實現(xiàn)前端跨域問題的解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01java如何實現(xiàn)項目啟動時執(zhí)行指定方法
這篇文章主要為大家詳細(xì)介紹了java項目如何啟動時執(zhí)行指定方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07詳解Http請求中Content-Type講解以及在Spring MVC中的應(yīng)用
這篇文章主要介紹了Http請求中Content-Type講解以及在Spring MVC中的應(yīng)用的相關(guān)資料,需要的朋友可以參考下2017-02-02