您的位置:首页 > 其它

图书管理系统具体实现方法

2010-08-18 16:48 183 查看
1 ~首先对图书的管理做个分类,bookmangement

就是对表的操作,共有几张表,关系,主键和外键关系

1(图书表)books ;属性,bookid ,isbn,title,category,authors,price,publisher ,publisherDATE,stock

2(图书类别表)categories categoryid ,categoryName;

3(读者表)readerid , name,carid,sex,age,phone,

4 lendbooktable 读者和图书什么关系,一个读者可以借许多图书,一本图书只能被一名读者观看,。建立主外键关系

bookid,readerid,lendDate,returndate,fine.admin.

5,管理员表(administration) adminid name;建立数据库,主外键关系明确,

这是第一步;

2~

写Java类,bookmanagement 就是数据库,那么建立Java项目就是bookmanagement,

数据库里的每张表就是Java中的每个类,数据库表里面的属性,就对应Java类中的每个属性,

那么共有五张表,那么就是五个类;

主要就是怎么确定在Java中确定主外键关系;

那么就是简单的设计,多个外键的属性就好了 ,比如;

public class Lendbooktable implements Serializable{
private Book book;
private Reader reader;
private Date lendDate;
private Date eReturnDate;
private Date aReturnDate;
private double fine;
private Administrator administrator;

这就代码administration 来操作这个借书的关系

。类写完之后,很简单

三~ 写连接数据库

public Class connctionDatebase

{

public static String dbdriver="com.mysql.jdbc.driver";

public staic String dburl="jdbc:mysql//localhost:1433/databasesName"//这里可以是Oracle也可以是SqlServer

//如果这个DBdriver and dburl 你记不住,直接导入相对应的jar,在MyEclipse database explorer里面就可以现实出来

public staic String user="root";

public staic String pass="1234"

public staic connction conn=null;

public connctionDatebas()

{

try{

Class.forName(dbdriver);

conn=drivermanager.getConnect(dburl,dbpassword,dbuser);

catch(exciption e)

{}

}

}

public void colse(){

this.conn.close;

}

public Connction getConnction()

{

return this.conn;

//简单写个mian 反复测试一下

public static void main(String[] args)

{

Datebase db=new datebase();

conn=db.getConnection();

string sql="select * from books';

statment statment=db.createStament();

result rs=statment.excultquery(sql)

while(rs.netx())

{

System.out.println("rs.getString(""bookname)")

}
}

}

//输出结果,以上代码使用记事本写了,估计有错误,只是记了一下思路。建议用myeclipse;

写完之后就要写 insert update delete 对书进行操作,比如查看所有的书,查处所有的书,按名字查所有的书,

简单的写两个,基本上都差不多,就是sql语句

public class BookMangement{

private Conncetion connection;

private Statement statement;

private preparedStatement preparement;

private ResuleSet resultSet;

public void addCategory(Category category)throws SqlExction

{

String sql ="insert into categories (categoryname)values(?);"

connction=ConnectionFactory.getConnction();

preparedStatement=connecton.prepareStatement(sql);

preparedSatatment.setString(1,category.getCategoryName())

preparedStatement.executeUpdate();

ConnectionFactory.close(preparedStatement);//关闭命令对象
ConnectionFactory.close(connection);//关闭连接对象

}

/删除图书类别
public void deleteCategory(Category category)throws SQLException
{
String sql = "delete from categories where categoryid = ?";//sql语句
connection = ConnectionFactory.getConnection();//获取连接
preparedStatement = connection.prepareStatement(sql);//创建预编译的命令对象
preparedStatement.setInt(1, category.getCategoryId());//设置参数
preparedStatement.executeUpdate();//执行 更新 操作
ConnectionFactory.close(preparedStatement);//关闭命令对象
ConnectionFactory.close(connection);//关闭连接对象
}

}

//图书 添加 删除 更新 查询(全部、编号、图书名称、出版社、出版日期)
public void addBook(Book book)throws SQLException
{
String sql = "insert into books " +
"(isbn,title,authors,price,publisher,publisherdate,stock,category) " +
" values(?,?,?,?,?,?,?,?)";
connection = ConnectionFactory.getConnection();
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, book.getIsbn());
preparedStatement.setString(2, book.getTitle());
preparedStatement.setString(3, book.getAuthors());
preparedStatement.setDouble(4, book.getPrice());
preparedStatement.setString(5, book.getPublisher());
preparedStatement.setDate(6, book.getPublisherDate());
preparedStatement.setInt(7, book.getStock());
preparedStatement.setInt(8, book.getCategory().getCategoryId());
preparedStatement.executeUpdate();
ConnectionFactory.close(preparedStatement);
ConnectionFactory.close(connection);
}

基本上就是写个sql语句,就好了,在复制以下代码,都一样的,就好似sql 语句不通罢了;

最后就是swing 和awt 的知识了,

首先建立一个图书管理界面,用MyEclipse swing 里面建

MDIapplication 主窗体,比如添加图书,删除图书,更改图书,更新图书,查看所有图书

点击添加图书跳出子窗口,

在绑定里面有个方法.chooce bean;比如你在哪个类里面写了一个得到所有类别的方法,那你就可以在chooice bean里面选择】

这个包所对应的类,之后在绑定里面,选择chooce bean ,的名子,那你的绑定的方法自动会出来,之后选择

如果显示的是字符串,那就在类里面写个tostring的方法,返回name

这个chooice bean 很方便,

jinternaiframe建立打开文本做子串口就可以了

简单的事件问题,

简单的就是一个类里面的属性,

在子窗口绑定元素,类,

子窗口里面简单的价格输入校验,和日期校验,还有简单的绑定,用beans;制定包名和类名;

文本域得到Button选的值。
stringbuffer message=new stringbuffer();
message.append("aihao")
message.append(textFiled1.getTEST)()
message.append("yundong");
message.append(test.SelectItem());
Text文本域 。tostring

打开按钮事件;
首先调用addBook的方法
在Button里面实例化book对象
之后,book.setTest(texIbn.getTest());
book.setTitle(txtTitle.getTest());
字符串要装成Date类型‘;
book.setPublisherDate(Date.valueOf(txtDate.getTest()))
book.setStock(Integer)spnStock.getValue();
Categroy categroy=(Category)cboCategory.getSelectedItem();
book.setCategory(category);
//调用AddBook
trt
{
BookManagement1.addBook(Book);
JoptionPane.showMessageDialog(this.getParent(),"添加图书成功");
}
catch(Exception e)
{
JoptionPane.showMessageDialog(this.getParent(),"添加图书失败");

}

private void jLabel3MouseClicked(java.awt.event.MouseEvent evt)
throws SQLException {
Connection connection;
Statement statement;
ResultSet resultSet;
String sql = "select name,password from Administrators";
char[] password = jPasswordField1.getPassword();
String name = jTextField1.getText();
connection = ConnectionFactory.getConnection();//获取连接
statement = connection.createStatement();//返回命令对象
resultSet = statement.executeQuery(sql); //执行 查询 返回结果集对象
String sqlname = null;
String sqlpassword = null;
while (resultSet.next())//遍历结果集
{
sqlname = resultSet.getString(1);
sqlpassword = resultSet.getString(2);
if (name.equals(sqlname)) {
JOptionPane.showMessageDialog(this, sqlpassword);
break;
}
}
for (int i = 0; i < 1; i++) {
if (name.equals(sqlname)) {
break;
} else if (!(name.equals(sqlname))) {
JOptionPane.showMessageDialog(this, "请先输入正确的用户名!");
}
}
ConnectionFactory.close(resultSet);
ConnectionFactory.close(statement);
ConnectionFactory.close(connection);
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
throws SQLException {
try {
Connection connection;
Statement statement;
ResultSet resultSet;
String sql = "select name,password from Administrators";
char[] password1 = jPasswordField1.getPassword();
char[] password2 = jPasswordField2.getPassword();
char[] password3 = jPasswordField3.getPassword();
String name = jTextField1.getText();
String sql1 = "update Administrators set password='"
+ String.valueOf(password2) + "' where name='" + name + "'";
connection = ConnectionFactory.getConnection();//获取连接
statement = connection.createStatement();//返回命令对象
resultSet = statement.executeQuery(sql);
String sqlname = null;
String sqlpassword = null;
while (resultSet.next()) {
sqlname = resultSet.getString(1);
sqlpassword = resultSet.getString(2);
if (name.equals(sqlname)
&& String.valueOf(password1).equals(sqlpassword)
&& String.valueOf(password2).equals(
String.valueOf(password3))) {
statement.executeUpdate(sql1);
JOptionPane.showMessageDialog(this, "密码修改成功!");
setClosed(true);
break;
}
}
for (int i = 0; i < 1; i++) {
if (name.equals(sqlname)
&& String.valueOf(password1).equals(sqlpassword)
&& String.valueOf(password2).equals(
String.valueOf(password3))) {
break;
} else if (name.equals("")
|| String.valueOf(password1).equals("")
|| String.valueOf("").equals(String.valueOf(""))) {
JOptionPane.showMessageDialog(this, "每项都必须填写!");
} else if (!(name.equals(sqlname))
|| !(String.valueOf(password1).equals(sqlpassword))) {
JOptionPane.showMessageDialog(this, "用户名或密码不正确!");
break;
} else if (!(String.valueOf(password2).equals(String
.valueOf(password3)))) {
JOptionPane.showMessageDialog(this, "新密码和确认码不正确!");
break;
}

}
resultSet.close();
statement.close();
connection.close();
} catch (Exception e) {
// TODO: handle exception
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: