📄 mainframe.java
字号:
package file1;
/*
* @Author:黄顺武
*/
import tools.ArraySizeCounter;// 引入数组实际大小的计算类
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.MenuItem;
public class MainFrame extends JFrame implements ActionListener {
private static MainFrame mainFrame = new MainFrame();// 全局静态变量,只被初始化一次,以保存用户的操作状态
private static ChangeLF lf;// 全局静态变量,只被初始化一次,以保存用户的操作状态
private MenuBar mBar;
private Menu loadManagement = new Menu("登陆管理");
private Menu cManagement = new Menu("客户管理");
private Menu hManagement = new Menu("客房管理");
private Menu uabManagement = new Menu("客房预订与使用管理");
private Menu checkOut = new Menu("结帐管理");
private Menu ehManagement = new Menu("职称管理");
private Menu eManagement = new Menu("员工管理");
private Menu dpManagement = new Menu("部门管理");
private Menu sManagement = new Menu("工资结算");
private Menu wManagement = new Menu("出勤管理");
private Menu opManagement = new Menu("酒店运营情况统计");
private Menu appealManagement = new Menu("客户投诉管理");
private Menu goodsInvolvedManagement = new Menu("货品的相关管理");
// 声明"登陆管理"菜单项
private MenuItem login = new MenuItem("登录");
private MenuItem logout = new MenuItem("退出");
// 声明"客户管理"菜单项
private Menu cgManagement = new Menu("客户级别");
private Menu cdManagement = new Menu("客户");
private Menu nncManagement = new Menu("未按时入住客户");
private Menu nInCManagement = new Menu("未入住原因");
private Menu nInStandard = new Menu("未入住降级标准");
// 声明"客房管理"的菜单项
private Menu hgManagement = new Menu("客房级别");
private Menu hdManagement = new Menu("客房");
// 声明"工资结算"菜单项
private MenuItem sSalary = new MenuItem("个别工资结算");
private MenuItem kSalary = new MenuItem("分类工资结算");
private MenuItem eSalary = new MenuItem("总体工资结算");// 按类别分组
// 声明"出勤管理"菜单项
private MenuItem sws = new MenuItem("个别考勤");
private MenuItem kws = new MenuItem("类别考勤");
private MenuItem ews = new MenuItem("总体考勤");// 按类别分组
private Menu nnAtWork = new Menu("非正常出勤类型");
private Menu nnAtWorkCause = new Menu("非正常出勤记录");
private Menu punishmentList = new Menu("处罚条例");// 针对特定类型和原因的非正常出勤作出处罚规定
// 声明"结帐管理"的菜单项
private MenuItem checkOutItem = new MenuItem("客户结帐");
// 声明"酒店运营情况统计"菜单项
private Menu eIncome = new Menu("总收入");
private Menu hrIncome = new Menu("房屋出租收入");
private Menu most = new Menu("最受欢迎客房级别");
private Menu mostMoney = new Menu("出租收入最大客房级别");
MenuItem[] mArray = new MenuItem[15];
MenuItem[][] sMenuItems = new MenuItem[4][3];
// 声明"货品的相关管理"的菜单项
private MenuItem goodTypes = new MenuItem("货品类型管理");
private MenuItem goods = new MenuItem("货品管理");
private MenuItem goodsIn = new MenuItem("进货管理");
private MenuItem goodNotEqual = new MenuItem("货品损益情况管理");
public MainFrame() {
/*
* 测试区:在此区域插入测试代码
*/
// 引入增删改查菜单项所在的类
ADMIMenuItems mItems = new ADMIMenuItems();
mBar = new MenuBar();
this.setMenuBar(mBar);
this.setTitle("酒店管理系统");
this.setSize(800, 600);
this.setLocation(100, 50);
for (int i = 0; i < 15; i++) {
mArray[i] = mItems.getInquiry();
}
SMenuItems smi = new SMenuItems();
for (int t = 0; t < 4; t++) {
sMenuItems[t][0] = smi.getToady();// 获得"本日统计"菜单项
sMenuItems[t][1] = smi.getThisMonth();// 获得"本月统计"菜单项
sMenuItems[t][2] = smi.getThisYear();// 获得"本年统计"菜单项
}
// 添加"登陆管理"的菜单项
loadManagement.add(login);
loadManagement.add(logout);
mBar.add(loadManagement);
// 添加"客户管理"的菜单项
int i = 0;
cgManagement.add(mArray[i]);
i++;
cManagement.add(cgManagement);
cdManagement.add(mArray[i]);
i++;
cManagement.add(cdManagement);
nncManagement.add(mArray[i]);
i++;
cManagement.add(nncManagement);
nInCManagement.add(mArray[i]);
i++;
cManagement.add(nInCManagement);
nInStandard.add(mArray[i]);
i++;
cManagement.add(nInStandard);
mBar.add(cManagement);
// 添加"客房管理"菜单项
hgManagement.add(mArray[i]);
i++;
hManagement.add(hgManagement);
hdManagement.add(mArray[i]);
i++;
hManagement.add(hdManagement);
mBar.add(hManagement);
// 添加"客房预订与使用管理"菜单项
uabManagement.add(mArray[i]);
mBar.add(uabManagement);
i++;
// 添加"结帐管理"菜单项
checkOut.add(checkOutItem);
mBar.add(checkOut);
// 添加"职称管理"菜单项
ehManagement.add(mArray[i]);
i++;
mBar.add(ehManagement);
// 添加"员工管理"菜单项
eManagement.add(mArray[i]);
i++;
mBar.add(eManagement);
// 添加"部门管理"菜单项
dpManagement.add(mArray[i]);
i++;
mBar.add(dpManagement);
// 添加"工资结算"菜单项
sManagement.add(sSalary);
sManagement.add(kSalary);
sManagement.add(eSalary);
mBar.add(sManagement);
// 添加"出勤管理"菜单项
wManagement.add(sws);
wManagement.add(kws);
wManagement.add(ews);
nnAtWork.add(mArray[i]);
i++;
wManagement.add(nnAtWork);
nnAtWorkCause.add(mArray[i]);
i++;
wManagement.add(nnAtWorkCause);
punishmentList.add(mArray[i]);
i++;
wManagement.add(punishmentList);
mBar.add(wManagement);
// 添加"酒店运营情况"菜单项
int count = 0;
eIncome.add(sMenuItems[count][0]);
eIncome.add(sMenuItems[count][1]);
eIncome.add(sMenuItems[count][2]);
count++;
opManagement.add(eIncome);
hrIncome.add(sMenuItems[count][0]);
hrIncome.add(sMenuItems[count][1]);
hrIncome.add(sMenuItems[count][2]);
count++;
opManagement.add(hrIncome);
most.add(sMenuItems[count][1]);
most.add(sMenuItems[count][2]);
opManagement.add(most);
mBar.add(opManagement);
count++;
mostMoney.add(sMenuItems[count][1]);
mostMoney.add(sMenuItems[count][2]);
opManagement.add(mostMoney);
mBar.add(opManagement);// 添加"客户投诉管理"菜单
appealManagement.add(mArray[i]);// 添加菜单项
i++;
mBar.add(appealManagement);//
// 添加"货品的相关管理"的菜单项
goodsInvolvedManagement.add(goodTypes);
goodsInvolvedManagement.add(goods);
goodsInvolvedManagement.add(goodsIn);
goodsInvolvedManagement.add(goodNotEqual);
mBar.add(goodsInvolvedManagement);
login.addActionListener(this);
logout.addActionListener(this);
for (int j = 0; j < 15; j++) {
mArray[j].addActionListener(this);
}
for (int t = 0; t < 4; t++) {
for (int h = 0; h < 3; h++) {
sMenuItems[t][h].addActionListener(this);
}
}
checkOutItem.addActionListener(this);
sSalary.addActionListener(this);
kSalary.addActionListener(this);
eSalary.addActionListener(this);
sws.addActionListener(this);
kws.addActionListener(this);
ews.addActionListener(this);
// 注册"货品的相关管理"菜单项的动作事件
goodTypes.addActionListener(this);
goods.addActionListener(this);
goodsIn.addActionListener(this);
goodNotEqual.addActionListener(this);
// 添加窗口风格选择面版
lf = ChangeLF.getChangeLF();
lf.setFrame(this);
this.getContentPane().setLayout(new BorderLayout(0, 40));
this.getContentPane().add(lf, BorderLayout.NORTH);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setAllMenusDisabled();// 调用函数把除了"登录管理"之外的所有菜单都置为不可用
}
public void actionPerformed(ActionEvent e) {
// 登陆管理
// "登陆"
if (e.getSource() == login) {
setAllMenusDisabled();// 主要是为了重新登录本系统时又把除了"登录管理"之外的所有菜单都置为不可用,主要是为了保证两个不同角色的用户使用同一台机器操作本系统时系统的安全性
Login login = new Login();
JDialog dialog = new JDialog(this, true);
dialog.setSize(350, 300);
dialog.setLocation(100, 50);
dialog.getContentPane().setLayout(new BorderLayout());
dialog.getContentPane().add(login, BorderLayout.CENTER);
dialog.setVisible(true);
int adminID = login.getAdminstratorID();
int isLoading = login.getIsLoading();
if (adminID != 0 && isLoading != -1) {// 点击了"登录"按钮
/*
* 以下代码所完成的功能为把该登陆管理员的对应权限的模块置为可用
*/
String[] partnames = login.getPartnames();// 存储查询数据库得到的所要显示的模块的名称
MenuBar menuBar = this.getMenuBar();
for (int index = 0; index < menuBar.getMenuCount(); index++) {
Menu menu = menuBar.getMenu(index);
int isMenu = 0;// 判断是否是菜单的标识常量,默认为不是菜单
for (int j = 0; j < ArraySizeCounter
.getArraySize(partnames); j++) {// ArraySizeCounter为数组的实际大小计算类
if (menu.getActionCommand().equals(partnames[j])) {
isMenu = 1;// 为菜单,进行循环把该菜单下的所有菜单项均置为可用
for (int k = 0; k < menu.getItemCount(); k++) {
menu.getItem(k).setEnabled(true);
}
}
}
if (isMenu == 0) {// 不是菜单,重新进行循环把对应菜单项置为可用
for (int j = 0; j < ArraySizeCounter
.getArraySize(partnames); j++) {
for (int k = 0; k < menu.getItemCount(); k++) {
if (menu.getItem(k).getActionCommand().equals(
partnames[j])) {
menu.getItem(k).setEnabled(true);
}
}
}
}
}
} else if (adminID == 0 && isLoading != -1) {// 点击了"取消"按钮
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -