基于C#+SQL Server开发(WinForm)租房管理系统

租房管理系统

引言

房屋租赁管理系统是管理房屋出租、出售信息资料而设计的信息管理系统,包含有后台数据库和前台应用程序系统两大部分,后台数据库要求数据的一.致性和完整性、安全性,用以储存单位工程文档资料及相关信息,前台应用程序系统要求应用程序功能完备、易于使用和界面友好等。

20世纪以来,社会生产力迅速发展,科学技术突飞猛进,人们进行信息交流的深度与广度不断增加,信息量急剧增长,传统的信息处理与决策的手段已不能适应社会的需要,信息的重要性和信息处理问题的紧迫性空前提高了,面对着日益复杂和不断发展,变化的社会环境,特别是企业间日趋剧烈的竞争形势,一个人、一个企业要在现代社会中求生存,求发展,必须具备足够的信息和强有力的信息收集与处理手段。

系统分析与设计

需求分析

通过对任务的分析,可以发现运行的系统要能实现以下的功能:

  • 登录管理:实现以正确的员工号、密码和登录人员身份才能登陆系统的功能,正确登录之后才能进行之后的管理。
  • 房屋信息管理:包括添加新的房屋信息、修改房屋信息、查询房屋信息、删除房屋信息。
  • 用户信息管理:包括添加新的用户信息、修改用户信息、查询用户信息、删除用户信息。
  • 租赁信息管理:包括查询某个房屋的租赁状况、添加租赁关系、删除租赁关系。
  • 水电费用管理:包括水电费用的查询、添加、修改、删除。
  • 财务收支记录:添加公司的财务记录(不允许修改和删除)。
  • 收费项目设置:设置水费、电费、物业费、宽带费单价及财务余额。
  • 管理员信息维护/密码修改:若登陆用户为超级管理员(admin),则可以管理其他员工的信息,否则就只有修改自己密码的权限。

设计流程图:

数据库概念结构设计

E-R图

数据库的创建

管理员表:

房屋表:

用户信息表:

房屋租贷表:

财务报表:

收费标准表:

软件功能及相关技术介绍

登录模块

这个登录为管理员登录,登陆时将对账号密码进行验证,如果在管理员表里里面能够找到一条符合条件的纪录则登录成功。

点击登录按钮事件

复制代码
//点击登录按钮,开始登录
        private void loginbutton_Click(object sender, EventArgs e)
        {
            try
            {
                string username;
                //string sqltext1;
                username = usertextBox.Text;
                //password = textBoxpwd.Text;

                string sqlstr = "select * from 管理员表 where 账号=" + "'"
                        + usertextBox.Text.Trim() + "'"
                        + " and 密码=" + "'" + textBoxpwd.Text.Trim() + "'";
                DBAccess dbaccess = new DBAccess();
                SqlDataReader reader = dbaccess.GetReaderofCommand(sqlstr);

                if (!reader.HasRows)
                {
                    MessageBox.Show("账号错误");
                }
                else
                {
                    reader.Read();
                    主界面 mainform = new 主界面(username);
                    //this.Close();
                    this.Hide();
                    mainform.Show();
                }
            }
            catch (Exception)
            {
                MessageBox.Show("登录失败!");
            }
            
        }

主界面模块

登录成功来到主界面,界面上会有(房屋信息管理,用户信息管理,房贷信息管理,水电费管理,财务收支管理,收费标准设置,密码修改,管理员信息管理)功能。

房屋信息管理模块

在房屋信息管理模块管理员可以对用用户的信息进行添加,修改删除等操作。

复制代码
private void button1_Click(object sender, EventArgs e)
        {
            string chaxunfangshi = "身份证号";  // 用户信息查询方式
            if (comboBox1.SelectedItem.ToString().Equals("身份证号"))
                chaxunfangshi = "身份证号";
            else if (comboBox1.SelectedItem.ToString().Equals("姓名"))
                chaxunfangshi = "姓名";
            else if (comboBox1.SelectedItem.ToString().Equals("电话"))
                chaxunfangshi = "电话";
            else if(comboBox1.SelectedItem.ToString().Equals("性别"))
                chaxunfangshi = "性别";
            try
            {
                if (textBox1.Text.Trim() == "")
                {
                    SqlCommand = "select * from 用户信息表 ";  //查询所有结果
                }
                else
                {
                    SqlCommand = "select * from 用户信息表 where " + chaxunfangshi + " like '%" + textBox1.Text + "%'"; // 按条件查询
                }

                // 将查询结果放到 是视图表中
                dataset = dbAccess.GetDataset(SqlCommand, "用户信息表");
                userdataGridView.DataSource = dataset.Tables[0];
            }
            catch (Exception)
            {
                MessageBox.Show("查询失败!");
            }
        }
复制代码
private void buttonadd_Click(object sender, EventArgs e)
        {
            try
            {
                string sfzid, username, xingbie, dianhua;
                sfzid = textBoxsfzid.Text;
                username = textBoxname.Text;
                xingbie = comboBoxsex.SelectedItem.ToString();
                dianhua = textBoxdianhua.Text;
                if ((!IsNum(sfzid)) || (!IsNum(dianhua)))
                {
                    MessageBox.Show("身份证号或电话号码不是数字!");
                }
                else
                {
                    SqlCommand = "insert into 用户信息表(身份证号,姓名,性别,电话)" +
                        "values('" + sfzid + "','" + username + "','" + xingbie + "','" + dianhua + "')";
                    dbAccess.GetSQLCommand(SqlCommand);  // 添加用户信息到数据库
                    ShowData(); // 将用户信息信息全部显示到界面上
                }
            }
            catch (Exception)
            {
                MessageBox.Show("该用户已存在!");
            }
        }
复制代码
// 点击单元格 将数据加载到相应的控件中
        private void userdataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            int row = 0; //行号
            if (userdataGridView.RowCount > 0)
            {
                // 填充文本框内容
                row = userdataGridView.CurrentCell.RowIndex;
                // 获得当前所点击的行数
                textBox3.Text = userdataGridView[1, row].Value.ToString();
                comboBox2.Text = userdataGridView[2, row].Value.ToString();
                textBox2.Text = userdataGridView[3, row].Value.ToString();

                textBox18.Text = userdataGridView[0, row].Value.ToString(); 
                // 将身份证号放到删除的身份证号控件中去
                textBox4.Text = userdataGridView[0, row].Value.ToString(); 
                // 将身份证号放到修改的身份证号控件中去
            }
        }
复制代码
// 删除用户信息
        private void button4_Click(object sender, EventArgs e)
        {
            try
            {
                string sfzid;
                sfzid = textBox18.Text;
                SqlCommand = "delete from 用户信息表 where 身份证号='" + sfzid + "'";
                dbAccess.GetSQLCommand(SqlCommand);  // 删除用户信息到数据库
                ShowData(); // 将用户信息信息全部显示到界面上
            }
            catch (Exception)
            {
                MessageBox.Show("要删除的用户不存在!");
            }
        }

用户信息管理模块

这一部分处理代码和前的差不的,所以就不细讲了。

租贷信息管理模块

水电费信息管理模块

水电管理是用来纪录用户在入住后的水电费缴纳纪录,上面的"需交金额"是通过收费标准所设置的值来进行计算的,并且会将更新后的管理员余额。

复制代码
// 添加水电费纪录
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                string danhao, roomnum, predianbiao, dianbiao, preshuibiao, shuibiao, jine;
                danhao = textBox2.Text;
                roomnum = comboBox2.SelectedItem.ToString();
                predianbiao = textBox3.Text;
                dianbiao = textBox4.Text;
                preshuibiao = textBox5.Text;
                shuibiao = textBox6.Text;

                // 通过水费价格和水费价格,计算本次金额
                jine = ((double.Parse(dianbiao) - double.Parse(predianbiao)) * dianprice + (double.Parse(shuibiao) - double.Parse(preshuibiao)) * shuiprice).ToString();
                textBox11.Text = jine; // 将金额写到文本控件中

                // 更新全局余额
                DBAccess.Balance = DBAccess.Balance + double.Parse(jine);

                SqlCommand = "insert into 水电费表 values('" + danhao + "','" + roomnum + "','" 
                    + predianbiao + "','" + dianbiao + "','" + preshuibiao + "','" + shuibiao + "','" + jine + "')";
                dbAccess.GetSQLCommand(SqlCommand); //插入水电费纪录
                ShowData();  // 将水电费信息全部显示到界面上
            }
            catch (Exception)
            {
                MessageBox.Show("此订单已存在!");
            }
        }

财务收支管理模块

这一部分可以用来纪录一些其他的收支纪录,同样这里的操作将会对管理员的总余额进行修改。

管理员信息管理模块

收费标准设置模块

复制代码
// 初始化界面
        private void Othersetting_Load(object sender, EventArgs e)
        {
            try
            {
                // 更新当前余额到数据库
                SqlCommand = "update 收费标准表 set 余额='" + DBAccess.Balance + "'where 标准方案号='1'";
                dbAccess.GetSQLCommand(SqlCommand); // 修改收费标准

                string shuiprice, dianprice, wangprice, wuyeprice, yue;
                SqlCommand = "select * from 收费标准表 where 标准方案号='1'";
                SqlDataReader reader = dbAccess.GetReaderofCommand(SqlCommand);
                // 给标准收费赋值
                while (reader.Read())
                {
                    shuiprice = reader[1].ToString();
                    dianprice = reader[2].ToString();
                    wangprice = reader[3].ToString();
                    wuyeprice = reader[4].ToString();
                    textBox1.Text = shuiprice;
                    textBox2.Text = dianprice;
                    textBox3.Text = wangprice;
                    textBox4.Text = wuyeprice;
                    textBox5.Text = DBAccess.Balance + " 元";
                }
                
            }
            catch (Exception)
            {
                MessageBox.Show("收费标准初始化失败");
            }
        }

管理员密码更改模块

这里需要注意的是,需要输入原密码和新密码,只有原密码正确时才能修改自己的密码,这个实现只需要在数据库中查找是否密码正确即可。

总结

我觉得这门课最后考察通过大作业的形式真的特别的好,为什么这么说呢,感觉这几天学到的东西特别的多。我平常看书写作业最晚也就到12点的样子,就上床睡觉了,但是课程设计的编程就写的特别的投入,感觉写出来很有成就感,我记得我前几天晚上改bug改到了凌晨3点,虽然最后还是没有改出来,在深夜改代码的过程中我精神特别的好,那个时候想起了计算机网络老师说的一句话:你们打游戏到深夜很开心,当你们改代码bug到深夜时,你们会更开心。我觉得老师说的很对。

从这个大作业开始构建框架到最后的完成,花了好久天的时间,在整个开发的过程中遇到了很多的问题难题,然后自己就疯狂百度,看了大量的博文。在网上查找自己想要的信息还是有点难受的,因为网上会有大量的信息,查出来的信息中有一部分会有很多的问题,可能本来就是错误的或者这个解决方案并不适合自己当下的环境。从问题的出现,到自己网上查找解决方案,这可能要花费很长的时间,但是我个人觉得这是很值得的,因为这一过程锻炼了自己解决问题的能力,而不是当初出现了问题就避开这个难题,如果还是想当初那样遇到问题就逃避,这样自己是不会有进步的。不管是学习还是生活中,遇到困难,都应该勇敢的去面对。

最后送自己一句话:明天成功的自己会感谢今天努力的自己!

相关推荐
码小跳4 分钟前
Halcon案例(一):C#联合Halcon识别路由器上的散热孔
图像处理·c#
巨龙之路25 分钟前
什么是时序数据库?
数据库·时序数据库
蔡蓝30 分钟前
binlog日志以及MySQL的数据同步
数据库·mysql
是店小二呀1 小时前
【金仓数据库征文】金融行业中的国产化数据库替代应用实践
数据库·金融·数据库平替用金仓·金仓数据库2025征文
炒空心菜菜2 小时前
SparkSQL 连接 MySQL 并添加新数据:实战指南
大数据·开发语言·数据库·后端·mysql·spark
多多*2 小时前
算法竞赛相关 Java 二分模版
java·开发语言·数据结构·数据库·sql·算法·oracle
爱喝酸奶的桃酥2 小时前
MYSQL数据库集群高可用和数据监控平台
java·数据库·mysql
数据库幼崽2 小时前
MySQL 8.0 OCP 1Z0-908 61-70题
数据库·mysql·ocp
神仙别闹3 小时前
基于C#+MySQL实现(WinForm)企业设备使用信息管理系统
开发语言·mysql·c#
czhaii3 小时前
PLC脉冲位置 单片机跟踪读取记录显示
开发语言·c#