代码编织梦想

一、项目介绍

项目功能

1、散客开单:完成散客的开单,可一次最多开5间相同类型的房间。
2、团体开单:完成团体的开单,开放数量没有限制,可同时开不同类型的房间。
3、宾客结帐:自动统计每个登记客人在店时所发生的消费额和应付款额,并完成结帐收银操作。
4、客房预订:完成增加预订、修改预订、删除预订,预订情况的查询等功能。
5、营业查询:完成结帐单、全部宾客消费、在店宾客消费、离店宾客消费的查询
6、客户管理:完成会员基本信息的维护和来宾一览。
7、网络设置:完成系统与数据库的连接设置和系统风格的设置。
8、系统设置:完成房间项目、客户类型、操作员、计费设置。

在这里插入图片描述

二、项目展示

登录页面
在这里插入图片描述
主页面
在这里插入图片描述
系统设计
在这里插入图片描述
客户管理
在这里插入图片描述
客户预定
在这里插入图片描述
收银结账
在这里插入图片描述
团体开单
在这里插入图片描述
散客开单
在这里插入图片描述

三、源码展示

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

public Login() {
		super("系 统 登 录");
		top = new JLabel (new ImageIcon("pic/login_top.gif"));
		bott = new JLabel();
		panelMain = new JPanel(new BorderLayout(10, 10));
		bott.setBorder(new LineBorder (new Color(184, 173, 151)));
		buildCenter();
		
		panelMain.add("North", top);
		panelMain.add("South", bott);
		panelMain.add(panelInfo);
		
		//加事件监听
		bt1.addActionListener(this);
		bt2.addActionListener(this);
		bt1.addFocusListener (this);
		bt2.addFocusListener (this);
		bt1.addKeyListener (this);
		bt2.addKeyListener (this);
		cb.addItemListener (this);
		cb.addFocusListener(this);
		pf.addFocusListener(this);
		cb.addKeyListener (this);
		pf.addKeyListener (this);
		
		//加窗口监听 new WindowAdapter适配器类
		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent we) {
				quit();
			}//End windowClosing
		});
		
		this.setContentPane(panelMain);		//设置窗口面板
		this.setSize(350, 235);
		this.setResizable (false);			//设置窗口不可放大缩小
		this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		sunswing.setWindowCenter(this);
		this.setVisible(true);
		pf.requestFocus(true);				//设置焦点给密码框
	}

构造函数

//构造函数
	public CheckOut(JFrame frame) {
		super (frame, "收银结账", true);
		
		panelMain = new JPanel(new GridLayout(2, 1, 0, 0));		//主面板为(2,1)表格布局
		p1        = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 10));//上半部分为(4,1)表格布局
		p2        = new JPanel(new BorderLayout(15, 0));		//下半部分为边界布局
		
		buildP1();//构造上半面板
		buildP2();//构造下半面板
		
		panelMain.add(p1);
		panelMain.add(p2);
		
		addListener();
		this.setContentPane(panelMain);
		this.setPreferredSize (new Dimension(640, 450));
		this.setMinimumSize (new Dimension(640, 450));
		this.setResizable(false);		//不允许改变窗口大小
		pack();
		sunswing.setWindowCenter(this);	//窗口屏幕居中
	}
	
	//加事件监听
	private void addListener() {
		tf1.addActionListener(this);
		tf2.addActionListener(this);
		tf3.addActionListener(this);
		bt1.addActionListener(this);
		bt2.addActionListener(this);
		bt1.addMouseListener(this);
		bt2.addMouseListener(this);
	}
	
	//构造上半面板
	private void buildP1() {
		JPanel p11,p111,p112,p113,
			   p12,p121,p122,p123,p124,
			   p13,p131,p132,p133,
			   p14,p141,p142,p15;
		JLabel lb1,lb2,lb3,lb4,lb5,lb6,lb7,lb8,lb9,lb10,lb11;
		p11 = new JPanel(new FlowLayout(FlowLayout.LEFT,5,3));	//放置结账单号...一行
		p111 = new JPanel(new FlowLayout(FlowLayout.LEFT,0,3)); //放置结账单号
		p112 = new JPanel(new FlowLayout(FlowLayout.LEFT,0,3)); //放置结账房间
		p113 = new JPanel(new FlowLayout(FlowLayout.LEFT,0,3)); //放置宾客姓名
		p12  = new JPanel(new FlowLayout(FlowLayout.LEFT,10,3));//放置应收金额...一行
		p121 = new JPanel(new FlowLayout(FlowLayout.LEFT,0,3)); //放置应收金额
		p122 = new JPanel(new FlowLayout(FlowLayout.LEFT,0,3)); //放置已收押金
		p123 = new JPanel(new FlowLayout(FlowLayout.LEFT,0,3)); //放置优惠金额
		p124 = new JPanel(new FlowLayout(FlowLayout.LEFT,0,3)); //放置消费金额
		p13  = new JPanel(new FlowLayout(FlowLayout.LEFT,10,3));//放置实收金额...一行
		p131 = new JPanel(new FlowLayout(FlowLayout.LEFT,0,3)); //放置实收金额
		p132 = new JPanel(new FlowLayout(FlowLayout.LEFT,0,3)); //放置宾客支付
		p133 = new JPanel(new FlowLayout(FlowLayout.LEFT,0,3)); //放置找零
		p14  = new JPanel(new FlowLayout(FlowLayout.LEFT,10,3));//放置结账备注...一行
		p141 = new JPanel(new FlowLayout(FlowLayout.LEFT,0,3)); //放置结账备注
		p142 = new JPanel(new FlowLayout(FlowLayout.LEFT,33,3)); //放置按钮
		p15  = new JPanel(new GridLayout(3,1,0,5));
		lb1 = new JLabel("结账单号:");
		lb2 = new JLabel("       结账房间:");
		lb3 = new JLabel("       宾客姓名:");
		lb4 = new JLabel("消费金额:");
		lb5 = new JLabel(" 应收金额:");
		lb6 = new JLabel(" 已收押金:");
		lb7 = new JLabel(" 优惠金额:");
		lb8 = new JLabel("实收金额:");
		lb9 = new JLabel("      宾客支付:");
		lb10 = new JLabel("   找     零:");
		lb11 = new JLabel("结账备注:");
		lb1.setFont(new Font("宋体",Font.BOLD,15));
		lb2.setFont(new Font("宋体",Font.BOLD,15));
		lb3.setFont(new Font("宋体",Font.BOLD,15));
		lb4.setFont(new Font("宋体",Font.BOLD,15));
		lb5.setFont(new Font("宋体",Font.BOLD,15));
		lb6.setFont(new Font("宋体",Font.BOLD,15));
		lb7.setFont(new Font("宋体",Font.BOLD,15));
		lb10.setFont(new Font("宋体",Font.BOLD,15));
		lb4.setForeground(Color.blue);
		lb5.setForeground(Color.blue);
		lb6.setForeground(Color.blue);
		lb7.setForeground(Color.blue);
		lb10.setForeground(Color.blue);
		
		lbA = new JLabel("ZD200604210001");
		lbB = new JLabel("BD001");
		lbC = new JLabel("你好吗");
		lbD = new JLabel("500.00");
		lbE = new JLabel("450.00");
		lbF = new JLabel("300.00");
		lbG = new JLabel("50.00");
		lbH = new JLabel("¥0.00");
		lbA.setFont(new Font("宋体",Font.BOLD,15));
		lbB.setFont(new Font("宋体",Font.BOLD,15));
		lbC.setFont(new Font("宋体",Font.BOLD,15));
		lbD.setFont(new Font("宋体",Font.BOLD,15));
		lbE.setFont(new Font("宋体",Font.BOLD,15));
		lbF.setFont(new Font("宋体",Font.BOLD,15));
		lbG.setFont(new Font("宋体",Font.BOLD,15));
		lbH.setFont(new Font("宋体",Font.BOLD,15));
		lbA.setForeground(Color.blue);
		lbB.setForeground(Color.blue);
		lbC.setForeground(Color.blue);
		lbD.setForeground(Color.blue);
		lbE.setForeground(Color.red);
		lbF.setForeground(Color.red);
		lbG.setForeground(Color.red);
		lbH.setForeground(Color.red);
		tf1 = new TJMoneyField("0.00",10);
		tf2 = new TJMoneyField("0.00",10);
		tf3 = new TJTextField(20);
		
		bt1 = new TJButton("pic/u04.gif", " 结   账 ", "结算房费");
		bt2 = new TJButton("pic/cancel.gif", " 取   消 ", "取消结账");
		
		//第一行
		p111.add(lb1);
		p111.add(lbA);
		p112.add(lb2);
		p112.add(lbB);
		p113.add(lb3);
		p113.add(lbC);
		p11.add(p111);
		p11.add(p112);
		p11.add(p113);
		p11.setBorder(BorderFactory.createTitledBorder(""));
		
		//第二行
		p121.add(lb4);
		p121.add(lbD);
		p122.add(lb5);
		p122.add(lbE);
		p123.add(lb6);
		p123.add(lbF);
		p124.add(lb7);
		p124.add(lbG);
		p12.add(p121);
		p12.add(p122);
		p12.add(p123);
		p12.add(p124);
		
		//第三行
		p131.add(lb8);
		p131.add(tf1);
		p132.add(lb9);
		p132.add(tf2);
		p133.add(lb10);
		p133.add(lbH);
		p13.add(p131);
		p13.add(p132);
		p13.add(p133);
		
		//第四行
		p141.add(lb11);
		p141.add(tf3);
		p142.add(bt1);
		p142.add(bt2);
		p14.add(p141);
		p14.add(p142);
		
		p15.add(p12);
		p15.add(p13);
		p15.add(p14);
		p15.setBorder(BorderFactory.createTitledBorder(""));
		p1.add(p11);
		p1.add(p15);
	}

添加会员

public AddHuiYuan (JDialog dialog) {
		super(dialog, "添加会员",true);
		
		panelMain = new JPanel(new BorderLayout(0,0));
		buildPanel();
		addListener();
		this.setContentPane(panelMain);
		this.setPreferredSize (new Dimension (300,300));
		this.setMinimumSize (new Dimension (300,300));
		this.setResizable(false);		//不允许改变窗口大小
		pack();
		sunswing.setWindowCenter(this);	//窗口屏幕居中
	}

预定修改

public ModiEngage (JDialog dialog) {
		super(dialog, "客房预订修改",true);
		
		panelMain = new JPanel(new BorderLayout ());
		ps = new JPanel(new FlowLayout(FlowLayout.CENTER,20,10));//放按钮
		pc = new JPanel(new BorderLayout());//除去按钮其他部分放在一个面板里
		buildPane();
		panelMain.add(pc);
		panelMain.add("South",ps);
		addListener();
		this.setContentPane(panelMain);
		this.setPreferredSize (new Dimension (280,415));
		this.setMinimumSize (new Dimension (280,415));
		this.setResizable(false);		//不允许改变窗口大小
		pack();
		sunswing.setWindowCenter(this);	//窗口屏幕居中
		
	}

创建面板

private void buildPane() {
		
		pcs = new JPanel(new FlowLayout(FlowLayout.CENTER,5,5));//放置JCheckBox
		pcc = new JPanel(new BorderLayout());//放置备注以上,tf以下的控件
		pccs = new JPanel(new FlowLayout(FlowLayout.CENTER,5,5));//放置备注
		pccw = new JPanel(new BorderLayout());//放置列表左边的控件
		pccwc = new JPanel(new FlowLayout(FlowLayout.CENTER,5,10));//放置填写项目
		pccwc1 = new JPanel(new GridLayout(6,1,0,14));//放置标签
		pccwc2 = new JPanel(new GridLayout(6,1,0,5));//放置文本框和下拉列表框

		JLabel lb1,lb2,lb3,lb4,lb5,lb6,lb7,lb8;
		lb1 = new JLabel("宾客姓名:");
		lb2 = new JLabel("联系电话:");
		lb3 = new JLabel("预定规格:");
		lb4 = new JLabel("房间编号:");
		lb5 = new JLabel("预抵时间:");
		lb6 = new JLabel("保留时间:");

		pccwc1.add(lb1);
		pccwc1.add(lb2);
		pccwc1.add(lb3);
		pccwc1.add(lb4);
		pccwc1.add(lb5);
		pccwc1.add(lb6);
		
		tf1 = new JTextField(12);
		tf2 = new JTextField(12);
		tf3 = new TJTextField(12);
		tf4 = new TJTextField(12);
		tf1.setEditable(false);
		tf2.setEditable(false);
		cb1 = new JComboBox();//公共类刷新
		sunsql.initJComboBox(cb1,"select r_type from roomtype where delmark = 0");
		cb2 = new JComboBox();
		String s = cb1.getSelectedItem()+"";
		sunsql.initJComboBox(cb2,"select a.id from roominfo as a,roomtype as b where b.r_type = '"+s+"' and a.r_type_id = b.id and a.state = '可供' and a.delmark = 0 and b.delmark = 0");
		
		pccwc2.add(tf1);
		pccwc2.add(tf2);
		pccwc2.add(cb1);
		pccwc2.add(cb2);
		pccwc2.add(tf3);
		pccwc2.add(tf4);
		
		pccwc.add(pccwc1);
		pccwc.add(pccwc2);
				
		pccw.add(pccwc);
		
		dtm1 = new DefaultTableModel();
		tb1	 = new JTable(dtm1);
		sp1  = new JScrollPane(tb1);
		String sqlCode1 = "select a.r_type 预定规格,b.r_no 房间 from roomtype as a,engage1 as b where a.id = b.r_type_id";
		sunsql.initDTM(dtm1,sqlCode1);
		
		lb8 = new JLabel("备  注:");
		ta  = new TJTextArea(3,12);
		sp2 = new JScrollPane(ta);
		
		pccs.add(lb8);
		pccs.add(sp2);
		
		pcc.add("South",pccs);
		pcc.add(pccw);
		
		chk = new JCheckBox(" 到达保留时间是否自动取消预定");
		
		pcs.add(chk);

		bt1 = new TJButton ("pic/save.gif", "保  存", "保存预定信息"); 
		bt2 = new TJButton ("pic/cancel.gif", "取  消", "取消操作"); 
		
		ps.add(bt1);
		ps.add(bt2);
		
		tf = new JTextField("基本预定信息");
		tf.setHorizontalAlignment (JTextField.CENTER);
		tf.setBackground(new Color(199,183,143));
		tf.setBorder(new LineBorder(new Color(87,87,47)));
		tf.setEditable(false);
		
		pc.add("North",tf);
		pc.add(pcc);
		pc.add("South",pcs);
		pc.setBorder(BorderFactory.createTitledBorder(""));
	}

散客开单

public Individual(JFrame frame) {
		super (frame, "散客开单", true);
		panelMain = new JPanel(new BorderLayout());	//主面板为边界布局,确定取消按钮放South
		buildPanel();
		addListener();
		this.setContentPane(panelMain);
		this.setPreferredSize (new Dimension (530,510));
		this.setMinimumSize (new Dimension (530, 510));
		this.setResizable(false);		//不允许改变窗口大小
		pack();
		sunswing.setWindowCenter(this);	//窗口屏幕居中
	}

四、源码获取

因为页面与源码太多了,所以页面与源码只展示了一部分,完整源码已经打包了,点击下面蓝色链接获取!

点我联系

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/2401_84040513/article/details/139711089

vue.js 实践(2):实现多条件筛选、搜索、排序及分页的表格功能_weixin_34130269的博客-爱代码爱编程

与上周的第一篇实践教程一样,在这篇文章中,我将继续从一种常见的功能——表格入手,展示Vue.js中的一些优雅特性。同时也将对filter功能与computed属性进行对比,说明各自的适用场景,也为vue2.0版本中即将删除的部分filter功能做准备。 需求分析 还是先从需求入手,想想实现这样一个功能需要注意什么、大致流程如何、有哪

萌新VueDay3——列表渲染检索列表(过滤、排序sort)-爱代码爱编程

萌新Vue入门Day3——过滤、排序 列表渲染 检索 通过text框输入关键字进行检索 <div id="test"> <input type="text" v-model="searchname"> <ul> <li v-for="(p,index) in newStude

antd table排序 vue_VUE +element el-table运用sortable 拖拽table排序,实现行排序,列排序...-爱代码爱编程

Sortable.js是一款轻量级的拖放排序列表的js插件(虽然体积小,但是功能很强大) 项目需求是要求能对element中 的table进行拖拽行排序 这里用到了sorttable Sortable.js是一款轻量级的拖放排序列表的js插件(虽然体积小,但是功能很强大) 安装步骤: npm install sortablejs --sa

Vue —— 排序-爱代码爱编程

Search.vue 页面模板<template> ...... <!-- 排序 --> <ul class="sui-nav"> <li :class="{active : isOne}" //点击谁,谁高亮 @click="changeOreder(1)"> //点击调用 排序规则的

VUE循环 排序 多条件判断添加样式-爱代码爱编程

1.使用v-for对数据进行渲染并按照语文成绩从高到低进行排序 <div id="sorting"> <table> <tr v-for="(item,index) in sortScore"> <td>

vue3:使用sortablejs实现表格拖拽移动(修改拖拽样式)_一个前端女子的博客-爱代码爱编程

<template> <div class="app-container home"> <el-table class="t1" ref="dragTable" :data="tableData" row-key="id" border :ro

vue列表排序-爱代码爱编程

开始前先回顾一下sort排序用法: 定义一串数组arr,使用sort排序,会收到前后两个数据项设置两个参数a,b。 注意:a-b  是升序            b-a  是降序 a-b升序:  <script> let arr = [12,11,2,5,76,33] arr.sort((a,b)=>

vue3 实现排序按钮-爱代码爱编程

需求背景解决效果index.vue 需求背景 需要实现一个复用性,是提供表单顺倒排序的按钮 解决效果 index.vue <!--/** * @author: liuk

vue对list按某属性(id)排序-爱代码爱编程

Vue对list按某属性(Id)排序 <template> <div> <h3>排序前:</h3> <ul> <li v-f

前端js常见的list函数集合_js list-爱代码爱编程

1、instanceof() : 检测一个对象是否是数组(用来对付复杂数据类型) var arr = [1,2,3]; console.log(arr instanceof Array);  // 返回值为: ture  arr属不属于Array(数组)类型    2、valueOf(): 返回数组本身 var arr = ["aaa","bbb"

vue3之 使用sortablejs插件进行表格内的数据项拖拽排序_vue3 sortablejs-爱代码爱编程

 1、安装Sortablejs插件 npm i sortablejs --save yarn add sortablejs   2、引入到项目中 import { default as Sortable, SortableEvent } from 'sortablejs'; <n-data-table m

初学vue3(二)_return [...numbers].reverse()-爱代码爱编程

VUE3 计算属性类与样式绑定列表渲染 计算属性 在计算属性中使用 reverse() 和 sort() 的时候务必小心!这两个方法将变更原始数组,计算函数中不应该这么做。请在调用这些方法之前创建一

11-爱代码爱编程

文章目录 列表排序—sort(改变原数组) 列表排序—sort(改变原数组) <!DOCTYPE html> <html lang="en"> <head&g