Java项目:房屋租赁系统设计和实现(java+ssm+mysql+spring+jsp)

news2024/11/18 17:48:25

源码获取:博客首页 "资源" 里下载!

主要功能描述:

1.登录管理:主要有管理员登录和租客登录

2.房源列表以及添加房源功能:

3.租赁合同管理以及在租房源和已退租房源信息管理:

4.看房申请和退租申请管理:

5.故障报修申请和处理:

6.租金缴纳和收租信息管理:

7.行程安排管理:

8.租客信息查看管理:

给大家截取一部分功能图吧

房源列表:

合同管理:

看房以及退租管理:

故障报修处理:

 

收租管理:

系统代码架构:

 

报障信息处理控制层:

@Controller
@RequestMapping("/wrong")
public class WrongController {
  @Autowired
  private SolveService solveService;
  @Autowired
  private UserlistService userlistService;
  @Autowired
  private PaidService paidService;
  @Autowired
  private ZulistService zulistService;
  //管理员查找所有已处理的报障
  @RequestMapping("/selectall")
  public String selectall(Model model,QueryVo vo,@RequestParam(required=false,defaultValue="1") Integer page,
          @RequestParam(required=false,defaultValue="6") Integer pageSize){
		PageHelper.startPage(page, pageSize);
		List<Solve> list=solveService.selectall(vo);
		PageInfo<Solve> p=new PageInfo<Solve>(list);
		Integer count=solveService.selectcount(vo);
		model.addAttribute("solve", list);
		model.addAttribute("count", count);
		model.addAttribute("p", p);
		model.addAttribute("mainPage", "solve.jsp");
		model.addAttribute("vo", vo);
		return "admin/main1";
	}
//租客查找自己已处理的报障
		@RequestMapping("/findmysolve")
		public String findmysolve(HttpSession httpSession,Model model,QueryVo vo,@RequestParam(required=false,defaultValue="1") Integer page,
	            @RequestParam(required=false,defaultValue="6") Integer pageSize){
			User user1= (User) httpSession.getAttribute("user");
			Userlist userlist=userlistService.findhasuserlist(user1.getId());
			
			vo.setUserlist_id(userlist.getId());
			PageHelper.startPage(page, pageSize);
			List<Solve> list=solveService.selectall(vo);
			PageInfo<Solve> p=new PageInfo<Solve>(list);
			Integer count=solveService.selectcount(vo);
			model.addAttribute("solve", list);
			model.addAttribute("count", count);
			model.addAttribute("p", p);
			model.addAttribute("mainPage", "mysolve.jsp");
			model.addAttribute("vo", vo);
			return "zuke/main";
		}
		//管理员删除已处理报障记录
		@RequestMapping("/deletesolve")
		public String deletesolve(Integer id){
			solveService.deletesolve(id);
			return "redirect:selectall.action";
		}
		//zuke删除自己的已处理报障记录
			@RequestMapping("/zukedeletesolve")
			public String zukedeletesolve(Integer id){
				solveService.deletesolve(id);
				return "redirect:findmypaid.action";
			}
			//租客跳到我要报障页面
			@RequestMapping("/showaddwrong")
			public String showaddwrong(HttpSession httpSession,Model model,@RequestParam(required=false,defaultValue="1") Integer page,
		            @RequestParam(required=false,defaultValue="6") Integer pageSize)throws Exception{
				User user1= (User) httpSession.getAttribute("user");
				Userlist userlist=userlistService.findhasuserlist(user1.getId());
				PageHelper.startPage(page, pageSize);
				List<Zulist> list=zulistService.findzulistbyuid(userlist.getId());
				PageInfo<Zulist> p=new PageInfo<Zulist>(list);
				model.addAttribute("zulist", list);
				model.addAttribute("p", p);
				model.addAttribute("mainPage", "showaddwrong.jsp");
				return "zuke/main";
			}
			//点击报障后跳转到添加报障信息页面
			@RequestMapping("/addwrong")
			public String addwrong(Integer id,Model model){
				Zulist zulist=paidService.findzukezulist(id);
				model.addAttribute("zulist", zulist);
				model.addAttribute("mainPage", "addwrong.jsp");
				return "zuke/main";
			}
			//添加报障信息到wrong表
			@RequestMapping("/insertwrong")
			public String insertwrong(Wrong wrong,Model model){
				solveService.insertwrong(wrong);
				model.addAttribute("error","insertwrong");
				
				return "redirect:showaddwrong.action";
			}
			//管理员查看所有未处理报障
			@RequestMapping("/wronglist")
			public String wronglist(Model model,@RequestParam(required=false,defaultValue="1") Integer page,
		            @RequestParam(required=false,defaultValue="6") Integer pageSize){
				QueryVo vo=new QueryVo();
				PageHelper.startPage(page, pageSize);
				List<Wrong> list=solveService.findwrong(vo);
				PageInfo<Wrong> p=new PageInfo<Wrong>(list);
				model.addAttribute("wrong", list);
				model.addAttribute("p", p);
				model.addAttribute("mainPage", "wrong.jsp");
				return "admin/main1";
			}
			//租客查看自己的未处理报障
			@RequestMapping("/mywronglist")
			public String mywronglist(Model model,HttpSession httpSession,@RequestParam(required=false,defaultValue="1") Integer page,
		            @RequestParam(required=false,defaultValue="6") Integer pageSize){
				User user1= (User) httpSession.getAttribute("user");
				Userlist userlist=userlistService.findhasuserlist(user1.getId());
				QueryVo vo=new QueryVo();
				vo.setUserlist_id(userlist.getId());
				PageHelper.startPage(page, pageSize);
				List<Wrong> list=solveService.findwrong(vo);
				PageInfo<Wrong> p=new PageInfo<Wrong>(list);
				model.addAttribute("p", p);
				model.addAttribute("wrong",list);
				model.addAttribute("mainPage", "mywrong.jsp");
				return "zuke/main";
			}
			//管理员处理报障
			@RequestMapping("/gotosolve")
			public String gotosolve(Integer id,Model model){
				
				Wrong wrong=solveService.findbyid(id);
				Solve solve=new Solve();
				solve.setHouse_id(wrong.getHouse_id());
				solve.setAddress(wrong.getAddress());
				solve.setDate(wrong.getDate());
				solve.setDetail(wrong.getDetail());
				solve.setName(wrong.getName());
				solve.setUserlist_id(wrong.getUserlist_id());
				solve.setStatus("已处理");
				solveService.gotosolve(id, solve);
				model.addAttribute("error", "duesucess");
				return "redirect:selectall.action";
			}
}

用户信息控制层:

@Controller
public class UserlistController {

	@Autowired
	private UserlistService userlistService;

	
	@RequestMapping("/findhasuserlist")
	public String findhasuserlist(HttpSession httpSession,Model model) throws Exception{
		User user1= (User) httpSession.getAttribute("user");
		Integer user_id=user1.getId();
		Userlist userlist=userlistService.findhasuserlist(user_id);
		model.addAttribute("userlist", userlist);
		model.addAttribute("mainPage", "updateuserlist.jsp");
		return "zuke/main";
		
	}
	//查找并更新用户信息
	@RequestMapping("/checkuserlist")
	public String checkuserlist(Model model,Userlist userlist,HttpSession httpSession) throws Exception{
		if(userlist.getId()==null){
		String idcard=userlist.getIdcard();
		Userlist list=userlistService.checkuserlist(idcard);
		
		if(list!=null){
			model.addAttribute("error", "该身份证已被绑定,一个身份证号码只能被一个账户绑定!");
			model.addAttribute("mainPage", "updateuserlist.jsp");
			model.addAttribute("userlist", userlist);
		}else{
			User user1= (User) httpSession.getAttribute("user");
			Integer user_id=user1.getId();
			userlist.setUser_id(user_id);
			userlistService.insertuserlist(userlist);
			Userlist list1=userlistService.checkuserlist(idcard);
			model.addAttribute("error", "资料完善成功");
			model.addAttribute("mainPage", "updateuserlist.jsp");
			model.addAttribute("userlist", list1);
		}
		
	
		
		}
		else{
			
			Userlist list=userlistService.finduserlistupdate(userlist);
			if(list!=null){
				model.addAttribute("error", "该身份证号码已被绑定");
				model.addAttribute("mainPage", "updateuserlist.jsp");
				model.addAttribute("userlist", userlist);
			}else{
				userlistService.updateuserlist(userlist);
				model.addAttribute("error", "更新成功");
				model.addAttribute("mainPage", "updateuserlist.jsp");
				model.addAttribute("userlist", userlist);
			}
			
		}
		return "zuke/main";
	}
	
	@RequestMapping("/findalluserlist")
	public String findalluserlist(Model model ,@RequestParam(required=false,defaultValue="1") Integer page,
            @RequestParam(required=false,defaultValue="6") Integer pageSize) {
		 PageHelper.startPage(page, pageSize);
		List<Userlist> userlist=userlistService.findalluserlist();
		PageInfo<Userlist> p=new PageInfo<Userlist>(userlist);
		model.addAttribute("userlist", userlist);
		model.addAttribute("p", p);
		model.addAttribute("mainPage", "userlist.jsp");
		return "admin/main1";
		
	}
	//删除用户信息
	@RequestMapping("/deleteuserlist")
	public String deleteuserlist(Model model,Integer id) {
		userlistService.deleteuserlist(id);
		model.addAttribute("error", "deletesuccess");
		return "redirect:findalluserlist.action";
	}
}

合同信息控制层:

@Controller
@RequestMapping("/hetong")
public class HetongController {
	@Autowired
	private HetongService hetongService;
	@Autowired
	private HouselistService houselistService;
	@Autowired
	private ApplyService applyService;
	@Autowired
	private ZulistService zulistService;
	@Autowired
	private CheckoutService checkoutService;
	
	//新增合同信息,修改房屋列表的状态,从申请列表中删除,增添到租赁列表当中
	@RequestMapping("/inserthetong")
	public String inserthetong(Model model,Hetong hetong){
		//新增合同信息
		hetongService.inserthetong(hetong);
		Hetong hetong1=hetongService.findhetong(hetong.getHouse_id());
		//修改房屋列表状态
		Houselist houselist=houselistService.findhouseid(hetong1.getHouse_id());
		houselist.setStatus("已租赁");
		houselistService.updatehousestatus(houselist);
		//添加到租赁列表当中
		Zulist zulist=new Zulist();
		Apply apply=applyService.findbyhouse_id(hetong.getHouse_id());
		zulist.setHouse_id(hetong.getHouse_id());
		zulist.setUserlist_id(apply.getUserlist_id());
		zulist.setContract_id(hetong1.getId());
		zulist.setPrice(apply.getPrice());
		zulist.setAddress(apply.getAddress());
		zulistService.insertzulist(zulist);
		//从申请列表中删除
		applyService.deletebyhouse_id(hetong1.getHouse_id());
		model.addAttribute("error", "zusuccess");
		return "redirect:/zulist/findzulist.action";
		
	}
	@RequestMapping("/seehetong")
	public String seehetong(String house_id,Model model){
		Hetong hetong=hetongService.findhetong(house_id);
		model.addAttribute("hetong", hetong);
		model.addAttribute("mainPage", "hetong.jsp");
		return "admin/main1";
	}
	@RequestMapping("/updatehetong")
	public String updatehetong(String house_id,Model model){
		Hetong hetong=hetongService.findhetong(house_id);
		model.addAttribute("hetong", hetong);
		model.addAttribute("mainPage", "updatehetong.jsp");
		return "admin/main1";
	}
	@RequestMapping("/changehetong")
	public String changehetong(Hetong hetong){
		hetongService.updatehetong(hetong);
		
		return "redirect:/zulist/findzulist.action";
	}
	//终止合同操作:删除合同,插入已退租列表,删除在租列表,删除房屋列表
	
	@RequestMapping("/deletehetong")
	public String deletehetong(String house_id,Model model){
		hetongService.deletehetong(house_id);
		Zulist zulist=zulistService.findzulist(house_id);
		Checkout checkout=new Checkout();
		checkout.setHouse_id(house_id);
		checkout.setAddress(zulist.getAddress());
		checkout.setStatus("已退租");
		checkout.setUserlist_id(zulist.getUserlist_id());
		checkoutService.insertcheckout(checkout);
		houselistService.deletehousebyhouseid(house_id);
		zulistService.deletezulist(house_id);
		
		model.addAttribute("error", "checkoutsuccess");
		return "redirect:/zulist/findzulist.action";
	}
	
	@RequestMapping("/zukeseehetong")
	public String zukeseehetong(String house_id,Model model){
		Hetong hetong=hetongService.findhetong(house_id);
		model.addAttribute("hetong", hetong);
		model.addAttribute("mainPage", "showhetong.jsp");
		return "zuke/main";
	}
}

源码获取:博客首页 "资源" 里下载!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【 java 集合】HashMap源码分析

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

python基础篇之列表(增删改查)

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a;lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https://blog.csdn.net/lbcyllqj?spm1000.2115.3001.5343 哔哩哔哩欢迎关注&…

excel数据统计:三个公式提高统计工作效率

善于在工作中使用函数、公式可以提高工作效率&#xff0c;结合近期学员们遇到的问题&#xff0c;老菜鸟总结了三个非常实用的公式&#xff0c;每个公式都可以解决一类问题。学会这三个公式套路&#xff0c;就能解决日常遇到的很多麻烦事。第一类问题&#xff1a;对指定时间段的…

通过nvm 控制node的常见命令

通过nvm 控制node查看本电脑安装的node版本号切换到对应的node版本号可以查看nvm的全部命令查看node可安装的全部版本号下载对应node的版本查看本电脑安装的node版本号 nvm ls 查看本电脑安装的node版本号 切换到对应的node版本号 nvm use 版本号 切换到对应的node版本号 注意…

基于Python + Django 的密码自助平台项目(完整代码)

场景说明&#xff1a;因为本公司 AD 是早期已经在用&#xff0c;用户的个人信息不是十分全面&#xff0c;例如:用户手机号。 钉钉是后来才开始使用&#xff0c;钉钉默认是使用手机号登录。 用户自行重置密码时如果通过手机号来进行钉钉与 AD 之间的验证就行不通了。逻辑&#x…

Linux驱动开发基础_在设备树中指定中断以及在代码中获得中断

目录 1 设备树里中断节点的语法 1.1 设备树里的中断控制器 1.2 设备树里使用中断 2 设备树里中断节点的示例 3 在代码中获得中断 3.1 对于 platform_device 3.2 对于 I2C 设备、SPI 设备 3.3 调用 of_irq_get 获得中断号 3.4 对于 GPIO 1 设备树里中断节点的语法…

OVN实验----L3互通

概述 物理拓扑 如上一个实验OVN实验----L2互通 逻辑拓扑 按照上个实验OVN实验----L2互通 的操作方式&#xff0c;再配置一组容器blue&#xff0c;网段192.168.2.0/24 配置完成后可以在central上ovn-sbctl show看到如下4个绑定接口 此时&#xff0c;red和blue两个网段内是可…

EasyTrans,一个注解搞定数据翻译,减少30%SQL代码量

介绍easy trans适用于3种场景1 有userId/idCardNo(身份证号码-唯一键场景) 需要 userName&#xff0c;无需联表查询。2 有gender code 0 需要 男。3 枚举指定属性给前端亮点1 缓存支持2 跨微服务翻译支持(User和Order 是2个不同微服务&#xff0c;order里面有userId 需要userNa…

strapi系列--如何自定义非界面化的接口,定制化自己的业务逻辑

为什么要进行后端定制呢&#xff1f; 在实际开发过程中&#xff0c;项目中有些需求是不需要创建界面化接口的&#xff0c;需要我们定制化自己的业务逻辑&#xff0c;那么我们该如何处理这个需求呢&#xff1f;本文以图文并茂的形式&#xff0c;定制一个我们自己的业务逻辑接口…

blender 应用物体变换的作用

编辑模式和物体模式操作的区别 旋转 在物体模式下旋转时物体旋转值会发生变换** 在编辑模式下旋转时物体不会发生变化** 缩放 在物体模式下缩放会导致缩放尺寸发生变化 在编辑模式下缩放时&#xff0c;缩放属性不会发生变化 应用物体变换 把物体模式下的缩放旋转变换应…

Android---TabLayout

目录 TabLayout TabItem ​编辑 演示效果的xml TabLayout TabLayout 在开发中一般作为选项卡使用&#xff0c;常与 ViewPager2 和 Fragment 结合起来使用。 常用属性&#xff1a; app:tabBackground 设置 TabLayout 的背景色&#xff0c;改变整个TabLayout 的颜色&#xf…

绪论的习题

刘佳瑜*&#xff0c;王越 *, 黄扬* , 张钊* (淮北师范大学计算机科学与技术学院&#xff0c;安徽 淮北) *These authors contributed to the work equllly and should be regarded as co-first authors. &#x1f31e;欢迎来到机器学习的世界 &#x1f308;博客主页&#xff1…

idea调试常用的快捷键

一、F7 步入调试&#xff0c;进入当前函数内部。 说明&#xff1a; 如果步入的是自己编的函数&#xff0c;可读性会好很多。 如果是系统函数&#xff0c;我个人目前水平&#xff0c;觉得很难读。而且idea系统已编写好的函数&#xff0c;除非是研究源码&#xff0c;否则感觉…

javaweb08 javaweb、tomcat、maven简介、servlet原理和实例、Mapping映射、请求转发和读取properties文件

文章目录一、javaweb简介二、Tomcat三、Maven四、Servlet简介和HelloWorld五、Servlet原理六、Mapping映射七、ServletContext八、请求转发九、读取资源文件properties一、javaweb简介 在java中&#xff0c;动态web资源开发的技术成为javaweb 人们访问到的任何一个网页和资源…

C语言字符串库函数模拟实现

字符串检验 strlen 函数原型 /// brief 返回给定空终止字符串的长度&#xff0c;即首元素为 str 所指&#xff0c;且不包含首个空字符的字符数组中的字符数 /// param str 指向要检测的字符串的指针 /// return 字符串 str 的长度 size_t strlen( const char *str );空终止字…

C语言实现通讯录静态版本

通讯录中首先要有人的信息&#xff0c;然后是存放多少个人的信息 再丰富一下通讯录的功能&#xff0c;例如增删查改、显示、排序。 我们分三个文件来实现。 1、实现简易的菜单&#xff0c;通讯录的整体逻辑 #include"contact.h"void menu() {printf("*****…

900页文档比对只需5分钟?鸿翼InWise文档比对,以人工智能撬动办公效率杠杆

在日常办公中&#xff0c;多份文件间的检查、纠错、复核工作不可避免&#xff0c;这类工作往往具有很强的重复性&#xff0c;占用了大量的工作时间。鸿翼InWise平台文档比对能够赋能企业极速完成海量文档、图片的高精度比对&#xff0c;以人工智能撬动企业生产力提升。 随着数字…

MySQL调优-MySQL索引深入总结

目录 MySQL索引深入总结 InnoDB中的索引复习 聚集索引/聚簇索引 问题&#xff1a;如果我们没有定义主键呢&#xff1f; 问题&#xff1a;分析一下B树三层和四层的性能差异&#xff1f; 辅助索引/二级索引 回表 问题&#xff1a;为什么我们还需要一次回表操作呢?直接把完…

亚马逊云科技:小鹏汽车拓展全球市场,跑出“加速度”

汽车产业变革走向下半场&#xff0c;智能汽车的市场份额之争也从国内走向国际&#xff0c;出海之战讲求速战速决&#xff0c;小鹏汽车携手亚马逊云科技拓展海外市场&#xff0c;完成海外布局。 扩大“鹏”友圈&#xff0c;迈进欧洲市场 近年来&#xff0c;小鹏汽车不断推进全…

数字人民币年度总结:支付变革未停、试点之风再起

文/尹宁出品/陀螺研究院数字人民币&#xff0c;无疑是近年来热度最高的词汇之一&#xff0c;作为我国法币的数字形式&#xff0c;至其出世伊始&#xff0c;不论是资金溯源的透明追踪、零售更新的消费用途&#xff0c;还是跨境结算的雄图大略&#xff0c;围绕其推广与意义的讨论…