可以用Java语言将整个代码写下来吗
时间: 2024-01-22 22:04:19 浏览: 26
当然可以,以下是使用 Java 语言实现的一个简单示例:
1. 创建实验室和仪器类:
```java
public class Laboratory {
private int id;
private String name;
private String manager;
private String building;
private int capacity;
// 构造函数、getter和setter略
}
public class Instrument {
private int id;
private String name;
private String type;
private Laboratory laboratory;
// 构造函数、getter和setter略
}
```
2. 创建数据库连接类和实验室、仪器 DAO 类:
```java
public class DatabaseConnection {
private static final String DB_URL = "jdbc:mysql://localhost:3306/lab_management";
private static final String DB_USER = "root";
private static final String DB_PASSWORD = "password";
private Connection conn;
public DatabaseConnection() throws SQLException {
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
}
public Connection getConnection() {
return conn;
}
public void closeConnection() throws SQLException {
if (conn != null) {
conn.close();
}
}
}
public class LaboratoryDAO {
private Connection conn;
public LaboratoryDAO(Connection conn) {
this.conn = conn;
}
public void addLaboratory(Laboratory lab) throws SQLException {
PreparedStatement stmt = conn.prepareStatement(
"INSERT INTO laboratory (lab_id, lab_name, lab_manager, building, capacity) VALUES (?, ?, ?, ?, ?)");
stmt.setInt(1, lab.getId());
stmt.setString(2, lab.getName());
stmt.setString(3, lab.getManager());
stmt.setString(4, lab.getBuilding());
stmt.setInt(5, lab.getCapacity());
stmt.executeUpdate();
}
public void updateLaboratory(Laboratory lab) throws SQLException {
PreparedStatement stmt = conn.prepareStatement(
"UPDATE laboratory SET lab_name=?, lab_manager=?, building=?, capacity=? WHERE lab_id=?");
stmt.setString(1, lab.getName());
stmt.setString(2, lab.getManager());
stmt.setString(3, lab.getBuilding());
stmt.setInt(4, lab.getCapacity());
stmt.setInt(5, lab.getId());
stmt.executeUpdate();
}
public void deleteLaboratory(int id) throws SQLException {
PreparedStatement stmt = conn.prepareStatement(
"DELETE FROM laboratory WHERE lab_id=?");
stmt.setInt(1, id);
stmt.executeUpdate();
}
public List<Laboratory> getAllLaboratories() throws SQLException {
List<Laboratory> labs = new ArrayList<>();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM laboratory");
while (rs.next()) {
Laboratory lab = new Laboratory();
lab.setId(rs.getInt("lab_id"));
lab.setName(rs.getString("lab_name"));
lab.setManager(rs.getString("lab_manager"));
lab.setBuilding(rs.getString("building"));
lab.setCapacity(rs.getInt("capacity"));
labs.add(lab);
}
return labs;
}
}
public class InstrumentDAO {
private Connection conn;
public InstrumentDAO(Connection conn) {
this.conn = conn;
}
public void addInstrument(Instrument ins) throws SQLException {
PreparedStatement stmt = conn.prepareStatement(
"INSERT INTO instrument (ins_id, ins_name, ins_type, lab_id) VALUES (?, ?, ?, ?)");
stmt.setInt(1, ins.getId());
stmt.setString(2, ins.getName());
stmt.setString(3, ins.getType());
stmt.setInt(4, ins.getLaboratory().getId());
stmt.executeUpdate();
}
public void updateInstrument(Instrument ins) throws SQLException {
PreparedStatement stmt = conn.prepareStatement(
"UPDATE instrument SET ins_name=?, ins_type=?, lab_id=? WHERE ins_id=?");
stmt.setString(1, ins.getName());
stmt.setString(2, ins.getType());
stmt.setInt(3, ins.getLaboratory().getId());
stmt.setInt(4, ins.getId());
stmt.executeUpdate();
}
public void deleteInstrument(int id) throws SQLException {
PreparedStatement stmt = conn.prepareStatement(
"DELETE FROM instrument WHERE ins_id=?");
stmt.setInt(1, id);
stmt.executeUpdate();
}
public List<Instrument> getAllInstruments() throws SQLException {
List<Instrument> instruments = new ArrayList<>();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM instrument");
while (rs.next()) {
Instrument ins = new Instrument();
ins.setId(rs.getInt("ins_id"));
ins.setName(rs.getString("ins_name"));
ins.setType(rs.getString("ins_type"));
Laboratory lab = new Laboratory();
lab.setId(rs.getInt("lab_id"));
ins.setLaboratory(lab);
instruments.add(ins);
}
return instruments;
}
public List<Instrument> getInstrumentsByLaboratory(int labId) throws SQLException {
List<Instrument> instruments = new ArrayList<>();
PreparedStatement stmt = conn.prepareStatement(
"SELECT * FROM instrument WHERE lab_id=?");
stmt.setInt(1, labId);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Instrument ins = new Instrument();
ins.setId(rs.getInt("ins_id"));
ins.setName(rs.getString("ins_name"));
ins.setType(rs.getString("ins_type"));
Laboratory lab = new Laboratory();
lab.setId(rs.getInt("lab_id"));
ins.setLaboratory(lab);
instruments.add(ins);
}
return instruments;
}
}
```
3. 创建测试类:
```java
public class TestLabManagement {
public static void main(String[] args) {
try {
// 创建数据库连接
DatabaseConnection dbConn = new DatabaseConnection();
Connection conn = dbConn.getConnection();
// 创建 LaboratoryDAO 和 InstrumentDAO
LaboratoryDAO labDao = new LaboratoryDAO(conn);
InstrumentDAO insDao = new InstrumentDAO(conn);
// 新增一个实验室
Laboratory lab1 = new Laboratory();
lab1.setId(1);
lab1.setName("计算机实验室");
lab1.setManager("张三");
lab1.setBuilding("教学楼A");
lab1.setCapacity(50);
labDao.addLaboratory(lab1);
// 新增一个仪器
Instrument ins1 = new Instrument();
ins1.setId(1);
ins1.setName("计算机");
ins1.setType("台式机");
ins1.setLaboratory(lab1);
insDao.addInstrument(ins1);
// 查询所有实验室
List<Laboratory> allLabs = labDao.getAllLaboratories();
for (Laboratory lab : allLabs) {
System.out.println(lab.getName());
}
// 查询实验室1的所有仪器
List<Instrument> lab1Instruments = insDao.getInstrumentsByLaboratory(1);
for (Instrument ins : lab1Instruments) {
System.out.println(ins.getName());
}
// 更新实验室1的容纳人数为60
lab1.setCapacity(60);
labDao.updateLaboratory(lab1);
// 更新仪器1的名称为“笔记本电脑”
ins1.setName("笔记本电脑");
insDao.updateInstrument(ins1);
// 删除实验室1和仪器1
labDao.deleteLaboratory(1);
insDao.deleteInstrument(1);
// 关闭数据库连接
dbConn.closeConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
以上代码仅是一个简单的示例,实际的数据库应用会更加复杂,需要根据实际需求进行设计和实现。