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

📄 haircutshopmanage.java

📁 本人课程设计用JAVA开发的理发店管理系统。可以高效率地管理理发店的运营 包括顾客的排队等待 计时 计费跟踪 营业额汇总等功能
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.util.Date;

public class HaircutShopManage extends JFrame
      {
      	private Action loadAction,//打开文件:打开以前某一天的经营资料。
      	           saveAction,//保存文件:保存当天的经营情况(营业结束)
      	           saveTempFileAcition,//保存临时文件:备份当前的工作状态(防止计算机忽然死机等突发事件)
      	           saveAsTempFileAcition,//另存为:将临时文件另存
      	           loadTempFileAction,//打开临时文件:恢复当前的工作状态
      	           exitAction,//退出
      	           newDayAction,//新的一天:初始化当天的理发店基本资料数据:每一种级别的收费标准
      	           endWorkAction,//营业时间到:声明营业时间到
                   barbercCheckInAction,//理发师报到:输入理发师的编号及报到时间
                   barberLeaveAction,//理发师离开:输入理发师的编号及离开时间
                   newbuyerAction,//新顾客:输入顾客对理发师级别的选择,以及进来时间
                   buyerLeaveWithCheckOutAction,//顾客结帐离开:输入顾客结帐离开时间
                   buyerBeginHaitcutAction,//顾客开始理发:输入理发师编号
                   buyerAdvaceMoveAction,//顾客提前离去:输入顾客所选择的级别,及当前在队列中的位置
                   buyerChangeSelectAction,//顾客更改选择:输入顾客以往的选择及在队列中的位置,再输入顾客新的选择
                   averageStayTimeAction,//平均逗留时间
                   averageQueueLengthTimeAction,//队列长度平均值
                   endingWorkTimeAction,//收尾工作时间
                   incomeAction,//营业额
                   levelIncomeAction,//各级理发师创收
                   specialTimeSectAction,//特定时间段
                   inputBarberDataAction,//理发师资料输入
                   queryBarberDataAction,//理发师资料查询
                   amendBarberDataAction,//理发师资料修改
                   helpAction,//帮助
                   aboutAction;//关于
         private JMenuBar menuBar;//菜单条
         private double queueLength,//队列总长度
                      stayTime,//逗留时间
                      leaveNumber;//离开人数
         private boolean isEndWork;//营业时间是否结束
         private HaircutShop haircutShop;//理发店数据
         private DateData dateData;//当天的经营数据
         private CurBarber curBarber;
         /**
          *得到一个理发师的简短表述
          */
         class CurBarber 
            {
            	int id;
            	int level;//从0开始
            	String name;
            	int index;//在级别向量中的下标
            	Barber barber;//当前理发师对象的引用
            	public CurBarber(int id,int level,String name,int index,Barber barber)
            	   {
            	   	this.id=id;
            	   	this.level=level;
            	   	this.name=name;
            	   	this.index=index;
                    this.barber=barber;
            	   }
            }
         /**
          *主函数
          */
         public static void main(String argx[])
              {
              	HaircutShop h=new HaircutShop(3);
              	new HaircutShopManage(h);
              }
          /**
           *构造方法
           */
         public HaircutShopManage(HaircutShop h)
                {
                	setTitle("理发店管理软件");
               	    menuBar=new JMenuBar();
               	    setJMenuBar(menuBar);
                	addMenuBar();
                	haircutShop=h;
                	dateData=new DateData(haircutShop);
               	    isEndWork=false;
                	addInterface();
                	this.addWindowListener(new WindowAdapter()
                	           {
                	           	public void windowClosing(WindowEvent e)
                	           	      {
                	           	      	checkForSave();
                	           	      	c.stop();
                	           	      	setVisible(false);
               	          	            dispose();
                	           	      }
                	           });
                	pack();
                	setResizable(false);
                	setVisible(true);
                }
           private BarberIcon barberIcon[][];
           private JPanel b[],panel,pw,datePanel;
           private LevelIcon levelButton[];//级别图标
           private JLabel averageStayTimeLabel,//平均逗留时间
                          averageQueueLengthTimeLabel,//队列长度平均值
                          incomeLabel,//当前总营业额
                          fluxLabel,//当前客流总量
                          hoLabel,miLabel,aoLabel;//时分秒
           private JTextField averageStayTimeText,//平均逗留时间
                          averageQueueLengthTimeText,//队列长度平均值
                          incomeText,//当前总营业额
                          fluxText,//当前客流总量
                          hoText,miText,aoText;//时分秒
           private ColckThread c;
           /**
           *加界面组件
           */
           public void addInterface()
               {
               	int k=haircutShop.levelBarber.length;
               	datePanel=new JPanel(new GridLayout(6,1));
               	Date d=new Date();
               	hoLabel=new JLabel("时");
               	hoText=new JTextField(""+d.getHours());
               	miLabel=new JLabel("分");
               	miText=new JTextField(""+d.getHours());
               	aoLabel=new JLabel("秒");
               	aoText=new JTextField(""+d.getHours());
               	aoText.setEnabled(false);
               	hoText.setEnabled(false);
               	miText.setEnabled(false);
               	averageStayTimeLabel=new JLabel("平均逗留时间");
               	averageStayTimeText=new JTextField(""+dateData.averageStayTime);
               	averageStayTimeText.setEnabled(false);
               	averageQueueLengthTimeLabel=new JLabel("队列长度平均值");
               	averageQueueLengthTimeText=new JTextField(""+dateData.averageQueueLength);
               	averageQueueLengthTimeText.setEnabled(false);
               	incomeLabel=new JLabel("当前总营业额");
               	incomeText=new JTextField(""+dateData.income);
               	incomeText.setEnabled(false);
               	fluxLabel=new JLabel("当前客流总量");
               	fluxText=new JTextField(""+dateData.flux);
               	fluxText.setEnabled(false);
               	pw=new JPanel(new GridLayout(14,1));
               	pw.add(averageStayTimeLabel);
               	pw.add(averageStayTimeText);
               	pw.add(averageQueueLengthTimeLabel);
               	pw.add(averageQueueLengthTimeText);
               	pw.add(incomeLabel);
               	pw.add(incomeText);
               	pw.add(fluxLabel);
               	pw.add(fluxText);
               	pw.add(hoLabel);
               	pw.add(hoText);
               	pw.add(miLabel);
               	pw.add(miText);
               	pw.add(aoLabel);
               	pw.add(aoText);
               	panel=new JPanel(new GridLayout(k,1));
               	barberIcon=new BarberIcon[k][];
               	b=new JPanel[k];
               	levelButton=new LevelIcon[k];
               	for(int i=0;i<k;i++)
               	  {
               	    levelButton[i]=new LevelIcon(i);
               	    b[i]=new JPanel(new FlowLayout(FlowLayout.LEFT));
               	    b[i].add(levelButton[i]);
               	    int j=haircutShop.levelLength[i];
               	    barberIcon[i]=new BarberIcon[j];
               	    for(int u=0;u<j;u++)
               	      {
               	      	barberIcon[i][u]=new BarberIcon((Barber)(haircutShop.levelBarber[i].get(u)),i);
               	        b[i].add(barberIcon[i][u]);
               	      }
               	   panel.add(b[i]);
               	  }
               c=new ColckThread();
               c.start();
               getContentPane().add(panel,BorderLayout.CENTER);
               getContentPane().add(pw,BorderLayout.EAST);	
               }
          /**
           *实现界面上时钟的功能
           */
           class ColckThread extends Thread
              {
              	public void run()
              	  {
              	  	for(;;)
              	  	 {
              	  	 	Date d=new Date();
              	  	 	hoText.setText(""+d.getHours());
              	  	 	miText.setText(""+d.getMinutes());
              	  	 	aoText.setText(""+d.getSeconds());
              	  	    setTitle("当前时间为"+d.toLocaleString());
              	  	 	try
              	  	 	  {
              	  	 		sleep(1000);
              	  	 	   }
              	  	 	 catch(Exception ex)
              	  	 	  {
              	  	 	  	ex.printStackTrace();
              	  	 	  }
              	  	 	}
              	  }
              }
         /**
          *加菜单选项
          */
         public void addMenuBar()
               {
               	  JMenu fileMenu=new JMenu("文件(F)");
               	  fileMenu.add(setMnemonic('F');
               	  JMenu workMenu=new JMenu("工作(W)");
               	  workMenu.setMnemonic('W');
               	  JMenu queryMenu=new JMenu("查询(Q)");
               	  queryMenu.setMnemonic('Q');
               	  JMenu barberManageMenu=new JMenu("理发师管理(B)");
               	  barberManageMenu.setMnemonic('B');
               	  JMenu helpMenu=new JMenu("帮助(H)");
               	  helpMenu.setMnemonic('H');
               	  JMenuItem item;
               	  /**
               	   *加文件菜单
               	   */
               	  fileMenu.add(loadAction=new FileAction("打开文件","打开以前的经营状态"));
               	  fileMenu.add(saveAction=new FileAction("保存文件","保存当天的经营情况"));
               	  item=fileMenu.add(saveTempFileAcition=new FileAction("保存临时文件","备份当前的工作状态"));
               	  saveTempFileAcition.setEnabled(false);
               	  item.setAccelerator(KeyStroke.getKeyStroke('S',Event.CTRL_MASK));
               	  fileMenu.add(saveAsTempFileAcition=new FileAction("另存为","另存临时文件"));
               	  item=fileMenu.add(loadTempFileAction=new FileAction("打开临时文件","恢复当前的工作状态"));
               	  item.setAccelerator(KeyStroke.getKeyStroke('O',Event.CTRL_MASK));
               	  fileMenu.add(exitAction=new FileAction("退出",null));
               	  menuBar.add(fileMenu);
               	  /**
               	   *加工作菜单
               	   */
               	  item=workMenu.add(newDayAction=new WorkAction("新的一天","新的一天"));
               	  item.setAccelerator(KeyStroke.getKeyStroke('N',Event.CTRL_MASK));
               	  item=workMenu.add(endWorkAction=new WorkAction("营业时间到","营业时间到"));
               	  item.setAccelerator(KeyStroke.getKeyStroke('Q',Event.CTRL_MASK));
               	  item=workMenu.add(barbercCheckInAction=new WorkAction("理发师报到","理发师报到"));
               	  item.setAccelerator(KeyStroke.getKeyStroke('I',Event.CTRL_MASK));
               	  item=workMenu.add(barberLeaveAction=new WorkAction("理发师离开","理发师离开"));
               	  item.setAccelerator(KeyStroke.getKeyStroke('L',Event.CTRL_MASK));
               	  item=workMenu.add(newbuyerAction=new WorkAction("新顾客","新顾客"));
               	  item.setAccelerator(KeyStroke.getKeyStroke('B',Event.CTRL_MASK));
               	  item=workMenu.add(buyerLeaveWithCheckOutAction=new WorkAction("顾客结帐离开","顾客结帐离开"));
               	  item.setAccelerator(KeyStroke.getKeyStroke('W',Event.CTRL_MASK));
               	  item=workMenu.add(buyerBeginHaitcutAction=new WorkAction("顾客开始理发","顾客开始理发"));
               	  item.setAccelerator(KeyStroke.getKeyStroke('E',Event.CTRL_MASK));
               	  item=workMenu.add(buyerAdvaceMoveAction=new WorkAction("顾客提前离去","顾客提前离去"));
               	  item.setAccelerator(KeyStroke.getKeyStroke('M',Event.CTRL_MASK));
               	  item=workMenu.add(buyerChangeSelectAction=new WorkAction("顾客更改选择","顾客更改选择"));
               	  item.setAccelerator(KeyStroke.getKeyStroke('H',Event.CTRL_MASK));
               	  menuBar.add(workMenu);
               	  /**
               	   *加查询菜单
               	   */
               	  queryMenu.add(averageStayTimeAction=new QueryAction("平均逗留时间","平均逗留时间"));
               	  queryMenu.add(averageQueueLengthTimeAction=new QueryAction("队列长度平均值","队列长度平均值"));
               	  queryMenu.add(endingWorkTimeAction=new QueryAction("收尾工作时间","收尾工作时间"));
               	  queryMenu.add(incomeAction=new QueryAction("营业额","营业额"));
               	  queryMenu.add(levelIncomeAction=new QueryAction("各级理发师创收","各级理发师创收"));               	  queryMenu.add(specialTimeSectAction=new QueryAction("特定时间段","特定时间段"));
               	  menuBar.add(queryMenu);
               	  /**
               	   *加理发师管理菜单
               	   */
               	  barberManageMenu.add(inputBarberDataAction=new BarberManageAction("理发师资料输入","理发师资料输入"));
               	  barberManageMenu.add(queryBarberDataAction=new BarberManageAction("理发师资料查询","理发师资料查询"));
               	  barberManageMenu.add(amendBarberDataAction=new BarberManageAction("理发师资料修改","理发师资料修改"));
               	  menuBar.add(barberManageMenu);
               	  /**
               	   *加帮助菜单
               	   */
               	  helpMenu.add(helpAction=new HelpAction("帮助","帮助"));
               	  helpMenu.add(aboutAction=new HelpAction("关于","关于"));
                  menuBar.add(helpMenu);
               }
         /**
          *文件事件处理
          */
         class FileAction extends AbstractAction
               {
               	  public FileAction(String name,String tooltip)
               	    {  
               	        super(name);
               	        if(tooltip!=null)
               	          putValue(SHORT_DESCRIPTION,tooltip);
               	    }
               	  public void actionPerformed(ActionEvent e)
               	     {
               	     	if("保存临时文件".equals(getValue(NAME)))
               	     	 saveTempFile();
               	        else if("另存为".equals(getValue(NAME)))
               	         saveAsTempFile();
               	        else if("打开临时文件".equals(getValue(NAME)))
               	         loadTempFile(); 
               	         else if("退出".equals(getValue(NAME)))
               	          {
               	          	checkForSave();
               	          	c.stop();
               	          	HaircutShopManage.this.setVisible(false);
               	          	HaircutShopManage.this.dispose();
               	          	}
               	         else if("打开文件".equals(getValue(NAME)))
               	           {
               	           	 new OpenFileDialog();

⌨️ 快捷键说明

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