用idea写学生信息管理系统

时间: 2023-08-26 19:16:08 浏览: 65
首先,需要在MySQL中创建相应的数据库和表。在MySQL中执行以下SQL语句: ``` CREATE DATABASE student_info; USE student_info; CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, gender VARCHAR(10) NOT NULL, age INT NOT NULL, class VARCHAR(50) NOT NULL, phone VARCHAR(20) NOT NULL ); CREATE TABLE score ( id INT PRIMARY KEY AUTO_INCREMENT, student_id INT NOT NULL, subject VARCHAR(50) NOT NULL, score INT NOT NULL, exam_time DATE NOT NULL, FOREIGN KEY (student_id) REFERENCES student(id) ); ``` 然后,可以使用Java语言编写前端界面和后台逻辑。下面是一个简单的示例: 1. 创建Maven项目,并在pom.xml中添加以下依赖: ``` <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency> </dependencies> ``` 2. 创建GUI界面,使用Swing实现。 3. 创建数据库连接类,实现对MySQL数据库的连接和操作。 ``` import java.sql.*; public class DBUtil { private static final String URL = "jdbc:mysql://localhost:3306/student_info?serverTimezone=UTC"; private static final String USERNAME = "root"; private static final String PASSWORD = "123456"; private static Connection conn = null; static { try { Class.forName("com.mysql.cj.jdbc.Driver"); conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } public static Connection getConnection() { return conn; } public static void close(Connection conn, Statement stmt, ResultSet rs) { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } ``` 4. 创建学生信息操作类,实现对学生信息的增删改查。 ``` import org.apache.commons.lang3.StringUtils; import java.sql.*; import java.util.ArrayList; import java.util.List; public class StudentDao { public boolean add(Student student) { Connection conn = null; PreparedStatement stmt = null; try { conn = DBUtil.getConnection(); String sql = "INSERT INTO student (name, gender, age, class, phone) VALUES (?, ?, ?, ?, ?)"; stmt = conn.prepareStatement(sql); stmt.setString(1, student.getName()); stmt.setString(2, student.getGender()); stmt.setInt(3, student.getAge()); stmt.setString(4, student.getClazz()); stmt.setString(5, student.getPhone()); int count = stmt.executeUpdate(); if (count > 0) { return true; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, stmt, null); } return false; } public boolean update(Student student) { Connection conn = null; PreparedStatement stmt = null; try { conn = DBUtil.getConnection(); String sql = "UPDATE student SET name = ?, gender = ?, age = ?, class = ?, phone = ? WHERE id = ?"; stmt = conn.prepareStatement(sql); stmt.setString(1, student.getName()); stmt.setString(2, student.getGender()); stmt.setInt(3, student.getAge()); stmt.setString(4, student.getClazz()); stmt.setString(5, student.getPhone()); stmt.setInt(6, student.getId()); int count = stmt.executeUpdate(); if (count > 0) { return true; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, stmt, null); } return false; } public boolean delete(int id) { Connection conn = null; PreparedStatement stmt = null; try { conn = DBUtil.getConnection(); String sql = "DELETE FROM student WHERE id = ?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, id); int count = stmt.executeUpdate(); if (count > 0) { return true; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, stmt, null); } return false; } public Student getById(int id) { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = DBUtil.getConnection(); String sql = "SELECT * FROM student WHERE id = ?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, id); rs = stmt.executeQuery(); if (rs.next()) { Student student = new Student(); student.setId(rs.getInt("id")); student.setName(rs.getString("name")); student.setGender(rs.getString("gender")); student.setAge(rs.getInt("age")); student.setClazz(rs.getString("class")); student.setPhone(rs.getString("phone")); return student; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, stmt, rs); } return null; } public List<Student> getAll() { Connection conn = null; Statement stmt = null; ResultSet rs = null; List<Student> students = new ArrayList<>(); try { conn = DBUtil.getConnection(); String sql = "SELECT * FROM student"; stmt = conn.createStatement(); rs = stmt.executeQuery(sql); while (rs.next()) { Student student = new Student(); student.setId(rs.getInt("id")); student.setName(rs.getString("name")); student.setGender(rs.getString("gender")); student.setAge(rs.getInt("age")); student.setClazz(rs.getString("class")); student.setPhone(rs.getString("phone")); students.add(student); } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, stmt, rs); } return students; } public List<Student> search(String keyword) { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; List<Student> students = new ArrayList<>(); try { conn = DBUtil.getConnection(); String sql = "SELECT * FROM student WHERE id LIKE ? OR name LIKE ?"; stmt = conn.prepareStatement(sql); stmt.setString(1, "%" + keyword + "%"); stmt.setString(2, "%" + keyword + "%"); rs = stmt.executeQuery(); while (rs.next()) { Student student = new Student(); student.setId(rs.getInt("id")); student.setName(rs.getString("name")); student.setGender(rs.getString("gender")); student.setAge(rs.getInt("age")); student.setClazz(rs.getString("class")); student.setPhone(rs.getString("phone")); students.add(student); } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, stmt, rs); } return students; } } ``` 5. 创建考试成绩操作类,实现对考试成绩的增删改查。 ``` import java.sql.*; import java.util.ArrayList; import java.util.List; public class ScoreDao { public boolean add(Score score) { Connection conn = null; PreparedStatement stmt = null; try { conn = DBUtil.getConnection(); String sql = "INSERT INTO score (student_id, subject, score, exam_time) VALUES (?, ?, ?, ?)"; stmt = conn.prepareStatement(sql); stmt.setInt(1, score.getStudentId()); stmt.setString(2, score.getSubject()); stmt.setInt(3, score.getScore()); stmt.setDate(4, new Date(score.getExamTime().getTime())); int count = stmt.executeUpdate(); if (count > 0) { return true; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, stmt, null); } return false; } public boolean update(Score score) { Connection conn = null; PreparedStatement stmt = null; try { conn = DBUtil.getConnection(); String sql = "UPDATE score SET student_id = ?, subject = ?, score = ?, exam_time = ? WHERE id = ?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, score.getStudentId()); stmt.setString(2, score.getSubject()); stmt.setInt(3, score.getScore()); stmt.setDate(4, new Date(score.getExamTime().getTime())); stmt.setInt(5, score.getId()); int count = stmt.executeUpdate(); if (count > 0) { return true; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, stmt, null); } return false; } public boolean delete(int id) { Connection conn = null; PreparedStatement stmt = null; try { conn = DBUtil.getConnection(); String sql = "DELETE FROM score WHERE id = ?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, id); int count = stmt.executeUpdate(); if (count > 0) { return true; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, stmt, null); } return false; } public Score getById(int id) { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = DBUtil.getConnection(); String sql = "SELECT * FROM score WHERE id = ?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, id); rs = stmt.executeQuery(); if (rs.next()) { Score score = new Score(); score.setId(rs.getInt("id")); score.setStudentId(rs.getInt("student_id")); score.setSubject(rs.getString("subject")); score.setScore(rs.getInt("score")); score.setExamTime(rs.getDate("exam_time")); return score; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, stmt, rs); } return null; } public List<Score> getByStudentId(int studentId) { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; List<Score> scores = new ArrayList<>(); try { conn = DBUtil.getConnection(); String sql = "SELECT * FROM score WHERE student_id = ?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, studentId); rs = stmt.executeQuery(); while (rs.next()) { Score score = new Score(); score.setId(rs.getInt("id")); score.setStudentId(rs.getInt("student_id")); score.setSubject(rs.getString("subject")); score.setScore(rs.getInt("score")); score.setExamTime(rs.getDate("exam_time")); scores.add(score); } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, stmt, rs); } return scores; } public List<Score> getAll() { Connection conn = null; Statement stmt = null; ResultSet rs = null; List<Score> scores = new ArrayList<>(); try { conn = DBUtil.getConnection(); String sql = "SELECT * FROM score"; stmt = conn.createStatement(); rs = stmt.executeQuery(sql); while (rs.next()) { Score score = new Score(); score.setId(rs.getInt("id")); score.setStudentId(rs.getInt("student_id")); score.setSubject(rs.getString("subject")); score.setScore(rs.getInt("score")); score.setExamTime(rs.getDate("exam_time")); scores.add(score); } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, stmt, rs); } return scores; } } ``` 6. 创建主程序类,在GUI界面中实现对学生信息和考试成绩的增删改查操作。 ``` import javax.swing.*; import javax.swing.border.EmptyBorder; import javax.swing.table.DefaultTableModel; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; public class MainFrame extends JFrame { private JPanel contentPane; private JTextField txtId; private JTextField txtName; private JTextField txtGender; private JTextField txtAge; private JTextField txtClass; private JTextField txtPhone; private JTextField txtScoreId; private JTextField txtStudentId; private JTextField txtSubject; private JTextField txtScore; private JTextField txtExamTime; private JTable tableStudent; private JTable tableScore; private StudentDao studentDao = new StudentDao(); private ScoreDao scoreDao = new ScoreDao(); public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { MainFrame frame = new MainFrame(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } public MainFrame() { setTitle("学生信息管理系统"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 800, 600); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); // 学生信息管理面板 JPanel panelStudent = new JPanel(); panelStudent.setBounds(10, 10, 764, 275); contentPane.add(panelStudent); panelStudent.setLayout(null); JLabel lblId = new JLabel("学号:"); lblId.setBounds(10, 10, 60, 25); panelStudent.add(lblId); txtId = new JTextField(); txtId.setBounds(80, 10, 120, 25); panelStudent.add(txtId); txtId.setColumns(10); JLabel lblName = new JLabel("姓名:"); lblName.setBounds(10, 45, 60, 25); panelStudent.add(lblName); txtName = new JTextField(); txtName.setBounds(80, 45, 120, 25); panelStudent.add(txtName); txtName.setColumns(10); JLabel lblGender = new JLabel("性别:"); lblGender.setBounds(10, 80, 60, 25); panelStudent.add(lblGender); txtGender = new JTextField(); txtGender.setBounds(80, 80, 120, 25); panelStudent.add(txtGender); txtGender.setColumns(10); JLabel lblAge = new JLabel("年龄:"); lblAge.setBounds(10, 115, 60, 25); panelStudent.add(lblAge); txtAge = new JTextField(); txtAge.setBounds(80, 115, 120, 25); panelStudent.add(txtAge); txtAge.setColumns(10); JLabel lblClass = new JLabel("班级:"); lblClass.setBounds(10, 150, 60, 25); panelStudent.add(lblClass); txtClass = new JTextField(); txtClass.setBounds(80, 150, 120, 25); panelStudent.add(txtClass); txtClass.setColumns(10); JLabel lblPhone = new JLabel("联系方式:"); lblPhone.setBounds(10, 185, 60, 25); panelStudent.add(lblPhone); txtPhone = new JTextField(); txtPhone.setBounds(80, 185, 120, 25); panelStudent.add(txtPhone); txtPhone.setColumns(10); JButton btnStudentAdd = new JButton("添加"); btnStudentAdd.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addStudent(); } }); btnStudentAdd.setBounds(10, 220, 80, 25); panelStudent.add(btnStudentAdd); JButton btnStudentUpdate = new JButton("修改"); btnStudentUpdate.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { updateStudent(); } }); btnStudentUpdate.setBounds(100,

相关推荐

最新推荐

recommend-type

node-v6.11.1-linux-armv7l.tar.xz

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

2024-2030中国风机盘管组市场现状研究分析与发展前景预测报告.docx

2024-2030中国风机盘管组市场现状研究分析与发展前景预测报告
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

spring添加xml配置文件

1. 创建一个新的Spring配置文件,例如"applicationContext.xml"。 2. 在文件头部添加XML命名空间和schema定义,如下所示: ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

实现实时监控告警系统:Kafka与Grafana整合

![实现实时监控告警系统:Kafka与Grafana整合](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9BVldpY3ladXVDbEZpY1pLWmw2bUVaWXFUcEdLT1VDdkxRSmQxZXB5R1lxaWNlUjA2c0hFek5Qc3FyRktudFF1VDMxQVl3QTRXV2lhSWFRMEFRc0I1cW1ZOGcvNjQw?x-oss-process=image/format,png) # 1.1 Kafka集群架构 Kafka集群由多个称为代理的服务器组成,这
recommend-type

输出这段Python代码输出所有3位整数中,个位是5且是3的倍数的整数

``` for i in range(100,1000): if i%10 == 5 and i%3 == 0: print(i) ``` 输出结果: ``` 105 135 165 195 225 255 285 315 345 375 405 435 465 495 525 555 585 615 645 675 705 735 765 795 825 855 885 915 945 975 ```