实验
实验教学授课计划
物联网20级-1+2
周次 | 星期 | 节次 | 实验地点 | 实验内容 |
---|---|---|---|---|
01-04 | 机电楼A511 | MySQL数据库实践 | ||
01-04 | 机电楼A511 | 数据库表设计实践 | ||
01-04 | 机电楼A511 | SQL实践 | ||
01-04 | 机电楼A511 | 数据库索引实践 | ||
01-04 | 机电楼A511 | Java数据库操作实践 | ||
01-04 | 机电楼A511 | 信息管理系统Web应用开发实践 | ||
01-04 | 机电楼A511 | 信息管理系统桌面应用开发实践 | ||
01-04 | 机电楼A511 | 综合实验 |
MySQL数据库实践
- MySQL数据库开发环境搭建.
- 安装MySQL数据库.
- 安装Workbench客户端.
- 基于命令行和客户端操作实践.
- 启动或关闭MySQL服务.
- 创建数据库.
- 创建用户.
- 分配用户权限.
- 创建表结构.
- 添加测试数据.
- 实践数据库和表结构的修改操作.
- 实践数据库的备份和恢复.
MySQL数据库安装和相关注意事项, 参考 https://iot.qlu.edu.cn/wx/exp_0/server.html#%E5%AE%89%E8%A3%85-mysql-8
数据库索引实践
-
下载 Employees 数据集(约35M).
-
安装数据集. 使用命令
mysql -t < employees.sql
. -
练习以下命令:
- SHOW DATABASES
- USE
<database_name>
- SHOW TABLES
- DESC
<table_name>
- SELECT * from
<table_name>
limit 0, 10 - CREATE INDEX
<index_name>
on<table_name>
(<column_name>
) - DROP INDEX
<index_name>
on<table_name>
- EXPLAIN SELECT * from
<table_name>
where<conditional_expression>
Java数据库操作实践
-
使用Eclipse或其他开发工具创建Java Project
-
下载 mysql-connector-java-8.0.24.jar, protobuf-java-3.11.4.jar, 添加到工程的包依赖中.
- MySQL创建用户. 两种方式可选:
- 命令行操作:
CREATE USER 'employees'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yoursecretpassword';
grant all on employees.* to 'employees'@'localhost';
- MySQL Workbench:
- ‘Server' -> ‘Users and Privileges'.
- 添加用户. ‘Authentication Type' 选择 ‘Standard'.
- 命令行操作:
- 示例代码: Employee.java, App.java
Employee.java
public class Employee {
private String empNo;
private String birthDate;
private String firstName;
private String lastName;
private String gender;
private String hireDate;
public Employee() { }
public Employee(String empNo, String birthDate,
String firstName, String lastName,
String gender, String hireDate) {
super();
this.empNo = empNo;
this.birthDate = birthDate;
this.firstName = firstName;
this.lastName = lastName;
this.gender = gender;
this.hireDate = hireDate;
}
public String getEmpNo() {
return empNo;
}
public void setEmpNo(String empNo) {
this.empNo = empNo;
}
public String getBirthDate() {
return birthDate;
}
public void setBirthDate(String birthDate) {
this.birthDate = birthDate;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getHireDate() {
return hireDate;
}
public void setHireDate(String hireDate) {
this.hireDate = hireDate;
}
}
App.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class App {
public static void main(String[] args) {
String sql = "select * from employees limit 0, 10";
List<Employee> empList = new ArrayList<>();
try (Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/employees",
"employees", "passwd");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) {
String empNo = rs.getString("emp_no");
String birthDate = rs
.getString("birth_date");
String firstName = rs
.getString("first_name");
String lastName = rs
.getString("last_name");
String gender = rs.getString("gender");
String hireDate = rs
.getString("hire_date");
Employee emp = new Employee(empNo,
birthDate, firstName, lastName,
gender, hireDate);
empList.add(emp);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (Employee emp : empList) {
System.out.println(emp.getEmpNo());
}
}
}
Team Project
自选题目的信息管理系统,数据库自选,编程语言自选,推荐MySQL+Java。
4-6人一组。自由分组。
作业验收: 提交软件源码和项目说明书,以及10分钟讲解演示。
要求: 根据熟悉的业务场景自选题目, 要求有一定的开发工作量, 系统实现基本的业务流程, 涵盖需求分析, 数据库设计, 软件编程, 可视化界面设计等内容, 系统界面可以选择桌面应用或Web应用实现.
可选题目示例(不限以下题目):
- 智能家居传感器监测数据管理系统. 可以通过生成数据的方式模拟实现传感器数据的上传和数据展示. 思考不同类型传感器数据的表结构设计以及数据汇总统计方式. 表字段的索引如何设计, 实现及使用.
- 超市售卖系统. 模拟实现商品的入库, 销售, 盘点库存等功能. 思考商品, 交易等表如何设计, 考虑实现商品打折, 打包促销等特性. 实现数据汇总统计功能, 如: 商品统计, 交易量统计等. 思考索引如何设计.
- 自习室座位预约系统. 模拟实现自习室在空闲时间段内的座位预约功能, 思考教室, 座位, 空闲时间, 预约之间的关系, 以及表结构如何实现. 实现预约, 退约, 空闲座位统计展示等功能. 思考索引如何设计.