• 基于JavaSwing+MySQL的清朝古代名人数据管理系统设计


    目 录
    摘 要 II
    Abstract III
    第一章 课题背景 1
    1.1课题介绍 1
    1.2工具介绍 1
    1.3章节安排 2
    第二章 设计简介及设计方案论述 3
    2.1需求分析 3
    2.2概要设计 3
    第三章 详细设计 6
    3.1逻辑设计 6
    3.2物理设计 7
    第四章 设计结果及分析 12
    4.1功能测试 12
    4.2结果分析 18
    总 结 19
    致 谢 20
    参考文献 21
    附录 主要程序代码 22
    第二章 设计简介及设计方案论述
    整个应用系统的设计严格按照数据库设计的方法来进行,包括数据库的设计和应用程序的设计,两部分相辅相成[9]。数据库设计过程包含以下步骤:需求分析:系统的目的、用户需求、功能流程图;概念结构设计:用 E-R 图来描述实体及实体间的联系;逻辑结构设计:确定关系模式,各种约束的声明,同时给出系统的功能模块组成图,系统各模块功能;物理结构设计。数据库的实施阶段:数据库用 SQL SERVER 等创建,前端开发使用 JAVA 实现。
    2.1需求分析
    所谓"需求分析",是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。可以说需求分析是做系统之前必做的。需求分析是软件工程中的一个关键过程[10]。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后,设计者才能够分析和寻求新系统的解决方法。需求分析阶段的任务是确定软件系统功能。
    2.1.1用户需求
    在构造系统时,首先从需求出发构造数据库表,然后再由数据库表结合需求划分系统功能模块。这样,就把一个大的系统分解成了几个小系统。这里把系统划分为了三个模块:登录模块,管理员模块,用户模块。模块分别能够实现以下功能:
    (1)登录模块,实现登录功能, 注册功能。
    (2)管理员模块,实现管理员对名人的增删改减功能。
    (3)读者模块,实现用户查询功能。
    2.1.2系统目标
    根据需求分析及用户的沟通,该系统应达到以下目标:
    (1)界面设计友好,美观。
    (2) 数据存储安全,可靠。
    (3) 信息分类清晰,准确。
    (4)强大的查询功能,保证数据查询的灵活性。
    (5)操作简单易用,界面清晰大方。
    (6)系统安全稳定。
    (7)开发技术先进,功能完备,扩展性强。
    (8)占用资源少,对硬件要求低。
    (9)提供灵活,方便的权限设置功能,使整个系统的管理分工明确。
    2.2概要设计
    数据库系统主要使用面向对象的分析方法,采用 JAVA、SQL 语句来详尽地描述清朝历代皇帝和名人的详细资料,名人数据库管理系统可以分为两个大型模块:用户登录和管理员登录[11]。
    用户登录是名人数据库系统中的一个重要部分,它虽然不能像管理员一样对数据库进行更新操作,但是管理员的存在也正是服务于用户,管理员的操作能够让用户查询到相对准确的信息,同时也提高了用户查询的效率。同时给予用户查询功能可以防止一些不良用户对系统的恶意使用,进而保证了系统的安全性[12]。
    Swing 程序表示JAVA 的客户端窗体程序,除了通过手动编写代码的方式设计 Swing 程序之外,Eclipse 中还提供了一种Window Builder 工具,该工具是一种非常好用的Swing可视化开发工具,有了它,开发人员就可以通过拖放组件的方式编写 Swing 程序了。
    当名人、皇帝的资料表导入 MYSQL 之后,需要在 Eclipse 中做出几个必要的界面: 登录界面和增加、删除、查询、修改界面,同时也需要必须的管理员选择界面。在界面中设计采用 Window Builder 插件,进而在后台自动生成代码。
    数据库管理系统是在管理员对系统进行更新操作之后,数据库内的数据随之发生改变。登录操作已经完成,本文转载自http://www.biyezuopin.vip/onews.asp?id=15279其中包括用户登录与管理员登录。两种身份登陆之后出现的界面是不同的,用户登录成功之后只能进入查询界面,而管理员登录之后进入一个选择界面,可以自主选择增加、删除、查询、修改操作。
    登录操作已经完成,其中包括用户登录与管理员登录。两种身份登陆之后出现的界面是不同的,用户登录成功之后只能进入查询界面,而管理员登录之后进入一个选择界面,可以自主选择增加、删除、查询、修改操作。
    在管理员登录成功之后,进入一个选择界面,在这个界面中包含增删查改四个功能。在添加界面中,必须先输入人物的名字,并在文字提示框后输入相应的内容,进而通过系统将输入的信息录入数据库。
    增加、删除、修改三个操作中,无论其中哪一种进行操作,数据库中的数据也需要发生相应改变,这一点可以在基本实现系统中进行操作,操作完成之后打开 MYSQL 的表进行验证。
    管理员登录的数据需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询上,这就要求数据库结构能充分满足各种信息的输出和输入。

    package com.view;
    
    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.EventQueue;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    
    import com.dao.CelebrityDao;
    import com.dao.EmperorDao;
    import com.model.Celebrity;
    import com.model.Emperor;
    import com.mysql.jdbc.Connection;
    import com.util.DbUtil;
    
    import javax.swing.JTextField;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    
    public class Main extends JFrame {
    
    	private JPanel contentPane;
    	private JTextField textField_emperortext;
    	private JTextField textField_Celebrity;
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					Main frame = new Main();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    	/**
    	 * Create the frame.
    	 */
    	public Main() {
    		setTitle("\u4E3B\u9875\u9762");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 427, 231);
    		setBak(); //调用背景方法
    		Container c = getContentPane(); //获取JFrame面板
    	    JPanel contentPane = new JPanel(); //创建个JPanel
    		contentPane.setOpaque(false); //把JPanel设置为透明 这样就不会遮住后面的背景 这样你就能在JPanel随意加组件了
    		c.add(contentPane);
    		contentPane.setLayout(null);
    		setSize(396, 253);
    		setTitle("\u6E05\u671D\u540D\u4EBA\u7BA1\u7406\u7CFB\u7EDF");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		
    //		contentPane = new JPanel();
    //		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    //		setContentPane(contentPane);
    //		contentPane.setLayout(null);
    		
    		textField_emperortext = new JTextField();
    		textField_emperortext.setBounds(63, 54, 138, 24);
    		contentPane.add(textField_emperortext);
    		textField_emperortext.setColumns(10);
    		
    		JButton btnNewButton_emperor = new JButton("\u7687\u5E1D\u641C\u7D22");
    		btnNewButton_emperor.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				emperorSearch();
    			}
    		});
    		btnNewButton_emperor.setBounds(221, 51, 113, 27);
    		contentPane.add(btnNewButton_emperor);
    		
    		textField_Celebrity = new JTextField();
    		textField_Celebrity.setBounds(63, 115, 138, 24);
    		contentPane.add(textField_Celebrity);
    		textField_Celebrity.setColumns(10);
    		
    		JButton btnNewButton_Celebrity = new JButton("\u540D\u4EBA\u641C\u7D22");
    		btnNewButton_Celebrity.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				celebritySearch();
    			}
    		});
    		btnNewButton_Celebrity.setBounds(221, 114, 113, 27);
    		contentPane.add(btnNewButton_Celebrity);
    		
    		JButton btnNewButton = new JButton("\u8FD4\u56DE");
    		btnNewButton.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				dispose();
    				new Login().setVisible(true);
    			}
    		});
    		btnNewButton.setBounds(301, 11, 63, 27);
    		contentPane.add(btnNewButton);
    	}
    	
    
        /*
             * 添加背景
         */
    	public void setBak(){
    	    ((JPanel)this.getContentPane()).setOpaque(false);
    	    ImageIcon img = new ImageIcon("src\\pic\\bg\\main.jpg"); //添加图片
    	    JLabel background = new JLabel(img);
    	    this.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE));
    	    background.setBounds(0,0, img.getIconWidth(), img.getIconHeight()); 
    	}
    
    	
    	/*
    	 * 皇帝搜索
    	 */
    	protected void emperorSearch() {
            String searchword = this.textField_emperortext.getText();//获取搜索框输入的文字
    		
    		Connection con = null;
    		
    		try {
    			con = DbUtil.getCon();
    			Emperor emperor1 = EmperorDao.FindEByAll(con, searchword);
    			if(emperor1!=null) {
    				dispose();
    				
    				new Emperor_show().setVisible(true);
    			}else {
    				JOptionPane.showMessageDialog(null,"不存在该人物!");
    			}
    		}catch(Exception e1){
    			e1.printStackTrace();
    		}
    	}
    	
    	/*
    	 * 名人搜索
    	 */
    	protected void celebritySearch() {
            String searchword = this.textField_Celebrity.getText();//获取搜索框输入的文字
    		
    		Connection con = null;
    		
    		try {
    			con = DbUtil.getCon();
    			Celebrity celebrity1 = CelebrityDao.FindEByAll(con, searchword);
    			System.out.println("返回值"+celebrity1);
    			if(celebrity1!=null) {
    				dispose();
    				
    				new Celebrity_show().setVisible(true);
    			}else {
    				JOptionPane.showMessageDialog(null,"不存在该人物!");
    			}
    		}catch(Exception e1){
    			e1.printStackTrace();
    		}
    	}
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    springboot整合elasticsearch
    2022-09-02 mysql/stonedb-IN句子使用HASH优化后-查询多个字符串结果不符合预期记录
    leetcode 热题 100_合并两个有序链表
    2022 RedisDays 内容揭秘
    51单片机STC89C52RC——9.1 DS1302涓流充电计时芯片
    delaunay和voronoi图 人脸三角剖分
    交换机上的PoE技术
    北京陪诊小程序|陪诊系统开发|陪诊小程序未来发展不可小觑
    JavaScript中Promise、事件循环、宏任务微任务综合面试题详解
    branch与tag
  • 原文地址:https://blog.csdn.net/sheziqiong/article/details/126721223