当前位置: 首页 > article >正文

Java+JavaFx+Mysql实现客户信息管理系统

目录

一、系统介绍

1.开发环境

2.技术选型

3.功能模块

4.数据库文件

5.工程结构

二、系统展示

1.注册账号

​编辑

2.登录系统

3.查询客户

4.添加客户

5.修改客户

6.删除客户

三、部分代码

1.增加客户

2.删除客户

3.修改客户

4.修改密码

四、其他事宜

1.更多系统

Java+Swing系统系列实现

Java+JSP系统系列实现

Java+Servlet系统系列实现

Java+SSM系统系列实现

Java+SSH系统系列实现

Java+Springboot系统系列实现

2.源码下载

3.运行项目

4.权益备注

5.支持博主


一、系统介绍

1.开发环境

操作系统:Win10

开发工具 :IDEA2018

JDK版本:jdk1.8

数据库:Mysql8.0

2.技术选型

Java+JavaFx+Mysql

3.功能模块

4.数据库文件

/*
 Navicat Premium Data Transfer

 Source Server         : MySQL
 Source Server Type    : MySQL
 Source Server Version : 80013
 Source Host           : 127.0.0.1:3306
 Source Schema         : swing_cust_manager

 Target Server Type    : MySQL
 Target Server Version : 80013
 File Encoding         : 65001

 Date: 19/11/2024 21:18:44
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for cs_manager
-- ----------------------------
DROP TABLE IF EXISTS `cs_manager`;
CREATE TABLE `cs_manager`  (
  `mid` int(11) NOT NULL AUTO_INCREMENT COMMENT '客户编号',
  `mname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '客户姓名',
  `msex` varchar(4) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '客户性别',
  `mage` int(11) NOT NULL COMMENT '客户年龄',
  `mphone` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '客户电话',
  `mlevel` int(11) NULL DEFAULT 1 COMMENT '客户等级',
  `maddr` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '客户地址',
  PRIMARY KEY (`mid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1018 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of cs_manager
-- ----------------------------
INSERT INTO `cs_manager` VALUES (1001, '李四', '男', 25, '17793311752', 1, '甘肃省');
INSERT INTO `cs_manager` VALUES (1002, '张三', '男', 22, '12125892563', 1, '河南省');
INSERT INTO `cs_manager` VALUES (1003, '王五', '女', 26, '15548966532', 1, '山西省');
INSERT INTO `cs_manager` VALUES (1004, '赵七', '男', 30, '13325699856', 1, '福建省');

-- ----------------------------
-- Table structure for cs_user
-- ----------------------------
DROP TABLE IF EXISTS `cs_user`;
CREATE TABLE `cs_user`  (
  `mname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`mname`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of cs_user
-- ----------------------------
INSERT INTO `cs_user` VALUES ('admin', 'e10adc3949ba59abbe56e057f20f883e');

SET FOREIGN_KEY_CHECKS = 1;

5.工程结构

二、系统展示

1.注册账号

2.登录系统

3.查询客户

4.添加客户

5.修改客户

6.删除客户

三、部分代码

1.增加客户

package com.sjsq.view;

import com.sjsq.dao.AchieveDao;
import com.sjsq.model.Manager;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

/**
 * 作者:shuijianshiqing
 * 功能:添加客户界面
 *
 */
public class AddManagerView  extends Application{
	@Override
	public void start(Stage arg0) throws Exception {}

	//引入controller层
	static AchieveDao actro = new AchieveDao();

	public  static void addManager(){
		//搭建舞台
		Stage stage = new Stage();
		//设置网格面板
		GridPane gp=new GridPane();
		gp.setStyle("-fx-background-image: url("+"/com/sjsq/imgs/3.png"+")");
		//设置label标签添加信息
		Label l1=new Label("客户姓名");
		Label l2=new Label("客户年龄");
		Label l3=new Label("客户性别");
		Label l4=new Label("客户电话");
		Label l5=new Label("客户地址");
		//设置按钮用来控制此界面的添加或者取消
		Button b1=new Button("添加");
		Button b2=new Button("取消");
		//设置label对应的文本框区域
		TextField v1=new TextField();
		TextField v2=new TextField();
		TextField v5=new TextField();
		//TextField v6=new TextField();
		//设置单选按钮
		RadioButton v3=new RadioButton("男");
		RadioButton v4=new RadioButton("女");
		//将所有RadioButton对象都添加到了ToggleGroup中,使得组内同时只有一个Radio Button对象能被选中
		ToggleGroup group =new ToggleGroup();
		//设置 选择下拉框
		ChoiceBox<String> cb=new ChoiceBox<String>();
		List<String> list=Arrays.asList("甘肃省","陕西省","河南省","河北省","浙江省","山西省","安徽省","福建省");
		//将单选按钮节点放在行面板中
		HBox h1=new HBox(v3,v4);
		//设置节点间水平间距
		gp.setHgap(10);
		//设置节点面板垂直间距
		gp.setVgap(10);
		//设置节点的对齐方式
		gp.setAlignment(Pos.CENTER);
		// TODO Auto-generated method stub
		//将两个单选按钮放在同一个组中
		v3.setToggleGroup(group);
		v4.setToggleGroup(group);
		//选择默认选中
		v3.setSelected(true);
		//选择框中加入list链表
		cb.getItems().addAll(list);
		//默认选中第一个数据局
		cb.setValue(list.get(0));
		stage.setTitle("客户增加");
		gp.add(l1, 0, 0);
		gp.add(v1, 1, 0);
		gp.add(l2, 0, 1);
		gp.add(v2, 1, 1);
		gp.add(l3, 0, 2);
		gp.add(h1, 1, 2);
		gp.add(l4, 0, 3);
		gp.add(v5, 1, 3);
		gp.add(l5, 0, 4);
		gp.add(cb, 1, 4);
		gp.add(b1, 0, 6);
		gp.add(b2, 1, 6);
		stage.setScene(new Scene(gp,350,300));
		stage.show();
		//dao层调用方法实现添加功能
		b1.setOnAction(a->{
			String name=v1.getText();
			String mage=v2.getText();
			//String转为int
			int age = Integer.parseInt(mage);
			String sex="女";
			if (v4.isSelected()) {
				sex="男";
			}
			if(v5.getText().length()==11){
				String phone = v5.getText();
				String address=cb.getValue();
				Manager manager = new Manager(name,sex,age,phone,address);
				//调用dao层
				int rows = AchieveDao.addManager(manager);
				if (rows>0) {
					Optional<ButtonType> op = new Alert(AlertType.INFORMATION,"添加成功",ButtonType.OK,ButtonType.CLOSE).showAndWait();
					if (op.get()==ButtonType.OK) {
						stage.close();
					}
				}else {
					new Alert(AlertType.ERROR,"请重新增加").showAndWait();
				}
			}else{
				new Alert(AlertType.ERROR,"电话长度不对").showAndWait();
			}
		});
		//取消事件
		b2.setOnAction(e->{
			stage.close();
		});
	}
}

2.删除客户

package com.sjsq.view;

import com.sjsq.dao.AchieveDao;
import javafx.application.Application;
import javafx.stage.Stage;

/**
 *
 * 作者:shuijianshiqing
 * 功能: 删除客户界面
 */
public class DeleteManagerView extends Application{
	@Override
	public void start(Stage arg0) throws Exception {}

	//引入controller层
	static AchieveDao actro = new AchieveDao();
	public static boolean deleteManager(int mid){
		if(actro.deleteManager(mid)){
			return true;
		}else {
			return false;
		}
	}

}

3.修改客户

package com.sjsq.view;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

import com.sjsq.model.Manager;
import com.sjsq.dao.AchieveDao;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

/**
 * 作者:shuijianshiqing
 * 功能:修改客户信息界面
 */
public class UpdateManagerView extends Application{

	@Override
	public void start(Stage arg0) throws Exception {}

	//调用dao层方法
	static 	AchieveDao achieveDao = new AchieveDao();

	public static void updateManager(Manager manager){
		//搭建舞台
		Stage stage = new Stage();
		//设置网格面板
		GridPane gp=new GridPane();
		//设置了label信息
		Label l1=new Label("客户姓名");
		Label l2=new Label("客户年龄");
		Label l3=new Label("客户性别");
		Label l4=new Label("客户电话");
		Label l5=new Label("客户地址");
		Button b1=new Button("修改");
		Button b2=new Button("取消");
		//数据回显
		TextField v1=new TextField(manager.getMname());
		int age = manager.getMage();
		//int转string
		String mage = String.valueOf(age);
		TextField v2=new TextField(mage);
		TextField v5=new TextField(manager.getMphone());
		//TextField v6=new TextField();
		//设置单选按钮
		RadioButton v3=new RadioButton("男");
		RadioButton v4=new RadioButton("女");
		ToggleGroup group =new ToggleGroup();
		ChoiceBox<String> cb=new ChoiceBox<String>();
		List<String> list=Arrays.asList("甘肃省","陕西省","河南省","河北省","浙江省","山西省","安徽省","福建省");
		//将单选按钮节点放在行面板中
		HBox h1=new HBox(v3,v4);
		//设置节点间水平间距
		gp.setHgap(10);
		//设置节点面板垂直间距
		gp.setVgap(10);
		gp.setAlignment(Pos.CENTER);
		//设置背景
		gp.setStyle("-fx-background-image: url("+"/com/sjsq/imgs/3.png"+")");
		// TODO Auto-generated method stub
		//将两个单选按钮放在同一个组中
		v3.setToggleGroup(group);
		v4.setToggleGroup(group);
		//选择框中加入list链表
		cb.getItems().addAll(list);
		cb.setValue(manager.getMaddr());
		stage.setTitle("客户修改");
		gp.add(l1, 0, 0);
		gp.add(v1, 1, 0);
		gp.add(l2, 0, 1);
		gp.add(v2, 1, 1);
		gp.add(l3, 0, 2);
		gp.add(h1, 1, 2);
		gp.add(l4, 0, 3);
		gp.add(v5, 1, 3);
		gp.add(l5, 0, 4);
		gp.add(cb, 1, 4);
		gp.add(b1, 0, 6);
		gp.add(b2, 1, 6);
		stage.setScene(new Scene(gp,350,300));
		stage.show();
		//dao层调用方法实现添加功能
		b1.setOnAction(a->{
			String name=v1.getText();
			//mage=v2.getText();
			String sex="男";
			if (v4.isSelected()) {
				sex="女";
			}
			String address=cb.getValue();
			if(v5.getText().length()==11){
				String phone = v5.getText();
				// 这里使用包含6个参数的构造函数
				Manager man = new Manager(manager.getMid(),name,sex,age,phone,address);
				//调用dao层
				int rows = achieveDao.updateManager(man);
				if (rows>0) {
					Optional<ButtonType> op = new Alert(AlertType.INFORMATION,"修改成功",ButtonType.OK,ButtonType.CLOSE).showAndWait();
					if (op.get()==ButtonType.OK) {
						stage.close();
					}
				}else {
					new Alert(AlertType.ERROR,"请重新增加").showAndWait();
				}
			}else{
				new Alert(AlertType.ERROR,"电话长度不对").showAndWait();
			}
		});
		//取消事件
		b2.setOnAction(e->{
			stage.close();
		});
	}
}

4.修改密码

package com.sjsq.view;

import com.sjsq.dao.AchieveDao;
import com.sjsq.model.User;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.image.Image;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

import java.util.Optional;

/**
 * 作者:shuijianshiqing
 * 功能:修改密码界面
 *
 */
public class ModifyPasswordView extends Application{
	@Override
	public void start(Stage arg0) throws Exception {}
	//实例化对象
	static AchieveDao achieveDao = new AchieveDao();

	/**
	 * 修改密码
	 * @param user
	 */
	public void modifypass(User user){
		Stage stage = new Stage();
		Label m_name = new Label("账号");
		Label m_password = new Label("请输入密码");
		Label m_apass = new Label("请确认密码");
		//文本区域
		TextField t_name = new TextField(user.getMname());
		//禁止编辑用户名
		t_name.setDisable(true);
		//密码框区域
		PasswordField p_password = new PasswordField();
		PasswordField p_apass = new PasswordField();
		//设置按钮
		Button b1 = new Button("确认");
		Button b2 = new Button("取消");
		//网格布局
		GridPane gr = new GridPane();
		gr.setStyle("-fx-background-image: url("+"/com/sjsq/imgs/3.png"+")");
		gr.add(m_name,0,0);
		gr.add(t_name,1,0);
		gr.add(m_password,0,1);
		gr.add(p_password,1,1);
		gr.add(m_apass,0,2);
		gr.add(p_apass,1,2);
		gr.add(b1,0,3);
		gr.add(b2,2,3);
		//全部居中
		gr.setAlignment(Pos.CENTER);
		//水平间距
		gr.setHgap(2);
		//垂直间距
		gr.setVgap(15);
		//设置按钮左边外边距
		//GridPane.setMargin(b1,new Insets(0,0,0,120));
		Scene s= new Scene(gr);
		stage.setScene(s);
		stage.setTitle("修改密码界面");
		stage.setWidth(400);
		stage.setHeight(300);
		// primaryStage.setResizable(false);
		//添加窗口小图标
		stage.getIcons().add(new Image("/com/sjsq/imgs/1.png"));
		stage.show();
		//判断密码是否输入一致
		b1.setOnAction(e->{
			String pass = p_password.getText();
			String apass = p_apass.getText();
			String namString = t_name.getText();
			if(pass.equals(apass)){
				User user2 = new User(namString,apass);
				if(achieveDao.changePassword(user2)>0){
					Optional<ButtonType> op = new Alert(AlertType.INFORMATION,"修改成功,请重新登录",ButtonType.OK,ButtonType.CLOSE).showAndWait();
					stage.close();
				}else{
					new Alert(AlertType.ERROR,"请重新确认密码").showAndWait();
				}
			}else{
				new Alert(AlertType.ERROR,"两次密码输入不正确,请重新输入").showAndWait();
			}
		});
		b2.setOnAction(e->{
			stage.close();
		});
	}

}

四、其他事宜

1.更多系统

Java+Swing系统系列实现

Java+Swing实现斗地主游戏

Java+Swing实现图书管理系统

Java+Swing实现医院管理系统

Java+Swing实现考试管理系统

Java+Swing实现酒店管理系统

Java+Swing实现超市管理系统

Java+Swing实现电影购票系统

Java+Swing实现飞机订票系统

Java+Swing实现仓库管理系统-1

Java+Swing实现仓库管理系统-2

Java+Swing实现进销存管理系统

Java+Swing实现自助取款机系统

Java+Swing实现通讯录管理系统

Java+Swing实现停车场管理系统

Java+Swing实现学生信息管理系统-1

Java+Swing实现学生信息管理系统-2

Java+Swing实现学生宿舍管理系统

Java+Swing实现学生选课管理系统

Java+Swing实现学生成绩管理系统

Java+Swing实现学校教材管理系统

Java+Swing实现学校教务管理系统

Java+Swing实现企业人事管理系统

Java+Swing实现电子相册管理系统

Java+Swing实现超市管理系统-TXT存储数据

Java+Swing实现自助取款机系统-TXT存储数据

Java+Swing实现宠物商店管理系统-TXT存储数据

Java+JSP系统系列实现

Java+JSP实现学生图书管理系统

Java+JSP实现学生信息管理系统

Java+JSP实现用户信息管理系统

Java+JSP实现教师信息管理系统

Java+JSP实现学生宿舍管理系统

Java+JSP实现商品信息管理系统

Java+JSP实现宠物信息管理系统

Java+JSP实现学生成绩管理系统

Java+Servlet系统系列实现

Java+Servlet+JSP实现航空订票系统

Java+Servlet+JSP实现新闻发布系统

Java+Servlet+JSP学生宿舍管理系统

Java+Servlet+JSP实现图书管理系统

Java+Servlet+JSP实现停车场管理系统

Java+Servlet+JSP实现房屋租赁管理系统

Java+Servlet+JSP实现学生信息管理系统

Java+Servlet+JSP实现学生选课管理系统

Java+Servlet+JSPl实现学生选课签到系统

Java+Servlet+JSP实现宠物诊所管理系统

Java+Servlet+JSP实现学生成绩管理系统-1

Java+Servlet+JSP实现学生成绩管理系统-2

Java+SSM系统系列实现

Java+SSM+JSP实现网上考试系统

Java+SSM+JSP实现宠物商城系统

Java+SSM+JSP实现超市管理系统

Java+SSM+JSP实现学生成绩管理系统

Java+SSM+JSP实现学生信息管理系统

Java+SSM+JSP实现药品信息管理系统

Java+SSM+JSP实现汽车信息管理系统

Java+SSM+Jspl实现商品信息管理系统

Java+SSM+JSP+Maven实现网上书城系统

Java+SSM+JSP+Maven实现学校教务管理系统

Java+SSH系统系列实现

Java+SSH+JSP实现在线考试系统

Java+SSH+JSP实现医院在线挂号系统

Java+Springboot系统系列实现

Java+Springboot+H-ui+Maven实现营销管理系统

Java+Springboot+Bootstrap+Maven实现网上商城系统

Java+Springboot+Bootstrap+Maven实现景区旅游管理系统

1.更多JavaWeb系统请关注专栏。

https://blog.csdn.net/helongqiang/category_10020130.html

2.更多JavaSwing系统请关注专栏。

https://blog.csdn.net/helongqiang/category_6229101.html

2.源码下载

Java+JavaFx+Mysql实现客户信息管理系统

账号:admin

密码:123456

3.运行项目

关注B站:水坚石青

后期有更多干货视频推出!!!

4.权益备注

如有侵权请联系我删除。

5.支持博主

如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!


http://www.kler.cn/a/402347.html

相关文章:

  • 【Python数据分析五十个小案例】电影评分分析:使用Pandas分析电影评分数据,探索评分的分布、热门电影、用户偏好
  • python VS c++
  • ubuntu中使用ffmpeg和nginx推流rtmp视频
  • 用 Python 从零开始创建神经网络(十):优化器(Optimizers)(持续更新中...)
  • 提供html2canvas+jsPDF将HTML页面以A4纸方式导出为PDF后,内容分页时存在截断的解决思路
  • 拉格朗日乘子(Lagrange Multiplier)是数学分析中用于解决带有约束条件的优化问题的一种重要方法,特别是SVM
  • 软件测试之测试用例扩展
  • 如何去掉el-input 中 type=“number“两侧的上下按键
  • Liebherr利勃海尔 EDI 需求分析
  • React 18 Hooks:函数组件的强大工具
  • C++ 多态相关
  • 【专题】中国企业出海洞察报告暨解码全球制胜之道报告汇总PDF洞察(附原数据表)
  • 小程序19-微信小程序的样式和组件介绍
  • React——useCallback
  • Kubernetes常用命令
  • 2025年软考报名时是什么时候?开考科目如何安排?
  • 使用ufw配置防火墙,允许特定范围IP访问
  • 解决 electron 打包后部分电脑报错 Error: Dynamic Symbol Retrieval Error: Win32 error 126
  • CI配置项,IT服务的关键要素
  • Vue3 + Vite 项目引入 Typescript
  • 应聘美容师要注意什么?博弈美业收银系统/管理系统/拓客系统分享建议
  • 【并发模式】Go 常见并发模式实现Runner、Pool、Work
  • 海外媒体软文发稿:打开全球传播的新窗口-大舍传媒
  • Android CCodec Codec2 (二一)InputBuffers
  • 【工控】线扫相机小结 第三篇
  • 项目进度计划表:详细的甘特图的制作步骤