评审代码:
package imp;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import bean.Admin;
import bean.Book;
import bean.Lend;
import bean.User;
import tools.ConnectionManager;
import dao.AdminDao;
public class AdminDaoImp implements AdminDao {
public Connection con = null;
PreparedStatement ps = null;
public ResultSet rs = null;
@Override
public Admin login(String a_name, String a_password) {
Admin admin = new Admin();
con = ConnectionManager.getConnection();
String sql = "select * from admin where a_username=? and a_password=?";
try {
ps = con.prepareStatement(sql);
ps.setString(1, a_name);
ps.setString(2, a_password);
rs = ps.executeQuery();
if (rs.next() == false) {
admin.setA_username("00000000");
} else {
admin.setA_username("a_name");
}
} catch (SQLException e) {
e.printStackTrace();
}
return admin;
}
@Override
public int addbooks(Book book) {
int result = 0;
con = ConnectionManager.getConnection();
String sql = "insert into bookinfo(b_name,b_price,b_writer,b_press,b_type,b_location,b_barcoad) values(?,?,?,?,?,?,?)";
try {
ps = con.prepareStatement(sql);
ps.setString(1, book.getB_name());
ps.setString(2, book.getB_price());
ps.setString(3, book.getB_writer());
ps.setString(4, book.getB_press());
ps.setString(5, book.getB_type());
ps.setString(6, book.getB_location());
ps.setString(7, book.getB_barcoad());
result = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
@Override
public List<User> getAllUser() {
List<User> list = new ArrayList<User>();
try {
con = ConnectionManager.getConnection();
ps = con.prepareStatement("select * from userinfo");
rs = ps.executeQuery();
while (rs.next()) {
User user = new User();
user.setR_id(rs.getString("r_ID"));
user.setR_name(rs.getString("r_name"));
user.setR_sex(rs.getString("r_sex"));
user.setR_occ(rs.getString("r_occ"));
user.setR_IDnum(rs.getString("r_IDnum"));
user.setTel(rs.getString("r_tel"));
user.setR_mail(rs.getString("r_mail"));
list.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
@Override
public List<Book> getAllBook() {
List<Book> list = new ArrayList<Book>();
try {
con = ConnectionManager.getConnection();
ps = con.prepareStatement("select * from bookinfo");
rs = ps.executeQuery();
while (rs.next()) {
Book book = new Book();
book.setB_ID(rs.getString("b_ID"));
book.setB_name(rs.getString("b_name"));
book.setB_price(rs.getString("b_price"));
book.setB_writer(rs.getString("b_writer"));
book.setB_press(rs.getString("b_press"));
book.setB_type(rs.getString("b_type"));
book.setB_location(rs.getString("b_location"));
book.setB_barcoad(rs.getString("b_barcoad"));
list.add(book);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
@Override
public int deletBook(String bid) {
int result = 0;
Connection connection = ConnectionManager.getConnection();
String sql = "DELETE FROM bookinfo WHERE b_ID=?";
try {
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, bid);
result = preparedStatement.executeUpdate();
if (result != 0) {
result = 1;
} else {
result = 0;
}
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
@Override
public Book getbook(String bid) {
Book book = new Book();
con = ConnectionManager.getConnection();
String sql = "select * from bookinfo where b_ID=?";
try {
ps = con.prepareStatement(sql);
ps.setString(1, bid);
rs = ps.executeQuery();
while (rs.next()) {
book.setB_ID(rs.getString("b_ID"));
book.setB_name(rs.getString("b_name"));
book.setB_price(rs.getString("b_price"));
book.setB_writer(rs.getString("b_writer"));
book.setB_press(rs.getString("b_press"));
book.setB_type(rs.getString("b_type"));
book.setB_location(rs.getString("b_location"));
book.setB_barcoad(rs.getString("b_barcoad"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return book;
}
@Override
public int updatebook(String bid, Book book) {
int result = 0;
con = ConnectionManager.getConnection();
String sql = "UPDATE bookinfo SET b_name=?, b_price=?, b_writer=?, b_press=?, b_type=?, b_location=?, b_barcoad=? WHERE b_ID=?;";
try {
ps = con.prepareStatement(sql);
ps.setString(1, book.getB_name());
ps.setString(2, book.getB_price());
ps.setString(3, book.getB_writer());
ps.setString(4, book.getB_press());
ps.setString(5, book.getB_type());
ps.setString(6, book.getB_location());
ps.setString(7, book.getB_barcoad());
ps.setString(8, bid);
result = ps.executeUpdate();
if (result != 0) {
result = 1;
} else {
result = 0;
}
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
@Override
public int borrowBook(Lend lend) {
int result = 0;
con = ConnectionManager.getConnection();
String sql = "insert into lending(r_tel,b_barcoad,l_borrowtime,l_backtime,l_return,l_punishment) values(?,?,?,?,?,?)";
try {
ps = con.prepareStatement(sql);
ps.setString(1, lend.getR_tel());
ps.setString(2, lend.getB_barcoad());
ps.setString(3, lend.getL_borrowtime());
ps.setString(4, lend.getL_backtime());
ps.setString(5, lend.getL_return());
ps.setString(6, lend.getL_punishment());
result = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
@Override
public int returnbook(Lend lend) {
int result = 0;
con = ConnectionManager.getConnection();
String sql = "UPDATE lending SET l_return=? WHERE r_tel=? AND b_barcoad=?;";
try {
ps = con.prepareStatement(sql);
ps.setInt(1, 1);
ps.setString(2, lend.getR_tel());
ps.setString(3, lend.getB_barcoad());
result = ps.executeUpdate();
if (result != 0) {
result = 1;
} else {
result = 0;
}
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
@Override
public void overdueBook() {
List<Lend> time = getTime();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 0; i < time.size(); i++) {
Lend lend = new Lend();
lend = (Lend) time.get(i);
try {
Date date = new Date();
String times = df.format(date);
Date d1 = df.parse(lend.getL_backtime());
Date d2 = df.parse(times);
long diff = d1.getTime() - d2.getTime();
long punishment = diff / (1000 * 60 * 60 * 24);
if (punishment < 0) {
punishment(lend.getID());
}
} catch (Exception e) {
}
}
}
public void punishment(String ID) {
con = ConnectionManager.getConnection();
String sql = "UPDATE lending SET l_punishment=1 WHERE ID=?;";
try {
ps = con.prepareStatement(sql);
ps.setString(1, ID);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public List<Lend> getTime() {
List<Lend> list = new ArrayList<Lend>();
try {
con = ConnectionManager.getConnection();
ps = con.prepareStatement("SELECT * FROM lending WHERE l_punishment = 0;");
rs = ps.executeQuery();
while (rs.next()) {
Lend lend = new Lend();
lend.setL_backtime(rs.getString("l_backtime"));
lend.setID(rs.getString("ID"));
list.add(lend);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
@Override
public List<Lend> getoverdue() {
overdueBook();
List<Lend> list = new ArrayList<Lend>();
try {
con = ConnectionManager.getConnection();
ps = con.prepareStatement("select * from lending WHERE l_punishment = 1;");
rs = ps.executeQuery();
while (rs.next()) {
Lend lend = new Lend();
lend.setR_tel(rs.getString("r_tel"));
lend.setB_barcoad(rs.getString("b_barcoad"));
lend.setL_backtime(rs.getString("l_backtime"));
list.add(lend);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
评审结果:
1.connection和preparedStatement在每个函数里都赋值了,还把它做成类的成员变量;
2.函数的方法名定义的太随意;
3.在类中没有注释,方法的功能不明确,参数值意义不清楚。