Java程序設(shè)計(jì)課程設(shè)計(jì)_第1頁
Java程序設(shè)計(jì)課程設(shè)計(jì)_第2頁
Java程序設(shè)計(jì)課程設(shè)計(jì)_第3頁
Java程序設(shè)計(jì)課程設(shè)計(jì)_第4頁
Java程序設(shè)計(jì)課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論