




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java程序設(shè)計(jì)課程設(shè)計(jì)題 目:電話號(hào)碼查詢系統(tǒng)姓 名: 學(xué) 號(hào): 專業(yè)班級(jí):網(wǎng)絡(luò)工程2011-1指導(dǎo)老師: 趙建立 敏感詞匯分析程序的設(shè)計(jì)1、需求分析1.1需求分析現(xiàn)在各大手機(jī)都有自己的、各種通訊錄程序,但是這些公司都有自己的版權(quán),我們也不可能得到這些源代碼!而且這些公司的程序也相當(dāng)復(fù)雜,僅從日常應(yīng)用方面來說,對(duì)于初學(xué)java的我們也無法理解,就需要我們開發(fā)一個(gè)簡單易懂的電話號(hào)碼查詢系統(tǒng)程序。1.2功能設(shè)計(jì)本程序要構(gòu)建的敏感詞匯分析程序參照了手機(jī)通訊錄,其功能是:有電話錄入,修改,增加,刪除,按姓名查詢,按電話號(hào)碼查詢,按部門查詢,按部門顯示,顯示所有電話號(hào)碼信息,打印等功能。2、概要設(shè)計(jì)2
2、.1程序設(shè)計(jì)思路在本程序設(shè)計(jì)過程中用到了父類JFrame、JTable、JPanel、JMenuBar、JMenuItem、JButton。另外,JMenuBar用來創(chuàng)建主菜單,JMenuItem創(chuàng)建子菜單,JFrame創(chuàng)建框架,JTable創(chuàng)建表格部分,并用JScorollPane向文本框添加滾動(dòng)條。用JMenuItem創(chuàng)建功能鍵。JButton添加觸發(fā)按鈕。編寫B(tài)ufferReader()方法實(shí)現(xiàn)待分析文件中數(shù)據(jù)的讀取。編寫readLine()方法實(shí)現(xiàn)數(shù)據(jù)的讀取。編寫Select()方法實(shí)現(xiàn)查詢。編寫rankVector方法實(shí)現(xiàn)排序編寫addNumber()方法實(shí)現(xiàn)新建編寫removeNu
3、mber()方法實(shí)現(xiàn)刪除編寫modifyPhoneNumber()方法實(shí)現(xiàn)修改利用actionPerformed ()方法做為事件監(jiān)聽器。編寫J_fenxi()實(shí)現(xiàn)構(gòu)造。2.2程序運(yùn)行界面3.程序詳細(xì)設(shè)計(jì)與分析主頁面表格菜單搜索視圖編輯文件搜索類型搜索內(nèi)容搜索鍵順序顯示修改刪除新建關(guān)閉分組顯示4測(cè)試分析4.1菜單欄由“文件”、“編輯”、“視圖”組成,“文件“菜單有關(guān)閉功能鍵,“編輯”菜單有新建、刪除、修改功能鍵,“視圖”菜單有順序顯示和分類顯示。新建功能:刪除功能:鼠標(biāo)點(diǎn)擊選定向量中的元素,然后單擊編輯,在單擊刪除鍵,就可實(shí)現(xiàn)刪除功能。修改功能:點(diǎn)擊要修改的單元格所在的行,然后點(diǎn)擊編輯修改鍵開
4、始修改信息。順序顯示:手機(jī)號(hào)碼按從小到大的順序排列顯示。分組顯示:按分組的類別顯示,同分組的元素在一起。搜索功能:可以按照手機(jī)號(hào)碼,姓名、分組進(jìn)行搜索。4.2測(cè)試文件內(nèi)容4.2.1待測(cè)試文檔初始文件內(nèi)容為:4.2.2操作添加信息凱同事1915336635kai4.2.3測(cè)試結(jié)果5. 總結(jié)與分析通過完成一個(gè)小程序,不僅發(fā)現(xiàn)了自己在java知識(shí)中的不足,對(duì)java更加了解,還能夠增加自己的變成經(jīng)驗(yàn),增強(qiáng)對(duì)邏輯思維的運(yùn)用能力。在程序中還存在著一些缺陷和思考不到位的地方,例如,在關(guān)閉子窗口的時(shí)候,父窗口也會(huì)關(guān)閉,程序就此結(jié)束。還有編寫該程序使用數(shù)據(jù)庫的話更加好。6. 程序源代
5、碼1類PhoneNumberpublic class PhoneNumber private String Number;private String Name;private String Partition;private String QQNumber;private String Email;public PhoneNumber() public String getNumber()return Number;public String getName()return Name;public String getPartition() return Partition;public S
6、tring getQQNumber() return QQNumber;public String getEmail() return Email;public String getPretreatment( int Style ) String Key = null;switch ( Style ) case 1:Key = getNumber();break;case 2:Key = getName();break;case 3:Key = getPartition();break;return Key;class NumberException extends Exception pub
7、lic String warningString()return "電話號(hào)碼不符合編碼規(guī)則!"public boolean isNumeric( String str ) Pattern pattern = Ppile("0-9*"); return pattern.matcher(str).matches();public boolean setNumber( String number ) number.trim();String Str = number.substring( 0, 3 );try if( !isNumeric( number )
8、)throw new NumberException();catch ( NumberException e ) JOptionPane.showMessageDialog( null, e.warningString()+"號(hào)碼為:"+number );return false;try if ( number.length() != 11 )throw new NumberException();catch ( NumberException e )JOptionPane.showMessageDialog( null, e.warningString()+"號(hào)
9、碼為:"+number );return false;try int num = Integer.parseInt( Str );if ( num < 130 | num > 139 )num /= 10;if( num != 15 | num != 18 )throw new NumberException();Number = number;return true;catch ( NumberException e ) JOptionPane.showMessageDialog( null, e.warningString()+"號(hào)碼為:"+num
10、ber );return false;public boolean setName( String name ) name.trim();Name = name;return true;public boolean setPartition( String Str ) Str.trim();Partition = Str;return true;public boolean setQQNumber( String qqnumber ) qqnumber.trim();QQNumber = qqnumber;return true;class EmailException extends Exc
11、eption public String warningString() return "電子郵箱格式錯(cuò)誤!"public boolean setEmail( String email ) email.trim();String Str = email.substring( email.length()-4 );try if ( !Str.equals(".com") )throw new EmailException();if ( email.indexOf('') < 1 )throw new EmailException();
12、Email = email;return true;catch ( EmailException e ) JOptionPane.showMessageDialog( null, e.warningString() );return false;/* * param args */public static void main(String args) / TODO Auto-generated method stub2 類Operationpublic class Operation extends PhoneNumber public Vector<PhoneNumber> P
13、honeNumberList;public Operation() PhoneNumberList = new Vector<PhoneNumber>();public Vector<PhoneNumber> getPhoneNumberList() return PhoneNumberList;class OperatingException extends Exception public String warningString() return "操作失??!"public Vector<PhoneNumber> Select( S
14、tring KeyStr, int Style ) String Key = KeyStr.trim();Vector<PhoneNumber> tempPhoneNumberList = new Vector<PhoneNumber>();for ( int pt = 0; pt < PhoneNumberList.size(); pt+ ) String preKey = PhoneNumberList.elementAt(pt).getPretreatment(Style);if ( preKey.equals(Key) )tempPhoneNumberLi
15、st.addElement( PhoneNumberList.elementAt(pt) );return tempPhoneNumberList;public boolean addNumber( PhoneNumber phoneNumber, int Index ) try if ( PhoneNumberList.contains(phoneNumber) )throw new OperatingException();catch ( OperatingException e ) JOptionPane.showMessageDialog( null, e.warningString(
16、) );return false;try for ( int pt = 0; pt < PhoneNumberList.size(); pt+ )if ( PhoneNumberList.elementAt(pt).getNumber().equals(phoneNumber.getNumber() )throw new OperatingException();if ( Index >= PhoneNumberList.size() )Index = PhoneNumberList.size();PhoneNumberList.insertElementAt( phoneNumb
17、er, Index );return true;catch ( OperatingException e ) JOptionPane.showMessageDialog( null, e.warningString() );return false;public boolean removeNumber( String phoneNumber ) try int Index = 0;for ( int pt = 0; pt < PhoneNumberList.size(); pt+ )if ( PhoneNumberList.elementAt(pt).getNumber().equal
18、s(phoneNumber) )Index = pt;if ( Index >= PhoneNumberList.size() )throw new OperatingException();PhoneNumberList.removeElementAt(Index);return true;catch ( OperatingException e ) JOptionPane.showMessageDialog( null, e.warningString() );return false;public boolean modifyPhoneNumber( PhoneNumber pho
19、neNumber ) try if ( PhoneNumberList.contains(phoneNumber) )throw new OperatingException();int Index = 0;for ( int pt = 0; pt < PhoneNumberList.size(); pt+ )if ( PhoneNumberList.elementAt(pt).getNumber().equals(phoneNumber.getNumber() ) PhoneNumberList.removeElementAt(pt);PhoneNumberList.addElemen
20、t( phoneNumber );catch ( OperatingException e ) JOptionPane.showMessageDialog( null, e.warningString() );return false;try if ( !PhoneNumberList.contains(phoneNumber) )throw new OperatingException();return true;catch ( OperatingException e ) JOptionPane.showMessageDialog( null, e.warningString() );re
21、turn false;public Vector<PhoneNumber> sortPhoneNumber( Vector<PhoneNumber> phoneNumberList, String KeyStr ) Vector<PhoneNumber> tempPhoneNumberList = new Vector<PhoneNumber>( 10, 3 );for ( int Index = 0; Index < phoneNumberList.size(); Index+ )if ( phoneNumberList.elementA
22、t(Index).getPartition().equals(KeyStr) )tempPhoneNumberList.addElement( phoneNumberList.elementAt(Index) );return tempPhoneNumberList;public Vector<PhoneNumber> rankVector( Vector<PhoneNumber> phoneNumberList ) Vector<PhoneNumber> tempPhoneNumberList = new Vector<PhoneNumber>
23、();tempPhoneNumberList.addElement( phoneNumberList.elementAt(0);for ( int Index = 0; Index < phoneNumberList.size(); Index+ ) int pt;boolean flag = true;for ( pt = 0; pt < tempPhoneNumberList.size(); pt+ ) if ( phoneNumberList.elementAt(Index).getNumber().compareTo(tempPhoneNumberList.elementA
24、t(pt).getNumber() < 0 )break;for ( int i = 0; i < tempPhoneNumberList.size(); i+ )if ( tempPhoneNumberList.elementAt(i).getNumber().equals(phoneNumberList.elementAt(Index).getNumber() )flag = false;if ( flag )tempPhoneNumberList.insertElementAt( phoneNumberList.elementAt(Index), pt );return te
25、mpPhoneNumberList;public static void main(String args) / TODO Auto-generated method stub3類Searcherpublic class Searcher extends JFrame public DefaultTableModel Data;public JTable View;public JButton button;public JComboBox combobox;public JFrame app;public Operation operation;public JMenuBar MenuBar
26、;public JTextField textField;public JMenuItem MenuItem = new JMenuItem("關(guān)閉(C)") , new JMenuItem("新建(N)"), new JMenuItem("刪除(D)"), new JMenuItem("修改(M)") , new JMenuItem("順序顯示(O)"), new JMenuItem("分類顯示(S)") ;public Searcher() super("Sea
27、rcher");operation = new Operation();MenuBar = new JMenuBar();setJMenuBar(MenuBar);Container c = getContentPane();c.setLayout(new FlowLayout();Data = new DefaultTableModel( 1, 5 );View = new JTable( Data );View.setValueAt( "號(hào)碼", 0, 0 );View.setValueAt( "姓名", 0, 1 );View.setVa
28、lueAt( "分組", 0, 2 );View.setValueAt( "QQ", 0, 3 );View.setValueAt( "Email", 0, 4 );View.setPreferredScrollableViewportSize( new Dimension( 300, 150 ) );View.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );JScrollPane spane = new JScrollPane( View );spane.setLayout( new Scro
29、llPaneLayout() );View.setVisible( true );JMenu Menu = new JMenu("文件(F)"), new JMenu("編輯(E)"), new JMenu("視圖(V)") ;char MenuChar = 'F', 'E', 'V' , 'C' , 'N', 'D', 'M' , 'O', 'S' ;int Index, IndexI;fo
30、r (Index = 0; Index < Menu.length; Index+) MenuBar.add(MenuIndex);MenuIndex.setMnemonic(MenuChar0Index);for (IndexI = 0; IndexI < MenuItemIndex.length; IndexI+) MenuIndex.add(MenuItemIndexIndexI);MenuItemIndexIndexI.setMnemonic(MenuCharIndex + 1IndexI);MenuItemIndexIndexI.setAccelerator(KeyStr
31、oke.getKeyStroke("ctrl" + MenuCharIndex + 1IndexI);Menu1.insertSeparator(1);Menu2.insertSeparator(1);JPanel panel = new JPanel();JPanel panel2 =new JPanel();textField = new JTextField( 20 );textField.setEditable( true );String s = "號(hào)碼", "姓名", "分組" ;combobox =
32、new JComboBox( s );button = new JButton("搜索");panel.setLayout( new BoxLayout(panel, BoxLayout.X_AXIS) );panel.add( combobox );panel.add( textField );panel.add( button );panel2.setLayout( new BoxLayout(panel2, BoxLayout.X_AXIS) );panel2.add( View );c.add( panel );c.add( panel2 );panel.setVi
33、sible( true );panel.setVisible( true );c.add( spane );String path = "Data.txt"try FileReader fr=new FileReader(path); BufferedReader reader=new BufferedReader(fr);String tempStr = new String();tempStr = reader.readLine();PhoneNumber phoneNumber = new PhoneNumber5;for ( int pt = 0; tempStr
34、!= null; pt+ ) phoneNumberpt = new PhoneNumber();Vector<String> rowData = new Vector<String>(5);phoneNumberpt.setNumber( tempStr );rowData.addElement( tempStr ); tempStr = reader.readLine();phoneNumberpt.setName( tempStr );rowData.addElement( tempStr );tempStr = reader.readLine();phoneNu
35、mberpt.setPartition( tempStr );rowData.addElement( tempStr );tempStr = reader.readLine();phoneNumberpt.setQQNumber( tempStr );rowData.addElement( tempStr );tempStr = reader.readLine();phoneNumberpt.setEmail( tempStr );rowData.addElement( tempStr );Data.addRow( rowData );operation.PhoneNumberList.add
36、Element( phoneNumberpt );tempStr = reader.readLine();reader.close();catch ( IOException e ) JOptionPane.showMessageDialog( null, e );button.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) int Style = combobox.getSelectedIndex()+1;String KeyStr = textField.getText();
37、Vector<PhoneNumber> phoneNumberList = operation.Select(KeyStr, Style );int flag = Data.getRowCount()-1;for ( int i = 0; i < flag; i+ )Data.removeRow( Data.getRowCount()-1 );for (int pt = 0; pt < phoneNumberList.size(); pt+) Vector<String> rowData = new Vector<String>(5);rowDa
38、ta.addElement(phoneNumberList.elementAt(pt).getNumber();rowData.addElement(phoneNumberList.elementAt(pt).getName();rowData.addElement(phoneNumberList.elementAt(pt).getPartition();rowData.addElement(phoneNumberList.elementAt(pt).getQQNumber();rowData.addElement(phoneNumberList.elementAt(pt).getEmail(
39、);Data.addRow(rowData);View.repaint(););MenuItem00.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) JMenuItem Item = (JMenuItem) e.getSource();System.exit(0););MenuItem10.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) class J_Table
40、extends JFrame public DefaultTableModel m_data;public JTable m_view;public PhoneNumber phoneNumber;public J_Table() super("新建");phoneNumber = new PhoneNumber();m_data = new DefaultTableModel();m_view = new JTable(m_data);m_view.setPreferredScrollableViewportSize(new Dimension(240, 480);Con
41、tainer c = getContentPane();c.setLayout(new FlowLayout();JButton b = new JButton("確定");c.add(b);Vector<String> columnData = new Vector<String>(5);columnData.addElement("姓名:");columnData.addElement("號(hào)碼:");columnData.addElement("分組:");columnData.addE
42、lement("QQ:");columnData.addElement("Email:");m_data.addColumn("標(biāo)簽", columnData);m_data.addColumn("內(nèi)容", (Vector) null);c.add(m_view);b.addActionListener(new ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) JButton bb = (JButton) e.get
43、Source();phoneNumber.setName(String) m_data.getValueAt(0, 1);phoneNumber.setNumber(String) m_data.getValueAt(1, 1);phoneNumber.setPartition(String) m_data.getValueAt(2, 1);phoneNumber.setQQNumber(String) m_data.getValueAt(3, 1);phoneNumber.setEmail(String) m_data.getValueAt(4, 1);operation.addNumber
44、(phoneNumber, operation.PhoneNumberList.size();Vector<String> rowData = new Vector<String>(5);rowData.addElement( phoneNumber.getNumber() );rowData.addElement( phoneNumber.getName() );rowData.addElement( phoneNumber.getPartition() );rowData.addElement( phoneNumber.getQQNumber() );rowData
45、.addElement( phoneNumber.getEmail() );Data.addRow( rowData ););J_Table table = new J_Table();table.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);table.setSize(200, 200);table.setVisible( true );table.repaint(););MenuItem11.addActionListener(new ActionListener() public void actionPerformed(ActionEve
46、nt e) int rEdit = View.getSelectedRow();String KeyStr = (String) Data.getValueAt(rEdit, 0);operation.removeNumber(KeyStr);Data.removeRow( rEdit ););MenuItem12.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) class J_Table extends JFrame public DefaultTableModel m_dat
47、a;public JTable m_view;public PhoneNumber phoneNumber;public J_Table() super("修改");phoneNumber = new PhoneNumber();m_data = new DefaultTableModel();m_view = new JTable(m_data);m_view.setPreferredScrollableViewportSize(new Dimension(240, 480);Container c = getContentPane();c.setLayout(new F
48、lowLayout();JButton b = new JButton("確定");c.add(b);Vector<String> columnData = new Vector<String>(5);columnData.addElement("號(hào)碼:");columnData.addElement("姓名:");columnData.addElement("分組:");columnData.addElement("QQ:");columnData.addElement
49、("Email:");Vector<String> columnContent = new Vector<String>(5);int rEdit = View.getSelectedRow();columnContent.addElement(String) View.getValueAt(rEdit, 0);columnContent.addElement(String) View.getValueAt(rEdit, 1);columnContent.addElement(String) View.getValueAt(rEdit, 2);col
50、umnContent.addElement(String) View.getValueAt(rEdit, 3);columnContent.addElement(String) View.getValueAt(rEdit, 4);m_data.addColumn( "標(biāo)簽", columnData);m_data.addColumn(Object)"內(nèi)容", columnContent);c.add(m_view);m_view.repaint();b.addActionListener(new ActionListener() public void
51、actionPerformed(ActionEvent e) JButton bb = (JButton) e.getSource();phoneNumber.setNumber(String) m_data.getValueAt(0, 1);phoneNumber.setName(String) m_data.getValueAt(1, 1);phoneNumber.setPartition(String) m_data.getValueAt(2, 1);phoneNumber.setQQNumber(String) m_data.getValueAt(3, 1);phoneNumber.setEmail(String) m_data.getValueAt(4, 1);operation.modifyPhoneNumber(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二年級(jí)下冊(cè)數(shù)學(xué)教案 - 第三單元 第一節(jié)【第一課時(shí)】 數(shù)一數(shù)(一)(認(rèn)識(shí)并感受“千”1)北師大版
- 2025年師范大學(xué)協(xié)議管理辦法
- 勞動(dòng)協(xié)議:勞務(wù)分包協(xié)議(2025年版)
- 2024年水利機(jī)械項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 2024年高性能陶瓷刀具材料項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 全國清華版信息技術(shù)小學(xué)三年級(jí)上冊(cè)新授課 第11課 智能輸詞句-詞組和整句輸入 教學(xué)設(shè)計(jì)
- 2025年度手房交易資金監(jiān)管補(bǔ)充協(xié)議
- 2025年度大米產(chǎn)業(yè)投資基金簡易合作協(xié)議
- 2025年度商標(biāo)同授權(quán)及品牌授權(quán)許可合同
- 二零二五年度網(wǎng)紅直播帶貨營銷推廣服務(wù)合同
- 老年護(hù)理中心行風(fēng)建設(shè)方案
- 2024年世界職業(yè)院校技能大賽“食品安全與質(zhì)量檢測(cè)組”參考試題庫(含答案)
- 第21課 磁懸浮列車(說課稿)-2023-2024學(xué)年六年級(jí)科學(xué)下冊(cè)同步備課(青島版)
- 區(qū)域銷售規(guī)劃方案
- 中國服裝零售行業(yè)發(fā)展環(huán)境、市場運(yùn)行格局及前景研究報(bào)告-智研咨詢(2025版)
- 2024年廣東公務(wù)員考試申論試題(公安卷)
- 期末 (試題) -2024-2025學(xué)年人教PEP版英語五年級(jí)上冊(cè)
- 專題17 物質(zhì)結(jié)構(gòu)與性質(zhì)綜合題-五年(2020-2024)高考化學(xué)真題分類匯編(解析版)
- 語文學(xué)習(xí)任務(wù)群的解讀及設(shè)計(jì)要領(lǐng)
- 光伏發(fā)電站項(xiàng)目安全技術(shù)交底資料
- 富血小板血漿(PRP)臨床實(shí)踐與病例分享課件
評(píng)論
0/150
提交評(píng)論