應用ExcelVBA解決日常工作的實現過程

楔子

近日,有個朋友跟我聊起他工作上的煩惱。

他:“你知道,我有個鋼材店鋪,生意大小不說,有個工作特別麻煩,請的員工都不愿意做,現在是我老婆在做,做時間長了她都不想做了。你不是做軟件的嗎,你看能不能幫我想想辦法?”

他做鋼材我一直是知道的,也知道他做的業務也不算小,跟他還算是熟悉,但僅限于日常生活,之前工作上聊的并不多,也很少向我尋求幫助,現在他問起我這個問題,我相信他確實是遇到了困難。

不過,還是想逗下他:“你們這店鋪的業務我還真沒了解過,我不知道能幫你什么忙。而且你也知道,我的出場費不低還得按天計的哦,當然相對于你的業務是九牛一毛了。”

他錘了我一拳:“你這臭小子,談起錢來是六親不認啊。這樣好了,你幫我解決問題后,你跟我到我老家荔枝園去,隨便你摘,如何?”

看來他是認真了,我說:“談錢不傷感情,嘿嘿。那就先說好哈,如果能幫上你的話,那就照你說的,到時找部車去你家荔枝園拉去;而我也不保證能幫到你哈,如幫不上忙我就不找車,人去就好了。”

他開心的大笑:“我知道你肯定行的。你看,這是客戶也就是那些工頭給我們下的單,這些工頭普遍文化水平不高,單據很不規范。”

他把照片發到我微信上,就是如下那些圖片。我看了下,雖然字寫得不算好看,但還是能看出來寫的是什么,當然表達的啥意思我也沒懂,也更看不出哪不規范。

“你給我講下這單給到你們后你們要做什么,還有咋樣的是規范的呢?”我問。

他又給我看了另一張照片:“你看,這是一個有點文化的工頭單,像這樣的就挺好。”

他把圖片又發了給我,然后再把他的情況說了下:

  1. 拿到單之后,要安排工人找到相應規格(也就是直徑)的鋼材,然后按下料尺寸裁剪好,同時如果有圖片上畫的那些形狀,那就是要照著折彎,有彎1邊的,彎2邊的,還有彎3邊甚至4邊的,普遍是彎2邊的,2邊以上的少。最后還得算出重量,這樣工人能知道這個月能拿多少錢。
  2. 因此相同的規格要放在一起,畢竟相同的規格其每米重量相對來說是固定的,這樣再加上長度,還有數量,那就容易算出重量了。

畢竟跟財務打交道久了,從這看來他們是按業務量來計算的,多勞多得,這就能有效激發工人積極性,看來隔行如隔山這句老話沒錯,銷售鋼材這種看起來簡單的業務,從銷售流程到管理等等都還是有自己的門道的。一說到錢我又來勁了:“要算這么準呢,那工人工資是如何算的。”

他瞟了我一眼:“你以為呢,他們做的都是力氣活,怎么算我就不說了,一般一個工人一個月下來2萬上下。”

哇喲,他那可是三四線城市呢,比起我們一般的SAP顧問來也不低啊,看來不能小看搬磚的了。“這工資不低啊,要不我去給你搬鐵行了。”

他看了看我:“你這身板,還是算了吧,一天你都堅持不來。唉唉,說到哪去了,說正事呢,我這忙你可要幫啊,你嫂子做這個每天都得花2個小時,如果不解決,你嫂子都要鬧離婚了。”

我有點困惑了:“你想要我做什么呢?”

“你幫我想個辦法啊,把工頭發來的那些不規范的單據或圖片,做成規范的樣子。最好是在手機或電腦上,點擊一下就變過來的。先前都是一條一條記錄抄到另一張紙上然后計算器計算的,喲,這是我們之前做出來的效果。”

聊到這里,基本上清除他的問題和提出的需求了。

  • 問題:客戶單據不規范,他們拿到單后,要按規格對數據進行分類整理還有之后重量的計算等,這樣浪費了很多時間,而且容易錯漏。
  • 提出的需求:能將圖片上不規范的內容,一鍵轉換成按規格分類的規范的數據,且最好能計算出重量。

了解到這些后,我腦子一閃想到的方案是:OCR文字識別,通過OCR識別到文字后,然后放到Excel中去處理。不過接觸OCR也是幾年前了,那時是用OCR識別一些文檔上的內容以減少文字錄入工作以提高項目方案的編寫,效果還是不錯的,現在有了更多的產品包括有云計算等,識別率應該更高,不過那些都是印刷文檔,像這些手寫體的識別還得打個問號。

“你容我幾天想想,到時我想好辦法了告訴你。還有,記得荔枝的事”,我說。

“少不了你的啦。這事也不著急,啥時好了通知我下。”

然后就是天南海北胡侃略過不提。

后來,我花了一個晚上的時間,在網上找了各種OCR的軟件,有傳統的OCR如漢王、清華和在線轉換的、淘寶淘的,以及新的基于云計算的阿里、百度等,這些軟件或云產品,如果是印刷文檔不管是掃描的還是拍照的,識別率都還是不錯,而用朋友發我的圖片去試,基本識別不到幾個。

“這忙沒法幫啊”,我拿起電話打算告訴朋友,看了看時間有11點多了,那就明天再說吧。

第二天上班,忙過工作上的事情后,想到朋友這個事情,想著如果告訴他沒辦法他該是多么失望,看著電腦上打開的Excel,冒出了個念頭:“這樣的圖片,識別率再高還是不可能達到100%,何況現在的情況是20%都達不到;如果換個方向,不是考慮如何識別數字,而是考慮數據手工錄入,然后用Excel快速處理,是否更合理?”

我拿起手機撥了朋友的電話:“把圖片給你轉換過來后,你們還要計算重量的吧,我看到你那規范的圖片上也沒重量啊,那你們怎么算重量呢?”

他想了想,說:“如果我們有了那規范的內容,那算重量就很簡單了,當然下料長度我們有的要考慮余量得調整下,規格長度數量都有了就敲計算器,噼里啪啦20多分鐘一張單就計算出來了,因此這個重量也不是特重要,當然你那轉換后能算出來就更好了。”

“你咋不瞟一眼取款機就給你吐錢呢。行,我再好好想想哈”,說完就掛了。

然后我根據了解的情況,重新整了下思路:

  1. 數據采集不是重點,采集后的數據處理才是;
  2. OCR識別后的數據,人工檢查比對和整理更耗時,因此不考慮OCR;
  3. 設計格式對照單據人工錄入Excel,如此可便于對比;錄入完成后通過Excel的二次開發實現數據分類和計算,只要邏輯正確,數據沒錄錯結果就是對的。

接下來就是需求的詳細分析和實現的具體設計了。

需求及實現

1、需求分析過程

1】輸出結果樣板設計

根據朋友所說的要的那種規范圖片效果,以及要計算重量的需求,我先用Excel設計出來一個輸出結果樣稿,如圖所示,其中包含3部分:

  • 抬頭:店鋪名稱、客戶、下單日期、送貨日期、頁碼,如此方便訂單跟蹤和裝訂;

  • 數據:規格、客戶下料長度、實際長度、圖示、數量、重量、備注,如此把客戶下單和計算結果和備注的信息都可以記錄;其中一個單中相同規格在一起,且只保留第一個單元格就好方便查看;下料長度則是店鋪根據其客戶下料長度及加工余量調整后的實際長度,計算重量需要用此長度;數量按客戶單據數值;重量則用規格、實際長度、數量按公式計算;圖示是給工人加工時參考的是非常有幫助的信息,在經過詳細測試,通過制表符號以及文字下標格式能很好的體現不彎、彎1邊和彎2邊的情況,如超過2邊彎的,不多,那么圖示留空打印后再人工畫上去;備注欄則可用于備注信息包括超2邊彎的及其他補充事項,還可以留著打印出來后寫上其他內容如加工完成或運送登記等。

  • 尾注:留空,用于手工填寫整個工單的補充說明,或是之后交接等內容。

設計完成后的結果如圖示,輸出格式為橫向A4紙。

2】數據錄入樣式及規范

輸出結果那里是經過分類整理的,與原有客戶單據順序已不同,且按樣板格式要求錄入那簡直是累人,因此不能讓操作者在輸出結果那錄入,而是專門有一個方便數據錄入的表,可以照著單據逐條快速錄入。同時考慮數據的跟蹤,在“數據錄入”工作表中增加一欄“客戶下料”以記錄客戶下單時所需的長度,用“實際下料”作為之后統計用的長度。

根據輸出結果中所需的數據,錄入的記錄表設計如圖,同時對操作進行了規范。

并在此界面放了個按鈕,數據錄入完成后點擊此按鈕,將自動按輸出結果樣板的效果,一鍵轉換輸出,這則是本實現重點,見下一節。

數據錄入樣式
錄入規范

3】開發實現分析

開發的目的,是將數據錄入表中輸入的數據,按輸出結果樣板進行輸出。

要完成此目的,規劃的算法如下。

1)復制錄入數據到數據處理表并進行排序、計算、分組等處理

將“數據錄入”表中的數據復制到命名為“數據處理”的新工作表中,這樣可以保留原始錄入數據以方便核對;

然后在“數據處理”工作表對數據進行排序、重量計算、分組等處理,以做好最后的輸出準備;

2)建立輸出結果表并將處理后的數據添加到輸出頁面中

用一名為“輸出模板”的工作表存儲輸出結果的樣板,在最終結果輸出前根據數據處理后的行數(包括匯總行),確定輸出頁數后,新建一名為“輸出結果”的工作表,并按輸出頁數復制出相應數量的輸出模板到“輸出結果”工作表,并設置好打印區域;

最后將“數據處理”工作表中的數據,逐條寫入到“輸出結果”的頁面中,由此得到所需的打印結果;

3)打印設置及后處理

對輸出結果進行打印設置,包括設置為窄頁邊距、橫向、置中等;

最后將產生的工作表“數據處理”刪除,還有將工作表“輸出結果”移動到新的工作簿中保存,如此保持數據輸入后及轉換前的文件,如此得到需要打印的結果。

2、具體實現

在錄入數據的工作表“數據錄入”和用于打印輸出格式的“輸出模板”設計好后,具體的實現工作則是根據開發實現分析的思路通過VBA來完成,新建一模板后各部分代碼列出如下。

1】全局變量及主程序

Dim Sh_cal As Worksheet      '數據處理的工作表
Dim Sh_res As Worksheet      '輸出結果的工作表
Dim wb_name                  '當前工作簿的名稱
Dim wb_path                  '當前工作簿所在路徑
Dim Rec_rows As Integer      '包括頁眉的記錄行數
Dim Rec_typeRows As Integer  '不包括頁眉的記錄數量
Dim Rec_groupN As Integer    '規格數量
Dim Page_number As Integer   '輸出頁數
Dim Page_rows As Integer     '每頁能容納行數

Sub PrintSheet()
'********************
'     總處理過程
'********************
    '********獲得記錄********
    Sheets("數據錄入").Select
    Range("A1").Select
    Rec_rows = Range("B65536").End(3).Row  '包含內容行數
    Rec_typeRows = Rec_rows - 4            '記錄行數
    If Rec_typeRows <= 0 Then
       MsgBox "請輸入數據后再點擊整理"
       Exit Sub
    End If

    wb_path = ThisWorkbook.Path
    wb_name = ThisWorkbook.Name
    Page_rows = 15
    
    Application.ScreenUpdating = False
    '********刪除多余表********
    Application.DisplayAlerts = False
    For i = Sheets.Count To 1 Step -1
        If Sheets(i).Name = "打印結果" Or Sheets(i).Name = "數據處理" Then
            Sheets(i).Delete
        End If
    Next i
    
    Call Add_CalData
    Call Add_PrintData
    Call Print_set
    Call Move_data
    Application.ScreenUpdating = True

End Sub

2】數據處理

Sub Add_CalData()
'********************
'     數據處理
'********************

    '********復制數據錄入內容********
    Sheets("數據錄入").Select
    Range("A1:J" & Rec_rows).Select   '復制數據
    Selection.Copy

   '********新建數據處理表********
    Set Sh_cal = Worksheets.Add(After:=Sheets("打印模板"))
    Sh_cal.Name = "數據處理"
    Sh_cal.Select

    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveSheet.Paste

    Cells(4, 11) = "重量"
    Cells(4, 12) = "符號"
    For i = 5 To Rec_rows
        '填寫實際長度
        If Cells(i, 5) = "" And Cells(i, 3) <> "" Then
           Cells(i, 5) = Cells(i, 3)
        End If
    Next i

    '排序數據
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add Key:=Range("B5:B" & Rec_rows), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveSheet.Sort.SortFields.Add Key:=Range("E5:E" & Rec_rows), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveSheet.Sort
        .SetRange Range("A5:J" & Rec_rows)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

    '插入空行和處理備注
    Rec_groupN = 0
    For i = Rec_rows To 5 Step -1
        prv_value = Cells(i + 1, 2).Value
        next_value = Cells(i, 2).Value
        Cells(i, 12) = "φ"
        If Cells(i, 10) = "" And Cells(i, 9) <> "" Then
           Cells(i, 10) = "多邊彎"     '如果備注非空且“其他形狀”含值,則設置備注為“多邊折彎”
        End If

        If next_value <> prv_value Then
            Rows(i + 1).Insert shift:=xlDown
            Cells(i + 1, 5).Value = "合計"
            Rec_groupN = Rec_groupN + 1
        End If
    Next i

    '插入行后記錄數量
    Rec_rows = Rec_rows + Rec_groupN
    Rec_typeRows = Rec_typeRows + Rec_groupN
    '頁數
    Page_number = CInt(Rec_typeRows / (Page_rows * 2) + 0.5)
       

    '重量數量合計值更新
    sum_weight = 0
    sum_qty = 0
    For i = 5 To Rec_rows
        '計算重量數量和填寫合計值
        If Cells(i, 5) <> "合計" Then
            Cells(i, 11) = Cells(i, 2) * Cells(i, 2) * 0.00617 * Cells(i, 5) * Cells(i, 4) '計算重量
            sum_weight = sum_weight + Cells(i, 11)
            sum_qty = sum_qty + Cells(i, 4)
         Else
            Cells(i, 11).Value = sum_weight
            Cells(i, 4).Value = sum_qty
            sum_weight = 0
            sum_qty = 0
        End If
     Next i

    '清除規格重復值,方法1
     For i = 5 To Rec_rows
      If Cells(i, 2) <> "" Then
        For j = i + 1 To Rec_rows
          If Cells(j, 2) = Cells(i, 2) Then
             Cells(j, 2).Value = ""
             Cells(j, 12).Value = ""
          ElseIf Cells(j, 2) = "" Then
             Exit For
          End If
        Next j
        i = j
      End If
     Next i

'     '清除規格重復值,方法2
'     For i = Rec_rows To 5 Step -1
'        If i > 5 And Cells(i, 2) = Cells(i - 1, 2) And Cells(i, 2) <> "" Then
'            Cells(i, 2).Value = ""
'            Cells(i, 12).Value = ""
'        End If
'     Next i
End Sub

3】打印結果處理

Sub Add_PrintData()
'********************
'     打印結果處理
'********************

    '********復制打印模板數據********
    Sheets("打印模板").Select
    Range("B2:AD26").Select
    Selection.Copy

    '********新建打印結果表********
    Set Sh_res = Worksheets.Add(After:=Sheets("數據處理"))
    Sh_res.Name = "打印結果"
    Sh_res.Select

    Cells.Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1                 '設置表格底色為白色
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    
    ActiveSheet.PageSetup.PrintArea = ""
    ActiveSheet.PageSetup.PrintArea = "$B:$AD"
    ActiveSheet.ResetAllPageBreaks

    '********粘貼數據********
    j = 1
    For i = 1 To Page_number
        Range("B" & j + 1).Select
        Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        ActiveSheet.Paste
        Cells(3 + j, 5) = Sh_cal.Cells(1, 3)
        Cells(3 + j, 14) = Sh_cal.Cells(2, 3)
        Cells(3 + j, 20) = Sh_cal.Cells(3, 3)
        Cells(3 + j, 29) = i & "/" & Page_number
        
        If i > 1 Then
            Range("B" & j).Select                        '第2頁開始添加分頁符
            ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell   '添加分頁符
        End If
        j = j + 26                                        '下一頁行數
    Next i

    '********填充數據********
    For i = 5 To Rec_rows
       cell_page = Fix((i - 5) / (Page_rows * 2))         '得到記錄輸出所在頁數,從0開始表示第1頁,1表示第2頁,以此類推
       j = (i - 5) Mod 15 + cell_page * 26 + 7            '如果記錄行數超過一頁能容納數量,則換頁輸出
       cell_col = Fix((i - 4) / Page_rows)
       If cell_col Mod 2 <> 0 Then                        '如果記錄行數整除頁面一欄容納行數為奇數,則在頁面右欄輸出
            k = 14
        Else
            k = 0
        End If

        Cells(j, k + 3) = Sh_cal.Cells(i, 12)
        Cells(j, k + 4) = Sh_cal.Cells(i, 2)
        'Cells(j, k + 5) = Sh_cal.Cells(i, 3)  客戶下料
        Cells(j, k + 5) = Sh_cal.Cells(i, 5)
        Cells(j, k + 13) = Sh_cal.Cells(i, 4)
        Cells(j, k + 14) = Sh_cal.Cells(i, 11)
        Cells(j, k + 15) = Sh_cal.Cells(i, 10)
        '示意圖,如果“其他形狀”沒有值或者“實際下料”為“合計”,則7~13單元格留空,反之賦值
        If Sh_cal.Cells(i, 9) <> "" Or Sh_cal.Cells(i, 5) = "合計" Then
        Else
            Cells(j, k + 6) = Sh_cal.Cells(i, 6)
            If Sh_cal.Cells(i, 6) <> "" Then
               Cells(j, k + 7) = "┏"
               Cells(j, k + 8) = "━━"
               Cells(j, k + 10) = "━━"
            End If
    
            Cells(j, k + 9) = Sh_cal.Cells(i, 7)
            If Sh_cal.Cells(i, k + 7) <> "" Then
               Cells(j, k + 8) = "━━"
               Cells(j, k + 10) = "━━"
            Else
               Cells(j, k + 9) = "    "
            End If
    
            Cells(j, k + 12) = Sh_cal.Cells(i, 8)
            If Sh_cal.Cells(i, 8) <> "" Then
               Cells(j, k + 11) = "┓"
            End If
         End If
        
        j = j + 1
    Next i
    
    Application.DisplayAlerts = True
End Sub

4】打印設置及后處理

打印設置

Sub Print_set()
'********************
'    打印設置
'********************
    '對于excel2010及以上版本,包含printcommunication屬性可以加速打印設置,2007沒有就會比較慢
    If Val(Application.Version) >= 14 And Left(Application.OperatingSystem, 3) = "Win" Then
        Application.PrintCommunication = False
    End If
    With ActiveSheet.PageSetup
        '頁邊距設置
        .LeftMargin = Application.InchesToPoints(0.25)
        .RightMargin = Application.InchesToPoints(0.25)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        '橫向打印及設置為置中
        .Orientation = xlLandscape
        .CenterHorizontally = True
        '縮放為1頁寬
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 999
    End With
    If Val(Application.Version) >= 14 And Left(Application.OperatingSystem, 3) = "Win" Then
        Application.PrintCommunication = True
    End If

End Sub

后處理

Sub Move_data()
'********************
'    移動數據到工作簿
'********************
    Dim printFile As String
    Dim wbk As Workbook
    
    file_name = Left(wb_name, InStr(wb_name, ".") - 1)
    print_name = file_name & "_打印結果.xlsx"
    print_file = wb_path & "\" & print_name

    On Error Resume Next
    Set wbk = Workbooks(print_name)                        '判斷工作簿是否打開
    If Not wbk Then
       Workbooks(print_name).Close
    End If
    
    '刪除數據處理工作表
    Application.DisplayAlerts = False
    Sheets("數據處理").Delete
    
    '移動打印結果到新的工作簿
    Sheets("打印結果").Move
    Sheets("打印結果").Select
    Range("C2").Select
    'ActiveWorkbook.Save
    ActiveWorkbook.SaveAs Filename:=print_file, _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    Application.DisplayAlerts = True
    '保存原始記錄
    Windows(wb_name).Activate
    Sheets("數據錄入").Select
    Range("A5").Select
    ActiveWorkbook.Save
    
    Windows(print_name).Activate
End Sub

最后在“數據錄入”工作表中添加一按鈕“整理”并指向主程序對應的宏,則完成了整個功能需求的實現。

后記

因編者有其他工作,本需求都是在下班后空余時間進行,從最初始朋友提出需求開始到最后完成,經過了2周左右,其中需求交流大約1個小時不到,開發分析和確定大約2個小時,文檔設計和代碼編寫花了3個晚上共計9個小時左右,最后與朋友測試和調整則用了大約3個小時,也就是總計時間在15個小時左右,反倒是編寫這個文檔,倒是斷斷續續花了幾個晚上的時間才寫完。

對于很多有一定VBA基礎的讀者來說,此文所述需求和實現并不難;與之前項目實施過程中經常做的數據整理、BPC預算等做的開發相比,也并沒有很特別之處;而且如上實現代碼還有很多可以優化的地方,如數據的排序、計算、分組等處理,以及數據添加到輸出結果等,還可以代碼更為簡化及調整算法提升處理速度;在開發前后也沒想過要寫一個文檔記錄下來,考慮到知識的系統性,之前很少編寫一個文檔,而是比較傾向于編寫系統性的文檔。

而現在,這個文檔也寫出來展現給各讀者,啰嗦了那么多,想分享的主要是2點:

其一是向大家分享VBA的使用

如在日常工作或生活的過程中遇到數據處理且繁瑣的,可以考慮編寫VBA來提高效率,如項目中各種模塊的數據整理,是非常有用的;

而且VBA本身難度并不大同時也不需要像Python、Java、Ruby等那樣還需要部署開發環境,只要裝好Office就可以了;

然后通過VBA還可理解和掌握編程的知識,各種語言其具體的語法、規范、學習難度等可能不一樣,但殊途同歸,都是為了滿足最終的需求,況且隨著現在硬件網絡等技術的提升,開發人員更多的是考慮如何實現,而性能則其次,如今函數式編程逐漸熱門也是如此。

其二是想跟大家分享一直以來的觀點:與實現本身相比,理解需求和確定實現思路更為重要

在我們做項目的過程中,包括在業務模塊如FICO、MM、SD、PP等的實施,以及ABAP的開發,還有BI的設計等等,都需要我們充分地理解用戶的問題、需求,然后綜合我們的能力和經驗給出可行的解決方案,不要給用戶帶偏了,用戶知道他的問題,但其對解決辦法并不一定知道的,用戶想要的未必就是最終所要的。

方向錯了,結果將很難是對的,輕則延期,重則項目暫停及重來,就像此需求,如果是以OCR為方向,即使識別率再高,出來結果后也很難達到我朋友所要的效果啊。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 專業考題類型管理運行工作負責人一般作業考題內容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規程...
    小白兔去釣魚閱讀 9,050評論 0 13
  • Web網站測試流程和方法(轉載) 1測試流程與方法 1.1測試流程 進行正式測試之前,應先確定如何開展測試,不可盲...
    夏了夏夏夏天閱讀 1,316評論 0 0
  • 莫洛的《珍珠與蚌》通過對一粒普通的沙子,不經意間被卷入蚌后,在蚌的艱難孕育和長期磨礪中,最后一粒毫不起眼的普通沙子...
    邢欣Magpie閱讀 1,118評論 0 1
  • 做老師的這些年,我發現孩子似乎越來越嬌氣,越來越玻璃心。以下是一年級的孩子時常有的投訴,讓人聽來實在無法回應。 老...
    穎之老師閱讀 297評論 0 3
  • 去愛吧 像不曾受過傷一樣跳舞吧 像沒有人欣賞一樣唱歌吧 像沒有人聆聽一樣干活吧 像不需要錢一樣生活吧 像今天是末日一樣
    Crassus閱讀 257評論 0 0