基于java+swing+mysql北方传统民居信息管理系统

news2025/1/17 13:51:44

基于java+swing+mysql北方传统民居信息管理系统

  • 一、系统介绍
  • 二、功能展示
    • 1.用户登陆
    • 2.用户界面
    • 3.管理员界面
    • 4.民居信息修改
    • 5.民居信息详情
  • 三、系统实现
    • 1.ManageMainFrame.java
  • 四、其它
    • 1.其他系统实现

一、系统介绍

用户:民居信息浏览、民居详细信息
管理员:民居信息浏览、民居信息添加、民居信息详情、民居信息删除
用户信息管理

二、功能展示

1.用户登陆

在这里插入图片描述

2.用户界面

在这里插入图片描述

3.管理员界面

在这里插入图片描述

4.民居信息修改

在这里插入图片描述

5.民居信息详情

在这里插入图片描述

三、系统实现

1.ManageMainFrame.java

package Guanliyuan;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.Transparency;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.imageio.ImageIO;
import javax.swing.Box;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
/*
 * 信息录入界面
 */

import Util.DbUtil;

public class Xiugai extends JFrame implements ActionListener {

	JTextField field1,field2,field3,field4,field5,field6;
	Box box1,box2,box3,box4,box5,box6,box7,baseBox;
	JButton buttonOfQueDing,buttonOfReset,buttonOfQuXIAO,buttonOfAddImg;
	Connection con = null;
	Statement stmt = null;
	ResultSet rs = null;
	JLabel jLabelImg =null;
	BufferedImage buffimg = null;
	ImageIcon ic;
	Image ia, l;
	String filepath = "";
	String filename = "";
	public Xiugai(String number)
	{
		
		init(number);
		setVisible(true);
//		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(0, 0, 900, 800);
		setTitle("民居信息修改界面");
	}
	void init(String number)
	{
		JLabel label1 = new JLabel(" 序        号  : ");
		JLabel label2 = new JLabel(" 地        址  : ");
		JLabel label3 = new JLabel(" 房        主  : ");
		JLabel label4 = new JLabel("面积(平米):");
		JLabel label5 = new JLabel(" 外       表  : ");
		JLabel label6 = new JLabel("已住用(是/否):");
		jLabelImg = new JLabel("", JLabel.CENTER);
		
		field1 = new JTextField();
		field2 = new JTextField();
		field3 = new JTextField();
		field4 = new JTextField();
		field5 = new JTextField();
		field6 = new JTextField();
		
		buttonOfQueDing = new JButton("提交");
		buttonOfReset = new JButton("重置");
		buttonOfQuXIAO = new JButton("取消");
		buttonOfAddImg = new JButton("添加图片");
		buttonOfQueDing.addActionListener(this);
		buttonOfQuXIAO.addActionListener(this);
		buttonOfReset.addActionListener(this);
		buttonOfAddImg.addActionListener(this);
		
		
		box1 = Box.createHorizontalBox();
		box1.add(box1.createHorizontalStrut(8));
		box1.add(label1);
		box1.add(box1.createHorizontalStrut(8));
		box1.add(field1);
		box1.add(box1.createHorizontalStrut(8));
		
		box2 = Box.createHorizontalBox();
		box2.add(box2.createHorizontalStrut(8));
		box2.add(label2);
		box2.add(box2.createHorizontalStrut(8));
		box2.add(field2);
		box2.add(box2.createHorizontalStrut(8));
		
		box3 = Box.createHorizontalBox();
		box3.add(box3.createHorizontalStrut(8));
		box3.add(label3);
		box3.add(box3.createHorizontalStrut(8));
		box3.add(field3);
		box3.add(box3.createHorizontalStrut(8));
		
		box4 = Box.createHorizontalBox();
		box4.add(box4.createHorizontalStrut(8));
		box4.add(label4);
		box4.add(box4.createHorizontalStrut(8));
		box4.add(field4);
		box4.add(box4.createHorizontalStrut(8));
		
		box5 = Box.createHorizontalBox();
		box5.add(box5.createHorizontalStrut(8));
		box5.add(label5);
		box5.add(box5.createHorizontalStrut(8));
		box5.add(field5);
		box5.add(box5.createHorizontalStrut(8));
		
		box6 = Box.createHorizontalBox();
		box6.add(box6.createHorizontalStrut(8));
		box6.add(label6);
		box6.add(box6.createHorizontalStrut(8));
		box6.add(field6);
		box6.add(box6.createHorizontalStrut(8));
				
		box7 = Box.createHorizontalBox();
		box7.add(box7.createHorizontalStrut(8));
		box7.add(buttonOfAddImg);
		box7.add(box7.createHorizontalStrut(8));
		box7.add(buttonOfQueDing);
		box7.add(box7.createHorizontalStrut(8));
		box7.add(buttonOfQuXIAO);
		box7.add(box7.createHorizontalStrut(8));
		box7.add(buttonOfReset);
		box7.add(box7.createHorizontalStrut(8));
		
		baseBox = Box.createVerticalBox();
		baseBox.add(Box.createVerticalStrut(15));
		baseBox.add(box1);
		baseBox.add(Box.createVerticalStrut(10));
		baseBox.add(box2);
		baseBox.add(Box.createVerticalStrut(10));
		baseBox.add(box3);
		baseBox.add(Box.createVerticalStrut(10));
		baseBox.add(box4);
		baseBox.add(Box.createVerticalStrut(10));
		baseBox.add(box5);
		baseBox.add(Box.createVerticalStrut(10));
		//baseBox.add(box6);
		//baseBox.add(Box.createVerticalStrut(10));
		JScrollPane pane = new JScrollPane(jLabelImg);
		pane.setPreferredSize(new Dimension(300, 500));
		baseBox.add(pane);
		baseBox.add(Box.createVerticalStrut(10));
		baseBox.add(box7);
		baseBox.add(Box.createVerticalStrut(15));
		
		add(baseBox);
		
		
		this.connDB();
		try {
			stmt = con.createStatement();
			String sql = "select * from building where number='"+number+"'; ";
			rs = stmt.executeQuery(sql);
		} catch (SQLException e2) {
			e2.printStackTrace();
		}
		String imgPath="";
		try {			
			if(rs.next())
			{
				 String num = rs.getString("number");
				 String location = rs.getString("location");
				 String name = rs.getString("name");
				 String space = rs.getString("space");
				 String color = rs.getString("color");
				 String  img= rs.getString("img");
				 imgPath = rs.getString("img");
				 String username= rs.getString("username");
				 field1.setText(num);
				 field1.setEnabled(false);
				 field2.setText(location);
				 //field2.setEnabled(false);
				 field3.setText(username);
				 //field3.setEnabled(false);
				 field4.setText(space);
				 //field4.setEnabled(false);
				 field5.setText(color);
				 //field5.setEnabled(false);
			}
			else
			{
				JOptionPane.showMessageDialog(null,"没有此编号的民居的详细信息!");
				new Guanliyuan(true);
			}
			
		} catch (HeadlessException e2) {
			e2.printStackTrace();
		} catch (SQLException e2) {
			e2.printStackTrace();
		}
		if(imgPath!=""&&imgPath!=null) {
			File file3 = new File(imgPath);
			try {
				buffimg = ImageIO.read(file3);
			} catch (IOException a) {
				a.printStackTrace();
			}
			filename = file3.getName();
			String cat = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();
			if (cat.equalsIgnoreCase("JPG") || cat.equalsIgnoreCase("GIF") || cat.equalsIgnoreCase("PNG")
					|| cat.equalsIgnoreCase("JPEG")) {

				ic = new ImageIcon(imgPath);
				ia = ic.getImage();
				int height = ic.getIconHeight();
				int width = ic.getIconWidth();
				jLabelImg.setSize(width, height);
				jLabelImg.setIcon(ic);
				repaint();
			} else {
				JOptionPane.showMessageDialog(null, " 该软件只支持 JPG 、GIF 、 PNG格式的图像文件 ", " 提示 ",
						JOptionPane.INFORMATION_MESSAGE);
			}
		}
	}
	
	
	public void connDB() { // 连接数据库
		try {
			Class.forName("com.mysql.jdbc.Driver");//注册驱动
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		try {//创建连接
			con = DriverManager.getConnection(DbUtil.dbUrlString, DbUtil.dbUser, DbUtil.dbpassword);
			
		} catch (SQLException e) {
			e.printStackTrace();
			
		}
		
	}

	public void closeDB() // 关闭连接
	{
		try {
			stmt.close();
			con.close();
		} 
		catch (SQLException e) {
			e.printStackTrace();
		}
		
	}
	
	public static boolean isNumeric(String str){
		   for (int i = str.length();--i>=0;){   
		    if (!Character.isDigit(str.charAt(i))){
		     return false;
		    }
		   }
		   return true;
		  }//判断 编号输入的是不是整数!
	
	@Override
	public void actionPerformed(ActionEvent e) {
		Object source = e.getSource();
		String number = field1.getText();
		String cartype = field2.getText() ;
		String carower = field3.getText() ;
		String price = field4.getText();
		String color = field5.getText();
		//String hire = field6.getText();
//		if(field6.getText().equals("是")&&field6.getText().equals("已经")&&field6.getText().equals("已租用")&&field6.getText().equals("已"))
//		{
//			hire = "1";
//		}
//		else 
//		{
//			hire = "0";
//		}
		
		
		if(source == buttonOfQueDing)
		{
			if(number.equals("")||cartype.equals("")||carower.equals("")||price.equals("")||color.equals(""))
			{
				JOptionPane.showMessageDialog(null, "请填写完整!");
			}
			else if(!isNumeric(number))
			{
				JOptionPane.showMessageDialog(null, "序号 请输入整数!");
			}
			else
			{
				this.connDB();
				try {
					//保存图片
			        Date date = new Date();//获取当年日期
			        //日期格式化
			        // SimpleDateFormat 负责日期格式化
			        //yyyy年   MM 月 dd日 hh时  mm分 ss秒  SSS毫秒
			        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
			        String nowTime =  sdf.format(date);//直接用format返回字符串
			        String  path = "E:\\\\img\\\\"+nowTime;
			        File paths = new File(path);
			        if(!paths.exists()) {
			        	paths.mkdirs();
			        }
			        String newpath = path+"\\\\"+filename;
			        File newpaths = new File(newpath);
			        File filepaths = new File(filepath);
			        if (!newpaths.exists()) {
			            try {
							Files.copy(filepaths.toPath(), newpaths.toPath());
						} catch (IOException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						}
			        } else {
			            newpaths.delete();
			            try {
							Files.copy(filepaths.toPath(), newpaths.toPath());
						} catch (IOException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						}
			        }

					int numberint = Integer.parseInt(field1.getText());
					stmt = con.createStatement();
					newpath.replaceAll("\\\\", "/");
					System.out.print(newpath);
					String str = "update building set location='"+cartype+"',name='"+cartype+"',space='"+carower+"',color='"+color+"',img='"+newpath+"' where  number='"+numberint+"'";
					System.out.print(str);
					stmt.executeUpdate(str);
					JOptionPane.showMessageDialog(null, "录入成功!");
					this.closeDB();
					this.dispose();
					new Guanliyuan(true);
	
				
				} catch (SQLException e1) {
//				e1.printStackTrace();
					
				JOptionPane.showMessageDialog(null, "此编号已经被使用,请换一个编号!");
				}
				
				
			}
			
		}
		else if(source == buttonOfQuXIAO)
		{
			this.dispose();
			new Guanliyuan(false);
			
		}
		else if(source == buttonOfReset)
		{
			//field1.setText("");
			field2.setText("");
			field3.setText("");
			field4.setText("");
			field5.setText("");
			field6.setText("");
			
			
		}else if(source == buttonOfAddImg) {
			JFileChooser chooser = new JFileChooser();

			if (JFileChooser.APPROVE_OPTION == chooser.showOpenDialog(this)) {
				String strSelectedPath = chooser.getSelectedFile().getPath();
				File file3 = chooser.getSelectedFile();
				try {
					buffimg = ImageIO.read(file3);
				} catch (IOException a) {
					a.printStackTrace();
				}
				filename = chooser.getSelectedFile().getName();
				String cat = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();
				if (cat.equalsIgnoreCase("JPG") || cat.equalsIgnoreCase("GIF") || cat.equalsIgnoreCase("PNG")
						|| cat.equalsIgnoreCase("JPEG")) {
					filepath = strSelectedPath;
					ic = new ImageIcon(filepath);
					ia = ic.getImage();
					int height = ic.getIconHeight();
					int width = ic.getIconWidth();
					jLabelImg.setSize(width, height);
					jLabelImg.setIcon(ic);
					repaint();
				} else {
					JOptionPane.showMessageDialog(null, " 该软件只支持 JPG 、GIF 、 PNG格式的图像文件 ", " 提示 ",
							JOptionPane.INFORMATION_MESSAGE);
				}
			}
		}
		
		
	}
}

四、其它

1.其他系统实现

Java+Swing实现学生选课管理系统
Java+Swing实现学校教务管理系统
Java+Swing+sqlserver学生成绩管理系统
Java+Swing用户信息管理系统
Java+Swing实现的五子棋游戏
基于JavaSwing 银行管理系统
Java+Swing+mysql仿QQ聊天工具
Java+Swing 聊天室
Java+Swing+dat文件存储实现学生选课管理系统
Java+Swing可视化图像处理软件
Java+Swing学生信息管理系统
Java+Swing图书管理系统
Java+Swing图书管理系统2.0
基于java+swing+mysql图书管理系统3.0

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

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

相关文章

CDMP证书是什么样?CDMP证书有用吗?

随着数字化经济在我国的迅速开展,企业越来越重视数字人才的培养,致使越来越多得数字人通过考取CDMP证书来证明自己的能力。而一些犹豫观望的人,就会问。拿到CDMP证书,对你们真的有用吗?是纸质版证书还是电子版证书&…

PHP交流管理系统wamp运行定制开发mysql数据库html网页算机软件工程

一、源码特点 PHP交流管理系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库系统主要采用B/S模式开发,开发环境为PHP APACHE,数据库为mysql5.0 ,使用php语言开发 PHP交流管理系统wamp运…

想把iPad作为扩展屏,却发现macOS monterey随航功能不见了

居家办公最不爽的事情就是没有扩展屏,对于开发来说,效率是有影响的,于是便想着把iPad当作扩展屏来用 系统参数 mac: macOS monterey(12.4);M1 iPad: iPad Pro 第2代,应该…

分享 2022 年最受欢迎的黑科技工具(一)

Hello, everybody ,2022 年最受欢迎的黑科技工具(一),收藏一波吧,您的在看、转发、点赞就是对tuonioooo最大的支持! 1.Hijacker 项目地址:https://github.com/chrisk44/Hijacker Hijacker是渗透…

Python基础(七):条件语句深入了解

文章目录 条件语句深入了解 一、了解条件语句 二、if 语法 1、语法 2、快速体验 三、实例(上网) 1、简单版 2、进阶版 四、if...else... 1、语法 2、实用版:网吧上网 五、多重判断 1、语法 2、实例:工龄判断 六、…

Kotlin高仿微信-第6篇-主页-我的

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

【信管2.3】项目生命周期

项目生命周期上一篇文章内容有点多呀,消化完了吗?其实吧,最主要的就是那三种组织形式而已,别的真没什么,记住它们的优缺点和项目经理的权力大小就可以了。今天我们轻松点,虽说还是挺重要的,但要…

在 Docker 容器内集成 Crontab 定时任务

本文内容Crontab 基础知识Crontab 日志问题参考链接有时候,我们需要在容器内执行某种定时任务。譬如,Kerberos 客户端从 KDC 中获取到的 TGT 默认有效期为 10 个小时,一旦这个票据失效,我们将无法使用单点登录功能。此时&#xff…

谈前端测试的重要性

如果正确完成前端测试,将使我们的用户感到满意,并在使用我们的应用程序时获得良好的性能体验。 根据 Bob 大叔的说法,测试是系统的一部分;许多开发人员认为相反,因为他们没有部署。他宣称这是一个灾难性的观点&#x…

数据可视化之平台数据分析

一 前言 近年来,随着网络技术和电子商务的发展,对科学数据分析的研究提出了更高的要求,数据分析技术随之发展起来。我们可以通过数据分析技术,发现大量金融、通信和商业数据中隐含的规律,从而为决策提供依据。这已成为…

HTML5期末考核大作业 基于HTML+CSS+JavaScript仿王者荣耀首页 游戏网站开发 游戏官网设计与实现

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

Native 内存warp

Native 启动-动态/静态&libc &linker https://www.cnblogs.com/ilocker/p/4645308.html https://www.cnblogs.com/ilocker/p/4645308.html 修改LD_PRELOAD hook java native 库函数 https://blog.csdn.net/m0_57036414/article/details/126811772 Native malloc_debug …

如何用潜类别混合效应模型(Latent Class Mixed Model ,LCMM)分析老年痴呆年龄数据

全文下载链接:http://tecdat.cn/?p24647线性混合模型假设 N 个受试者的群体是同质的,并且在群体水平上由独特的曲线 Xi(t)β 描述(点击文末“阅读原文”获取完整代码数据)。相关视频背景和定义相比之下,潜在类别混合模…

国鸿氢能冲刺港股:年亏损7亿 云浮工业园与青岛城投是股东

雷递网 雷建平 11月28日国鸿氢能科技(嘉兴)股份有限公司(简称:“国鸿氢能”)日前递交招股书,准备在港交所上市。年亏损7亿国鸿氢能成立于2015年6月,是一家以氢燃料电池为核心产品的企业&#x…

MySQL监控主从复制

show slave status; show slave status; 不够准确 使用下面的

JetpackCompose从入门到实战学习笔记3——Text的简单使用

JetpackCompose从入门到实战学习笔记3——Text的简单使用 上一篇文章我们讲解了modifier的一些简单用法,本篇就开始讲解基础控件Text的一些简单用法. 1.源码分析: Composable fun Text(text: AnnotatedString,//要显示的文本modifier: Modifier Modi…

【PAT乙级】一百一十道真题刷后大汇总——C/C++

技巧总结避免精度丢失查询数据是否存在容器之间的比较是否相等缓存区中字符残留问题巧妙输入巧妙使用hash数组简单数学质数俩数最大公约与最小公倍数因子常用的头文件及其内部函数< map >< set >< pair >< string >< vector >< algorithm >…

算法排序基础(全版)

一、简单排序 这大概是我整理的最全的有关算法排序的内容啦&#xff01;欢迎大家前来学习&#xff0c;同时也希望多多支持一下博主哦&#xff01; ​ 在我们的程序中&#xff0c;排序是非常常见的一种需求&#xff0c;提供一些数据元素&#xff0c;把这些数据元素按照一定的规则…

【C++ STL容器】:vector存放数据以及存放自定义的数据类型

前言 时不可以苟遇&#xff0c;道不可以虚行。 STL 中最常用的容器为&#xff1a;vector&#xff0c;暂且把它理解为我们之前学过的数组Array。 一、创建一个vector容器&#xff08;数组&#xff09; 添加头文件&#xff1a;#include <vector> vector<int> v;二、…

VauditDemo靶场代码审计

靶场搭建 将下载好的VAuditDemo_Debug目录复制到phpstudy的www目录下&#xff0c;然后将其文件名字修改成VAuditDemo&#xff0c;当然你也可以修改成其他的 运行phpstudy并且访问install目录下的install.php&#xff0c;这里我访问的是http://127.0.0.1/VAuditDemo/install/in…