个人通讯录(swing)
题目:个人通讯录
一、语言和环境
1.实现语言:Java
2.环境要求:Eclipse,SQL Server 2005及其联机帮助文档
二、数据库表结构
表名LINKMAN 实体名称联系人信息表
主键NAME
序号字段名称字段说明类型属性约束
1 NAME 姓名V ARCHAR 20 主键,非空
2 MOBILE_PHO
移动电话V ARCHAR 15
NE
3 PHONE_NUM 固定电话V ARCHAR 15
4 EMAIL 电子邮件V ARCHAR 100
三、要求
1.利用Swing编程,编写一个个人通讯录的小程序。要求输入联系人的信息,写入数
据库表中,并根据各种情况给出相应的提示。
2.程序初始界面如图1:
图1:程序运行初始界面
3.要求设置窗体标题,要求窗口不能改变大小,窗口在关闭时程序自动终止.
4.输入联系人的信息,点击【添加】按钮,给出相应提示信息,如图2所示:
图2:添加成功
5.如果数据操作方面出现问题,给出提示,如图3所以示:
图3:数据操作方面出现问题
6.点击【清空】按钮可以清空已经录入的联系人信息,重新进行录入.
7.录入的具体要求:
要求判断录入的信息是否完整,姓名不能为空.(其它项可以为空)如图4所示:
图4:判断姓名是否为空
8.查询操作:
要求在下方的查询联系人面板中的文本框内录入需要查找的联系人姓名:如果联系人不存在.则在下方的文本域中显示"没有联系人"。如图5所示:
图5:查找不到联系人
9.如果联系人存在,则在下方的文本域中显示此联系人的所有信息:如图6所示:
图6:显示联系人信息
四、推荐实现步骤
1、在SQL Server 2005中新建EXAM数据库,并在此数据库中创建LINKMAN表,按
照数据库表设计要求来设置字段;插入以下测试数据:
insert into linkman
values('卡卡西','135********','0731*******','kakaxi@https://www.360docs.net/doc/a010954755.html,');
insert into linkman
values('鸣人','135********','0731*******','mingren@https://www.360docs.net/doc/a010954755.html,');
2、创建LINKMAN表对应的简单对象Linkman类,这个类中的属性于表中的字段一一
对应。并编写相应的get/set方法。
3、创建访问操作LINKMAN表的数据访问类LinkmanDao类。其中包添加联系人的方
法addLinkman和查询联系人的方法queryLinkman方法。(为了提高效率可以将编写一个连接数据库的工具类DBUtil,专门用来得获取数据库连接)。
4、使用eclipse可视化控件设计出软件界面,应当:
A、继承JFrame;
B、正确定义和显示图1中的所有组件:
C、设置窗口大小、标题,显示窗口等;
D、为【清空】,【添加】,【查询】按钮注册监听器,完成对应的事件功能。
5、编写main函数;
6、运行调试;
7、分离数据库并与代码一同提交。
五、注意事项
A、仔细审题,把题目要求理解准确;
B、请注意按照界面要求来进行窗体设计;
C、请注意代码的书写、命名符合规范,应有适当的注释。
六、代码设计
数据库代码:
BaseDao.Java
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class BaseDao
{
static
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static Connection getConnection()
{
Connection conn = null;
try
{
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl", "scott", "orcl");
}
catch (Exception e)
{
e.printStackTrace();
}
return conn;
}
public static void closeAll(ResultSet rs, Statement stmt, Connection conn) {
try
{
if (rs != null)
rs.close();
if (stmt != null)
stmt.close();
if (conn != null)
conn.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
Connection conn = BaseDao.getConnection();
if (conn != null)
{
System.out.println("连接成功.");
}
}
}
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class UserDao
{
// 用户登录
public boolean CheckUser(String username, String password)
{
boolean bool = false;
String sql = "select username,password from userinfo where "
+ "username = ? and password = ?";
Connection conn = BaseDao.getConnection();
PreparedStatement ps = null;
try
{
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();
if (rs.next())
{
bool = true;
}
BaseDao.closeAll(rs, ps, conn);
}
catch (Exception e)
{
e.printStackTrace();
}
return bool;
}
// 用户注册
public boolean SignUser(String username, String password) {
boolean bool = false;
String sql = "insert into userinfo values(?,?)";
Connection conn = BaseDao.getConnection();
PreparedStatement ps = null;
try
{
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
int num = ps.executeUpdate();
if (num != 0)
{
bool = true;
System.out.println("用户注册成功");
}
BaseDao.closeAll(null, ps, conn);
}
catch (Exception e)
{
e.printStackTrace();
}
return bool;
}
// 添加用户
public boolean InsertUser(String name, String mobile_phone, String phone_num, String email)
{
boolean bool = false;
String sql = "insert into linkman values(?,?,?,?)";
Connection conn = BaseDao.getConnection();
PreparedStatement ps = null;
try
{
ps = conn.prepareStatement(sql);
ps.setString(1, name);
ps.setString(2, mobile_phone);
ps.setString(3, phone_num);
ps.setString(4, email);
int num = ps.executeUpdate();
if (num != 0)
{
bool = true;
}
BaseDao.closeAll(null, ps, conn);
}
catch (Exception e)
{
e.printStackTrace();
}
return bool;
}
// 查询用户
public ResultSet SelectUser(String name)
{
String sql = "select * from linkman where name = ?";
Connection conn = BaseDao.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
try
{
ps = conn.prepareStatement(sql);
ps.setString(1, name);
rs = ps.executeQuery();
}
catch (Exception e)
{
e.printStackTrace();
}
return rs;
}
}
登录界面:
UserLogin.java
package view;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import https://www.360docs.net/doc/a010954755.html,erDao;
/*登录界面示例*/
public class UserLogin extends JFrame
{
JPanel pan = null;
JTextField txt = new JTextField();
JPasswordField pass = new JPasswordField();
JLabel lab = new JLabel("用户名:");
JLabel lab1 = new JLabel("密码:");
JButton but = new JButton("登录");
JButton but1 = new JButton("注册");
UserDao dao = new UserDao();
public UserLogin()
{
this.setSize(400, 400);
this.setTitle("登录界面示例");
pan = (JPanel) this.getContentPane();
pan.setLayout(null);
txt.setBounds(160, 100, 180, 30);
pass.setBounds(160, 150, 180, 30);
lab.setBounds(100, 100, 80, 30);
lab1.setBounds(100, 150, 80, 30);
but.setBounds(110, 250, 100, 30);
but1.setBounds(250, 250, 100, 30);
pan.add(txt);
pan.add(pass);
pan.add(lab);
pan.add(lab1);
pan.add(but);
pan.add(but1);
// 登录监听
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String username = txt.getText().trim();
String password = new String(pass.getPassword()).trim();
boolean bool = dao.CheckUser(username, password);
if (bool)
{
JOptionPane.showMessageDialog(null, "登录成功");
UserLogin.this.dispose();
AddressList list = new AddressList();
}
else
{
JOptionPane.showMessageDialog(null, "登录失败");
}
}
});
// 注册监听
but1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String username = txt.getText().trim();
String password = pass.getText().trim();
if (!username.isEmpty()&&!password.isEmpty())
{
Boolean bool = dao.SignUser(username, password);
JOptionPane.showMessageDialog(null, "注册成功");
}
else if(username.isEmpty() || password.isEmpty())
{
JOptionPane.showMessageDialog(null, "注册信息不能为空");
}
}
});
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setVisible(true);
}
public static void main(String[] args)
{
new UserLogin();
}
}
主界面:
AddressList.java
package view;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.ResultSet;
import javax.swing.BorderFactory; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane; import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import https://www.360docs.net/doc/a010954755.html,erDao;
public class AddressList extends JFrame {
JPanel pan = new JPanel();
JPanel pan1 = new JPanel();
JPanel pan2 = new JPanel();
JLabel lab, lab1, lab2, lab3, lab4;
JTextField txt, txt1, txt2, txt3, txt4;
JButton clear, add, insert;
UserDao dao = new UserDao();
JTextArea jTextArea = new JTextArea(10, 12);
JScrollPane span = new JScrollPane(); // 滚动面板
Font font = new Font("XX", Font.TYPE1_FONT, 22);
public AddressList()
{
this.setSize(400, 600);
this.setTitle("个人通讯录");
pan = (JPanel) this.getContentPane();
pan.setLayout(null);
pan1.setLayout(null);
pan2.setLayout(null);
pan1.setBorder(BorderFactory.createTitledBorder("录入联系人"));
pan2.setBorder(BorderFactory.createTitledBorder("查询联系人"));
span.setViewportView(jTextArea);
jTextArea.setLineWrap(true);
pan1.setBounds(20, 50, 360, 240);
pan2.setBounds(20, 300, 360, 240);
span.setBounds(10, 55, 350, 170);
lab = new JLabel("个人通讯录");
lab.setBounds(140, 10, 200, 50);
lab.setFont(font);
lab1 = new JLabel("姓名:");
lab2 = new JLabel("移动电话:");
lab3 = new JLabel("固定电话:");
lab4 = new JLabel("电子邮件:");
lab1.setBounds(20, 20, 80, 30);
lab2.setBounds(20, 60, 80, 30);
lab3.setBounds(20, 100, 80, 30);
lab4.setBounds(20, 140, 80, 30);
txt = new JTextField(30);
txt1 = new JTextField(30);
txt2 = new JTextField(30);
txt3 = new JTextField(30);
txt4 = new JTextField(30);
txt.setBounds(100, 20, 200, 30);
txt1.setBounds(100, 60, 200, 30);
txt2.setBounds(100, 100, 200, 30);
txt3.setBounds(100, 140, 200, 30);
txt4.setBounds(10, 20, 250, 30);
clear = new JButton("清空");
add = new JButton("添加");
insert = new JButton("查询");
clear.setBounds(100, 180, 80, 30);
add.setBounds(220, 180, 80, 30);
insert.setBounds(270, 20, 80, 30);
pan.add(pan1);
pan.add(pan2);
pan.add(lab);
pan1.add(lab1);
pan1.add(lab2);
pan1.add(lab3);
pan1.add(lab4);
pan1.add(txt);
pan1.add(txt1);
pan1.add(txt2);
pan1.add(txt3);
pan2.add(txt4);
pan1.add(clear);
pan1.add(add);
pan2.add(insert);
pan2.add(span);
// 清空按钮的监听
clear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
txt.setText("");
txt1.setText("");
txt2.setText("");
txt3.setText("");
}
});
// 添加按钮的监听
add.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String name = txt.getText().trim();
String mobile_phone = txt1.getText().trim();
String phone_num = txt2.getText().trim();
String email = txt3.getText().trim();
if (name.isEmpty())
{
JOptionPane.showMessageDialog(null, "姓名不能为空");
return;
}
Boolean bool = dao.InsertUser(name, mobile_phone, phone_num,
email);
if (bool)
{
JOptionPane.showMessageDialog(null, "信息添加成功");
return;
}
else
{
JOptionPane.showMessageDialog(null, "信息添加失败,请检查数据操作是否正确");
return;
}
}
});
// 查询按钮的监听
insert.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String name = AddressList.this.txt4.getText().trim();
ResultSet rs = dao.SelectUser(name);
try
{
if (rs.next())
{
String getname = rs.getString(1);
String mobile_phone = rs.getString(2);
String phone_num = rs.getString(3);
String email = rs.getString(4);
String info = "姓名:"+getname + "\n移动电话:" + mobile_phone + "\n固定电话:"
+ phone_num + "\n电子邮件:" + email;
AddressList.this.jTextArea.setText(info);
}
else
{
AddressList.this.jTextArea.setText("没有此人");
}
}
catch (Exception e2)
{
}
}
});
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
public static void main(String[] args)
{
new AddressList();
}
}