void Menu_key_set(void) { key1 = Get_Key_1(); key2 = Get_Key_2(); key3 = Get_Key_3(); key4 = Get_Key_4(); if(key1 == 1) { func_index=table[func_index].up;//按键next按下后的索引号 OLED_Clear(); } if(key2 == 2) { func_index=table[func_index].down; OLED_Clear(); } if(key3 == 3) { func_index=table[func_index].enter;//按键next按下后的索引号 OLED_Clear(); } current_operation_index=table[func_index].current_operation;//执行当前索引号所对应的功能函数。 (*current_operation_index)();//执行当前操作函数 }添加什么函数可以检测按键松手
时间: 2023-12-06 17:39:49 浏览: 194
你可以添加一个函数来检测按键是否松开,例如:
```c
int Is_Key_Released(int key) {
switch(key) {
case 1: return Get_Key_1() == 0;
case 2: return Get_Key_2() == 0;
case 3: return Get_Key_3() == 0;
case 4: return Get_Key_4() == 0;
default: return 0;
}
}
```
然后在 `Menu_key_set` 函数中添加以下代码:
```c
if(Is_Key_Released(1)) {
// 按键 1 松开
}
if(Is_Key_Released(2)) {
// 按键 2 松开
}
if(Is_Key_Released(3)) {
// 按键 3 松开
}
if(Is_Key_Released(4)) {
// 按键 4 松开
}
```
这样就可以检测按键是否松开了。
相关问题
CREATE TABLE Reader ( reader_id INT, name VARCHAR(50), gender VARCHAR(10), birthdate DATE, phone VARCHAR(20), PRIMARY KEY (reader_id) ); CREATE TABLE Book ( book_id INT, title VARCHAR(100), author VARCHAR(50), publisher VARCHAR(50), publish_date DATE, price DECIMAL(8,2), PRIMARY KEY (book_id) ); CREATE TABLE Borrow ( borrow_id INT, reader_id INT, book_id INT, borrow_date DATE, return_date DATE, status INT, PRIMARY KEY (borrow_id), FOREIGN KEY (reader_id) REFERENCES Reader(reader_id), FOREIGN KEY (book_id) REFERENCES Book(book_id) ); CREATE TABLE Library ( library_id INT, book_id INT, quantity INT, PRIMARY KEY (library_id), FOREIGN KEY (book_id) REFERENCES Book(book_id) ); CREATE TABLE Category ( category_id INT, category_name VARCHAR(50), PRIMARY KEY (category_id) ); CREATE TABLE Admin ( admin_id INT, name VARCHAR(50), gender VARCHAR(10), phone VARCHAR(20), PRIMARY KEY (admin_id) );用Java连接上面数据库用户名root密码as101213数据库名books创建一个图书借阅系统的框架编程、实现UI重点实现程序的用户界面(UI),用户界面UI推荐使用SWING开发,界面务求美观,具有基本的菜单功能。
好的,下面是一个简单的图书借阅管理系统的Java框架代码,使用了JDBC连接MySQL数据库,并使用了Swing开发用户界面:
```java
import java.sql.*;
import javax.swing.*;
public class LibrarySystem extends JFrame {
private Connection con;
private Statement stmt;
private ResultSet rs;
public LibrarySystem() {
super("图书借阅管理系统");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
// 创建菜单栏
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
// 创建“读者管理”菜单
JMenu readerMenu = new JMenu("读者管理");
menuBar.add(readerMenu);
// 创建“借书管理”菜单
JMenu borrowMenu = new JMenu("借书管理");
menuBar.add(borrowMenu);
// 创建“还书管理”菜单
JMenu returnMenu = new JMenu("还书管理");
menuBar.add(returnMenu);
// 创建“图书管理”菜单
JMenu bookMenu = new JMenu("图书管理");
menuBar.add(bookMenu);
// 创建“系统设置”菜单
JMenu systemMenu = new JMenu("系统设置");
menuBar.add(systemMenu);
// 连接数据库
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/books", "root", "as101213");
stmt = con.createStatement();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "连接数据库失败:" + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
setVisible(true);
}
public static void main(String[] args) {
new LibrarySystem();
}
}
```
以上代码实现了一个基本的用户界面,并且连接了MySQL数据库。你可以根据需要添加菜单项并实现对应的功能。
当然,由于时间和篇幅的限制,以上代码仅为一个简单的示例,并没有实现具体的功能。如果需要更详细的代码,请提供更具体的需求,我会尽力提供帮助。
用java语言写一个课程设计,题目:通用合同管理系统(限1人) 要求有用户登录等GUI界面,用户数据存在数据库里,能运用接口、继承、菜单等知识,并体现面向对象编程思想。具体如下: 1、用户权限管理;2、合同类型管理;3、合同管理;4、合同到期提醒;5、备份管理 6、合同模版管理。
好的,下面是一个简单的Java课程设计示例,题目是“通用合同管理系统”。这个示例将涵盖用户登录界面、用户权限管理、合同类型管理、合同管理、合同到期提醒、备份管理和合同模板管理等功能。
### 1. 数据库设计
首先,我们需要设计数据库表来存储用户数据、合同类型、合同信息和合同模板等。
```sql
-- 用户表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
role VARCHAR(20) NOT NULL
);
-- 合同类型表
CREATE TABLE contract_types (
id INT PRIMARY KEY AUTO_INCREMENT,
type_name VARCHAR(50) NOT NULL
);
-- 合同表
CREATE TABLE contracts (
id INT PRIMARY KEY AUTO_INCREMENT,
contract_type_id INT,
contract_name VARCHAR(100) NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
content TEXT,
FOREIGN KEY (contract_type_id) REFERENCES contract_types(id)
);
-- 合同模板表
CREATE TABLE contract_templates (
id INT PRIMARY KEY AUTO_INCREMENT,
template_name VARCHAR(50) NOT NULL,
template_content TEXT NOT NULL
);
```
### 2. Java代码结构
我们将使用Java Swing来创建GUI界面,并使用JDBC来连接数据库。
#### 2.1 数据库连接类
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseConnection {
private static final String URL = "jdbc:mysql://localhost:3306/contract_management";
private static final String USER = "root";
private static final String PASSWORD = "password";
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}
```
#### 2.2 用户登录界面
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class LoginFrame extends JFrame {
private JTextField usernameField;
private JPasswordField passwordField;
public LoginFrame() {
setTitle("用户登录");
setSize(300, 150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel panel = new JPanel(new GridLayout(3, 2));
panel.add(new JLabel("用户名:"));
usernameField = new JTextField();
panel.add(usernameField);
panel.add(new JLabel("密码:"));
passwordField = new JPasswordField();
panel.add(passwordField);
JButton loginButton = new JButton("登录");
panel.add(new JLabel());
panel.add(loginButton);
add(panel);
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String username = usernameField.getText();
String password = new String(passwordField.getPassword());
if (authenticate(username, password)) {
JOptionPane.showMessageDialog(null, "登录成功");
dispose();
new MainFrame().setVisible(true);
} else {
JOptionPane.showMessageDialog(null, "用户名或密码错误");
}
}
});
}
private boolean authenticate(String username, String password) {
String sql = "SELECT * FROM users WHERE username = ? AND password = ?";
try (Connection conn = DatabaseConnection.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, username);
stmt.setString(2, password);
ResultSet rs = stmt.executeQuery();
return rs.next();
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
public static void main(String[] args) {
new LoginFrame().setVisible(true);
}
}
```
#### 2.3 主界面
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MainFrame extends JFrame {
public MainFrame() {
setTitle("通用合同管理系统");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JMenuBar menuBar = new JMenuBar();
JMenu userMenu = new JMenu("用户管理");
JMenu contractMenu = new JMenu("合同管理");
JMenu backupMenu = new JMenu("备份管理");
JMenu templateMenu = new JMenu("模板管理");
menuBar.add(userMenu);
menuBar.add(contractMenu);
menuBar.add(backupMenu);
menuBar.add(templateMenu);
setJMenuBar(menuBar);
userMenu.add(new AbstractAction("用户权限管理") {
@Override
public void actionPerformed(ActionEvent e) {
new UserManagementFrame().setVisible(true);
}
});
contractMenu.add(new AbstractAction("合同类型管理") {
@Override
public void actionPerformed(ActionEvent e) {
new ContractTypeManagementFrame().setVisible(true);
}
});
contractMenu.add(new AbstractAction("合同管理") {
@Override
public void actionPerformed(ActionEvent e) {
new ContractManagementFrame().setVisible(true);
}
});
contractMenu.add(new AbstractAction("合同到期提醒") {
@Override
public void actionPerformed(ActionEvent e) {
new ContractReminderFrame().setVisible(true);
}
});
backupMenu.add(new AbstractAction("备份管理") {
@Override
public void actionPerformed(ActionEvent e) {
new BackupManagementFrame().setVisible(true);
}
});
templateMenu.add(new AbstractAction("合同模板管理") {
@Override
public void actionPerformed(ActionEvent e) {
new ContractTemplateManagementFrame().setVisible(true);
}
});
}
}
```
#### 2.4 其他管理界面
由于篇幅限制,其他管理界面的代码就不一一列出。你可以根据需要创建类似的界面类,例如`UserManagementFrame`、`ContractTypeManagementFrame`、`ContractManagementFrame`、`ContractReminderFrame`、`BackupManagementFrame`和`ContractTemplateManagementFrame`。
### 3. 面向对象编程思想
在上述代码中,我们使用了面向对象编程思想,例如:
- 类和对象的概念:每个界面都是一个类,继承自`JFrame`。
- 继承和多态:使用`AbstractAction`来实现菜单项的行为。
- 接口和抽象类:使用`ActionListener`接口来处理事件。
### 4. 总结
这个示例展示了如何使用Java编写一个简单的通用合同管理系统,包括用户登录界面、用户权限管理、合同类型管理、合同管理、合同到期提醒、备份管理和合同模板管理等功能。你可以根据具体需求进一步扩展和完善这个系统。
阅读全文
相关推荐











