java實(shí)現(xiàn)通訊錄管理系統(tǒng)
本文實(shí)例為大家分享了java實(shí)現(xiàn)通訊錄管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
完成項(xiàng)目的流程:
1.根據(jù)需求,確定大體方向
2.功能模塊分析
3.界面實(shí)現(xiàn)
4.功能模塊設(shè)計(jì)
5.coding
6.代碼測(cè)試
下面是源代碼:
import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Scanner; import java.util.concurrent.SynchronousQueue; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.WindowConstants; import javax.swing.text.html.HTMLDocument.Iterator; class Infro{ public String id; public String name; public String sex; public String address; public String e_mail; public String phoneNumber; static int index = 0; static ArrayList<Infro> list = new ArrayList(); static int len = list.size(); //構(gòu)造函數(shù) public Infro(String id,String name,String sex,String address,String e_mail,String phoneNumber){ this.id = id; this.name = name; this.sex = sex; this.address = address; this.e_mail = e_mail; this.phoneNumber = phoneNumber; } public String toString(){ return "編號(hào):"+id+" 姓名:"+name+" 性別:"+sex+" 通訊地址:"+address+" 郵箱地址:"+e_mail+" 電話(huà):"+phoneNumber; } /** * 添加功能 **/ public static void addFunction(){//添加功能 Infro infro = new Infro("","","","","",""); System.out.println("請(qǐng)輸入添加的數(shù)據(jù):"); Scanner in = new Scanner(System.in); System.out.println("輸入編號(hào):"); infro.id = in.next(); System.out.println("輸入姓名:"); infro.name = in.next(); System.out.println("輸入性別:"); infro.sex = in.next(); System.out.println("輸入通訊地址:"); infro.address = in.next(); System. out.println("輸入郵箱地址:"); infro.e_mail = in.next(); System.out.println("輸入電話(huà):"); infro.phoneNumber = in.next(); list.add(index,infro); index++; if(list.isEmpty()){ System.out.println("數(shù)據(jù)添加失敗啦"); }else{ System.out.println("數(shù)據(jù)添加成功啦"); len++;//list集合長(zhǎng)度加一 // System.out.println(list.get(0).toString()); } } // public static void deleteFunction(){//刪除功能 // System.out.println("輸入要?jiǎng)h除的聯(lián)系人的編號(hào)"); // Scanner in_2 = new Scanner(System.in); // String d1 = in_2.nextLine(); // for(int a= 0; a<len;a++){ // if(d1.equals(list.get(a).id)){ // list.remove(list.get(a)); // len --; // } // } // } /** * 刪除功能 **/ public static void deleteFunction(){ System.out.println("輸入要?jiǎng)h除的聯(lián)系人的編號(hào)"); Scanner in_2 = new Scanner(System.in); String d1 = in_2.nextLine(); java.util.Iterator<Infro> it = list.iterator(); while (it.hasNext()){ Infro infro = it.next(); if (infro.id.equals(d1)){ it.remove(); --index;//一定要加這個(gè),否則當(dāng)做了刪除操作再做添加操作的時(shí)候會(huì)出現(xiàn)異常(類(lèi)似于指針,棧) System.out.println("刪除完畢"+"此時(shí)通訊錄記錄條數(shù)為:" + --len); } } } /** * 修改功能 **/ public static void reditFunction(){ System.out.println("輸入要修改的通訊錄的Id"); Scanner in_r = new Scanner(System.in); String r1 = in_r.nextLine(); for(int a = 0; a < len;a++){ if(r1.equals(list.get(a).id)){ System.out.println("輸入修改后的姓名:"); String name_1 = in_r.next(); list.get(a).name = name_1; System.out.println("輸入修改后的性別:"); String sex_1 = in_r.next(); list.get(a).sex = sex_1; System.out.println("輸入修改后的通訊地址:"); String address_1 = in_r.next(); list.get(a).address = address_1; System.out.println("輸入修改后的郵箱地址:"); String e_mail_1 = in_r.next(); list.get(a).e_mail = e_mail_1; System.out.println("輸入修改后的電話(huà):"); String phoneNumber_1 = in_r.next(); list.get(a).phoneNumber = phoneNumber_1; System.out.println("數(shù)據(jù)修改完畢"); } } } /** * 查詢(xún)功能 **/ public static void searchFunction() throws Exception{//查詢(xún)功能 System.out.println("請(qǐng)輸入要查詢(xún)的姓名:"); Scanner in_1 = new Scanner(System.in); String s1=in_1.nextLine(); for(int a= 0; a<len;a++){//切記,,這里不能用a<=list.seze(),否則會(huì)數(shù)組越界異常 if(s1.equals(list.get(a).name)){ System.out.println(list.get(a).toString()); } } } /** * 顯示功能 **/ public static void showFunction(){ for(int i = 0 ;i<len;i++){ System.out.println(list.get(i).toString()); } } /** * 保存功能 **/ public static void writeFunction() throws IOException{ FileWriter writer = new FileWriter("通訊錄管理.txt"); for(int i = 0 ;i<len;i++){ String []strwriter = new String[len]; strwriter[i]=list.get(i).toString(); writer.write(strwriter[i]); writer.write("\r\n"); System.out.println("成功寫(xiě)入一行數(shù)據(jù)到 通訊錄管理.txt 中"); } writer.close();//關(guān)閉寫(xiě)入流,釋放資源 } /** * 讀取功能 **/ public static void readFunction() throws IOException{ FileReader reader = new FileReader("通訊錄管理.txt"); BufferedReader br = new BufferedReader(reader); String str; while((str = br.readLine()) != null){//每次讀取一行文本,判斷是否到達(dá)文件尾 System.out.println(str); } br.close(); } } public class Demo extends JFrame { /** * 界面設(shè)計(jì) **/ public Demo(){ Container c = getContentPane(); //定義一個(gè)頂級(jí)容器c JPanel jp = new JPanel(); //新建JPanel面板--jp JButton button1 = new JButton("新建聯(lián)系人"); JButton button2 = new JButton("刪除聯(lián)系人"); JButton button3 = new JButton("編輯聯(lián)系人"); JButton button4 = new JButton("查找聯(lián)系人"); JButton button5 = new JButton("顯示所有聯(lián)系人"); JButton button6 = new JButton("保存聯(lián)系人到本地"); JButton button7 = new JButton("讀取本地聯(lián)系人"); jp.setLayout(new GridLayout(2,4,5,5));//新建網(wǎng)格布局管理器(行數(shù),列數(shù),組件間的水平垂直間距) jp.add(button1); jp.add(button2); jp.add(button3); jp.add(button4); jp.add(button5); jp.add(button6); jp.add(button7); c.add(jp);//將JPanel面板jp添加到頂級(jí)容器c中 setSize(600,500); setTitle("*通 訊 錄 管 理 系 統(tǒng)*"); setVisible(true); setResizable(false);//窗體大小由程序員決定,用戶(hù)不能自由改變大小 setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); /** *按鍵響應(yīng) * **/ button1.addActionListener(new ActionListener(){//添加功能實(shí)現(xiàn) public void actionPerformed(ActionEvent arg0){ Infro.addFunction(); } }); button2.addActionListener(new ActionListener(){//刪除功能實(shí)現(xiàn) public void actionPerformed(ActionEvent arg0){ Infro.deleteFunction(); } }); button3.addActionListener(new ActionListener(){//修改功能實(shí)現(xiàn) public void actionPerformed(ActionEvent arg0){ Infro.reditFunction(); } }); button4.addActionListener(new ActionListener(){//查詢(xún)功能實(shí)現(xiàn) public void actionPerformed(ActionEvent arg0){ try { Infro.searchFunction(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); button5.addActionListener(new ActionListener(){//顯示功能實(shí)現(xiàn) public void actionPerformed(ActionEvent arg0){ Infro.showFunction(); } }); button6.addActionListener(new ActionListener(){//保存功能實(shí)現(xiàn) public void actionPerformed(ActionEvent arg0){ try { Infro.writeFunction(); } catch (IOException e) { e.printStackTrace(); } } }); button7.addActionListener(new ActionListener(){//讀取功能實(shí)現(xiàn) public void actionPerformed(ActionEvent arg0){ try { Infro.readFunction(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } public static void main(String[] args) { // TODO Auto-generated method stub new Demo(); Infro a = new Infro("", "", "", "", "", ""); } }
ps:在用List集合的時(shí)候,遇到了一些小問(wèn)題,這些小問(wèn)題我在代碼里有注釋?zhuān)M院蟛灰俜高@種問(wèn)題。
關(guān)于管理系統(tǒng)的更多內(nèi)容請(qǐng)點(diǎn)擊《管理系統(tǒng)專(zhuān)題》進(jìn)行學(xué)習(xí)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)把文件壓縮成zip文件的示例代碼
這篇文章主要為大家介紹了如何通過(guò)Java語(yǔ)言實(shí)現(xiàn)將文件壓縮成zip文件,本文中示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02小程序與后端Java接口交互實(shí)現(xiàn)HelloWorld入門(mén)
本文主要介紹了小程序與后端Java接口交互實(shí)現(xiàn)HelloWorld入門(mén) ,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07jdbc+jsp實(shí)現(xiàn)簡(jiǎn)單員工管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了jdbc+jsp實(shí)現(xiàn)簡(jiǎn)單員工管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02mybatis水平分表實(shí)現(xiàn)動(dòng)態(tài)表名的項(xiàng)目實(shí)例
本文主要介紹了mybatis水平分表實(shí)現(xiàn)動(dòng)態(tài)表名的項(xiàng)目實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Java class文件格式之訪(fǎng)問(wèn)標(biāo)志信息_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
access_flags 描述的是當(dāng)前類(lèi)(或者接口)的訪(fǎng)問(wèn)修飾符, 如public, private等, 此外, 這里面還存在一個(gè)標(biāo)志位, 標(biāo)志當(dāng)前的額這個(gè)class描述的是類(lèi), 還是接口2017-06-06SpringBoot Application注解原理及代碼詳解
這篇文章主要介紹了SpringBoot Application注解原理及代碼詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06SpringBoot使用Maven插件進(jìn)行項(xiàng)目打包的方法
這篇文章主要介紹了SpringBoot使用Maven插件進(jìn)行項(xiàng)目打包的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Struts2中Action中是否需要實(shí)現(xiàn)Execute方法
這篇文章主要介紹了Struts2中Action中是否需要實(shí)現(xiàn)Execute方法的相關(guān)資料,需要的朋友可以參考下2016-03-03關(guān)于使用POI向word中添加圖片的問(wèn)題
這篇文章主要介紹了關(guān)于使用POI向word中添加圖片的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12