c#+Mysql房屋租赁管理系统

news2024/12/23 21:02:24

一、引言

随着房价的不断升高,人们对房屋的需求越来越难以满足,对于一些在外地工作的人来说租房子成为了一种常态,因此出现了越来越多的房屋中介,而对于房屋中介而言,管理日益增加租户的信息和房产的信息成了一个至关重要的问题。与此同时,环保也是大家关注的焦点。因此,开发一款能够实现无纸化的管理系统来管理房屋和租户的信息就显得十分必要。

1.1房屋租赁管理系统的任务目标:

简化房屋信息及租客信息的管理步骤,可以方便快捷地查询所需要的信息,系统自动进行水电等费用的计算。在系统启动时有对用户身份的检查,以保证信息的安全性。
房屋租赁管理系统的开发及运行环境:

1.2开发环境:

Windows7 64位
Visual Studio 2010
Mysql 5

1.3运行环境:

window
.NET4.0及以上

第二章 系统分析与设计

2.1 需求分析

通过对任务的分析,可以发现运行的系统要能实现以下的功能:
(1)登录管理:实现以正确的员工号、密码和登录人员身份才能登陆系统的功能,正确登录之后才能进行之后的管理。
(2)房屋信息管理:包括添加新的房屋信息、修改房屋信息、查询房屋信息、删除房屋信息。
(3)用户信息管理:包括添加新的用户信息、修改用户信息、查询用户信息、删除用户信息。
(4)租赁信息管理:包括查询某个房屋的租赁状况、添加租赁关系、删除租赁关系。
(5)水电费用管理:包括水电费用的查询、添加、修改、删除。
(6)财务收支记录:添加公司的财务记录(不允许修改和删除)。
(7)收费项目设置:设置水费、电费、物业费、宽带费单价及财务余额。
(8)管理员信息维护/密码修改:若登陆用户为超级管理员(admin),则可以管理其他员工的信息,否则就只有修改自己密码的权限。
数据流图如下:
在这里插入图片描述

2.2数据库概念结构设计

E-R图
在这里插入图片描述

2.3数据库逻辑结构设计

关系模式(带有下划线的为主键,所有表中数据均为varchar类型):
管理员(用户名、密码)
房屋信息(房屋编号、所属区域、房屋名称、房屋类型、房屋面积、装修情况、房屋设施、房屋用途、月租价格、房间状态、备注说明)
用户信息(身份证号、用户姓名、性别、电话)
租赁信息(房屋编号、租户身份证号、租赁开始时间、租赁月数 、月租金)
水电费信息(受理单号、房屋编号、上次电表数、本次电表数、上次水表数、本次水表数、收费金额)
财务收支报(编号、类型、金额、日期)
杂项设置(编号、水费单价、电费单价、宽带费单价、物业费单价、财务余额)
注:编号位数字等限制由程序中的函数完成,故所有数据类型均为varchar
在这里插入图片描述
在这里插入图片描述

三、界面设计

3.1登陆模块为Login.cs:

当用户点击登陆按钮时用用户名和密码向数据库中的manageruser表提交查询,若校验通过则将用户名作为初始化参数传递到MainForm.cs、否则提示用户不存在或密码错误。
在这里插入图片描述
主要代码:

sqltext1 = "select password from manageruser where user='" + username + "'";
ds = MySqlHelper.GetDataSet(MySqlHelper.Conn, CommandType.Text, sqltext1, null);
MainForm mainform = new MainForm(username);

主界面代码:
在窗口初始化时通过函数重载,获得当前登陆的用户的用户名

public MainForm()
        {
            usernamestr = "admin";
            InitializeComponent();
        }

        public MainForm(string user)
        {
            usernamestr = user;
            InitializeComponent();
        }

根据登陆的用户不同,顶部工具菜单第二项可能为管理员信息维护、修改密码,登陆用户若为admin则为管理员信息维护,否则为修改密码。
窗口的主体部分用SplitContainer空间分割为两部分,左侧为功能列表、右侧为具体的操作窗口。当点击功能能列表中的不同按钮时、右侧操作窗口内容随之改变。
关键代码(切换右侧操作窗口):

splitContainer1.Panel2.Controls.Clear();
Rentinf rentinf = new Rentinf();
rentinf.TopLevel = false;
rentinf.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
rentinf.WindowState = FormWindowState.Normal;
rentinf.Dock = DockStyle.Fill;
rentinf.KeyPreview = true;
rentinf.Parent = splitContainer1.Panel2;
rentinf.Show();

3.2房屋信息管理模块

界面设计如下:
在这里插入图片描述

可以按照房屋编号、房屋名称、房屋区域、房屋状态进行查询
在这里插入图片描述
可以按照房屋编号、房屋名称、房屋区域、房屋状态进行查询
查询关键代码:

sqltext1 = "select * from roominf where " + chaxunfangshi + " like '%" + textBox1.Text + "%'";
roomdataGridView.DataSource = MySqlHelper.GetDataSet(MySqlHelper.Conn, CommandType.Text, sqltext1, null).Tables[0].DefaultView;
添加关键代码:
sqltext="insert into roominf(num,weizhi,mingzi,zhonglei,mianji,zhuangxiu,sheshi,yongtu,jiage,zhuangtai,beizhu)values('" + num + "','" + weizhi + "','" + mingzi + "','" + leixing + "','" + mianji + "','" + zhuangxiu + "','" + sheshi + "','" + yongtu + "','" + jiage + "','" + zhuangtai + "','" + beizhu + "')";
MySqlHelper.ExecuteNonQuery(MySqlHelper.Conn,CommandType.Text,sqltext, null);
roomdataGridView.DataSource = MySqlHelper.GetDataSet(MySqlHelper.Conn, CommandType.Text,"select * from roominf ", null).Tables[0].DefaultView;
修改代码:
sqltext = "update roominf set weizhi='" + weizhi + "',mingzi='" + mingzi + "',zhonglei='" + leixing + "',mianji='" + mianji + "',zhuangxiu='" + zhuangxiu + "',sheshi='" + sheshi + "',yongtu='" + yongtu + "',jiage='" + jiage + "',zhuangtai='" + zhuangtai + "',beizhu='" + beizhu + "' where num='" + num + "'";
MySqlHelper.ExecuteNonQuery(MySqlHelper.Conn, CommandType.Text, sqltext, null);
roomdataGridView.DataSource = MySqlHelper.GetDataSet(MySqlHelper.Conn, CommandType.Text, "select * from roominf ", null).Tables[0].DefaultView;
删除关键代码:
sqltext = "delete from roominf where num='" + num + "'"; MySqlHelper.ExecuteNonQuery(MySqlHelper.Conn,CommandType.Text, sqltext, null);
roomdataGridView.DataSource=MySqlHelper.GetDataSet(MySqlHelper.Conn,CommandType.Text, "select * from roominf ", null).Tables[0].DefaultView;

3.3用户信息管理模块

可以按照身份证号、姓名、电话查询相应的用户信息
添加、修改、删除操作与房屋信息管理类似。在代码中设置了身份证号和电话号码,必须为数字的函数进行处理
在这里插入图片描述

3.4租赁信息管理模块

用于查询、记录房屋租赁信息。期中由于数据房屋编号和身份证号是外键,分别参照房屋信息表和用户信息表,所以房屋信息和身份证号使用了comobox控件完成选择,不允许手工输入。在这里插入图片描述

3.5水电费用管理模块

在这里插入图片描述
用于记录出租的房屋的水电费用信息。由电表数据来计算应缴费的金额,并存入数据库。
添加、修改、删除操作与房屋信息管理类似

3.6财务收支模块

在这里插入图片描述

3.7其他

在这里插入图片描述
Admin用户登陆后工具菜单中显示相应的菜单可以进入,用于进行系统管理员信息的修改和删除、若非admin管理员登陆,则不显示该菜单,只显示修改密码的
在这里插入图片描述
菜单。
其他设置模块用于设置水费电费等设置。仅与费用计算有关。

四、交流与联系

q:969060742 文档、完整代码、sql

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

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

相关文章

Hono——一个小型,简单且超快的Edges Web框架

Hono - [炎]在日语中的意思是火焰🔥 - 是一个小型,简单且超快的Edges Web框架。它适用于任何JavaScript运行时:Cloudflare Workers,Fastly ComputeEdge,Deno,Bun,Vercel,Netlify&…

【Leetcode】滑动窗口合集

这里写目录标题 209.长度最小的子数组题目思路代码 3. 无重复字符的最长子串(medium)题目思路 11. 最大连续 1 的个数 III题目思路 1658. 将 x 减到 0 的最⼩操作数题目思路代码 904. 水果成篮题目思路代码 438.找到字符串中所有字母的异位词题目思路代码…

政治与科技

作者:Hal Finney, 1994.1.2 今天政府可以禁书吗?当然不,至少在一个人将其输入或扫描到计算机中之后不能。技术成果是永久性的。政治手段只能作为一种战术武器,在技术解决方案到位之前阻止它们。如果你想改变世界,就不要…

Pytorch目标分类深度学习自定义数据集训练

目录 一,Pytorch简介; 二,环境配置; 三,自定义数据集; 四,模型训练; 五,模型验证; 一,Pytorch简介; PyTorch是一个开源的Python机…

python二次开发CATIA:为选中元素上色

先打开一个零件文档,然后用鼠标选中元素,再运行如下python程序: import win32com.client import pywintypes # 导入pywintypes模块 import random # 启动CATIA应用 catia win32com.client.Dispatch(CATIA.Application) catia.visible1try:…

在OpenWrt中配置使用FTP文件服务

安装:opkg install vsftpd 配置:vim /etc/vsftpd.conf 在其中增加一行:local_root/tmp 重启:service vsftpd restart

基于B2B平台的医疗病历交互系统

目录 前言 一、技术栈 二、系统功能介绍 医院管理 医院注册 医院文章 医生信息 医院注册 医疗安排 院区注册 医院公告 医院工作人员 病人病历 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 进入21世纪,计算机技术迅速向着网络化的、集…

pytorch最后一步安装失败显示false怎么办?

这两天在安装pytorch,可谓是吃了不少苦,安了整整一天才安装好。 本来按照安装步骤,一步一步都进行的很好,可是最后一步却显示false。 我的解决方案是,先更新显卡驱动(注意我的是英伟达显卡,安…

什么是向量嵌入?

一、说明 在所有关于生成式AI的讨论中,为生成式AI提供动力背后的概念可能有点压倒性。在这篇文章中,我们将重点介绍一个功能概念,它为人工智能的潜在认知能力提供支持,并为机器学习模型提供学习和成长的能力:向量嵌入。…

【C语言】浅谈代码运行效率及内存优化

【C语言】浅谈代码运行效率及内存优化 C语言作为一种高效率的编译语言 常用来写单片机等讲究时序性的设备 而只有代码优化得好 才能提高运行效率 当然这里的代码优化 并不是编译器优化 而是人为的代码习惯 文章目录 代码效率条件判断if else语句 抛弃边缘状态中断函数串口解析…

算法基础学习|排序

快速排序 模板 void quick_sort(int q[], int l, int r) {if (l > r) return;int i l - 1, j r 1, x q[l r >> 1];while (i < j){do i ; while (q[i] < x);do j -- ; while (q[j] > x);if (i < j) swap(q[i], q[j]);}quick_sort(q, l, j)&#xf…

希尔排序(C++实现)

文章目录 前言1. 基础概念2. 动图演示3. 代码实现4. 排序过程5. 效率分析6. 总结 前言 上篇文章讲了直接插入排序算法。 首先&#xff0c;在待排序的数组中&#xff0c;元素本身就是有序的情况下&#xff0c;就不需要移动任何元素&#xff0c;所以直接插入排序最好情况时间复…

Javascript 事件的动态绑定

动态绑定事件&#xff0c;是指在代码执行过程中&#xff0c;通过Javascript代码来绑定事件。这种技术可以大大增强网页的交互性和用户体验。上一期介绍的是通过事件监听器 EventListener 去实现元素颜色的变化。这一期将通过动态绑定方法去实现&#xff0c;对象.事件 匿名函数…

哈希/散列--哈希表[思想到结构]

文章目录 1.何为哈希?1.1百度搜索1.2自身理解1.3哈希方法/散列方法1.4哈希冲突/哈希碰撞1.5如何解决?哈希函数的设计 2.闭散列和开散列2.1闭散列/开放定址法2.2开散列/链地址法/开链法1.概念2.容量问题 3.代码实现[配备详细注释]3.1闭散列3.2开散列 1.何为哈希? 1.1百度搜索…

【工具】idea 设置自动渲染注释

前言 需求&#xff1a;自动渲染文档注释&#xff0c;看源码更加舒服。 已知 crtl alt Q 可以 设置 尝试搜索 render&#xff0c;发现有启用 “渲染文档注释” 的地方 坐标 &#xff1a; Settings -> Editor-> Appearance

CSS3与HTML5

box-sizing content-box&#xff1a;默认&#xff0c;宽高包不含边框和内边距 border-box&#xff1a;也叫怪异盒子&#xff0c;宽高包含边框和内边距 动画&#xff1a;移动translate&#xff0c;旋转、transform等等 走马灯&#xff1a;利用动画实现animation&#xff1a;from…

分布式锁:jvm本地加锁解决商品超卖的方案

一 分布式锁 1.1 分布式锁的作用 在多线程高并发场景下&#xff0c;为了保证资源的线程安全问题&#xff0c;jdk为我们提供了synchronized关键字和ReentrantLock可重入锁&#xff0c;但是它们只能保证一个工程内的线程安全。在分布式集群、微服务、云原生横行的当下&#xff…

python二次开发CATIA:根据已知数据点创建曲线

已知数据点存于Coords.txt文件如下&#xff1a; 8.67155477658819,20.4471021292557,0 41.2016126836927,20.4471021292557,0 15.9568941320569,-2.93388599177698,0 42.2181532110364,-6.15301746150354,0 43.0652906622083,-26.4843096139083,0 -31.6617679595947,-131.1513…

Java基本数据类型和变量

目录 一、基本数据类型 1.1 整型 1.1.1 byte 1.1.2 short 1.1.3 int 1.1.4 long 1.2 浮点型 1.2.1 float 1.2.2 double 1.3 字符型 1.4 布尔型 二、变量 2.1 变量的概念 2.2 语法格式 2.3 整型变量 2.3.1 整型变量 2.3.2 长整型变量 2.3.3 短整型变量 2.3.…