java SSM酒店客房管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点
    java SSM酒店客房管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,spring+springMVC+mybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代
码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。

ssm酒店客房管理系统


二、功能介绍
(1)用户管理:对用户信息进行添加、删除、修改和查看
(2)客房类型管理:对客房类型信息进行添加、删除、修改和查看
(3)客房管理:对客房信息进行添加、删除、修改和查看
(4)公告管理:对公告信息进行添加、删除、修改和查看
(5)订单管理:对订单信息进行添加、删除、修改和查看
(6)用户登录、个人信息修改

数据库设计 

[表yonghu] 用户列属性表格

序号字段名称数据类型长度主键描述
1yhidINTEGER11用户编号
2yhmVARCHAR40用户名
3mmVARCHAR40密码
4xmVARCHAR40姓名
5qxVARCHAR40权限
6dhVARCHAR40电话
7dzVARCHAR40地址
8sfzhVARCHAR40身份证号

[表kflx] 客房类型列属性表格

序号字段名称数据类型长度主键描述
1kflxidINTEGER11客房类型编号
2lxVARCHAR40类型

[表kefang] 客房列属性表格

序号字段名称数据类型长度主键描述
1kfidINTEGER11客房编号
2kfVARCHAR40客房
3lxVARCHAR40类型
4fjhVARCHAR40房间号
5msVARCHAR40描述
6ztVARCHAR40状态
7tpVARCHAR40图片
8jgVARCHAR40价格

[表gonggao] 公告列属性表格

序号字段名称数据类型长度主键描述
1ggidINTEGER11公告编号
2btVARCHAR40标题
3nrVARCHAR40内容
4sjVARCHAR40时间

[表dingdan] 订单列属性表格

序号字段名称数据类型长度主键描述
1ddidINTEGER11订单编号
2ddbtVARCHAR40订单标题
3kfVARCHAR40客房
4yhVARCHAR40用户
5rzsjVARCHAR40入住时间
6jssjVARCHAR40结算时间
7tsVARCHAR40天数
8jgVARCHAR40价格
9jsjgVARCHAR40结算价格
10ztVARCHAR40状态
11dhVARCHAR40电话
12dzVARCHAR40地址
13xmVARCHAR40姓名

控制层代码设计

@RequestMapping(value="/add")
	public String add(kefang kefang,HttpServletRequest request){
		Map<String,Object> map= new HashMap<String,Object>();
		//String name=(String)request.getParameter("name");

		map.put("kfid", kefang.getKfid());//客房编号

		map.put("kf", kefang.getKf());//客房

		map.put("lx", kefang.getLx());//类型

		map.put("fjh", kefang.getFjh());//房间号

		map.put("ms", kefang.getMs());//描述

		map.put("zt", kefang.getZt());//状态

		map.put("tp", kefang.getTp());//图片

		map.put("jg", kefang.getJg());//价格



		String kfid=(String)kefang.getKfid();//客房编号

		String kf=(String)kefang.getKf();//客房

		String lx=(String)kefang.getLx();//类型

		String fjh=(String)kefang.getFjh();//房间号

		String ms=(String)kefang.getMs();//描述

		String zt=(String)kefang.getZt();//状态

		String tp=(String)kefang.getTp();//图片

		String jg=(String)kefang.getJg();//价格

		String sql="select count(1) as num from kefang where fjh='"+fjh+"'";
		
		ResultSet rs=null;
		DBO db=new DBO();
		
		int num=0;
		try{
			rs=db.query(sql);
			if(rs.next()){
				
				num=rs.getInt("num");
			}
			if(num>0){
				
				request.setAttribute("msg", "<script>alert('添加失败、房间号重复');</script>");
			}else{
				
				kefangdao.save(map);
				
				
				request.setAttribute("msg", "<script>alert('添加成功');</script>");
			}
			
		}catch(Exception e){
			e.printStackTrace();
		}
	
		System.out.println("addok");
		return "kefang/kefangadd";
	}
	
	/**删除 
	 * 
	 */
	@RequestMapping(value="/del")
	public String  del(Integer id,HttpServletRequest request,Map<String,Object> map){
	//	Map<String,Object> map= new HashMap<String,Object>();
		String a=(String)request.getParameter("keyid");
		id=Integer.parseInt(a);
		request.setAttribute("msg", "<script>alert('删除成功');</script>");
		kefangdao.del(id);
		return selectall(null,map,request);
	}
	/**
	 * 修改kefang信息
	 */
	@RequestMapping(value="/update")
	public String update(kefang kefang,HttpServletRequest request,Map<String,Object> map1){
		Map<String,Object> map= new HashMap<String,Object>();
		map.put("kfid", kefang.getKfid());//客房编号

		map.put("kf", kefang.getKf());//客房

		map.put("lx", kefang.getLx());//类型

		map.put("fjh", kefang.getFjh());//房间号

		map.put("ms", kefang.getMs());//描述

		map.put("zt", kefang.getZt());//状态

		map.put("tp", kefang.getTp());//图片

		map.put("jg", kefang.getJg());//价格



		String kfid=(String)kefang.getKfid();//客房编号

		String kf=(String)kefang.getKf();//客房

		String lx=(String)kefang.getLx();//类型

		String fjh=(String)kefang.getFjh();//房间号

		String ms=(String)kefang.getMs();//描述

		String zt=(String)kefang.getZt();//状态

		String tp=(String)kefang.getTp();//图片

		String jg=(String)kefang.getJg();//价格

		request.setAttribute("msg", "<script>alert('修改成功');</script>");
		kefangdao.update(map);
		return selectall(null,map1,request);
	}

持久层

public void save(Map<String, Object> map) {
		sqlSession.insert("com.kefang.insertkefang", map);
		
	}
	/**
	 * 删除aa
	 * @param id
	 */
	public void del(Integer id) {
		sqlSession.delete("com.kefang.delkefang", id);
	}

	/**
	 * 修改kefang信息
	 * @param map
	 */
	public void update(Map<String, Object> map) {
		sqlSession.update("com.kefang.updatekefang", map);
	}

	/**
	 * 查询kefang信息
	 * @param id
	 * @return 
	 */
	public List<Map<String, Object>> select(Integer id) {
		return sqlSession.selectList("com.kefang.selectkefang", id) ; 
	}

mybatis 配置

<insert id="insertkefang"  parameterType="java.util.Map">
 insert  into  kefang(kf,lx,fjh,ms,zt,tp,jg)  values(#{kf},#{lx},#{fjh},#{ms},#{zt},#{tp},#{jg})
</insert>

<delete id="delkefang" parameterType="int">
 delete  from  kefang where kfid=#{kfid}
</delete>

<update id="updatekefang" parameterType="java.util.Map">
update kefang set kf=#{kf},lx=#{lx},fjh=#{fjh},ms=#{ms},zt=#{zt},tp=#{tp},jg=#{jg} where kfid=#{kfid}
</update>

<!--  查询返回的是 list<map> -->
<!-- resultType 就是返回查询结果的类型,而如果是resultMap=则返回的就是你定义的javabean  -->
<select  id="selectkefang"  parameterType="int" resultType="java.util.Map">
  select  * from kefang where kfid=#{kfid}
</select>

<!-- resultType 就是返回查询结果的类型,而如果是resultMap=则返回的就是你定义的javabean  -->
<select  id="selectall"  parameterType="java.util.Map" resultType="java.util.Map">
  select  * from kefang where 1=1
<if test=" null != kf and kf!=''" >
 and kf = #{kf}
</if>
<if test=" null != lx and lx!=''" >
 and lx = #{lx}
</if>
<if test=" null != fjh and fjh!=''" >
 and fjh = #{fjh}
</if>
<if test=" null != ms and ms!=''" >
 and ms = #{ms}
</if>
<if test=" null != zt and zt!=''" >
 and zt = #{zt}
</if>
<if test=" null != tp and tp!=''" >
 and tp = #{tp}
</if>
<if test=" null != jg and jg!=''" >
 and jg = #{jg}
</if>

</select>


三、注意事项
    1、管理员账号:admin 密码:admin 数据库配置文件datasource.properties
     2、开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。
    3、数据库文件名是jspssmjdgl.sql,系统名称ssmjdgl
    4、系统首页地址:http://127.0.0.1:8080/ssmjdgl/login.jsp

四 系统实现


 源码获取 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/249784.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习的12个基础问题

1.阐述批归一化的意义 算法 1&#xff1a;批归一化变换&#xff0c;在一个 mini-batch 上应用于激活 x。 批归一化是一种用于训练神经网络模型的有效方法。这种方法的目标是对特征进行归一化处理&#xff08;使每层网络的输出都经过激活&#xff09;&#xff0c;得到标准差为 …

Mr. Cappuccino的第66杯咖啡——解决MacOS中终端下的中文乱码问题

解决MacOS中终端下的中文乱码问题 中文乱码问题解决方法 中文乱码问题 解决方法 查看Mac使用的是哪个shell echo $SHELL我这里使用的是zsh&#xff0c;将配置添加到.zshrc配置文件中 vi ~/.zshrc 输入i进入编辑模式 esc退出编辑模式 :wq# UTF-8 export LANGen_US.UTF-8加载配…

Excel中MATCH和INDEX函数的用法详解,以及Vlookup的数组用法

match函数 目的&#xff1a;查询函数&#xff0c;范围单元格中搜索特定的项&#xff0c;然后返回该项在此区域中的相对位置。 For example:让 match 去【隔壁办公室】找【老张】 Match 回复&#xff1a;【老张】坐在【隔壁办公室】第【四】个座位上 公式&#xff1a;【 mat…

驱动框架之_gpio_and_pinctrl-设备树的修改

1&#xff1a;设置设备树中的信息 安装“ Pins_Tool_for_i.MX_Processors_v6_x64.exe ”后运行&#xff0c;打开 IMX6ULL 的配置文件“ MCIMX6Y2xxx08.mex ”&#xff0c;就可以在 GUI 界面中选择引脚&#xff0c; 配置它的功能&#xff0c;这就可以自动生成 Pinctrl 的子节…

Linux查看进程的详细信息

使用top找到进程id使用下面命令查看进程的详细信息 systemctl status 17878

Microsoft visual studio 2013卸载方法

1、问 题 Microsoft visual studio 2013 无法通过【程序与功能】卸载 2、解决方法 使用微软的Microsoft visual studio 2013 专用卸载工具 工具下载链接&#xff1a;https://github.com/Microsoft/VisualStudioUninstaller/releases 或 链接&#xff1a;https://pan.baidu.c…

服务器挖矿木马识别与清理

一、什么是挖矿木马 挖矿木马会占用CPU进行超频运算,从而占用主机大量的CPU资源,严重影响服务器上的其他应用的正常运行。黑客为了得到更多的算力资源,一般都会对全网进行无差别扫描,同时利用SSH爆破和漏洞利用等手段攻击主机。部分挖矿木马还具备蠕虫化的特点,在主机被成…

华为ensp-无线小型wlan配置教程

实验拓扑图&#xff1a; 实验平台&#xff1a;ENSP510 实验设备&#xff1a;Centered Cloud、AC6005、AP4030、STA、Cellphone vlan范围划分 vlan 101 : 10.23.101.1/24 vlan 100 : 10.23.100.1/24实验步骤&#xff1a; 一、创建VLAN100、101配置端口类型 [AC1]vlan batch 100…

Python日期范围按旬和整月以及剩余区间拆分

昨天见到了一个比较烧脑的问题&#xff1a; 咋一看可能理解问题比较费劲&#xff0c;可以直接看结果示例&#xff1a; 当然这个结果在原问题上基础上有一定改进&#xff0c;例如将同一天以单个日期的形式展示。 如何解决这个问题呢&#xff1f;大家可以先拿测试用例自己试一下…

Android 移动端编译 cityhash动态库

最近做项目&#xff0c; 硬件端 需要 用 cityhash 编译一个 动态库 提供给移动端使用&#xff0c;l 记录一下 编译过程 city .cpp // // Created by Administrator on 2023/12/12. // // Copyright (c) 2011 Google, Inc. // // Permission is hereby granted, free of charg…

Seata客户端启动流程

自动装配 Springboot启动的时候会将下面这几个类进行自动装配 SeataRestTemplateAutoConfiguration(装载拦截器) 这里会装配 SeataRestTemplateInterceptor (Seata的拦截器) Configuration(proxyBeanMethods false) public class SeataRestTemplateAutoConfiguration {B…

塑料检查井产品设计合理、座盖联合周密,为安装维护带来方便

塑料检查井作为一种新型的检查井材料&#xff0c;其产品设计合理、座盖联合周密&#xff0c;为安装维护带来了极大的方便。 首先&#xff0c;塑料检查井的设计合理&#xff0c;能够满足各种工程需求。其结构紧凑、尺寸精确&#xff0c;可以方便地与管道和其他设施进行连接和安…

UE5 C++(二)— 游戏架构介绍

架构关系如下&#xff1a; 这里只简单描述下&#xff0c;具体的查看官方文档 AGameMode: AGameMode 是 AGameModeBase 的子类&#xff0c;拥有一些额外的功能支持多人游戏和旧行为。 所有新建项目默认使用 AGameModeBase。 如果需要此额外行为&#xff0c;可切换到从 AGameM…

系统安全-WAF入侵防御系统测评指标

WAF&#xff08;Web Application Firewall&#xff09;是一种部署在web应用程序前面的安全系统&#xff0c;其作用是在用户请求到达web服务器之前对用户请求进行扫描和过滤&#xff0c;分析并校验每个用户请求的网络包&#xff0c;确保每个用户请求有效且安全&#xff0c;对无效…

浅入浅出理解MySQL和InnoDB

目录 数据库的定义 数据库和实例 MySQL 的架构 数据的存储 如何存储表 如何存储记录 数据页结构 索引 索引的数据结构 聚集索引和辅助索引 索引的设计 锁 并发控制机制 锁的种类 锁的粒度 锁的算法 死锁的发生 事务与隔离级别 几种隔离级别 脏读 不可重复读 幻读 总结 Innodb与…

压缩包文件暴力破解 -Server2005(解析)

任务五十一: 压缩包文件暴力破解 任务环境说明:Server2005 1. 通过本地PC中渗透测试平台Kali使用Nmap扫描目标靶机服务版本信息,将 Telnet 版本信息字符串 作为 Flag 提交; flag:Microsoft Windows XP telnetd 2. 通过本地PC中渗透测试平台Kali对服务器场景Windows进行渗透测…

YOLOv5原创改进:一种新颖的跨通道交互的高效率通道注意力EMCA,ECA注意力改进版

💡💡💡本文原创自研创新改进:基于ECA注意力,提出了一种新颖的EMCA注意力(跨通道交互的高效率通道注意力),保持高效轻量级的同时,提升多尺度提取能力 强烈推荐,适合直接使用,paper创新级别 💡💡💡 在多个数据集验证涨点,尤其对存在多个尺度的数据集涨点明…

Axure动态面板的使用以及示例分享

目录 一. 什么是动态面板 二. 动态面板教程——以轮播图为例 2.1 创建动态面板 2.2 动态面板自适应大小 2.3 重复状态&#xff0c;将图片导入 2.4 添加交互事件——图片切换 2.5 效果展示 三. 多方式登录示例展示 四. 后台主界面左侧菜单栏示例展示 一. 什么是动态面板…

用Python快速从深层嵌套 JSON 中找到特定的 Value

有时候&#xff0c;我们拿到一个JSON数据的时候&#xff0c;会难以看出其逻辑层次结构。 这时候就需要我们进行代码解析了。 代码&#xff1a; import jsondef find_json_value(data_json, value, path""):if isinstance(data_json, dict):for k, v in data_json.…

Selenium安装WebDriver:ChromeDriver与谷歌浏览器版本快速匹配_最新版120

最近在使用通过selenium操作Chrome浏览器时&#xff0c;安装中遇到了Chrome版本与浏览器驱动不匹配的的问题&#xff0c;在此记录安装下过程&#xff0c;如何快速找到与谷歌浏览器相匹配的ChromeDriver驱动版本。 1. 确定Chrome版本 我们首先确定自己的Chrome版本 Chrome设置…