当前位置: 首页 > news >正文

基于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到深夜时,你们会更开心。我觉得老师说的很对。

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

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

http://www.xdnf.cn/news/420211.html

相关文章:

  • 【C++】MSYS2:构建 C++ 开发环境
  • (vue)el-steps从别的页面跳转进来怎么实现和点击同样效果
  • day011-12-老男孩教育-用户管理与软件管理体系-习题
  • 18.Excel数据透视表:第1部分创建数据透视表
  • 2025java面试题整理
  • WebRTC技术EasyRTC嵌入式音视频通信SDK打造远程实时视频通话监控巡检解决方案
  • LabVIEW与PLC通讯程序S7.Net.dll
  • 国联股份卫多多与七腾机器人签署战略合作协议
  • 动态域名服务ddns怎么设置?如何使用路由器动态域名解析让外网访问内网?
  • 5.11作业
  • 5月12日作业
  • 文件同步2
  • 人事管理系统总结
  • 你对于JVM底层的理解
  • IBM BAW(原BPM升级版)使用教程第十四讲
  • 利用Backtrader实现回测策略的可视化与图表绘制
  • SpringBoot 3.X 开发自己的 Spring Boot Starter 和 SpringBoot 2.x 的区别
  • 1.6 关于static和final的修饰符
  • Spring Boot中HTTP连接池的配置与优化实践
  • Spring Spring Boot 常用注解整理
  • 服务器租用与托管注意事项有哪些
  • Shell脚本与Xshell的使用、知识点、区别及原理
  • 框架篇八股(自用)
  • Python常用函数全解析:列表、字典、集合操作指南
  • [免费]微信小程序医院预约挂号管理系统(uni-app+SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
  • 【图像处理基石】如何入门AI计算机视觉?
  • Mybatis-plus
  • 与智能体高效协作:Kimi交互逻辑探索与提示词设计实践【附kimi提示词合集下载】
  • 8天Python从入门到精通【itheima】-6~10
  • 嵌入式培训之数据结构学习(二)顺序表与单向链表