transign_form.cs
来自「第三方物流信息管理平台 1、数据库配置: 需要打开MS SQL SERVE」· CS 代码 · 共 561 行 · 第 1/2 页
CS
561 行
this.sqlDataAdapter1.UpdateCommand = this.sqlUpdateCommand1;
//
// sqlDeleteCommand1
//
this.sqlDeleteCommand1.CommandText = "DELETE FROM city_trans WHERE (城市编码 = @Original_城市编码) AND (城市名称 = @Original_城市名称 O" +
"R @Original_城市名称 IS NULL AND 城市名称 IS NULL)";
this.sqlDeleteCommand1.Connection = this.sqlConnection1;
this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_城市编码", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "城市编码", System.Data.DataRowVersion.Original, null));
this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_城市名称", System.Data.SqlDbType.VarChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "城市名称", System.Data.DataRowVersion.Original, null));
//
// sqlConnection1
//
this.sqlConnection1.ConnectionString = "initial catalog=logistics;integrated security=SSPI;persist security info=False;wo" +
"rkstation id=SOFT54;packet size=4096";
//
// sqlInsertCommand1
//
this.sqlInsertCommand1.CommandText = "INSERT INTO city_trans(城市名称) VALUES (@城市名称); SELECT 城市编码, 城市名称 FROM city_trans WH" +
"ERE (城市编码 = @@IDENTITY)";
this.sqlInsertCommand1.Connection = this.sqlConnection1;
this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@城市名称", System.Data.SqlDbType.VarChar, 50, "城市名称"));
//
// sqlSelectCommand1
//
this.sqlSelectCommand1.CommandText = "SELECT 城市编码, 城市名称 FROM city_trans";
this.sqlSelectCommand1.Connection = this.sqlConnection1;
//
// sqlUpdateCommand1
//
this.sqlUpdateCommand1.CommandText = "UPDATE city_trans SET 城市名称 = @城市名称 WHERE (城市编码 = @Original_城市编码) AND (城市名称 = @Ori" +
"ginal_城市名称 OR @Original_城市名称 IS NULL AND 城市名称 IS NULL); SELECT 城市编码, 城市名称 FROM c" +
"ity_trans WHERE (城市编码 = @城市编码)";
this.sqlUpdateCommand1.Connection = this.sqlConnection1;
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@城市名称", System.Data.SqlDbType.VarChar, 50, "城市名称"));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_城市编码", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "城市编码", System.Data.DataRowVersion.Original, null));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_城市名称", System.Data.SqlDbType.VarChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "城市名称", System.Data.DataRowVersion.Original, null));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@城市编码", System.Data.SqlDbType.Int, 4, "城市编码"));
//
// tDataset1
//
this.tDataset1.DataSetName = "tDataset";
this.tDataset1.Locale = new System.Globalization.CultureInfo("zh-CN");
this.tDataset1.Namespace = "http://www.tempuri.org/tDataset.xsd";
//
// transign_Form
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(704, 421);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.button3,
this.button2,
this.textBox5,
this.label5,
this.button1,
this.groupBox1});
this.Name = "transign_Form";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "transign_Form";
this.Load += new System.EventHandler(this.transign_Form_Load);
this.groupBox1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.tDataset1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private void transign_Form_Load(object sender, System.EventArgs e)
{
tDataset1.Clear();
sqlDataAdapter1.Fill(tDataset1);
}
private void set_pragh(int startverx,int endverx)
{
int mm=this.tDataset1.Tables[0].Rows.Count;//图的接点数,城市数量
int[,] pragh=new int[mm,mm];//距离矩阵
string fmu;int ff;//起点
string smu;int ss;//终点
string dmu;int dd;//距离
int[] d=new int[mm];//数据结构中的带权长度数组
bool [,] p=new bool[mm,mm];//数据结构中的最短路径存储数组
bool [] final=new bool[mm];//确定是否将某个点加入S集合
int min;
int k=0;
int n=0;
int q=0;
int[] result=new int[50];//存储运算结果的数组
string[] point=new string[50];
for(int i=0;i<mm;i++) //设置矩阵 初始化
for(int j=0;j<mm;j++)
pragh[i,j]=1000000;
for(int m=0;m<this.ds2.Tables[0].Rows.Count;m++)
{
fmu=this.ds2.Tables[0].Rows[m][1].ToString().Trim();
ff=int.Parse(fmu);
Console.Write(ff);
smu=this.ds2.Tables[0].Rows[m][2].ToString().Trim();
ss=int.Parse(smu);
dmu=this.ds2.Tables[0].Rows[m][3].ToString().Trim();
dd=int.Parse(dmu);
if(int.Parse(this.ds2.Tables[0].Rows[m][3].ToString().Trim())<1000000)
pragh[ff,ss]=dd;
}
for(int v=0;v<mm;v++)
{
final[v]=false;
d[v]=pragh[startverx,v]; //初始化
for(int w=0;w<mm;w++)
p[v,w]=false; //设空路径
if(d[v]<1000000)
{
p[v,startverx]=true;
p[v,v]=true;
}
}//for
d[startverx]=0;
final[startverx]=true;//v0顶点属于s集
//开始主循环,每次求得v0到某个v顶点的最短路径,并加v到s集
for(int i=1;i<mm;i++)
{
min=1000000;
for(int j=0;j<mm;j++)
if(!final[j])
if(d[j]<min)
{
k=j;
min=d[j];
}
final[k]=true;
for(int j=0;j<mm;j++)
if(!final[j]&&(min+pragh[k,j])<d[j])
{
d[j]=min+pragh[k,j];
for(int m=0;m<mm;m++)
p[j,m]=p[k,m];
p[j,j]=true;
}
}//for
//查找startverx到endverx在pragh中的位置,写入result数组
for(int m=0;m<mm;m++)
{
if(p[endverx,m])
{
result[n]=m;
n=n+1;
}
}
for(int i=0;i<n;i++)
for(int m=0;m<this.tDataset1.Tables[0].Rows.Count;m++)
if(int.Parse(this.tDataset1.Tables[0].Rows[m][0].ToString().Trim())==result[i])
{
point[q]=this.tDataset1.Tables[0].Rows[m][1].ToString().Trim();
q=q+1;
}
for(int j=q-1;j>0;j--)
{
if(point[j]!="")
{
shortpragh+=point[j]+"--";
}
}
shortpragh+=point[0];
this.textBox5.Text=shortpragh;
}
private void button1_Click(object sender, System.EventArgs e)
{
string startverx=this.comboBox1.Text.Trim();
string endverx=this.comboBox2.Text.Trim();
int start=0;
int end=0;
for(int i=0;i<this.tDataset1.Tables[0].Rows.Count;i++)
{
if(startverx==this.tDataset1.Tables[0].Rows[i][1].ToString().Trim())
{
start=int.Parse(this.tDataset1.Tables[0].Rows[i][0].ToString().Trim());
}
if(endverx==this.tDataset1.Tables[0].Rows[i][1].ToString().Trim())
{
end=int.Parse(this.tDataset1.Tables[0].Rows[i][0].ToString().Trim());
}
}
set_pragh(start,end);//调用最短路径的算法
}
private void button2_Click(object sender, System.EventArgs e)
{
if(this.textBox5.Text.Trim()==""||this.textBox1.Text.Trim()=="")
{
MessageBox.Show("未指定有效的编号或者未进行路线的设计,无法保存数据!!","提示");
}
else
{
int ddbh=int.Parse(this.textBox1.Text.Trim());
bool flog2=false;
string order_num=this.textBox1.Text.Trim();
string sendSQL22="select 订单编号 from short_pragh_xs";
temptable2=this.link2.SelectDataBase(sendSQL22);
for(int i=0;i<temptable2.Rows.Count;i++)
{
if(order_num==temptable2.Rows[i][0].ToString().Trim())
flog2=true;
}
if(flog2==false)
{
try
{
string sendvalues="('" + ddbh +"','"+ shortpragh +"')";
string strSQL22="insert short_pragh_xs(订单编号,最短路径)values"+sendvalues;
this.link2.UpdateDataBase(strSQL22);
}
catch
{
MessageBox.Show("数据保存失败","提示");
return;
}
MessageBox.Show("数据保存成功!","提示");
}
else
{
MessageBox.Show("此编号的最短路径已经存储过了!!","提示");
}
}
}
private void button3_Click(object sender, System.EventArgs e)
{
this.textBox5.Text="";
shortpragh="";
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?