租房管理系统
引言
房屋租赁管理系统是管理房屋出租、出售信息资料而设计的信息管理系统,包含有后台数据库和前台应用程序系统两大部分,后台数据库要求数据的一.致性和完整性、安全性,用以储存单位工程文档资料及相关信息,前台应用程序系统要求应用程序功能完备、易于使用和界面友好等。
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到深夜时,你们会更开心。我觉得老师说的很对。
从这个大作业开始构建框架到最后的完成,花了好久天的时间,在整个开发的过程中遇到了很多的问题难题,然后自己就疯狂百度,看了大量的博文。在网上查找自己想要的信息还是有点难受的,因为网上会有大量的信息,查出来的信息中有一部分会有很多的问题,可能本来就是错误的或者这个解决方案并不适合自己当下的环境。从问题的出现,到自己网上查找解决方案,这可能要花费很长的时间,但是我个人觉得这是很值得的,因为这一过程锻炼了自己解决问题的能力,而不是当初出现了问题就避开这个难题,如果还是想当初那样遇到问题就逃避,这样自己是不会有进步的。不管是学习还是生活中,遇到困难,都应该勇敢的去面对。
最后送自己一句话:明天成功的自己会感谢今天努力的自己!