个人通讯录java代码完整版

合集下载

java验证手机号码、电话号码(包括最新的电信、联通和移动号码)

java验证手机号码、电话号码(包括最新的电信、联通和移动号码)

java验证⼿机号码、电话号码(包括最新的电信、联通和移动号码)⼀、⽬前的号码段(2017-06-01更新)⼆、代码package com.linbilin.test;import java.util.regex.Pattern;public class CheckPhone {/** 座机电话格式验证 **/private static final String PHONE_CALL_PATTERN = "^(?:\\(\\d{3,4}\\)|\\d{3,4}-)?\\d{7,8}(?:-\\d{1,4})?$";/*** 中国电信号码格式验证⼿机段: 133,153,180,181,189,177,1700,173* **/private static final String CHINA_TELECOM_PATTERN = "(?:^(?:\\+86)?1(?:33|53|7[37]|8[019])\\d{8}$)|(?:^(?:\\+86)?1700\\d{7}$)";/*** 中国联通号码格式验证⼿机段:130,131,132,155,156,185,186,145,176,1707,1708,1709,175* **/private static final String CHINA_UNICOM_PATTERN = "(?:^(?:\\+86)?1(?:3[0-2]|4[5]|5[56]|7[56]|8[56])\\d{8}$)|(?:^(?:\\+86)?170[7-9]\\d{7}$)";/*** 简单⼿机号码校验,校验⼿机号码的长度和1开头*/private static final String SIMPLE_PHONE_CHECK = "^(?:\\+86)?1\\d{10}$";/*** 中国移动号码格式验证* ⼿机段:134,135,136,137,138,139,150,151,152,157,158,159,182,183,184* ,187,188,147,178,1705***/private static final String CHINA_MOBILE_PATTERN = "(?:^(?:\\+86)?1(?:3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\\d{8}$)|(?:^(?:\\+86)?1705\\d{7}$)";/*** 仅⼿机号格式校验*/private static final String PHONE_PATTERN = new StringBuilder(300).append(CHINA_MOBILE_PATTERN).append("|").append(CHINA_TELECOM_PATTERN).append("|").append(CHINA_UNICOM_PATTERN).toString();/*** ⼿机和座机号格式校验*/private static final String PHONE_TEL_PATTERN = new StringBuilder(350).append(PHONE_PATTERN).append("|").append("(").append(PHONE_CALL_PATTERN).append(")").toString();/*** 匹配多个号码以,、或空格隔开的格式,如 177********* 133********、(596)3370653,177********,133******** (0596)3370653* @param input* @param separator 可以⾃⼰指定分隔符,如"、, "表⽰可以以顿号、逗号和空格分隔* @return*/public static boolean checkMultiPhone(String input, String separator) {separator = escapeMetacharacterOfStr(separator);String regex = "^(?!.+["+ separator+ "]$)(?:(?:(?:(?:\\(\\d{3,4}\\)|\\d{3,4}-)?\\d{7,8}(?:-\\d{1,4})?)|(?:1\\d{10}))(?:["+ separator + "]|$))+$";return match(regex, input);}/*** 转义字符串中的[]-^\元字符** @param input* @param separator* @return*/private static String escapeMetacharacterOfStr(String input) {String regex = "[-^\\[\\]\\\\]";return input.replaceAll(regex, "\\\\$0");}/*** 仅⼿机号码校验** @param input* @return*/public static boolean isPhone(String input) {return match(PHONE_PATTERN, input);}/*** ⼿机号或座机号校验** @param input* @return*/public static boolean isPhoneOrTel(String input) {System.out.println(PHONE_TEL_PATTERN);return match(PHONE_TEL_PATTERN, input);}/*** 验证电话号码的格式** @author LinBilin* @param str* 校验电话字符串* @return 返回true,否则为false*/public static boolean isPhoneCallNum(String str) {return match(PHONE_CALL_PATTERN, str);}/*** 验证【电信】⼿机号码的格式** @author LinBilin* @param str* 校验⼿机字符串* @return 返回true,否则为false*/public static boolean isChinaTelecomPhoneNum(String str) { return match(CHINA_TELECOM_PATTERN, str);}/*** 验证【联通】⼿机号码的格式** @author LinBilin* @param str* 校验⼿机字符串* @return 返回true,否则为false*/public static boolean isChinaUnicomPhoneNum(String str) { return match(CHINA_UNICOM_PATTERN, str);}/*** 验证【移动】⼿机号码的格式** @author LinBilin* @param str* 校验⼿机字符串* @return 返回true,否则为false*/public static boolean isChinaMobilePhoneNum(String str) { return match(CHINA_MOBILE_PATTERN, str);}/*** 简单⼿机号码校验,校验⼿机号码的长度和1开头** @param str* @return*/public static boolean isPhoneSimple(String str) {return match(SIMPLE_PHONE_CHECK, str);}/*** 匹配函数** @param regex* @param input* @return*/private static boolean match(String regex, String input) { return Pattern.matches(regex, input);}}。

JAVA的即时通讯源代码

JAVA的即时通讯源代码

JAVA实现即使通讯的代码图形界面////////////////////////////////////////////////////////////用Java 编写的聊天器,可以当服务器或者是客户端,一对一,自定义对方IP 及端口。

//虽然名为LANChat ,但不限于局域网。

对象甚至可以是某种“服务器”。

///////////////////////////////////////////////////////////import java.io.*;import .*;import java.awt.*;import javax.swing.*;import java.awt.event.*;//////////////////////////////////////////////////////////public class LANChatV12{public static void m ain(String args[]){LoginFrame lf =new LoginFrame("输入目标");lf.show();}}/////////////////////////////////////////////////////////class LoginFrame extends JFrame{JButton BOK;JLabel LdesAddr, Lport;JTextField TFdesAddr, TFport;String desAddr, port;LoginFrame(){}LoginFrame(String title){super(title);Fram e t =this;BOK =new JButton("确定");LdesAddr =new JLabel("目标IP");Lport =new JLabel("端口");TFdesAddr =new JTextField(desAddr,12);TFport =new JTextField(port,12);//TFpassword.setEchoChar('*');BOK.addActionListener(new BOKListener(t)); setBackground(Color.blue);setBounds(350,250,200,128);setLayout(new FlowLayout(FlowLayout.CENTER,5,7)); add(LdesAddr);add(TFdesAddr);add(Lport);add(TFport);add(BOK);setResizable(false);//setVisible(true);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){ System.exit(0);}});}class BOKListener implements ActionListener{Fram e t;BOKListener(){}BOKListener(Frame t){this.t =t;}public void actionPerformed(ActionEvent e){ desAddr =TFdesAddr.getText();port =TFport.getText();t.setVisible(false);Messenger m =new Messenger(desAddr, port); m.start();}}}/////////////////////////////////////////////////////class Messenger extends Thread{String desAddr;String port;int iport;TextArea content, send;JButton Bsend;ChatFram e cf;String title;Socket client;ServerSocket ss;OutputStream Writer osw =null; InputStreamReader isr =null; BufferedReader br;String line;boolean flag;//端口号是否正确boolean cbc; //can be client ?int tryTurns =3; //客户方式尝试的次数Messenger(){}Messenger(String desAddr, String port){super("LANChatMessenger");content =new TextArea("",0,0,TextArea.SCROLLBARS_VERTICAL_ONLY); send =new TextArea("",0,0,TextArea.SCROLLBARS_VERT ICAL_ONLY); Bsend =new JButton("发送");Bsend.setEnabled(false);title ="与" + desAddr +" 聊天";flag =true;cbc =true;cf =new ChatFram e(title, content, send, Bsend);cf.show();this.desAddr =desAddr;this.port =port;try{iport =Integer.parseInt(port);}catch(NumberFormatException nfe){content.append("非法的端口,程序4 秒后关闭。

Java通讯录管理系统设计报告

Java通讯录管理系统设计报告

Java通讯录管理系统设计报告1. 引言随着社会发展和信息技术的进步,通讯录在人们的日常生活和工作中变得越来越重要。

Java通讯录管理系统是一种用于管理个人和组织联系信息的软件系统。

本篇文档将详细介绍Java通讯录管理系统的设计和实现。

2. 功能需求Java通讯录管理系统具有以下功能需求: - 添加联系人:用户可以添加新的联系人,包括姓名、电话号码、电子邮件等相关信息。

- 删除联系人:用户可以删除已存在的联系人。

- 编辑联系人:用户可以修改已存在联系人的信息。

- 搜索联系人:用户可以根据姓名、电话号码或其他关键字搜索联系人。

- 显示联系人列表:用户可以查看所有联系人的列表,并按照姓名或其他方式进行排序。

- 导入/导出联系人:用户可以将联系人导入/导出到文件中,以实现数据的备份和共享。

3. 系统设计3.1 技术栈选择Java通讯录管理系统采用Java语言进行开发,使用Java的面向对象特性来实现系统的各个功能模块。

系统使用MySQL数据库来存储联系人的信息。

3.2 系统架构Java通讯录管理系统采用三层架构,分为表示层、业务逻辑层和数据访问层。

•表示层:负责与用户的交互,包括图形界面和用户输入输出的处理。

•业务逻辑层:负责处理用户的请求,对联系人信息进行增加、删除、编辑、搜索等操作,并调用数据访问层进行数据的读写。

•数据访问层:负责与数据库交互,进行联系人信息的读写操作。

3.3 类设计在Java通讯录管理系统中,主要涉及以下类的设计: - Contact类:表示一个联系人,包含姓名、电话号码、电子邮件等属性。

- ContactDAO接口:定义对联系人的增删改查等操作。

- ContactDAOImpl类:实现ContactDAO接口,负责与数据库进行交互。

- ContactService类:负责处理业务逻辑,调用ContactDAOImpl 类进行联系人信息的操作。

- ContactConsole类:表示层的用户界面,处理用户输入输出和展示联系人信息。

手机通讯录源代码

手机通讯录源代码
char dizhi[20];
}ren;
//菜单
void menu() //目录
{
system("cls"); //清屏
printf(" #########欢迎使用手机通讯录#########\n");
printf("\n");
printf("==============================================================================\n");
if(!feof(fp))
{ printf("人员的信息如下:\n");
printf("说明:(A办公类B个人类C商务类)");
printf("\n%10s %15s %10s %20s \n","姓名","号码","类别","邮箱");
while(!feof(fp))
{
if(strcmp(ry.leibie,leibie)==0) //若为该类别则输出
void bohao()
{ ren ry[N];
FILE *fp;
char name[10];
int i,len,k=-1;
system("cls");
printf("\n输入要删除的人员姓名: ");scanf(""ren.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}

Java课程设计通讯录管理系统

Java课程设计通讯录管理系统

摘要随着社会的发展,人际关系变来越重要,为了保持良好的人际关系,必须常与亲戚朋友,同学同事保持联系,但有时候存在许多限制条件,因此我们需要为了快速查找联系人的信息,节省查找时间,开发通讯录管理系统。

通讯录管理系统是一个基于C/S模式的个人通讯录管理系统,它是将自己的联系人的具体信息集中处理,成为一个方便人们使用的小软件。

在开发过程中应用java,JDK,MYSQL,SWING等技术,由于开发工具与数据库之间的良好使用,可以为开发带来方便,使之成为可视性的系统。

通过采用相关技术,将系统设计的功能全部实现。

功能包括:用户登录,添加联系人信息,修改联系人信息,删除联系人信息,查询联系人信息,可以浏览全部通讯录联系人,可以根据数据表的歌字段来查询你要找的联系人等功能。

关键字:C/S架构,联系信息,通讯录,数据库目录一、需求分析 (2)二、系统总体规划 (2)三、程序流程 (2)四、设计步骤 (5)1.数据库表的设计 (5)2.详细设计 (5)五、设计总结 (9)六、结束语 (10)六、参考文献 (11)七、程序清单 (12)1一需求分析通讯录在当今的日常生活工作中的应用是十分普及的,每个人都拥有大量的通讯录资料信息,当前大家一般都用手工来记录所有的通讯录信息。

但随着时代的发展,人们的联系方式及信息变得复杂多样,通讯录信息大量增加,导致管理这些信息资料就成了问题。

直接操作来查找,添加,修改,删除这些信息,由于数据多,工作量十分巨大,查找,编辑都很困难,而且极易出错,容易造成资料的混乱或丢失。

在各种手机,上午通内设的电话簿尽管携带方便却又存在“记录量少,界面小,浏览不方便,记录信息不全面”的缺点。

有人利用Excel或Word编制通讯录,虽然数据比较全面,信息比较充分,可是查找及其不便,维护起来也麻烦,所以运用文件或数据库技术建立一个通讯录管资料理系统十分必要,使通讯录资料管理工作规范化,系统化,程序化,避免资料管理中的混乱。

java课程设计通讯录

java课程设计通讯录

java 课程设计通讯录一、教学目标本章节的教学目标是使学生掌握Java编程语言的基本语法和面向对象编程思想,通过实现一个简单的通讯录应用程序,培养学生解决实际问题的能力。

具体目标如下:1.掌握Java基本数据类型、运算符、控制结构。

2.理解面向对象编程的基本概念,如类、对象、封装、继承、多态。

3.熟悉Java常用类库,如String、ArrayList、HashMap等。

4.能够使用Java编写简单的程序,实现基本的数据处理和算法。

5.能够运用面向对象编程思想设计和实现应用程序。

6.掌握基本的调试和排错技巧。

情感态度价值观目标:1.培养学生对编程的兴趣和热情,提高学生解决问题的自信心。

2.培养学生团队协作、自主学习的习惯。

3.培养学生对编程事业的尊重和敬业精神。

二、教学内容本章节的教学内容主要包括以下几个部分:1.Java基本语法:数据类型、运算符、控制结构。

2.面向对象编程:类、对象、封装、继承、多态。

3.Java常用类库:String、ArrayList、HashMap等。

4.通讯录应用程序设计:需求分析、系统设计、编码实现、测试与调试。

三、教学方法为了达到本章节的教学目标,将采用以下几种教学方法:1.讲授法:讲解Java基本语法、面向对象编程思想和通讯录应用程序设计。

2.案例分析法:分析实际案例,让学生更好地理解面向对象编程思想和应用程序设计。

3.实验法:让学生动手编写和调试程序,提高学生的实际操作能力。

4.讨论法:学生进行小组讨论,培养学生的团队协作和沟通能力。

四、教学资源为了支持本章节的教學,将准备以下教学资源:1.教材:《Java编程思想》、《Java核心技术》。

2.参考书:提供相关领域的经典教材和在线资源。

3.多媒体资料:制作PPT、视频教程等,帮助学生更好地理解教学内容。

4.实验设备:为学生提供必要的编程环境和实验设备。

五、教学评估本章节的教学评估将采用多元化的评价方式,以全面、客观、公正地评估学生的学习成果。

简易通讯录代码

import java.awt.*;import java.awt.event.*;import java.sql.*;public class Main extends Frame implements ActionListener { //主类// Toolkit.getDefaultToolkit()→获取默认工具包public Toolkit tool = Toolkit.getDefaultToolkit();Label lab1, lab2, lab3, lab4, lab5, lab6;TextField txt1, txt2, txt3, txt4, txt5, txt6;Button but1, but2, but3;public void showWindow() { //显示窗体类// 获取屏幕的x,y坐标int x = tool.getScreenSize().width;int y = tool.getScreenSize().height;setBounds(x / 2 - 250, y / 2 - 275, 500, 450);setLayout(null);lab1 = new Label("学号:");lab2 = new Label("姓名:");lab3 = new Label("性别:");lab4 = new Label("电话:");lab5 = new Label("QQ:");lab6 = new Label("住址:");add(lab1);add(lab2);add(lab3);add(lab4);add(lab5);add(lab6);lab1.setBounds(getWidth() - 450, getHeight() - 400, 50, 30);lab2.setBounds(getWidth() - 450, getHeight() - 350, 50, 30);lab3.setBounds(getWidth() - 450, getHeight() - 300, 50, 30);lab4.setBounds(getWidth() - 450, getHeight() - 250, 50, 30);lab5.setBounds(getWidth() - 450, getHeight() - 200, 50, 30);lab6.setBounds(getWidth() - 450, getHeight() - 150, 50, 30);txt1 = new TextField("2009406001");txt2 = new TextField();txt3 = new TextField();txt4 = new TextField();txt5 = new TextField();txt6 = new TextField();// 设置文本框位置setBounds(int x,int y,int w,int h);txt1.setBounds(getWidth() - 400, getHeight() - 400, 350, 30); txt2.setBounds(getWidth() - 400, getHeight() - 350, 350, 30); txt3.setBounds(getWidth() - 400, getHeight() - 300, 350, 30); txt4.setBounds(getWidth() - 400, getHeight() - 250, 350, 30); txt5.setBounds(getWidth() - 400, getHeight() - 200, 350, 30); txt6.setBounds(getWidth() - 400, getHeight() - 150, 350, 30);add(txt1);add(txt2);add(txt3);add(txt4);add(txt5);add(txt6);// 添加按钮but1 = new Button("上一个");but2 = new Button("查询");but3 = new Button("下一个");but1.setBounds(getWidth() - 450, 380, 100, 30);but2.setBounds(getWidth() / 2 - 50, 380, 100, 30);but3.setBounds(getWidth() / 2 + 110, 380, 100, 30);add(but1);add(but2);add(but3);// 添加事件驱动but1.addActionListener(this);but2.addActionListener(this);but3.addActionListener(this);txt1.addActionListener(this);addWindowListener(new WindowAdapter(){ //添加关闭监视器public void windowClosing(WindowEvent e){System.exit(0);}});setVisible(true);validate();setResizable(false);but1.setV isible(false);but3.setV isible(false);}public void actionPerformed(ActionEvent e) { //添加动作监听// 连接数据库,并进行编程if (e.getActionCommand() == "上一个") {//上一个代码开使String a=txt1.getText();int i=Integer.parseInt(a);i=i-1;Connection con;Statement sql;ResultSet rs;try{con=DriverManager.getConnection("jdbc:odbc:小小通讯录","admin","admin");sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM information where 学号= '"+i+"' ");while(rs.next()){String number1=rs.getString(1);//学号String number2=rs.getString(2);//姓名String number3=rs.getString(3);//性别String number4=rs.getString(4);//联系电话String number5=rs.getString(5);//联系QQString number6=rs.getString(6);//家庭住址txt1.setText(number1);txt2.setText(number2);txt3.setText(number3);txt4.setText(number4);txt5.setText(number5);txt6.setText(number6);}con.close();}catch(SQLException e1){System.out.println(e1);}//上一个代码结束}if (e.getActionCommand() == "查询") {//如果单击“查询”按钮则:but1.setV isible(true);but3.setVisible(true);String a=txt1.getText();Connection con;Statement sql;ResultSet rs;try{con=DriverManager.getConnection("jdbc:odbc:小小通讯录","admin","admin");sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM information where 学号= '"+a+"' ");while(rs.next()){String number2=rs.getString(2);//姓名String number3=rs.getString(3);//性别String number4=rs.getString(4);//联系电话String number5=rs.getString(5);//联系QQString number6=rs.getString(6);//家庭住址txt2.setText(number2);txt3.setText(number3);txt4.setText(number4);txt5.setText(number5);txt6.setText(number6);}con.close();}catch(SQLException e1){System.out.println(e1);//查询代码结束}}if (e.getActionCommand() == "下一个"){//单击按钮“下一个”//下一个开始String a=txt1.getText();int i=Integer.parseInt(a);i=i+1;Connection con;Statement sql;ResultSet rs;try{con=DriverManager.getConnection("jdbc:odbc:小小通讯录","admin","admin");sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM information where 学号= '"+i+"' ");while(rs.next()){String number1=rs.getString(1);//学号String number2=rs.getString(2);//姓名String number3=rs.getString(3);//性别String number4=rs.getString(4);//联系电话String number5=rs.getString(5);//联系QQString number6=rs.getString(6);//家庭住址txt1.setText(number1);txt2.setText(number2);txt3.setText(number3);txt4.setText(number4);txt5.setText(number5);txt6.setText(number6);}con.close();}catch(SQLException e1){System.out.println(e1);}//下一个结束}}public static void main(String args[]) { //main方法Main m = new Main();m.showWindow();}}。

1构建手机通讯录系统

题目:手机通讯录系统要求:制作一个手机通讯录系统系统描述:手机中有一个简单的通讯录工具,用于管理联系人的基本信息,其基本功能包括对联系人信息的新建、修改、删除、查询等。

联系人的基本信息只包括姓名、年龄、联系电话,通讯录最多容纳50名联系人的信息。

功能:用户验证:根据用户输入的用户名和密码判断是否合法用户(合法用户可以不只一个),并进行相应处理。

提供系统操作菜单联系人的基本信息只包括姓名、年龄、联系电话等可以对联系人的基本信息进行输入、修改、删除、浏览等操作可以查询联系人的基本信息可以对联系人的基本信息进行排序处理用结构体表示联系人的基本信息,用文件存储信息提示:1、建立如下结构体struct friends_list{char name[10];int age;char telephone[13];};2、存储和显示信息表格形式3、姓名、年龄、联系电话4、系统功能结构图5、功能要求描述:(1)主函数:定义所需变量,显示主菜单,接受用户选择,根据用户选择执行相应的自定义函数。

(2)密码确认由于输入、修改、删除操作需要具有一定权限的人员进行操作,所以在这些功能模块中应该有密码确认功能,例如,一段检测用户密码的程序段:#include <stdio.h>#include <string.h>void main(){ char password[20];printf(“请输入密码:”);gets(password);while(strcmp(password,”administrators”)!=0){printf(“\n无效密码”);printf(“\n请重新输入密码:”);gets(password);}printf(“OK!”);}(3)输入新信息功能定义结构体变量,建立一个文件,从键盘输入一条信息,到变量中,再将其写入文件中,例如,(4)修改信息首先输入要修改的联系人的名、或其它关键信息,从文件逐条读出信息进行比对,查找是否有该信息,没有就直接输出信息;有则进行修改,修改后的信息继续存入文件。

编制通讯录

电子通讯录功能如下:Function choose1.Read2.Append3.Delete4.Search5.Save and exit6.Quit说明:上图是电子通讯录的主菜单,利用它,将能够轻松地录入一个朋友的电话号码,通讯地址和出生日期,而且它还提供了检索和删除功能。

在后面还将提供按生日先后排序的功能,这些都有助于该通讯录的管理。

电子通讯录是采用线性表作为电子通讯录功能如下:Function choose1.Read2.Append3.Delete4.Search5.Save and exit6.Quit说明:上图是电子通讯录的主菜单,利用它,将能够轻松地录入一个朋友的电话号码,通讯地址和出生日期,而且它还提供了检索和删除功能。

在后面还将提供按生日先后排序的功能,这些都有助于该通讯录的管理。

电子通讯录是采用线性表作为程序的基本结构的。

设计思想:1。

用顺序表设计电子通讯录的结构为了表示较为复杂的数据内容,一般用结构这种数据类型,第一步就是在结构中定义所需要的各项信息。

一般的通讯录都包括姓名,性别,出生年月,通讯地址和联系电话这几项,而在这几项中,出生年月又包括年份,月份和日期三项,通讯地址包括邮编和家庭地址二项,我们把这些联系较为紧密的内容又用单独的结构表示,这样就产生了电子通讯录的基本结构:struct addr /*通讯地址结构定义*/{ char post_num[10]; /*邮编*/char addr[40]; /*家庭地址*/};struct birth /*出生年月结构定义*/{ int year; /*年份*/int month; /*月份*/int day; /*日期*/};struct friend /*电子通讯录结构定义*/{ int number; /*序号*/char name[20] /*姓名*/char sex; /*性别*/struct birth birth; /*出生年月*/struct addr addr; /*通信地址*/char telephone[13]; /*联系电话*/};定义的主结构friend包含了前述的五项内容 name,sex,和telephone分别代表了姓名,性别和联系电话。

java程序设计需求分析

课设题目:个人通讯录管理程序需求分析:
随着科技的进步和信息产业的飞速发展,通讯录成为了现代生活中一个重要的工具。

在“时间就是金钱”的今天,人们需要更加方便快捷的实现对自己通讯录的管理,来提高工作生活的效率。

本通讯录管理系统利用计算机对通讯录进行统一管理,正满足了人们普遍的需求。

一、功能需求分析
本通讯录包括用户登陆、添加记录、删除记录、显示所有记录、修改记录、查询记录、备份记录、退出等功能,通
2
3
4
5
6
7
通过点击备份按钮,系统将自动的把用户的所有记录信息打包备份。

8、退出
当用户不在对通讯录进行操作的时候,可以通过点击退出按钮退出系统。

二、性能需求分析
1. 数据精确度
查询时应保证查全率,所有相应域包含查询关键字的记录都应能查到。

来源于网络
2. 时间特性
一般操作的响应时间应在1~2秒内。

3、适应性
满足个人使用的需求(记录量控制在1000项内)。

三、目标对象需求分析
本系统主要为有计算机的用户设计,特别是为应对工作族大量的社会关系而设计。

来源于网络。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

import java.awt.Choice;import java.awt.Container;import java.awt.GridLayout;import java.awt.MenuItem;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.print.Printable;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.text.Collator;import java.util.Arrays;import parator;import java.util.Scanner;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenuBar;import javax.swing.JMenu;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.WindowConstants;public class MyAddBook {public static JFrame frame;public MyAddBook(){frame=new JFrame("个人通讯录");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);JMenuBar menubar=new JMenuBar();JMenu edit=new JMenu("编辑");JMenuItem edit1=new JMenuItem("录入");JMenuItem edit2=new JMenuItem("查询");JMenuItem edit3=new JMenuItem("删除");JMenuItem edit4=new JMenuItem("修改");JMenuItem edit5=new JMenuItem("排序");edit1.addActionListener(new Typein());JMenu show=new JMenu("显示信息");JMenuItem show1=new JMenuItem("同学");JMenuItem show2=new JMenuItem("同事");JMenuItem show3=new JMenuItem("朋友");JMenuItem show4=new JMenuItem("亲戚");JMenuItem show5=new JMenuItem("全体人员");Container c=frame.getContentPane();JPanel pane=new JPanel();c.add(pane);pane.add(menubar);menubar.add(edit);edit.add(edit1);edit.add(edit2);edit.add(edit3);edit.add(edit4);edit.add(edit5);menubar.add(show);show.add(show1);show.add(show2);show.add(show3);show.add(show4);show.add(show5);frame.setSize(300,100);//frame.pack();//查询修改删除class Search{JDialog dialog=new JDialog(frame,"查询对话框",true);public Search(String str,int n){dialog.setSize(250,200);Container c=dialog.getContentPane();dialog.setLayout(new GridLayout(2,1,5,5));JLabel Lsearch=new JLabel("请输入要"+str+"人员的名字:");final JTextField Tname=new JTextField(10);JButton certain=new JButton("确定");JButton cancel=new JButton("取消");//final String in=Tname.getText();JPanel pane1=new JPanel();JPanel pane2=new JPanel();c.add(pane1);c.add(pane2);pane1.add(Lsearch);pane1.add(Tname);pane2.add(certain);pane2.add(cancel);dialog.setDefaultCloseOperation(dialog.DISPOSE_ON_CLOSE);//dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);if(n==2){certain.addActionListener(new ActionListener() //查询{public void actionPerformed(ActionEvent e){try {FileReader file=new FileReader("D:\\AddressBook.txt");Scanner find=new Scanner(file);while(find.hasNext()){if(find.next().equals(Tname.getText())){dialog.dispose();Typein fd=new Typein();fd.frame=new JFrame("查询结果如下");fd.Tname.setText(Tname.getText());fd.Cgroup.select(find.next());fd.Cbirthyear.select(find.next());fd.Cbirthmonth.select(find.next());fd.Cbirthday.select(find.next());fd.Tphone.setText(find.next());fd.Temail.setText(find.next());fd.Tother.setText(find.next());fd.typein();}}file.close();find.close();} catch (FileNotFoundException e1) {// TODO Auto-generated catch block//e1.printStackTrace();System.out.print("未找到文件");} catch (IOException e2) {// TODO Auto-generated catch block//e2.printStackTrace();System.out.print("未找到该人员");}}});}if(n==3){certain.addActionListener(new ActionListener() //删除{public void actionPerformed(ActionEvent e){try {File file=new File("D:\\AddressBook.txt");Scanner find=new Scanner(file);FileWriter file1=new FileWriter("D:\\AddressBook1.txt",true);PrintWriter write=new PrintWriter(file1);while(find.hasNext()){String s=find.next();if(!(s.equals(Tname.getText()))){write.print(s+'\t');write.print(find.next()+'\t');write.print(find.next()+' ');write.print(find.next()+' ');write.print(find.next()+'\t');write.print(find.next()+'\t');write.print(find.next()+'\t');write.println(find.next());}else {find.next();find.next();find.next();find.next();find.next();find.next();find.next();}}//file.close();find.close();file.delete();write.close();file1.close();File file2=new File("D:\\AddressBook1.txt");file2.renameTo(new File( "D:\\AddressBook.txt"));JOptionPane.showMessageDialog(null,"删除成功","删除结果",RMATION_MESSAGE);} catch (FileNotFoundException e1) {// TODO Auto-generated catch block//e1.printStackTrace();JOptionPane.showMessageDialog(null, "未找到文件");} catch (IOException e2) {// TODO Auto-generated catch block//e2.printStackTrace();System.out.print("未找到该人员");}}});}if(n==4){certain.addActionListener(new ActionListener() //修改{public void actionPerformed(ActionEvent e){try {File file=new File("D:\\AddressBook.txt");Scanner find=new Scanner(file);FileWriter file1=new FileWriter("D:\\AddressBook1.txt",true);PrintWriter write=new PrintWriter(file1);while(find.hasNext()){String s=find.next();if(!(s.equals(Tname.getText()))){write.print(s+'\t');write.print(find.next()+'\t');write.print(find.next()+' ');write.print(find.next()+' ');write.print(find.next()+'\t');write.print(find.next()+'\t');write.print(find.next()+'\t');write.println(find.next());}else{dialog.dispose();Typein fd=new Typein();Typein.y=1;fd.frame=new JFrame("查询结果如下");fd.Tname.setText(Tname.getText());String s1=find.next();fd.Cgroup.select(s1);String s2=find.next();fd.Cbirthyear.select(s2);String s3=find.next();fd.Cbirthmonth.select(s3);String s4=find.next();fd.Cbirthday.select(s4);String s5=find.next();fd.Tphone.setText(s5);String s6=find.next();fd.Temail.setText(s6);String s7=find.next();fd.Tother.setText(s7);fd.typein();if(Typein.z==1){write.print(Tname.getText()+'\t');write.print(s1+'\t');write.print(s2+' ');write.print(s3+' ');write.print(s4+'\t');write.print(s5+'\t');write.print(s6+'\t');write.println(s7);Typein.z=2;}}}//file.close();find.close();file.delete();write.close();file1.close();File file2=new File("D:\\AddressBook1.txt");file2.renameTo(new File( "D:\\AddressBook.txt"));} catch (FileNotFoundException e1) {// TODO Auto-generated catch block//e1.printStackTrace();System.out.print("未找到文件");} catch (IOException e2) {// TODO Auto-generated catch block//e2.printStackTrace();System.out.print("未找到该人员");}}});}cancel.addActionListener(new ActionListener()//取消{public void actionPerformed(ActionEvent e){System.out.println("fdas");//dialog.dispose();}});}}edit2.addActionListener(new ActionListener() //监听查询{public void actionPerformed(ActionEvent e){new Search("查询",2).dialog.setVisible(true);}});edit3.addActionListener(new ActionListener() //监听删除{public void actionPerformed(ActionEvent e){new Search("删除",3).dialog.setVisible(true);}});edit4.addActionListener(new ActionListener() //监听修改{public void actionPerformed(ActionEvent e){new Search("修改",4).dialog.setVisible(true);}});//输出类class Print{public JTextArea area;public Print(String st,int n){JFrame frame = new JFrame(st+"信息如下");frame.setSize(800, 400);//frame.setLocation(350, 150);area = new JTextArea();frame.add(area);frame.setVisible(true);if(n==2)try//排序{int i,j,k;String []all;all=new String[1000];BufferedReader read=new BufferedReader(new FileReader("D:\\AddressBook.txt"));area.append("姓名"+'\t'+"组别"+'\t'+"生日"+'\t'+"电话"+'\t'+"Email"+'\t'+"其他"+'\n');int z=1,count=0;while(z==1){for(i=0;i<1000;i++){String str=read.readLine();if(str!=null){all[i]=str;count++;}else z=0;}}String[] bll;bll=new String[count];for(i=0;i<count;i++)bll[i]=all[i];getSortOfChinese(bll);for (i = 0; i < count; i++)area.append(bll[i]+'\n');read.close();}catch (FileNotFoundException e1) {e1.printStackTrace();}catch (IOException e2){e2.printStackTrace();}if(n==1)try//各类人员{FileReader file=new FileReader("D:\\AddressBook.txt");Scanner find=new Scanner(file);area.append("姓名"+'\t'+"组别"+'\t'+"生日"+'\t'+"电话"+'\t'+"Email"+'\t'+"其他"+'\n');while(find.hasNext()){String str1=find.next();String str2=find.next();if(str2.equals(st)){area.append(str1+'\t');area.append(str2+'\t');area.append(find.next()+' ');area.append(find.next()+' ');area.append(find.next()+'\t');area.append(find.next()+'\t');area.append(find.next()+'\t');area.append(find.next()+'\n');}else{find.next();find.next();find.next();find.next();find.next();find.next();}}file.close();find.close();}catch (FileNotFoundException e1) {e1.printStackTrace();}catch (IOException e2){e2.printStackTrace();}if(n==0)try//全体人员信息{BufferedReader read=new BufferedReader(new FileReader("D:\\AddressBook.txt"));area.append("姓名"+'\t'+"组别"+'\t'+"生日"+'\t'+"电话"+'\t'+"Email"+'\t'+"其他"+'\n');int z=1;while(z==1){String str=read.readLine();if(str!=null)area.append(str+'\n');else z=0;}read.close();}catch (FileNotFoundException e1) {e1.printStackTrace();}catch (IOException e2){e2.printStackTrace();}}}edit5.addActionListener(new ActionListener() //监听排序{public void actionPerformed(ActionEvent e){new Print("按姓名排序后",2);}});show1.addActionListener(new ActionListener() //监听同学{public void actionPerformed(ActionEvent e){new Print("同学",1);}});show2.addActionListener(new ActionListener() //监听同事{public void actionPerformed(ActionEvent e){new Print("同事",1);}});show3.addActionListener(new ActionListener() //监听朋友{public void actionPerformed(ActionEvent e){new Print("朋友",1);}});show4.addActionListener(new ActionListener() //监听亲戚{public void actionPerformed(ActionEvent e){new Print("亲戚",1);}});show5.addActionListener(new ActionListener() //监听全体人员{public void actionPerformed(ActionEvent e){new Print("全体人员",0);}});}public static void main(String []args){new MyAddBook();}public static String[] getSortOfChinese(String[] a) {// Collator 类是用来执行区分语言环境这里使用CHINAComparator cmp = Collator.getInstance(java.util.Locale.CHINA);// JDKz自带对数组进行排序。

相关文档
最新文档