七、源代码
MessageBook.java源代码;
其中,用到了两个表,一个数据源:
两个表: "通讯簿"
"Managerkey"
一个数据源: Messagerbook
一个连接: Help.exe (源代码第150行上下),代码中已设置为当前文件夹。
import java.awt.*;
import java.sql.*;
import java.util.*;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.io.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
public class MessageBook implements ActionListener{
private Frame fra;
static Panel panel;
private Button acceButt;
private Button bSetKey;
private Button bFind;
private Button bInfor;
public static TextField outPutN;
public static TextField outPutT;
static CardLayout card;
private Interface inter;
private Accession acce;
private SetKey setKey;
private Find find;
private MenuItem mnuClose;
private MenuItem mnuEdition;
MessageBook(){
fra=new Frame("通讯簿管理系统");//生成一个窗口
fra.setLayout(null);
fra.setSize(750,500);
fra.setBackground(Color.white);
fra.setVisible(true);
fra.setIconImage((new javax.swing.ImageIcon("images/abc.gif")).getImage());
acceButt=new Button("添加"); //加入一个添加的按纽
acceButt.setSize(90,25);
acceButt.setLocation(45,80);
fra.add(acceButt);
acceButt.addActionListener(this);
//加入一个设置密码的按纽
bSetKey=new Button("设置密码");
bSetKey.setSize(90,25);
bSetKey.setLocation(45,200);
fra.add(bSetKey);
bSetKey.addActionListener(this);
//加入一个查找的按纽
bFind=new Button("查询");
bFind.setSize(90,25);
bFind.setLocation(45,140);
fra.add(bFind);
bFind.addActionListener(this);
//加入一个用户帮助手册的按钮
bInfor=new Button("用户手册");
bInfor.setSize(90,25);
bInfor.setLocation(45,260);
fra.add(bInfor);
bInfor.addActionListener(this);
MenuBar mb=new MenuBar();
fra.setMenuBar(mb);
Menu m1=new Menu("操作");
mnuClose=new MenuItem("关闭(&C)");
mnuClose.addActionListener(new ButtonExitClick());//设置菜单事件处理
mnuClose.setShortcut(new MenuShortcut(KeyEvent.VK_C));//设置菜单快捷键
m1.add(mnuClose);
mb.add(m1);
Menu m2=new Menu("关于");
mnuEdition=new MenuItem("版本");
mnuEdition.addActionListener(new MnuEdi());
m2.add(mnuEdition);
mb.add(m2);
outPutN=new TextField(15);
outPutN.setSize(100,20);
outPutN.setLocation(30,420);
outPutN.setEditable(false);
fra.add(outPutN);
/* outPutT=new TextField(15);
outPutT.setSize(100,20);
outPutT.setLocation(30,350);
outPutT.setEditable(false);
fra.add(outPutT);
*/
acce=new Accession(); //生成一个添加功能的界面
inter=new Interface();
setKey=new SetKey();
find=new Find();
NowTime time= new NowTime();
panel=new Panel();
panel.setSize(550,400);
card=new CardLayout();
panel.setLayout(card);
panel.setLocation(155,70);
panel.setVisible(true);
panel.setBackground(Color.pink);
panel.add("a",inter);
panel.add("c",acce);
panel.add("d",setKey);
panel.add("f",find);
fra.add(panel);
//处理窗口关闭事件
fra.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
}
public void actionPerformed(ActionEvent t){
if(t.getSource()==acceButt){
card.show(panel,"c");
}
if(t.getSource()==bSetKey){
card.show(panel,"d");
}
if(t.getSource()==bFind){
card.show(panel,"f");
}
if(t.getSource()==bInfor){
try{
Runtime ce=Runtime.getRuntime();
File file=new File(".","Help.exe");
ce.exec(file.getAbsolutePath());
}catch(Exception e){
JOptionPane.showMessageDialog(null,e,"帮助信息",JOptionPane.WARNING_MESSAGE);
}
}
}
public static void main(String[] arg){
MessageBook messageBook=new MessageBook();
}
}
class NowTime{
private Date time ;
SimpleDateFormat matter1,matter2;
NowTime(){
time =new Date();
matter1=new SimpleDateFormat("yyyy年MM月DD日");
matter2=new SimpleDateFormat("HH时MM分ss秒");
String sTimeN=matter1.format(time);
MessageBook.outPutN.setText(sTimeN);
/* while(true){
String sTimeT=matter2.format(time);
MessageBook.outPutT.setText(sTimeT);
} */
}
}
//监视采单栏中的版本所触发的事件
class MnuEdi implements ActionListener{
public void actionPerformed(ActionEvent ae){
JOptionPane.showMessageDialog(null,"版本: V 1.001 /n 如有任何疑问请发送邮件到:/n lingyun8412@163.com/n 我们将真诚的为你解答/n 电子科技大学成都学院软件工程第50组/n谢谢使用!/nCopyright OnceTry@2007",
"版本",JOptionPane.INFORMATION_MESSAGE);
}
}
//处理关闭按钮事件退出程序。
class ButtonExitClick implements ActionListener{
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
//添加界面
class Accession extends Panel implements ActionListener{
private static boolean bSign=false;//用来标志是否有输入错误
static Choice sortCho;
private Button button;
static TextField tfName;
static CheckboxGroup cgSex;
static TextField tfTelep;
static TextField tffTel;
static TextField tfMobile;
static TextField tfqq;
static TextField tfEmail;
static TextField tfAddress;
private Button bEnsure,bEnterAgain;
private Panel accPanel;
public static boolean minHaiLee=true;
public static Checkbox cg1;
public static Checkbox cg2;
//添加面板上的按纽 文本框
private Button bAcEnsure;
private TextField tfAc;
Accession(){ //构造函数
super();
setSize(550,400);
setLayout(null);
Panel pan1=new Panel();
pan1.setSize(350,30);
pan1.setLocation(0,0);
pan1.setLayout(null);
Label lsort=new Label("类别:");
lsort.setSize(50,20);
lsort.setLocation(0,0);
pan1.add(lsort);
//添加一个下拉列表
sortCho=new Choice();
sortCho.setLocation(90,0);
sortCho.setSize(130,20);
pan1.add(sortCho);
//用数据库的信息反添下拉列表
String sfsortCho="select distinct 关系 from 通讯簿";
String sResult=conection(sfsortCho,3);
StringTokenizer st=new StringTokenizer(sResult," ");
do{
String nn=st.nextToken();
sortCho.addItem(nn);
}while(st.hasMoreTokens());
//增加一个添加类的按纽
button=new Button("添加类别");
button.setSize(90,23);
button.setLocation(240,5);
pan1.add(button);
add(pan1); //把pan1加入到
button.addActionListener(this);
//输入姓名
Label lname=new Label("姓名:");
lname.setSize(50,20);
lname.setLocation(0,40);
add(lname);
tfName = new TextField(15);
tfName.setSize(130,20);
tfName.setLocation(90,40);
add(tfName);
tfName.addActionListener(new PressEnter());
///性别
Label lsex=new Label("性别:");
lsex.setSize(50,20);
lsex.setLocation(0,80);
add(lsex);
cgSex=new CheckboxGroup();
cg1=new Checkbox("男",cgSex,true);
cg2=new Checkbox("女",cgSex,false);
cg1.setSize(40,20);
cg2.setSize(40,20);
cg1.setLocation(100,80);
cg2.setLocation(150,80);
this.add(cg1);
this.add(cg2);
//添加办公电话
Label ltelep=new Label("办公电话:");
ltelep.setSize(80,20);
ltelep.setLocation(0,120);
add(ltelep);
tfTelep=new TextField(10);
tfTelep.setSize(130,20);
tfTelep.setLocation(90,120);
add(tfTelep);
tfTelep.addActionListener(new PressEnter());
//添加移动电话
Label lmobile=new Label("移动电话:");
lmobile.setSize(80,20);
lmobile.setLocation(0,160);
add(lmobile);
tfMobile=new TextField(10);
tfMobile.setSize(130,20);
tfMobile.setLocation(90,160);
add(tfMobile);
tfMobile.addActionListener( new PressEnter());
//添加家庭电话
Label lfTel=new Label("家庭电话:");
lfTel.setSize(80,20);
lfTel.setLocation(0,200);
add(lfTel);
tffTel=new TextField(10);
tffTel.setSize(130,20);
tffTel.setLocation(90,200);
add(tffTel);
tffTel.addActionListener(new PressEnter());
// 添加qq 号
Label lqq=new Label("QQ号:");
lqq.setSize(80,20);
lqq.setLocation(0,240);
add(lqq);
tfqq=new TextField(10);
tfqq.setSize(130,20);
tfqq.setLocation(90,240);
add(tfqq);
tfqq.addActionListener(new PressEnter());
//电子邮箱
Label lemail=new Label("电子邮箱:");
lemail.setSize(80,20);
lemail.setLocation(0,290);
add(lemail);
tfEmail=new TextField(10);
tfEmail.setSize(130,20);
tfEmail.setLocation(90,290);
add(tfEmail);
tfEmail.addActionListener(new PressEnter());
//联系地址
Label laddress=new Label("联系地址:");
laddress.setSize(80,20);
laddress.setLocation(0,340);
add(laddress);
tfAddress=new TextField(10);
tfAddress.setSize(130,20);
tfAddress.setLocation(90,340);
add(tfAddress);
tfAddress.addActionListener( new PressEnter());
//添加确定和从新输入的按钮
bEnsure=new Button("确定");
bEnsure.setSize(90,23);
bEnsure.setLocation(240,340);
add(bEnsure);
bEnterAgain=new Button("从新输入");
bEnterAgain.setSize(90,23);
bEnterAgain.setLocation(380,340) ;
add(bEnterAgain);
bEnsure.addActionListener(this);
bEnterAgain.addActionListener(this);
//设置添加类的面板
accPanel=new Panel();
accPanel.setLayout(null);
accPanel.setSize(200,140);
accPanel.setLocation(240,40) ;
accPanel.setVisible(false);
accPanel.setBackground(Color.pink);
add(accPanel);
tfAc=new TextField(10);
tfAc.setSize(130,20);
tfAc.setLocation(10,40);
accPanel.add(tfAc);
bAcEnsure=new Button("确定");
bAcEnsure.setSize(55,20);
bAcEnsure.setLocation(45,75);
accPanel.add(bAcEnsure);
bAcEnsure.addActionListener(this);
Label bbb=new Label("请输入新类别的名字:");
bbb.setSize(120,20);
bbb.setLocation(0,0);
accPanel.add(bbb);
setBackground(Color.pink);
this.validate();
}
//处理按纽所触发的事件
public void actionPerformed(ActionEvent e){
if(e.getSource()==bEnsure){ //响应确定按纽的事件
if(tfName.getText().equals("")){ //检测对话框中是否有非法输入
bSign=true;
JOptionPane.showMessageDialog(this,"姓名不能为空!","警告",JOptionPane.WARNING_MESSAGE);
}
String name=tfName.getText();
String stfTelep=tfTelep.getText();
bSign=detectFun(stfTelep,"办公电话应为数字!!",1);
String stfMobile=tfMobile.getText();
bSign=detectFun(stfMobile,"移动电话应为数字!!",1);
String stffTel=tffTel.getText();
bSign=detectFun(stffTel,"家庭电话输入有误!!",1);
String stfqq=tfqq.getText();
bSign=detectFun(stfqq,"QQ应为数字!!",1);
String stfAddress=tfAddress.getText();
bSign=detectFun(stfAddress,"地址栏中输入非法字符!!",2);
String stfEmail=tfEmail.getText();
bSign=detectFun(stfEmail,"Email 地址的格式不正确!!",3);
//把信息添加到数据库中
if(bSign==false){
String scgSex=cgSex.getSelectedCheckbox().getLabel();
String ssortCho=sortCho.getSelectedItem();
String string="";
if(minHaiLee==true){
string="INSERT INTO 通讯簿 VALUES (" +"'"+ name +"'"+","+ "'"+ scgSex +"'"
+"," +"'"+ stfTelep+"'"+","+ "'"+ stfMobile+"'"+","+"'"+ stffTel +"'"+","+"'"
+ stfqq+"'"+"," +"'"+stfEmail+"'"+","+"'"+stfAddress+"'"+","+"'"+ ssortCho +"'"+")";
}else{
string="update 通讯簿 set "+"性别="+"'"+ scgSex +"'"+","+"办公电话="+"'"+stfTelep+"'"+","+
"移动电话="+ "'"+stfMobile+"'"+","+"家庭电话="+"'"+ stffTel+"'" +","+"QQ=" +"'"+ stfqq+"'"+","+
"Email=" +"'"+stfEmail+"'"+","+"联系地址="+"'"+stfAddress+"'"+","+"关系="+"'"+ ssortCho +"'"
+"where 姓名="+"'"+ name +"'";
minHaiLee=true;
}
conection(string,1); //调用连接数据库函数
//清空文本框中的内容
tfName.setText("");
tfTelep.setText("");
tfMobile.setText("");
tffTel.setText("");
tfqq.setText("");
tfEmail.setText("");
tfAddress.setText("");
JOptionPane.showMessageDialog(this,"^-^ 信息添加成功 ^-^","成功",JOptionPane.WARNING_MESSAGE);
}
}
//响应从新输入的按纽所触发的事件
if(e.getSource()==bEnterAgain){
tfName.setText("");
tfTelep.setText("");
tfMobile.setText("");
tffTel.setText("");
tfqq.setText("");
tfEmail.setText("");
tfAddress.setText("");
} //创建新的类型按纽所触发的事件
if(e.getSource()==button){
accPanel.setVisible(true);
}
//响应创建新类的确定按纽所触发的事件
if(e.getSource()==bAcEnsure){
String s=tfAc.getText();
boolean b3=detectFun(s,"命名出错!!",2);
if(b3==false){
if(!s.equals("")){
// sortCho.add(s);
sortCho.addItem(s);
tfAc.setText("");
accPanel.setVisible(false);
}else{
accPanel.setVisible(false);
}
}
}
}
//连接数据库函数 n=1检测是否为数字n=2时检测是否为数字或字符
//n=3时检测email输入中格式是否正确
public static String conection(String conString,int n) {
ResultSet rs=null;
String kkey="";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException t){
JOptionPane.showMessageDialog(null,t,"连接失败",JOptionPane.WARNING_MESSAGE);
}
try{
Connection con=DriverManager.getConnection("jdbc:odbc:Messagerbook","lingyun","123123");
Statement sta=con.createStatement();
if(n==1){
sta.executeUpdate(conString);
}
if(n==2){
rs=sta.executeQuery(conString);
rs.next(); //无效的游标状态指resultset返回的是第一列前的一行
//所以要下移一行
kkey=rs.getString(1);
kkey=kkey.trim();
}
if(n==3){
rs=sta.executeQuery(conString);
while(rs.next()){
kkey+=rs.getString(1);
kkey=kkey.trim();
kkey=kkey+" ";
}
}
if(n==4){
rs=sta.executeQuery(conString);
rs.next();
String sfind="";
for(int i=1;i<10;i++){
sfind=rs.getString(i); //嘿嘿 此处可以不消除读出字符串的空格
kkey+= sfind + ",";
}
}
if(n==5){
sta=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=sta.executeQuery(conString);
rs.beforeFirst();
rs.next();
while(!rs.isAfterLast()){
for(int i=1;i<10;i++){
String sfind=rs.getString(i);
kkey+= sfind + ",";
}
rs.next();
}
}
con.close();
}catch(SQLException ll){
JOptionPane.showMessageDialog(null,ll,"数据库出错",JOptionPane.WARNING_MESSAGE);
}
return (kkey);
}
//检测函数
public static boolean detectFun(String s,String st,int n){
boolean bool=false;
if(n==1){
if(!s.equals("")){
char read[]=s.toCharArray();
for(int i=0;i<read.length;i++){
if(!Character.isDigit(read[i])&&read[i]!='-'){
bool=true;
break;
}
}
if(bool==true){
JOptionPane.showMessageDialog(null,st,"警告",JOptionPane.WARNING_MESSAGE);
return (true);
}else
return (false);
}
}else if(n==2){
if(!s.equals("")){
char read[]=s.toCharArray();
bool=false;
for(int i=0;i<read.length;i++){
boolean bo=Character.isLetterOrDigit(read[i]);
if(!bo){
bool=true;
break;
}
}
if(bool==true){
JOptionPane.showMessageDialog(null,st,"警告",JOptionPane.WARNING_MESSAGE);
return(true);
}else
return false;
}
}else{
if(!s.equals("")){
char read[]=s.toCharArray();
bool=true;
for(int i=0;i<read.length;i++){
if(read[i]=='@'){
bool=false;
break;
}
}
if(bool==true){
JOptionPane.showMessageDialog(null,st,"警告",JOptionPane.WARNING_MESSAGE);
return(true);
}else
return(false);
}
}
return (bSign);
}
}
//回车事件处理,焦点移动
class PressEnter implements ActionListener{
public void actionPerformed(ActionEvent e){
Component c=(Component)e.getSource();
c.transferFocus();
}
}
//欢迎界面
class Interface extends Panel{
Font fo;
Interface(){
super();
this.setBackground(Color.pink);
this.setSize(550,400);
this.setLayout(null);
fo=new Font("宋体",Font.ITALIC,30);
Label lWelcome=new Label("欢迎进入通讯簿管理系统");
lWelcome.setFont(fo);
lWelcome.setSize(340,50);
lWelcome.setLocation(110,75);
add(lWelcome);
Label lname=new Label("李敏海 ");
Label lname1=new Label("何志方 李彬 吴煜峰");
Label lname2=new Label("刘富益 李琨 鲍春宇");
fo=new Font("宋体",Font.ITALIC,18);
lname.setFont(fo);
lname.setSize(60,20);
lname.setLocation(220,170);
add(lname);
lname1.setFont(fo);
lname1.setSize(170,20);
lname1.setLocation(250,200);
add(lname1);
lname2.setFont(fo);
lname2.setSize(170,20);
lname2.setLocation(280,230);
add(lname2);
Label lgn=new Label("OnceTry开发小组");
lgn.setFont(new Font("宋体",Font.CENTER_BASELINE,20));
lgn.setSize(250,25);
lgn.setLocation(170,320);
add(lgn);
validate();
}
}
//设置密码界面
class SetKey extends Panel implements ActionListener{
private TextField tfNewKey;
private TextField tfKeyAgain;
private TextField tfOldKey;
private Button bKeyEnsure;
private Button bHideEnsure;
private Button bAmend;
private Panel panel1;
SetKey(){
super();
this.setSize(550,400);
this.setLayout(null);
this.setBackground(Color.pink);
Label ltitle=new Label("密 码 管 理");
ltitle.setFont(new Font("宋体",Font.BOLD,20));
ltitle.setSize(120,30);
ltitle.setLocation(0,50);
add(ltitle);
panel1=new Panel();
panel1.setLayout(null);
panel1.setSize(260,30);
panel1.setLocation(0,80);
panel1.setVisible(false);
panel1.setBackground(Color.pink);
add(panel1);
//旧密码的文本框
Label lOldKey=new Label("请输入旧密码:");
lOldKey.setSize(80,20);
lOldKey.setLocation(0,0);
panel1.add(lOldKey);
tfOldKey=new TextField(10);
tfOldKey.setSize(130,20);
tfOldKey.setLocation(90,0);
tfOldKey.setEchoChar('*');
panel1.add(tfOldKey);
tfOldKey.addActionListener(new PressEnter());
//新密码框
Label lNewKey=new Label("请输入新密码:");
lNewKey.setSize(80,20);
lNewKey.setLocation(0,130);
add(lNewKey);
tfNewKey=new TextField(10);
tfNewKey.setSize(130,20);
tfNewKey.setLocation(90,130);
tfNewKey.setEchoChar('*');
add(tfNewKey);
tfNewKey.addActionListener(new PressEnter());
//确认密码
Label lensure=new Label("请从新输入:");
lensure.setSize(80,20);
lensure.setLocation(0,180);
add(lensure);
tfKeyAgain=new TextField(10);
tfKeyAgain.setSize(130,20);
tfKeyAgain.setLocation(90,180);
tfKeyAgain.setEchoChar('*');
add(tfKeyAgain);
tfKeyAgain.addActionListener(new PressEnter());
//添加确定按钮
bKeyEnsure=new Button("确定");
bKeyEnsure.setSize(60,20) ;
bKeyEnsure.setLocation(70,250);
add(bKeyEnsure);
bKeyEnsure.addActionListener(this);
bHideEnsure=new Button("确定");
bHideEnsure.setSize(60,20) ;
bHideEnsure.setLocation(70,250);
bHideEnsure.setVisible(false);
add(bHideEnsure);
bHideEnsure.addActionListener(this);
bAmend=new Button("修改");
bAmend.setSize(60,20) ;
bAmend.setLocation(170,250);
add(bAmend);
bAmend.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
String strKey="select 密码 from Managerkey" ;
String sOldKey=Accession.conection(strKey,2); //存储数据库中已经存在的密码
if(e.getSource()==bKeyEnsure){
if(sOldKey.equals("")){
keyDetect();
}else{
JOptionPane.showMessageDialog(null,"密码已存在请点击修改按纽进行密码设置!!","警告",JOptionPane.WARNING_MESSAGE);
}
}
if(e.getSource()==bHideEnsure){
String stfOldKey=tfOldKey.getText();
if(stfOldKey.equals(sOldKey)){
keyDetect();
tfOldKey.setText("");
bHideEnsure.setVisible(false);
bKeyEnsure.setVisible(true);
}else{
JOptionPane.showMessageDialog(null,"输入的旧密码不正确!!","警告",JOptionPane.WARNING_MESSAGE);
}
}
if(e.getSource()==bAmend){
tfNewKey.setText("");
tfKeyAgain.setText("");
panel1.setVisible(true);
bKeyEnsure.setVisible(false);
bHideEnsure.setVisible(true);
}
}
public void keyDetect(){
String strK=null;
String stfNewKey=tfNewKey.getText();
Accession.detectFun(stfNewKey,"新密码首次输入中出现了非法字符!!",2);
String stfKeyAgain=tfKeyAgain.getText();
Accession.detectFun(stfKeyAgain,"新密码第二次输入中出现了非法字符!!",2);
if(stfNewKey.equals(stfKeyAgain)){
strK="update ManagerKey set 密码="+ stfNewKey;
Accession.conection(strK,1);
JOptionPane.showMessageDialog(null,"密码设置成功!!","成功",JOptionPane.WARNING_MESSAGE);
panel1.setVisible(false);
tfNewKey.setText("");
tfKeyAgain.setText("");
}else{
JOptionPane.showMessageDialog(null,"两次输入的密码不一致!!","警告",JOptionPane.WARNING_MESSAGE);
}
}
}
//查询界面
class Find extends Panel implements ActionListener{
private TextField schName;
private TextField schSex;
private TextField delpwd,pwd;
private TextArea schResult;
private Choice chProvice;
private Button btnSearch,btnDelate,btnUpdate,bDelOk,bDelNo;
private Button btnDelEn;
private Panel delPanel,delpw;
private Button btnDelEnsure, btnDelConcel;
private TextField tfdelName;
private boolean bbtn=false;
Find(){
super();
setLayout(null);
setSize(550,400);
setBackground(Color.pink);
//信息查询的标签
Label ltitle=new Label("管理操作");
ltitle.setFont(new Font("宋体",Font.BOLD,20));
ltitle.setSize(120,30);
ltitle.setLocation(0,17);
add(ltitle);
//标签
Label l1=new Label("姓名:");
l1.setSize(50,20);
l1.setLocation(25,270);
add(l1);
Label l2=new Label("性别:");
l2.setSize(50,20);
l2.setLocation(200,270);
add(l2);
Label l3=new Label("分组:");
l3.setSize(50,20);
l3.setLocation(375,270);
add(l3);
//当要删除时,给一个验证密码的界面
delpw=new Panel();
delpw.setLayout(null);
delpw.setSize(500,200);
delpw.setLocation(25,50);
delpw.setVisible(false);
delpw.validate();
add(delpw);
Label l6=new Label("请输入您的密码:");
l6.setSize(100,20);
l6.setLocation(80,50);
delpw.add(l6);
bDelOk=new Button("确定");
bDelOk.setSize(50,20);
bDelOk.setLocation(160,100);
delpw.add(bDelOk);
bDelOk.addActionListener(this);
bDelNo=new Button("取消");
bDelNo.setSize(50,20);
bDelNo.setLocation(250,100);
delpw.add(bDelNo);
bDelNo.addActionListener(this);
//当要删除时,给一个输入界面
delPanel=new Panel();
delPanel.setLayout(null);
delPanel.setSize(500,200);
delPanel.setLocation(25,50);
delPanel.setVisible(false);
delPanel.validate();
add(delPanel);
Label l4=new Label("请输入姓名:");
l4.setSize(70,20);
l4.setLocation(100,50);
delPanel.add(l4);
tfdelName=new TextField(10);
tfdelName.setSize(150,20);
tfdelName.setLocation(200,50);
delPanel.add(tfdelName);
btnDelEnsure=new Button("确定");
btnDelEnsure.setSize(50,20);
btnDelEnsure.setLocation(160,100);
delPanel.add(btnDelEnsure);
btnDelEnsure.addActionListener(this);
btnDelEn=new Button("确定");
btnDelEn.setSize(50,20);
btnDelEn.setLocation(160,100);
delPanel.add(btnDelEn);
btnDelEn.setVisible(false);
btnDelEn.addActionListener(this);
btnDelConcel=new Button("取消");
btnDelConcel.setSize(50,20);
btnDelConcel.setLocation(250,100);
delPanel.add(btnDelConcel);
btnDelConcel.addActionListener(this);
//设置下拉菜单
chProvice=new Choice();
chProvice.setSize(100,50);
chProvice.setLocation(425,270);
add(chProvice);
String sfsortCho="select distinct 关系 from 通讯簿";
String sResult=Accession.conection(sfsortCho,3);
StringTokenizer st=new StringTokenizer(sResult," ");
do{
String nn=st.nextToken();
chProvice.addItem(nn);
}while(st.hasMoreTokens());
//文本输入框TextFiled
schName=new TextField(10);
schName.setSize(100,20);
schName.setLocation(75,270);
add(schName);
schName.addActionListener(new PressEnter());
schSex=new TextField(10);
schSex.setSize(100,20);
schSex.setLocation(250,270);
add(schSex);
schSex.addActionListener(new PressEnter());
delpwd=new TextField(10);
delpwd.setSize(140,20);
delpwd.setLocation(200,50);
delpwd.setEchoChar('*');
delpw.add(delpwd);
delpwd.addActionListener(new PressEnter());
//多行文本TextArea
schResult=new TextArea("",10,100);
schResult.setSize(500,200);
schResult.setLocation(25,50);
schResult.setFont(new Font("宋体",Font.BOLD,15));//设置字体
schResult.setEditable(false);
add(schResult);
//按钮
btnSearch=new Button("查找");
btnSearch.setLocation(35,350);
btnSearch.setSize(100,30);
add(btnSearch);
//设置保存按钮的事件监听器。
btnSearch.addActionListener(this);
btnDelate=new Button("删除");
btnDelate.setLocation(225,350);
btnDelate.setSize(100,30);
add(btnDelate);
//设置删除按钮的事件监听器。
btnDelate.addActionListener(this);
btnUpdate=new Button("修改");
btnUpdate.setLocation(425,350);
btnUpdate.setSize(100,30);
add(btnUpdate);
//设置修改按钮的事件监听器。
btnUpdate.addActionListener(this);
}
// 处理各个按钮产生的事件
public void actionPerformed(ActionEvent e){
//处理查询按钮事件
if((e.getSource()==btnSearch)){
String sName=schName.getText();
String sSex=schSex.getText();
String ssql="";
String sRalation=chProvice.getSelectedItem();
if(!sName.equals("")){
Accession.detectFun(sName,"姓名框中有非法字符!!",2);
ssql="select * from 通讯簿 where 姓名="+"'"+sName+"'";
sName=Accession.conection(ssql,4) ;
if(sName.equals("")){
JOptionPane.showMessageDialog(null,"数据库中不存在你要查找的信息!!","查询失败",JOptionPane.WARNING_MESSAGE);
}else{
writeTextArea(sName);
schName.setText("");
}
}else if(!sSex.equals("")){
Accession.detectFun(sSex,"性别框中有非法字符!!",2);
ssql="select * from 通讯簿 where 性别="+"'"+sSex+"'";
sSex=Accession.conection(ssql,5);
writeTextArea(sSex);
schSex.setText("");
}else {
ssql="select * from 通讯簿 where 关系="+"'"+sRalation+"'";
sRalation=Accession.conection(ssql,5);
writeTextArea(sRalation);
}
}
//处理删除按钮事件:
if(e.getSource()==btnDelate){
delpw.setVisible(true);
bbtn=false;
schName.setEditable(false);
schSex.setEditable(false);
chProvice.setEnabled(false);
btnDelate.setEnabled(false);
btnSearch.setEnabled(false);
btnUpdate.setEnabled(false);
}
//处理要删除的验证信息
//与数据库连接处理密码的验证信息
if(e.getSource()==bDelOk){
String strKey="select 密码 from ManagerKey" ;
String sOldKey=Accession.conection(strKey,2);
strKey = delpwd.getText();
if(sOldKey.equals(strKey)){
delpw.setVisible(false);
delPanel.setVisible(true);
delpwd.setText("");
if(bbtn==false){ //用bbtn 来监视 在delpael上显示的按纽
btnDelEnsure.setVisible(true);
btnDelEn.setVisible(false);
}else{
btnDelEnsure.setVisible(false);
btnDelEn.setVisible(true);
}
} else{
JOptionPane.showMessageDialog(null,"输入密码不正确!!","密码错误",JOptionPane.WARNING_MESSAGE);
}
}
if(e.getSource()==bDelNo){
delpw.setVisible(false);
delpwd.setText("");
schName.setEditable(true);
schSex.setEditable(true);
chProvice.setEnabled(true);
btnDelate.setEnabled(true);
btnSearch.setEnabled(true);
btnUpdate.setEnabled(true);
}
if(e.getSource()==btnDelEnsure){
String stfDelName=tfdelName.getText();
if(!stfDelName.equals("")){
boolean bb=Accession.detectFun(stfDelName,"姓名框中输入了非法字符!!",2);
if(bb==false){
String sDelSql="delete from 通讯簿 where 姓名="+"'"+stfDelName+"'";
Accession.conection(sDelSql,1);
JOptionPane.showMessageDialog(null,"信息已经删除!!","删除成功",JOptionPane.WARNING_MESSAGE);
tfdelName.setText("");
delPanel.setVisible(false);
schName.setEditable(true);
schSex.setEditable(true);
chProvice.setEnabled(true);
btnDelate.setEnabled(true);
btnSearch.setEnabled(true);
btnUpdate.setEnabled(true);
}
}else{
JOptionPane.showMessageDialog(null,"姓名不能为空!!","删除",JOptionPane.WARNING_MESSAGE);
}
}
if(e.getSource()==btnDelConcel) {
delPanel.setVisible(false);
schName.setEditable(true);
schSex.setEditable(true);
chProvice.setEnabled(true);
btnDelate.setEnabled(true);
btnSearch.setEnabled(true);
btnUpdate.setEnabled(true);
}
if(e.getSource()==btnDelEn){
Accession.minHaiLee=false; //用来控制数据库操作的语句
String stfDelName=tfdelName.getText();
if(!stfDelName.equals("")){
boolean bb=Accession.detectFun(stfDelName,"姓名框中输入了非法字符!!",2);
if(bb==false){
String sAmendSql="select * from 通讯簿 where 姓名="+"'"+stfDelName+"'";
String sAmend=Accession.conection(sAmendSql,4);
StringTokenizer st=new StringTokenizer(sAmend,",");
for(int i=1;i<10;i++){ //把读出的字符串反添入添加的界面中进行信息的修改
String ac=st.nextToken().trim();
if(ac.equals(""))
ac="" ;
switch(i){
case 1:Accession.tfName.setText(ac);
break;
case 2:if(ac.equals("男"))
Accession.cg1.setState(true);
else
Accession.cg2.setState(true);
break;
case 3:Accession.tfTelep.setText(ac);
break;
case 4:Accession.tfMobile.setText(ac);
break;
case 5:Accession.tffTel.setText(ac);
break;
case 6:Accession.tfqq.setText(ac);
break;
case 7:Accession.tfEmail.setText(ac);
break;
case 8:Accession.tfAddress.setText(ac);
break;
case 9:Accession.sortCho.select(ac);
break;
}
}
MessageBook.card.show(MessageBook.panel,"c");
tfdelName.setText("");
delPanel.setVisible(false);
schName.setEditable(true);
schSex.setEditable(true);
chProvice.setEnabled(true);
btnDelate.setEnabled(true);
btnSearch.setEnabled(true);
btnUpdate.setEnabled(true);
}
}else{
JOptionPane.showMessageDialog(null,"姓名不能为空!!","删除",JOptionPane.WARNING_MESSAGE);
}
}
//处理修改按钮事件:
if(e.getSource()==btnUpdate){
delpw.setVisible(true); //置输入密码的界面为true
bbtn=true;
schName.setEditable(false);
schSex.setEditable(false);
chProvice.setEnabled(false);
btnDelate.setEnabled(false);
btnSearch.setEnabled(false);
btnUpdate.setEnabled(false);
}
//处理要修改的验证信息
}
//向文本区中添加查询结果的函数
public void writeTextArea(String swrite){
StringTokenizer st=new StringTokenizer(swrite,",");
schResult.setText("");
int n=0;
do{
if(n%9==0){
schResult.append("/n");
}
String nn=st.nextToken();
schResult.append(nn);
n++;
}while(st.hasMoreTokens());
}
}
(未完待续)