java学生通讯录管理系统

设计要求

本课程设计,涉及输入输出、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.actionPerformedtry {Class.forName(name);System.out.println("驱动加载成功");} catch (ClassNotFoundException e) {// TODO: handle exceptionSystem.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.actionPerformedtry {Class.forName(name);System.out.println("驱动加载成功");} catch (ClassNotFoundException e) {// TODO: handle exceptionSystem.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.actionPerformedtry {Class.forName(name);System.out.println("驱动加载成功");} catch (ClassNotFoundException e) {// TODO: handle exceptionSystem.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.actionPerformedtry {Class.forName(name);System.out.println("驱动加载成功");} catch (ClassNotFoundException e) {// TODO: handle exceptionSystem.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.actionPerformedtry {Class.forName(name);System.out.println("驱动加载成功");} catch (ClassNotFoundException e) {// TODO: handle exceptionSystem.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.actionPerformedSystem.exit(0);}});}{	getContentPane().setLayout(null);this.setAlwaysOnTop(false);}}
}

三、界面展示

1登录:

在这里插入图片描述

2显示学生信息:

在这里插入图片描述

3查询学生信息:

在这里插入图片描述

4添加学生信息:

在这里插入图片描述

5修改学生信息:

在这里插入图片描述

6删除学生信息:

在这里插入图片描述

四、联系与交流

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows运维相关经验技巧

常用工具 在线PS Photoshop在线 FAQ 电脑能上网,浏览器上不了网 # 错误原因: 设置了网络代理,浏览器无法通过网络代理上网# 解决办法 关闭网络代理 (1)wini,打开设置 (2)网络和I…

【YOLO】拾遗(五)

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

R语言进度条:txtProgressBar功能使用方法

R语言进度条使用攻略 在数据处理、建模或其他计算密集型任务中,我们常常会执行一些可能需要很长时间的操作。 在这些情况下,展示一个进度条可以帮助我们了解当前任务的进度,以及大约还需要多长时间来完成,R语言提供了几种简单且灵…

c# xml 参数读取读取的简单使用

完整使用之测试参数的读取(xml) 保存一个xml文档(如果没有就会生成一个默认的 里面的参数用的是我们默认设置的),之后每次更改里面的某项,然后保存 类似于重新刷新一遍。 这里所用的xml测试参数前面需要加…

从零开始搭建第一个django项目

目录 配置环境创建 Django 项目和 APP项目组成  ‍子目录文件组成应用文件组成 配置 settings.py启动项目 数据表创建models.pyDjango-models的常用字段和常用配置 Django-admin 引入admin后台和管理员外键views.pyurls.pypostman接口测试 QuerySetInstance功能APIView 的概念…

vue 自定义指令 -- 指令的值

vue 自定义指令 – 指令的值 **创建 工程: H:\java_work\java_springboot\vue_study ctrl按住不放 右键 悬着 powershell H:\java_work\java_springboot\js_study\Vue2_3入门到实战-配套资料\01-随堂代码素材\day05\准备代码\05-自定义指令-指令的值 vue --vers…

ASP.NET framework升级core .NET 6.0

C# ASP.NET framework 升级core .NET 6.0 .NET 7.0 .NET 8.0 或者以上 .net framework、.net standard、.net core .net 5/6/7/8 区别_.net 6.0和.net framework的区别-CSDN博客 using System.Web.Http; using HttpPostAttribute Microsoft.AspNetCore.Mvc.HttpPostA…

python web开发(四): Bootstrap

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

MySQL-逻辑架构

MySQL-逻辑架构 1.逻辑架构剖析 1.1服务器处理客户端请求 MySQL属于典型的C/S架构&#xff0c;客户端进程发送请求&#xff0c;服务端进程处理请求。处理的基本流程如下。 MySQL的逻辑架构如下&#xff1a; Connectors&#xff1a;与服务端程序连接的程序。 Manager Servic…

Redis 主从复制,哨兵,集群——(1)主从复制篇

目录 1. Redis 主从复制是什么&#xff1f; 2. Redis 主动复制能干嘛&#xff1f; 2.1 读写分离 2.2 容灾恢复 2.3 数据备份 2.4 水平扩展支撑高并发 3. Redis 主从复制配置项 3.1 配从库不配主库 3.2 权限密码配置 3.3 基本操作命令 4. 案例演示 4.1 案例说明 4.…

【APP源码】基于Typecho博客程序开发的博客社区资讯APP源码

全新博客社区资讯APP源码 Typecho后端 一款功能全面&#xff0c;用户交互良好&#xff0c;数据本地缓存&#xff0c;集成邮箱验证&#xff0c;在线投稿&#xff0c;&#xff08;内置Mardown编辑器&#xff09;&#xff0c; 快捷评论的的博客资讯APP。同时兼容H5和微信小程序。 …

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

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

【ajax】withCredentials

默认值&#xff1a;false。在获取同域资源时设置 withCredentials 没有影响。 true&#xff1a;在跨域请求时&#xff0c;会携带用户凭证 false&#xff1a;在跨域请求时&#xff0c;不会携带用户凭证&#xff1b;返回的 response 里也会忽略 cookie ajax中的作用 跨域请求时…

常见的 NoSQL 数据库有哪些?

前言 今天我们来介绍一下工作开发中常见的一些NoSQL数据库及其基本特点。欢迎在评论区留下文章中没有介绍且好用的NOSQL数据库&#x1f91e;。 什么是&#xff08;NOSQL&#xff09;非关系型数据库 非关系型数据库又被称为 NoSQL&#xff08;Not Only SQL )&#xff0c;意为不…

单片机点亮led管(01)

如何开始学习单片机 1&#xff1a;实践第一 2&#xff1a;补充必要的理论知识&#xff0c;缺什么补什么 3&#xff1a;做工程积累经验&#xff08;可以在网络上收集题目&#xff0c;也可以有自己的想法大胆的实验&#xff09; 单片机是什么&#xff1f; 单片机&#xff08…

实现mnist手写数字识别

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/Nb93582M_5usednAKp_Jtw) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制](https://mtyjkh.blog.csdn.net/)** >- **&#x1f680;…

Linux | vim的入门手册

目录 前言 一、什么是vim 二、vim编辑器的模式 1、插入模式 &#xff08;1&#xff09;用vim打开文件 &#xff08;2&#xff09;进入插入模式 2、默认模式 &#xff08;1&#xff09;光标移动 &#xff08;2&#xff09;复制、粘贴与剪切操作 &#xff08;3&#x…

互联网Java工程师面试题·Java 总结篇·第七弹

目录 68、Java 中如何实现序列化&#xff0c;有什么意义&#xff1f; 69、Java 中有几种类型的流&#xff1f; 70、写一个方法&#xff0c;输入一个文件名和一个字符串&#xff0c;统计这个字符串在这个文件中出现的次数。 71、如何用 Java 代码列出一个目录下所有的文件&a…

【算法练习Day21】组合剪枝

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 组合剪枝总结&#xff1a; …

Linux系统管理:虚拟机OpenEuler安装

目录 一、理论 1.OpenEuler 二、实验 1.虚拟机OpenEuler安装准备阶段 2.安装OpenEuler 3.进入系统 一、理论 1.OpenEuler &#xff08;1&#xff09;简介 欧拉&#xff08;Euler&#xff09;是数字基础设施的开源操作系统&#xff0c;可广泛部署于服务器、云计算、边缘…