• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      海底管道鋼管涂敷多人協(xié)同錄入數(shù)據(jù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

      2018-02-05 09:16:54胡建飛焦振峰
      軟件 2018年1期
      關(guān)鍵詞:涂敷數(shù)組控件

      胡建飛,焦振峰,張 祥,丁 靖

      (1. 中海油能源發(fā)展股份有限公司管道工程分公司,天津 300452;2. 海油發(fā)展珠海管道工程有限公司,珠海 519000)

      0 引言

      管道涂敷是海底管道建設(shè)的一個(gè)重要組成部分,海油發(fā)展珠海管道工程有限公司是一家主要從事海底管道涂敷的企業(yè)。在涂敷過(guò)程中需要記錄大量生產(chǎn)檢驗(yàn)數(shù)據(jù),在沒(méi)有計(jì)算機(jī)技術(shù)支持的時(shí)代使用紙張記錄,造成報(bào)表數(shù)量繁多,數(shù)據(jù)無(wú)法查詢等缺點(diǎn)。

      隨著計(jì)算機(jī)技術(shù)的引用,數(shù)據(jù)無(wú)法查詢慢慢得到改善,初期我們使用單機(jī)數(shù)據(jù)庫(kù)來(lái)記錄生產(chǎn)檢驗(yàn)數(shù)據(jù),但新的問(wèn)題隨之而來(lái):需要配備專(zhuān)門(mén)的數(shù)據(jù)錄入人員,查詢也只能通過(guò)一臺(tái)電腦。

      隨著ASP.NET技術(shù)的長(zhǎng)足發(fā)展,B/S模式的網(wǎng)站式軟件越來(lái)越受到開(kāi)發(fā)者的關(guān)注,使用ASP.NET開(kāi)發(fā)新一代的數(shù)據(jù)跟蹤軟件成為海油發(fā)展珠海管道工程有限公司2017年的科研項(xiàng)目之一。

      1 海底油氣管道涂敷簡(jiǎn)介

      海洋中的油氣田通過(guò)管道把油氣輸送到陸地上,管道由鋼管建造,鋼管要在海水中能夠長(zhǎng)期使用,必須要在鋼管表面涂一層防腐層,現(xiàn)在常用的工藝叫做三層結(jié)構(gòu)聚乙烯防腐涂層,簡(jiǎn)寫(xiě)做3LPE。另外一種防腐的工藝是安裝犧牲陽(yáng)極,即在鋼管通過(guò)導(dǎo)線連接一定重量的鋁塊,鋼管和鋁塊構(gòu)成原電池,通過(guò)不斷腐蝕陽(yáng)極鋁塊的方式來(lái)保護(hù)鋼管。

      鋼管是中空的,整體比重和海水相差不大,為了能讓鋼管穩(wěn)定的沉在海底,需要在鋼管外部加一層混凝土涂層,增大鋼管的整體比重。

      鋼管涂敷的第一步工序是接收鋼管,鋼管檢驗(yàn)合格后可進(jìn)行3LPE、安裝陽(yáng)極、配重等各道涂敷工序,涂敷完成后進(jìn)行發(fā)運(yùn),所有的步驟都要記錄相關(guān)數(shù)據(jù)。

      如果所有步驟都使用紙張記錄數(shù)據(jù)的話,這些分布的數(shù)據(jù)要最后通過(guò)一個(gè)專(zhuān)門(mén)的數(shù)據(jù)錄入人員錄入電腦,需要設(shè)置專(zhuān)門(mén)的數(shù)據(jù)錄入人員,且抄寫(xiě)紙質(zhì)記錄時(shí)發(fā)生的錯(cuò)誤無(wú)法及時(shí)發(fā)現(xiàn),要解決這些問(wèn)題最佳的方式就是開(kāi)發(fā)B/S模式數(shù)據(jù)庫(kù)軟件。

      2 開(kāi)發(fā)工具簡(jiǎn)介

      開(kāi)發(fā)B/S模式軟件有很多工具可以供選擇,當(dāng)前企業(yè)開(kāi)發(fā)小型的 B/S模式軟件以 ASP.NET為首選。原因如下:[1,3,4,5]

      第一,ASP.NET可以使用多種語(yǔ)言,如 C#、VB script等,都是最常見(jiàn)的編程語(yǔ)言,掌握的人非常多。

      第二,ASP.NET學(xué)習(xí)入門(mén)門(mén)檻低,上手快,企業(yè)內(nèi)部交接工作時(shí)可選擇的人力資源比較廣。

      本次軟件開(kāi)發(fā)服務(wù)器采用了 windows server 2008,開(kāi)發(fā)工具使用 ASP.NET,開(kāi)發(fā)語(yǔ)言使用 C#語(yǔ)言,后臺(tái)服務(wù)器使用SQL server2008。

      3 硬件系統(tǒng)設(shè)計(jì)

      考慮到車(chē)間質(zhì)檢員位置不固定,經(jīng)常要走來(lái)走去,所以輸入設(shè)備采用無(wú)線手持設(shè)備,網(wǎng)絡(luò)設(shè)計(jì)主要采用了無(wú)線網(wǎng)絡(luò)。[2]

      網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。

      服務(wù)器安裝在辦公樓機(jī)房,通過(guò)光纜連接到車(chē)間的弱電機(jī)房,由車(chē)間的弱電機(jī)房連接分布在車(chē)間內(nèi)外的數(shù)個(gè)無(wú)線接入點(diǎn)AP。

      服務(wù)器配置兩塊網(wǎng)卡,一塊網(wǎng)卡連接公司局域網(wǎng),另外一塊網(wǎng)卡連接中海油的VPN網(wǎng)絡(luò),這樣可以在任意地點(diǎn)通過(guò) VPN網(wǎng)絡(luò)訪問(wèn)服務(wù)器查詢生產(chǎn)數(shù)據(jù)。

      圖1 網(wǎng)絡(luò)布線圖Fig.1 Network cabling diagram

      4 軟件設(shè)計(jì)

      4.1 密碼加密算法[4,8,10]

      因?yàn)楸鞠到y(tǒng)要多人協(xié)同錄入數(shù)據(jù),數(shù)據(jù)的安全性非常重要,一定要對(duì)各個(gè)操作者設(shè)置不同的權(quán)限,首先要做的就是通過(guò)登錄確定操作者的身份。

      密碼對(duì)于每個(gè)人都是隱私的數(shù)據(jù),所以一定要加密存儲(chǔ),一為安全,二為操作者可以放心設(shè)置自己常用的密碼,不用擔(dān)心泄露的問(wèn)題。

      密碼加密算法通常是用.NET內(nèi)置的MD5加密算法,雖然MD5加密算法一般無(wú)法破譯,但我們還是對(duì)MD5生成的密碼進(jìn)行簡(jiǎn)單的改造,成為我們獨(dú)有的加密算法,使其被破解變得不可能。

      加密函數(shù)如下:

      public string GetMD5(string strPwd)

      {

      string pwd = "";

      MD5 md5 = MD5.Create();//實(shí)例化一個(gè)md5對(duì)象

      byte[] s = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strPwd)); // 加密后是一個(gè)字節(jié)類(lèi)型的數(shù)組

      s.Reverse();//翻轉(zhuǎn)生成的MD5碼

      for (int i = 3; i < s.Length - 1; i++)//通過(guò)使用循環(huán),將字節(jié)類(lèi)型的數(shù)組轉(zhuǎn)換為字符串,只取MD5碼的一部分,這樣惡意訪問(wèn)者無(wú)法知道取的是哪幾位

      {

      pwd = pwd + (s[i] < 198 ? s[i] + 28 :s[i]).ToString("X");

      //將得到的字符串使用十六進(jìn)制類(lèi)型格式。格式后的字符是小寫(xiě)的字母,如果使用大寫(xiě)(X)則格式后的字符是大寫(xiě)字符

      }

      return pwd;

      }

      通過(guò)以上算法,用戶設(shè)置的密碼被轉(zhuǎn)化為一串大寫(xiě)字母存放在數(shù)據(jù)庫(kù)中,除了設(shè)置者本人,任何人無(wú)法得知用戶設(shè)置的密碼。

      用戶登錄時(shí),用戶輸入的密碼通過(guò)相同的算法生成一串大寫(xiě)字母,和數(shù)據(jù)庫(kù)存儲(chǔ)的進(jìn)行比對(duì),如果相同,則認(rèn)為輸入了正確的密碼,服務(wù)器建立一個(gè)以用戶名稱(chēng)為ID的session對(duì)象,用戶對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作時(shí),服務(wù)器通過(guò)這個(gè)session對(duì)象辨別用戶身份。

      4.2 驗(yàn)證碼技術(shù)[6,7]

      企業(yè)的服務(wù)器雖然不會(huì)有黑客來(lái)攻擊,但企業(yè)內(nèi)別有用心之人卻不得不防,如果登錄僅僅輸入一個(gè)用戶名和密碼,那在網(wǎng)絡(luò)上下載一個(gè)暴力密碼破解器就可以破解密碼,而且會(huì)對(duì)服務(wù)器造成比較大的負(fù)擔(dān),為解決這一問(wèn)題,同大多網(wǎng)站一樣,本系統(tǒng)使用了驗(yàn)證碼技術(shù)。

      首先用函數(shù)生成一個(gè)四位的隨機(jī)數(shù),轉(zhuǎn)化為字符串validateNum,通過(guò)下面的函數(shù)轉(zhuǎn)化為略不清晰圖片,在登錄框的驗(yàn)證碼輸入框后顯示這個(gè)圖片,因隨機(jī)數(shù)函數(shù)每次生成的字符串都不一樣,可以保證每次驗(yàn)證碼都是隨機(jī)的,驗(yàn)證碼圖片生成函數(shù)如下:

      private void CreateImage(string validateNum)

      {

      if (validateNum == null || validateNum.Trim() ==

      String.Empty) return;

      System.Drawing.Bitmap image = new System.Drawing.

      Bitmap(validateNum.Length * 12 + 10, 22); //生成Bitmap圖像

      Graphics g = Graphics.FromImage(image);

      {

      Random random = new Random();

      g.Clear(Color.White); //清空?qǐng)D片背景色

      for (int i = 0; i < 25; i++)//畫(huà)圖片的背景噪音線

      {

      int x1 = random.Next(image.Width);

      int x2 = random.Next(image.Width);

      int y1 = random.Next(image.Height);

      int y2 = random.Next(image.Height);

      g.DrawLine(new Pen(Color.Silver), x1, y1,x2, y2);

      }

      Font font = new System.Drawing.Font("Arial", 12,(System.Drawing.FontStyle.Bold |

      System.Drawing.FontStyle.Italic));

      System.Drawing.Drawing2D.LinearGradientBrush

      brush = new System.Drawing.Drawing2D.LinearGrad

      ientBrush(new Rectangle(0, 0, image.Width, image.

      Height), Color.Blue, Color.DarkRed, 1.2f, true);

      g.DrawString(validateNum, font, brush, 2, 2);

      //畫(huà)圖片的前景噪音點(diǎn)

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

      {

      int x = random.Next(image.Width);

      int y = random.Next(image.Height);

      image.SetPixel(x, y,

      Color.FromArgb(random.Next()));

      }

      g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.

      Width - 1, image.Height - 1); //畫(huà)圖片的邊框線

      System.IO.MemoryStream ms = new

      System.IO.MemoryStream();

      image.Save(ms,

      System.Drawing.Imaging.ImageFormat.Gif); //將圖像保存到指定的流

      Response.ClearContent();

      Response.ContentType = "image/Gif";Response.BinaryWrite(ms.ToArray());

      }

      用戶提交賬戶密碼時(shí),必須先正確輸入這個(gè)驗(yàn)證碼,系統(tǒng)才會(huì)去驗(yàn)證賬戶密碼。

      4.3 各工序軟件實(shí)現(xiàn)舉例--鋼管垛位圖軟件實(shí)現(xiàn)方式

      鋼管的存儲(chǔ)是以鋼管垛的方式進(jìn)行的,如圖 2所示。

      圖2 鋼管垛Fig.2 Steel pipe stacking

      每垛鋼管數(shù)量不固定,少則幾十根,多則幾百根,如果用軟件直觀的顯示出來(lái),控件數(shù)組是最好的選擇,下面我們使用 Textbox控件數(shù)組按鋼管堆垛的樣式去顯示,代碼如下[6,9]:

      pp.Attributes.Add("style","white-space:nowrap");

      pp.Controls.Clear();

      //頁(yè)面中建立一個(gè)名為 pp的 panel控件,下面所建立的所有控件數(shù)組都加入到這個(gè) pp中,用 pp指定我們的垛位圖要顯示在網(wǎng)頁(yè)中的位置

      ppp = new Panel[Convert.ToInt16(ViewState["y"])];

      //根據(jù)垛位圖的行數(shù)y建立panel數(shù)組,每行用一個(gè)panel

      TT = new TextBox[Convert.ToInt16(ViewState["x"]),Convert.ToInt16(ViewState["y"])];

      //根據(jù)垛位圖的行數(shù)y和列數(shù)x建立textbox二維數(shù)組if (ViewState["x"] != null) //從頁(yè)面別的函數(shù)傳遞過(guò)來(lái)的垛位列x值

      {

      for (int i = Convert.ToInt16(ViewState["y"]) - 1; i>= 0; i--)

      {//每循壞一次,寫(xiě)一行

      ppp[i] = new Panel();

      pp.Controls.Add(ppp[i]); //加入當(dāng)前行的panel控件

      if (i % 2 == 0)

      {

      TextBox tempt = new TextBox();

      tempt.Width = 50;

      tempt.Height = 20;

      tempt.BorderWidth = 0;

      ppp[i].Controls.Add(tempt);

      tempt.Enabled = false;

      // 偶數(shù)行建立一個(gè)長(zhǎng)度為 50且不可使用的textbox控件用來(lái)調(diào)整本行控件位置,以達(dá)到鋼管兩層之間互相交叉的效果

      }

      for (int j = 0; j < Convert.ToInt16(ViewState["x"]); j++)

      {

      TT[j, i] = new TextBox();

      ppp[i].Controls.Add(BB[j, i]);

      ppp[i].Controls.Add(TT[j, i]);

      TT[j, i].BorderWidth = 1;

      TT[j, i].Width = 98;

      TT[j, i].Height = 18;

      //將這一行所有的textbox控件加入到這一行的pannel控件ppp。

      TT[j, i].TextChanged += new EventHandler(TextBox1_TextChanged);

      //為每一個(gè)textbox控件添加相應(yīng)方法

      TT[j, i].Text = "";

      TT[j, i].ID = "T_" + j.ToString() + "_" +i.ToString();}}}

      //初始化textbox控件顯示的內(nèi)容和ID

      圖3是代碼運(yùn)行并寫(xiě)入管號(hào)后的樣式,數(shù)據(jù)庫(kù)記錄下每個(gè)管號(hào)的行y和列x值,在需要的時(shí)候可以將鋼管垛位圖顯示在網(wǎng)頁(yè)上,通過(guò)數(shù)據(jù)庫(kù)查詢可以精確知道任意一個(gè)鋼管的位置。建立新的垛位時(shí),我們可以通過(guò)調(diào)整行數(shù)y和列數(shù)x調(diào)整鋼管垛的大小。

      需要注意的是,控件數(shù)組在網(wǎng)頁(yè)每次刷新時(shí)都需要重新加載一次,就是說(shuō)我們上面顯示控件數(shù)組的代碼每次頁(yè)面加載都要運(yùn)行一次,這和我們大多數(shù)人的認(rèn)識(shí)不同,重新加載這些控件數(shù)組,控件顯示的內(nèi)容并不會(huì)丟失,服務(wù)器使用viewstate對(duì)象記錄每個(gè)控件的信息。

      圖3 鋼管垛Fig.3 Steel pipe stacking

      5 結(jié)語(yǔ)

      海油發(fā)展珠海管道工程有限公司使用ASP.NET自主研發(fā)的數(shù)據(jù)跟蹤系統(tǒng)軟件將鋼管涂敷數(shù)據(jù)記錄實(shí)現(xiàn)了網(wǎng)絡(luò)化多人協(xié)同錄入,每個(gè)用戶可以設(shè)置不同的權(quán)限,保證了數(shù)據(jù)的安全性,同時(shí)取消了紙質(zhì)報(bào)表的記錄,減輕了數(shù)據(jù)記錄的工作量。批量減少紙質(zhì)報(bào)表的數(shù)量,為后期完工文件的整理節(jié)省大量人力物力。數(shù)據(jù)共享在服務(wù)器上,可通過(guò)網(wǎng)絡(luò)在服務(wù)器上查詢生產(chǎn)檢驗(yàn)數(shù)據(jù),信息流轉(zhuǎn)加快,初步實(shí)現(xiàn)了這一工作的信息化。

      [1] 龐婭娟, 房大偉, 呂雙. ASP.NET從入門(mén)到精通, 清華大學(xué)出版社.

      [2] JavaScript從入門(mén)到精通, 清華大學(xué)出版社.

      [3] 蔣順業(yè). ASP.NET應(yīng)用程序開(kāi)發(fā)軟件設(shè)計(jì)與應(yīng)用研究[J].軟件, 2017, 37(10): 95-97.

      [4] 蘭洋, 蔣順業(yè). 基于asp.net的FMS生產(chǎn)管理系統(tǒng)[J]. 軟件,2013, 34(5): 76-78.

      [5] 余翠蘭. 基于ASP.NET的學(xué)生住宿管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件, 2014, 35(4): 37-41.

      [6] 賈志先. 袁芳. 基于ASP.NET數(shù)據(jù)分頁(yè)導(dǎo)航的設(shè)計(jì)與應(yīng)用[J]. 軟件, 2015, 36(12): 60-62.

      [7] 周瑞. 從零開(kāi)始學(xué)JavaScript, 電子工業(yè)出版社.

      [8] VB.NET 2005程序設(shè)計(jì)從入門(mén)到精通, 人民郵電出版社.

      [9] Java從入門(mén)到精通, 清華大學(xué)出版社.

      [10] 袁芳. 教學(xué)做一體化ASP.NET課程教學(xué)改革與實(shí)踐[J]. 軟件, 2014, 35(11): 126-128.

      猜你喜歡
      涂敷數(shù)組控件
      JAVA稀疏矩陣算法
      正交試驗(yàn)設(shè)計(jì)在高精度角度傳感器粉末涂敷中的應(yīng)用
      JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
      關(guān)于.net控件數(shù)組的探討
      軟件(2018年7期)2018-08-13 09:44:42
      尋找勾股數(shù)組的歷程
      涂敷輥的修磨工藝
      薄膜雙面自動(dòng)對(duì)位間歇式涂敷方法
      VB數(shù)組在for循環(huán)中的應(yīng)用
      考試周刊(2012年88期)2012-04-29 04:36:47
      就這樣玩會(huì)VBA中常見(jiàn)的自定義控件
      電腦迷(2012年24期)2012-04-29 00:44:03
      部分涂敷目標(biāo)的RCS仿真計(jì)算
      囊谦县| 扎赉特旗| 东明县| 茌平县| 荃湾区| 永泰县| 紫阳县| 河曲县| 四子王旗| 察隅县| 东城区| 辽宁省| 舒城县| 达孜县| 卓资县| 莱芜市| 芒康县| 宁强县| 尉犁县| 正蓝旗| 那坡县| 清水县| 白城市| 济阳县| 慈利县| 邛崃市| 锦屏县| 华蓥市| 康定县| 陇西县| 黔西县| 汝城县| 夏津县| 灌云县| 延寿县| 云林县| 桐梓县| 中牟县| 襄汾县| 白山市| 周至县|