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.mzph.cn/news/110104.shtml

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

相关文章

Windows工业三防平板全功能NFC近距离感应一维/二维扫描

Windows系统工业三防平板电脑是一种在智慧工厂仓储物流、MES数采、车载设备、设备检测、自动化控制等领域广泛应用的先进设备。此外,它还在公共服务领域,如高速交通、物流运输、电力检测、公务执法、银行金融、船舶装备、户外勘测、建筑工程、汽车检测、…

测试中Android与IOS分别关注的点

目录 1、自身不同点 2、测试注重点 3、其他测试点 主要从本身系统的不同点、系统造成的不同点、和注意的测试点做总结 1、自身不同点 研发商:Adroid是google公司做的手机系统,IOS是苹果公司做的手机系统   开源程度:Android是开源的&a…

【已解决】pyinstaller 将程序打包成 exe 文件后,无法保存视频或者保存的视频为空文件

这里写自定义目录标题 问题描述解决方法方法一方法二 参考 问题描述 使用pyinstaller将python程序打包为exe文件,其中包含保存视频的代码。直接运行脚本时,程序能够正确的保存视频。但是通过pyinstaller打包成exe文件后,exe文件无法保存视频…

网工记背命令(6)----链路聚合配置

目录 1.配置手工负载分担模式链路聚合 2.配置LACP模式的链路聚合 3.HUAWEI设备与C厂商设备对接 链路聚合(Link Aggregation)是将多条物理链路捆绑在一起成为一条逻辑链路,从而增加链路带 宽的技术。 常用配置命令 1、执行命令 interface …

Flume 简介及基本使用

1.Flume简介 Apache Flume 是一个分布式,高可用的数据收集系统。它可以从不同的数据源收集数据,经过聚合后发送到存储系统中,通常用于日志数据的收集。Flume 分为 NG 和 OG (1.0 之前) 两个版本,NG 在 OG 的基础上进行了完全的重构,是目前使用最为广泛的版本。下面的介绍均…

【计算机网络笔记】计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 系列文章目录时延带宽积丢包率吞吐量/率&am…

【FPGA零基础学习之旅#15】串口接收模块设计与验证(工业环境)

🎉欢迎来到FPGA专栏~串口接收模块设计与验证(工业环境) ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:FPGA学习之旅 文章作者技术和水平有限,如…

python web开发(四): Bootstrap

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

day2:Node.js 环境准备

day2&#xff1a;Node.js 环境准备 文章目录 day2&#xff1a;Node.js 环境准备安装 Node.js 和 npm验证 Node.js 和 npm使用淘宝 NPM 镜像npm 包管理器的基本使用**NPM 常用命令**小结 准备一台linux服务器 [rootnode3 ~]# cat /etc/redhat-release CentOS Linux release 7.2.…

wps/word 如何让表格的标题和表格名称文本(表1-1 xxx)跨页显示(已解决)

第一步&#xff1a; 打开wps 创建一个跨页的表格表格&#xff0c;如下图 第二步 大家都知道 表格标题跨页 就是1&#xff09;在菜单表格工具 点击重复标题 或者 2&#xff09;表格属性--》行--》在各页顶端以标题行形式出现&#xff0c;详细如下图。 1&#xff09; 第一…

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

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

论坛介绍 | COSCon'23 云计算(C)

众多开源爱好者翘首期盼的开源盛会&#xff1a;第八届中国开源年会&#xff08;COSCon23&#xff09;将于10月28-29日在四川成都市高新区菁蓉汇举办。本次大会的主题是&#xff1a;“开源&#xff1a;川流不息、山海相映”&#xff01;各位新老朋友们&#xff0c;欢迎到成都&am…

一些bug总结

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

ubuntu 18.04 LTS交叉编译opencv 3.4.16并编译工程[全记录]

一、下载并解压opencv 3.4.16源码 https://opencv.org/releases/ 放到home路径下的Exe文件夹&#xff08;专门放用户安装的软件&#xff09;中&#xff0c;其中build是后期自建的 为了版本控制&#xff0c;保留了3.4.16&#xff0c;并增加了-gcc-arm 二、安装cmake和cmake-g…

Redis:Feed流之Timeline的实现

当我们关注了用户后&#xff0c;这个用户发了动态&#xff0c;那么我们应该把这些数据推送给用户&#xff0c;这个需求&#xff0c;其实我们又把他叫做Feed流&#xff0c;关注推送也叫做Feed流&#xff0c;直译为投喂。为用户持续的提供“沉浸式”的体验&#xff0c;通过无限下…

5.Vue-在Vue框架中实现Vue的增删改查

题记 在vue框架中实现vue的增删改查&#xff0c;以下是具体操作流程和代码 编写TestView.vue文件 TestView.vue文件如下&#xff1a; <template> <div id"app"> <h1>学生列表</h1> <input type"text" v-model"searchQue…

使用 VS Code 作为 VC++ 6.0 的编辑器

使用 VS Code 作为 VC 6.0 的编辑器 由于一些众所周知的原因&#xff0c;我们不得不使用经典&#xff08;过时&#xff09;的比我们年龄还大的已有 25 年历史的 VC 6.0 来学习 C 语言。而对于现在来说&#xff0c;这个经典的 IDE 过于简陋&#xff0c;并且早已不兼容新的操作系…

KNN算法

文章目录 释义欧氏距离simple——KNNsklearn——KNN 释义 近朱者赤近墨者黑----从训练数据集中找出和待预测样本最接近的K个样本 对于分类问题&#xff0c;我们使用了多数表决法来判断目标对象的类别。 对于回归问题&#xff0c;我们使用了平均值法来判断目标对象的数值 如上…

【YOLO】语义分割和实例分割(四)

0 YOLO系列笔记 【YOLO】朴实无华的yolov5环境配置&#xff08;一&#xff09; 【YOLO】yolov5训练自己的数据集&#xff08;二&#xff09; 【YOLO】目标识别模型的导出和opencv部署&#xff08;三&#xff09; 1 前言 在之前的实践过程中&#xff0c;总结了如何使用YOLOv…

Vue3响应式原理初探

vue3响应式原理初探 为什么要使用proxy取代defineProperty使用proxy如何完成依赖收集呢&#xff1f; 为什么要使用proxy取代defineProperty 原因1&#xff1a;defineproperty无法检测到原本不存在的属性。打个&#x1f330; new Vue({data(){return {name:wxs,age:25}}})在vue…