⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.java

📁 此文档针对开发人员和测试人员。第二章对软件进行了全面的描述。第三章对接口进行了分析。第四章对软件实现的功能进行概述。第五章对软件后续开发实现提出的要求。第六章提出其他一些在软件开发过程中需要注意的问题
💻 JAVA
字号:
package com.ciash.bms;

import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

import com.ciash.bms.config.AppSetting;
import com.ciash.bms.db.manager.book.impl.BookDBManager;
import com.ciash.bms.db.manager.genus.impl.GenusDBManager;
import com.ciash.bms.db.manager.popedom.impl.PopedomDBManager;
import com.ciash.bms.db.manager.user.impl.UserDBManager;
import com.ciash.bms.gui.impl.BookEditDialog;
import com.ciash.bms.gui.impl.EditControlPanel;
import com.ciash.bms.gui.impl.GenusCreateDialog;
import com.ciash.bms.gui.impl.LoginDialog;
import com.ciash.bms.gui.impl.PopedomChooser;
import com.ciash.bms.gui.impl.PopedomEditDialog;
import com.ciash.bms.gui.impl.PopedomViewPanel;
import com.ciash.bms.gui.impl.UserEditDialog;
import com.ciash.bms.gui.impl.UserLoginInfoPanel;
import com.ciash.bms.gui.impl.UserPopEditDialog;
import com.ciash.bms.gui.main.MainFrame;
import com.ciash.bms.gui.menu.BMSMenuBar;
import com.ciash.bms.gui.search.BookSearchPanel;
import com.ciash.bms.gui.search.UserSearchPanel;
import com.ciash.bms.gui.search.loader.BookLoaderPanel;
import com.ciash.bms.gui.search.loader.UserLoaderPanel;
import com.ciash.bms.model.impl.BookModel;
import com.ciash.bms.model.impl.CommanPanel;
import com.ciash.bms.model.impl.GenusModel;
import com.ciash.bms.model.impl.PopedomModel;
import com.ciash.bms.model.impl.UserModel;
import com.ciash.bms.observer.impl.BookDBObserver;
import com.ciash.bms.observer.impl.GenusDBObserver;
import com.ciash.bms.observer.impl.LoginObserver;
import com.ciash.bms.observer.impl.MainMenuObserver;
import com.ciash.bms.observer.impl.PopedomDBObserver;
import com.ciash.bms.observer.impl.RegisterDBObserver;
import com.ciash.bms.observer.impl.UserDBObserver;

public class Main {
	/* 程序入口类,将集合所有的前后台对象 */
	// ----------------------------------------------------------------
	// 数据库连接管理类
	private UserDBManager userDBManager;
	private BookDBManager bookDBManager;
	private PopedomDBManager popedomDBManager;
	private GenusDBManager genusDBManager;
	//// 数据模型
	private BookModel bookModel;
	private GenusModel genusModel;
	private UserModel userModel;
	private PopedomModel popModel;
	// ----------------------------------------------------------------
	// GUI类c
	private MainFrame mainFrame;
	//// 主窗口
	private BMSMenuBar menuBar;
	//// 主菜单
	private LoginDialog loginDialog;
	//// 登陆窗口
	private BookEditDialog bookEditDialog;
	//// 图书添加、修改窗口
	private UserEditDialog userEditDialog;
	//// 用户添加、修改窗口
	private UserLoginInfoPanel userLoginInfoPanel;
	//// 用户登陆信息展示面板
	private GenusCreateDialog genusCreateDialog;
	//// 图书类创建窗口
	private UserPopEditDialog userPopEditDialog;
	//// 用户权限编辑对话框
	private PopedomChooser popedomChooser;
	//// 权限添加、修改面板
	private PopedomEditDialog popedomEditDialog;
	//// 权限添加、删除对话框
	private EditControlPanel editPanel;
	private CommanPanel commanPanel;
	//// 主面板上,位于上方的按钮面板,执行添加、删除、修改等功能的面板
	// 查询GUI	--------------------------------------------------------
	private BookLoaderPanel mainBookLoaderPanel;
	//// 主窗口上的用户查询面板上的读取器面板
	private UserSearchPanel mainUserSearchPanel;
	//// 用户查询面板
	private UserLoaderPanel mainUserLoaderPanel;
	//// 主窗口上的用户查询面板上的读取器面板
	private BookSearchPanel mainBookSearchPanel;
	//// 书籍查询面板
	// 用户权限编辑GUI --------------------------------------------------
	private UserSearchPanel popEditUserSearchPanel;
	//// 编辑用户用查询面板
	private BookLoaderPanel showAllBookPanel;
	//// 主面板中间书籍读取器
	// 观察者类
	private BookDBObserver bookDBObserver;
	private UserDBObserver userDBObserver;
	private UserDBObserver userPopEditObserver;
	private RegisterDBObserver registerDBObserver;
	private GenusDBObserver genusDBObserver;
	private MainMenuObserver mainMenuObserver;
	private LoginObserver loginObserver;
	private PopedomDBObserver popedomDBObserver;
	// 数据模型类
	private UserLoaderPanel userPopEditLoaderPanel;

	// 其他附加类

	public Main() {
        System.out.println("启动程序");
        System.out.println("初始化并装载皮肤");
		installSkin();
		initDateModel();// 初始化后台组件,包括数据库连接类以及后台数据用模型
        System.out.println("初始化所有用户控件");
		initGUIs();
        System.out.println("初始化全部控制器");
		initAllControl();
        System.out.println("装载全部控制器");
		loadControl();
        System.out.println("程序启动完毕");
		mainFrame.setVisible(true);
	}

	// ------------------------------------------------------------------------
	// 初始化后台程序
	private void initDateModel() {
		//方法调用顺序不能颠倒
        System.out.println("初始化并装载数据库连接池");
		initManager();
        System.out.println("初始化并装载数据模型");
		initModel();
	}

	private void initManager(){
		userDBManager = new UserDBManager(AppSetting.connectionStringBean);
		popedomDBManager = new PopedomDBManager(AppSetting.connectionStringBean);
		bookDBManager = new BookDBManager(AppSetting.connectionStringBean);
		genusDBManager = new GenusDBManager(AppSetting.connectionStringBean);
	}

	private void initModel() {
		bookModel = new BookModel(bookDBManager);
		genusModel = new GenusModel(genusDBManager);
		userModel = new UserModel(userDBManager, popedomDBManager);
		popModel = new PopedomModel(popedomDBManager);
	}

	// ------------------------------------------------------------------------
	// 初始化前台GUI
	private void initGUIs() {
		// GUI初始化
		mainFrame = new MainFrame();
		////初始化主控窗口
		initMainSeach();
		////初始化主窗口上的搜索用面板
		initUserInfo();
		////初始化用户登陆信息展示面板
		initMenuBar();
		////初始化主控菜单
		initUserPopEditGUIs();
		//// 初始化权限编辑用GUI

		/* 该方法必须在
		 * initMainShowPanel();
		 * initMainBookShower();
		 * initMainSearchPanel();
		 * 方法前调用
		 */
		initMainBookShower();
		initMainSearchPanel();
		//// 初始化主查询
		////初始化编辑按钮面板
		loginDialog = new LoginDialog();
		//// 初始化登陆窗口
		bookEditDialog = new BookEditDialog();
		//// 初始化书籍创建、编辑窗口
		userEditDialog = new UserEditDialog();
		//// 初始化用户创建、编辑窗口
		genusCreateDialog = new GenusCreateDialog();
		//// 初始化图书分类添加窗口
		popedomEditDialog = new PopedomEditDialog();
		//// 初始化权限添加、修改窗体
		initCommonPanel();
		////
		initEditToolPanel();
		//// 初始化编辑按钮用窗体
	}

	private void initCommonPanel() {
		commanPanel = new CommanPanel();
		mainFrame.addPanelOnNorth(commanPanel);
	}

	////初始化主控菜单
	private void initMenuBar() {
		menuBar = new BMSMenuBar();
		mainFrame.setJMenuBar(menuBar);
	}

	//初始化主窗口上的两个搜索面板
	private void initMainSeach() {
		//创建设置窗体上的图书搜索控件
		mainBookLoaderPanel = new BookLoaderPanel();
		mainBookLoaderPanel.addBookSelecter(editPanel);
		mainBookSearchPanel = new BookSearchPanel();
		mainBookSearchPanel.setBookLoader(mainBookLoaderPanel);
		mainFrame.setBookSearchPanel(mainBookSearchPanel);
		//创建设置窗体上的用户搜索控件
		mainUserLoaderPanel = new UserLoaderPanel();
		mainUserSearchPanel = new UserSearchPanel();
		mainUserSearchPanel.setUserLoader(mainUserLoaderPanel);
		mainFrame.setUserSearchPanel(mainUserSearchPanel);
	}

	//用户登陆后的信息展示
	private void initUserInfo() {
		userLoginInfoPanel = new UserLoginInfoPanel();// 用户登陆展示面板
		mainFrame.setUserLoginInfoPanel(userLoginInfoPanel);
	}

	// 初始化用户权限编辑用GUI
	// 注意,这些GUI是对用户权限进行编辑的GUI
	// 与权限创建、修改无关
	private void initUserPopEditGUIs() {
		userPopEditLoaderPanel = new UserLoaderPanel();
		// 用于编辑用户权限的用户读取面板
		popEditUserSearchPanel = new UserSearchPanel();
		// 权限编辑用户查询面板
		popEditUserSearchPanel.setUserLoader(userPopEditLoaderPanel);
		popedomChooser = new PopedomChooser(new PopedomViewPanel());
		// 权限编辑面板
		userPopEditDialog = new UserPopEditDialog();// 权限编辑对话框
		userPopEditDialog.setUserSearchPanel(popEditUserSearchPanel);
		userPopEditDialog.setPopedomChooser(popedomChooser);
		userPopEditDialog.setPopedomSelecter(popedomChooser);
		userPopEditLoaderPanel.addUserSelecter(popedomChooser);
	}

	////初始化
	private void initMainBookShower(){
		showAllBookPanel = new BookLoaderPanel();
		mainFrame.setShowAllBookPanel(showAllBookPanel);
		new Thread(){
			public void run() {
				showAllBookPanel.install(bookModel.findAll());
			}
		}.start();
	}

	//初始化编辑用按钮面板
	private void initEditToolPanel() {
		editPanel = new EditControlPanel();
		mainFrame.setEditPanel(editPanel);
		mainBookLoaderPanel.addBookSelecter(editPanel);
		showAllBookPanel.addBookSelecter(editPanel);
		mainUserLoaderPanel.addUserSelecter(editPanel);
	}

	//初始化主搜索面板
	private void initMainSearchPanel() {
		mainBookLoaderPanel = new BookLoaderPanel();
		mainUserLoaderPanel = new UserLoaderPanel();
		mainUserSearchPanel = new UserSearchPanel(mainUserLoaderPanel);
		mainBookSearchPanel = new BookSearchPanel(mainBookLoaderPanel);
		mainFrame.setUserSearchPanel(mainUserSearchPanel);
		mainFrame.setBookSearchPanel(mainBookSearchPanel);
	}

	// ------------------------------------------------------------------------
	private void initAllControl() {
		initUserControl();
		initGenusControl();
		initBookControl();
		initMenuControl();
		initPopedomControl();
	}

	private void initPopedomControl() {
		popedomDBObserver = new PopedomDBObserver();
		popedomDBObserver.setPopEditUI(popedomEditDialog);
		popedomDBObserver.setPopModel(popModel);
		popedomDBObserver.setPopUserEditUI(userPopEditDialog);
		popedomDBObserver.setUserModel(userModel);
	}

	//初始化主控制,包括系统退出等等
	private void initMenuControl() {
		mainMenuObserver = new MainMenuObserver();
		mainMenuObserver.setSearchUpdater(mainFrame);
	}

	//初始化用户控制,包括登陆控制以及注册控制
	private void initUserControl() {
		initUserPopControl();
		initUserSearchControl();
		initLoginControl();
		initRegisterControl();
	}

	//用户权限添加、修改控制
	private void initUserPopControl() {
		userPopEditObserver = new UserDBObserver();
		userPopEditObserver.setSearchUI(mainUserSearchPanel);
		userPopEditObserver.setUserSearchModel(userModel);
		userPopEditObserver.addUserResultUpdater(userPopEditLoaderPanel);
		userPopEditObserver.setSearchUI(popEditUserSearchPanel);
		userPopEditObserver.setUserEditDialogUI(userEditDialog);
		userPopEditObserver.setUserModifyModel(userModel);
	}

	// 初始化登陆控制
	private void initLoginControl() {
		//初始化控制器
		loginObserver = new LoginObserver();
		loginObserver.setLoginModel(userModel);
		loginObserver.setLoginUI(loginDialog);
		//初始化可通知者,即更新器
		loginObserver.addLoginUpdater(mainFrame);
		loginObserver.addLoginUpdater(menuBar);
		loginObserver.addLoginUpdater(editPanel);
		loginObserver.addLoginUpdater(editPanel);
	}

	//初始化用户注册控制
	private void initRegisterControl() {
		registerDBObserver = new RegisterDBObserver();
		registerDBObserver.setRegisterModel(userModel);
		registerDBObserver.setDialog(userEditDialog);
	}

	//初始化书籍类别管理控制
	private void initGenusControl() {
		genusDBObserver = new GenusDBObserver();
		genusDBObserver.setGenusModel(genusModel);
		genusDBObserver.setGenusUI(genusCreateDialog);
	}

	//初始化书籍搜索控制
	private void initBookControl() {
		bookDBObserver = new BookDBObserver();
		bookDBObserver.setBookModel(bookModel);
		bookDBObserver.setBookEditDialogUI(bookEditDialog);
		bookDBObserver.setGenusModel(genusModel);
		bookDBObserver.addBookResultUpdater(mainBookLoaderPanel);
		bookDBObserver.setBookSearchModel(bookModel);
		bookDBObserver.setSearchUI(mainBookSearchPanel);
		bookDBObserver.addBookUpdater(mainBookLoaderPanel);
		bookDBObserver.addBookUpdater(showAllBookPanel);
	}

	//用户搜索控制
	private void initUserSearchControl() {
		userDBObserver = new UserDBObserver();
		userDBObserver.setSearchUI(mainUserSearchPanel);
		userDBObserver.setUserSearchModel(userModel);
		userDBObserver.addUserResultUpdater(mainUserLoaderPanel);
		userDBObserver.addUserUpdater(mainUserLoaderPanel);
		userDBObserver.addUserUpdater(userPopEditLoaderPanel);
	}

	// ----------------------------------------------------------------------
	//装在控制器
	private void loadControl(){
		loadMenuControl();
		mainUserSearchPanel.setSearchObserver(userDBObserver);
		popEditUserSearchPanel.setSearchObserver(userPopEditObserver);
		mainBookSearchPanel.setSearchObserver(bookDBObserver);
		mainBookLoaderPanel.addBookSelecter(editPanel);
		mainUserLoaderPanel.addUserSelecter(editPanel);
	}

	private void loadMenuControl(){
		menuBar.setSystemObserver(mainMenuObserver);
		menuBar.setGenusObserver(genusDBObserver);
		menuBar.setLoginObserver(loginObserver);
		menuBar.setRegisterObserver(registerDBObserver);
		menuBar.setFindBookObserver(mainMenuObserver);
		menuBar.setFindUserObserver(mainMenuObserver);
		menuBar.setResultClear(mainMenuObserver);
		menuBar.setEditBookObserver(bookDBObserver);
		menuBar.setPopedomEditObserver(popedomDBObserver);
		commanPanel.setFindBookObserver(mainMenuObserver);
		commanPanel.setFindUserObserver(mainMenuObserver);
		commanPanel.setResultClear(mainMenuObserver);
		editPanel.setRegisterObserver(registerDBObserver);
		editPanel.setUserEditObserver(userPopEditObserver);
		editPanel.setBookEditObserver(bookDBObserver);
	}

	public void installSkin() {
		try {
			UIManager.setLookAndFeel("com.nilo.plaf.nimrod.NimRODLookAndFeel");
//			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (UnsupportedLookAndFeelException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		new Main();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -