刚开始学习java,觉得确实是一门简单但实用的语言,完成了第二个小作业–简易通讯录的设计。
java gui编程,通讯录内容保存在access数据库中,功能很简单,因为刚刚学习,所以做得很粗糙,呵呵,见笑啦。
贴几张程序的截图:
l 登陆通讯录
package javashiyan2;
import java.awt.*;
import java.awt.event.*;
import java.sql.connection;
import java.sql.drivermanager;
import java.sql.resultset;
import java.sql.sqlexception;
import java.sql.statement;
import javax.swing.*;
//用户登陆界面
public class login extends jframe implements actionlistener {
private container content;
private jlabel juserlabel;
private jlabel jpasswordlabel;
private jtextfield jusertext;
private jpasswordfield jpasswordtext;
private jbutton denglu;
private jbutton zhuce;
private connection con;
private statement stat; // 声明各个组件
public login() {
super(“通讯录–用户登陆”);
content = getcontentpane();
gridlayout layout;
layout = new gridlayout(3, 3, 1, 1);//布局管理器为网格型
content.setlayout(layout);
denglu = new jbutton(“登陆”);
denglu.setsize(40, 15);
denglu.addactionlistener(this);
zhuce = new jbutton(“注册”);
zhuce.setsize(40, 15);
zhuce.addactionlistener(this);
juserlabel = new jlabel(“用户名:”);
juserlabel.setsize(80, 20);
jusertext = new jtextfield(25);
jusertext.setsize(80, 20);
jpasswordlabel = new jlabel(“密码:”);
jpasswordlabel.setsize(80, 20);
jpasswordtext = new jpasswordfield(“”);
jpasswordtext.setsize(80, 20); //设置组件
content.add(juserlabel);
content.add(jusertext);
content.add(jpasswordlabel);
content.add(jpasswordtext);
content.add(denglu);
content.add(zhuce); //添加组件
jusertext.addactionlistener(this);
jpasswordtext.addactionlistener(this) ; //注册监听器
setsize(320, 160);
setvisible(true); //设置窗体大小、可见
}
resultset getresultset(string sql3) {
resultset result = null;
try {
result = stat.executequery(sql3);
} catch (sqlexception e) {
e.printstacktrace();
}
return result; //方法—执行sql语句,并返回结果
}
void opendatabase() {
string driverclass = “sun.jdbc.odbc.jdbcodbcdriver”;
// “com.microsoft.jdbc.sqlserver.sqlserverdriver”;
string url = “jdbc:odbc:admin”;
try {
// 加载jdbc-odbc桥驱动程序,driver类通过调用drivermanager.registerdriver类进行自我注册
class.forname(driverclass);
// 获得jdbc连接
con = drivermanager.getconnection(url, “admin”, “”);
// 创建statement对象
stat = con.createstatement(resultset.type_scroll_insensitive,
resultset.concur_updatable);
} catch (classnotfoundexception e) {
system.out.println(“can not find driver ” + driverclass);
} catch (sqlexception sqe) {
sqe.printstacktrace();
}
} //打开数据库的方法
void closedatabase() {
try {
stat.close();
con.close();
} catch (sqlexception exp) {
exp.printstacktrace();
}
} //关闭数据库
public void actionperformed(actionevent e) {
string password = new string(jpasswordtext.getpassword());
string username = new string(jusertext.gettext());
if (e.getsource() == denglu) {
opendatabase();
string sql3 = “select * from admin where username=’” + username
+ “‘ and password=’” + password + “‘”;
resultset result = getresultset(sql3);
try {
if (result.next()) {
joptionpane.showmessagedialog(null, “欢迎!”);
main databasetest = new main();
closedatabase(); //关闭数据库
this.dispose();
}
else
joptionpane.showmessagedialog(null, “用户名或密码错误!”);
jusertext.settext(“”);
jpasswordtext.settext(“”);
} catch (headlessexception e1) {
e1.printstacktrace();
} catch (sqlexception e1) {
e1.printstacktrace();
}
} //登录按钮的功能实现
if (e.getsource() == zhuce) {
register.main(null);
} //注册按钮的功能
}
public static void main(string[] args) {
login application = new login();
application.setdefaultcloseoperation(jframe.exit_on_close);
char c = 32;
system.out.println(c);
}
}
l 通讯录主体
package javashiyan2;
import java.awt.*;
import java.awt.event.*;
import java.sql.array;
import java.sql.resultset;
import java.sql.sqlexception;
import javax.swing.*;
import javax.swing.table.defaulttablemodel;
import javax.swing.table.tablemodel;
//通讯录主体功能界面
public class main extends jframe implements actionlistener {
// 字符常量,用于表顶部的分类表示
private static final string studentno = “学号”;
private static final string studentname = “姓名”;
private static final string studentsex = “性别”;
private static final string studentage = “年龄”;
private static final string studentadd = “地址”;
private static final string[] header = { studentno, studentname,
studentsex, studentage, studentadd };
// 分别定义容器、面板、表、按钮、布局管理器
private container container;
private jpanel paneltable;
private jpanel panelbutton;
private jtable studenttable;
private jbutton opendatabase, adddata, readdatabase, closedatabase,
seledatabase, deledatabase;
private borderlayout layout;
private defaulttablemodel data = new defaulttablemodel(header, 0);//声明默认表格控制模型
// 定义数据库类
private database database;
private resultset result;
public main() throws headlessexception {
super(“通讯录”);
paneltable = new jpanel();
panelbutton = new jpanel();//设置两个jpanel
container = getcontentpane();//获取内容面板
layout = new borderlayout(5, 5);
container.setlayout(layout); // 设置边界布局管理器
container.add(paneltable, “center”);
container.add(panelbutton, “south”);// 将两个jpanel布置好
tablemodel data = new defaulttablemodel(header, 0);
studenttable = new jtable(data);
jscrollpane jsp = new jscrollpane(studenttable);
paneltable.add(jsp); //设置显示数据的表
opendatabase = new jbutton(“打开数据库”);
adddata = new jbutton(“增加”);
readdatabase = new jbutton(“查看所有”);
seledatabase = new jbutton(“查询”);
deledatabase = new jbutton(“删除”);
closedatabase = new jbutton(“关闭”); //设置按钮
panelbutton.setlayout(new flowlayout());
panelbutton.add(opendatabase);
panelbutton.add(seledatabase);
panelbutton.add(adddata);
panelbutton.add(readdatabase);
panelbutton.add(deledatabase);
panelbutton.add(closedatabase);// 布置按钮
opendatabase.addactionlistener(this);
adddata.addactionlistener(this);
readdatabase.addactionlistener(this);
closedatabase.addactionlistener(this);
deledatabase.addactionlistener(this);
seledatabase.addactionlistener(this);// 注册监听器
database = new database();// 生成数据库对象
setsize(500, 510);
setvisible(true);//设置窗体大小、可见
}
public void actionperformed(actionevent e) {
if (e.getsource() == opendatabase) {
database.opendatabase();
} //打开数据库按钮功能
if (e.getsource() == adddata) {
database.zengtian();
} //增添数据按钮功能
if (e.getsource() == closedatabase) {
database.closedatabase();
} //关闭数据库按钮功能
if (e.getsource() == seledatabase) {
string name = joptionpane.showinputdialog(“请输入您要查询的姓名”);
string sql2 = “select * from student where 姓名=’” + name + “‘”;
result = database.getresultset(sql2);
int j = 0;
string jieguo = “您所查询的记录为”;
try {
if (result.next()) {
for (int k = 0; k < 5; k++) {
string item = select(k);
jieguo = jieguo + result.getstring(item) + ” “;
}
j++;
joptionpane.showmessagedialog(null, jieguo);
} else
joptionpane.showmessagedialog(null, “不好意思,好像没有这个人”);
} catch (headlessexception e1) {
// todo auto-generated catch block
e1.printstacktrace();
} catch (sqlexception e1) {
// todo auto-generated catch block
e1.printstacktrace();
}
} //查询按钮功能
if (e.getsource() == readdatabase) {
string sql = “select * from student”;
result = database.getresultset(sql);
try {
result.last();
int count = result.getrow();
data.setrowcount(count);
studenttable.setmodel(data);
result.beforefirst();
int i = 0;
while (result.next()) {
for (int h = 0; h < 5; h++) {
string item = select(h);
string tmp = result.getstring(item);
studenttable.setvalueat(tmp, i, h);
}
i++;
}
} catch (sqlexception e1) {
e1.printstacktrace();
}
} //列出数据库所有内容
if (e.getsource() == deledatabase) {
string delename = joptionpane.showinputdialog(“请输入您要删除的姓名”);
string sql3 = “select * from student where 姓名=’” + delename + “‘”;
result = database.getresultset(sql3);
try {
if (result.next()) {
database.stat
.executeupdate(“delete from student where 姓名=’”
+ delename + “‘”);
joptionpane.showmessagedialog(null, “删除成功”);
} else
joptionpane.showmessagedialog(null, “不好意思,好像没有这个人”);
} catch (sqlexception e1) {
// todo auto-generated catch block
e1.printstacktrace();
}
}
} //删除按钮功能
private string select(int i) {
string tmp = null;
switch (i) {
case 0:
tmp = studentno;
break;
case 1:
tmp = studentname;
break;
case 2:
tmp = studentsex;
break;
case 3:
tmp = studentage;
break;
case 4:
tmp = studentadd;
break;
default:
break;
}
return tmp;
} //实现select方法功能
public static void main(string[] args) {
// todo auto-generated method stub
main databasetest = new main();
}
}
l 通讯录注册
package javashiyan2;
import java.awt.container;
import java.awt.flowlayout;
import java.awt.gridlayout;
import java.awt.event.actionevent;
import java.awt.event.actionlistener;
import java.sql.connection;
import java.sql.drivermanager;
import java.sql.resultset;
import java.sql.sqlexception;
import java.sql.statement;
import javax.swing.jbutton;
import javax.swing.jframe;
import javax.swing.jlabel;
import javax.swing.joptionpane;
import javax.swing.jpasswordfield;
import javax.swing.jtextfield;
//管理员用户注册界面
public class register extends jframe implements actionlistener {
private container content;
private jlabel jyonghuming;
private jlabel jmima;
private jlabel jmima2;
private jbutton queding;
private jbutton quxiao;
private jtextfield jyonghu;
private jpasswordfield jpass;
private jpasswordfield jpass2;//声明各个组件
public register() {
super(“用户注册”);
content = getcontentpane();
gridlayout layout;
layout = new gridlayout(4, 2, 2, 2);
content.setlayout(layout);
queding = new jbutton(“确定”);
queding.setsize(40, 15);
queding.addactionlistener(this);
quxiao = new jbutton(“取消”);
quxiao.setsize(40, 15);
quxiao.addactionlistener(this);
jyonghuming = new jlabel(“请输入用户名”);
jyonghuming.setsize(90, 60);
jmima = new jlabel(“请输入密码”);
jmima.setsize(90, 60);
jmima2 = new jlabel(“请再次输入密码”);
jmima2.setsize(90, 60);
jyonghu = new jtextfield();
jyonghu.setsize(90, 60);
jpass = new jpasswordfield();
jpass.setsize(90, 60);
jpass2 = new jpasswordfield();
jpass2.setsize(90, 60);
content.add(jyonghuming);
content.add(jyonghu);
content.add(jmima);
content.add(jpass);
content.add(jmima2);
content.add(jpass2);
content.add(queding);
content.add(quxiao);
setsize(320, 160);
setvisible(true);
} //设置各个组件,并添加到内容面板
private connection con;
private statement stat2;
void database() {
string driverclass = “sun.jdbc.odbc.jdbcodbcdriver”;
// “com.microsoft.jdbc.sqlserver.sqlserverdriver”;
string url = “jdbc:odbc:admin”;
try {
// 加载jdbc-odbc桥驱动程序,driver类通过调用drivermanager.registerdriver类进行自我注册
class.forname(driverclass);
// 获得jdbc连接
con = drivermanager.getconnection(url, “admin”, “”);
// 创建statement对象
stat2 = con.createstatement(resultset.type_scroll_insensitive,
resultset.concur_updatable);
} catch (classnotfoundexception e) {
system.out.println(“can not find driver ” + driverclass);
} catch (sqlexception sqe) {
sqe.printstacktrace();
}
} //连接数据库
void closedatabase() {
try {
stat2.close();
con.close();
} catch (sqlexception exp) {
exp.printstacktrace();
}
} //关闭数据库
public void actionperformed(actionevent e) {
// todo auto-generated method stub
if (e.getsource() == queding) {
string name = jyonghu.gettext();
string pass = new string(jpass.getpassword());
string pass2 = new string(jpass2.getpassword());
if (pass.equals(pass2)) {
database();
try {
stat2.executeupdate(“insert into admin values(‘” + name
+ “‘,’” + pass + “‘)”);
} catch (sqlexception f) {
// todo auto-generated catch block
f.printstacktrace();
}
joptionpane.showmessagedialog(null, “注册成功,请您登陆”);
closedatabase();//关闭数据库
this.dispose();
} else
joptionpane.showmessagedialog(null, “两次输入的密码不同,请重新输入”);
jyonghu.settext(“”);
jpass.settext(“”);
jpass2.settext(“”);
} //按确定按钮后,检查输入的数据后,写入admin数据库,并提示用户登陆
if (e.getsource() == quxiao) {
jyonghu.settext(“”);
jpass.settext(“”);
jpass2.settext(“”);
}
} //清空内容
public static void main(string[] args) {
// todo auto-generated method stub
register register = new register();
}
}
l 数据库
package javashiyan2;
import java.sql.*;
import javax.swing.joptionpane;
public class database {
public connection con;
public statement stat; // 数据库类变量
public database() {
super();
}
void opendatabase() {
string driverclass = “sun.jdbc.odbc.jdbcodbcdriver”;
// “com.microsoft.jdbc.sqlserver.sqlserverdriver”;
string url = “jdbc:odbc:student”;
try {
// 加载jdbc-odbc桥驱动程序,driver类通过调用drivermanager.registerdriver类进行自我注册
class.forname(driverclass);
// 获得jdbc连接
con = drivermanager.getconnection(url, “student”, “”);
// 创建statement对象
stat = con.createstatement(resultset.type_scroll_insensitive,
resultset.concur_updatable);
} catch (classnotfoundexception e) {
system.out.println(“can not find driver ” + driverclass);
} catch (sqlexception sqe) {
sqe.printstacktrace();
}
} // 打开数据库
void closedatabase() {
try {
stat.close();
con.close();
system.out.println(“成功关闭数据库”);
} catch (sqlexception exp) {
exp.printstacktrace();
} finally {
system.exit(0);
}
} //关闭数据库
void zengtian() {
string xuehao = joptionpane.showinputdialog(“请输入学号”);
string xingming = joptionpane.showinputdialog(“请输入姓名”);
string xingbie = joptionpane.showinputdialog(“请输入性别”);
string nianling = joptionpane.showinputdialog(“请输入年龄”);
string dizhi = joptionpane.showinputdialog(“请输入地址”);
try {
stat.executeupdate(“insert into student values(‘” + xuehao + “‘,’”
+ xingming + “‘,’” + xingbie + “‘,’” + nianling + “‘,’”
+ dizhi + “‘)”);
} catch (sqlexception e) {
// todo auto-generated catch block
e.printstacktrace();
}
} //增添记录
resultset getresultset(string sql) {
resultset result = null;
try {
result = stat.executequery(sql);
} catch (sqlexception e) {
// todo auto-generated catch block
e.printstacktrace();
}
return result;
}
}
厉害。看了,我也想学它了。
这个评论好不好?
0
0