軟件工程課程設計編碼與測試_第1頁
軟件工程課程設計編碼與測試_第2頁
軟件工程課程設計編碼與測試_第3頁
軟件工程課程設計編碼與測試_第4頁
軟件工程課程設計編碼與測試_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

./淮海工學院計算機工程學院實驗報告書課程名:《軟件工程》題目:圖著色理論在倉庫系統中的應用——編碼和測試班級:網絡122學號:2012122683姓名:葉婷評語:評語:成績:指導教師:批閱時間:年月日.1、實驗目的與要求〔1選定項目中以模塊,給出詳細設計結果與C語言代碼,對其使用白盒和黑盒測試技術設計若干測試用例。然后,使用測試用例進行實際測試操作實驗,并給出測試結果;〔2了解一些典型的自動化測試軟件和方法,建議有條件可下載、安裝MercuryInteractive公司的負載測試工具LoadRunner、功能測試工具WinRunner和測試管理工具TestDirector;IBM-Rational公司的測試套件RationalSuiteTestStudio的RationalRobot、RationalTestManagerhe、RationalQuantify等工具。2、實驗容一、編碼1.1系統界面設計描述當用戶啟動程序后真接顯示主界面,在主界面中有‘用戶管理’,‘商品入庫’,‘商品出庫’,‘庫存管理’以及退出系統。當用戶在未登錄的狀態下執行任何操作時系統會自動判斷是否已經登錄,若用戶還沒有登錄則顯示登錄界面,讓用戶進行登錄。若登錄的不存在則表示該用戶還不是員工,故需要用戶重新申請新的用戶,新用戶的類型為普通員工,當普通用戶已經通過管理員審核,并且分配了相關的權限后就可以登錄系統。若用戶是管理員則該用戶可以對普通用戶進行相關的修改和刪除,而且還可以修改、查詢、刪除庫存表及商品出入庫表中的相關信息。若用戶是普通員工則只能進行商品的出入庫及查詢。登錄界面設計用戶通過輸入登錄的賬號和密碼及類型系統進行驗證商品出入庫界面設計庫存界面設計1.2編碼登錄界面〔主要代碼publicbooleanisExistsEmply<Stringid>{ booleanflags=false; try { intcount=0; Stringsql1="select員工號fromUserswhere員工號=?"; PreparedStatementps=conn.prepareStatement<sql1>; ps.setString<1,<String>id>; ResultSetresult=ps.executeQuery<>; while<result.next<>> { count=result.getRow<>; } result.close<>; ps.close<>; if<count>0> { this.UID=id; flags=true; getInfo<id>; returnflags; } else { error.errorDialog<<String>id>; } } catch<Exceptione> { e.printStackTrace<>; } returnflags; } //根據‘工號’分別獲取對應的的信息 publicvoidgetInfo<Stringuid>{ try { Stringsql2="select員工,密碼,員工類型,是否員工fromUserswhere員工號=?"; PreparedStatementpps=conn.prepareStatement<sql2>; pps.setString<1,uid>; ResultSetresult=pps.executeQuery<>; while<result.next<>> { name=result.getString<1>.toString<>.trim<>; password=result.getString<2>.trim<>; employtype=result.getString<3>.toString<>.trim<>; emplooy=result.getString<4>.toString<>.trim<>; } result.close<>; pps.close<>; } catch<Exceptione> { e.printStackTrace<>; } } //對登錄的'工號'進行密碼驗證 publicbooleanlogin<Stringid,Stringpwd,Stringtype>{ booleanisEmploy=false; try { if<id.equals<UID>&&pwd.equals<password>&&type.equals<employtype>> { isEmploy=true; returnisEmploy; } else { returnisEmploy; } } catch<Exceptione> { e.printStackTrace<>; } returnisEmploy; } //判斷用戶是否已經通過管理員的審核 publicbooleanY_NEmply<>{ booleanisE=false; if<this.emplooy.equals<"是">> { System.out.println<"員工號:"+UID+"已經通過了審核">; main.showMainFarme<>; isE=true; returnisE; } elseif<this.emplooy.equals<"否">> { error.noEmplo0y<UID>; returnisE; } returnisE; }出庫界面〔主要代碼publicObjectsetSdata2<>{ try { Stringsql2="select*fromOutStore"; Statementst=conn.createStatement<>; ResultSetresult=st.executeQuery<sql2>; Sdata2=newObject[Row2][Column2]; intn=0; while<result.next<>> { Sdata2[n][0]=result.getString<1>.toString<>.trim<>; Sdata2[n][1]=result.getString<2>.toString<>.trim<>; Sdata2[n][2]=result.getString<3>.toString<>.trim<>; Sdata2[n][3]=result.getString<4>.toString<>.trim<>; Sdata2[n][4]=result.getString<5>.toString<>.trim<>; Sdata2[n][5]=result.getString<6>.toString<>.trim<>; n++; } result.close<>; st.close<>; returnSdata2; } catch<Exceptione> { e.printStackTrace<>; } returnSdata2; } //先判斷庫存表中是否存在要出庫的商品編號 publicbooleanisExistsGid<Stringgid>{ booleanflags=false; try { intcount=0; Stringsql3="selectcount<商品編號>fromStoreManagewhere商品編號=?"; PreparedStatementps=conn.prepareStatement<sql3>; ps.setString<1,gid>; ResultSetresult=ps.executeQuery<>; while<result.next<>> { count++; } result.close<>; ps.close<>; if<count>0> { flags=true; returnflags; } else { returnflags; } } catch<Exceptione> { e.printStackTrace<>; } returnflags; } //判斷庫存表中的庫存量是否滿足出庫的笨條件 publicbooleanlookNumber<Stringgid,intnumber>{ booleanflags=false; try { intnum=0; Stringsql4="select庫存量fromStoreManagewhere商品編號=?"; PreparedStatementps=conn.prepareStatement<sql4>; ps.setString<1,gid>; ResultSetresult=ps.executeQuery<>; while<result.next<>> { num=result.getInt<1>; } result.close<>; ps.close<>; if<number<=num> { flags=true; } else flags=false; returnflags; } catch<Exceptione> { e.printStackTrace<>; } returnflags; } //商品出庫向出庫表寫入一條數據的出庫記錄 publicvoidnewStoreOuput<Stringoutgid,Stringoutgname,intoutgnum>{ try { Stringsql5="insertintoOutStore<商品編號,商品名稱,出庫數量,出庫人,出庫時間>values<?,?,?,?,getdate<>>"; PreparedStatementps=conn.prepareStatement<sql5>; ps.setString<1,outgid>; ps.setString<2,outgname>; ps.setInt<3,outgnum>; ps.setString<4,outpeople>; ps.executeQuery<>; ps.close<>; } catch<Exceptione> { e.printStackTrace<>; } } //這是要修改庫存表中的庫存量 publicvoidupdateStoreManage<Stringoutgid,intnum>{ try { Stringsql6="updateStoreManageset庫存量=<select庫存量fromStoreManagewhere商品編號=?>-?where商品編號=?"; PreparedStatementps=conn.prepareStatement<sql6>; ps.setString<1,outgid>; ps.setInt<2,num>; ps.setString<3,outgid>; ps.executeQuery<>; ps.close<>; } catch<Exceptione> { e.printStackTrace<>; } } //向出庫表模型中添加一條新一出庫記錄 publicObjectaddOutStoreToTable<Stringoutgid>{ try { Stringsql7="select*fromOutStorewhere商品編號=?and出庫編號=<selectcount<*>fromOutStore>"; PreparedStatementps=conn.prepareStatement<sql7>; ps.setString<1,outgid>; ResultSetresult=ps.executeQuery<>; while<result.next<>> { newStoreOfOut[0]=newInteger<result.getInt<1>>; newStoreOfOut[1]=result.getString<2>.toString<>.trim<>; newStoreOfOut[2]=result.getString<3>.toString<>.trim<>; newStoreOfOut[3]=newInteger<result.getInt<4>>; newStoreOfOut[4]=result.getString<5>.toString<>.trim<>; newStoreOfOut[5]=result.getString<6>.toString<>.trim<>; } result.close<>; ps.close<>; returnnewStoreOfOut; } catch<Exceptione> { e.printStackTrace<>; } returnnewStoreOfOut; }入庫界面publicObjectsetSdata<>{ try { Stringsq2="select*fromInStore"; Statementst=conn.createStatement<>; ResultSetresult=st.executeQuery<sq2>; Sdata=newObject[Row][Column]; intn=0; while<result.next<>> { Sdata[n][0]=result.getString<1>.toString<>.trim<>; Sdata[n][1]=result.getString<2>.toString<>.trim<>; Sdata[n][2]=result.getString<3>.toString<>.trim<>; Sdata[n][3]=result.getString<4>.toString<>.trim<>; Sdata[n][4]=result.getString<5>.toString<>.trim<>; Sdata[n][5]=result.getString<6>.toString<>.trim<>; n++; } result.close<>; st.close<>; returnSdata; } catch<Exceptione> { e.printStackTrace<>; } returnSdata; } //向入庫表中插入新的數據 publicvoidgoodsInserData<Stringgid,Stringgname,intgnum>{ try { Stringsql3="insertintoInStore<商品編號,商品名稱,入庫數量,入庫人,入庫時間>values<?,?,?,?,getdate<>>"; PreparedStatementps=conn.prepareStatement<sql3>; ps.setString<1,gid>; ps.setString<2,gname>; ps.setInt<3,gnum>; ps.setString<4,inpeople>; ps.executeUpdate<>; ps.close<>; } catch<Exceptione> { e.printStackTrace<>; } } //判斷庫存表中是否有相同商品編號的商品存在 publicbooleanisExistsGood<Stringgid>{ booleanflags=false; try { Stringsql4="select*fromStoreManagewhere商品編號=?"; PreparedStatementps=conn.prepareStatement<sql4>; ps.setString<1,gid>; ResultSetresult=ps.executeQuery<>; inti=0; while<result.next<>> { i++; } result.close<>; ps.close<>; if<i>0> { //如果庫存表中存在該商品的商品編號,則調用修改函數 flags=true; returnflags; } else { //若庫存表中不存在則調用插入函數新插入一條數據 returnflags; } } catch<Exceptione> { e.printStackTrace<>; } returnflags; } //若庫存表中不存在則新建一條信息 publicvoidinsertStoreManage<Stringgid,Stringgname,intgnum>{ try { Stringsql5="insertintoStoreManage<商品編號,商品名稱,庫存量>values<?,?,?>"; PreparedStatementps=conn.prepareStatement<sql5>; ps.setString<1,gid>; ps.setString<2,gname>; ps.setInt<3,gnum>; ps.executeUpdate<>; ps.close<>; } catch<Exceptione> { e.printStackTrace<>; } } //如果存在直接修改原有的數量 //1、先獲取原有的庫存量 publicintgetStoreNumber<Stringgid>{ intnum=0; try { Stringsql6="select入庫數據fromStoreManagewhere商品編號=?"; PreparedStatementps=conn.prepareStatement<sql6>; ps.setString<1,gid>; //ps.executeQuery<>; ResultSetresult=ps.executeQuery<>; while<result.next<>> { num=result.getInt<1>; } result.close<>; ps.close<>; returnnum; } catch<Exceptione> { e.printStackTrace<>; } returnnum; } //2、再修改庫存量 publicvoidupdateStoreManage<intcount,Stringgid>{ try { intNUM=getStoreNumber<gid>+count; Stringsql7="updateStoreManageset庫存量=NUMwhere商品編號=?"; PreparedStatementps=conn.prepareStatement<sql7>; ps.setString<1,gid>; //ps.setInt<1,count>; //ps.setString<2,gid>; ps.executeUpdate<>; ps.close<>; } catch<Exceptione> { e.printStackTrace<>; } } //error!沒有注意到出庫表會存在多條相同的記錄 //向入庫表模型中添加一條入庫記錄 publicvoidaddStoreOnInStore<Stringgid>{ Object[]newRow=newObject[6]; try { Stringsql8="select*fromInStorewhere商品編號=?and入庫編號=<selectcount<*>fromInStore>"; PreparedStatementps=conn.prepareStatement<sql8>; ps.setString<1,gid>; ResultSetresult=ps.executeQuery<>; while<result.next<>> { newRow[0]=newInteger<result.getInt<1>>; newRow[1]=result.getString<2>.toString<>.trim<>; newRow[2]=result.getString<3>.toString<>.trim<>; newRow[3]=newInteger<result.getInt<4>>; newRow[4]=result.getString<5>.toString<>.trim<>; newRow[5]=result.getString<6>.toString<>.trim<>; } result.close<>; ps.close<>; //向表模式中添加一行新數據 dtm1.addRow<newRow>; } catch<Exceptione> { e.printStackTrace<>; } }庫存管理界面publicObjectsetSData<>{ try { Stringsql2="select*fromStoreManage"; Statementst=conn.createStatement<>; ResultSetresult2=st.executeQuery<sql2>; Sdata=newObject[Row][Column]; intn=0; while<result2.next<>> { Sdata[n][0]=result2.getString<1>.toString<>.trim<>; Sdata[n][1]=result2.getString<2>.toString<>.trim<>; Sdata[n][2]=result2.getInt<3>; n++; } result2.close<>; st.close<>; returnSdata; } catch<Exceptione> { System.out.println<e.getMessage<>>; } returnSdata; } publicvoidinit<>{ //先調用方法獲得表頭和二維表的表數據 //this.setSData<>; //this.setHeader<>; this.setTitle<"天涯倉庫管理">; this.setSize<700,300>; this.setLocation<300,150>; this.setLayout<newGridLayout<2,1>>; dtm1=newDefaultTableModel<Sdata,Sheader>; jtable=newJTable<dtm1>; pane1=newJScrollPane<jtable>; jtable.setRowHeight<30>; jtable.setGridColor<Color.blue>; jp1.add<jlbl1>; jp1.add<jtxt1>; jp1.add<jlbl2>; jp1.add<jtxt2>; jp1.add<jlbl3>; jp1.add<jtxt3>; jp1.add<btnupdate>; jp1.add<btndel>; btnupdate.addActionListener<this>; btndel.addActionListener<this>; jtable.addMouseListener<this>; //dtm1.addTableModelListener<jtable>; this.add<pane1>; this.add<jp1>; this.show<>; } publicbooleanUpdateStoreDate1<Stringgoodid,Stringgoodname,intgoodnum>{ booleanflags=false; try { StringSql3="updateStoreManageset商品名稱=?,庫存量=?where商品名稱='goodid'"; PreparedStatementps=conn.prepareStatement<Sql3>; ps.setString<1,goodname>; ps.setInt<2,goodnum>; ps.executeUpdate<>; flags=true; } catch<Exceptione> { System.out.println<e.getMessage<>>; } returnflags; } //更新數據 publicbooleanUpdateStoreDate<Stringgoodid,Stringgoodname,intgoodnum>{ booleanflags=false; try { StringSql3="updateStoreManageset商品名稱=?,庫存量=?where商品名稱=?"; PreparedStatementps=conn.prepareStatement<Sql3>; ps.setString<1,goodname>; ps.setInt<2,goodnum>; ps.setString<3,goodid>; ps.executeUpdate<>; ps.close<>; flags=true; } catch<Exceptione> { System.out.println<e.getMessage<>>; } returnflags; } //刪除選中的數據 publicbooleanDelStoreDate<Stringgoodid>{ booleanflags=false; try { Stringsql4="deletefromStoreManagewhere商品編號=?"; PreparedStatementps=conn.prepareStatement<sql4>; ps.setString<1,goodid>; ps.executeUpdate<>; ps.close<>; flags=true; } catch<Exceptione> { System.out.println<e.getMessage<>>; } returnflags; } //判斷是否缺貨 publicbooleanIsDeletio<>{ booleanflags=false; try { Stringsql5="selectcount<商品編號>fromStoreManagewhere庫存量<=50"; Statementst=conn.createStatement<>; ResultSetresult=st.executeQuery<sql5>; intm=0; while<result.next<>> { m++; } //判斷是否有商品缺失 if<m>0> { flags=true; } } catch<Exceptione> { System.out.println<e.getMessage<>>; } returnflags; }二、測試1.1引言編寫目的本軟件是用來有效的管理超市倉庫貨物數量及種類,以方便超市工作人員可以全面的了解超市倉庫庫存貨物數量和種類來方便高效的管理超市倉庫。該項目可行性研究報告也是對超市倉庫管理系統的全面考慮,是項目分析員進行進一步工作的前提,是軟件開發人員成功的開發項目的前提.此分析研究報告可以使軟件開發團體盡可能早的估計研制課題的可行性,可以在定義階段較早的認識到系統方案的缺陷,可以節省時間、財力和精力,并且避免了專業方面的困難.及早地預測項目的可行性,在可行的前提下獲得最好的實施方案。背景本測試計劃從屬于商品存儲管理系統。用戶為中、小規模超市、商場。執行本測試前,應完成軟件計劃,需求分析,設計及編碼工作。參考資料需求分析文檔,概要設計文檔,詳細設計文檔,測試計劃文檔,程序清單。東生、冬華等編著的《軟件工程—原理、方法和工具》1.2測試結果及發現本次測試采用黑盒法。主要依據需求分析文檔和測試計劃文檔,以需求分析文檔中的功能模塊為單位,對編碼人員提交的成型系統進行測試。綜合使用等價類劃分法和其它方法。測試步驟身份驗證。功能為:〔1對登錄系統的用戶進行身份合法性檢查,要求輸入和密碼。禁止身份信息不正確的用戶登錄;〔2當輸入密碼錯誤次數超過一定限制時〔初定為3次將自動關閉系統,以防止非法窮舉入侵;〔3將成功的登錄操作記入操作日志文件1.有效等價類:輸入為用戶信息表中保存的用戶名和對應的密碼。測試用例為:等價類編號用戶名密碼輸出1冰潔cbj"登錄正確"2媛媛lyy"登錄正確"3羅曼lm"登錄正確"4熊婷xt"登錄正確"5詹求芝zqz"登錄正確"6系統管理員a705"登錄正確"符合預期結果。通過"查詢"功能檢查操作日志,發現已登記以上"登錄數據庫"操作及相應用戶名密碼。符合預期結果。2.無效等價類:〔1用戶名不在用戶信息表中,密碼在用戶信息表中。測試用例為:用戶名:冰密碼:cbj點"確定"后,彈出"用戶名和密碼錯誤"對話框。符合預期結果。〔2用戶名在用戶信息表中,密碼不在用戶信息表中。測試用例為:用戶名:冰潔密碼:cb點"確定"后,彈出"用戶名和密碼錯誤"對話框。符合預期結果。〔3用戶名和密碼均在用戶信息表中,但兩者不匹配。測試用例為:用戶名:冰潔密碼:zqz點"確定"后,彈出"用戶名和密碼錯誤"對話框。符合預期結果。連續輸入錯誤達3次時,登錄對話框自動關閉。符合預期結果。商品入庫登記。功能為:〔1由條形碼檢測設備讀入商品包裝上的條形碼,系統根據條形碼搜索數據庫中的商品信息文件,檢查該商品基本信息是否已作登記;〔2若該商品信息未作登記,則填寫該商品詳細信息單,并提交給數據庫,寫入商品信息文件,再填寫入庫單;〔3若該商品信息已作登記,則直接填寫入庫單;〔4檢查入庫單的合法性:即檢查表單中的輸入信息是否具有非法字符,商品來源〔供應商信息是否合法;〔5若檢查結果不合法,提示操作員重新輸入;若檢查結果合法,則根據申請容對商品庫存信息文件和入庫文件進行更新,打印入庫憑證,完成商品入庫操作;〔6將成功的入庫操作寫入操作日志文件;相關操作說明:在主界面點"入庫"按鈕后,彈出"入庫信息"對話框。"時間"框中將自動顯示當前的系統時間,作為商品入庫時間。"商品號"框待輸入信息。其它框均為不可編輯狀態。現向"商品號"框中輸入一長度為12的數字字符串,模擬由條碼讀取設備讀入的商品條碼。假設實際使用環境中條碼設備不會出錯,即總是讀出12位數字串,所以不必檢查〔模擬讀入的商品號的有效性。此時若點"添加"按鈕,彈出對話框"請先運行查詢操作!",表示應先檢查此商品基本信息是否已登記。因此測試中越過這一步,直接點"查詢"按鈕。按商品信息是否已登記,分兩種情況:情況一:〔模擬讀入的商品號已在商品信息表中,彈出對話框:"該商品已存在,請輸入入庫時的必要信息!"。"供應商號","類型","商品名","存放地點"框中將顯示此商品號在商品信息表中對應的屬性值。"最大量","最小量"框中將顯示此商品號在庫存信息表中對應的屬性值。余下的"入庫量","有效期","采購員"由用戶填寫。測試用例:商品號:1,點"查詢"按鈕,可得以上相關信息。經檢查,各顯示屬性與數據庫中的值一致。1.有效等價類:"入庫量"為正整數,"有效期"為yyyy-mm-dd格式的日期,"采購員"為任意字符串〔采購員名。對上面的測試用例〔商品號1,輸入信息為:入庫量:10;有效期:2006-01-01;采購員:輸出:"添加成功"經檢查,數據庫相關表都正確更新。符合預期結果。無效等價類:〔1"入庫量"不是正整數。輸出:"入庫量應為正整數!"。符合預期結果。〔2"入庫量"為空。輸出:"入庫量不可為空!"。符合預期結果。〔3"入庫量"是正整數,但大于"最大量"框中的值。輸出:"入庫量不能大于最大量!"。符合預期結果。〔4"入庫量"是正整數且小于"最大量"框中的值。但"采購員"和〔或"有效期"為空。輸出:"入庫信息不能有一項為空!"符合預期結果。〔5"入庫量"是正整數且小于"最大量"框中的值。"采購員"非空。但"有效期"格式錯。輸出:"有效期應為yyyy-mm-dd格式!"符合預期結果。情況二:〔模擬讀入的商品號不在商品信息表中,彈出對話框:"該商品為新商品,請輸入入庫時的必要信息!"因是新商品,數據庫無相關信息。除"商品號"和"時間"以外的所有框都需用戶填寫。有效等價類:"入庫量"為正整數且小于"最大量";"供應商號"為供應商表中的"供應商號"〔長度為4的數字串;"最大量"為長整形數;"有效期"為yyyy-mm-dd格式的日期;"類型"在規定集合中取值〔衣、食、用;"商品名"為任意字符串;"采購員"為任意字符串〔采購員名;"最小量"為長整形數;"存放地點"在規定集合中取值〔01~20;輸出:"入庫操作成功!"無效等價類:等價類〔1~<3>與情況一中等價類<1>~<3>輸入輸出相同。<4>"存放地點"不是規定集合中的值輸出:"不可識別的存放地點!"<5>"有效期"格式錯或為空輸出:"有效期格式錯!"<6>"供應商號"不是供應商表中的"供應商號"輸出:"非法供應商號!"<7>"最大量"不是正整數輸出:"最大量應為正整數!"<8>"類型"不是規定集合中的值輸出:"不可識別的類型!"<9>"商品名"超長輸出:"商品名"超長!"<10>"最小量"不是正整數輸出:"最小量應為正整數!"<11>"存放地點"不是規定集合中的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論