DC00018基于java swing+MySQL花卉信息管理系统

1、项目功能演示

DC00018基于java swing+MySQL花卉信息管理系统java项目信息管理系统

2、项目功能描述

基于java swing+MySQL花卉信息管理系统
系统包括用户信息管理以及花卉信息管理等功能。 

3、项目运行截图

 

4、项目核心代码 

4.1 日期格式化

package utils;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*** 日期时间工具类* @author Administrator**/
public class DateUtils {//采用默认格式输出一个时间日期字符串,如2014-1-6 17:10:42public static String getDefaultDate(){return SimpleDateFormat.getDateTimeInstance().format(new Date());}//采用默认格式输出一个时间日期字符串,如2014-1-6 17:10:42public static String getDefaultDate(Date date){return SimpleDateFormat.getDateTimeInstance().format(date);}//采用默认格式输出一个日期字符串,如2014-1-6public static String getDate(){return SimpleDateFormat.getDateInstance().format(new Date());}//采用默认格式输出一个时间字符串,如17:13:27public static String getTime(){return SimpleDateFormat.getTimeInstance().format(new Date());}//采用指定pattern格式输出一个字符串public static String getDateFromPattern(String pattern){return new SimpleDateFormat(pattern).format(new Date());}//采用yyyy-MM-dd HH:mm:ss格式输出一个时间字符串,如 2014-01-06 17:13:27public static String getDefaultDateFromPattern(){return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());}//把一个字符串日期解析成一个date类型public static Date toDate(String date){try {return SimpleDateFormat.getDateTimeInstance().parse(date);} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}return new Date();}}

4.2 数据库操作类

package db;import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;//数据库工具类
public class DBService {private static String driver=null;private static String url=null;private static String name=null;private static String pwd=null;public static void load(){Properties pro = new Properties();try {//File file=new File("db.properties");//FileInputStream in=new FileInputStream("db.properties");//查找具有给定名称的资源,返回一个inputstream输入流,不加/时候,默认从此类所在的包下查找InputStream in=DBService.class.getResourceAsStream("db.properties");pro.load(in);driver=pro.getProperty("driver");url=pro.getProperty("url");name=pro.getProperty("name");pwd=pro.getProperty("pwd");Class.forName(driver);in.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}static{load();}public static Connection getConn(){try {return DriverManager.getConnection(url, name, pwd);} catch (SQLException e) {e.printStackTrace();}return null;}public static Statement openStmt(){try {return getConn().createStatement();} catch (SQLException e) {e.printStackTrace();}return null;}public static int exxcuteUpdate(String sql){try {return openStmt().executeUpdate(sql);} catch (SQLException e) {e.printStackTrace();}return -1;}public static ResultSet executeQuery(String sql){try {return openStmt().executeQuery(sql);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}public static void close(ResultSet rs) {if (rs != null)try {rs.close();} catch (SQLException e) {e.printStackTrace();}}public static void close(Statement stmt) {if (stmt != null)try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}public static void close(Connection conn){if (conn!=null)try {conn.close();} catch (SQLException e) {e.printStackTrace();}}public static void close(ResultSet rs,Statement stmt,Connection conn){close(rs);close(stmt);close(conn);}
}

 4.3 登录窗口

package view;import java.awt.*;
import java.io.*;import javax.imageio.ImageIO;
import javax.swing.*;import model.Manager;
import dao.ManagerDao;import java.awt.event.*;
import java.util.*;
//登陆界面
public class UserLogin extends JFrame implements ActionListener {// 定义所需要的基本控件JLabel jl1, jl2;JTextField jtf1;JPasswordField jpf1;JButton jb1, jb2;// 定义字体样式Font f1 = new Font("宋体", Font.PLAIN, 16);public static void main(String[] args) {new UserLogin();}public UserLogin() {init();}// 初始化界面private void init() {Container ct = this.getContentPane();this.setLayout(null);jl1 = new JLabel("请输入用户名: ");jl1.setFont(f1);jl1.setBounds(47, 170, 119, 20);ct.add(jl1);jtf1 = new JTextField();jtf1.setBounds(165, 165, 115, 30);jtf1.setFont(f1);ct.add(jtf1);jl2 = new JLabel("请输入密码: ");jl2.setFont(f1);jl2.setBounds(47, 218, 119, 20);ct.add(jl2);jpf1 = new JPasswordField();jpf1.setBounds(165, 213, 115, 30);jpf1.setFont(f1);jpf1.setEchoChar('*');// 设置回显字符是*ct.add(jpf1);jb1 = new JButton("登陆");jb1.setFont(f1);jb1.setBounds(86, 265, 80, 30);jb1.addActionListener(this);ct.add(jb1);jb2 = new JButton("清空");jb2.setFont(f1);jb2.setBounds(196, 265, 80, 30);jb2.addActionListener(this);ct.add(jb2);BackImage bi = new BackImage();bi.setBounds(0, 0, 348, 330);ct.add(bi);// 获取屏幕的宽度和高度int width = Toolkit.getDefaultToolkit().getScreenSize().width;int height = Toolkit.getDefaultToolkit().getScreenSize().height;this.setSize(355, 365);this.setLocation(width / 2 - 200, height / 2 - 150);this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);this.setTitle("用户登陆");this.setResizable(false);// 设置不可更改大小this.setVisible(true);}public void actionPerformed(ActionEvent e) {String name = jtf1.getText().trim();// 拿到输入的用户名if (e.getSource() == jtf1) {// 切换输入焦点到密码框,输入用户名后光标自动跳到密码框jpf1.requestFocus();} else if (e.getSource() == jb2) {// 单击"清空"按钮,将清空界面上的所有信息jtf1.setText("");jpf1.setText("");jtf1.requestFocus();// 将输入焦点设置到文本框} else if (e.getSource() == jb1) {// 事件源为登录按钮if (name.equals("")) {JOptionPane.showMessageDialog(this, "用户名不能为空!");return;}if (jpf1.getText().trim().equals("")) {JOptionPane.showMessageDialog(this, "用户密码不能为空!");return;}ManagerDao mdao = new ManagerDao();Manager m = mdao.findByName(name);if (m == null)JOptionPane.showMessageDialog(this, "用户名不存在,请重新输入!!!");if (m!=null && String.valueOf(jpf1.getPassword()).equals(m.getPwd())) {JOptionPane.showMessageDialog(this, "恭喜您,登录成功!!!");new MainMenu(m.getName());this.dispose();} elseJOptionPane.showMessageDialog(this, "密码错误,请重新输入!!!");}}}class BackImage extends JPanel {Image im;public BackImage() {try {im = ImageIO.read(new File("imgs/login.jpg"));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}// 重写jpanel的paint方法public void paint(Graphics g) {// 参数含义:要绘制的指定图像,x坐标,y坐标,weight,height,画在那个容器上g.drawImage(im, 0, 0, 348, 330, this);}
}

 4.4 主界面窗口

package view;import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;//管理员登录后的主界面
public class MainMenu extends JFrame{private String name;//用于接收登录人的名字//初始化所需要的基本控件//创建树的节点数组private DefaultMutableTreeNode nodes[]={new DefaultMutableTreeNode(new MyNode("花卉信息管理系统")),new DefaultMutableTreeNode(new MyNode("用户信息管理")),new DefaultMutableTreeNode(new MyNode("花卉信息管理")),new DefaultMutableTreeNode(new MyNode("退出系统"))};//创建根模型private DefaultTreeModel model=null;//创建树状列表控件private JTree jt=null;private JScrollPane scroll=null;//创建存放主功能模块的面板private JPanel jp=null;//创建分隔板,设置水平分割private JSplitPane jsp=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true);//声明卡片布局private CardLayout c1=null;public MainMenu(String name){this.name=name;initTree();initPanel();initFrame();addListener();}private void addListener() {jt.addTreeSelectionListener(new TreeSelectionListener() {@Overridepublic void valueChanged(TreeSelectionEvent e) {//拿到用户选中的节点DefaultMutableTreeNode dmt=(DefaultMutableTreeNode)e.getPath().getLastPathComponent();MyNode node=(MyNode)dmt.getUserObject();if(node.value.equals("花卉信息管理系统"))c1.show(jp, "root");if(node.value.equals("用户信息管理"))c1.show(jp, "um");if(node.value.equals("花卉信息管理"))c1.show(jp, "fm");else if(node.value.equals("退出系统")){int i=JOptionPane.showConfirmDialog(MainMenu.this, "是否退出系统");if(i==JOptionPane.YES_OPTION)System.exit(0);}}});}//初始化主窗体public void initFrame(){jsp.setDividerLocation(200);jsp.setDividerSize(4);this.add(jsp);this.setTitle("花卉信息管理系统");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//获取屏幕的宽度和高度Dimension ds=Toolkit.getDefaultToolkit().getScreenSize();int centerX = ds.width / 2;int centerY = ds.height / 2;int w = 950;// 本窗体宽度int h = 650;// 本窗体高度this.setBounds(centerX - w / 2, centerY - h / 2 - 30, w, h);// 设置窗体出现在屏幕中央this.setResizable(false);this.setVisible(true);}//初始化主功能面板的方法public void initPanel(){jp=new JPanel();c1=new CardLayout();//设置卡片布局jp.setLayout(c1);// 将各功能模块以卡片布局的形式放入主面板jp.add("root",new Welcome(this.name));jp.add("um",new UserManager());//用户管理jp.add("fm",new FlowerManager());//花卉信息管理//添加到分隔板的右边jsp.setRightComponent(jp);}//初始化树状列表的方法public void initTree(){model=new DefaultTreeModel(nodes[0]);for(int i=1;i<4;i++){model.insertNodeInto(nodes[i],nodes[0], i-1);}jt=new JTree(model);jt.setEditable(false);scroll=new JScrollPane(jt);//把带有树状列表的滚动面板添加到分隔板的左边jsp.setLeftComponent(scroll);}public static void main(String[] args) {new MainMenu("asdf");}// 自定义的初始化树节点的数据对象的类class MyNode {private String value;public MyNode(String value) {this.value = value;}public String toString() {return this.value;}}}

5、项目包含内容

 

6、项目获取

6.1 方式一 

私聊或者扫描下方名片获取项目。

6.2 方式二

点击此处直接获取项目。 

 

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

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

相关文章

二进制文件与文本文件的区别【字符集Charset】

计算机上存储的文件在比特位上都是以二进制数字0或1表示&#xff0c;因此在物理层面上&#xff0c;文本文件和二进制文件没有本质差异&#xff0c;都是由数字0或1组成的比特位集合。 文本文件和二进制文件&#xff0c;两者的差异体现在编码逻辑&#xff0c;需要根据文件头中标…

线程中的条件变量pthread_cond_t

条件变量不是锁&#xff0c;但通常结合锁使用&#xff0c;条件变量用于检查某个条件是否满足。 条件变量基本函数 int pthread_cond_init(pthread_cond_t *restrict cond, pthread_condattr_t *restrict attr);// 动态初始化条件变量&#xff0c;参数cond&#xff1a;条件变量…

Excel怎么自动排序?4种方法任君选择

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f522; 在处理大量数据时&#xff0c;保持数据的有序性是非常重要的。Excel提供了几种自动排序的方法&#xff0c;可以帮助我们快速地对数据进行排序&#xff0c;确保数据的组织和分析更加高效。今天&#xff0c;我们…

推荐几个前端组件库,真好用!

今天给大家推荐几款的后台管理系统开箱即用的组件库&#xff0c;基于ElementUI二次封装&#xff0c;开发必备 Headless UI Headless UI 是一款出色的前端组件库&#xff0c;专为与 Tailwind CSS 集成而设计。一组完全无样式、完全可访问的 UI 组件&#xff0c;可以自由的引入…

2024网站建设哪家公司比较好TOP3

在数字化时代&#xff0c;随着个人和商业活动越来越多地转移到线上&#xff0c;网站安全性的问题显得尤为重要。用户数据的保护是建立消费者信任和维护企业声誉的基石。靠谱的网站建设供应商深知这一点&#xff0c;他们把网站安全性作为开发过程中的首要考虑因素之一。 首先&a…

数据结构基础之《(5)—链表》

一、单向链表 1、单向链表节点结构&#xff08;可以实现成泛型&#xff09; public class Node{public int value;public Node next;public Node(int data) {value data;} } 2、双向链表节点结构 public class DoubleNode {public int value;public DoubleNode last;publi…

【Golang】Go语言中type关键字到底是什么?

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

FMEA实战指南:精准定参,筑牢产品质量防线

在FMEA分析中&#xff0c;严重度、频度和探测度三个参数的确定直接关系到风险顺序数(RPN)的计算&#xff0c;进而影响产品故障模式的优先排序和改进措施的制定。因此&#xff0c;掌握如何精准确定这些参数&#xff0c;对于提高产品质量、降低风险具有重要意义。深圳天行健企业管…

水面巡检船垃圾漂浮物检测系统源码分享

水面巡检船垃圾漂浮物检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of …

​初学者的自动化测试路线图:Playwright和TypeScript

测试对于确保软件运行良好非常重要。测试自动化通过使用特殊的工具和程序快速准确地进行测试使这变得更容易。这有助于检查软件是否完成了它应该做的事情、它的性能如何以及它是否可靠。 通过自动化重复测试任务&#xff0c;团队可以显着加快测试过程&#xff0c;扩大测试覆盖…

泛微OA提示信息换行

⭐️如果对你有用的话&#xff0c;希望可以点点赞&#xff0c;感谢了⭐️ WfForm.setTextFieldEmptyShowContent("field111", "格式模板&#xff1a;将顾客客诉原因文字描述清楚\n如&#xff1a;顾客因对美养师手法不满&#xff0c;觉得力度不够&#xff0c;没…

架构师:消息队列的技术指南

1、简述 消息队列(Message Queue, MQ)是一种异步通信机制,允许系统的各个组件通过消息在彼此之间进行通信。消息队列通过解耦系统组件、缓冲高峰期请求和提高系统的可扩展性,成为分布式系统中不可或缺的一部分。 2、工作原理 消息队列的基本工作原理是生产者将消息发布到…

远程办公生产力软件推荐,每天比同事早下班3个小时的秘密!

每天比同事早下班3个小时的秘密&#xff0c;终于被我找到啦&#xff01; 网易GameViewer远程是一款高效便捷的远程办公工具&#xff0c;支持多点触控、虚拟鼠标键盘、4K画质和低延迟。其隐私屏功能保护文件安全。 只需三步&#xff1a;安装、登录、远控&#xff0c;即可轻松提升…

Docker-2.如何保存数据退出

在使用Docker时&#xff0c;我们常常需要修改容器中的文件&#xff0c;并且希望在容器重启后这些修改能够得到保留。 0.简介 使用Docker时有一个需要注意的问题&#xff1a;当你修改了容器中的文件后&#xff0c;重启容器后这些修改将会被重置&#xff0c;深入研究这个问题。 …

远程访问软路由

远程访问软路由主要涉及通过互联网从远程位置访问和控制基于软件的路由器系统。以下是远程访问软路由的一般方法&#xff1a; 一、远程访问软路由的方法 通过Web管理界面访问&#xff1a; 适用于大多数支持Web管理的软路由系统。用户只需在浏览器中输入软路由的公网IP地址或域…

react中的ref三种形式

1&#xff0c;字符串形式 <!-- 创建盒子 --><div id"test"></div> <script type"text/babel">class Demo extends React.Component{render(){return(<div><input type"text" refinput1 /><button onCl…

从销售到 AI 算法工程师 | 转行人工智能大模型(含面经裁员幸存指南)

我叫王东&#xff0c;90后&#xff0c;和大家分享一下我的人工智能转型之路。 农学毕业&#xff0c;投身互联网做销售 机遇难求&#xff0c;养殖梦碎 我是土生土长的农村人&#xff0c;小时候经常和小鱼小虾打交道&#xff0c;上大学的时候就选择了农学专业&#xff0c;想着…

OpenKylin--解压文件

tar zxf dotnet-sdk-6.0.425-linux-x64.tar.gzrootsanzk-pc:/home/dotnet# tar zxf dotnet-sdk-6.0.425-linux-x64.tar.gz参考&#xff1a; rootxxx-pc:/home/xxx# mkdir -p /home/dotnet && tar zxf dotnet-sdk-6.0.411-linux-x64.tar.gz -C /home/dotnet mkdir -p /…

STM32F1+HAL库+FreeTOTS学习13——二值信号量

STM32F1HAL库FreeTOTS学习13——二值信号量 1. 信号量2. 二值信号量3. 相关API函数3.1 创建二值信号量3.2 获取信号量3.3 释放信号量3.4 删除信号量 4. 二值信号量操作实验1. 实验内容2. 代码实现&#xff1a;3. 运行结果 上一期我们学习了FreeRTOS中的队列&#xff0c;这一期我…

【含文档】基于Springboot+Vue的高校失物招领平台(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…