




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java程序设计课程设计题 目:电话号码查询系统姓 名: 学 号: 专业班级:网络工程2011-1指导老师: 赵建立 敏感词汇分析程序的设计1、需求分析1.1需求分析现在各大手机都有自己的、各种通讯录程序,但是这些公司都有自己的版权,我们也不可能得到这些源代码!而且这些公司的程序也相当复杂,仅从日常应用方面来说,对于初学java的我们也无法理解,就需要我们开发一个简单易懂的电话号码查询系统程序。1.2功能设计本程序要构建的敏感词汇分析程序参照了手机通讯录,其功能是:有电话录入,修改,增加,删除,按姓名查询,按电话号码查询,按部门查询,按部门显示,显示所有电话号码信息,打印等功能。2、概要设计2
2、.1程序设计思路在本程序设计过程中用到了父类JFrame、JTable、JPanel、JMenuBar、JMenuItem、JButton。另外,JMenuBar用来创建主菜单,JMenuItem创建子菜单,JFrame创建框架,JTable创建表格部分,并用JScorollPane向文本框添加滚动条。用JMenuItem创建功能键。JButton添加触发按钮。编写BufferReader()方法实现待分析文件中数据的读取。编写readLine()方法实现数据的读取。编写Select()方法实现查询。编写rankVector方法实现排序编写addNumber()方法实现新建编写removeNu
3、mber()方法实现删除编写modifyPhoneNumber()方法实现修改利用actionPerformed ()方法做为事件监听器。编写J_fenxi()实现构造。2.2程序运行界面3.程序详细设计与分析主页面表格菜单搜索视图编辑文件搜索类型搜索内容搜索键顺序显示修改删除新建关闭分组显示4测试分析4.1菜单栏由“文件”、“编辑”、“视图”组成,“文件“菜单有关闭功能键,“编辑”菜单有新建、删除、修改功能键,“视图”菜单有顺序显示和分类显示。新建功能:删除功能:鼠标点击选定向量中的元素,然后单击编辑,在单击删除键,就可实现删除功能。修改功能:点击要修改的单元格所在的行,然后点击编辑修改键开
4、始修改信息。顺序显示:手机号码按从小到大的顺序排列显示。分组显示:按分组的类别显示,同分组的元素在一起。搜索功能:可以按照手机号码,姓名、分组进行搜索。4.2测试文件内容4.2.1待测试文档初始文件内容为:4.2.2操作添加信息凯同事1915336635kai4.2.3测试结果5. 总结与分析通过完成一个小程序,不仅发现了自己在java知识中的不足,对java更加了解,还能够增加自己的变成经验,增强对逻辑思维的运用能力。在程序中还存在着一些缺陷和思考不到位的地方,例如,在关闭子窗口的时候,父窗口也会关闭,程序就此结束。还有编写该程序使用数据库的话更加好。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 "电话号码不符合编码规则!"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()+"号码为:"+number );return false;try if ( number.length() != 11 )throw new NumberException();catch ( NumberException e )JOptionPane.showMessageDialog( null, e.warningString()+"号
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()+"号码为:"+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 "电子邮箱格式错误!"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("关闭(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( "号码", 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 = "号码", "姓名", "分组" ;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("号码:");columnData.addElement("分组:");columnData.addE
42、lement("QQ:");columnData.addElement("Email:");m_data.addColumn("标签", columnData);m_data.addColumn("内容", (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("号码:");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( "标签", columnData);m_data.addColumn(Object)"内容", 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等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广州国际旅游服务合同样本
- 商铺租赁合同样本:门面租赁全新范本
- 寒假临时工雇佣合同书样本
- 游戏品牌代言合同样本
- 长租公寓租赁合同全文
- 新媒体广告推广合同模板
- 办公室简单装修合同范本
- 个人贷款合同电子版模板
- 企业间的战略合作框架合同范本
- 课件人物插图小学生
- 现代企业服务营销的创新与实践
- 【寒假开学第一课】AI时代做自己的哪吒
- 2025年度光伏电站光伏组件回收处理合同示范文本
- 2025年春季少先队工作计划及安排表(附:少先队每月工作安排表)
- 中央2025年公安部部分直属事业单位招聘84人笔试历年参考题库附带答案详解
- CWAN 0043-2021搅拌摩擦焊搅拌头设计及制造标准
- 教学课件:《公共关系学》(本科)
- 刘聪版在灿烂阳光下钢琴伴奏谱简谱版
- 2025年春新人教PEP版英语三年级下册全册教学课件
- 建筑工程项目精益建造实施计划书
- 体育老师篮球说课
评论
0/150
提交评论