目录
摘要............................................................................................................................. 2
1.概述......................................................................................................................... 3
2.课程设计任务的需求分析.................................................................................... 3
2.1设计任务..................................................................................................... 3
2.2设计要求..................................................................................................... 3
2.3需求描述的规范文档................................................................................. 3
3.1概念结构设计工具(E-R模型).................................................................. 4
5.数据库物理设计与实施...................................................................................... 6
5.1数据库应用的硬件、软件环境介绍...................................................... 6
5.2建库建表.................................................................................................... 6
5.3加载测试数据............................................................................................ 6
7.查询截图(包括程序流程图,数据库链接方法).......................................... 13
7.5 更改界面.................................................................................................. 18
8.收获、体会、建议.............................................................................................. 19
小区物业管理系统是现如今各大居住地区常见的计算机信息管理系统。由于我国人口数量基数庞大,小区的数量也在不断的增加,在这样一个社会,小区管理系统变得日益抢手,管理人员对平日里繁琐的管理工作,可以通过小区管理系统来有效的管理小区的各种事务,包括对楼宇、楼房、管理员、业主的信息管理,还有对物业信息进行管理等。还能在第一时间里查询到相关的信息,不用再去翻记事本,迅速准确的完成各住户的日常维修服务,快速打印出报表。在建立与实现小区物业管理系统时,应进行功能划分,能够由数据库管理系统完成的功能应尽可能由数据库管理系统守成,这样才能够充分发挥数据库管理系统高效、完全、可靠、便捷的性能,减少编程人员的工作量
课程设计选题目为小区物业管理系统,以mysql作为后台数据库,以C#(Visual Studio 2017)高级语言作为前台开发工具,完成一个数据库应用系统的设计全过程,包括需求分析、数据库设计、数据库建立、数据输入、应用系统的设计和开发、用户界面的设计和实现、用户界面与数据库的连接对数据库中的数据进行增删改查功能的实现、系统安装和调试等.
2.课程设计任务的需求分析
2.1设计任务
选择设计一个具有一定实际意义,界面简洁,功能齐全的小区物业管理系统。
2.2设计要求
现代生活方式下,小区有多栋住宅,每栋楼有多套物业(房屋),衍生了物业管理公司,小区物业管理系统就是借助计算机对小区物业情况提供全面管理服务。
系统的主要管理对象:
·楼宇信息:楼号、户数、物业费标准。
·房屋信息:楼号、房号、面积、楼层等。
·业主信息:身份证号、姓名、性别、工作单位、电话、家庭人口等。
·管理员:工号、姓名、性别、年龄、电话等。
·物业管理情况:日期、业主、要求、处理情况、负责人。
·物业费信息:楼号、房号、缴费日期、起止日期、金额等。
每栋楼物业费标准相同,不同楼物业费标准可以不同;每栋楼有多位管理员参与管理,每个管理员可以管理多栋楼宇;每位业主可以拥有多套房屋,每套房屋只能有一个业主。业主的物管需求要进行登记,要有专人负责处理,并记录处理情况(满意、不满意)。
系统应该可以进行方便的信息登记、调整、查询、统计等工作。
2.3需求描述的规范文档
·楼宇信息:楼号、户数、物业费标准。
·房屋信息:楼号、房号、面积、楼层等。
·业主信息:身份证号、姓名、性别、工作单位、电话、家庭人口等。
·管理员:工号、姓名、性别、年龄、电话等。
·物业管理情况:日期、业主、要求、处理情况、负责人。
·物业费信息:楼号、房号、缴费日期、起止日期、金额等。
系统的基本功能:
1)信息登记(增加);
2)调整(删除、修改);
3)查询信息(查);
3.概念结构设计
3.1概念结构设计工具(E-R模型)
4. 逻辑结构设计
4.1关系数据模式
在这个数据库中,四个关系模式是:
admin(ano,aname,sex,age,phone)
build(bnum,hum,price,aname)
house(bnum,fnum,area,louceng,yname)
yezhu(shenfenz,yname,sex,gzSpace,phone,family)
这四个关系式子组成了小区物业管理系统的数据库模式,这三个关系组成了小区物业管理系统的关系数据库;关系admin的主键是ano,关系build的主键是bnum,关系house的主键是bnum,关系yezhu的主键是shenfenz,关系admin和关系build有一个共同属性aname,在表build中,aname是外键,关系build和关系house中有共同属性bnum,关系house和关系yezhu中有共同属性yname,在表house中,yname是外键。
5.数据库物理设计与实施
5.1数据库应用的硬件、软件环境介绍.
本程序基于Microsoft Visual Studio 2017、MySQL Workbench 8.0 CE开发,采用C#语言和SQL语言实现。
5.3 建立数据库建表、加载数据
6.数据操作要求及实现
6.1查询
private void button1_Click(object sender, EventArgs e)
{
if (comboBox2.SelectedIndex == 0)
{
String strcon = "server=localhost;database=login;user=root;password=747298;SslMode=none;charset=utf8";
MySqlConnection con = new MySqlConnection(strcon);
try
{
con.Open();
MySqlCommand com = con.CreateCommand();
com.CommandText = "select * from login.build where bnum='" + textBox1.Text + "'";
MySqlDataReader reader = com.ExecuteReader();
while (reader.Read())
{
string no = reader.GetString(reader.GetOrdinal("bnum"));
string hnum = reader.GetString(reader.GetOrdinal("hnum"));
string price = reader.GetString(reader.GetOrdinal("price"));
string admin = reader.GetString(reader.GetOrdinal("aname"));
textBox2.Text += no.ToString() + ' ' + hnum.ToString() + ' ' + price.ToString()+ ' ' + admin.ToString() + ' ';
break;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString() + "打开数据库失败");
}
}
if (comboBox2.SelectedIndex == 1)
{
String strcon = "server=localhost;database=login;user=root;password=747298;SslMode=none;charset=utf8";
MySqlConnection con = new MySqlConnection(strcon);
try
{
con.Open();
MySqlCommand com = con.CreateCommand();
com.CommandText = "select * from login.house where bnum='" + textBox1.Text + "'";
MySqlDataReader reader = com.ExecuteReader();
while (reader.Read())
{
string no = reader.GetString(reader.GetOrdinal("bnum"));
string fnum = reader.GetString(reader.GetOrdinal("fnum"));
string area = reader.GetString(reader.GetOrdinal("area"));
string louceng = reader.GetString(reader.GetOrdinal("louceng"));
string yname = reader.GetString(reader.GetOrdinal("yname"));
textBox2.Text += no.ToString() + ' ' + fnum.ToString() + ' ' + area.ToString() + ' '+louceng.ToString()+' ' + yname.ToString() + ' ';
break;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString() + "打开数据库失败");
}
}创建MySqlDataReader对象来读取信息,用一个while循环把查询到的信息全部输出到textbox中显示,当无法找到查询的数据或已没有匹配的数据时,结束循环。用catch获取异常,出现错误时会出现错误提示,对写程序时有很大帮助。
6.2添加
private void checkNull()
{
con.Open();
if (textBox1.Text == "")
{
MessageBox.Show("请输入身份证号码!");
return;
}
else if (textBox2.Text == "")
{
MessageBox.Show("请输入姓名!");
return;
}
else if (comboBox1.SelectedIndex < 0)
{
MessageBox.Show("请选择性别!");
return;
}
else if (textBox3.Text == "")
{
MessageBox.Show("请输入年龄!");
return;
}
else if (textBox4.Text == "")
{
MessageBox.Show("请输入手机号码!");
return;
}
string sql = "select * from login.admin where ano = '" + textBox1.Text.Trim() + "'";
MySqlCommand com = new MySqlCommand(sql, con);
if (Convert.ToInt32(com.ExecuteScalar()) < 0)
{
MessageBox.Show("该管理员已存在!");
return;
}
sql = "insert into login.admin (ano,aname,sex,age,phone ) values( '" + textBox1.Text.Trim() + "' , '" + textBox2.Text.Trim() +
"' , '" + comboBox1.Text.Trim() + "' , '" + textBox3.Text.Trim() + "' , ' " + textBox4.Text.Trim() + "')";
MySqlCommand cmd = new MySqlCommand(sql,con);
cmd.ExecuteNonQuery();
MessageBox.Show("请刷新界面查看数据");
}
private void button1_Click(object sender, EventArgs e)
{
checkNull();
this.Close();
}
利用一个checkNull函数来实现添加的功能,确定按钮的click事件即为调用checkNull方法与关闭当前页面,在checkNull方法中,会检测是否有没输入的信息,会有报错提示然后退出页面,不添加到数据库表中,当信息全部填上后,会有相应的语句判断主键的值是否唯一,比如这里的ano为管理员的编号,管理员编号唯一,先把select语句封装到string对象sql中,再通过 MySqlCommand com = new MySqlCommand(sql,con);传到数据库进行读取,如果出现重复编号,显示错误提示,并关闭当前页面。当一切都符合条件时,才会执行下面的插入语句。
6.3修改
else if (comboBox4.SelectedIndex == 3)
{
string s = textBox5.Text;
updateg a = new updateg(s);
a.ShowDialog();
}
当按下调整按钮后,会根据输入的信息与选择的表进行跳转,此处为跳转到更新管理员的界面。
public updateg()
{
InitializeComponent();
}
string s1;
public updateg(string s)
{
s1 = s;
InitializeComponent();
}
public static String strcon = "server=localhost;database=login;user=root;password=747298;SslMode=none;charset=utf8";
MySqlConnection con = new MySqlConnection(strcon);
private void checkNull()
{
con.Open();
if (textBox1.Text == "")
{
MessageBox.Show("请输入姓名!");
return;
}
else if (comboBox1.SelectedIndex < 0)
{
MessageBox.Show("请输入性别!");
return;
}
else if (textBox2.Text == "")
{
MessageBox.Show("请输入年龄!");
return;
}
else if (textBox3.Text == "")
{
MessageBox.Show("请输入手机!");
return;
}
String sql = "update login.admin set aname = '" + textBox1.Text.Trim() +
"' ,sex='" + comboBox1.Text.Trim() + "', age = '" + textBox2.Text.Trim() + "', phone = '" + textBox3.Text.Trim() + "' where ano = '" + s1 + "' ";
MySqlCommand cmd = new MySqlCommand(sql, con);
cmd.ExecuteNonQuery();
MessageBox.Show("请刷新界面查看数据");
}
private void button1_Click(object sender, EventArgs e)
{
checkNull();
this.Close();
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
}
给了该页面一个有参数的构造方法,由上一页面传值给该页面的形参,形参的值给到s1对象,再把值传到update语句中的条件where ano=中,此处ano=s1,即是上一个页面传进来的值,实现了一个页面传值,再把需要修改的信息填上,同样出现不填的信息会出现错误提示并退出页面。
6.4删除
if (comboBox3.SelectedIndex == 0)
{
String strcon = "server=localhost;database=login;user=root;password=747298;SslMode=none;charset=utf8";
MySqlConnection con = new MySqlConnection(strcon);
con.Open();
string sql = "delete from login.build where bnum='" + textBox3.Text + "'";
MySqlCommand cmd = new MySqlCommand(sql, con);
cmd.ExecuteNonQuery();
MessageBox.Show("请刷新界面查看数据");
}
if (comboBox3.SelectedIndex == 1)
{
String strcon = "server=localhost;database=login;user=root;password=747298;SslMode=none;charset=utf8";
MySqlConnection con = new MySqlConnection(strcon);
con.Open();
string sql = "delete from login.house where bnum= '" + textBox3.Text + "'and fnum='" + textBox4.Text + "'";
MySqlCommand cmd = new MySqlCommand(sql, con);
cmd.ExecuteNonQuery();
MessageBox.Show("请刷新界面查看数据");
}
if (comboBox3.SelectedIndex == 2)
{
String strcon = "server=localhost;database=login;user=root;password=747298;SslMode=none;charset=utf8";
MySqlConnection con = new MySqlConnection(strcon);
con.Open();
string sql = "delete from login.yezhu where shenfenz='" + textBox3.Text + "'";
MySqlCommand cmd = new MySqlCommand(sql, con);
cmd.ExecuteNonQuery();
MessageBox.Show("请刷新界面查看数据");
}
if (comboBox3.SelectedIndex == 3)
{
String strcon = "server=localhost;database=login;user=root;password=747298;SslMode=none;charset=utf8";
MySqlConnection con = new MySqlConnection(strcon);
con.Open();
string sql = "delete from login.admin where ano='" + textBox3.Text + "'";
MySqlCommand cmd = new MySqlCommand(sql, con);
cmd.ExecuteNonQuery();
MessageBox.Show("请刷新界面查看数据");
}
删除语句最为简单,也是通过获取textbox中的值来赋值给主键,把删除语句封装到MySqlCommand对象中,实现删除功能。
7.查询截图
数据库链接方法
引用插件MySQL.DATA
using System.Windows.Forms;
连接数据库语句 public static
String strcon = "server=localhost;database=login;user=root;password=123456;SslMode=none;charset=utf8";
MySqlConnection con = new MySqlConnection(strcon);
con.Open();
1.登录界面
- 用户界面
3.添加数据
4.数据库显示数据
5.更改
项目文件
8.收获、体会、建议
经过这次的数据库程序设计的完成,我从一无所知到对C#中界面的控件使用更加熟练,更加了解其功能,知道该如何调用数据库的数据,对C#中的方法代码有更深的了解,这对其他语言有一定的促进作用。一开始,很担心这次的大作业,因为要用到C#而大家又从来没接触过,在制作的过程中也碰到了许多难题,不懂得以及从未接触过的知识点,比如:如何用c#连接mysql数据库,怎样输入输出,如何跨页面传值。于是通过百度查找学习资料,翻阅csdn阅读他人分享的博客资料,不断尝试。到了现在,我也从这次的大作业中学习到了很多,更加深刻意识到了自学的重要性。
SQL最大的特点就是非过程化,只要输入正确的命令就可以查找所需的数据,不像C语言要查询必须要设计完整的算法。除了C#,我对MYSQL的工具使用也更为的熟练,对数据库中的增、删、改、查等4个指令运用的更为熟练,这对之后的更为深入的数据库操作打下了更为深厚的基础。通过对数据库的学习,我也明白了各行各业对数据库的需要越来越强。如果能够认真学好它将来必有成就。第一次接触SQL语言,感觉并不是很难,基本上按老师的步骤来练习很轻松。慢慢的后来到了表单查询和连接查询,觉得越来越困难。更加让我体会到了人需要不断学习进步,自己不懂得东西还多着,要靠自己不断得去挖掘和尝试,看懂别人的代码可能需要一个小时时间,可自己写出一段好的代码可能需要花费好几倍的精力,除了思考还要多动手当个好的“键盘侠”。
我也发现了自己还存在的不足,对系统的开发完善还有很长的路要走,还用很多东西要去了解,熟悉,这次的系统中也还存在有很多BUG,还没有办法自己独立进行对其完善,要通过自己今后的更深入学习,探究,思考,想出对其进行完善。功能齐全,用户界面简单,易操作,但未能全部实现在窗体软件中显示,还可以改进。
时间:2019.4
9.主要参考文献
1、《数据库系统概论》(第5版) 萨师煊、王珊编著;清华大学出版社
2、《C#程序设计及应用教程》;马俊、邓居英、杨湖;人民邮电出版社
3、《数据库原理及其应用教程(第三版)》;黄德才主编;科学出版社
CSDN博客 百度搜索引擎