java学生通讯录管理系统

news2025/2/26 17:49:46

设计要求

本课程设计,涉及输入输出、GUI设计、数据库操作等本课程重要概念和编程技能,全面巩固和加深学生对java程序设计的相关概念的理解,全面强化java编程技能,培养学生综合运用所学知识和技能分析问题和解决问题的能力。培养学生的团队精神和协作能力。
课程设计内容要求:

一、数据库设计:

创建库mydb(在mysql中进行)
数据表设计:

1. 学生通讯信息表

employee:no, name, sex, class, phone,email

二、功能设计:

  1. 功能模块选择菜单
  2. 用户登录
    3.录入模块:
    学生信息表按相应id录入。
  3. 数据的插入、修改、删除

三、界面设计:

1.用户登录
2.主窗体

四、设计要求:

  1. 采用GUI编程
    2.画出功能模块图
    3.Java GUI编程实现,要求:
  2. 各功能模块功能清晰、单一。
  3. 各功能模块命名规范
  4. 界面友好
  5. 代码注释完整,准确。

一、功能介绍

该系统主要是用于管理学生基本通讯信息,主要功能包括两方面的:
1.管理学生信息,其中包括添加,删除,修改等操作。
2.查询信息,其中查询学生电话、邮件等信息。

二、设计过程

1.登录界面denglu.java

登录时,输入账号密码未填写、输入错误账号密码都会提出错误提示框。在填写正确账号和密码后,会提示正确并跳转到主窗体。
package 课程设计;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class denglu extends JFrame {

	private JPanel contentPane;
	private JTextField textField;
	private JPasswordField passwordField;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					denglu frame = new denglu();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public denglu() {
		setTitle("登录界面\r\n");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("账号:");
		lblNewLabel.setBounds(33, 27, 68, 18);
		contentPane.add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("密码:");
		lblNewLabel_1.setBounds(33, 71, 68, 18);
		contentPane.add(lblNewLabel_1);
		
		textField = new JTextField();
		textField.setBounds(115, 24, 196, 24);
		contentPane.add(textField);
		textField.setColumns(10);
		
		passwordField = new JPasswordField();
		passwordField.setBounds(115, 68, 196, 24);
		contentPane.add(passwordField);
		
		JButton btnNewButton = new JButton("登录");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if ((textField.getText().equals("admin")==false)||(passwordField.getText().equals("1234")==false)) 
				{
					JOptionPane.showMessageDialog(null, "账号或者密码错误,请重新输入");
					textField.setText("");
					passwordField.setText("");
				}
				else{
					JOptionPane.showMessageDialog(null, "正确" );
					new zhuchuangti().setVisible(true);
					dispose();
				}
				
			}
		});
		btnNewButton.setBounds(33, 126, 113, 27);
		contentPane.add(btnNewButton);
		
		JButton btnNewButton_1 = new JButton("退出");
		btnNewButton_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		btnNewButton_1.setBounds(198, 126, 113, 27);
		contentPane.add(btnNewButton_1);
	}

}

2. 学生通讯录界面zhuchuangti.Java

学生通讯录有学号、姓名、班级、性别、邮箱、电话号码
package 课程设计;

import javax.activation.DataSource;
import javax.naming.spi.DirStateFactory.Result;
import javax.swing.*;

import com.mysql.cj.jdbc.AbandonedConnectionCleanupThread;

import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.*;

/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class zhuchuangti extends JFrame 
{
	public zhuchuangti() {
	}
	private JTextArea jTextArea1;
	private JLabel jLabel1;
	private JTextField jTextField1;
	private JLabel jLabel2;
	private JLabel jLabel3;
	private JLabel jLabel4;
	private JLabel jLabel5;
	private JLabel jLabel6;
	private JScrollPane jScrollPane1;
	private JButton jButton6;
	private JButton jButton5;
	private JButton jButton4;
	private JButton jButton3;
	private JButton jButton1;
	private JButton jButton2;
	private JTextField jTextField6;
	private JTextField jTextField5;
	private JTextField jTextField4;
	private JTextField jTextField3;
	private JTextField jTextField2;

	public static final String url = "jdbc:mysql://localhost:3306/mydb?useSSL=FALSE&serverTimezone=GMT";  
	public static final String name = "com.mysql.cj.jdbc.Driver";  
	public static final String user = "root";  
	public static final String password = "12345";  

	{
		this.setBounds(100,100,771,400);
		this.setTitle("学生通讯录管理系统");
		Container s= getContentPane();
		s.setBounds(-8, -30, 558, 362);
		{
			jScrollPane1 = new JScrollPane();
			s.add(jScrollPane1);
			jScrollPane1.setBounds(12, 12,720, 120);
			{
				jTextArea1 = new JTextArea();
				jScrollPane1.setViewportView(jTextArea1);
				jTextArea1.setBounds(12, 12, 460, 120);
			}
		}
		{
			jLabel1 = new JLabel();
			s.add(jLabel1);
			jLabel1.setText("\u5b66   \u53f7\uff1a");
			jLabel1.setBounds(12, 146, 48, 18);
		}
		{
			jTextField1 = new JTextField();
			s.add(jTextField1);
			jTextField1.setBounds(60, 144, 78, 24);
		}
		{
			jTextField2 = new JTextField();
			s.add(jTextField2);
			jTextField2.setBounds(226, 144, 78, 24);
		}
		{
			jLabel2 = new JLabel();
			s.add(jLabel2);
			jLabel2.setText("\u59d3\u540d\uff1a");
			jLabel2.setBounds(187, 146, 39, 18);
		}
		{
			jTextField3 = new JTextField();
			s.add(jTextField3);
			jTextField3.setBounds(394, 144, 78, 24);
		}
		{
			jLabel3 = new JLabel();
			s.add(jLabel3);
			jLabel3.setText("\u6027\u522b\uff1a");
			jLabel3.setBounds(355, 145, 39, 18);
		}
		{
			jLabel4 = new JLabel();
			s.add(jLabel4);
			jLabel4.setText("班级:");
			jLabel4.setBounds(12, 180, 54, 17);
		}
		{
			jTextField4 = new JTextField();
			s.add(jTextField4);
			jTextField4.setBounds(60, 180, 78, 24);
		}
		{
			jLabel5 = new JLabel();
			s.add(jLabel5);
			jLabel5.setText("电话:");
			jLabel5.setBounds(185, 180, 43, 17);
		}
		{
			jTextField5 = new JTextField();
			s.add(jTextField5);
			jTextField5.setBounds(226, 180, 78, 24);
		}
		{
			jLabel6 = new JLabel();
			s.add(jLabel6);
			jLabel6.setText("邮箱:");
			jLabel6.setBounds(355, 180, 43, 17);
		}
		{
			jTextField6 = new JTextField();
			s.add(jTextField6);
			jTextField6.setBounds(394, 180, 78, 24);
		}
		{
			jButton1 = new JButton();
			s.add(jButton1);
			jButton1.setText("显示学生信息");
			jButton1.setBounds(12, 221, 135, 24);
			jButton1.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					System.out.println("jButton1.actionPerformed, event="+evt);
					//TODO add your code for jButton1.actionPerformed
					try {
						Class.forName(name);
						System.out.println("驱动加载成功");
					} catch (ClassNotFoundException e) {
						// TODO: handle exception
						System.out.println("SQLException:"+e.getMessage());
					}
					try {
						Connection con=DriverManager.getConnection(url,user,password);
						Statement stmt=con.createStatement();
						ResultSet rs=stmt.executeQuery("select * from employee");
						jTextArea1.setText(null);
						while(rs.next()){
							jTextArea1.append("学号:"+rs.getString("no")+"\t");
							jTextArea1.append("姓名:"+rs.getString("name")+"\t");
							jTextArea1.append("性别:"+rs.getString("sex")+"\t");
							jTextArea1.append("班级:"+rs.getString("class")+"\t");
							jTextArea1.append("电话:"+rs.getString("phone")+"\t");
							jTextArea1.append("邮箱:"+rs.getString("mail")+"\n");
							
								}
						con.close();
						rs.close();
						stmt.close();
					} catch (Exception e) {
						
						// TODO: handle exception
					}
				}
			});
		}
		{
			jButton2 = new JButton();
			s.add(jButton2);
			jButton2.setText("查询学生信息");
			jButton2.setBounds(168, 221, 131, 24);
			jButton2.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					System.out.println("jButton2.actionPerformed, event="+evt);
					//TODO add your code for jButton2.actionPerformed
					try {
						
						Class.forName(name);
						System.out.println("驱动加载成功");
					} catch (ClassNotFoundException e) {
						// TODO: handle exception
						System.out.println("SQLException:"+e.getMessage());
					}
					try {
						Connection con=DriverManager.getConnection(url,user,password);
						Statement stmt=con.createStatement();
						String sqlstr="select * from employee where no='"+jTextField1.getText()+"'";
						ResultSet rs=stmt.executeQuery(sqlstr);
						while(rs.next()){
							jTextArea1.setText(null);
							jTextArea1.append("学号:"+rs.getString("no")+"\t");
							jTextArea1.append("姓名:"+rs.getString("name")+"\t");
							jTextArea1.append("性别:"+rs.getString("sex")+"\t");
							jTextArea1.append("班级:"+rs.getString("class")+"\t");
							jTextArea1.append("电话:"+rs.getString("phone")+"\t");
							jTextArea1.append("邮箱:"+rs.getString("mail")+"\n");
						}
						stmt.executeUpdate(sqlstr);
						con.close();
						rs.close();
						stmt.close();
					} catch (Exception e) {
						jTextField1.setText("");
						jTextField2.setText("");
						jTextField3.setText("");
						jTextField4.setText("");
						jTextField5.setText("");
						jTextField6.setText("");
						// TODO: handle exception
					}
				}
			});
		}
		{
			jButton3 = new JButton();
			s.add(jButton3);
			jButton3.setText("插入学生信息");
			jButton3.setBounds(321, 221, 140, 24);
			jButton3.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					System.out.println("jButton3.actionPerformed, event="+evt);
					//TODO add your code for jButton3.actionPerformed
					
					try {
						Class.forName(name);
						System.out.println("驱动加载成功");
					} catch (ClassNotFoundException e) {
						// TODO: handle exception
						System.out.println("SQLException:"+e.getMessage());
					}
					try {
						Connection con=DriverManager.getConnection(url,user,password);
						Statement stmt=con.createStatement();
						String sqlstr="insert into employee values('"+jTextField1.getText()+"','"+jTextField2.getText()+"','"+jTextField3.getText()+"','"+jTextField4.getText()+"','"+jTextField5.getText()+"','"+jTextField6.getText()+"')";
						stmt.executeUpdate(sqlstr);
						con.close();
						stmt.close();
						jTextField1.setText("");
						jTextField2.setText("");
						jTextField3.setText("");
						jTextField4.setText("");
						jTextField5.setText("");
						jTextField6.setText("");
					} catch (Exception e) {
						
						
						// TODO: handle exception
					}
				}
			});
		}
		{
			jButton4 = new JButton();
			s.add(jButton4);
			jButton4.setText("修改学生信息");
			jButton4.setBounds(12, 260, 135, 24);
			jButton4.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					System.out.println("jButton4.actionPerformed, event="+evt);
					//TODO add your code for jButton4.actionPerformed
					try {
						Class.forName(name);
						System.out.println("驱动加载成功");
					} catch (ClassNotFoundException e) {
						// TODO: handle exception
						System.out.println("SQLException:"+e.getMessage());
					}
					try {
						Connection con=DriverManager.getConnection(url,user,password);
						Statement stmt=con.createStatement();
						String sqlstr="update employee set " +
								"name='"+jTextField2.getText()+"'" +
								",sex='"+jTextField3.getText()+"'" +
								",class='"+jTextField4.getText()+"'" +
								",phone='"+jTextField5.getText()+"'" +
								",mail='"+jTextField6.getText()+"'" +
								"where no='"+jTextField1.getText()+"'";
						stmt.executeUpdate(sqlstr);
						con.close();
						stmt.close();
						jTextField1.setText("");
						jTextField2.setText("");
						jTextField3.setText("");
						jTextField4.setText("");
						jTextField5.setText("");
						jTextField6.setText("");
					} catch (Exception e) {
						
						// TODO: handle exception
					}
				}
			});
		}
		{
			jButton5 = new JButton();
			s.add(jButton5);
			jButton5.setText("删除学生信息");
			jButton5.setBounds(167, 260, 132, 24);
			jButton5.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					System.out.println("jButton5.actionPerformed, event="+evt);
					//TODO add your code for jButton5.actionPerformed
					try {
						Class.forName(name);
						System.out.println("驱动加载成功");
					} catch (ClassNotFoundException e) {
						// TODO: handle exception
						System.out.println("SQLException:"+e.getMessage());
					}
					try {
						Connection con=DriverManager.getConnection(url,user,password);
						Statement stmt=con.createStatement();
						String sqlstr="delete from employee where no='"+jTextField1.getText()+"'";
						stmt.executeUpdate(sqlstr);
						con.close();
						stmt.close();
						jTextField1.setText("");
						jTextField2.setText("");
						jTextField3.setText("");
						jTextField4.setText("");
						jTextField5.setText("");
						jTextField6.setText("");
					} catch (Exception e) {
						
						// TODO: handle exception
					}
				}
			});
		}
		{
			jButton6 = new JButton();
			s.add(jButton6);
			jButton6.setText("\u9000\u51fa");
			jButton6.setBounds(321, 260, 140, 24);
			jButton6.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					System.out.println("jButton6.actionPerformed, event="+evt);
					//TODO add your code for jButton6.actionPerformed
					System.exit(0);
				}
			});
		}
		{	
		getContentPane().setLayout(null);
		this.setAlwaysOnTop(false);
		
		}
	}
}

三、界面展示

1登录:

在这里插入图片描述

2显示学生信息:

在这里插入图片描述

3查询学生信息:

在这里插入图片描述

4添加学生信息:

在这里插入图片描述

5修改学生信息:

在这里插入图片描述

6删除学生信息:

在这里插入图片描述

四、联系与交流

q:969060742 完整文档、代码、sql、程序资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1108030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

消息队列-链表动态申请

一、链表的介绍 链表是一种常用的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。 C语言消息队列链表是一种使用链表实现的队列模块,可以用于在程序中实现消息队列的功能。C语言消息队列链表是一种自定义的数据结构&…

热门影视APP系统源码 可二开 后端+app+搭建教程

影视APP源码绿豆二开版 后端app搭建教程都在压缩包里,搭建步骤和绿豆一样 安装宝塔 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 安装环境 Nginx 1.20.2 MySQL5.6-5.7 php7.0-7.…

C++特性——引用与指针详解

文章目录 引用1. 引用的作用1.1 引用可以做函数参数:1.2 引用做函数返回值: 2 常引用3 引用和指针3.1 引用和指针在语法层面和底层的异同3.1 引用和指针的不同 引用 简单来说,引用就是给一个变量起一个别名。例如: int a 1; in…

【数之道 05】走进神经网络模型、机器学习的世界

神经网络 神经网络(ANN)神经网络基础激活函数 神经网络如何通过训练提高预测准确度逆向参数调整法 (BackPropagation)梯度下降法链式法则增加一层 b站视频连接 神经网络(ANN) 最简单的例子,视…

解锁机器人技术的钥匙—《应用机器人学:运动学、动力学与控制技术》

随着科技的飞速发展,机器人已经广泛应用于各个领域,成为了当今世界的热门话题。作为一个工程师,如果你想在机器人行业大显身手,深入了解机器人运动学、动力学和控制技术是必不可少的。而《应用机器人学:运动学、动力学…

ERROR 1366 (HY000): Incorrect string value,mysql插入数据报错?安排

1.报错 mysql57,windows环境,插入中文数据报错 ERROR 1366 (HY000): Incorrect string value: \xC0\xEE\xCB\xC4 for column nm at row 1 2.测试语句 创建一个数据库,创建表,插入中文数据报错 1366 --创建数据库 CREATE DATABASE…

【每日一题】同积元组

文章目录 Tag题目来源题目解读解题思路方法一:哈希表组合 其他语言python3 写在最后 Tag 【哈希表组合】【数组】【2023-10-19】 题目来源 1726. 同积元组 题目解读 在一个由不同正整数组成的数组中找出满足 a * b c * d 的四元组 (a, b, c, d),返回…

macOS查端口占用进程

java开发人员,端口冲突的问题基本都遇到过吧!以下的日志是否熟悉: *************************** APPLICATION FAILED TO START ***************************Description:The Tomcat connector configured to listen on port 8084 failed to …

Spring Security过滤器链分析-初始化流程(8)

过滤器链分析 提起Spring Security的实现原理,很多读者都会想到过滤器链。因为Spring Security中的所有功能都是通过过滤器来实现的,这些过滤器组成一个完整的过滤器链。那么,这些过滤器 链是如何初始化的?我们前面反复提到的Aut…

【YOLO】拾遗(五)

0 YOLO系列笔记 【YOLO】朴实无华的yolov5环境配置(一) 【YOLO】yolov5训练自己的数据集(二) 【YOLO】目标识别模型的导出和opencv部署(三) 【YOLO】语义分割和实例分割(四) 1 …

Android-NDK-clang 编译 FFmpeg

Android-NDK-clang 编译 FFmpeg Android-NDK-clang 编译 FFmpeg Android-NDK-clang 编译 FFmpeg - 知乎 (zhihu.com) 前期准备 下载 Android-NDK下载 FFmpeg 源码 注意:笔者用的是 NDK-21 和 ffmpeg-4.4 进行编译,如果版本不同可能会有所不同。 测试&a…

【网络爬虫】2 初探网络爬虫

爬虫练手 把豆瓣的书评list页爬取下来,并获取其书名,和detail的连接地址 豆瓣的书评list的url地址, start1,2,3,4…是其地址页 https://book.douban.com/top250?start1 f12 观察其html结构 思路 按照找到的list的页面地址: 1.获取list页…

训练ChatGPT提示词,实现Excel函数操作

Excel常用表格数据处理都会离不开函数的应用。 在数据处理,数据汇总,数据展示的过程中经常需要各类函数的使用如Vlookup,Sumifs,IF 等。 例如有一份数据我们想根据销售经理的名字,查找对应的销售额。 我们先简单描述一下我们的需求: 帮我写个Excel函数,要求查找出任意销…

Electron之集成vue+vite开发桌面程序

在electron中集成vue开发桌面程序 使用我们之前创建的electron项目 创建vue 项目 命令行进入electron根目录 执行下面命令 npm create vitelatest vue -- --template vue这样就创建了一个vue项目,文件名是vue,命令行进入vue下,执行下面命…

react-router-dom v6版本实现Tabs路由缓存切换

目录 文章目录 概要 效果 完整代码 概要 摆了半年摊,好久没写代码了,今天有人问我怎么实现React-Router-dom类似标签页缓存。后面看了一下router的官网。很久以前用的是react-router v5那个比较容易实现。v6变化挺大,但了解react的机制和rea…

工业交换机定制化解决方案:光路科技的工业PoE交换机

PoE交换机能代替普通工业交换机使用吗? Power over Ethernet (PoE)交换机和普通工业交换机在某些情况下可以互相替代,但有些情况下则不太适合。PoE交换机具有额外的供电能力,用于同时为网络设备提供数据和电力。如果您的应用中只需要传输数据…

python web开发(四): Bootstrap

1.初步了解 别人已经写好的CSS样式&#xff0c;我们可以直接引用 下载 Link-BootStrap 解压&#xff0c;并放入到当前项目中 引用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</tit…

IT售前“楠“知识之这!就是售前-尚文网络xUP楠哥

进Q群11372462领取专属报名福利 &#xff01;&#xff01;&#xff01; # 何为售前工程师 售前工程师在一个IT信息化团队中起到了呈上启下的绝对重要作用&#xff01;站在销售团队的视角&#xff0c;需要售前工程师从技术维度支持销售业务的开展&#xff1b;站在对立面用户的…

一些bug总结

今天被几个小问题和bug折磨了一天&#xff0c;来总结一下… 权限问题 用vscode连接服务器&#xff0c;如果是在root用户连接的情况下新建的文件/文件夹&#xff0c;然后切换到别的用户的时候去写的代码 可能会遇到各种问题 解决方案是更改文件或文件夹的所有权。这可以通过使用…

pymysql连接Mariadb/Mysql出现错误(配置正确情况下)解决办法

场景&#xff1a;在kali中使用python中pymysql对Mariadb进行连接&#xff0c;在整个过程中配置全部正确&#xff0c;但是就是无法进行连接&#xff0c;提示结果如下&#xff1a; Access denied for user rootlocalhost解决办法&#xff1a;进入数据库中&#xff0c;将默认密码…