datagridview 数据处理方法 修改 删除 添加 下拉类表

datagridview 数据处理方法 修改 删除 添加 下拉类表
datagridview 数据处理方法 修改 删除 添加 下拉类表

Datagridview的三种处理数据方法

一、第一种方法

常规方法,在窗口界面上放入一个datagridview,在放各个textbox,然后通过选取对应的记录,修改textbox的值,所有的操作都在一个界面上进行,没什么多说的,大部分方法都这么做

二、弹出窗口方式

此方式,通过双击记录,或者是利用按钮操作,倾向于用按钮方式,一次修改或添加、删除一条记录。利用窗口传值方式,实现数据输入、输出,datagridview的显示跟新。

特点:

1。父子窗口之间的双向传值,很有参考意义

2.父子窗体监combox绑定数据表条件下,双向传值,很多资料接收的都不是很清晰,

主要是利用了combox.findstring()这个方法,传递回index,利用index得到value,好绕啊,废了很大劲。

3.datagridview修改、添加数据下,不用重新访问数据库,而是直接显示修改的结果,

这样感觉反应速度快,很有意义。

具体如下

修改界面

添加界面

主窗口代码

using System;

using System.Collections.Generic;

using https://www.360docs.net/doc/165651629.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using https://www.360docs.net/doc/165651629.html,monClass;

namespace WDZ

{

public partial class frmMain2 : Form

{

public frmMain2()

{

InitializeComponent();

}

private void frmMain2_Load(object sender, EventArgs e)

{

this.dataGridView1.AutoSizeColumnsMode =

System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; //表格自适应宽度

//DataCon datacon = new DataCon();

//加载数据

DataOperate dataoperate = new DataOperate();

string strSql = "select * from sql3 ";

DataSet ds = dataoperate.getDs(strSql, "sql3");

dataGridView1.DataSource = ds.Tables[0];

//设置datagridview属性

dataGridView1.Columns[0].ReadOnly = true; //列不可编写

dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; //选择全行

//dataGridView1.ReadOnly = true; //只读

dataGridView1.DefaultCellStyle.SelectionBackColor = Color.YellowGreen; //选择的行为颜色

//最后一行的星号行不显示,不允许用户添加数据

dataGridView1.AllowUserToAddRows = false;

//*************************

//加载下拉列表框

BindSex(); // 绑定性别下拉列表框

cmb_Temp.Visible = false; // 设置下拉列表框不可见

// 添加下拉列表框事件

cmb_Temp.SelectedIndexChanged += new

EventHandler(cmb_Temp_SelectedIndexChanged);

// 将下拉列表框加入到DataGridView控件中

this.dataGridView1.Controls.Add(cmb_Temp);

}

///

//**************************************************

//datagridview中下拉类表框的绑定

private ComboBox cmb_Temp = new ComboBox();

///绑定性别下拉列表框

///

private void BindSex()

{

DataTable dtSex = new DataTable();

DataOperate dataoperate = new DataOperate();

string strSql = "select * from user_class ";

DataSet ds = dataoperate.getDs(strSql, "user_class");

dtSex = ds.Tables[0];

cmb_Temp.ValueMember ="user_class_id"; //设置隐含的形式显示数值,起对应一定的名称

//cmb_Temp.ValueMember = "user_class";

cmb_Temp.DisplayMember = "user_class";

cmb_Temp.DataSource = dtSex;

cmb_Temp.DropDownStyle =ComboBoxStyle.DropDownList; //只能选择,不能写入//cmb_Temp.DropDownStyle =ComboBoxStyle.DropDown; //可以写入

// cmb_Temp.DropDownStyle = ComboBoxStyle.Simple;

}

///

// 当用户选择下拉列表框时改变DataGridView单元格的内容

private void cmb_Temp_SelectedIndexChanged(object sender, EventArgs e)

{

if (dataGridView1.CurrentCell != null)

{

DataRowView myrowview = (DataRowView)cmb_Temp.SelectedItem;

//dataGridView1.CurrentCell.Value = cmb_Temp.SelectedValue.ToString(); dataGridView1.CurrentCell.Value = myrowview[2].ToString();//选取的文本 dataGridView1.CurrentCell.Tag = cmb_Temp.SelectedValue; //选取的编码

// MessageBox.Show("text:" + cmb_Temp.SelectedText + "-item:" +

cmb_Temp.SelectedItem.ToString() + "-value:" +

cmb_Temp.SelectedValue.ToString()+"-index:"+cmb_Temp.SelectedIndex.ToString());

// DataRowView myrowview = (DataRowView)cmb_Temp.SelectedItem;

//

MessageBox.Show(myrowview[0].ToString()+"--"+myrowview[1].ToString()+"--"+myrowview[2]. ToString()); //获得对应的value和text

}

}

private void dataGridView1_CurrentCellChanged_1(object sender, EventArgs e) {

// 当用户移动到性别这一列时单元格显示下拉列表框

try

{

if (dataGridView1.CurrentCell.ColumnIndex == 3)

{

Rectangle rect =

dataGridView1.GetCellDisplayRectangle(dataGridView1.CurrentCell.ColumnIndex, dataGridView1.CurrentCell.RowIndex, false);

string sexValue = dataGridView1.CurrentCell.Value.ToString();

//MessageBox.Show(sexValue);

cmb_Temp.Text = sexValue;

cmb_Temp.Left = rect.Left;

cmb_Temp.Top = rect.Top;

cmb_Temp.Width = rect.Width;

cmb_Temp.Height = rect.Height;

cmb_Temp.Visible = true;

}

else

{

cmb_Temp.Visible = false;

}

}

catch

{

}

}

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)

{

if (e.ColumnIndex == 0)

{

DataGridView dgv = sender as DataGridView;

if (dgv.Rows[e.RowIndex].Cells[1].Value != null)

{

string id = dgv.Rows[e.RowIndex].Cells[0].Value.ToString();

string user_id = dgv.Rows[e.RowIndex].Cells[1].Value.ToString();

string user_password=

dgv.Rows[e.RowIndex].Cells[2].Value.ToString();

string user_class = dgv.Rows[e.RowIndex].Cells[3].Value.ToString();

string user_name = dgv.Rows[e.RowIndex].Cells[4].Value.ToString();

string user_sex = dgv.Rows[e.RowIndex].Cells[5].Value.ToString();

string outUserid,

outUserpassword,outUserclass,outUsername,outUsersex;

DialogResult myresult;

this.ShowDialogForm(id, user_id, user_password, user_class, user_name, user_sex,

out outUserid, out outUserpassword, out outUserclass, out outUsername, out outUsersex, out myresult);

if (myresult==DialogResult.OK)

{

dgv.Rows[e.RowIndex].Cells[1].Value = outUserid;

dgv.Rows[e.RowIndex].Cells[2].Value = outUserpassword;

dgv.Rows[e.RowIndex].Cells[3].Value = outUserclass;

dgv.Rows[e.RowIndex].Cells[4].Value = outUsername;

dgv.Rows[e.RowIndex].Cells[5].Value = outUsersex;

}

}

}

}

private void ShowDialogForm(string id, string user_id, string user_password, string user_class, string user_name, string user_sex,

out string outUserid, out string outUserpassword, out string outUserclass, out string outUsername, out string outUsersex, out DialogResult myresult)

{

dialog2 frm = new dialog2();

//读取输入参数,显示在子窗口中

frm.Controls["ID_TB"].Text = id;

frm.Controls["USER_ID_TB"].Text = user_id;

frm.Controls["USER_PWD_TB"].Text = user_password;

frm.Controls["USER_CLASS_TB"].Text = user_class;

// https://www.360docs.net/doc/165651629.html,ER_CLASS_CB.SelectedValue = 2;

frm.Controls["USER_NAME_TB"].Text = user_name;

frm.Controls["USER_SEX_TB"].Text = user_sex;

frm.ShowDialog(); //显示子窗口

//给输出参数赋值默认值

outUserid = user_id;

outUserpassword = user_password;

outUserclass = user_class;

outUsername = user_name;

outUsersex = user_sex;

//判断是否进行修改数据

myresult = frm.DialogResult;

if(myresult==DialogResult.OK)

{

//outUserid= frm.Controls["ID_TB"].Text;

outUserid= frm.Controls["USER_ID_TB"].Text ;

outUserpassword= frm.Controls["USER_PWD_TB"].Text ; outUserclass= frm.Controls["USER_CLASS_CB"].Text ; outUsername= frm.Controls["USER_NAME_TB"].Text ;

outUsersex= frm.Controls["USER_SEX_TB"].Text;

MessageBox.Show("修改了数据");

}

else

{

MessageBox.Show("没有修改数据!!");

}

frm.Dispose();

}

int selectrowindex = -1;

private void button2_Click(object sender, EventArgs e) {

if(selectrowindex<0)

{

MessageBox.Show("请先选择一条记录数据!!");

return;

}

//采用弹出窗口方式,进行数据修改

DataGridView dgv = dataGridView1;

if (dgv.Rows[selectrowindex].Cells[1].Value != null)

{

//输入参数

string id = dgv.Rows[selectrowindex].Cells[0].Value.ToString();

string user_id = dgv.Rows[selectrowindex].Cells[1].Value.ToString();

string user_password =

dgv.Rows[selectrowindex].Cells[2].Value.ToString();

string user_class =

dgv.Rows[selectrowindex].Cells[3].Value.ToString();

string user_name =

dgv.Rows[selectrowindex].Cells[4].Value.ToString();

string user_sex =

dgv.Rows[selectrowindex].Cells[5].Value.ToString();

string outUserid, outUserpassword, outUserclass, outUsername, outUsersex; //输出参数

DialogResult myresult; //返回弹出窗口关闭状态

this.ShowDialogForm(id, user_id, user_password, user_class, user_name, user_sex,

out outUserid, out outUserpassword, out outUserclass, out outUsername, out outUsersex, out myresult);

//如果修改了数据,把当前datagridview内容的对应值进行修改

if (myresult == DialogResult.OK)

{

dgv.Rows[selectrowindex].Cells[1].Value = outUserid;

dgv.Rows[selectrowindex].Cells[2].Value = outUserpassword;

dgv.Rows[selectrowindex].Cells[3].Value = outUserclass;

dgv.Rows[selectrowindex].Cells[4].Value = outUsername;

dgv.Rows[selectrowindex].Cells[5].Value = outUsersex;

}

}

}

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) {

selectrowindex = e.RowIndex; //获取当前选择的行坐标

}

//添加记录

private void button1_Click(object sender, EventArgs e)

{

//采用弹出窗口方式,进行数据修改

DataGridView dgv = dataGridView1;

//输入参数

string id = "-1";

string user_id =null;

string user_password = null;

string user_class = null;

string user_name = null;

string user_sex = null;

string outUserid, outUserpassword, outUserclass, outUsername, outUsersex; //输出参数

DialogResult myresult; //返回弹出窗口关闭状态

this.ShowDialogForm(id, user_id, user_password, user_class, user_name, user_sex,

out outUserid, out outUserpassword, out outUserclass, out outUsername, out outUsersex, out myresult);

//如果添加了数据,把当前datagridview内容的对应值进行修改

if (myresult == DialogResult.OK)

{

//添加行数据

((DataTable)dataGridView1.DataSource).Rows.Add(1, outUserid, outUserpassword,outUserclass,outUsername,outUsersex);//dataGridView1是不能直接添加行的,

只能在他的数据源里添,他会自动绑定

}

}

//删除一条记录

private void button3_Click(object sender, EventArgs e)

{

int myid =

int.Parse(dataGridView1.Rows[selectrowindex].Cells[0].Value.ToString());

string mysql = "delete from user_tb1 where ID=" + myid.ToString();

DataOperate dataoperate = new DataOperate();

dataoperate.getCom(mysql);

MessageBox.Show("删除数据成功");

//加载数据

mysql = "select * from sql3 ";

DataSet ds = dataoperate.getDs(mysql, "sql3");

dataGridView1.DataSource = ds.Tables[0];

/*

//获取总页码 SELECT Count(id) AS number1 FROM user_tb1;

mysql = "SELECT Count(id) AS number1 FROM user_tb1 ";

DataSet ds = dataoperate.getDs(mysql, "user_tb1");

int indexsum = int.Parse(ds.Tables[0].Rows[0][0].ToString());

if (indexsum % pagesize == 0)

label5.Text = (indexsum / pagesize).ToString();

else

label5.Text = (indexsum / pagesize + 1).ToString();

pagesum = int.Parse(label5.Text);

//显示当前页面

try

{

button5_Click(sender, e); //刷新当前页面

}

catch (Exception)

{

throw;

}

*/

}

//

}

}

弹出窗口代码

using System;

using System.Collections.Generic;

using https://www.360docs.net/doc/165651629.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using https://www.360docs.net/doc/165651629.html,monClass;

namespace WDZ

{

public partial class dialog2 : Form

{

public dialog2()

{

InitializeComponent();

}

private void dialog2_Load(object sender, EventArgs e)

{

string mysql = "select * from user_class order by id";

bindcombox(USER_CLASS_CB, mysql, "user_class");

USER_CLASS_CB.SelectedIndex=USER_CLASS_CB.FindString(USER_CLASS_TB.Text,-1); //**非常重要,利用string查找到对应的index,然后就可以显示了,或者取value

}

// 填充Combox控件

private void bindcombox(ComboBox mycombox,string mysql,string tbname)

{

DataTable mydt = new DataTable();

DataOperate dataoperate = new DataOperate();

DataSet ds = dataoperate.getDs(mysql, tbname);

mydt = ds.Tables[0];

mycombox.ValueMember =mydt.Columns[1].ColumnName; //设置隐含的形式显示数值,起对应一定的名称

//cmb_Temp.ValueMember = "user_class";

mycombox.DisplayMember = mydt.Columns[2].ColumnName;

mycombox.DataSource = mydt;

mycombox.DropDownStyle = ComboBoxStyle.DropDownList; //只能选择,不能写入

//cmb_Temp.DropDownStyle =ComboBoxStyle.DropDown; //可以写入

// cmb_Temp.DropDownStyle = ComboBoxStyle.Simple;

}

private void button1_Click(object sender, EventArgs e)

{

//提交数据库操作,。。。。。修改数据

DataOperate mydopt = new DataOperate();

string mysql = "";

//修改数据

if(ID_TB.Text!="-1")

mysql = "update user_tb1 set user_id='" + USER_ID_TB.Text

+ "',user_password='" + USER_PWD_TB.Text

+ "',user_class_id=" + USER_CLASS_CB.SelectedValue

+ ",user_name='" + USER_NAME_TB.Text

+ "',user_sex='" + USER_SEX_TB.Text

+ "' where id=" +ID_TB.Text;

else if (ID_TB.Text == "-1")

{

mysql = "insert into user_tb1

(user_id,user_password,user_class_id,user_name,user_sex) values('"

+ USER_ID_TB.Text + "','"

+ USER_PWD_TB.Text + "',"

+ USER_CLASS_CB.SelectedValue + ",'"

+ USER_NAME_TB.Text + "','"

+ USER_SEX_TB.Text + "')";

}

// MessageBox.Show(mysql);

mydopt.getCom(mysql);

this.DialogResult = DialogResult.OK;

}

private void button2_Click(object sender, EventArgs e)

{

this.DialogResult = DialogResult.Cancel;

}

}

}

三、直接在datagridview上修改、添加、删除。不需要添加textbox。而且在view

中有combox,下拉类表,可以一次修改多行数据,很有意义。

特点:

1.view中含有combox,利用了datarowview获得选取的value,index,item都可以了

2.一次可以修改多行数据,利用dataapter的update的特性,比较麻烦

3.可以直接在view中添加数据,同样利用update特性。

问题

这种方法,只能直接操作绑定的表,如果绑定的是视图,现在还没想好怎么解决。应该可以解决,需要记录下所有修改的记录的rowindex,然后利用sql语句分别进行修改表,感觉比较麻烦,放弃了。

代码如下:

using System;

using System.Collections.Generic;

using https://www.360docs.net/doc/165651629.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using https://www.360docs.net/doc/165651629.html,monClass;

using System.Data.OleDb;

namespace WDZ

{

public partial class frmMain : Form

{

public frmMain()

{

InitializeComponent();

}

private void frmMain_Load(object sender, EventArgs e)

{

this.dataGridView1.AutoSizeColumnsMode =

System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; //表格自适应宽度

//DataCon datacon = new DataCon();

DataOperate dataoperate = new DataOperate();

string strSql = "select * from user_tb1 ";

DataSet ds = dataoperate.getDs(strSql, "user_tb1");

dataGridView1.DataSource = ds.Tables[0];

dataGridView1.Columns[0].ReadOnly = true; //列不可编写

dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; //选择全行

//dataGridView1.ReadOnly = true; //只读

dataGridView1.DefaultCellStyle.SelectionBackColor = Color.YellowGreen; //选择的行为颜色

//最后一行的星号行不显示,不允许用户添加数据

dataGridView1.AllowUserToAddRows = false;

button6.Enabled = false;

button7.Enabled = false;

//初始化索引数组

for (int i = 0; i < 20; i++)

intindex[i] = 255;

//*************************

//加载下拉列表框

BindSex(); // 绑定性别下拉列表框

cmb_Temp.Visible = false; // 设置下拉列表框不可见

// 添加下拉列表框事件

cmb_Temp.SelectedIndexChanged += new

EventHandler(cmb_Temp_SelectedIndexChanged);

// 将下拉列表框加入到DataGridView控件中

this.dataGridView1.Controls.Add(cmb_Temp);

}

private void button1_Click(object sender, EventArgs e)

{

string msg = String.Format("第{0}行,第{1}列,值:

{2}",dataGridView1.CurrentCell.RowIndex,dataGridView1.CurrentCell.ColumnIndex,dataGridV iew1.CurrentCell.Value);

label1.Text = "选择的单元格为:" + msg;

}

private void button2_Click(object sender, EventArgs e)

{

dataGridView1.DataSource = null;

}

private void button3_Click(object sender, EventArgs e)

{

this.dataGridView1.AutoSizeColumnsMode =

System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; //表格自适应宽度

//DataCon datacon = new DataCon();

DataOperate dataoperate = new DataOperate();

pagesize = int.Parse(textBox1.Text); //每页显示的记录数

string strSql = "select top " + pagesize.ToString()+ " * from user_tb1 ";

DataSet ds = dataoperate.getDs(strSql, "user_tb1");

dataGridView1.DataSource = ds.Tables[0];

dataGridView1.Columns[0].ReadOnly = true; //列不可编写

//获取第1页页码

label2.Text = "1";

pagenumber = 1;

//获取总页码 SELECT Count(id) AS number1 FROM user_tb1;

strSql = "SELECT Count(id) AS number1 FROM user_tb1 ";

ds = dataoperate.getDs(strSql, "user_tb1");

int indexsum =int.Parse(ds.Tables[0].Rows[0][0].ToString());

if (indexsum % pagesize == 0)

label5.Text = (indexsum / pagesize).ToString();

else

label5.Text = (indexsum / pagesize + 1).ToString();

pagesum = int.Parse(label5.Text);

//设置上一页下一页按钮的可用性

if (pagesum == 1) button7.Enabled = false;

else button7.Enabled = true;

button6.Enabled = true;

}

int[] intindex =new int[20]; //假设一张表上默认数据为20个

int selectindex = 0;

OleDbConnection conn;

OleDbDataAdapter adapter;

private DataTable dbconn(string strSql)

{

DataCon myconn = new DataCon();

conn = myconn.getCon();

this.adapter = new OleDbDataAdapter(strSql,conn);

DataTable dtSelect = new DataTable();

int rnt = this.adapter.Fill(dtSelect);

return dtSelect;

}

private Boolean dbUpdate()

{

string strSql = "select * from user_tb1";

DataTable dtUpdate = new DataTable();

dtUpdate = dbconn(strSql);

dtUpdate.Rows.Clear();

DataTable dtShow = new DataTable();

dtShow = (DataTable)this.dataGridView1.DataSource;

//dtUpdate.ImportRow(dtShow.Rows[intindex]); //如果不进行循环多行插入的话,只能够插入最后修改的一行数据。

for (int i = 0; i < 20;i++ )

{

if (intindex[i]!=255)

{

dtUpdate.ImportRow(dtShow.Rows[intindex[i]]);

}

}

try

{

//SqlCommandBuilder CommandBuilder;

OleDbCommandBuilder CommandBuilder;

CommandBuilder = new OleDbCommandBuilder(this.adapter);

this.adapter.Update(dtUpdate);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message.ToString());

return false;

}

dtUpdate.AcceptChanges();

return true;

}

private void button4_Click(object sender, EventArgs e)

{

if (dbUpdate())

{

MessageBox.Show("修改成功!");

}

for (int i = 0; i < 20; i++)

intindex[i] = 255;

button5_Click(sender, e);

}

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) {

//intindex = e.RowIndex;

selectindex = e.RowIndex;

}

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)

{

int mycellindex = e.RowIndex;

//MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString());

if (dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString() == "" || dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString() == null)

MessageBox.Show("用户ID不能为空!!!");

else intindex[mycellindex % 20] = mycellindex;

// MessageBox.Show(mycellindex.ToString());

}

int pagenumber = 0;

int pagesum = 0;

int pagesize=2; //每页的条目数

private void button7_Click(object sender, EventArgs e) //显示下一页内容

{

DataOperate dataoperate = new DataOperate();

int pageindex =0 ; //已经显示的条目数

string strSql=null;

if (pagenumber != pagesum)

{

pageindex = pagenumber * pagesize;////已经显示的条目数

strSql = "SELECT TOP " + pagesize.ToString() + " * FROM user_tb1 WHERE id>(select max(id) from (select top " + pageindex.ToString() + " id from user_tb1 order by id))";

}

else if (pagenumber != 1)

{

pageindex = (pagenumber - 1) * pagesize;

strSql = "SELECT TOP " + pagesize.ToString() + " * FROM user_tb1 WHERE id>(select max(id) from (select top " + pageindex.ToString() + " id from user_tb1 order by id))";

}

else strSql = "select top " + pagesize.ToString() + " * from user_tb1 ";

//MessageBox.Show(strSql);//调试使用

DataSet ds = dataoperate.getDs(strSql, "user_tb1");

dataGridView1.DataSource = ds.Tables[0];

dataGridView1.Columns[0].ReadOnly = true; //列不可编写

//显示当前的页数

if (pagenumber < pagesum)

pagenumber = pagenumber + 1;

else

pagenumber = pagesum;

label2.Text = pagenumber.ToString();

}

private void button6_Click(object sender, EventArgs e)

{

DataOperate dataoperate = new DataOperate();

int pageindex = 0; //已经显示的条目数

string strSql = null;//

if ((pagenumber - 2) > 0)

{

pageindex = (pagenumber - 2) * pagesize;////已经显示的条目数

strSql = "SELECT TOP " + pagesize.ToString() + " * FROM user_tb1 WHERE id>(select max(id) from (select top " + pageindex.ToString() + " id from user_tb1 order by id))";

}

else strSql = "select top " + pagesize.ToString() + " * from user_tb1 ";

//MessageBox.Show(strSql);//调试使用

DataSet ds = dataoperate.getDs(strSql, "user_tb1");

dataGridView1.DataSource = ds.Tables[0];

dataGridView1.Columns[0].ReadOnly = true; //列不可编写

//显示当前的页数

if (pagenumber !=1)

pagenumber = pagenumber -1;

else

pagenumber =1;

label2.Text = pagenumber.ToString();

}

private void textBox1_TextChanged(object sender, EventArgs e)

{

pagesize = int.Parse(textBox1.Text);

}

private void button5_Click(object sender, EventArgs e) //取消按钮,其实就是从新读本页数据库,在显示一次

{

DataOperate dataoperate = new DataOperate();

int pageindex = 0; //已经显示的条目数

string strSql;

if ((pagenumber - 1) > 0)

{

pageindex = (pagenumber - 1) * pagesize;////已经显示的条目数

strSql = "SELECT TOP " + pagesize.ToString() + " * FROM user_tb1 WHERE id>(select max(id) from (select top " + pageindex.ToString() + " id from user_tb1 order by id))";

}

else strSql = "select top " + pagesize.ToString() + " * from user_tb1 ";

//MessageBox.Show(strSql);//调试使用

科研常用的实验数据分析与处理方法

科研常用的实验数据分析与处理方法 对于每个科研工作者而言,对实验数据进行处理是在开始论文写作之前十分常见的工作之一。但是,常见的数据分析方法有哪些呢?常用的数据分析方法有:聚类分析、因子分析、相关分析、对应分析、回归分析、方差分析。 1、聚类分析(Cluster Analysis) 聚类分析指将物理或抽象对象的集合分组成为由类似的对象组成的多个类的分析过程。聚类是将数据分类到不同的类或者簇这样的一个过程,所以同一个簇中的对象有很大的相似性,而不同簇间的对象有很大的相异性。聚类分析是一种探索性的分析,在分类的过程中,人们不必事先给出一个分类的标准,聚类分析能够从样本数据出发,自动进行分类。聚类分析所使用方法的不同,常常会得到不同的结论。不同研究者对于同一组数据进行聚类分析,所得到的聚类数未必一致。 2、因子分析(Factor Analysis) 因子分析是指研究从变量群中提取共性因子的统计技术。因子分析就是从大量的数据中寻找内在的联系,减少决策的困难。因子分析的方法约有10多种,如重心法、影像分析法,最大似然解、最小平方法、阿尔发抽因法、拉奥典型抽因法等等。这些方法本质上大都属近似方法,是以相关系数矩阵为基础的,所不同的是相关系数矩阵对角线上的值,采用不同的共同性□2估值。在社会学研究中,因子分析常采用以主成分分析为基础的反覆法。

3、相关分析(Correlation Analysis) 相关分析(correlation analysis),相关分析是研究现象之间是否存在某种依存关系,并对具体有依存关系的现象探讨其相关方向以及相关程度。相关关系是一种非确定性的关系,例如,以X和Y 分别记一个人的身高和体重,或分别记每公顷施肥量与每公顷小麦产量,则X与Y显然有关系,而又没有确切到可由其中的一个去精确地决定另一个的程度,这就是相关关系。 4、对应分析(Correspondence Analysis) 对应分析(Correspondence analysis)也称关联分析、R-Q 型因子分析,通过分析由定性变量构成的交互汇总表来揭示变量间的联系。可以揭示同一变量的各个类别之间的差异,以及不同变量各个类别之间的对应关系。对应分析的基本思想是将一个联列表的行和列中各元素的比例结构以点的形式在较低维的空间中表示出来。 5、回归分析 研究一个随机变量Y对另一个(X)或一组(X1,X2,…,Xk)变量的相依关系的统计分析方法。回归分析(regression analysis)是确定两种或两种以上变数间相互依赖的定量关系的一种统计分析方法。运用十分广泛,回归分析按照涉及的自变量的多少,可分为一

地震数据处理方法(DOC)

安徽理工大学 一、名词解释(20分) 1、、地震资料数字处理:就是利用数字计算机对野外地震勘探所获得的原始资料进行加工、改进,以期得到高质量的、可靠的地震信息,为下一步资料解释提供可靠的依据和有关的地质信息。 2、数字滤波:用电子计算机整理地震勘探资料时,通过褶积的数学处理过程,在时间域内实现对地震信号的滤波作用,称为数字滤波。(对离散化后的信号进行的滤波,输入输出都是离散信号) 3、模拟信号:随时间连续变化的信号。 4、数字信号:模拟数据经量化后得到的离散的值。 5、尼奎斯特频率:使离散时间序列x(nΔt)能够确定时间函数x(t)所对应的两倍采样间隔的倒数,即f=1/2Δt. 6、采样定理: 7、吉卜斯现象:由于频率响应不连续,而时域滤波因子取有限长,造成频率特性曲线倾斜和波动的现象。 8、假频:抽样数据产生的频率上的混淆。某一频率的输入信号每个周期的抽样数少于两个时,在系统的的输出端就会被看作是另一频率信号的抽样。抽样频率的一半叫作褶叠频率或尼奎斯特频率fN;大于尼奎斯特频率的频率fN+Y,会被看作小于它的频率fN-Y。这两个频率fN+Y和fN-Y相互成为假频。 9、伪门:对连续的滤波因子h(t)用时间采样间隔Δt离散采样后得到h (nΔt)。如果再按h (nΔt)计算出与它相应的滤波器的频率特性,这时在频率特性图形上,除了有同原来的H (ω)对应的'门'外,还会周期性地重复出现许多门,这些门称为伪门。产生伪门的原因就是由于对h(t)离散采样造成的。 10、地震子波:由于大地滤波作用,使震源发出的尖脉冲经过地层后,变成一个具有一定时间延续的波形w(t)。 11、道平衡:指在不同的地震记录道间和同一地震记录道德不同层位中建立振幅平衡,前者称为道间均衡,后者称为道内均衡。 12、几何扩散校正:球面波在传播过程中,由于波前面不断扩大,使振幅随距离呈反比衰减,即Ar=A0/r,是一种几何原因造成的某处能量的减小,与介质无关,叫几何扩散,又叫球面扩散。为了消除球面扩散的影响,只需A0=Ar*r即可,此即为几何扩散校正, 13、反滤波(又称反褶积):为了从与干扰混杂的地震讯息中把有效波提取出来,则必须设法消除由于水层、地层等所形成的滤波作用,按照这种思路所提出的消除干扰的办法称为反滤波,即把有效波在传播过程中所经受的种种我们不希望的滤波作用消除掉。 14、校正不足或欠校正:如果动校正采用的速度高于正确速度,计算得到的动校正量偏小,动校正后的同相轴下拉。反之称为校正过量或过校正。 15、动校正:消除由于接受点偏离炮点所引起的时差的过程,又叫正常时差校正。 16、剩余时差:当采用一次波的正常时差公式进行动校正之后,除了一次反射波之外,其他类型的波仍存在一定量的时差,我们将这种进过动校正后残留的时差叫做剩余时差。

16种常用数据分析方法

一、描述统计描述性统计是指运用制表和分类,图形以及计筠概括性数据来描述数据的集中趋势、离散趋势、偏度、峰度。 1、缺失值填充:常用方法:剔除法、均值法、最小邻居法、比率回归法、决策 树法。 2、正态性检验:很多统计方法都要求数值服从或近似服从正态分布,所以之前需要进行正态性检验。常用方法:非参数检验的K-量检验、P-P图、Q-Q图、W 检验、动差法。 二、假设检验 1、参数检验 参数检验是在已知总体分布的条件下(一股要求总体服从正态分布)对一些主要的参数(如均值、百分数、方差、相关系数等)进行的检验。 1)U验使用条件:当样本含量n较大时,样本值符合正态分布 2)T检验使用条件:当样本含量n较小时,样本值符合正态分布 A 单样本t检验:推断该样本来自的总体均数卩与已知的某一总体均数卩0 (常为理论值或标准值)有无差别; B 配对样本t 检验:当总体均数未知时,且两个样本可以配对,同对中的两者在可能会影响处理效果的各种条件方面扱为相似; C 两独立样本t 检验:无法找到在各方面极为相似的两样本作配对比较时使用。 2、非参数检验 非参数检验则不考虑总体分布是否已知,常常也不是针对总体参数,而是针对总体的某些一股性假设(如总体分布的位罝是否相同,总体分布是否正态)进行检验。 适用情况:顺序类型的数据资料,这类数据的分布形态一般是未知的。 A 虽然是连续数据,但总体分布形态未知或者非正态; B 体分布虽然正态,数据也是连续类型,但样本容量极小,如10 以下; 主要方法包括:卡方检验、秩和检验、二项检验、游程检验、K-量检验等。 三、信度分析检査测量的可信度,例如调查问卷的真实性。 分类: 1、外在信度:不同时间测量时量表的一致性程度,常用方法重测信度 2、内在信度;每个量表是否测量到单一的概念,同时组成两表的内在体项一致性如何,常用方法分半信度。 四、列联表分析用于分析离散变量或定型变量之间是否存在相关。对于二维表,可进行卡 方检验,对于三维表,可作Mentel-Hanszel 分层分析列联表分析还包括配对计数资料的卡方检验、行列均为顺序变量的相关检验。 五、相关分析 研究现象之间是否存在某种依存关系,对具体有依存关系的现象探讨相关方向及相关程度。 1、单相关:两个因素之间的相关关系叫单相关,即研究时只涉及一个自变量和一个因变量; 2、复相关:三个或三个以上因素的相关关系叫复相关,即研究时涉及两个或两个以

地震数据处理vista软件使用手册

Vista 5.5的基本使用方法 数据输入 地震分析窗口 一维频谱 二维频波谱 观测系统 工作流 一、数据输入 1.1 把数据文件加入Project 首先选择File/New Project,新建一个Project,按住不放,出现按钮组合,可以选择不同类型 的数据集,选择,向Project中增加一个新的2-D数据集,按住不放,出现按钮组合, 可以选择加入不同类型的地震数据,选择,选择一个SEG-Y数据,即可将该数据文件加入新建的数据集。 1.2 命令流中数据的输入 双击进入如下界面 1.2.1 Input Data List 数据输入列表,选择已加入到Project的数据集,下面的文本框中会显示选择的数据的基本信息。 1.2.2 Data Order 选择输入数据的排列方式,对不同的处理步骤可以选择不同的数据排列方式 Sort Order a. NO SORT ORDER 输入数据原始排列方式 b. SHOT_POINT_NO 输入数据按炮点排列方式 c. FIELD_STATION_NUMBER d. CMP_NO 输入数据按共中心点排列方式 e. FIELD_STATION_NUMBER 1.2.3 Data Input Control 数据输入控制 右键-->Data Input Control a. Data Input 进入Flow Input Command(见上) b. Data Sort List 查看数据排列方式的种类 c. Data/header Selection 输入数据的选择,可以控制输入数据的道数和CMP道集 查看所有已经选择的数据 如果没有定义任何可选的数据信息,则如下图所示: 可以选择一种选择方式,单击并设置选择信息。定义有可选的数据信息后,在查看,则如下图所示,会显示选择的信息。 选择共炮点集 单击后,会弹出如下界面:

地震数据处理 重点

1.一维傅里叶变换及其应用:傅里叶变换是地震数据处理的主要数学基础。它不仅是地震道、地震记录分析和数据滤波的基础,同时在地震数据处理的各个方面都有着广泛的应用。 2.采样定理:设x(t)是连续的时间函数,x(t)的最高截止频率为fn,则可用采样间隔为Δt=1/2fn的离散序列X(nΔt)唯一的确定。采样过程:从模拟地震信号到数字地震信号的过程。采样间隔/采样率:采样所用的时间间隔。 3.数字滤波:利用频谱特征的不同来压制干扰波,以突出有效波的方法。 4.频率域滤波的步骤: ①对已知地震道进行频谱分析;②设计合适的滤波器:为了滤去干扰波的频谱成分,应当设计一个带通滤波器,保留有效波频率,把干扰波频率成分滤掉; ③进行滤波运算;④对输出信号谱X(w)进行傅里叶反变换,便得到滤波后的输出X(t). 5.相位性质:最小相位也叫相位滞后或最小能量延迟,实际上最小相位滞后是指频率域,而最小能量延迟则是指时间域而言。最小能量延迟子波:能量聚集在首部;最大能量延迟子波:能量集中在尾部;混合延迟子波:能量聚集在中部。 6.褶积滤波的物理意义: 单位脉冲响应:在时间域的表示方法中,令一个单位脉冲通过一个滤波器,然后观测滤波器的输出,这个滤波器输出的自然过程曲线称为滤波器的脉冲响应。也称滤波器的时间特性。 褶积滤波的物理意义:它相当于把地震信息x(t)分解为起始时间、极性、幅度各不相同的脉冲序列,令这些脉冲按时间书序依次通过滤波器,这样在滤波器的输出端就得到对输入脉冲序列的脉冲响应,这些脉冲响应有不同的的起始时间、不同的极性和不同的幅度(这个幅度是与引起它的输入脉冲幅度成正比的),将它们叠加起来就得到滤波后的输出x(t). 7.数字滤波的特殊性质:离散性:数字滤波是对离散的信号进行运算,这是所谓的离散性;有限性:在数字计算机上进行计算时,滤波因子不可能无穷项,而是取有限项,这就是所谓的有限性。 8.产生“伪门”原因:由于对A离散采样造成的,可以证明“伪门”在频率域出现的周期为A,为了避免“伪门”造成的影响,可以适当的选择采样间隔A,使第一个“伪门”出现在干扰波的频谱范围之外。9.波谱:以任何一种形式展示电磁辐射强度与波长之间的关系,叫波谱。波数:波长的倒数。K0=1/λ 二维频率-波数域中的二维频率-波数谱(简称二维频-波谱)分析是对地震波场进行分析的重要手段,它是建立在二维傅里叶变换的基础上。 10.空间假频:频率不变,倾角越大或者倾角不变,频率越高越容易产生空间假频。产生条件:地震信号的频率f一定时,地震信号倾斜时差δt越大,其频-波振幅谱中的波数k0也越大,而当地震信号频率f 增大时,具有相同倾斜时差δt的地震信号的频-波振幅谱中的波数k0随之增大,当频率f增大到某一个门槛频率fmax时,便开始产生空间假频。 11.二维滤波器的设计:一般二维滤波是指对于波动函数X(t,x)所进行的频率-波数域滤波。这时设计的滤波因子是时间-空间的函数h(t,x),滤波过程类似一维滤波在时间-空间域,可用二维褶积公式表示A. 12.共中心点CMP叠加及叠后处理流程图:野外采集地震数据-解编-预处理-反褶积-抽CMP道集-速度分析-动校正-CMP水平叠加-叠后时间深度偏移。13.共中心点叠加优点:①压制多次波;②压制规则干扰波;③压制随机噪声。综上,共中心点叠加可以有效地压制各种干扰波,增强有效波,使地震剖面的信噪比明显提高,掀桌改善地震剖面的质量。 14共中心点水平叠加存在的问题:当反射界面为弯曲界面时,其反射旅行时存在如图1所示的畸变;当反射界面为,其射旅行时发生如图2所示的畸变;当覆盖介质速度横向变化时,其反射旅行时存在如图3所示的畸变;当覆盖介质速度各向异性时,其反射旅行时存在如图4所示的畸变. 15.块状介质模型地震数据处理的特点:①介质呈块状分布,它不仅有顶部和底部界面,而且其侧面也由断层面或岩层界面所封闭;②由于剧烈的构造运动作用,界面往往呈弯曲界面,界面陡、倾角较大;③介质速度往往沿水平方向变化较快。 16.共反射点CRP叠前处理基本流程图:野外采集地震数据-解编-预处理-反褶积-抽CRP道集-层速度场-速度深度模型-叠前深度偏移 ①②③④⑤⑥⑦ 1.预处理:指地震数据处理前的准备工作,是地震数据处理中的重要基础工作,一般定义为将野外采集的地震数据正确加载到地震资料处理系统,进行观测系统定义并对地震数据进行编辑和校正的过程。预处理包括:数据解编、格式转换、道编辑、观测系统定义等工作。 2.解编:就是按照野外采集的记录格式将地震数据检测出来,并将时序的野外数据转换为道序数据,然后按照道和炮的顺序将地震记录存放起来。 3.野外观测系统定义:观测系统就是以野外文件号和

地震资料数字处理试卷合集

一、名词解释 1.道均衡:是指在不同或同一地震记录道建立振幅平衡。 2.数字信号:相对于模拟信号,记录瞬间信息的离散的信号。 模拟信号:随时间连续变化的信号. 有效信号:能为我们所利用的信号就叫有效信号。 3.最小相位:能量集中在序列前部。 4.反射波:在波速突变的分界面上,波的传播方向要发生改变,入射波的一部分被反 射,形成反射波。 折射波:滑行波在传播过程中也会反过来影响第一种介质,并在第一种介质中激发新的波。这种由滑行波引起的波,叫折射波。 5.共深度点:CDP。地下界面水平时,在共中心点下方的点,界面倾斜时无共深度点。 6.解编:地震数据是按各道同一时刻的样点值成列排放的,解编就是将数据重排成行。 12. 最大相位:能量集中在序列后部。 16.地震波:地震波是在岩石中传播的弹性波。 多次波:在地下经过多次反射接收到的波叫多次波。 17. 切除:地震信号经动校正后被拉伸畸变,目前处理动校正拉伸畸变的方法是切除, 即把拉伸严重部分的记录全部充零。 18. 混合相位:能量集中在序列中部。 自相关:一个时间信号与自身的互相关。 互相关:一个时间信号与另一个时间信号的相关。 21.环境噪音:交流电、人、风吹草动等环境因素所引起的对地震波有干扰的信号。 随机噪音:交流电、人、风吹草动等随机因素所引起的对地震波有干扰的信号。 22.反射系数:反射振幅与入射振幅的比值。 28.模拟记录:把地面振动情况,以模拟的方式录制在磁带上。 二、简答题 1、地震资料数字处理主要流程?地震资料的现场处理主要包括哪些内容? 地震勘探资料数据处理中的预处理主要包括哪些内容? 简述地震资料数据中有哪些目标处理方法? 地震资料数字处理如何分类? 地震资料数字处理质量控制有哪些? 地震资料数字处理主要流程:输入→定义观测系统→数据预处理(废炮道、预滤波、反褶积)→野外静校正→速度分析→动校正→剩余静校正→叠加→偏移→显示。 地震资料的现场处理主要有:预处理、登录道头、道编辑、切除初至、抽道集、增益恢复、 设计野外观测系统、实行野外静校正、还可以进行频谱分析、速度分析、水平叠加等(2分)。 地震勘探资料数据处理中的预处理主要包括登录道头、废炮道编辑、切除初至、抽道集(4分)、增益恢复、预滤波、反褶积等. 地震资料数据中目标处理方法有高分辨率地震资料处理、三维地震资料处理、叠前深度偏移处理、井孔地震资料处理(4分)、多波多分量地震资料处理、时间推移地震资料处理等地震资料数字处理分类有数据预处理、数据校正、叠加和偏移归位、振幅处理、滤波、分析、正反演、复地震道技术等。(3分) 地震资料数字处理质量控制包括野外原始资料检查与验收、处理流程及主要参数确定、

常用的数理统计及数据处理方法

常用的数理统计及数据处理方法 水泥厂生产中的质量控制和分析都是以数据为基础的技术活动。如果没有数据的定量分析,就无法形成明确的质量概念。因此,必须通过对大量数据的整理和分析,才能发现事物的规律性和生产中存在的问题,进而作出正确的判断并提出解决的方法。 第一节数理统计的有关概念 一、个体、母体与子样 在统计分析中,构成研究对象的每一个最基本的单位称为个体。 研究对象的所有个体的集合即全部个体称为母体或总体,它可以无限大,也可以是有限的,如一道工序或一批产品、半成品、成品,可根据需要加以选择。 进行统计分析,通常是从母体中随机地选择一部分样品,称为子样(又称样本)。用它来代表母体进行观察、研究、检验、分析,取得数据后加以整理,得出结论。取样只要是随机和足够的数量,则所得结论能近似地反映母体的客观实际。抽取样本的过程被称作抽样;依据对样本的检测或观察结果去推断总体状况,就是所谓的统计推断,也叫判断。 例如,我们可将一个编号水泥看成是母体,每一包水泥看成是个体,通过随机取样(连续取样或从20个以上不同部位取样),所取出的12kg检验样品可称为子样,通过检验分析,即可判断该编号水泥(母体)的质量状况。 二、数据、计量值与计数值 1,数据 通过测试或调查母体所得的数字或符号记录,称为数据。在水泥生产中,无任对原材料、半成品、成品的检验,还是水泥的出厂销售,都要遇到很多报表和数据,特别是评定水泥质量好坏时,更要拿出检验数据来说明,所以可用与质量有关的数据来反映产品质量的特征。 根据数据本身的特征、测试对象和数据来源的不同,质量检验数据可分为计量值和计算值两类。 2,计量值 凡具有连续性或可以利用各种计量分析一起、量具测出的数据。如长度、质量、温度、化学成分、强度等,多属于计量值数据。计量值也可以是整数,也可以是小数,具有连续性。

16种常用的数据分析方法汇总

一、描述统计 描述性统计是指运用制表和分类,图形以及计筠概括性数据来描述数据的集中趋势、离散趋势、偏度、峰度。 1、缺失值填充:常用方法:剔除法、均值法、最小邻居法、比率回归法、决策树法。 2、正态性检验:很多统计方法都要求数值服从或近似服从正态分布,所以之前需要进行正态性检验。常用方法:非参数检验的K-量检验、P-P图、Q-Q图、W检验、动差法。 二、假设检验 1、参数检验 参数检验是在已知总体分布的条件下(一股要求总体服从正态分布)对一些主要的参数(如均值、百分数、方差、相关系数等)进行的检验。 1)U验使用条件:当样本含量n较大时,样本值符合正态分布 2)T检验使用条件:当样本含量n较小时,样本值符合正态分布 A 单样本t检验:推断该样本来自的总体均数μ与已知的某一总体均数μ0 (常为理论值或标准值)有无差别; B 配对样本t检验:当总体均数未知时,且两个样本可以配对,同对中的两者在可能会影响处理效果的各种条件方面扱为相似;

C 两独立样本t检验:无法找到在各方面极为相似的两样本作配对比较时使用。 2、非参数检验 非参数检验则不考虑总体分布是否已知,常常也不是针对总体参数,而是针对总体的某些一股性假设(如总体分布的位罝是否相同,总体分布是否正态)进行检验。适用情况:顺序类型的数据资料,这类数据的分布形态一般是未知的。 A 虽然是连续数据,但总体分布形态未知或者非正态; B 体分布虽然正态,数据也是连续类型,但样本容量极小,如10以下; 主要方法包括:卡方检验、秩和检验、二项检验、游程检验、K-量检验等。 三、信度分析 检査测量的可信度,例如调查问卷的真实性。 分类: 1、外在信度:不同时间测量时量表的一致性程度,常用方法重测信度 2、内在信度;每个量表是否测量到单一的概念,同时组成两表的内在体项一致性如何,常用方法分半信度。 四、列联表分析 用于分析离散变量或定型变量之间是否存在相关。

质量数据分析和质量信息管理办法

内部资料 注意保存宝山钢铁股份有限公司特殊钢分公司 管理文件 文件编号:SWZ07016 第 1 版签发:王治政质量数据分析和质量信息管理办法 1 总则 1.1为了收集、分析各类质量数据和信息并及时传递和处理,更好地为质量管理体系的持续改进和预防措施提供机会,特制订本办法。 1.2本办法适用于宝山钢铁股份有限公司特殊钢分公司(以下简称:分公司)质量数据和质量信息的收集、分析等管理。 2管理职责分工 2.1 质量保证部负责质量数据和质量信息的归口管理,并负责质量指标、质量体系运行等方面数据和信息的收集、分析和传递。 2.2 制造管理部、特殊钢技术中心负责关键质量特性等方面的数据和信息收集、分析和传递。 2.3特殊钢销售部负责顾客满意度及忠诚度方面的数据和信息收集、分析和传递。 2.4 采购供应部负责原料、资材备件、设备工程供方数据和信息收集、分析和传递。 2.5 各有关生产厂、部负责本部门或本专业数据和信息收集、分析和传递。 3质量数据、信息收集的范围 3.1 需收集的质量数据、信息应能反映分公司产品实物质量和质量管理体系的运行状况,能反映分公司技术质量水平,并能为持续改进和预防措施提供机会。 3.2 数据、信息收集范围包括: 3.2.1质量合格率、不合格品分类、废品分类、质量损失等; 3.2.2关键质量特性、工艺参数等; 3.2.3体系审核中不合格项的性质和分布等; 3.2.4顾客反馈、顾客需求、顾客满意程度、顾客忠诚程度等;2006年1月12日发布 2006年1月12日实施

3.2.5供方产品、过程及体系的状况等。 4 数据分析的方法 4.1数据分析中应采用适用的数理统计方法。常用统计方法有:分层法、排列图法、因果图法、对策表、检查表、直方图法、过程能力分析、控制图法、相关及回归分析、实验设计、显著性检验、方差分析等。 4.2 产品开发设计阶段可使用实验设计和析因分析、方差分析、回归分析等,以优化参数。 4.3 在质量先期策划中确定过程控制适用的统计技术,并在控制计划中明确。 4.4 生产过程可使用控制图对过程变量进行控制以保持过程稳定;并可利用分层法、直方图法、过程能力分析、相关及回归分析等对过程进行分析,明确过程变差及影响过程因素的相关性,以改进过程;使用排列图法、因果图法等确定生产中的主要问题及其产生原因;使用对策表来确定纠正和预防措施。 4.5 产品验证中可使用检查表,并在检测中使用显著性检验,方差分析、测量系统分析等来进行检测精度管理,防止不合格品流入下道工序。 4.6 在质量分析、质量改进和自主管理活动中可使用分层法、排列图法、因果图法、对策表、直方图法、控制图法、相关和回归分析等。 5质量数据、信息的利用 5.1按规定定期向有关部门传递数据分析的结果,包括销售部每月应将用户异议情况反馈到质量保证部等部门,财务部每月将质量损失情况反馈质量保证部等部门,质量保证部通过编制质量信息日报,每天将实物质量情况向制造管理部、特殊钢技术中心或分公司主管领导传递。 5.2 应通过报告、汇报等形式及时向分公司领导报告数据、信息分析的有关文件,为分公司领导决策提供依据。 5.3 各部门应充分利用数据分析的结果,以寻求持续改进和预防措施的机会。 5.5经过汇总、整理和分析的数据和信息可通过管理评审、技术质量等有关专业工作会议和分公司局域网与相关部门进行沟通。 6质量信息(异常信息)管理

《地震资料数字处理》复习

《地震资料数字处理》复习 地震资料数字处理围绕以下三方面工作: 1、提高信噪比; 2、提高分辨率; 3、提高保真度。 一、提高信噪比的处理 1、原理 利用噪声和信号在时间、空间、频率和其他变换域中的分布差异,设计滤波因子,将噪声进行压制。 2、处理顺序 提高信噪比包含消除噪声和增强信号两部分内容。 消除噪声一般在叠前的各种道集上进行,主要针对规则干扰如多次波和面波等, 增强信号一般在叠后剖面上进行,主要针对随机噪声。 3、随机噪声 是指没有固定的频率、时间、方向的振幅扰动和震动,其成因大致是来自环境因素、次生因素和仪器因素,其中次生干扰的强度与激发能量有关。 随机噪声在记录上表现为杂乱无章的波形或脉冲,在频率上分布宽而不定,在空间上没有确定的视速度。 随机噪声的随机性与道间距有关,如果道间距减小到一定程度,许多随机噪声表现出道间的相干性,当道距大于随机噪声的相干半径才表现出随机性。 4、一维滤波器(伪门、Gibbs现象) 频率滤波器是根据信号和噪声在频率分布上的差异而设计时域或频域一维滤波算子。它压制通放带以外的频率成分,保留通放带以内的频率成分。 Gibbs现象是由于频率域的不连续或截断误差引起的,通放带和压制带之间设置过渡带可克服此现象,设计滤波器就是控制过度带的形状和宽度。 5、二维滤波器 二维滤波是根据有效信号和相干噪声在视速度分布上的差异,来压制噪声或增强信号。 通常用来压制低视速度相干噪声,在f-k平面上占据低频高波数区域。 二维滤波比较容易产生蚯蚓化现象,而且混波相现象明显,在空间采样条件不满足或陡倾角的情况下受到空间假频的影响,一般常用于压制一些规则干扰,如面波和多次波等。 6、频率-波数域二维滤波实现步骤: (1)把时间和空间窗口里的数据变换到f-k域; (2)在f-k域,通过外科切除,按径向扇形划分压制区C(乘振幅置零)、过渡区S(乘振幅置0至1变化)、通放区P (乘振幅置1) ; (3)从f-k域反变换到t-x域。 8、数字滤波有两个特殊性质: (1)数字滤波由于时域离散化会带来伪门现象,

地震数据处理

地震数据整体流程 不同软件的地震数据处理方式不同,但是所有软件的处理流程基本是固定不变的,最多也是在处理过程中处理顺序的不同。整体流程如下: 1 数据输入(又称为数据IO) 数据输入是将野外磁带数据转换成处理系统格式,加载到磁盘上,主要指解编或格式转换。 解编:将多路编排方式记录的数据(时序)变为道序记录方式,并对数据进行增益恢复等处理的过程。如果野外采集数据是道序数据,则只需进行格式转换,即转成处理系统可接受的格式。 注:早期的时序数据格式为记录时先记录第一道第一个采样点、第二道第一个采样点、……、第一道第二个采样点、第二道第二个采样点、……直至结束。现在的道序记录格式为记录时直接记录第一道所有数据、第二道所有数据、……直至结束,只是在每一道数据前加上道头

数据。将时序数据变为道序数据只需要对矩阵进行转置即可。 2 置道头 2.1 观测系统定义 目的为模拟野外,定义一个相对坐标系,将野外的激发点、接收点的实际位置放到这个相对的坐标系中。即将SPS文件转换为GE-Lib文件,包括1)物理点间距2)总共有多少个物理点3)炮点位置4)每炮第一道位置5)排列图形。 2.2 置道头 观测系统定义完成后,处理软件中置道头模块,可以根据定义的观测系统,计算出各个需要的道头字的值并放入地震数据的道头中。当道头置入了内容后,我们任取一道都可以从道头中了解到这一道属于哪一炮、哪一道?CMP号是多少?炮间距是多少?炮点静校正量、检波点静校正量是多少?等等。 后续处理的各个模块都是从道头中获取信息,进行相应的处理,如抽CMP道集,只要将数据道头中CMP号相同的道排在一起就可以了。因此道头如果有错误,后续工作也是错误的。 GOEAST软件有128个道头,1个道头占4个字节,关键的为2(炮号)、4(CMP号)、17(道号)、18(物理点号)、19(线号)、20(炮检距)等。 2.3 观测系统检查 利用置完道头的数据,绘制炮、检波点位置图、线性动校正图。 3 静校正(野外静校正) 静校正为利用测得的表层参数或利用地震数据计算静校正量,对地震道进行时间校正,以消除地形、风化层等表层因素变化时对地震波旅行时的影响。 静校正是实现共中心点叠加的一项最主要的基础工作。直接影响叠加效果,决定叠加剖面的信噪比和垂向分辨率,同时影响叠加速度分析的质量。 静校正方法: 1)高程静校正 2)微测井静校正-利用微测井得到的表层厚度、速度信息,计算静校正量 3)初至折射波法 4)微测井(模型法)低频+初至折射波法高频 4 叠前噪音压制 干扰波严重影响叠加剖面效果。在叠前对各种干扰进行去除,为后续资料处理打好基础。 常见干扰有:面波、折射波、直达波、多次波、50Hz工业电干扰及高能随机干扰等多种情况。不同干扰波有不同特点和产生原因,根据干扰波和一次反射波性质(如频率、相位、视速度等)上的不同,把干扰和有效波分离,从而达到干扰波的去除,提高地震资料叠加效

数据分析管理办法

数据分析管理办法 1 目的 为规范有关数据、信息的确定、收集和分析工作,用以识别改进的方向并实施持续的改进,特制定本办法。 2 适用范围 本办法适用于公司职能部门、项目和专业公司的数据、信息收集、分析和处理活动。 3 规范性引用文件 Q/GDCF A101.001-2003 质量手册 4 职责 4.1 公司管理者代表负责组织、协调和领导公司数据收集和分析工作。 4.2 公司综合管理部是公司数据收集和分析的归口管理部门,负责收集、汇总和分析各类数据。 4.3 各职能部门、负责各自工作相关的数据的收集、分析,并将分析情况和利用结果向有关领导和部门报告。 4.4 相关供方应配合各职能部门进行相关数据的收集、分析。 5 管理内容与要求 5.1 数据的收集来自监视和测量的结果以及其他有关来源。可通过监视和测量的结果、审核结果、质量、职业健康安全和环境监查报告、记录、相关方来函的有关内容并通过报告、会议、座谈、走访、调查等其他形式及时或定期收集与管理体系运行有效性和产品、过程有关的数据。 5.2 与顾客满意度有关的数据(综合管理部收集) 从顾客的相关会议、相关报告或以其他形式对顾客满意度相关数据进行收集。 5.3 与内审有关的数据(综合管理部收集) 在每次内审结束后由综合管理部汇总与内审有关的以下数据: ——内审所发现的不符合项的数量以及重要不符合项与一般不符合

项的数量比例; ——不符合项所覆盖的部门的数量及比例。 5.4 与过程的监视和测量有关的数据 5.4.1 与管理职责有关的数据(综合管理部收集) 每次管理评审输入、输出信息,纠正和预防措施及其实施有效性的数据。 5.4.2 与资源管理有关的数据(综合管理部及相关职能部门收集) ——公司及相关供方有关管理、技术、作业、服务、检验试验等人员的信息和数据,以及各类专业职称、特殊岗位、持证人员的数据和信息; ——公司及相关供方员工总数与管理、技术、作业、服务、检验试验等人员之间的比例关系变化的数据; ——公司及相关供方的机械设备数据、设备完好率、利用率等数据及其变化和趋势; ——公司年度培训计划及实施情况的统计数据及培训有效性测定的数据。 5.4.3 与产品实现有关的数据(工程部及相关职能部门收集) ——工程项目的质量、职业健康安全和环境目标、指标的设置以及完成情况的数据或信息; ——与产品有关的要求的确定和评审的数据和信息(次数、内容); ——与采购过程有关的数据和信息: · 合格供方(物资和工程)名录动态信息和数据; · 供方对产品实现过程及工程最终各项参数的影响情况有关的数据,包括缺陷数、不合格品数、安全隐患数、隐患整改数等包括质量、职业健康安全和环境的各项参数、数据。 5.4.4 相关供方投入的资源,如劳动力、机械设备、监视和测量装置等配置及其变化的数据和信息; 5.4.5 工程项目的工期数、里程碑进度、调试进度、并网日期和移交生产日期等技术经济指标数据; 5.5 与产品的监视和测量有关的数据(工程部、生产准备部和相关职能部门收集) 5.5.1 与工程质量、职业健康安全和环境等验评结果有关的数据 ——单位工程和分部分项工程验评结果数据,计算合格率、优良率; ——汇总受监焊口数、抽监比例、焊口抽检一次合格率、优良率。 5.5.2 与不合格品控制有关的数据

地震资料处理复习总结

数字地震记录中,每个地震到是按一个按一定时间采样间隔排列的时间序列数字滤波,每一个地震道都可以用一系列具有不同频率和不同振幅、相位的简谐曲线叠加而成。 应用一维傅里叶变换可以得到每个地震道德简谐成分; 应用傅里叶反变换可以将简谐成分合成为原来的地震道的时间序列函数。 通常由傅里叶变换得到的频谱为一个复函数,称为复数谱。它可以写成指数形式 式中 复数的模,称为振幅谱; 复数的幅角,称为相位谱。 离散情况下和这个差不多 一维频谱的特征: 1. 傅里叶变换的几个基本性质 线性 翻转 共轭 时移 褶积 相关(功率谱) 2. 假频 尼奎斯特频率 二维谱分析 二维波场函数X(x,t)的二维傅里叶变换° X(,)ωκ 表明了二维波场函数X(x,t)的各个频率f 一波数 简谐成分的频一波谱。 由°X(,)ωκ这些频率f 一波数 的简谐成分叠加即可恢复原来的波场函数X(x,t)。 二维傅里叶变换X(w,k)称为二维函数X(x,t)的频一波谱。其模量 为函数X(x,t)的振幅谱。 如果有效波和干扰波得平面简谐波成分有差异,有效波的平面简谐波成分与干扰波的平面简谐波成分不同的视速度传播,则可以用二维视速度滤波将他们分开,达到压制干扰,提高性噪比的目的。 二维频谱的特征:空间假频 ~~ () ()()()()i w i w X w X w e A w e ??==)(ωA ()?ω1()()tan () i r x w w x w ?- =()A w =t f ?=21N o k o k ~ X(,)k ω

在地震勘探中,用数字仪器记录地震波时,为了保持更多的波得特征,,通常利用宽频带进行记录,因此在宽频带范围内记录了各种反射波的同时,也记录了各种干扰波。有效波和干扰波得差异表现在多个方面(频谱、传播方向、能量……)。利用频谱特征的不同来压制干扰波,以突出有效波的方法就是数字滤波。 滤波器的响应特性:对滤波器能力的最普遍度量是其响应特性 滤波器的频率特性:其滤波器时间函数或滤波因子 的频谱 称为滤波器的频率特性, 滤波器的时间特性(单位脉冲响应):在时间域的表示方法中,令一个单位脉冲通过一个滤波器,然后观侧滤波器的输出,这个滤波器输出的自然过程曲线称为滤波器的时间特性。也 称滤波器的“脉冲响应” 频率响应函数应该就是 时间和频率响应函数合起来应该就是就是响应特征 滤波机理: 输出信号的振幅谱等于输入信号的振幅谱与滤波器的振幅频率特性的乘积, 输出信号的相位谱等于输入信号的相位潜与滤波器相位特性之和。 (频率) 时间域上就是褶积 褶积滤波的物理意义:它相当于把地震信息 分解为起始时间、极性、幅度各不相同的脉冲序列,令这些脉冲按时间顺序依次通过滤波器,这样在滤波器的输出端就得到对输入脉冲序列的脉冲响应,这些脉冲响应有不同的起始时间,不同的极性和不同的幅度(这个幅度是与引起它的输入脉冲幅度成正比的),将它们叠加起来就得到滤波后的输出分。 频率域滤波的步骤 (1)对已知地震记录道进行频谱分析。 (2)设计合适的滤波器 (3)进行滤波运算 (4)对输出信号谱 进行傅里叶反变换 褶积滤波的具体计算 褶积滤波的具体计算步骤如下: (1)对地震记录进行频谱分析,确定通频带中心频率 和带宽 。 (2)确定滤波因子长度N 。 )()()(~ ~~w H w X w X =)(t x ∧ )(~ w H )(t h )(~ w H ) ()()(w w w H x x Φ+Φ=Φ∧)()()(~ ~w H w X w X ?=∧)(~ w X )(t x

常用数据分析方法详细讲解

常用数据分析方法详解 目录 1、历史分析法 2、全店框架分析法 3、价格带分析法 4、三维分析法 5、增长率分析法 6、销售预测方法 1、历史分析法的概念及分类 历史分析法指将与分析期间相对应的历史同期或上期数据进行收集并对比,目的是通过数据的共性查找目前问题并确定将来变化的趋势。 *同期比较法:月度比较、季度比较、年度比较 *上期比较法:时段比较、日别对比、周间比较、 月度比较、季度比较、年度比较 历史分析法的指标 *指标名称: 销售数量、销售额、销售毛利、毛利率、贡献度、交叉比率、销售占比、客单价、客流量、经营品数动销率、无销售单品数、库存数量、库存金额、人效、坪效 *指标分类: 时间分类 ——时段、单日、周间、月度、季度、年度、任意 多个时段期间 性质分类 ——大类、中类、小类、单品 图例 2框架分析法 又叫全店诊断分析法 销量排序后,如出现50/50、40/60等情况,就是什么都能卖一点但什么都不 好卖的状况,这个时候就要对品类设置进行增加或删减,因为你的门店缺少 重点,缺少吸引顾客的东西。 如果达到10/90,也是品类出了问题。 如果是20/80或30/70、30/80,则需要改变的是商品的单品。 *单品ABC分析(PSI值的概念) 销售额权重(0.4)×单品销售额占类别比+销售数量权重(0.3) × 单品销售数量占类别比+毛利额权重(0.3)单品毛利额占类别比 *类别占比分析(大类、中类、小类) 类别销售额占比、类别毛利额占比、 类别库存数量占比、类别库存金额占比、

类别来客数占比、类别货架列占比 表格例 3价格带及销售二维分析法 首先对分析的商品按价格由低到高进行排序,然后 *指标类型:单品价格、销售额、销售数量、毛利额 *价格带曲线分布图 *价格带与销售对数图 价格带及销售数据表格 价格带分析法 4商品结构三维分析法 *一种分析商品结构是否健康、平衡的方法叫做三维分析图。在三维空间坐标上以X、Y、Z 三个坐标轴分别表示品类销售占有率、销售成长率及利润率,每个坐标又分为高、低两段,这样就得到了8种可能的位置。 *如果卖场大多数商品处于1、2、3、4的位置上,就可以认为商品结构已经达到最佳状态。以为任何一个商品的品类销售占比率、销售成长率及利润率随着其商品生命周期的变化都会有一个由低到高又转低的过程,不可能要求所有的商品同时达到最好的状态,即使达到也不可能持久。因此卖场要求的商品结构必然包括:目前虽不能获利但具有发展潜力以后将成为销售主力的新商品、目前已经达到高占有率、高成长率及高利润率的商品、目前虽保持较高利润率但成长率、占有率趋于下降的维持性商品,以及已经决定淘汰、逐步收缩的衰退型商品。 *指标值高低的分界可以用平均值或者计划值。 图例 5商品周期增长率分析法 就是将一段时期的销售增长率与时间增长率的比值来判断商品所处生命周期阶段的方法。不同比值下商品所处的生命周期阶段(表示) 如何利用商品生命周期理论指导营运(图示) 6销售预测方法[/hide] 1.jpg (67.5 KB) 1、历史分析法

地震数据处理课程设计(报告)

《地震资料数据处理》课程设计 总结报告 专业班级: 姓名: 学号: 设计时间: 指导老师: 2011年5月30日

目录 一、设计内容……………………………………………………………… (1)褶积滤波……………………………………………… (2)快变滤波……………………………………………… (3)褶积滤波与快变滤波的比较………………………… (4)设计高通滤波因子…………………………………… (5)频谱分析……………………………………………… (6)分析补零对振幅谱的影响…………………………… (7)线性褶积与循环褶积………………………………… (8)最小平方反滤波……………………………………… (9)零相位转换…………………………………………… (10)最小相位转换………………………………………… (11)静校正………………………………………………… 二、附录………………………………………………………………………… (1)附录1:相关程序…………………………………… (2)附录2:相关图件……………………………………

【附录1:有关程序】 1.褶积滤波 CCCCCCCCCCCCCCCCC 褶积滤波CCCCCCCCCCCCCCCCC PROGRAM MAIN DIMENSION X(100),H1(-50:50),H2(-50:50),Y_LOW(200),Y_BAND(200) PARAMETER (PI=3.141592654) CCCCCCCC H1是低通滤波因子,H2为带通滤波因子CCCCCC REAL X,H1,H2,Y_LOW,Y_BAND REAL dt,F,F1,F2 INTEGER I dt=0.002 F=70.0 F1=10.0 F2=80.0 OPEN(1,FILE='INPUT1.DA T',FORM='FORMATTED',STATUS='UNKNOWN') READ(1,*)(X(I),I=1,100) CCCCCCCCCCCCCCCCCC低通滤波器CCCCCCCCCCCCCCCCC DO 10 I=-50,50 IF (I.EQ.0)THEN H1(I)=2*F*PI/PI ELSE H1(I)=SIN(2*PI*F*I*dt)/(PI*I*dt) END IF 10 CONTINUE CCCCCCCCCCCCCCCC输出低通滤波因子CCCCCCCCCCCCCCCC OPEN(2,FILE='H1_LOW.DAT',FORM='FORMATTED',STATUS='UNKNOWN') WRITE(2,*)(H1(I),I=-50,50) CLOSE(2) CALL CON(X,H1,Y_LOW,100,101,200) CCCCCCCCCCCCCCCC输出滤波后的数据CCCCCCCCCCCCCCCC OPEN(3,FILE='Y_LOW.DA T',FORM='FORMATTED',STATUS='UNKNOWN') WRITE(3,*)(Y_LOW(I),I=51,150) CLOSE(3) CCCCCCCCCCCCCCCCCC带通滤波器CCCCCCCCCCCCCCCCCCCC DO 20 I=-50,50 IF(I.EQ.0)THEN H2(I)=140 ELSE H2(I)=SIN(2*PI*F2*I*dt)/(PI*I*dt)-SIN(2*PI*F1*I*dt)/(PI*I*dt) END IF 20 CONTINUE CCCCCCCCCCCCCCC输出带通滤波因子CCCCCCCCCCCCCCCCC OPEN(4,FILE='H2_BAND.DAT',FORM='FORMA TTED',STATUS='UNKNOWN')

相关文档
最新文档