城市地理信息系统
实验报告
化学实验报告单总流体力学实验报告观察种子结构实验报告观察种子结构实验报告单观察种子的结构实验报告单
一( 实验目的
为了更好地学习城市地理信息系统,进一步加深对地理信息系统的理解,自己动手做一个基于GIS的城市地理信息系统是必要的。这一方面锻炼自己实际操作的能力,另一方面可以让我们提前接触GIS的开发,了解开发的含义,为以后工作建立良好的基础。
二( 实验要求
(1)明确要开发的系统需要实现的功能,写出系统设计说明书,为以后开发指明方向。
(2)系统开发过程中主要运用的是C#语言,包括数据库的建立,代码的设计,系统的运行,测试。
(3)系统整体功能的完善,测试。
三. 实验内容
本组开发的系统是基于GIS的城市公交查询系统,名为邯郸公交查询系统。
(一)程序功能设计
此公交查询系统可实现的功能有:基本的功能----地图的放大,缩小,漫游,数据库信息数据的整加,改动和查询。
(二)用户界面设计以及数据库的设计
一个好的程序首先要有一个舒服的界面,体现人性化服务。一方面是颜色和图案的搭配,一方面是操作的简单快捷。由于本组做的是邯郸公交查询系统,所以很多界面都是依托在邯郸古城文化的基础上。
邯郸市地处河北省西南部,西依太行山脉,东接华北平原,与山西、山东、河南三省相邻。邯郸市是国家历史文化名城、中国优秀旅游城市、国家园林城市、中国成语典故之都和太极拳之乡。邯郸的公交非常方便,四通八达、无人售票。崭新的公交车车内车外都很干净。
此次公交查询系统主要包括一个主界面模块和三个查询模块。遵循美观实用的原则,设计的主界面模块。
主界面模块分为登录界面、注册界面和更改密码界面三部分。
1
1.主界面:
(1)登陆界面
即只有在软件中注册的用户才可以使用。如图1.1 登录界面采用的是会员模式,
登录界面主要有两个文本框,两个按钮和两个超链接组成,当用户第一次登录的时候,如果没有注册则程序便登录程序会提示用户名错误或者不存在。如图
1.2
2
图1.2
该功能的实现主要和数据库连接有关,数据库里会有已注册的用户信息。若输
入的信息在数据库里不存在,那么就会代码设计运行之后弹出以上界面。主要代
码如下:
private void button1_Click(object sender, EventArgs e)
{Stringbus=ConfigurationManager.ConnectionStrings["bus"].Connectio
nSt ring;
using (SqlConnection con = new SqlConnection(bus))
{
con.Open();
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "select * from 登录信息 where 用户名=@用户名
"; cmd.Parameters.Add(new SqlParameter("用户名
",txtusename.Text)); using (SqlDataReader reader =
cmd.ExecuteReader())
{if (reader.Read())
{
string dbpassward = reader.GetString(reader.GetOrdinal("密码")); if (dbpassward == txtpassward.Text)
{
check form = new check();
form.ShowDialog();
}
else
{ MessageBox.Show("密码错误或为空","提示
",MessageBoxButtons.OKCancel, MessageBoxIcon.Error); }
3
else
{MessageBox.Show("用户名错误或者不存在", "提示",
MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
}
}
private void btnno1_Click(object sender, EventArgs e) {
Application.Exit();
}
private void linkLabel2_LinkClicked(object sender,
LinkLabelLinkClickedEventArgs e)
{
repassward rpd = new repassward();
rpd.ShowDialog();
}
}
}
(2)注册界面:用户注册需要点击注册账号超链接,在弹出的界面中进行注册成为合法用户。在注册界面输入要申请的用户名和密码,并在确认密码文本框中输入相同的密码,确保密码正确。如图1.3
4
图1.3
主要的代码:
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "select * from 登录信息";
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
string Name = reader.GetString(reader.GetOrdinal("用户名"));
if (Name == txtname.Text)
{
MessageBox.Show("用户名已存在");
return; }}}
if (txtpass.Text != txtrepass.Text)
{
MessageBox.Show("密码输入不相同");
return;
}
cmd.CommandText = "insert into 登录信息(用户名,密码) values(@用户名,@密
5
码)";
cmd.Parameters.Add(new SqlParameter("用户名",txtname.Text));
cmd.Parameters.Add(new SqlParameter("密码", txtpass.Text));
cmd.ExecuteNonQuery();
MessageBox.Show("注册成功");
}
}
运行代码之后如下:
如果用户输入的用户名已存在,则程序会提醒用户名已存在,该功能是与数据库的连接有关。如果用户的确认密码与用户输入的密码不一致,则程序会提醒用户密码输入不相同。如图1.4
或者是下图:
图1.4
上面的密码识别功能是用VS中的代码实现的。
6
如果用户已经注册,只需要在文本框中输入正确的用户名和密码,点击登录按钮就可以登录成功进入查询界面。如图1.5
图1.5
登陆成功和数据库的连接密不可分。
(3)更改密码界面:同时程序具有密码重置功能,可以随时更改密码确保帐号安全。在主界面中点击更改密码超链接进入更改密码界面。主要代码如下: using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "select * from 登录信息";
using (SqlDataReader reader = cmd.ExecuteReader())
{while (reader.Read())
{
string Name = reader.GetString(reader.GetOrdinal("用户名"));
if (Name != txtnm.Text)
7
{
MessageBox.Show("用户名错误");
return;
}
else
{
string passward = reader.GetString(reader.GetOrdinal("密码"));
if (passward != txtoldpassward.Text)
{
MessageBox.Show("密码错误");
}
else
{
if(txtnewpassward.Text==null||txtspassward.Text==null)
{
MessageBox.Show("请填入新密码");
}
else if (txtnewpassward.Text != txtspassward.Text)
{
MessageBox.Show("确认密码错误");
}
}
如下图:
8
图 1.6
输入正确的用户名和旧密码,并且输入更改后的新密码和确认密码,点击确定按钮密码便更改完成。如果用户名或密码输入有误,提示如图 1.4
2.查询模块
该功能主要是数据库实现的,由于数据库中存有很多公交信息,我们要根据用户输入的信息筛选出其所需要的信息才是关键。在这个功能上我们遇到了不小的困难。困难出现在不知道功能如何实现,由于数据库方面掌握的比较少,花了很大精力研究有关实现查询功能的控件。查看相关资料,学习相关视频,最终才实现了查询功能。
首先进入查询界面 如图2.1
9
图 2.1
地图的基本功能:在图 2.1中可以看到在查询界面的左侧有一个工具栏,详细介绍下工具栏:
为放大工具,点击放大工具可以在地图中点击放大或者框选放大,以实现地图的准确查看。
为缩小工具,点击缩小工具可以在地图中点击缩小或者框选缩小,以实现地图的准确查看。
为漫游工具,点击后可以拖动地图到需要查看的坐标或位置。
10
为全屏显示,当用户点击该按钮时,地图实现全屏显示。
(1)线路查询模块:用户进入查询界面后,点击地图上面的
2 拉菜单中点击线路查询。如图2.
公交按钮,在下
图 2.2
在做线路查询功能时,遇到了不少困难,其中工程量最大的就是数据库信息的建立输入。
为了方便用户查询,我们将线路查询设计为可输入下拉框形式,用户可以在线路查询模块的下拉框中输入或在下拉选项中选择要查询的线路,如果是用户自己输入的线路系统会首先检查用户所输入的查询线路是否存在,如果不存在则给出出错提示,如果存在则在右侧的文本框中会自动显示起始站和终点站以及该线路上的所有站点并将线路和经过的站点显示在地图。下拉框也是一种控件。实验
11
功能的主要代码:
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "select * from bus ";
SqlDataReader read = cmd.ExecuteReader();
while (read.Read())
{
this.comboBox1 .Items.Add(read[1]);
}
}
private void 站点查询ToolStripMenuItem_Click(object sender, EventArgs e)
{
buttonX1.Visible = true;
label2.Visible = false;
label1.Visible = false ;
label1.Text = "位置";
zhandianchaxun = true;
textBox1.Visible = true;
comboBox1.Visible = false;
textBox2.Visible = false;
listBox1.Items.Clear();
panel1.Visible = true;
}
private void buttonX1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
if (textBox1 .Text =="")
{
MessageBox.Show("请输入具体位置");
return;
}
DataSet dset = new DataSet();
string s = comboBox1.Text;
string address = "server=.;database=邯郸公交;uid=‘sa’;pwd=abc1215"; using (SqlConnection con = new SqlConnection(address))
{
con.Open();
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "select * from bus ";
SqlDataAdapter dap = new SqlDataAdapter(cmd); dap.Fill(dset);
DataTable table = dset.Tables[0];
for (int i = 0; i < table.Rows.Count; i++)
12
{
DataRow dr = table.Rows[i]; for (int j = 0; j < 45;
j++) {
string hao = dr[j].ToString(); if (hao ==
textBox1.Text) {
listBox1.Items.Add(dr[1]); }
如图2.3
} } } } for (int j = listBox1.Items.Count - 1; j > 0; j--) { if
(listBox1.Items[j] == "")
{ listBox1.Items.RemoveAt(j); } } 13
图 2.3
实现该功能时最大的困难就是线路的显示,
(2)站点查询模块:用户进入系统后,在站点查询模块中有二种选择,第一
个是按站点的确切信息也就是完全匹配查询,此时用户要给出站点的全称,当点
击查询按钮后,系统会在数据库中检测该站点是否存在,如果存在,系统显示经
过这个站点的线路。比如:经过这个站点共有哪些线路,这些线路又各经过哪些
站点,第二个选择是站点的模糊查询,也就是不完全匹配,用户只需输入站点名
称和部分字符信息,系统便会给出与此相关的所有站点信息。主要代码是: using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "select * from bus where 线路=@xianlu ";
cmd.Parameters.Add("xianlu", s);
SqlDataReader read = cmd.ExecuteReader();
read.Read();
textBox1.Text = read["始发站"].ToString ();
14
textBox2.Text = read["终点站"].ToString();
read.Close();
private void 增删线路ToolStripMenuItem_Click(object sender, EventArgs e)
{
DataSet dataset = new DataSet();
string address = "server=.;database=邯郸公交;uid=‘sa’;pwd=abc1215";
using (SqlConnection con = new SqlConnection(address))
{
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "insert into bus(线路) values(@线路)"; cmd.Parameters.Add(new SqlParameter("线路
",comboBox1.Text)); }
}
}
运行之后如图
2.4
图 2.4
三( 实验
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
15
本次实验后,进一步了解了地理信息系统设计的基本原理与开发技术;通过自己动手开发,初步掌握地理信息系统的设计与开发方法。了解了地理信息系统设计的特点、方法、过程和实现技术;掌握了应用型 GIS 在系统
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
、总体设计、功能设计、GIS 数据库详细设计、应用模型分析、输入与输出设计、 系统实施、系统管理与维护等方面的基本知识;懂得如何进行应用型 GIS 的设计。对基于城市的型GIS 的设计过程有了一个较全面的了解,提高了应用型 GIS 设计的能力。
这次实验不仅使我们更加了解课本的内容,而且使我们对自己所学的专业的本质有了更近一层的理解。这次开发对我们自己也是一次挑战和学习的好机会,在开发系统的过程中我们遇到了不少问题,特别是第一次接触与就业有关的方面,我们发现自己的知识急缺,有很多知识都需要我们课下的自主学习。完成这个系统的开发使我们对以后的就业有了不少了体会,这次实验对我们的帮助很大,帮助我们找准了即将要努力的方向。在这次实验的过程中同学们的合作是最重要的,有很多不会的地方大都是大家一起讨论,研究。大家互相帮助,互相学习,一起进步~
16