connection con = null;
try {
con = dbutil.getcon();
resultset resultset = bookdao.list(con, book);
while (resultset.next()) {
vector rowdata = new vector();
rowdata.add(resultset.getint(“id”));
rowdata.add(resultset.getstring(“book_name”));
rowdata.add(resultset.getstring(“type_name”));
rowdata.add(resultset.getstring(“author”));
rowdata.add(resultset.getdouble(“price”));
rowdata.add(resultset.getint(“number”));
if (resultset.getint(“status”) == 1) {
rowdata.add(“上架”);
} else {
rowdata.add(“下架”);
}
model.addrow(rowdata);
}
} catch (exception e) {
e.printstacktrace();
} finally {
try {
dbutil.closecon(con);
} catch (exception e) {
e.printstacktrace();
}
}
}
private void initcomponents() {
jpanel1 = new jpanel();
jlabel1 = new jlabel();
booknametext = new jtextfield();
jbutton1 = new jbutton();
jscrollpane1 = new jscrollpane();
booktable = new jtable();
jpanel2 = new jpanel();
jlabel3 = new jlabel();
bookid = new jtextfield();
jlabel4 = new jlabel();
bookname = new jtextfield();
jlabel5 = new jlabel();
authortext = new jtextfield();
jlabel6 = new jlabel();
publishtext = new jtextfield();
jlabel7 = new jlabel();
pricetext = new jtextfield();
jlabel8 = new jlabel();
numbertext = new jtextfield();
jlabel9 = new jlabel();
jlabel10 = new jlabel();
jcb_type2 = new jcombobox();
jlabel11 = new jlabel();
remarktext = new jtextfield();
jbutton2 = new jbutton();
jcb_status = new jcombobox();
setclosable(true);
jpanel1.setborder(borderfactory.createtitledborder(“查询操作”));
jlabel1.settext(“书名:”);
jbutton1.settext(“查询”);
jbutton1.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jbutton1actionperformed(evt);
}
});
grouplayout jpanel1layout = new grouplayout(jpanel1);
jpanel1.setlayout(jpanel1layout);
jpanel1layout.sethorizontalgroup(jpanel1layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel1layout.createsequentialgroup().addgap(25, 25, 25).addcomponent(jlabel1)
.addgap(18, 18, 18)
.addcomponent(booknametext, grouplayout.preferred_size, 171,
grouplayout.preferred_size)
.addgap(62, 62, 62).addcomponent(jbutton1).addcontainergap(299, short.max_value)));
jpanel1layout
.setverticalgroup(jpanel1layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel1layout.createsequentialgroup().addgroup(jpanel1layout
.createparallelgroup(grouplayout.alignment.baseline).addcomponent(jlabel1)
.addcomponent(booknametext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addcomponent(jbutton1)).addcontainergap(22, short.max_value)));
booktable.setmodel(new defaulttablemodel(new object[][] {
}, new string[] { “编号”, “书名”, “类别”, “作者”, “价格”, “库存”, “状态” }) {
boolean[] canedit = new boolean[] { false, false, false, false, false, false, false };
public boolean iscelleditable(int rowindex, int columnindex) {
return canedit[columnindex];
}
});
booktable.addmouselistener(new java.awt.event.mouseadapter() {
public void mousepressed(java.awt.event.mouseevent evt) {
booktablemousepressed(evt);
}
});
jscrollpane1.setviewportview(booktable);
jpanel2.setborder(borderfactory.createtitledborder(“书籍操作”));
jlabel3.settext(“编号:”);
bookid.seteditable(false);
jlabel4.settext(“书名:”);
jlabel5.settext(“作者:”);
jlabel6.settext(“出版:”);
jlabel7.settext(“价格:”);
jlabel8.settext(“库存:”);
jlabel9.settext(“状态:”);
jlabel10.settext(“类别:”);
jlabel11.settext(“描述:”);
jbutton2.settext(“修改”);
jbutton2.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jbutton2actionperformed(evt);
}
});
grouplayout jpanel2layout = new grouplayout(jpanel2);
jpanel2.setlayout(jpanel2layout);
jpanel2layout.sethorizontalgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel2layout.createsequentialgroup()
.addgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.leading).addgroup(
jpanel2layout.createsequentialgroup().addgap(26, 26, 26).addgroup(jpanel2layout
.createparallelgroup(grouplayout.alignment.leading).addgroup(
jpanel2layout.createsequentialgroup().addcomponent(jlabel9)
.addpreferredgap(
layoutstyle.componentplacement.related)
.addcomponent(jcb_status, 0, 117, short.max_value))
.addgroup(grouplayout.alignment.trailing,
jpanel2layout
.createsequentialgroup().addgroup(jpanel2layout
.createparallelgroup(
grouplayout.alignment.leading)
.addcomponent(jlabel3).addcomponent(jlabel6))
.addpreferredgap(
layoutstyle.componentplacement.related,
grouplayout.default_size, short.max_value)
.addgroup(jpanel2layout
.createparallelgroup(
grouplayout.alignment.trailing,
false)
.addcomponent(publishtext,
grouplayout.alignment.leading)
.addcomponent(bookid,
grouplayout.alignment.leading,
grouplayout.default_size, 117,
short.max_value))))
.addgap(39, 39, 39)
.addgroup(jpanel2layout.createparallelgroup(
grouplayout.alignment.leading, false)
.addgroup(jpanel2layout.createsequentialgroup().addcomponent(jlabel10)
.addgap(27, 27,
.addcomponent(jcb_type2, 0,
grouplayout.default_size, short.max_value))
.addgroup(grouplayout.alignment.trailing,
jpanel2layout.createsequentialgroup().addcomponent(jlabel7)
.addgap(27, 27, 27).addcomponent(pricetext))
.addgroup(jpanel2layout.createsequentialgroup().addcomponent(jlabel4)
.addgap(27, 27, 27).addcomponent(
bookname, grouplayout.preferred_size, 108,
grouplayout.preferred_size)))
.addgap(18, 18, 18)
.addgroup(jpanel2layout
.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel2layout.createsequentialgroup().addcomponent(jlabel11)
.addgap(18, 18, 18).addcomponent(remarktext,
grouplayout.preferred_size, 172,
grouplayout.preferred_size))
.addgroup(jpanel2layout
.createparallelgroup(grouplayout.alignment.trailing,
false)
.addgroup(grouplayout.alignment.leading,
jpanel2layout.createsequentialgroup()
.addcomponent(jlabel8).addgap(18, 18, 18)
.addcomponent(numbertext))
.addgroup(grouplayout.alignment.leading,
jpanel2layout.createsequentialgroup()
.addcomponent(jlabel5).addgap(20, 20, 20)
.addcomponent(authortext,
grouplayout.preferred_size,
106,
grouplayout.preferred_size))))
.addgap(97, 97, 97))
.addgroup(jpanel2layout.createsequentialgroup().addgap(108, 108, 108)
.addcomponent(jbutton2)))
.addcontainergap()));
jpanel2layout.setverticalgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel2layout.createsequentialgroup().addgroup(jpanel2layout
.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel2layout.createsequentialgroup().addgroup(jpanel2layout
.createparallelgroup(grouplayout.alignment.baseline).addcomponent(jlabel3)
.addcomponent(bookid, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size))
.addgap(18, 18, 18)
.addgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.baseline)
.addcomponent(jlabel6)
.addcomponent(publishtext, grouplayout.preferred_size,
grouplayout.default_size,
grouplayout.preferred_size)
.addcomponent(jlabel7)
.addcomponent(pricetext, grouplayout.preferred_size,
grouplayout.default_size,
grouplayout.preferred_size)
.addcomponent(jlabel8).addcomponent(numbertext,
grouplayout.preferred_size,
grouplayout.default_size,
grouplayout.preferred_size))
.addgap(18, 18, 18)
.addgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.baseline)
.addcomponent(jlabel9)
.addcomponent(jcb_status, grouplayout.preferred_size,
grouplayout.default_size,
grouplayout.preferred_size)
.addcomponent(jlabel10)
.addcomponent(jcb_type2, grouplayout.preferred_size,
grouplayout.default_size,
grouplayout.preferred_size)
.addcomponent(jlabel11).addcomponent(remarktext,
grouplayout.preferred_size,
grouplayout.default_size,
grouplayout.preferred_size)))
.addgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.baseline)
.addcomponent(jlabel4)
.addcomponent(bookname, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addcomponent(authortext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addcomponent(jlabel5)))
.addpreferredgap(layoutstyle.componentplacement.related, 42, short.max_value)
.addcomponent(jbutton2).addgap(28, 28, 28)));
grouplayout layout = new grouplayout(getcontentpane());
getcontentpane().setlayout(layout);
layout.sethorizontalgroup(layout.createparallelgroup(grouplayout.alignment.leading).addgroup(layout
.createsequentialgroup().addgap(31, 31, 31)
.addgroup(layout.createparallelgroup(grouplayout.alignment.trailing, false)
.addcomponent(jpanel1, grouplayout.alignment.leading,
grouplayout.default_size, grouplayout.default_size,
short.max_value)
.addcomponent(jscrollpane1, grouplayout.alignment.leading).addcomponent(jpanel2,
grouplayout.alignment.leading, grouplayout.default_size, 668,
short.max_value))
.addcontainergap(grouplayout.default_size, short.max_value)));
layout.setverticalgroup(layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(layout.createsequentialgroup()
.addcomponent(jpanel1, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addpreferredgap(layoutstyle.componentplacement.related)
.addcomponent(jscrollpane1, grouplayout.preferred_size, 186,
grouplayout.preferred_size)
.addgap(18, 18, 18).addcomponent(jpanel2, grouplayout.default_size,
grouplayout.default_size, short.max_value)
.addcontainergap()));
pack();
}
private void jbutton1actionperformed(java.awt.event.actionevent evt) {
string bookname = this.booknametext.gettext();
book book = new book();
book.setbookname(bookname);
fillbooktable(book);
}
private void booktablemousepressed(java.awt.event.mouseevent evt) {
int row = booktable.getselectedrow();
integer bookid = (integer) booktable.getvalueat(row, 0);
book book = new book();
book.setbookid(bookid);
connection con = null;
try {
con = dbutil.getcon();
resultset list = bookdao.list(con, book);
if (list.next()) {
this.bookid.settext(list.getstring(“id”));
this.bookname.settext(list.getstring(“book_name”));
this.authortext.settext(list.getstring(“author”));
this.publishtext.settext(list.getstring(“publish”));
this.pricetext.settext(list.getstring(“price”));
this.numbertext.settext(list.getstring(“number”));
this.remarktext.settext(list.getstring(“remark”));
int status = list.getint(“status”);
if (status == 1) {
this.jcb_status.setselectedindex(0);
} else {
this.jcb_status.setselectedindex(1);
}
int typeid = list.getint(“type_id”);
int count = this.jcb_type2.getitemcount();
for (int i = 0; i < count; i++) {
booktype booktype = (booktype) this.jcb_type2.getitemat(i);
if (booktype.gettypeid() == typeid) {
this.jcb_type2.setselectedindex(i);
}
}
}
} catch (exception e) {
e.printstacktrace();
} finally {
try {
dbutil.closecon(con);
} catch (exception e) {
e.printstacktrace();
}
}
}
private void jbutton2actionperformed(java.awt.event.actionevent evt) {
string bookname = this.bookname.gettext();
string author = this.authortext.gettext();
string publish = this.publishtext.gettext();
string pricestr = this.pricetext.gettext();
string numberstr = this.numbertext.gettext();
string remark = this.remarktext.gettext();
string bookid = this.bookid.gettext();
if (stringutil.isempty(bookid) || stringutil.isempty(bookname) || stringutil.isempty(author)
|| stringutil.isempty(publish) || stringutil.isempty(pricestr) || stringutil.isempty(numberstr)
|| stringutil.isempty(remark)) {
joptionpane.showmessagedialog(null, “请输入相关内容”);
return;
}
booktype selecteditem = (booktype) jcb_type2.getselecteditem();
integer typeid = selecteditem.gettypeid();
int index = jcb_status.getselectedindex();
int number;
double price;
try {
number = integer.parseint(numberstr);
price = new bigdecimal(pricestr).setscale(2, bigdecimal.round_down).doublevalue();
} catch (exception e) {
joptionpane.showmessagedialog(null, “参数错误”);
return;
}
book book = new book();
book.setbookid(integer.parseint(bookid));
book.setbookname(bookname);
book.setauthor(author);
book.setbooktypeid(typeid);
book.setnumber(number);
book.setprice(price);
book.setpublish(publish);
book.setremark(remark);
book.setstatus(1);
if (index == 0) {
book.setstatus(1);
} else if (index == 1) {
book.setstatus(2);
}
connection con = null;
try {
con = dbutil.getcon();
int i = bookdao.update(con, book);
if (i == 1) {
joptionpane.showmessagedialog(null, “修改成功”);
} else {
joptionpane.showmessagedialog(null, “修改失败”);
}
} catch (exception e) {
e.printstacktrace();
joptionpane.showmessagedialog(null, “修改异常”);
} finally {
try {
dbutil.closecon(con);
} catch (exception e) {
e.printstacktrace();
}
}
fillbooktable(new book());
}
}
package com.sjsq.view;
import java.sql.connection;
import java.sql.resultset;
import java.util.vector;
import javax.swing.grouplayout;
import javax.swing.jbutton;
import javax.swing.jinternalframe;
import javax.swing.jlabel;
import javax.swing.joptionpane;
import javax.swing.jpanel;
import javax.swing.jscrollpane;
import javax.swing.jtable;
import javax.swing.jtextfield;
import javax.swing.layoutstyle;
import javax.swing.table.defaulttablemodel;
import com.sjsq.dao.bookdao;
import com.sjsq.dao.borrowdetaildao;
import com.sjsq.model.book;
import com.sjsq.model.borrowdetail;
import com.sjsq.util.dbutil;
import com.sjsq.util.stringutil;
import com.sjsq.util.timeutil;
public class bookinfofrm extends jinternalframe {
private jtextfield bookidtext;
private jtextfield bookname;
private jtextfield booknametext;
private jtable booktable;
private jbutton jb_borrow;
private jbutton jbutton1;
private jlabel jlabel1;
private jlabel jlabel2;
private jlabel jlabel3;
private jpanel jpanel1;
private jscrollpane jscrollpane1;
dbutil dbutil = new dbutil();
bookdao bookdao = new bookdao();
borrowdetaildao borrowdetaildao = new borrowdetaildao();
public bookinfofrm() {
initcomponents();
filltable(new book());
settitle(“书籍信息”);
this.setlocation(200, 50);
}
private void filltable(book book) {
defaulttablemodel model = (defaulttablemodel) booktable.getmodel();
model.setrowcount(0);
connection con = null;
try {
con = dbutil.getcon();
book.setstatus(1);
resultset list = bookdao.list(con, book);
while (list.next()) {
vector rowdata = new vector();
rowdata.add(list.getint(“id”));
rowdata.add(list.getstring(“book_name”));
rowdata.add(list.getstring(“type_name”));
rowdata.add(list.getstring(“author”));
rowdata.add(list.getstring(“remark”));
model.addrow(rowdata);
}
} catch (exception e) {
e.printstacktrace();
} finally {
try {
dbutil.closecon(con);
} catch (exception e) {
e.printstacktrace();
}
}
}
private void initcomponents() {
jscrollpane1 = new jscrollpane();
booktable = new jtable();
jpanel1 = new jpanel();
jlabel1 = new jlabel();
booknametext = new jtextfield();
jbutton1 = new jbutton();
jb_borrow = new jbutton();
jlabel2 = new jlabel();
bookidtext = new jtextfield();
jlabel3 = new jlabel();
bookname = new jtextfield();
setclosable(true);
booktable.setmodel(new defaulttablemodel(new object[][] {
}, new string[] { “编号”, “书名”, “类型”, “作者”, “描述” }) {
boolean[] canedit = new boolean[] { false, false, false, false, false };
public boolean iscelleditable(int rowindex, int columnindex) {
return canedit[columnindex];
}
});
booktable.addmouselistener(new java.awt.event.mouseadapter() {
public void mousepressed(java.awt.event.mouseevent evt) {
booktablemousepressed(evt);
}
});
jscrollpane1.setviewportview(booktable);
jlabel1.settext(“书籍名称:”);
booknametext.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
booknametextactionperformed(evt);
}
});
jbutton1.settext(“查询”);
jbutton1.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jbutton1actionperformed(evt);
}
});
grouplayout jpanel1layout = new grouplayout(jpanel1);
jpanel1.setlayout(jpanel1layout);
jpanel1layout.sethorizontalgroup(jpanel1layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(grouplayout.alignment.trailing, jpanel1layout.createsequentialgroup()
.addgap(42, 42, 42).addcomponent(jlabel1).addgap(36, 36, 36)
.addcomponent(booknametext, grouplayout.preferred_size, 130,
grouplayout.preferred_size)
.addpreferredgap(layoutstyle.componentplacement.related, 149, short.max_value)
.addcomponent(jbutton1).addgap(45, 45, 45)));
jpanel1layout.setverticalgroup(jpanel1layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel1layout.createsequentialgroup().addgap(23, 23, 23)
.addgroup(jpanel1layout.createparallelgroup(grouplayout.alignment.baseline)
.addcomponent(jbutton1).addcomponent(jlabel1).addcomponent(booknametext,
grouplayout.preferred_size, grouplayout.default_size,
grouplayout.preferred_size))
.addcontainergap(30, short.max_value)));
jb_borrow.settext(“借书”);
jb_borrow.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jb_borrowactionperformed(evt);
}
});
jlabel2.settext(“编号:”);
bookidtext.seteditable(false);
jlabel3.settext(“书名:”);
bookname.seteditable(false);
grouplayout layout = new grouplayout(getcontentpane());
getcontentpane().setlayout(layout);
layout.sethorizontalgroup(layout.createparallelgroup(grouplayout.alignment.leading).addgroup(layout
.createsequentialgroup().addgap(22, 22, 22)
.addgroup(layout.createparallelgroup(grouplayout.alignment.leading).addgroup(layout
.createsequentialgroup().addcomponent(jlabel2)
.addpreferredgap(layoutstyle.componentplacement.related)
.addcomponent(bookidtext, grouplayout.preferred_size, 95,
grouplayout.preferred_size)
.addpreferredgap(layoutstyle.componentplacement.related).addcomponent(jlabel3)
.addgap(18, 18, 18)
.addcomponent(bookname, grouplayout.preferred_size, 127,
grouplayout.preferred_size)
.addpreferredgap(layoutstyle.componentplacement.related, 102, short.max_value)
.addcomponent(jb_borrow).addgap(88, 88, 88))
.addgroup(layout.createsequentialgroup()
.addgroup(layout.createparallelgroup(grouplayout.alignment.leading, false)
.addcomponent(jpanel1, grouplayout.alignment.trailing,
grouplayout.default_size,
grouplayout.default_size, short.max_value)
.addcomponent(jscrollpane1, grouplayout.alignment.trailing,
grouplayout.default_size, 507, short.max_value))
.addcontainergap(38, short.max_value)))));
layout.setverticalgroup(layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(layout.createsequentialgroup()
.addcomponent(jpanel1, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addpreferredgap(layoutstyle.componentplacement.related)
.addcomponent(jscrollpane1, grouplayout.preferred_size, 225,
grouplayout.preferred_size)
.addpreferredgap(layoutstyle.componentplacement.related, 35, short.max_value)
.addgroup(layout.createparallelgroup(grouplayout.alignment.baseline)
.addcomponent(jlabel2).addcomponent(jlabel3)
.addcomponent(bookidtext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addcomponent(bookname, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addcomponent(jb_borrow))
.addgap(27, 27, 27)));
pack();
}
private void jb_borrowactionperformed(java.awt.event.actionevent evt) {
string bookid = this.bookidtext.gettext();
string bookname = this.bookname.gettext();
if (stringutil.isempty(bookid) || stringutil.isempty(bookname)) {
joptionpane.showmessagedialog(null, “请选择相关书籍”);
return;
}
borrowdetail borrowdetail = new borrowdetail();
borrowdetail.setuserid(loginfrm.currentuser.getuserid());
borrowdetail.setbookid(integer.parseint(bookid));
borrowdetail.setstatus(1);
borrowdetail.setborrowtime(timeutil.gettime());
connection con = null;
try {
con = dbutil.getcon();
// 先查询是否有该书在借
resultset list = borrowdetaildao.list(con, borrowdetail);
while (list.next()) {
joptionpane.showmessagedialog(null, “该书已在借,请先还再借”);
return;
}
int i = borrowdetaildao.add(con, borrowdetail);
if (i == 1) {
joptionpane.showmessagedialog(null, “借书成功”);
} else {
joptionpane.showmessagedialog(null, “借书失败”);
}
} catch (exception e) {
e.printstacktrace();
joptionpane.showmessagedialog(null, “借书异常”);
} finally {
try {
dbutil.closecon(con);
} catch (exception e) {
e.printstacktrace();
}
}
}
private void booktablemousepressed(java.awt.event.mouseevent evt) {
int row = this.booktable.getselectedrow();
object bookid = this.booktable.getvalueat(row, 0);
object bookname = this.booktable.getvalueat(row, 1);
this.bookidtext.settext(bookid.tostring());
this.bookname.settext(bookname.tostring());
}
private void booknametextactionperformed(java.awt.event.actionevent evt) {
}
private void jbutton1actionperformed(java.awt.event.actionevent evt) {
string bookname = this.booknametext.gettext();
book book = new book();
book.setbookname(bookname);
filltable(book);
}
}
package com.sjsq.view;
import java.sql.connection;
import javax.swing.grouplayout;
import javax.swing.jbutton;
import javax.swing.jinternalframe;
import javax.swing.jlabel;
import javax.swing.joptionpane;
import javax.swing.jscrollpane;
import javax.swing.jtextarea;
import javax.swing.jtextfield;
import com.sjsq.dao.booktypedao;
import com.sjsq.model.booktype;
import com.sjsq.util.dbutil;
import com.sjsq.util.stringutil;
public class booktypeaddfrm extends jinternalframe {
private jbutton jbutton1;
private jbutton jbutton2;
private jlabel jlabel1;
private jlabel jlabel2;
private jscrollpane jscrollpane1;
private jtextfield typenametext;
private jtextarea typeremarkttext;
dbutil dbutil = new dbutil();
booktypedao booktypedao = new booktypedao();
public booktypeaddfrm() {
initcomponents();
settitle(“图书类别添加”);
this.setlocation(200, 50);
}
private void initcomponents() {
jlabel1 = new jlabel();
jlabel2 = new jlabel();
jbutton1 = new jbutton();
typenametext = new jtextfield();
jscrollpane1 = new jscrollpane();
typeremarkttext = new jtextarea();
jbutton2 = new jbutton();
setclosable(true);
jlabel1.settext(“图书类别名称:”);
jlabel2.settext(“类别说明:”);
jbutton1.settext(“添加”);
jbutton1.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jbutton1actionperformed(evt);
}
});
typeremarkttext.setcolumns(20);
typeremarkttext.setrows(5);
jscrollpane1.setviewportview(typeremarkttext);
jbutton2.settext(“重置”);
jbutton2.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jbutton2actionperformed(evt);
}
});
grouplayout layout = new grouplayout(getcontentpane());
getcontentpane().setlayout(layout);
layout.sethorizontalgroup(layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(layout.createsequentialgroup().addgap(49, 49, 49)
.addgroup(layout.createparallelgroup(grouplayout.alignment.leading, false)
.addgroup(layout.createsequentialgroup().addcomponent(jlabel2).addgap(18, 18, 18)
.addcomponent(jscrollpane1))
.addgroup(layout.createsequentialgroup().addcomponent(jlabel1).addgap(18, 18, 18)
.addcomponent(typenametext, grouplayout.preferred_size, 241,
grouplayout.preferred_size))
.addgroup(layout.createsequentialgroup().addcomponent(jbutton1).addgap(53, 53, 53)
.addcomponent(jbutton2)))
.addgap(179, 179, 179)));
layout.setverticalgroup(layout.createparallelgroup(grouplayout.alignment.leading).addgroup(layout
.createsequentialgroup().addgap(35, 35, 35)
.addgroup(layout.createparallelgroup(grouplayout.alignment.baseline).addcomponent(jlabel1)
.addcomponent(typenametext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size))
.addgap(43, 43, 43)
.addgroup(layout.createparallelgroup(grouplayout.alignment.leading).addcomponent(jlabel2)
.addcomponent(jscrollpane1, grouplayout.preferred_size, 134,
grouplayout.preferred_size))
.addgap(41, 41, 41).addgroup(layout.createparallelgroup(grouplayout.alignment.baseline)
.addcomponent(jbutton1).addcomponent(jbutton2))
.addcontainergap(62, short.max_value)));
pack();
}
private void jbutton1actionperformed(java.awt.event.actionevent evt) {
string typename = this.typenametext.gettext();
string typeremark = this.typeremarkttext.gettext();
if (stringutil.isempty(typename) || stringutil.isempty(typeremark)) {
joptionpane.showmessagedialog(null, “请输入相关信息”);
return;
}
booktype booktype = new booktype();
booktype.settypename(typename);
booktype.setremark(typeremark);
connection con = null;
try {
con = dbutil.getcon();
int i = booktypedao.add(con, booktype);
if (i == 1) {
joptionpane.showmessagedialog(null, “添加成功”);
reset();
} else if (i == 2) {
joptionpane.showmessagedialog(null, “添加失败,类别已存在”);
} else {
joptionpane.showmessagedialog(null, “添加失败”);
}
} catch (exception e) {
e.printstacktrace();
} finally {
try {
dbutil.closecon(con);
} catch (exception e) {
e.printstacktrace();
}
}
}
private void reset() {
this.typenametext.settext(“”);
this.typeremarkttext.settext(“”);
}
private void jbutton2actionperformed(java.awt.event.actionevent evt) {
reset();
}
}
package com.sjsq.view;
import java.sql.connection;
import java.sql.resultset;
import java.util.vector;
import javax.swing.borderfactory;
import javax.swing.grouplayout;
import javax.swing.jbutton;
import javax.swing.jinternalframe;
import javax.swing.jlabel;
import javax.swing.joptionpane;
import javax.swing.jpanel;
import javax.swing.jscrollpane;
import javax.swing.jtable;
import javax.swing.jtextfield;
import javax.swing.layoutstyle;
import javax.swing.table.defaulttablemodel;
import com.sjsq.dao.booktypedao;
import com.sjsq.model.booktype;
import com.sjsq.util.dbutil;
import com.sjsq.util.stringutil;
public class booktypemanagerfrm extends jinternalframe {
private jbutton jbutton1;
private jbutton jbutton2;
private jlabel jlabel1;
private jlabel jlabel2;
private jlabel jlabel3;
private jpanel jpanel1;
private jscrollpane jscrollpane1;
private jtextfield typeidtext;
private jtextfield typenametext;
private jtextfield typeremarktext;
private jtable typetable;
dbutil dbutil = new dbutil();
booktypedao booktypedao = new booktypedao();
public booktypemanagerfrm() {
initcomponents();
filltable();
settitle(“图书类别修改”);
this.setlocation(200, 30);
}
private void filltable() {
defaulttablemodel model = (defaulttablemodel) typetable.getmodel();
model.setrowcount(0);
connection con = null;
try {
con = dbutil.getcon();
resultset list = booktypedao.list(con, new booktype());
while (list.next()) {
vector rowdata = new vector();
rowdata.add(list.getint(“id”));
rowdata.add(list.getstring(“type_name”));
rowdata.add(list.getstring(“remark”));
model.addrow(rowdata);
}
} catch (exception e) {
e.printstacktrace();
} finally {
try {
dbutil.closecon(con);
} catch (exception e) {
e.printstacktrace();
}
}
}
private void initcomponents() {
jscrollpane1 = new jscrollpane();
typetable = new jtable();
jpanel1 = new jpanel();
jlabel1 = new jlabel();
jlabel2 = new jlabel();
jlabel3 = new jlabel();
typeidtext = new jtextfield();
typenametext = new jtextfield();
typeremarktext = new jtextfield();
jbutton1 = new jbutton();
jbutton2 = new jbutton();
setclosable(true);
typetable.setmodel(new defaulttablemodel(new object[][] {
}, new string[] { “编号”, “类别名称”, “类别描述” }) {
boolean[] canedit = new boolean[] { false, false, false };
public boolean iscelleditable(int rowindex, int columnindex) {
return canedit[columnindex];
}
});
typetable.addmouselistener(new java.awt.event.mouseadapter() {
public void mousepressed(java.awt.event.mouseevent evt) {
typetablemousepressed(evt);
}
});
jscrollpane1.setviewportview(typetable);
jpanel1.setborder(borderfactory.createtitledborder(“表单操作”));
jpanel1.settooltiptext(“”);
jlabel1.settext(“编号:”);
jlabel2.settext(“类别名称:”);
jlabel3.settext(“描述:”);
typeidtext.seteditable(false);
jbutton1.settext(“修改”);
jbutton1.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jbutton1actionperformed(evt);
}
});
jbutton2.settext(“删除”);
jbutton2.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jbutton2actionperformed(evt);
}
});
grouplayout jpanel1layout = new grouplayout(jpanel1);
jpanel1.setlayout(jpanel1layout);
jpanel1layout.sethorizontalgroup(jpanel1layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel1layout.createsequentialgroup().addgroup(jpanel1layout
.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel1layout.createsequentialgroup().addgap(22, 22, 22).addgroup(jpanel1layout
.createparallelgroup(grouplayout.alignment.leading, false)
.addgroup(jpanel1layout.createsequentialgroup().addcomponent(jlabel3).addgap(18, 18, 18)
.addcomponent(typeremarktext))
.addgroup(jpanel1layout.createsequentialgroup().addcomponent(jlabel1).addgap(18, 18, 18)
.addcomponent(typeidtext, grouplayout.preferred_size, 123,
grouplayout.preferred_size)
.addgap(18, 18, 18)
.addgroup(jpanel1layout
.createparallelgroup(grouplayout.alignment.leading)
.addcomponent(jbutton2)
.addgroup(jpanel1layout.createsequentialgroup().addcomponent(jlabel2)
.addgap(18, 18, 18).addcomponent(typenametext,
grouplayout.preferred_size, 133,
grouplayout.preferred_size))))))
.addgroup(jpanel1layout.createsequentialgroup().addgap(41, 41, 41).addcomponent(jbutton1)))
.addcontainergap(43, short.max_value)));
jpanel1layout.setverticalgroup(jpanel1layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel1layout.createsequentialgroup().addgroup(jpanel1layout
.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel1layout.createparallelgroup(grouplayout.alignment.baseline)
.addcomponent(jlabel1).addcomponent(jlabel2).addcomponent(typenametext,
grouplayout.preferred_size, grouplayout.default_size,
grouplayout.preferred_size))
.addcomponent(typeidtext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size))
.addgap(27, 27, 27)
.addgroup(jpanel1layout.createparallelgroup(grouplayout.alignment.baseline)
.addcomponent(jlabel3).addcomponent(typeremarktext,
grouplayout.preferred_size, grouplayout.default_size,
grouplayout.preferred_size))
.addpreferredgap(layoutstyle.componentplacement.related, 41, short.max_value)
.addgroup(jpanel1layout.createparallelgroup(grouplayout.alignment.baseline)
.addcomponent(jbutton1).addcomponent(jbutton2))
.addcontainergap()));
grouplayout layout = new grouplayout(getcontentpane());
getcontentpane().setlayout(layout);
layout.sethorizontalgroup(layout.createparallelgroup(grouplayout.alignment.leading).addgroup(layout
.createsequentialgroup().addgap(42, 42, 42)
.addgroup(layout.createparallelgroup(grouplayout.alignment.trailing)
.addcomponent(jpanel1, grouplayout.alignment.leading,
grouplayout.default_size, grouplayout.default_size,
short.max_value)
.addcomponent(jscrollpane1, grouplayout.alignment.leading,
grouplayout.preferred_size, 452, grouplayout.preferred_size))
.addcontainergap(49, short.max_value)));
layout.setverticalgroup(layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(layout.createsequentialgroup().addcontainergap()
.addcomponent(jscrollpane1, grouplayout.preferred_size, 137,
grouplayout.preferred_size)
.addgap(51, 51, 51)
.addcomponent(jpanel1, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addcontainergap(30, short.max_value)));
pack();
}
private void jbutton2actionperformed(java.awt.event.actionevent evt) {
string typeid = this.typeidtext.gettext();
if (stringutil.isempty(typeid)) {
joptionpane.showmessagedialog(null, “请选择相关信息”);
return;
}
connection con = null;
try {
con = dbutil.getcon();
int i = booktypedao.delete(con, typeid);
if (i == 1) {
joptionpane.showmessagedialog(null, “删除成功”);
filltable();
} else if (i == 2) {
joptionpane.showmessagedialog(null, “删除失败-类别最少保留一个”);
} else if (i == 3) {
joptionpane.showmessagedialog(null, “删除失败-该类别下有书籍”);
} else {
joptionpane.showmessagedialog(null, “删除失败”);
}
} catch (exception e) {
e.printstacktrace();
joptionpane.showmessagedialog(null, “删除异常”);
} finally {
try {
dbutil.closecon(con);
} catch (exception e) {
e.printstacktrace();
}
}
}
private void jbutton1actionperformed(java.awt.event.actionevent evt) {
string typeid = this.typeidtext.gettext();
string typename = this.typenametext.gettext();
string typeremark = this.typeremarktext.gettext();
if (stringutil.isempty(typename) || stringutil.isempty(typeremark)) {
joptionpane.showmessagedialog(null, “请输入相关信息”);
return;
}
booktype booktype = new booktype();
booktype.settypeid(integer.parseint(typeid));
booktype.settypename(typename);
booktype.setremark(typeremark);
connection con = null;
try {
con = dbutil.getcon();
int i = booktypedao.update(con, booktype);
if (i == 1) {
joptionpane.showmessagedialog(null, “修改成功”);
filltable();
} else {
joptionpane.showmessagedialog(null, “修改失败”);
}
} catch (exception e) {
e.printstacktrace();
joptionpane.showmessagedialog(null, “修改异常”);
} finally {
try {
dbutil.closecon(con);
} catch (exception e) {
e.printstacktrace();
}
}
}
private void typetablemousepressed(java.awt.event.mouseevent evt) {
int row = this.typetable.getselectedrow();
this.typeidtext.settext(typetable.getvalueat(row, 0).tostring());
this.typenametext.settext(typetable.getvalueat(row, 1).tostring());
this.typeremarktext.settext(typetable.getvalueat(row, 2).tostring());
}
}
package com.sjsq.view;
import java.sql.connection;
import java.sql.resultset;
import java.util.vector;
import javax.swing.grouplayout;
import javax.swing.jinternalframe;
import javax.swing.jscrollpane;
import javax.swing.jtable;
import javax.swing.table.defaulttablemodel;
import com.sjsq.dao.borrowdetaildao;
import com.sjsq.model.borrowdetail;
import com.sjsq.util.dbutil;
import com.sjsq.util.timeutil;
public class borrowdetailfrm extends jinternalframe {
private jtable detailtable;
private jscrollpane jscrollpane1;
dbutil dbutil = new dbutil();
borrowdetaildao borrowdetaildao = new borrowdetaildao();
public borrowdetailfrm() {
initcomponents();
filltable(new borrowdetail());
settitle(“借还信息”);
this.setlocation(200, 50);
}
private void filltable(borrowdetail borrowdetail) {
defaulttablemodel model = (defaulttablemodel) detailtable.getmodel();
model.setrowcount(0);
connection con = null;
try {
con = dbutil.getcon();
resultset list = borrowdetaildao.list(con, borrowdetail);
while (list.next()) {
vector rowdata = new vector();
rowdata.add(list.getstring(“username”));
rowdata.add(list.getstring(“book_name”));
int status = list.getint(“status”);
if (status == 1) {
rowdata.add(“在借”);
} else {
rowdata.add(“已还”);
}
rowdata.add(timeutil.getdatebytime(list.getlong(“borrow_time”)));
if (status == 2) {
rowdata.add(timeutil.getdatebytime(list.getlong(“return_time”)));
}
model.addrow(rowdata);
}
} catch (exception e) {
e.printstacktrace();
} finally {
try {
dbutil.closecon(con);
} catch (exception e) {
e.printstacktrace();
}
}
}
private void initcomponents() {
jscrollpane1 = new jscrollpane();
detailtable = new jtable();
setclosable(true);
detailtable.setmodel(new defaulttablemodel(new object[][] {
}, new string[] { “借书人”, “书名”, “状态”, “借书时间”, “还书时间” }) {
boolean[] canedit = new boolean[] { false, false, false, false, false };
public boolean iscelleditable(int rowindex, int columnindex) {
return canedit[columnindex];
}
});
jscrollpane1.setviewportview(detailtable);
grouplayout layout = new grouplayout(getcontentpane());
getcontentpane().setlayout(layout);
layout.sethorizontalgroup(layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(layout.createsequentialgroup().addcontainergap()
.addcomponent(jscrollpane1, grouplayout.default_size, 700, short.max_value)
.addcontainergap()));
layout.setverticalgroup(layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(layout
.createsequentialgroup().addcontainergap().addcomponent(jscrollpane1,
grouplayout.preferred_size, 366, grouplayout.preferred_size)
.addcontainergap(25, short.max_value)));
pack();
}
}
package com.sjsq.view;
import java.sql.connection;
import javax.swing.grouplayout;
import javax.swing.jbutton;
import javax.swing.jcombobox;
import javax.swing.jframe;
import javax.swing.jlabel;
import javax.swing.joptionpane;
import javax.swing.jtextfield;
import javax.swing.layoutstyle;
import javax.swing.windowconstants;
import com.sjsq.dao.userdao;
import com.sjsq.model.user;
import com.sjsq.util.dbutil;
import com.sjsq.util.stringutil;
public class loginfrm extends jframe {
public static user currentuser;
private jbutton jb_login;
private jbutton jb_reset;
private jlabel jlabel1;
private jlabel jlabel2;
private jlabel jlabel3;
private jtextfield passwordtext;
private jcombobox role;
private jtextfield usernametext;
userdao userdao = new userdao();
dbutil dbutil = new dbutil();
public loginfrm() {
initcomponents();
this.role.additem(“学生”);
this.role.additem(“管理员”);
this.setlocationrelativeto(null);
}
private void initcomponents() {
jlabel1 = new jlabel();
jlabel2 = new jlabel();
jlabel3 = new jlabel();
jb_login = new jbutton();
jb_reset = new jbutton();
usernametext = new jtextfield();
passwordtext = new jtextfield();
role = new jcombobox();
settitle(“用户登录”);
setdefaultcloseoperation(windowconstants.exit_on_close);
setresizable(false);
jlabel1.settext(“账号:”);
jlabel2.settext(“密码:”);
jlabel3.settext(“角色:”);
jb_login.settext(“登录”);
jb_login.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jb_loginactionperformed(evt);
}
});
jb_reset.settext(“重置”);
jb_reset.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jb_resetactionperformed(evt);
}
});
grouplayout layout = new grouplayout(getcontentpane());
getcontentpane().setlayout(layout);
layout.sethorizontalgroup(layout.createparallelgroup(grouplayout.alignment.leading).addgroup(layout
.createsequentialgroup().addgap(59, 59, 59)
.addgroup(layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(layout.createsequentialgroup().addcomponent(jb_login).addgap(87, 87, 87)
.addcomponent(jb_reset))
.addgroup(layout.createsequentialgroup()
.addgroup(layout.createparallelgroup(grouplayout.alignment.trailing)
.addcomponent(jlabel3).addcomponent(jlabel2).addcomponent(jlabel1))
.addgap(18, 18, 18)
.addgroup(layout.createparallelgroup(grouplayout.alignment.leading, false)
.addcomponent(usernametext, grouplayout.default_size, 150,
short.max_value)
.addcomponent(passwordtext)
.addcomponent(role, 0, grouplayout.default_size, short.max_value))))
.addcontainergap(137, short.max_value)));
layout.setverticalgroup(layout.createparallelgroup(grouplayout.alignment.leading).addgroup(layout
.createsequentialgroup().addgap(49, 49, 49)
.addgroup(layout.createparallelgroup(grouplayout.alignment.baseline).addcomponent(jlabel1)
.addcomponent(usernametext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size))
.addgap(45, 45, 45)
.addgroup(layout.createparallelgroup(grouplayout.alignment.leading).addcomponent(jlabel2)
.addcomponent(passwordtext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size))
.addgap(33, 33, 33)
.addgroup(layout.createparallelgroup(grouplayout.alignment.baseline).addcomponent(jlabel3)
.addcomponent(role, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size))
.addpreferredgap(layoutstyle.componentplacement.related, 42, short.max_value)
.addgroup(layout.createparallelgroup(grouplayout.alignment.baseline).addcomponent(jb_login)
.addcomponent(jb_reset))
.addgap(37, 37, 37)));
pack();
}
private void jb_loginactionperformed(java.awt.event.actionevent evt) {
string username = this.usernametext.gettext();
string password = this.passwordtext.gettext();
int index = this.role.getselectedindex();
if (stringutil.isempty(username) || stringutil.isempty(password)) {
joptionpane.showmessagedialog(null, “请输入相关信息”);
return;
}
user user = new user();
user.setusername(username);
user.setpassword(password);
if (index == 0) {
user.setrole(1);
} else {
user.setrole(2);
}
connection con = null;
try {
con = dbutil.getcon();
user login = userdao.login(con, user);
currentuser = login;
if (login == null) {
joptionpane.showmessagedialog(null, “登录失败”);
} else {
// 角色 1普通 2管理员
if (index == 0) {
// 学生
this.dispose();
new usermainfrm().setvisible(true);
} else {
// 管理员
this.dispose();
new adminmainfrm().setvisible(true);
}
}
} catch (exception e) {
e.printstacktrace();
joptionpane.showmessagedialog(null, “登录异常”);
} finally {
try {
dbutil.closecon(con);
} catch (exception e) {
e.printstacktrace();
}
}
}
private void reset() {
this.usernametext.settext(“”);
this.passwordtext.settext(“”);
}
private void jb_resetactionperformed(java.awt.event.actionevent evt) {
reset();
}
public static void main(string args[]) {
java.awt.eventqueue.invokelater(new runnable() {
public void run() {
new loginfrm().setvisible(true);
}
});
}
}
package com.sjsq.view;
import java.sql.connection;
import javax.swing.grouplayout;
import javax.swing.jbutton;
import javax.swing.jframe;
import javax.swing.jlabel;
import javax.swing.joptionpane;
import javax.swing.jtextfield;
import javax.swing.layoutstyle;
import javax.swing.windowconstants;
import com.sjsq.dao.userdao;
import com.sjsq.model.user;
import com.sjsq.util.dbutil;
import com.sjsq.util.stringutil;
public class registerfrm extends jframe {
private jbutton jbutton1;
private jbutton jbutton2;
private jlabel jlabel1;
private jlabel jlabel2;
private jtextfield passwordtext;
private jtextfield usernametext;
dbutil dbutil = new dbutil();
userdao userdao = new userdao();
public registerfrm() {
initcomponents();
this.setlocationrelativeto(null);
}
private void initcomponents() {
jlabel1 = new jlabel();
jlabel2 = new jlabel();
jbutton1 = new jbutton();
jbutton2 = new jbutton();
usernametext = new jtextfield();
passwordtext = new jtextfield();
setdefaultcloseoperation(windowconstants.exit_on_close);
settitle(“用户注册”);
setresizable(false);
jlabel1.settext(“账号:”);
jlabel2.settext(“密码:”);
jbutton1.settext(“注册”);
jbutton1.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jbutton1actionperformed(evt);
}
});
jbutton2.settext(“重置”);
jbutton2.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jbutton2actionperformed(evt);
}
});
grouplayout layout = new grouplayout(getcontentpane());
getcontentpane().setlayout(layout);
layout.sethorizontalgroup(layout.createparallelgroup(grouplayout.alignment.leading).addgroup(layout
.createsequentialgroup().addgap(60, 60, 60)
.addgroup(layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(layout.createsequentialgroup().addcomponent(jbutton1).addgap(77, 77, 77)
.addcomponent(jbutton2))
.addgroup(layout.createsequentialgroup()
.addgroup(layout.createparallelgroup(grouplayout.alignment.leading)
.addcomponent(jlabel1).addcomponent(jlabel2))
.addgap(37, 37, 37)
.addgroup(layout.createparallelgroup(grouplayout.alignment.leading, false)
.addcomponent(passwordtext).addcomponent(usernametext,
grouplayout.default_size, 144, short.max_value))))
.addcontainergap(123, short.max_value)));
layout.setverticalgroup(layout.createparallelgroup(grouplayout.alignment.leading).addgroup(layout
.createsequentialgroup().addgap(49, 49, 49)
.addgroup(layout.createparallelgroup(grouplayout.alignment.baseline).addcomponent(jlabel1)
.addcomponent(usernametext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size))
.addgap(48, 48, 48)
.addgroup(layout.createparallelgroup(grouplayout.alignment.baseline).addcomponent(jlabel2)
.addcomponent(passwordtext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size))
.addpreferredgap(layoutstyle.componentplacement.related, 68, short.max_value)
.addgroup(layout.createparallelgroup(grouplayout.alignment.baseline).addcomponent(jbutton1)
.addcomponent(jbutton2))
.addgap(64, 64, 64)));
pack();
}
private void jbutton1actionperformed(java.awt.event.actionevent evt) {
string username = this.usernametext.gettext();
string password = this.passwordtext.gettext();
if (stringutil.isempty(username) || stringutil.isempty(password)) {
joptionpane.showmessagedialog(null, “请输入相关信息”);
return;
}
user user = new user();
user.setusername(username);
user.setpassword(password);
user.setrole(1);
connection con = null;
try {
con = dbutil.getcon();
int i = userdao.adduser(con, user);
if (i == 2) {
joptionpane.showmessagedialog(null, “该用户名已存在,请重新注册”);
} else if (i == 0) {
joptionpane.showmessagedialog(null, “注册失败”);
} else {
joptionpane.showmessagedialog(null, “注册成功”);
this.dispose();
new loginfrm().setvisible(true);
}
} catch (exception e) {
e.printstacktrace();
} finally {
try {
dbutil.closecon(con);
} catch (exception e) {
e.printstacktrace();
}
}
}
private void reset() {
this.usernametext.settext(“”);
this.passwordtext.settext(“”);
}
private void jbutton2actionperformed(java.awt.event.actionevent evt) {
reset();
}
public static void main(string args[]) {
java.awt.eventqueue.invokelater(new runnable() {
public void run() {
new registerfrm().setvisible(true);
}
});
}
}
package com.sjsq.view;
import java.sql.connection;
import java.sql.resultset;
import java.util.vector;
import javax.swing.grouplayout;
import javax.swing.jbutton;
import javax.swing.jinternalframe;
import javax.swing.jlabel;
import javax.swing.joptionpane;
import javax.swing.jscrollpane;
import javax.swing.jtable;
import javax.swing.jtextfield;
import javax.swing.layoutstyle;
import javax.swing.table.defaulttablemodel;
import com.sjsq.dao.borrowdetaildao;
import com.sjsq.model.borrowdetail;
import com.sjsq.util.dbutil;
import com.sjsq.util.stringutil;
import com.sjsq.util.timeutil;
public class userborrowdetail extends jinternalframe {
private jtextfield borrowidtext;
private jtable borrowtbale;
private jbutton jb_return;
private jlabel jlabel1;
private jscrollpane jscrollpane1;
dbutil dbutil = new dbutil();
borrowdetaildao borrowdetaildao = new borrowdetaildao();
public userborrowdetail() {
initcomponents();
filltable(new borrowdetail());
this.jb_return.setvisible(false);
settitle(“借还信息”);
this.setlocation(200, 50);
}
private void filltable(borrowdetail borrowdetail) {
defaulttablemodel model = (defaulttablemodel) borrowtbale.getmodel();
model.setrowcount(0);
integer userid = loginfrm.currentuser.getuserid();
connection con = null;
try {
con = dbutil.getcon();
borrowdetail.setuserid(userid);
resultset list = borrowdetaildao.list(con, borrowdetail);
while (list.next()) {
vector rowdata = new vector();
rowdata.add(list.getint(“id”));
rowdata.add(list.getstring(“book_name”));
int status = list.getint(“status”);
if (status == 1) {
rowdata.add(“在借”);
}
if (status == 2) {
rowdata.add(“已还”);
}
rowdata.add(timeutil.getdatebytime(list.getlong(“borrow_time”)));
if (status == 2) {
rowdata.add(timeutil.getdatebytime(list.getlong(“return_time”)));
}
model.addrow(rowdata);
}
} catch (exception e) {
e.printstacktrace();
} finally {
try {
dbutil.closecon(con);
} catch (exception e) {
e.printstacktrace();
}
}
}
private void initcomponents() {
jscrollpane1 = new jscrollpane();
borrowtbale = new jtable();
jlabel1 = new jlabel();
borrowidtext = new jtextfield();
jb_return = new jbutton();
setclosable(true);
borrowtbale.setmodel(new defaulttablemodel(new object[][] {
}, new string[] { “编号”, “书名”, “状态”, “借书时间”, “还书时间” }) {
boolean[] canedit = new boolean[] { false, false, false, false, false };
public boolean iscelleditable(int rowindex, int columnindex) {
return canedit[columnindex];
}
});
borrowtbale.addmouselistener(new java.awt.event.mouseadapter() {
public void mousepressed(java.awt.event.mouseevent evt) {
borrowtbalemousepressed(evt);
}
});
jscrollpane1.setviewportview(borrowtbale);
jlabel1.settext(“编号:”);
borrowidtext.seteditable(false);
jb_return.settext(“还书”);
jb_return.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jb_returnactionperformed(evt);
}
});
grouplayout layout = new grouplayout(getcontentpane());
getcontentpane().setlayout(layout);
layout.sethorizontalgroup(layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(layout.createsequentialgroup().addgap(35, 35, 35).addcomponent(jlabel1).addgap(38, 38, 38)
.addcomponent(borrowidtext, grouplayout.preferred_size, 114,
grouplayout.preferred_size)
.addpreferredgap(layoutstyle.componentplacement.related, 282, short.max_value)
.addcomponent(jb_return).addgap(44, 44, 44))
.addgroup(layout.createsequentialgroup().addcontainergap()
.addcomponent(jscrollpane1, grouplayout.default_size, 700, short.max_value)
.addcontainergap()));
layout.setverticalgroup(layout.createparallelgroup(grouplayout.alignment.leading).addgroup(layout
.createsequentialgroup()
.addcomponent(jscrollpane1, grouplayout.preferred_size, 239,
grouplayout.preferred_size)
.addgap(18, 18, 18)
.addgroup(layout.createparallelgroup(grouplayout.alignment.baseline).addcomponent(jlabel1)
.addcomponent(borrowidtext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addcomponent(jb_return))
.addcontainergap(26, short.max_value)));
pack();
}
private void jb_returnactionperformed(java.awt.event.actionevent evt) {
string borrowstr = this.borrowidtext.gettext();
if (stringutil.isempty(borrowstr)) {
joptionpane.showmessagedialog(null, “请选择未还的书籍”);
return;
}
borrowdetail detail = new borrowdetail();
detail.setborrowid(integer.parseint(borrowstr));
detail.setstatus(2);
detail.setreturntime(timeutil.gettime());
connection con = null;
try {
con = dbutil.getcon();
int i = borrowdetaildao.returnbook(con, detail);
if (i == 1) {
joptionpane.showmessagedialog(null, “还书成功”);
} else {
joptionpane.showmessagedialog(null, “还书失败”);
}
} catch (exception e) {
e.printstacktrace();
joptionpane.showmessagedialog(null, “还书异常”);
} finally {
try {
dbutil.closecon(con);
} catch (exception e) {
e.printstacktrace();
}
}
filltable(new borrowdetail());
}
private void borrowtbalemousepressed(java.awt.event.mouseevent evt) {
int row = borrowtbale.getselectedrow();
integer borrowid = (integer) borrowtbale.getvalueat(row, 0);
string status = (string) borrowtbale.getvalueat(row, 2);
this.borrowidtext.settext(borrowid.tostring());
if (status.equals(“在借”)) {
this.jb_return.setvisible(true);
} else {
this.jb_return.setvisible(false);
}
}
}
package com.sjsq.view;
import java.sql.connection;
import java.sql.resultset;
import java.util.vector;
import javax.swing.borderfactory;
import javax.swing.grouplayout;
import javax.swing.jbutton;
import javax.swing.jinternalframe;
import javax.swing.jlabel;
import javax.swing.joptionpane;
import javax.swing.jpanel;
import javax.swing.jscrollpane;
import javax.swing.jtable;
import javax.swing.jtextfield;
import javax.swing.layoutstyle;
import javax.swing.table.defaulttablemodel;
import com.sjsq.dao.userdao;
import com.sjsq.model.user;
import com.sjsq.util.dbutil;
import com.sjsq.util.stringutil;
public class userinfofrm extends jinternalframe {
private jbutton jbutton1;
private jbutton jbutton2;
private jlabel jlabel1;
private jlabel jlabel2;
private jlabel jlabel3;
private jlabel jlabel4;
private jlabel jlabel5;
private jpanel jpanel1;
private jpanel jpanel2;
private jscrollpane jscrollpane1;
private jtextfield passwordtext;
private jtextfield useridtext;
private jtextfield usernametext;
private jtextfield usernaneselecttext;
private jtable usertable;
dbutil dbutil = new dbutil();
userdao userdao = new userdao();
public userinfofrm() {
initcomponents();
filltable(new user());
settitle(“用户信息”);
this.setlocation(200, 50);
}
private void filltable(user user) {
defaulttablemodel model = (defaulttablemodel) usertable.getmodel();
model.setrowcount(0);
connection con = null;
try {
con = dbutil.getcon();
resultset list = userdao.list(con, user);
while (list.next()) {
vector rowdata = new vector();
rowdata.add(list.getint(“id”));
rowdata.add(list.getstring(“username”));
rowdata.add(list.getstring(“password”));
model.addrow(rowdata);
}
} catch (exception e) {
e.printstacktrace();
} finally {
try {
dbutil.closecon(con);
} catch (exception e) {
e.printstacktrace();
}
}
}
private void initcomponents() {
jlabel2 = new jlabel();
jscrollpane1 = new jscrollpane();
usertable = new jtable();
jpanel1 = new jpanel();
jlabel1 = new jlabel();
jbutton1 = new jbutton();
usernaneselecttext = new jtextfield();
jpanel2 = new jpanel();
jlabel3 = new jlabel();
useridtext = new jtextfield();
jlabel4 = new jlabel();
usernametext = new jtextfield();
jlabel5 = new jlabel();
passwordtext = new jtextfield();
jbutton2 = new jbutton();
jlabel2.settext(“jlabel2”);
setclosable(true);
usertable.setmodel(new defaulttablemodel(new object[][] {
}, new string[] { “编号”, “账号”, “密码” }) {
boolean[] canedit = new boolean[] { false, false, false };
public boolean iscelleditable(int rowindex, int columnindex) {
return canedit[columnindex];
}
});
usertable.addmouselistener(new java.awt.event.mouseadapter() {
public void mousepressed(java.awt.event.mouseevent evt) {
usertablemousepressed(evt);
}
});
jscrollpane1.setviewportview(usertable);
jpanel1.setborder(borderfactory.createtitledborder(“表单操作”));
jlabel1.settext(“账号:”);
jbutton1.settext(“查询”);
jbutton1.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jbutton1actionperformed(evt);
}
});
grouplayout jpanel1layout = new grouplayout(jpanel1);
jpanel1.setlayout(jpanel1layout);
jpanel1layout.sethorizontalgroup(jpanel1layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel1layout.createsequentialgroup().addcontainergap().addcomponent(jlabel1)
.addgap(18, 18, 18)
.addcomponent(usernaneselecttext, grouplayout.default_size, 184, short.max_value)
.addgap(18, 18, 18).addcomponent(jbutton1).addcontainergap()));
jpanel1layout.setverticalgroup(jpanel1layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel1layout.createsequentialgroup().addgroup(jpanel1layout
.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel1layout.createparallelgroup(grouplayout.alignment.baseline)
.addcomponent(jlabel1).addcomponent(usernaneselecttext,
grouplayout.preferred_size, grouplayout.default_size,
grouplayout.preferred_size))
.addcomponent(jbutton1))
.addcontainergap(grouplayout.default_size, short.max_value)));
jpanel2.setborder(borderfactory.createtitledborder(“用户操作”));
jlabel3.settext(“编号:”);
useridtext.seteditable(false);
jlabel4.settext(“账号:”);
jlabel5.settext(“密码:”);
jbutton2.settext(“修改”);
jbutton2.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
jbutton2actionperformed(evt);
}
});
grouplayout jpanel2layout = new grouplayout(jpanel2);
jpanel2.setlayout(jpanel2layout);
jpanel2layout.sethorizontalgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel2layout.createsequentialgroup().addcontainergap()
.addgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel2layout.createsequentialgroup().addcomponent(jlabel3)
.addpreferredgap(layoutstyle.componentplacement.related)
.addcomponent(useridtext, grouplayout.preferred_size, 85,
grouplayout.preferred_size)
.addgap(18, 18, 18).addcomponent(jlabel4))
.addgroup(jpanel2layout.createsequentialgroup().addcomponent(jlabel5)
.addpreferredgap(layoutstyle.componentplacement.related)
.addcomponent(passwordtext, grouplayout.preferred_size, 88,
grouplayout.preferred_size)))
.addgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel2layout.createsequentialgroup().addgap(37, 37, 37).addcomponent(
usernametext, grouplayout.preferred_size, 94,
grouplayout.preferred_size))
.addgroup(jpanel2layout.createsequentialgroup().addgap(8, 8, 8).addcomponent(jbutton2)))
.addcontainergap(26, short.max_value)));
jpanel2layout.setverticalgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel2layout.createsequentialgroup()
.addgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.baseline)
.addcomponent(jlabel3).addcomponent(jlabel4)
.addcomponent(useridtext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addcomponent(usernametext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size))
.addgap(29, 29, 29)
.addgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.baseline)
.addcomponent(jlabel5)
.addcomponent(passwordtext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addcomponent(jbutton2))
.addcontainergap(37, short.max_value)));
grouplayout layout = new grouplayout(getcontentpane());
getcontentpane().setlayout(layout);
layout.sethorizontalgroup(layout.createparallelgroup(grouplayout.alignment.leading).addgroup(layout
.createsequentialgroup().addgap(24, 24, 24)
.addgroup(layout.createparallelgroup(grouplayout.alignment.trailing)
.addcomponent(jpanel2, grouplayout.alignment.leading,
grouplayout.default_size, grouplayout.default_size,
short.max_value)
.addcomponent(jscrollpane1, grouplayout.alignment.leading, 0, 0, short.max_value)
.addcomponent(jpanel1, grouplayout.alignment.leading,
grouplayout.default_size, grouplayout.default_size,
short.max_value))
.addgap(226, 226, 226)));
layout.setverticalgroup(layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(layout.createsequentialgroup()
.addcomponent(jpanel1, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addgap(28, 28, 28)
.addcomponent(jscrollpane1, grouplayout.preferred_size, 136,
grouplayout.preferred_size)
.addpreferredgap(layoutstyle.componentplacement.unrelated)
.addcomponent(jpanel2, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addcontainergap(16, short.max_value)));
pack();
}
private void usertablemousepressed(java.awt.event.mouseevent evt) {
int row = this.usertable.getselectedrow();
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、oppo等大厂,18年进入阿里一直到现在。
深知大多数java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上java开发知识点,不论你是刚入门android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
t = new grouplayout(jpanel2);
jpanel2.setlayout(jpanel2layout);
jpanel2layout.sethorizontalgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel2layout.createsequentialgroup().addcontainergap()
.addgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel2layout.createsequentialgroup().addcomponent(jlabel3)
.addpreferredgap(layoutstyle.componentplacement.related)
.addcomponent(useridtext, grouplayout.preferred_size, 85,
grouplayout.preferred_size)
.addgap(18, 18, 18).addcomponent(jlabel4))
.addgroup(jpanel2layout.createsequentialgroup().addcomponent(jlabel5)
.addpreferredgap(layoutstyle.componentplacement.related)
.addcomponent(passwordtext, grouplayout.preferred_size, 88,
grouplayout.preferred_size)))
.addgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel2layout.createsequentialgroup().addgap(37, 37, 37).addcomponent(
usernametext, grouplayout.preferred_size, 94,
grouplayout.preferred_size))
.addgroup(jpanel2layout.createsequentialgroup().addgap(8, 8, 8).addcomponent(jbutton2)))
.addcontainergap(26, short.max_value)));
jpanel2layout.setverticalgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(jpanel2layout.createsequentialgroup()
.addgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.baseline)
.addcomponent(jlabel3).addcomponent(jlabel4)
.addcomponent(useridtext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addcomponent(usernametext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size))
.addgap(29, 29, 29)
.addgroup(jpanel2layout.createparallelgroup(grouplayout.alignment.baseline)
.addcomponent(jlabel5)
.addcomponent(passwordtext, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addcomponent(jbutton2))
.addcontainergap(37, short.max_value)));
grouplayout layout = new grouplayout(getcontentpane());
getcontentpane().setlayout(layout);
layout.sethorizontalgroup(layout.createparallelgroup(grouplayout.alignment.leading).addgroup(layout
.createsequentialgroup().addgap(24, 24, 24)
.addgroup(layout.createparallelgroup(grouplayout.alignment.trailing)
.addcomponent(jpanel2, grouplayout.alignment.leading,
grouplayout.default_size, grouplayout.default_size,
short.max_value)
.addcomponent(jscrollpane1, grouplayout.alignment.leading, 0, 0, short.max_value)
.addcomponent(jpanel1, grouplayout.alignment.leading,
grouplayout.default_size, grouplayout.default_size,
short.max_value))
.addgap(226, 226, 226)));
layout.setverticalgroup(layout.createparallelgroup(grouplayout.alignment.leading)
.addgroup(layout.createsequentialgroup()
.addcomponent(jpanel1, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addgap(28, 28, 28)
.addcomponent(jscrollpane1, grouplayout.preferred_size, 136,
grouplayout.preferred_size)
.addpreferredgap(layoutstyle.componentplacement.unrelated)
.addcomponent(jpanel2, grouplayout.preferred_size,
grouplayout.default_size, grouplayout.preferred_size)
.addcontainergap(16, short.max_value)));
pack();
}
private void usertablemousepressed(java.awt.event.mouseevent evt) {
int row = this.usertable.getselectedrow();
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、oppo等大厂,18年进入阿里一直到现在。
深知大多数java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-7rwjazkp-1714786395314)]
[外链图片转存中…(img-yazrphq8-1714786395315)]
[外链图片转存中…(img-ppdt8176-1714786395315)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上java开发知识点,不论你是刚入门android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
发表评论