久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

基于Web的仓库管理系统的设计与实现

發布時間:2023/12/14 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Web的仓库管理系统的设计与实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘 要
倉庫物品的管理是與我們的日常生活息息相關的一個重大問題。隨著我國經濟飛速的發展,改革開放的不斷深入,企業要想在激烈的市場競爭中立于不敗之地,要想繼續的發展與生存,沒有現代化的管理方式與方法是萬萬不行的,倉庫管理的全面信息化、自動化則是在其中占有極其重要的地位。倉庫管理信息系統則是在此需求背景下開始研制并開發的。在此篇文章中嚴格按照軟件工程思想,設計并實現了一個倉庫信息管理系統。介紹了系統從需求分析,邏輯設計,總體設計,詳細設計以及系統測試、實施各階段的主要內容和成果,包括系統結構圖、業務流程圖數據流程圖、物理表實現及其關系、功能模塊算法流程、界面設計等等。
關鍵字 倉庫; 軟件工程; 系統開發

Design and implementation of warehouse management system based on Web
Abstract
Warehouse management is a major issue is closely related to our daily life. With China’s rapid economic development and the deepening of reform and opening up, the enterprise to be in an invincible position in the fierce market competition, want to continue development and survival, no modern management methods and methods is absolutely out, warehouse management and comprehensive information, automation is where you play a very important role. Warehouse management information system is started research and development in the context of this demand. This article strictly according to the software engineering, design and implementation of a warehouse management system. Introduced from requirements analysis, logic design, General design, detailed design and system testing, implementation of the content and results of each stage, including charts, business process data flow chart, functional modules algorithms, physical form and its process, interface design and so on.

Key warehouse Software engineering; System development

目 錄

摘 要 i
Abstract ii
目 錄 iii
1. 緒論 1
1.1 系統背景 1
1.2 開發目的 1
1.3 開發工具 2
1.3.1 Eclipse 2
1.3.2 Oracle 2
1.3.3 PowerDesigner 2
1.4 相關技術介紹 3
1.4.1 JSP技術 3
1.4.2 JavaScript技術 5
1.4.3 Tomcat 5
1.4.4 軟硬件需求 6
1.5 可行性研究分析 6
1.5.1 系統目標可行性分析 7
1.5.2 系統的經濟可行性 7
1.5.3 系統的技術可行性 7
1.5.4 系統的法律可行性 7
2. 軟件需求分析 8
2.1 需求分析 8
2.1.1 用例圖 8
2.1.2 類圖 9
2.2 功能需求分析 9
2.3 業務流程分析 10
2.3.1 管理員模塊業務流程 10
2.3.2 客戶模塊業務流程分析 10
2.4 數據流程分析 11
2.4.1 頂層數據流 11
2.4.2 一層數據流圖 11
2.4.3 二層數據流圖 12
2.5 數據字典分析 13
2.5.1 數據存儲條目 13
2.5.2 加工條目 14
3. 軟件總體設計 16
3.1 軟件結構設計原則 16
3.1.1 軟件的結構體系 16
3.1.2 軟件模塊設計原則 16
3.1.3 軟件的模塊化 17
3.2 系統任務概述 17
3.2.1 系統的功能設計 17
3.2.2 系統功能結構 18
3.3 系統架構 18
3.4 系統主要子模塊設計 19
3.4.1 用戶登錄子模塊設計 19
3.4.2 商品入庫子模塊設計 19
3.4.3 商品出庫子模塊設計 19
3.4.4 用戶注冊子模塊設計 19
4. 數據庫設計 21
4.1 數據庫概念 21
4.2 數據庫分析 22
4.2.1 數據庫的完整性分析 22
4.2.2 數據庫的安全性分析 22
4.3 數據庫的設計 23
4.3.1 概念結構設計 23
4.3.2 邏輯結構設計 23
4.4 數據庫的連接 25
4.4.1 連接工具 25
4.4.2 工廠類配置文件主要內容 26
4.4.3 Mapper類配置文件主要代碼 26
5. 軟件詳細設計 28
5.1 登錄模塊 28
5.2 入庫模塊 30
5.3 出庫模塊 31
5.4 用戶注冊模塊 32
5.5 個人信息管理模塊 34
6. 系統的測試 38
6.1 測試簡述 38
6.1.1 測試目的及重要性 38
6.1.2 測試原則 39
6.2 測試方法 40
6.2.1 黑盒測試 40
6.2.2 白盒測試 40
6.2.3 單元測試 40
6.2.4 集成測試 41
6.3系統模塊的測試 41
6.3.1 登陸模塊測試: 41
6.3.2 出庫模塊測試 41
6.4.3 用戶信息模塊測試結果 44
總 結 45
致 謝 46
參考文獻 47
附件1:外文文獻(原文) 48
附件2:外文文獻(譯文) 57

1. 緒論
現如今,計算機技術飛速發展,社會經濟也在伴隨著不斷發展,各行各業也面臨著各種各樣的挑戰與困難。為了能夠在這個信息化的時代繼續發展下去,就必須緊跟上時代的腳步。在這個計算機技術飛速發展的年代里,智能化的商品存儲管理技術也在隨著不斷地發展。之前的那些古老的倉庫管理化的方法已經難以滿足現代化發展的需求,因為許多些原因,企業要想在這個現代化的社會中生存下去都必須有一個良好的倉庫管理系統。倉庫是每個企業都必須謹慎管理的地方,一個企業的最基本是貨物,所以一個企業的貨物必須得得到很好的保管,在這片競爭激烈的土地上面才能謀得一塊生地。本課題正是根據這一理念,開發了一個功能比較完善,基本能滿足企業要求的倉庫管理系統。
1.1 系統背景
在這個科學技術不斷發展的年代里,世界已經變的越來越高科技化越來越智能化,一個智能化的時代已經到來。到現在為止,在我們生活的周圍你可以隨處見到各種各樣的智能化管理的系統[7]。
一個企業所擁有的商品是他所生存發展的根本,而倉庫是企業用來保存商品的所在。所以說,一個好的倉庫對于企業來說占有舉足輕重的地位。總而言之,一個成功的企業必定會有一個好的倉庫,但是一個好的倉庫沒有一個合理的管理系統是不完美的[7]。可是一個靜態化的簡單的倉庫管理的系統,因為他不具備信息共享的功能,而且還不能夠保證貨物的正常運轉中所遇到的一些問題,還不能保證企業所擁有資源的正常的運轉與利用;還有一些傳統的倉庫管理系統在維護時非常的困難開發起來也是十分復雜,所以在人力物力上有極大的浪費,已經遠遠的脫離了時代的軌道。因此,一個成功的企業,如果擁有了一個現代化的倉庫管理的系統,會大大的提高企業生產的效率,降低使用的成本。
1.2 開發目的
倉庫是所有企業都不可缺少的部分,對于一個成功的企業來說,想要在未來的市場中獲得發展得優勢,擁有一個完善的倉庫管理系統是十分重要的。可是企業中的商品總是在不斷地流動的,倉庫中的商品也隨之不斷變化。所以,商品就需要不停的被記錄保存。在使用傳統的人工記錄時存在著各種各樣的問題,查詢的效率低下,而且保密性不高。因此,對于一個想要不斷發展的企業來說,這種人工記錄的方式必須淘汰。
在現代化科技的不斷發展前景之下,智能化的東西已經遍布各地,電腦更是遍布在各個角落。計算機技術的應用對庫存信息進行管理與人工管理技術相比較擁有無可比擬的優勢,如:添加刪除快捷、安全性高、查詢便捷等。
在以上這些社會與技術的背景之下,我決定開始開發了這個系統。在開發的這個系統能夠保證對貨物進行正確的出庫與入庫擦偶哦、庫存控制和發貨。而且,這個系統比較小維護起來簡單,能夠節省一定的人力物力,對企業中倉庫的管理是百利的。
1.3 開發工具
1.3.1 Eclipse
Eclipse 開發工具是一款源代碼完全開放的、主要用于可擴展性開發Java語言的一種開發工具。對Eclipse本身來說,他僅僅只是一種服務和框架,主要是通過一些插件與組件來組成開發的環境。主要的優勢有Eclipse自身帶有一種標準化的組件集合,含有Java的主要開發工具JDK。Eclipse具有十分豐富的開發環境,主要包括有超強的編碼能力、擁有玩備的調試功能、發布能力與測試功能等,全部支持了Hibernet、Struts、Mybatis、JSP、Spring、SQLPlus等等的一系列的框架。
1.3.2 Oracle
oracle是一家公司的名字(甲骨文公司),世界上屈指可數的,是國際上非常大的巨型IT公司,是全球最大的企業級軟件公司,總部位于美國加利福尼亞州的紅木灘。1989年正式進入中國市場。2013年,甲骨文已超越 IBM ,成為繼 Microsoft 后全球第二大軟件公司最有名的產品是DB,database,RDBMS,關系型數據庫系統。
1998年9月,ORACLE公司正式發布ORACLE 8i。“i”代表Internet,這一版本中添加了大量為支持Internet而設計的特性。這一款版本為數據庫的用戶提供了更加全面的全方位的Java技術支持。ORACLE 8i成為第一個完全整合了本地Java運行時環境的數據庫。
然后有9i,10g。在這個版本更新的最佳看點是一起加入了網格,然后是11g,現在發展到12c,c代表cloud,也是現在炒的非常火的概念。
1.3.3 PowerDesigner
在數據庫的設計過程中,運用Power Designer作為數據庫模型的主要的建模工具。在龐大的賽貝斯公司旗下的主要的CASE開發工具集之一就是PowerDesinger,運用這個工具的最大看點是更加快捷并且方便的對倉庫管理系統進行開發,數據庫開發所需要的模型與需要的經歷基本全部都能實現。例如數據流程圖、概念數據模型、物理數據模型等一系列的模型都可以通過使用PowerDesigner來實現,可以生產出各種各樣的PC端開發出來的應用軟件,也可以給系統的設計制作出系統的結構模型,也能夠為一些開發團隊的系統模型進行調控。Power Designer還可以跟各種現如今使用比較多的用來設計數據庫的軟件,比如:Power Builder,StartUML,VB等相互配合來使用,以便于用來減少開發的時間與優化系統的設計。

1.4 相關技術介紹
1.4.1 JSP技術
JSP技術使用起來是非常靈活的,可以用來便攜JAVA程序的。本技術還可以用來對一些編程的動態的網頁來進行封裝。網頁還可以訪問一些在服務器端的各種資源的一些邏輯應用。JSP技術還可以將一些網頁的邏輯與網頁的設計和還有顯示進行分離,對于一些可重用的基礎的組件的開發進行支撐,更加容易的對基于Web的應用程序進行設計。
在現今,計算機技術在不斷發展,Web 技術也隨之不斷的發展,產生了許多方法來解決動態頁面的生成問題,目前用于聲稱動態網頁的技術有CGI、ASP、PHP及JSP。JSP技術可以為做動態網頁的創建提供一個更加方便快捷的方法。JSP 是Java Server Page 的縮寫,是Sun 公司于1999年6月推出的新技術,該技術由Sun 公司主導,采取了了一些在電腦的軟件與硬件、數據庫、還有通信等領域的多個家廠家的建議與意見而一起制定出來的一種在Java與Web基礎上的一種動態的網頁技術。
JSP技術與之前傳統的網頁制作技術相比較,它有著明顯的優點。JSP 不像CGI、ISAPIH 和NSAPI 那樣難于編寫和維護,不像PHP 那樣只能適應中小流量的網站,也不像ASP 那樣受到跨平臺的限制,JSP 體現了當今最先進的網站開發思想。
在服務器端接收到客戶端發送出來的請求時,開始運行的程序段,接下來將JSP文件中的代碼還有代碼在運行之后效果同時回饋給用戶。通過Java文件的插入能夠對數據庫、網頁的一系列多重的定向等運行,從而滿足構建動態網頁所需要的程序。JSP是Servle的一種動態表現,而且都可以通過服務器端來運行。由于能夠將一個HTML文本返回給用戶端,所以用戶端具備瀏覽器就可以進行瀏覽。HTML程序與穿插在其內部的Java程序可以共同構建動態的JSP網頁。在服務器被用戶的客戶端訪問的時侯,能夠同時處理相應的Java代碼,然后將產生的HTML頁面再返回給用戶端的瀏覽器。JSP的設計關鍵是Servlet,通常大型的Web應用程序的設計成果也通過Java Servlet與JSP相結合來實現的。JSP既擁有了方便快捷的Java程序,又統統的面向用戶,既實現了平臺的無關性危險還比較小,可以具備互聯網的全部優勢。JSP技術的優點:
(1)能夠一次性完成編寫,到處運行。不包括系統在內,代碼基本不需要在寫。
(2)系統的多平臺支持。通常情況下,能夠在所有情況下的全部平臺上進行設計,能夠安排在任一情況中,也能夠在所有的情況下進行發展。相比ASP/.net來說,優點是十分明顯的。
(3)強大的可塑性。通過一個不大的Jar程序能夠對Servlet/JSP進行運行,也能夠通過很多服務器進行集群和負載平衡,甚至能夠通過多臺Application解決問題。單個的服務器到多個的服務器,Java展示了一個強大的功能。
(4)Java已經有了很多的設計方法,何況大部分工具都是沒有花費的,這中間有很多都在多種平臺之下順暢的進展。
(5)支持服務器端組件。只有很有力的服務器端組件才能支撐web運行,因此開發者可以在調用web頁面時通過另外的開發工具來達成紛亂效用的組件,來加強系統的可操作性。JSP可以通過完善的JAVA BEANS 組件來達成紛亂的商務功能。
在JSP的內部對象中會表現出來:客戶端發送請求使用request,這個請求會涵蓋到來自于GET/POST參數的請求; 服務器端傳回客戶端的回饋使用response;管理pageContext 網頁的屬性;session 與請求相關的會話;application servlet正在進行的內容;輸送響應的輸出流使用out;config代碼片段配置對象;page JSP網頁本身。
JSP 與ASP(Active Server Page) 的區別
從上面的基本介紹中,乍一看覺得JSP 與微軟的ASP 十分相似,但事實上,兩者有著本質的不同,我們主要從以下幾個方面對其進行比較:
1、Web 服務器的支持
大部分的支持WEB的服務器段例如:Apache、IE、Netscape 和Microsoft IIS 等一系列服務器都可以運行JSP 。ASP的卻很難再除了微軟之外的平臺上繼續的運行與移植。
2、平臺的支持
平臺具有一定的獨立性,所有的能夠支持java程序的平臺,都可以支持JSP的運行。Windows 平臺可以很好的支持ASP, 但ASP 難于移植到其它平臺上。
3、組件模型
JSP 所在的平臺是建立在跨平臺的、這上面的所有的組件都是可是重新利用的。而ASP 使用的平臺卻是建立在Win32的COM 組件模型之上的,所使用的組件沒有JSP的靈活。
4、腳本語言
JSP是比較萬能的能夠靈活的使用JAVA語言或著與其他的腳本語言如javascript相互配合使用。可是ASP使用起來比較局限,只能使用Jscript 或者是VBScript兩種語言來作為腳本語言,不夠靈活。
5、安全性
JSP的安全模式是使用Java 的安全模型,但是ASP的安全模式使用的是Windows NT的安全模式兩者各不相同。
6、與Access數據庫的連接
Access 數據庫在與JSP 相連接的時候使用的連接方式是JDBC連接,而Access 數據庫與ASP相連接的時候使用的是Data Active Objects。
7、用戶定制的標簽
JSP有一個很好的功能是用戶可以自己定義一個屬于自己的標簽庫,并且可以靈活運用。然而ASP 中用戶卻不能自己定制標簽庫,原因是在 ASP 中用戶是不可以對標簽庫進行擴充的。
8、JSP 與Servlet 的區別
從某種意義上講,JSP 并不是一種新技術,因為JSP 可以完成的工作,都可以通過編寫Servlet 程序來實現。而且,JSP 頁面中動態的、交互的部分最終也都是需要再編譯為相對應的Servlet程序來實現。所以,可以說,JSP其實是Servlet 的一種抽象,它提供了更加方便有效的方式來編寫Servlet。
9、JSP 與CGI 的區別
JSP 與CGI 兩者之間有一個很明顯的最大的差異點,JSP在編寫時與編譯HTML時是很相似的兩者的差異不大,在語法上有些不同只要了解JSP的語法即可,不需要對JAVA、JScripety等語言有過多的了解。而編寫CGI 程序要求對腳本語言十分熟悉,因為CGI 程序基本上是用腳本語言直接寫的。除此之外,在使用CGI 程序的時侯,對每一次的訪問他都會進行處理,可是這樣的結果會造成在多個用戶的請求被處理時,會造成力不從心的局面,不會得到滿意的結果。可是JSP在編譯時只能編譯一次,在此之后會駐留在內存中,再次調用時,不必重新處理,適于應付多用戶情況。
1.4.2 JavaScript技術
JavaScript語言是腳本語言中直譯式的一種,屬于動態類型、弱種類型、原型為基礎的語言,支持類型的語言。JavaScript引擎是他的解釋器語言,屬于瀏覽器中的內容,常常用在客戶端的一種腳本的語言,早期常常在HTML所編譯的網站上面運用,主要的功能是在HTML的基礎之上增加一些動態的功能。 在1995年時,由Netscape公司的Brendan Eich,在一個叫做網景導航者的瀏覽器上第一次實現而成。由于Netscape的合作者是SUN,所以在Netscape的管理層們希望把他的外觀做起來像JAVA,出于種種的原因給他取名叫做JavaScript。可是在實際上多了解了解它的語法風格會發現是與Self及Scheme比較接近的。為了取得技術優勢,微軟推出了JScript,CEnvi推出ScriptEase,與JavaScript同樣可在瀏覽器上運行。
為了能夠將規格得到統一,因為JavaScript兼容于ECMA標準,因此,也稱為ECMAScript。
JS技術特征:1、腳本語言2、解釋性語言3、弱類型語言4、事件驅動5、動態性6、安全性7、跨平臺性(兼容性)。
1.4.3 Tomcat
Tomcat 從一定的意義上面來說他并不只是一個APP Server, 它僅僅只是一個可以支持并且運行Serlvet/JSP 的Web 的容器,而且他還具有一些傳統的Web 服務器所具有的一系列的功能。可是他跟Apache 相對比,Tomcat處理靜態的HTML 的能力就比不上Apache。 因此,我們可以把Tomcat與Apache 集成到一塊,然后運用Apache 處理靜態HTML, 最后在利用Tomcat 處理JSP 還有Servlet。這幾種技術之間相互配合。這種集成只需將Apache 和Tomcat 的配置文件作出修改就可以了。
Tomcat 也擴展了一些App Server 的功能,如JNDI, 數據庫連接池,用戶事務處理等等。Tomcat 被非常廣泛的應用在中小規模的Java Web 應用中。在Tomcat5中,在Servlet2.3 中擁有一些事件監聽器的功能我們可以利用這些功能來對事應用或者Session 等進行一些列的實行監聽。Tomcat 還有好多其他的一些特征,如與SSL 集成到一塊,實現安全傳輸。很多中小應用不需要采用EJB 等技術,JSP 和Servlet 已經足夠,這時如果用應用服務器就有些浪費了,我們自然會選擇Tomcat。
JSP 和Servlet的開發主要是在Tomcat的基上來進行開發的,JSP 與Servlet的開發并沒有想象中的麻煩,一般的一些文本編輯器或著IDE都是可以開發的, 最后,把這些東西壓縮為成WAR格式的就可以了。另外,也可以利用標簽庫實現Java 代碼與HTML 文件的分離,使JSP 的維護更方便。
Tomcat 也可以與其它一些軟件一起來實現更多的功能,如與JBoss 集起來開發EJB, 與Cocoon 集成起來開發基于XML 的應用,與OpenJMS 集成起來開發JMS 應用,除了這幾種,可以與Tomcat 集成的軟件還有很多。
1.4.4 軟硬件需求
硬件需求:
CPU:Pentium以上計算機
內存: 512M以上
軟件需求:
操作系統版本:Windows XP /vista/Win7
開發工具:MyEclipse 6.0.1
后臺服務器:Apache Tomcat 6.0
開發語言:Java
瀏覽器:F6.0

1.5 可行性研究分析
可行性分析能夠讓系統用最低的開發成本來獲得最高的經濟效益。可行性分析目的是根據所開發系統的用戶需求,明確研究方向,明確目標[1] 。通過一些社會上的調查以及一些系統的框架設計功能模塊的分析,找到可行的方法。對要設計實現的倉庫管理系統從技術上、經濟上、操作上、法律上進行可行性研究調查,這樣既能夠保證信息資源的合理利用,也能夠避免在設計程序過程中因失誤而導致的系統錯漏問題,協助我們對設計做出更加合理和可惜的抉擇[6]。
對所有系統完成設計,都可能受到時間以及空間上的制衡。因此,在開始設計每一個項目的時候,我們必須對系統進行可行性需求分析,只有這樣才能夠降低項目所帶來的危害,減少人力、物力以及財力方面的損耗。在這里簡單了解一下對技術、經濟、系統和發展方面的可行性分析。
可行性研究這一部分的主要目的是探討問題是在定義階段所確定的問題有沒有可行的解,可行性研究是必須的。在這個主要的階段是從經濟可行性、技術可行性、操作可行性和法律可行性等幾個可行性來討論項目是否能夠解決及是否值得去解決。通過可行性研究可以減少一些不必要的損失。

1.5.1 系統目標可行性分析
本系統可以用最小的時間、經費充分幫助倉庫管理人員進行倉庫貨品的數量進行管理,可以對商品的類型、出入庫時的數目、還有時間方面進行查詢。也可以對客戶使用貨物查看貨物,貨物與供應商之間進行輔助。
1.5.2 系統的經濟可行性
倉庫管理系統是基于JSP技術來開發,采用的軟件都是開源的,這樣能夠削減很多的精力和資源,降低開發成本,同時也能夠提升設計的作用,所以系統在開發人力、財力要求不高,具有經濟可行性。
1.5.3 系統的技術可行性
在本系統的開發包含有前端的程序開發與后臺的數據庫的連接與數據庫的維護。對于應用程序的開發則是要使用起來比較簡單上手而且要兼具各方面的功能,而對于數據庫的建立和維護必須要求有一套完整的數據庫、數據必須要安全穩定。本系統開發的重點就是對數據庫的設計和操作。在大學對軟件工程,軟件測試,UML統一建模語言等課程進行過系統的了解,也能夠對這些課程進行開發,能讓我們能夠進一步辨別、開發與檢驗系統。所以,本倉庫管理系統系統的開發在技術方面必定是高效的。
倉庫管理系統是一個數據庫的管理查詢系統,要求運行環境、硬件、軟件不高,操作簡單,完全可以運用我們的技術實現系統的功能。
1.5.4 系統的法律可行性
本系統完全是自己設計的管理系統,對于本人來說具有重大的實際意義。開發環境軟件和使用的數據庫都是開源代碼,因此對這個系統進行開發與普通的系統軟件設計存在很大不同,沒有侵權等問題,在法律上完全具有可行性。
綜上所述,設計一個倉庫管理系統具有效率高,操作簡便,降低成本等優點,是必要可行的。

2. 軟件需求分析 軟件需求分析是開發的第一個階段,也是軟件開發周期中的一個非常重要的階段,根本任務是確定用戶對軟件系統的需求。它是項目開發的基礎,它確定軟件系統做什么,具有什么功能性能,有什么約束條件等。在軟件的需求分析階段所得到的結果在后期的軟件開發的過程中是十分重要的,經過嚴格評審并得到用戶確認是必須經過的。

2.1 需求分析
需求分析是系統開發的首要步驟,直接影響系統整體性能和功能的最主要的步驟。系統的需求分析最重要的是對系統的可行性、性能和功能等方面進行具體地分析。不合理的需求分析,會使系統的開發環節出現許多錯誤和走許多彎路,導致系統開發時間長,效率低,系統質量受到影響[8]。
2.1.1 用例圖
倉庫管理系統分為系統管理員和客戶等不同種類的用戶角色。在本系統的整個的用例功能模塊包括管理員管理、用戶管理等模塊,管理員模塊的主要功能包括查看庫存信息,修改信息,用戶管理,產品入庫,產品出庫等功能,如圖2-1所示為倉庫管理員用例圖。

圖2-1 管理員用例圖

用戶模塊的功能主要包括有庫存信息的查找,用戶信息的修改,用戶管理等功能,如圖2-2所示為客戶用例圖。

圖2-2 客戶用例圖
2.1.2 類圖
倉庫管理系統中有管理員、客戶、還有貨物三大類。如圖2-3所示為倉庫管理系統的三大類之間的類圖關系。

圖2-3 系統類圖
2.2 功能需求分析
1、登錄驗證功能:為了保證倉庫管理系統信息的安全性,進入系統時需要對用戶身份進行驗證,如果驗證無誤可成功進入系統,如果用戶名或者密碼不正確將返回錯誤提示要求重新輸入。
2、管理員管理功能:此功能屬于系統的管理員功能,他實現了對所有用戶的管理操作,可以添加一個新的用戶,也可以對已經添加的業務員進行刪除的操作。
3、用戶的查詢功能模塊:此項功能屬客戶管理員功能,用戶可以根據條件查詢客戶信息,也可以對客戶信息進行修改。
4、倉庫存儲的查詢管理功能:此功能屬系統管理員與客戶共有的功能,客戶可以實現查看、入庫以及出庫等功能,兩者都可以查看庫存信息。
5、用戶的信息管理模塊:此項功能屬于用戶管理員的功能,業務員可以對自己的客戶信息進行管理與修改。
2.3 業務流程分析
倉庫管理系統主要分為兩大用戶功能,兩種功能所實現的功能流程如下所示。
2.3.1 管理員模塊業務流程
倉庫的管理員可以通過帳號和密碼驗證之后進行登錄,登錄到系統之后主要的功能是對商品與用戶的信息進行管理,主要流程如圖 2-4 所示。

圖2-4 管理員程序流程圖
2.3.2 客戶模塊業務流程分析
管理員可以通過帳號和密碼進行登錄,登錄后的主要功能是對用戶與品信息的管理,主要的功能包括查看用戶信息、修改用戶信息、對庫存商品進行查看等。主要業務流程圖如圖 2-5 所示。

圖2-5 客戶程序流程圖
2.4 數據流程分析
基于對業務流程的分析,對數據流分析。
2.4.1 頂層數據流
現行的頂層數據流圖如圖2-6所示。

圖2-6 頂層數據流圖

2.4.2 一層數據流圖
具體分析第一層數據流圖,包括有商品的管理、用戶信息的管理。商品管理,主要包括用戶對產品的入庫操作、查詢操作、出庫操作等一系列的處理以及管理員對產品的管理。用戶管理,管理員能對用戶的信息來操作。詳細流程圖如圖2-7所示。

圖2-7 一層數據流程圖

2.4.3 二層數據流圖
具體分析第二層數據流圖,包括的功能信息有用戶注冊、用戶登錄,產品入庫,產品查詢,產品出庫等功能。
用戶注冊模塊數據流圖如圖2-8所示:

圖2-8 用戶注冊功能的數據流圖

用戶登錄功能的數據流圖如圖2-9所示:

圖2-9 用戶登錄功能模塊的數據流圖

商品入庫功能模塊的數據流圖如圖2-10所示:

圖2-10 商品入庫模塊
如圖2-11所示為商品查詢功能模塊的數據流圖:

圖2-11 商品查詢模塊

如圖2-12所示為商品出庫模塊的數據流圖:

圖2-12 商品入庫模塊

2.5 數據字典分析
2.5.1 數據存儲條目
文件名:用戶信息表
組成:本次剛剛注冊用戶 + 之前注冊過的用戶
組織方式:索引類型的文件,以用戶名為索引
文件名:商品庫存表
組成:本次新入庫商品+以前入庫商品
組織方式:索引文件,以商品編號為索引
2.5.2 加工條目

加工名:商品存儲處理
編號:無
輸入:商品信息
輸出:庫存信息表

加工名:商品入庫處理
編號:無
輸入:商品信息
輸出:庫存信息表

加工名:商品出庫
編號:無
輸入:商品信息
輸出:庫存信息表

加工名:用戶信息存儲
編號:無
輸入:用戶信息
輸出:用戶信息表

加工名:用戶查詢處理
編號:無
輸入:用戶名
輸出:用戶信息表

加工名:用戶信息驗證
編號:1.1
輸入:用戶信息
輸出:用戶信息表

加工名:驗證用戶是否存在
編號:1.2
輸入:用戶名
輸出:用戶信息表

加工名:錄入用戶信息
編號:1.3
輸入:用戶信息
輸出:用戶信息表

加工名:登陸系統時的信息驗證
編號:2.1
輸入:用戶名、密碼
輸出:用戶信息表

加工名:個人信息查詢
編號:2.2
輸入:用戶名
輸出:用戶信息表

加工名:審查商品信息
編號:3.1
輸入:商品名稱
輸出:商品信息表

加工名:驗證是否為新商品
編號:3.2
輸入:商品名稱
輸出:庫存信息表

加工名:錄入商品
編號:3.3
輸入:商品信息
輸出:庫存信息表

加工名:查詢商品
編號:4.2
輸入:商品名稱
輸出:庫存信息表

  • 軟件總體設計
    軟件系統的設計是在整個系統在實現軟件開發過程中的十分重要的一個環節。本章將主要介紹一下倉庫管理系統的總體結構與系統的架構[2]。總體設計的結構實際上介紹了各個模快相互產生的關系,數據庫的設計主要說明了表的建立與數據之間的關系。
    系統怎樣實現是在總體設計階段的階段的基本目標。所以總體設計又被叫做為概要設計。在經歷過這個階段的工作,開發人員又將可以組成系統的物理元素,例如有文件、程序、還有數據庫等。但是這些物理元素還處于黑盒子的形式。總體設計的另一項任務是設計軟件的總體結構,即為了找出系統中的每一樣程序都是由那些模塊組成的,每個模塊的功能及模塊和模塊之間的接口、調用關系等,但所有這些都不要求設計模塊的內部過程的細節。
    容易看出,軟件設計的結構是基于模塊之上的,根據分析階段得到的數據流圖來設計軟件結構。數據流圖是設想各種可能方案的基礎。首先,分析員從提供的方案中選出若干個設計方案,然后對這些方案進行篩選,從而選出一個合理方案。對于復雜的大型系統要進行功能分解,為確定軟件結構,把一些設十分復雜的處理功能適當地分解成一系列比較簡單復雜的功能,然后在進行軟件結構設計。最后制定測試計劃,書寫文檔并復審。
    3.1 軟件結構設計原則
    軟件總體設計的任務是軟件的結構體系設計與軟件的模塊化設計。為了提高軟件設計質量,人們在長期的計算機軟件開發過程中積累了豐富經驗,對這些經驗做出總結會進一步得出一下軟件設計準則。
    3.1.1 軟件的結構體系
    軟件的體系結構是在整個軟件系統中最基層的。設計準則如下:
    1.體系結構是一種抽象的結構。
    2.軟件的體系結構能夠保持一定時間的穩定。
    3.良好的體系結構意味著普通、高校和穩定。
    3.1.2 軟件模塊設計原則
    在軟件開發過程中,軟件的模塊化式設計關鍵,軟件模塊化設計需要遵循的總則如下:
    1.模塊的耦合性降低,模塊的內聚性要提高。
    2.模塊的作用范圍需要能夠控制。
    3.模塊接口設計要簡單,以便降低復雜程度和冗余度。
    4.設計功能可預測并能得到驗證的模塊。
    5.適當劃分模塊規模,已保持其獨立性。
    3.1.3 軟件的模塊化
    模塊是軟件結構的基礎,是軟件元素,是能夠單獨命名、獨立完成一定功能的程序語句的集合,如高級語言中的過程、函數、子程序等。廣義的將,在面向對象的方法學中其中的對象也屬于模塊,模塊是構成程序的基本構件,在程序設計中有很重要的地位。
    模塊化是使得軟件能夠對付復雜問題所具備的屬性。使用模塊化是為了使軟件的復雜性能夠降低,能簡單的操作軟件的設計、維護、還有測試。模塊化技術的運用還可以防 止錯誤蔓延,從而可以提高系統的可靠性。關于模塊可以降低軟件復雜性的事實。
    3.2 系統任務概述
    一個成功的網站應明確為什么要建立這個網站,確定網站所擁有的功能,明確網站所有的規模、投資花費的費用等[8],了解這些都需去市場進行調查。只有經過詳細的策劃,才能夠免去在網站的建設中出現的很多問題網站的建設才會順利[4]。同時,一個大型的計算機網站系統,需要有一個十分明確的思想做指導,并且通過一系列合理的結構設計,就能夠充分發揮出倉庫管理系統的巨大優勢。
    在倉庫管理系統系統的實現時首先我們要考慮下面幾點:
    安全性。現在社會是一個信息的社會,信息就是寶貴的財富,保證信息的安全,特別是個人信息更加的需要安全性。
    先進性。結合當前流行趨勢,開發要符合用戶的需求,適合用戶進行網上預約掛號的系統。本系統采用的這些技術完全基于微軟平臺進行開發,從來有效的降低了系統的運營成本,大大提高了該醫院預約掛號系統的穩定性和易維護性。
    可擴展性。本系統給用戶帶來了極大的便利,提高了網站的管理效率,因此在開發系統的功能過程中,我們要考慮到系統的可擴展性,便于將來系統的升級、更新。
    有效性。實際上這里所說的有效性包括了兩個方面的意思,即有用性和可用性。其中有用性是指的是站點能滿足用戶需求的潛在功能,而可用性指的是能夠通過站點來操作實現系統的體現功能。所以實現在倉庫管理系統的功能時一定要盡最大的可能滿足用戶的需求。
    3.2.1 系統的功能設計
    倉庫管理系統主要分為兩個個用戶角色,主要是管理員角色與用戶角色,其功能如下:
    1.管理員
    管理員可以通過帳號和密碼進行登錄,登錄到系統后主要功能是對庫存信息的管理,主要包括個人信息管理、商品進行入庫、出庫、查詢操作、客戶的信息進行查看修改、退出系統等功能。
    2.用戶
    用戶可以注冊登錄成為會員,其中的系統功能包括系統首頁,查詢庫存,注冊登錄,我的信息,退出系統等一些功能。
    3.2.2 系統功能結構
    根據上述分析,得出的功能結構圖有,如圖3-1所示。
  • 圖 3-1 系統總體結構圖
    3.3 系統架構
    B/S系統對客戶機的工作量做了極大的簡化,對數據庫的訪問以及應用程序的執行都將由服務器來完成。B/S架構主要使用WWW瀏覽器技術,根據各種基于瀏覽器的腳本語言。在B/S架構基礎上軟件結構的安裝、修改與維修的需要在服務器端解決。使用該系統時,只需要一個瀏覽器用戶可以運行所有的模塊,從而實現了“零客戶端”功能,很容易在運行時自動升級。B/S架構也有一個均質機,網上異構網絡,異構應用服務的聯機[10]。
    B/S系統由以下三層構成,三層是相對獨立又相互關聯,在這里我們在三個層面上做一個介紹:
    1.表示邏輯層提出一個服務請求到網絡上的Web服務器,并且開始驗證身份,主頁信息被HTTP給傳送給客戶端,主頁文件會被客戶機收到,并將主頁文件信息顯示在Web瀏覽器上。
    2.用戶的數據請求會被控制邏輯層接受到,數據庫與程序相互連接,并進行數據處理請求的數據庫服務器,然后Web服務器開始接受數據庫服務器的數據處理的結果,最后再返回給客戶端。
    3.數據表示層接受Web服務器請求的數據庫操作,以實現對數據庫操作的一系列的功能, Web服務器來接收操作結果。
    3.4 系統主要子模塊設計
    在對系統的功能設計進行分析,在對系統的小模塊在進行劃分,即系統的模塊化。建立系統的整體的結構了解模塊之間的關系如何。系統的功能需求分析和企業倉庫管理的有各自不同的特點。
    3.4.1 用戶登錄子模塊設計
    系統中用戶登錄驗證相對比較簡單,可以將其流程概括如下:
    在用戶登錄時,系統要求在用戶名的輸入框與密碼的輸入框輸入相應的信息,然后再由系統將其傳送至相應的服務器端。服務器端處理程序時,服務器會根據提交的內容將用戶名中的內容以及密碼框的內容進行分離,再與數據庫中的數據進行比對判斷。如果輸入的內容能夠相互匹配會進入到登錄首頁;若不能正常匹配則系統會跳轉到報錯界面。
    3.4.2 商品入庫子模塊設計
    首先,入庫申請人需要向倉庫管理員提交一份入庫申請單和相應的貨物,倉庫管理員會根據所提交的清單進行對比。如果發現貨物與入庫申請單中的數據有所差異,那么則拒絕貨物入庫操作;如果發現庫存中有該商品存在,還需考慮入庫貨物的數量加上現有的庫存量是不是超過了該倉庫的最大庫存量,若超過則暫時禁止入庫。沒有超過的話,倉庫的管理員進行入庫操作。如果該庫存中沒有該商品存在,則需要重新添加該商品,計算該商品可在庫存中所能存放的最大庫存量,重新考慮入庫貨物的數量加上現有的庫存量是不是超過了該倉庫的最大庫存量,若超過則暫時禁止入庫。貨物存入倉庫之后,該倉庫管理員需要給入庫申請人開具一份貨物入庫單,入庫單中的內容必須嚴謹。至此該系統的入庫流程全部完成。
    3.4.3 商品出庫子模塊設計
    在進行出庫操作時,首先,出庫申請人需要向倉庫管理員提交一份申請單。若申請單不真實,則取消出庫操作,不再繼續進行出庫。對真實有效的出庫單,倉庫管理員再對照其要求出庫的貨物名稱查詢該貨物的信息和庫存量。如果此貨物的庫存量達未到所需要數量則取消出庫操作。如果此貨物的庫存量達到所需要數量,可以執行出庫操作并且記錄。隨后倉庫管理員給該申請人開出庫單據,倉庫管理系統出庫流程全部完成。
    3.4.4 用戶注冊子模塊設計
    系統中用戶登錄驗證相對比較簡單,可以將其流程概括如下:
    在用戶注冊時,需要在注冊的頁面各框中輸入用戶名、密碼、姓名、性別、年齡、聯系方式、email、聯系地址等一系列信息,系統將其提交至服務器端。服務器端處理程序時,服務器根據提交的內容將用戶名與其他信息進行分離判斷。如果沒有找到所注冊的用戶名,系統會進一步進行注冊;當在注冊的過程中有空的情況下系統會有相應的提示。在進行email注冊時,在注冊的欄中輸入的不正確時,系統會提示出錯誤。當輸入的內容符合要求時會繼續注冊。還可以選擇清空,從頭開始在注冊一遍內容。

  • 數據庫設計
    數據庫的設計在開發的過程中占有一個十分關鍵的作用,在這里強調數據庫重要性的作用,原因是數據庫是軟件開發過程的根基,前期的建設不牢固,會使得后期的建設出現大批量的問題,在后期的處理過程中會非常的困難。
    通常概念設計的主要目標是設計并反映出某一個組織部門的信息需求中的要求,數據庫系統通常是獨立的并主要存在于:數據庫系統的邏輯結構、DBMS即數據庫管理系統、計算機系統等模式。
    概念模式的設計方法是在需求分析的基礎上,通常使用E-R模型來表示數據以和數據之間的聯系,開發出能夠解決用戶信息要求和處理要求的數據庫的模式。數據庫概念設計的主要目標是能夠準確的描述應用領域的信息模式,并且支持用戶的不同應用,并方便轉換為數據庫系統邏輯模式以及方便用戶理解。該模型是不能夠直接的用于數據庫系統的實現的,因為它主要是面向現實世界的數據模型。在此階段,用戶可以參與和評價數據庫系統的設計,從而有利于保證數據庫系統的設計能夠滿足用戶的需求。
    4.1 數據庫概念
    數據庫技術從年代中期至今只有不到年的歷史,但其發展速度之快是其它技術所不及的。數據庫的發展已經從剛開始的網狀型數據庫發展到后來的的關系型數據庫現如今已經變為以面向對象為主要模型的數據庫。數據庫技術現如今已經與網絡的通信技術、現如今流行的人工智能技術以及面向對象的編程思想等技術之間互有融合,并且使得其得到了廣泛的發展與應用。
    數據庫的原理管理方式根據的是數據結構的方式進行的管理還有存儲數據的數據倉庫,在本次系統中的作用主要是用來查詢倉庫管理系統的系統設計與實現數據的存儲。使用數據庫可以帶來許多好處:使得數據的冗余度得到了減少,而且在一定的程度上使得數據的存儲的空間得到了充分的利用,讓數據資源能夠最大程度的得到共享等等。尤其在最近的一些年中計算機的關系數據庫的不斷地發展,使得編程方面更大限度的得到便利,在處理數據的過程中更加方便快捷,操作更容易上手。
    數據庫設計的目的是指在特定的環境下能夠在建立好的應用模式與好的應用環境之下使得用戶的各種需求得到滿足。
    數據庫在一個完整的網站中是必不可少的,原因是在網頁被訪問的過程中都會有數據保存下來,網站會是這些數據保存在一個文件中。可是在實際的網站建設當中,這些文件所能保存的數據往往是不夠的,無法滿足各種數據的需求[5]。因此一個完美的網站的建設必須擁有一個完美的數據庫。我們現在可以使用的數據庫有很多種,如數據庫、數據庫等等,在本次設計中,選擇了ORACLE數據庫作為后臺數據庫工具。自從ORACLE數據庫推出一來,得到了快速的發展,很快便在應用市場中占有了十分重要的地位。在時代的不斷發展過程中,ORACLE數據庫已經在發展的過程中占據了牢固的地位,在下如今工作的前景之下,以數據庫為背景的應用發展,為用戶的應用提供了款完善的數據管理和數據分析解決方案。數據庫是一種具有屬于自己的結構與管理的方式數據的倉庫。數據庫簡單來說是是屬于一種文件柜電子化的一種存儲工具(主要用于電子文件的存儲),用戶可以對其中的文件進行一定的操作。它能夠把以一種屬于自己的方式進行存儲、而且能夠使得多個用戶之間的數據相互的分享、還能使得用戶數據的冗余度能夠最大程度的減少、在應用程序之間的各種數據能夠分離。
    4.2 數據庫分析
    數據的模型屬于在數據庫當中中用來存儲數據的一種方式,是數據庫系統的基礎。
    數據模型經歷了:
    1、層次模型:是數據庫系統中最早使用的一種模型,它的數據的結構是一棵“有向樹”
    2、網狀模型:網狀模型以網狀結構表示實體之間的聯系。網中的每一個結點代表一個記錄類型,聯系用鏈接指針來實現。網狀模型可以表示許多不同的聯系,還能表示不同的數據之間的交流,即數據間的橫向關系與縱向關系,屬于擴展之后的層次模型。網狀模型可以方便地表示各種類型的聯系,但結構復雜,實現的算法難以規范化
    3、關系型:在關系模型中基本數據結構就是二維表,不用像層次或網狀那樣的鏈接指針。
    4.2.1 數據庫的完整性分析
    數據的正確性與數據之間的相容性即為數據哭庫的完整性。用來管理數據庫的系統,需要用一定的機制來檢查現存的數據庫中的數據是否滿足規定的條件,數據的約束條件是基于倉庫管理系統設計與實現語義的體現,會作為模式的一部分存入數據庫之中。本系統中定義了表與表之間的聯系有助于實現完整性規則,一般在程序中實現具體的完整性控制。數據庫的完整性約束能夠在一定的程度上防止終端的用戶輸入一些錯誤的數據,以此來保證所有的數據庫中的數據都是合法的、完整的。
    在設計數據庫表時采用數據庫完整性約束,它是數據庫完整性的一種機制,他會在之前用來定制一些規則,用來約束數據庫,而這些數據規則存放于數據庫中,具體來說,這種約束有以下幾種非空約束缺省值約束唯一性約束主鍵約束外部鍵約束規則約束。由于這種約束是加在數據庫的表的定義上的,因此,不需要有大的代價便可以取得一些高的性能。
    4.2.2 數據庫的安全性分析
    能夠保證數據的網整性、合法性還有安全性是數據庫重要的安全性能的指標。數據能夠在數據庫中大量的存放并且能夠實現數據之間的共享,這都屬于數據庫的寶貴的資源。
    數據庫的安全和服務器的安全是倉庫管理系統安全的重要性能。采用管理員表示和鑒定的方法實現數據庫的安全,此安全管理措施并不在前臺開發工具中實現,而是在后臺數據庫中實現。在登錄數據庫時,系統讓管理員戶表示自己的身份,不同的管理員權限不同,系統進行核實,分辨出此管理員是否能夠與系統匹配,若是,系統進一步核實用戶,通常要求重新輸入,系統和用戶重新輸入的信息用來鑒別用戶的身份。服務器的安全也是通過判斷用戶在登錄服務器時輸入信息是否與數據庫中的信息相匹配來驗證的[3]。這種方法比較容易實現,實現起來也比較方便。沒有采用更加復雜的系統安全管理措施是因為本管理系統一般是應用在校園網中,采用安全管理措施主要是為了防止沒有修改權限的用戶無意間修改了數據,因此采用用戶標識和鑒定的安全管理措施就能夠保障數據庫的安全性。
    4.3 數據庫的設計
    4.3.1 概念結構設計
    在次結構的設計過程當中,E-R模型法是最常見的設計方法。
    在次結構設計當中中,有以下幾種方法方法:
    自下往上、從上往下、逐步擴張、相互結合,以這種方式為模型然后煩別實現各個結構的模型。
    在物理結構設計階段首先分兩步走:
    確定數據庫的物理結構,是用來說明數據在數據庫中怎么樣存儲的。
    選取正確的關系模式存取方法有好多種方法進行選擇。
    概念設計通常是從系統的需求出發,常常將對象使用數據流的形式表達成為完整的抽象實體。而與模塊內部的細節無關。E-R圖為主要的工具,如下圖4-1。
  • 圖4-1 系統E-R圖
    4.3.2 邏輯結構設計
    (1) 管理員信息關系模式,里面的主鍵是管理員ID。
    管理員(管理員ID、用戶名、email、密碼、聯系方式、姓名、聯系地址、性別)
    (2) 客戶信息關系模式,里面的關系主鍵是客戶ID。
    客戶(客戶ID、用戶名、email、密碼、聯系方式、姓名、聯系地址、性別)
    (3) 商品信息關系模式,里面的關系主鍵是商品編號。。
    商品(商品編號、商品價格、商品名、類別、生產產地、商品數量)

    表3-1 管理員信息表
    列名 數據類型 可否為空 說明
    id number NOT NULL 管理員編號
    account varchar NOT NULL 帳號
    Password varchar NOT NULL 密碼
    name varchar NOT NULL 姓名
    sex varchar NOT NULL 性別
    age varchar NOT NULL 年齡
    phone varchar NOT NULL 聯系方式
    email varchar NOT NULL E-mail
    address varchar NOT NULL 地址

    表3-2 客戶信息表
    列名 數據類型 可否為空 說明
    id number NOT NULL 客戶編號
    account varchar NOT NULL 帳號
    password varchar NOT NULL 密碼
    name varchar NOT NULL 姓名
    sex varchar NOT NULL 性別
    age varchar NOT NULL 年齡
    phone varchar NOT NULL 聯系方式
    email varchar NOT NULL E-mail
    address varchar NOT NULL 地址

    表3-3 商品信息表
    列名 數據類型 可否為空 說明
    id number NOT NULL 庫存編號
    name Varchar NOT NULL 商品名稱
    goodsid varchar NOT NULL 商品編號
    price varchar NOT NULL 商品價格
    sort varchar NOT NULL 商品分類
    num varchar NOT NULL 商品數量
    address varchar NOT NULL 生產廠商
    4.4 數據庫的連接
    本系統與數據庫的連接方式,包括對數據庫中的信息進行添加、刪除、修改,都使用的數據持久化層(persistence layer)的開源框架Mybatis,它抽象了大量的JDBC冗余代碼,并提供了一個簡單易用的API和數據庫交互。以便倉庫管理人員在計算機上運行本系統時,對數據庫進行必要的操作.
    4.4.1 連接工具
    本系統采用mybatis數據持久化層的開源框架與數據庫進行連接,包括對數據庫中的信息進行添加、刪除、修改. MyBatis簡化與實現了在變成中的數據的持久化層(persistence layer),并且它抽象出了大量的JDBC冗余代碼,并提供了一個簡單易用的API和數據庫交互。MyBatis的前身是iBATIS,iBATIS于2002年由ClintonBegin創建。MyBatis3是iBATIS的另一個版本,而且支持注解還有Mapper。
    MyBatis具有簡單性和易使用性,所以,才會開始流行起來。在Java應用程序中,將從數據庫查詢到的數據生成所需要的Java對象;將Java對象中的數據通過SQL長期保存到數據庫中,都是數據庫的設計中所涉及到的。MyBatis通過抽象底層的JDBC代碼,自動化SQL結果集產生Java對象、Java對象的數據持久化數據庫中的過程使得對SQL的使用變得容易。
    使用Mybatis的具有一下幾點的優勢:

  • 它消除了大量的不必要的重復代碼。

  • 學習和使用起來非常簡單。

  • 能與其他的一些數據庫在一起共同使用。

  • 它可以接受SQL語句。

  • 具有與其他的一些框架一起使用的集成支持。

  • 提供了與第三方緩存類庫的集成支持。

  • 引入了更好的性能
    4.4.2 工廠類配置文件主要內容



















    4.4.3 Mapper類配置文件主要代碼


    select * from admin
    where account=#{account}


    select * from admin
    where id=#{id}



    select admin_seq.nextval from dual

    insert into admin values(#{id},#{account},#{password},#{name},#{sex},#{age},#{phone},#{email},#{address})


    update Admin set account=#{account},password=#{password}, name=#{name}, sex=#{sex}, age=#{age}, phone=#{phone}, address=#{address}, email=#{email}
    where account=#{account}

  • 軟件詳細設計
    在軟件的詳細設計的這個階段確定應該使用什么樣的方式來實現整個系統使這個階段的根本目的,通過這一階段的具體的努力基本上能夠明確整個系統所需要實現的所有的功能,具體的就是微軟件結構圖中每個模塊確定采用的算法和塊內數據結構,用某種選定的詳細設計工具更清晰的描述。經過這一階段的努力可以在編碼階段直接翻譯成為源程序。
    在這個階段中,考慮到的程序代碼的質量時必須注意,程序的“讀者”有兩個,即計算機和人。在整個軟件生存周期中,軟件的測試與診斷出的程序的錯誤還有程序錯誤的修改等都必須先讀程序。實際上對于任何一個經常使用的軟件系統,程序員在之后的過程中,讀程序所花費的時間可能比寫程序所花費的時間還要長的多。因此,衡量程序的質量不僅僅看他的邏輯是否正確,性能是否滿足要求,更重要的是看他是否一度易理解。詳細設計的目的不僅僅看他的邏輯上是否正確,性能是否滿足于要求,更重要的是看他是否易讀、易理解。結構化的程序設計技術是實現這些問題所使用的關鍵性技術,更是詳細設計的基礎。
    在本次倉庫管理系統說實現的這些基本功能。倉庫管理的人員或者是客戶在登錄后可以進入系統使用主界面進行相應的操作。
    5.1 登錄模塊
    在本次的倉庫管理系統中有兩個不同的入口。倉庫管理人員使用用戶名和密碼之后可以對應有相應的操作。用戶的登錄所需的用戶名和密碼已經在之前的用戶信息表中建立,用戶的個人信息由管理員提前錄入或者自己注冊。由于用戶信息需要先從所對應的數據庫中進行讀取,所以在讀取之前需要先于數據庫進行連接。在本系統當中,有兩個登陸模塊的入口。如下圖所示確認文件審核用戶提供的用戶名和密碼。
    管理員登錄圖片如下:

    圖5-1 管理員登錄
  • 管理員登陸模塊主要邏輯代碼如下:
    AloginServlet.java文件主要代碼如下:
    String account = request.getParameter(“in_be”);
    String password = request.getParameter(“pass”);
    HttpSession session = request.getSession();
    session.setAttribute(“account”, account);
    AdminService adminService = new AdminService();
    SqlSession sqlSession = MybatisSessionFactory.getSession();
    AdminDaoImp aDaoImp = new AdminDaoImp();
    try {
    List fadmin = aDaoImp.findAdminByName(account);
    sqlSession.clearCache();
    sqlSession.commit();
    //session.close();
    System.out.println(“用戶名不存在,ADS開始注冊”+fadmin);
    for(Admin fAdmin2:fadmin)
    {
    if( password.equals(fAdmin2.getPassword()))
    {
    response.sendRedirect(“AFirstLog.jsp”);
    session.setAttribute(“Admin”, fAdmin2);
    //System.out.println(“帳號密碼正確!”);
    find=true;
    }
    }
    if (fadmin.size()==0) {
    System.out.println(“用戶名不存在,ADS開始注冊”+fadmin);
    response.sendRedirect(“AloginFail.html”);
    throw new AdminServiceException(“用戶名不存在!”);
    }

    else {if(find==false){response.sendRedirect("AloginFail.html");throw new AdminServiceException("密碼錯誤!");}}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}

    5.2 入庫模塊
    商品入庫模塊這是系統設計得最好最完善的模塊之一。系統提供兩種入庫方式可供選擇一次是錄入庫存中已經錄入的商品,或者錄入庫存中沒有錄入的商品
    ,另外添加新商品。錄入已存在商品方式時,可自由選擇錄入某種商品。己錄入的商品的信息會在相應的信息的框中顯示出來。在此模塊的編程中,使用了非常多的編程技巧來提供上述功能做到了與完美的配合。此種方式便于管理員掌握相應商品的情況。按商品名查詢可以在選定撒謊能夠品后,查詢某一次或多次商品信息。
    添加已有上商品模塊如圖5-2所示:

    圖5-2 添加已有商品圖片
    當有新的商品進入倉庫中時,倉庫管理人員需點擊入庫界面的“添加新商品”選項。在對現有的商品進行入庫操作時,商品的信息都是重新輸入的。當將新入庫的商品的信息填寫完畢之后,系統會自己將新入庫的一些商品的信息添加到管理商品信息的數據表“goods”中。
    添加新商品模塊如圖5-3所示:

    圖5-3 添加新商品模塊
    5.3 出庫模塊
    商品出庫模塊這是系統設計得最好最完善的模塊之一。系統提供出庫方式是在庫存表中已經儲存有商品基礎上才能可以出庫的。若是在庫存中商品品的數量小于所要出庫的輸了時,系統會顯示出庫存數量不足。在進行出庫的操作過程時,若是出庫的商品在庫存中的數量小于0時,系統會報出出庫商品出錯。此時都不可以正常出庫。在正常出庫之后,庫存中商品的數量會發生改變。

    圖5-4 出庫管理模塊圖片
    在出庫商品的管理模塊中的主要邏輯代碼如下:
    GoodsDaoImp goodsDaoImp = new GoodsDaoImp();

    OutGoodsDaoImp outGoodsDaoImp = new OutGoodsDaoImp();for(Goods goods2:goods){String GoodsNum = goods2.getNum();System.out.println("goods2值為:"+goods2);Integer IntGoodsNum = Integer.valueOf(GoodsNum);Goods goods3 = goods2;System.out.println("IntGoodsNum :"+IntGoodsNum);if (IntOutNum>IntGoodsNum) {System.out.println("出庫數量不足!");response.sendRedirect("OutStockFail.jsp");}else{goods2.setNum(String.valueOf(IntGoodsNum-IntOutNum));try {//goods3.setNum(String.valueOf(IntOutNum));goodsDaoImp.updateGoods(goods2);sqlSession.commit();goods3.setNum(String.valueOf(IntOutNum));outGoodsDaoImp.saveOutGoods(goods3);sqlSession.commit();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}response.sendRedirect("Goods.jsp"); System.out.println("出庫成功!");} }

    5.4 用戶注冊模塊
    在用戶需要訪問此系統時,用戶需要在登錄框中輸入相應的信息,然后系統在后臺服務器中與數據庫進行匹配。所以在進入系統之前需要進行帳號密碼的注冊,在注冊的過程中需要輸入輸入用戶名、密碼、姓名、性別、年齡、聯系方式、email、聯系地址等一系列信息,系統將其提交至服務器端。服務器端處理程序時,服務器會獲取到系統提交的內容,然后系統會將獲取的信息與數據庫中所存儲的表格中的信息進行對比,得出相應的結果。若是輸入的用戶名是在數據庫的庫存中已經存在的,系統會終止注冊,然后系統會提示用戶名已經被使用,請重新注冊的提示。如果在進行繼續注冊的過程中出現某一項信息沒有填寫時,系統會發出此項信息沒有填寫請重新填寫的提示。在進行email注冊時,若輸入的格式與系統定義的格式不匹配的情況下,系統會作出相應的警告在重新注冊。若注冊的信息不滿足要求時,可以將信息清空再重新注冊。

    圖5-5 用戶注冊系統

    用戶注冊模塊的邏輯代碼如下:

    String account = request.getParameter(“in_be”);
    String password = request.getParameter(“pass”);
    HttpSession session = request.getSession();
    session.setAttribute(“account”, account);
    //System.out.println(“賬戶為:”+account);
    //System.out.println(“密碼為:”+password);
    AdminService adminService = new AdminService();
    SqlSession sqlSession = MybatisSessionFactory.getSession();
    AdminDaoImp aDaoImp = new AdminDaoImp();
    try {
    List fadmin = aDaoImp.findAdminByName(account);
    sqlSession.clearCache();
    sqlSession.commit();
    //session.close();
    // /session.flush();
    for(Admin fAdmin2:fadmin)

    {
    if( password.equals(fAdmin2.getPassword()))
    {
    response.sendRedirect(“AFirstLog.jsp”);
    session.setAttribute(“Admin”, fAdmin2);
    //System.out.println(“帳號密碼正確!”);
    find=true;
    }
    }
    if (fadmin.size()==0) {
    System.out.println(“用戶名不存在,ADS開始注冊”+fadmin);
    response.sendRedirect(“AloginFail.html”);
    throw new AdminServiceException(“用戶名不存在!”);
    }

    else {if(find==false){response.sendRedirect("AloginFail.html");throw new AdminServiceException("密碼錯誤!");}}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();

    }
    、}
    5.5 個人信息管理模塊
    當管理員或用戶進入到主界面之后,管理員可以選擇信息管理選項,會進入到用戶信息的管理模塊。管理員或者用戶在系統中具有兩項功能,第一項功能是可以對管理員或用戶的個人信息進行一些列的操作。在此界面上面可以查詢到用戶全部的個人信息。第二項功能是能夠管理全部的用戶的信息。在進入信息管理模塊對個人的信息可以進行查看,可以修改自己的信息。在點擊修改之后會完成所對應的個人信息。
    管理員信息模塊圖片如圖5-6所示:

    圖5-6 管理員信息
    此信息模塊的主要邏輯代碼如下:
    request.setCharacterEncoding(“UTF-8”)
    response.setCharacterEncoding(“UTF-8”);
    String account = request.getParameter(“userid”);
    String password = request.getParameter(“password”);
    String name = request.getParameter(“name”);
    String sex = request.getParameter(“sex”);
    String age = request.getParameter(“age”);
    String phone = request.getParameter(“phone”);
    String email = request.getParameter(“email”);
    String address = request.getParameter(“address”);
    Admin admin = new Admin();
    admin.setAccount(account);
    admin.setPassword(password);
    admin.setName(name);
    admin.setSex(sex);
    admin.setAge(age);
    admin.setPhone(phone);
    admin.setEmail(email);
    admin.setAddress(address);
    System.out.println(“AInfServlet獲取的信息:”+admin);
    SqlSession sqlSession = MybatisSessionFactory.getSession();
    HttpSession session = request.getSession();
    AdminDaoImp aDaoImp = new AdminDaoImp();
    try {
    aDaoImp.updateAdmin(admin);
    sqlSession.commit();
    session.setAttribute(“admin”, admin);
    response.sendRedirect(“AInf.jsp”);
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    在這個模塊當中,管理員可以對所有的信息進行修改,所有的用戶的信息也可以被查詢到。在客戶的需求之下,管理員可以隨意的進入到某一位客戶的信息界面之下,可以對所有的信息進行管理。修改之后用戶可使用最新一次更新的信息進行登錄,進入主界面之后可以更新自己信息。
    系統中全部的用戶信息塊如圖5-7所示:

    圖5-7 管理員對客戶信息管理
    實現此模塊的主要邏輯代碼如下:

    String password = request.getParameter(“password”);
    String name = request.getParameter(“name”);
    String sex = request.getParameter(“sex”);
    String age = request.getParameter(“age”);
    String phone = request.getParameter(“phone”);
    String email = request.getParameter(“email”);
    String address = request.getParameter(“address”);

    Customer customer = new Customer();customer.setAccount(account);customer.setPassword(password);customer.setName(name);customer.setSex(sex);customer.setAge(age);customer.setPhone(phone);customer.setEmail(email);customer.setAddress(address);System.out.println("AInfServlet獲取的信息:"+customer);SqlSession sqlSession = MybatisSessionFactory.getSession();HttpSession session = request.getSession();CustomerDaoImp customerDaoImp = new CustomerDaoImp();try {customerDaoImp.updateCustomer(customer);sqlSession.commit();//response.sendRedirect("ACInf.jsp");session.setAttribute("customer",customer);response.sendRedirect("ACInf.jsp");}

    catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

  • 系統的測試
    系統測試是軟件設計過程中最后的一部分,也是非常重要的一步。用于檢查軟件的質量、性能、可靠性等是否符合用戶需求。一套嚴謹的、規范的、完善的測試過程將大大提高軟件的質量、可信度、可靠性,降低軟件的出錯率,降低用戶風險系數。
    軟件測試就是用戶希望能夠通過軟件測試尋找出軟件當中的一些錯誤,以考慮該產品能不能被廣大的用戶所接受。而軟件測試者則是替用戶受過。而今,人們已認識到,用戶能夠得到最為滿意的產品是軟件測試的最終的目的,盡可能多的發現系統的問題并改正,然后交給客戶使用。
    在測試的過程中主要需要實現一下幾點要求:
    1)要完成并實現在前期承諾所需要實現的功能,并且在系統中的每一項功能都需要有說明書。
    2)所做出來的產品的性能要得到滿足。
    3)產品應該能夠適應所有的用戶的環境。
    總之,軟件測試的最終的目標是希望能夠找出系統中所存在的一些不足與缺陷,而且要求與軟件需求階段所提出的要求相匹配。要注意的是:軟件的測試并不能說明軟件中沒有錯誤,只能發現并盡可能的減少錯誤。
    6.1 測試簡述
    軟件測試,是在軟件的完整性、安全性、正確性以及質量是否過關的一種描述。也可以說成是輸出比較的一種過程。軟件測試的經典定義是:在一定的條件之下來操作并使用軟件,在這個過程中來發現并且找出軟件自身的錯誤,以此來評價一個軟件的質量。
    在經過查詢一系列的資料表明出,軟件的測試工作在軟件的整個開發的過程當中占有極其重大的一部分。在一些情況表明之下,如果所設計的軟件關系到人的生命安全的情況下,軟件的測試會變的即為的重要,并且還需要有成倍的工作量來增加測試的目的,以此來說明程序能正確的執行它應有的功能,還有表明程序沒有錯誤。如果抱有這樣的目的,就不會輕易地發現錯誤,從而導致選擇一些不易暴露錯誤的例子。
    6.1.1 測試目的及重要性
  • 測試目的
    系統的測試是一個在開發過程中十分重要的一個階段。在系統的測試階段找出程序的錯誤,并提高系統的性能是測試階段的主要任務。主要目的是檢驗系統“做得怎樣”。通過軟件的測試會發現一系列的問題,還能找出問題的原因,然后再對這些問題進行修改。
    Grenford J.Myers在以前提出過一下的軟件問題:
    1.找出程序中盡可能多的問題。
    2.設計出一個非常好的測試方案,有可能發現一些到目前為止沒有能發現的錯誤。
    3.如果能夠找出之前并未發現的錯誤,算是設計出了一個成功的方案。
    4.測試不是單獨的找出錯誤。而是通過分析錯誤,來找出產生錯誤的原因,來避免發生錯誤,幫助程序員找出軟件開發過程中的缺陷,以便及時進項改正。
    2.測試重要性
    不管是什么技術,以及如何使用的方法,但該軟件,該軟件將仍然是放錯了地方。為了減少引入的錯誤,您可以使用最新的語言,最領先的開發方法,詳細的改進開發過程,可是就算是這樣也不能夠完全的消除軟件上面的錯誤,還要進行詳細的測試過程,以找出引入的錯誤,你必須通過測試誤差估計密度在軟件中。所有工程學科最根本的所在是一個測試,是在軟件開發中占有很重要的一個部分。測試陪同,從編程本身的日子。統計顯示,軟件測試這個階段所花費的成本為這個測試是30%至50%的軟件開發總成本的。要是也考慮了維護的階段,在軟件開發的整個周期中,有所降低的也許是測試的成本比例,可是維護的工作,實際上是相當于對軟件進行了第二次的開發,還有可能是多次,許多測試工作也一定包含在其中。
    在實踐中,因為還有一個感知測試這是不正確的和錯誤的態度,后導致一系列的問題,主要包括有:
    假設測試,也很難帶來成就試驗人員從某種意義上說,作為設計和編碼一樣容易取得進展:
    那個戒指是不是建立在自然破裂,找到軟件錯誤作為測試的目標,他們負責的負面測試工作中發現錯位;
    測試工作是一種比較乏味、缺少技術性的工作;
    有時候開發人員在開發出軟件之后自信心會比較強大,在發現錯誤后,所表達的意見與他們的自尊心會有所沖突、矛盾。
    軟件測試,不賺錢、技術含量低不需要專門去做的錯誤認知。
  • 6.1.2 測試原則
    在軟件測試中人們所具有的經驗非常重要,但人們的心理因素也更加的很重要的。根據軟件測試的目標確定一些測試原則,將一些容易被人們忽視的、實際上又是顯而易見的問題作為原則來加以重視,所以測試有以下幾大原則。
    1.測試用力既要有合理的數據的輸入,又需要有一定合理的輸出結果。
    2.合理的用例固然重要,但是卻不能忘卻一些不合理的用例。
    3.檢查程序時,需要檢查程序該做的與不該做的事情。
    4.測試的計劃需要早早的開始制定。
    5.測試計劃、測試用例、測試報告需要進行長期的保存,以免以后出問題可以解決。
    6.遵守二八原則。
    7.軟件的開發人員應該盡量避免不要親自去進行測試。
    6.2 測試方法
    測試的過程是一個執行程序的過程,即要求被測試程序能夠在各種環境下運行。其實,不再記起上運行也可以發現程序的錯誤。為了便于區分,一般把被測程序在機器上運行稱為動態測試,不再機器上運行稱為靜態測試,廣義上講都屬于軟件測試。動態分析方法又分為黑盒測試和白盒測試兩種方法。以下的兩種方法是即為典型的測試方法。
    6.2.1 黑盒測試
    黑河測試,即功能測試。他的工作重點不是考慮程序應該是怎么編寫的。往往將被測試的程序看成一個黑盒,只是在軟件的接口處開始進行測試,根據前期制定的需求說明,來檢查所做出來的程序是否滿足了所有的功能要求。程序梭邊寫出來的每一項功能,都能不能滿足用戶在輸入數據之后所要達到的目的與要求。并且保持外部信息的完整性。在黑盒測試中會有以下的錯誤。
    1.發現一些沒有實現的功能。
    2.在接口上,數據能不能正確的別接收,結果是否合理。
    3.性能上是否滿足要求。
    4.所做出來的界面是不是很清晰、美觀。
    6.2.2 白盒測試
    白盒測試,即結構化的測試,主要測試程序的內部組成。白盒測試與黑盒測試法不同,測試人員將程序視為一個透明的盒子,測試人員需要檢查處理過程的中一些細微的程序,要求對程序的結構性做到一定程度的覆蓋,以此來檢驗程序內部的一些組成。
    白盒測試法也不可能完全測試,也做不到對所有的路徑都挨個測試一遍。例如要測試一個循環20次的嵌套if語句,循環體中有5條路徑,這樣的測試程序會產生很多種情況。如果每1ms完成一條路徑的測試,測試完這樣的一個程序需要花費很多的時間,因此可能做到完全覆蓋。
    總之,無論哪種測試的方法,對于一個大的軟件系統完全測試是不可能的,所以我們要找出更多更合適的方法進行測試,使得軟件產品達到一定的質量標準的要求。
    6.2.3 單元測試
    單元測試(unit testing),對軟件設計中的一些細小的結構單元進行測試。單元測試是在軟件開發過程中要進行的最低級別的測試活動,軟件的測試單元與其他部分相隔離的情況下進行測試。
    6.2.4 集成測試
    集成測試,即軟件的聯合測試。以單元測試為基礎,把系統中所做出來的一些模塊結合起來進行測試。
    6.3系統模塊的測試
    6.3.1 登陸模塊測試:
    在首次進入系統時,首次進入的是登陸注冊的界面,在輸入的信息有效的情況下會進入到首界面。如圖6-1所示為系統的登錄界面的測試:

    圖6-1 管理員登錄測試
    在當帳號密碼出錯時,系統會自動跳轉到一個報錯的頁面如圖6-2所示:

    圖6-2 登錄出錯界面
    6.3.2 出庫模塊測試

    系統在進入主界面之后會有一個出庫模塊的入口,在進入到出庫模塊時,在輸入的出庫數量小于庫存數量商品能夠進行正常出庫操作,查詢庫存結果隨之更新。出庫的數量比庫存中的數量躲得情況下,會跳轉一個出庫出錯的界面,提示庫存數量不足。該模塊之下的測試用例如下:
    庫存中的信息如圖6-3所示:

    圖6-3 出庫前庫存信息
    以華為手機出庫為例先存量為103,出庫數量20(如圖6-4所示):

    圖6-4 出庫信息圖
    在進行完出庫的操作之后,如圖6-5所示:

    圖6-5 出庫后庫存信息圖

    出庫數量超出庫存數量,以鉛筆為例,出庫25個如圖6-6所示:

    圖6-6 鉛筆出庫信息圖
    鉛筆進行出庫操作后庫存中的信息圖如圖6-7所示:

    圖6-7 庫存不足出庫后信息圖
    用戶信息模塊測試:
    此模塊的信息如圖6-8所示:

    圖6-8 用戶信息圖
    修改后信息圖如圖6-9所示:

    圖6-9 修改后用戶信息圖
    6.4.3 用戶信息模塊測試結果
    當在操作中,進入到系統中的這個模塊時,可以查看到本人的所有登錄信息。可以對此模塊中的所有的信息都進行修改操作,然后在對所作出的操作進行更新。

    總 結
    基于Web的倉庫管理系統在之后的市場發展中有著非常廣闊的前景,會對傳統的一些理念造成巨大的沖擊。本文是運用了計算機學科中的兩項重要的技術即計算機網絡技術和數據庫技術出發,分析了Web數據庫及JSP技術在本次倉庫管理系統中的應用。本文的主要工作如下:
    1、探討了數據庫應用系統所經歷的主機/服務器—瀏覽器/服務器模式,重點討論了三層結構的工作原理及其特點,其中有中間件技術(CGI和API), Java技術、JSP技術、JScript技術、Mybatis技術、PowerDesiner技術等,而且還從一定的方面評價分析了其中的優缺點。
    2、探討了怎么合理的運用在軟件工程中所學習的一些基本原理去分析和設計實現倉庫管理系統的過程。并對系統的開發原理、功能設計和模塊的設計做出系統的分析。
    3、論文中詳盡的介紹了倉庫管理系統的總體框架和使用的主要技術、以及功能的實現。
    本文通過理論聯系實際,對三層架構結構上的Web數據庫的不同實現方法作了詳盡的分析,同時使用JSP技術開發的一個倉庫管理系統。

    致 謝
    衷心感謝我的指導老師,老師淵博深厚的學識,敏銳的眼光,精辟的見解,創新的開拓精神,嚴謹認真的治學風范,勤奮謙遜的工作態度,以及忘我的工作精神是我終身的學習楷模,導師對我耐心的指導和嚴格的要求使我的學習有了不斷提高和許多收獲,并將繼續激勵我在今后的工作中克服困難,迎接挑戰。真誠的向尊敬的老師致以崇高的敬意!
    本人的論文得以完成,與所有的授課老師以及全體同學的啟發和幫助是密不可分的,在此向他們表示衷心的謝意!
    特別要感謝我的家人對我學習期間的理解、支持與鼓勵!
    隨著科學技術的不斷發展,計算機技術和網絡技術也在日新月異地飛速發展,人們總是處在不斷學習階段,再加上作者水平有限,所以本文肯定存在不少錯誤和不盡如人意之處,歡迎廣大老師和同學批評指正,在此深表感謝。

    參考文獻

    [1] 鄭人杰等編著,軟件工程[M].清華大學出版社,1999
    [2] DAVID A. GUSTAFSON,Schaum’s Outline Series -Theory and Problems of SOFTWARE ENGINEERING[M].McGRAW-HILL Companies.Inc,2002
    [3] 唐東,《Web數據庫開發進階》,人民郵電出版社
    [4] Jeffrey D.Ullman.Fundamental Course of Database System[M].TsingHua Press,2001.
    [5] DAVID A. GUSTAFSON,Schaum’s Outline Series -Theory and Problems of SOFTWARE ENGINEERING[M].McGRAW-HILL Companies.Inc,2002
    [6] 張海藩.軟件工程導論[M]. 北京:清華大學出版社,2003.
    [7] 李習文,李斌.庫存控制與管理 [M].北京:機械工業出版社,2007:43-120
    [8] 周之英編著,現代軟件工程[M].科學出版社,2000
    [9] 徐娟.網頁制作實用技術[M].北京:清華大學出版社,2003:21-52.
    [10] 元燕輝等,《瀏覽器/服務器應用開發》,科學出版社

    附件1:外文文獻(原文)
    Java Technical Description
    Java as a Programming Platform
    Java is certainly a good programming language. There is no doubt that it is oneofthe better languages available to serious programmers. We think it could potentially have been a great programming language, but it is probably too late for that. Once a language is out in the field, the ugly reality of compatibility with existing code sets in."
    Java was never just a language. There are lots of programming languages out there, and few of them make much of a splash. Java is a whole platform, with a huge library, containing lots of reusable code, and an execution environment that provides services such as security, portability across operating systems, and automatic garbage collection.
    As a programmer, you will want a language with a pleasant syntax and comprehensible semantics (i.e., not C++). Java fits the bill, as do dozens of other fine languages. Some languages give you portability, garbage collection, and the like, but they don’t have much of a library, forcing you to roll your own if you want fancy graphics or networking or database access. Well, Java has everything—a good language, a high-quality execution environment, and a vast library. That combination is what makes Java an irresistible proposition to so many programmers.
    Features of Java
    1.Simple
    We wanted to build a system that could be programmed easily without a lot of esoteric training and which leveraged today’s standard practice. So even though we found that C++ was unsuitable, we designed Java as closely to C++ as possible in order to make the system more comprehensible. Java omits many rarely used, poorly understood, confusing features of C++ that, in our experience, bring more grief than benefit.
    The syntax for Java is, indeed, a cleaned-up version of the syntax for C++. There is no need for header files, pointer arithmetic (or even a pointer syntax), structures, unions, operator overloading, virtual base classes, and so on. (See the C++ notes interspersed throughout the text for more on the differences between Java and C++.) The designers did not, however, attempt to fix all of the clumsy features of C++. For example, the syntax of the switch statement is unchanged in Java. If you know C++, you will find the transition to the Java syntax easy.
    If you are used to a visual programming environment (such as Visual Basic), you will not find Java simple. There is much strange syntax (though it does not take long to get the hang of it). More important, you must do a lot more programming in Java. The beauty of Visual Basic is that its visual design environment almost automatically provides a lot of the infrastructure for an application. The equivalent functionality must be programmed manually, usually with a fair bit of code, in Java. There are, however, third-party development environments that provide “drag-and-drop”-style program development.
    Another aspect of being simple is being small. One of the goals of Java is to enable the construction of software that can run stand-alone in small machines. The size of the basic interpreter and class support is about 40K bytes; adding the basic standard libraries and thread support (essentially a self-contained microkernel) adds an additional 175K.
    2. Object Oriented
    Simply stated, object-oriented design is a technique for programming that focuses on the data (= objects) and on the interfaces to that object. To make an analogy with carpentry, an “object-oriented” carpenter would be mostly concerned with the chair he was building, and secondarily with the tools used to make it; a “non-object-oriented” carpenter would think primarily of his tools. The object-oriented facilities of Java are essentially those of C++.
    Object orientation has proven its worth in the last 30 years, and it is inconceivable that a modern programming language would not use it. Indeed, the object-oriented features of Java are comparable to those of C++. The major difference between Java and C++ lies in multiple inheritance, which Java has replaced with the simpler concept of interfaces, and in the Java metaclass model. The reflection mechanism and object serialization feature make it much easier to implement persistent objects and GUI builders that can integrate off-the-shelf components.
    3. Distributed
    Java has an extensive library of routines for coping with TCP/IP protocols like HTTP and FTP. Java applications can open and access objects across the Net via URLs with the same ease as when accessing a local file system.
    We have found the networking capabilities of Java to be both strong and easy to use. Anyone who has tried to do Internet programming using another language will revel in how simple Java makes onerous tasks like opening a socket connection. (We cover networking in Volume 2 of this book.) The remote method invocation mechanism enables communication between distributed objects (also covered in Volume 2).There is now a separate architecture, the Java 2 Enterprise Edition (J2EE), that supports very large scale distributed applications.
    4. Robust
    Java is intended for writing programs that must be reliable in a variety of ways. Java puts a lot of emphasis on early checking for possible problems, later dynamic (run-time) checking, and eliminating situations that are error-prone.… The single biggest difference between Java and C/C++ is that Java has a pointer model that eliminates the possibility of overwriting memory and corrupting data.
    This feature is also very useful. The Java compiler detects many problems that, in other languages, would show up only at run time. As for the second point, anyone who has spent hours chasing memory corruption caused by a pointer bug will be very happy with this feature of Java.
    If you are coming from a language like Visual Basic that doesn’t explicitly use pointers, you are probably wondering why this is so important. C programmers are not so lucky. They need pointers to access strings, arrays, objects, and even files. In Visual Basic, you do not use pointers for any of these entities, nor do you need to worry about memory allocation for them. On the other hand, many data structures are difficult to implement in a pointerless language. Java gives you the best of both worlds. You do not need pointers for everyday constructs like strings and arrays. You have the power of pointers if you need it, for example, for linked lists. And you always have complete safety, because you can never access a bad pointer, make memory allocation errors, or have to protect against memory leaking away.
    5. Secure
    Java is intended to be used in networked/distributed environments. Toward that end, a lot of emphasis has been placed on security. Java enables the construction of virus-free, tamper-free systems.
    In the first edition of Core Java we said: “Well, one should ‘never say never again,’” and we turned out to be right. Not long after the first version of the Java Development Kit was shipped, a group of security experts at Princeton University found subtle bugs in the security features of Java 1.0. Sun Microsystems has encouraged research into Java security, making publicly available the specification and implementation of the virtual machine and the security libraries. They have fixed all known security bugs quickly. In any case, Java makes it extremely difficult to outwit its security mechanisms. The bugs found so far have been very technical and few in number.
    From the beginning, Java was designed to make certain kinds of attacks impossible, among them:
    ?Overrunning the runtime stack—a common attack of worms and viruses
    ?Corrupting memory outside its own process space
    ?Reading or writing files without permission
    A number of security features have been added to Java over time. Since version 1.1, Java has the notion of digitally signed classesWith a signed class, you can be sure who wrote it. Any time you trust the author of the class, the class can be allowed more privileges on your machine.
    6. Architecture Neutral
    The compiler generates an architecture-neutral object file format—the compiled code is executable on many processors, given the presence of the Java runtime system. The Java compiler does this by generating bytecode instructions which have nothing to do with a particular computer architecture. Rather, they are designed to be both easy to interpret on any machine and easily translated into native machine code on the fly.This is not a new idea. More than 20 years ago, both Niklaus Wirth’s original implementation of Pascal and the UCSD Pascal system used the same technique.
    Of course, interpreting bytecodes is necessarily slower than running machine instructions at full speed, so it isn’t clear that this is even a good idea. However, virtual machines have the option of translating the most frequently executed bytecode sequences into machine code, a process called just-in-time compilation. This strategy has proven so effective that even Microsoft’s .NET platform relies on a virtual machine.
    The virtual machine has other advantages. It increases security because the virtual machine can check the behavior of instruction sequences. Some programs even produce bytecodes on the fly, dynamically enhancing the capabilities of a running program.
    7. Portable
    Unlike C and C++, there are no “implementation-dependent” aspects of the specification. The sizes of the primitive data types are specified, as is the behavior of arithmetic on them.
    For example, an int in Java is always a 32-bit integer. In C/C++, int can mean a 16-bit integer, a 32-bit integer, or any other size that the compiler vendor likes. The only restriction is that the int type must have at least as many bytes as a short int and cannot have more bytes than a long int. Having a fixed size for number types eliminates a major porting headache. Binary data is stored and transmitted in a fixed format, eliminating confusion about byte ordering. Strings are saved in a standard Unicode format.The libraries that are a part of the system define portable interfaces. For example, there is an abstract Window class and implementations of it for UNIX, Windows, and the Macintosh.
    As anyone who has ever tried knows, it is an effort of heroic proportions to write a program that looks good on Windows, the Macintosh, and 10 flavors of UNIX. Java 1.0 made the heroic effort, delivering a simple toolkit that mapped common user interface elements to a number of platforms. Unfortunately, the result was a library that, with a lot of work, could give barely acceptable results on different systems. (And there were often different bugs on the different platform graphics implementations.) But it was a start. There are many applications in which portability is more important than user interface slickness, and these applications did benefit from early versions of Java. By now, the user interface toolkit has been completely rewritten so that it no longer relies on the host user interface. The result is far more consistent and, we think, more attractive than in earlier versions of Java.
    8. Interpreted
    The Java interpreter can execute Java bytecodes directly on any machine to which the interpreter has been ported. Since linking is a more incremental and lightweight process, the development process can be much more rapid and exploratory.
    Incremental linking has advantages, but its benefit for the development process is clearly overstated. In any case, we have found Java development tools to be quite slow. If you are used to the speed of the classic Microsoft Visual C++ environment, you will likely be disappointed with the performance of Java development environments. (The current version of Visual Studio isn’t as zippy as the classic environments, however. No matter what language you program in, you should definitely ask your boss for a faster computer to run the latest development environments. )
    9. High Performance
    While the performance of interpreted bytecodes is usually more than adequate, there are situations where higher performance is required. The bytecodes can be translated on the fly (at run time) into machine code for the particular CPU the application is running on.
    If you use an interpreter to execute the bytecodes, “high performance” is not the term that we would use. However, on many platforms, there is also another form of compilation, the just-in-time (JIT) compilers. These work by compiling the bytecodes into native code once, caching the results, and then calling them again if needed. This approach speeds up commonly used code tremendously because one has to do the interpretation only once. Although still slightly slower than a true native code compiler, a just-in-time compiler can give you a 10- or even 20-fold speedup for some programs and will almost always be significantly faster than an interpreter. This technology is being improved continuously and may eventually yield results that cannot be matched by traditional compilation systems. For example, a just-in-time compiler can monitor which code is executed frequently and optimize just that code for speed.
    10. Multithreaded
    The enefits of multithreading are better interactive responsiveness and real-time behavior.if you have ever tried to do multithreading in another language, you will be pleasantly surprised at how easy it is in Java. Threads in Java also can take advantage of multiprocessor systems if the base operating system does so. On the downside, thread implementations on the major platforms differ widely, and Java makes no effort to be platform independent in this regard. Only the code for calling multithreading remains the same across machines; Java offloads the implementation of multithreading to the underlying operating system or a thread library. Nonetheless, the ease of multithreading is one of the main reasons why Java is such an appealing language for server-side development.
    11. Dynamic
    In a number of ways, Java is a more dynamic language than C or C++. It was designed to adapt to an evolving environment. Libraries can freely add new methods and instance variables without any effect on their clients. In Java, finding out run time type information is straightforward.
    This is an important feature in those situations in which code needs to be added to a running program. A prime example is code that is downloaded from the Internet to run in a browser. In Java 1.0, finding out runtime type information was anything but straightforward, but current versions of Java give the programmer full insight into both the structure and behavior of its objects. This is extremely useful for systems that need to analyze objects at run time, such as Java GUI builders, smart debuggers, pluggable components, and object databases.
    Java and the Internet
    The idea here is simple: users will download Java bytecodes from the Internet and run them on their own machines. Java programs that work on web pages are called applets. To use an applet, you need a Java-enabled web browser, which will execute the bytecodes for you. Because Sun is licensing the Java source code and insisting that there be no changes in the language and basic library structure, a Java applet should run on any browser that is advertised as Java-enabled. Unfortunately, reality has been different. Various versions of Netscape and Internet Explorer run different versions of Java, some of which are seriously outdated. This sorry situation made it increasingly difficult to develop applets that take advantage of the most current Java version. To remedy this problem, Sun has developed the Java Plug-in, a tool that makes the newest Java runtime environment available to both Netscape and Internet Explorer
    When the user downloads an applet, it works much like embedding an image in a web page. The applet becomes a part of the page, and the text flows around the space used for the applet. The point is, the image is alive. It reacts to user commands, changes its appearance, and sends data between the computer presenting the applet and the computer serving it.
    a good example of a dynamic web page—an applet to view molecules—that carries out sophisticated calculations. By using the mouse, you can rotate and zoom each molecule to better understand its structure. This kind of direct manipulation is not achievable with static web pages, but applets make it possible.

    附件2:外文文獻(譯文)

    Java技術介紹
    Java是一種程序設計平臺
    Java是一種優秀的程序設計語言。對于一個名副其實的程序設計人員來說,使用Java無疑是一個好的選擇。有人認為:Java將有望成為一種最優秀的程序設計語言,但還需要一個相當長的發展時期。一旦一種語言應用于某個領域,與現存代碼的相容性問題就擺在了人們的面前。”
    Java并不只是一種語言。在此之前出現的那么多種語言也沒有能夠引起那么大的轟動。Java是一個完整的平臺,有一個龐大的庫,其中包含很多可重用的代碼和一個提供諸如安全性、跨操作系統的可移植性以及自動垃圾回收等服務的執行環境。
    作為一名程序設計人員,常常希望能夠有一種語言,它具有令人賞心悅目的語法和易于理解的語義(C++不是這樣的)。與許多其他的優秀語言一樣,Java恰恰滿足了這些要求。有些語言提供了可移植性、垃圾回收等等,但是,沒有提供一個大型的庫,如果想要有奇特的繪圖功能、網絡連接功能和數據庫存取功能就必須自己動手編寫代碼。Java這種功能齊全的出色語言,具有高質量的執行環境以及龐大的庫。正是因為它集多種優勢于一身,所以對于廣大的程序設計人員來說有著不可抗拒的吸引力。
    JAVA的特性
    1.簡單性
    人們希望構建一個無需深奧的專業訓練就可以進行編程的系統,并且要符合當今的 標準慣例。因此,盡管人們發現C++不太適用,但在設計Java的時候還是盡可能地接近 C++,以便系統更易于理解。Java別除了C++中許多很少使用、難以理解、易混淆的特性。在目前看來,這些特性帶來的麻煩遠遠大于帶來的好處。
    的確,Java語法是C++語法的一個“純凈”版本。這里沒有頭文件、指針運算(甚至指針語法)、結構、聯合、操作符重載、虛基類等等。(請參看本書各個章節給出的C++注釋,那里比較詳細地解釋了Java與C++之間的區別。)然而,設計者并沒有試圖清除C++中所有不適當的特性。例如,switch語句的語法在Java中就沒有改變。如果熟悉C++就會發現可以輕而易舉地將它轉換成Java,
    如果已經習慣于可視化的編程環境(例如Visual Basic),就不會覺得Java簡單了。Java有許多奇怪的語法(盡管掌握其要領并不需要很長時間),更重要的是,使用Java需要自己編寫大量的程序。Visual Basic的魅力在于它的可視化設計環境幾乎自動地為應用程序提供了大量的基礎結構。而使用Java實現同樣的功能卻需要手工地編制代碼,通常代碼量還相當大。然而,已經有一些支持“拖放”風格程序開發的第三方開發環境。
    簡單性的另一個方面是小。Java的目標之一是支持開發能夠在小型機器上獨立運行的軟件。基本的解釋器以及類支持大約僅為40KB;再加上基礎的標準類庫和對線程的支持(基本上是一個自含的微內核)大約需要增加175KB。這是一個了不起的成就。然而,需要注意的是支持圖形用戶界面(GUI)的類庫相當大。
    2.面向對象
    簡單地講,面向對象設計是一種程序設計技術。它將重點放在數據(即對象)和對象的接口上。用木匠來打一個比方,一個“面向對象的”木匠始終關注的是所制作的 椅子,第二位才是所使用的工具;一個“非面向對象的”木匠則首先考慮的是所用的工具。在本質上,Java的面向對象能力與C++是一樣的。
    在過去的30年里,面向對象已經證明了自身的價值,一種現代的程序設計語言不使用面向對象技術簡直讓人難以置信。的確,Java的面向對象特性與C++旗鼓相當。Java與C++的主要不同點在于多繼承,在Java中,取而代之的是簡單的接口概念,以及Java的元類(metaclass)模型。
    反射機制以及對象序列化特性使得Java更加容易實現持久對象和GUI構建器(可以整合外來組件)。
    3.分布式
    Java有一個擴展的例程庫,用于處理像HTTP和FTP這類的TCP/IP協議。Java應用程序能夠通過URL打開和訪問網絡上的對象,其便利程度如同訪問本地文件系統一樣。 人們已經看到Java的網絡能力強大且易于使用。任何曾經試圖使用其他語言進行網絡編程的人都會驚呼Java竟然把類似打開socket連接這類繁重的任務都變得如此簡單。
    另外,遠程方法調用機制使得分布式對象之間可以進行通信。 現在有一種獨立的體系結構,Java 2企業版(J2EE ),它支持大規模的分布式應用。
    4.健壯性
    Java的設計目標之一在于使用Java編寫的程序具有多方面的可靠性。Java投入了大量的精力進行早期的問題檢測、后期動態的(運行時)檢測,并消除了有出錯傾向的狀態……
    Java和C++最大的不同在于Java采用的指針模型可以消除重寫內存和損壞數據的可能性。這個特性非常有用。Java編譯器能夠檢測許多在其他語言中僅在運行時刻才能夠檢測出來的問題。至于第二點,對于曾經花費幾個小時來檢查由于指針bug而引起內存沖突的人來說,一定很喜歡Java的這一特性。
    如果曾經只使用過Visual Basic這類沒有顯式指針的語言,就會感覺這么說似乎有些小題大做。然而,C程序員就沒有這樣幸運了。他們需要利用指針來存取串、數組、對象,甚至文件。
    在Visual Basic中,根本不必使用指針來訪問這些實體,也不必關心有關內存分配的問題。另一方面,在沒有指針的語言中,許多數據結構很難實現。Java具有雙方的優勢。它不需要使用指針構造諸如串、數組這樣的結構。如果需要,也能夠具有指針的能力,如鏈表。Java絕對是安全的,其原因是永遠不會存取一個“壞的”指針,造成內存分配的錯誤,也不必防范內存泄漏。
    5.安全性
    Java適用于網絡/分布式環境。為了達到這個目標,在安全方面投入了很大精力。 使用Java可以構建防病毒、防墓改的系統。事實證明這是正確的。在Java開發工具箱啟用后不久,普林斯頓大學的一些安全專家們發現了在Java 1.0中的某些安全特性方面存在著一些非常隱蔽的bug, Sun Microsystems大力支持對Java的安全性的研究,制定了供人們使用的規范,實現了虛擬機和安全庫,并迅速地處理了所有已知的安全bug。在任何情況下,蒙騙Java的安全機制都是十分困難的。現在,發現bug所需的技術性越來越強,數目越來越少。 從一開始,Java就被設計成能夠防范各種襲擊,包括:
    ·禁止運行時堆棧溢出。例如,蠕蟲等病毒常用的襲擊手段。
    ·禁止在自己的處理空間之外破壞內存。
    ·未經授權禁止讀寫文件。許多安全特性相繼不斷地被加入Java中。
    自從Java 1.1問世以來,Java就有了數字簽名類(digitally signed class)的概念(請參看卷II)。通過數字簽名類,可以確定類的作者。如果信任這個類的作者,這個類就可以在你的機器上擁有更多的權限。
    來自微軟的基于ActiveX技術的競爭代碼傳輸機制,其安全性完全依賴于數字簽名。這顯然是不夠的,因為微軟自身產品的任何用戶都可以證實,來自知名提供商的程序會崩潰并對系統產生危害。Java的安全機制比ActiveX要強得多,因為它是在應用程序運行時加以拉制并制止惡意性破壞的。
    6.體系結構中立
    編譯器生成一個體系結構中立的目標文件格式,這是一種編譯過場代碼,只要有Java運行時系統,就可以在許多處理器上運行。Java編譯器通過生成與特定的計算機體系結構無關的字節碼指令來實現這一特性。精心設計的字節碼不僅可以很容易地在任何機器上被解釋執行,而且還可以迅速地翻譯成本地機器的代碼。這并不是什么新的思想。20多年以前,Niklaus Wirth最初實現的Pascal以及UCSD Pascal系統都使用了這種技術。當然,解釋字節碼肯定要比全速地運行機器指令慢很多。所以說,這是不是一個好的思想還很難講!然而,虛擬機有一個選項,它可以將執行最頻繁的字韋碼序列翻譯成機器碼,這一過程被稱為即時編譯。這一策略已經被證明十分有效,致使微軟的.NET平臺也依賴于虛擬機。虛擬機還有一些其他的優點。虛擬機可以檢測指令序列的行為,以增強其安全性。有些程序甚至能夠快速地生成字節碼,并動態地增強所運行程序的處理能力。
    7.可移植性
    與C和C++不同,Java規范中沒有“依賴具體實現”的地方。塞本數據類型的大小以及有關算法都做了明確的說明。例如,Java中的int永遠為32位的整數,而在C/C++中,int可能是16位整數、32位整數,也可能是編譯器提供商指定的其他大小。唯一的限制只是int類型的大小不能低于short int,并且不能高于long int。在Java中,數據類型具有固足的大小,們除J代消移祖盯竿八大油a’i土女IWJ*I。-ml R77數據以固定的格式存儲和傳輸,消除了字節順序的困擾。字符串是用標準的Unicode格式存儲的。作為系統的組成部分的類庫,定義了可移植的接口。例如,有一個抽象的Window類給出了在UNIX, Windows和Macintosh環境下的不同實現。
    凡是嘗試過的人都知道,要編寫一個在Windows, Macintosh和10種不同風格的、在UNIX上看起來都不錯的程序有多么困難。Java 1.0就嘗試著做了這么一個壯舉,發布了一個將常用的用戶界面元素映射到不同平臺上的簡單工具箱。遺憾的是,花費了大量的心血,卻構建了一個在各個系統上都難以讓人接受的庫(而且,在不同平臺的圖形實現中有不同的bug)。不過,這畢竟是個開端。對于許多應用問題來說,可移植性比花枝招展的用戶界面更加重要。而且這些應用程序從Java的早期版本中獲益匪淺。現在,用戶界面工具箱已經完全被重寫了,不再依賴于主機的用戶接口。現在的Java版本比早期版本更加穩定,更加吸引人。
    8.解釋型
    Java解釋器可以在任何移植了解釋器的機器上執行Java字節碼。由于鏈接是一個更加增量且簡便的過程,所以開發過程也變得更加快捷,更加具有探索性。增量鏈接有其優勢,但給開發過程帶來的好處顯然是言過其實了。在任何情況下,都會覺得Java開發工具的速度相當慢。如果習慣于經典的Microsoft Visual C++環境的速度,就會對Java開發環境的性能感到失望。(但是,Visual Studio的當前版本不像經典的環境那樣快捷。無論用什么語言編寫程序,都需要向老板申請一臺速度更快的計算機,以便運行最新的開發環境。)
    9.高性能
    盡管對解釋后的字節碼性能已經比較滿意,但在有些情況下卻需要更加高效的性能。字節碼可以(在運行時刻)被快速地翻譯成運行該應用程序的特定CPU的機器碼。如果使用解釋器執行字節碼,根本就不可能用術語“高性能”。然而,在許多平臺上,還有另一種編譯形式,這就是即時編譯器(JIT編譯器)。它的基本工作方式是一次把字節碼編譯為本地代碼,并將結果緩存起來。在需要的時候重新調用。由于這種方式只需要進行一次解釋,從而極大地提高了常用代碼運行速度。雖然,即時編譯器仍然比真正的本地代碼編譯器慢一些,但是對某些程序來說,能夠提高10倍乃至20倍的速度,而且幾乎在任何情況下,都比解釋器的速度快得多。這個技術始終在不斷完善著,或許有一天它能夠達到傳統編譯系統所無法匹敵的性能。例如,即時編譯器可以監視哪些代碼被頻繁地執行,并對其進行優化,以提高程序的運行速度。
    10.多線程
    多線程可以帶來更好的交互響應和實時行為。 如果曾經使用過其他語言編寫多線程的應用程序,就會對Java多線程處理的便捷性驚嘆不已。
    只要操作系統支持,Java中的線程就可以利用多個處理器。在底層,主流平臺的線程實現機制各不相同,Java并沒有花費太大的力氣對此實現平臺無關性。在不同的機器上,只是調用多線程的代碼完全相同;Java把多線程的實現交給了底層的操作系統或線程庫來完成。(有關線程的詳細內容將在卷II中介紹。)盡管如此,多線程的簡單性是Java成為頗具魅力的服務器端開發語言的主要原因之一。
    11.動態性
    從各種角度看,Java與C或C++相比更加具有動態性。它能夠適應不斷發展的環境。庫中可以自由地添加新方法和實例變童,而時客戶端卻沒有任何影響。在Java中找出運行時刻類型信息十分直觀。當需要將某些代碼添加到正在運行的程序中時,動態性將是一個非常重要的特性。一個很好的例子是:從Internet上下載代碼,然后在瀏覽器上運行。在Java 1.0中,不能直接地獲取運行時類型信息,而Java的當前版本允許程序員知曉對象的結構和行為。這對于必須在運行時分析對象的系統來說非常有用。這些系統有:Java GUI構建器、智能調試器、可插入組件以及對象數據庫。
    微軟曾經發布了一個叫做J++的產品,它與Java有許多共享的機制。與Java一樣,J++是由虛擬機來執行的,該虛擬機與執行Java字節碼的Java虛擬機相互兼容,但是,當與外部代碼有接口時就會出現很多不同之處。基本語言的語法與Java幾乎一樣。只是除了與Windows API的接口之外,還增加了一些可能具有一定實用性的語言結構。Java和J++不僅共享通用的語法,它們的塞本類庫(串、實用程序、聯網、多線程、數學函數等等)從本質上說也是一致的。然而,圖形庫、用戶界面、遠程對象存取的方式則完全不同。為此,微軟不再支持J++,取而代之的是另一種被稱為C#語言。C#與Java有很多相似之處,然而使用的卻是完全不同的虛擬機。甚至還有一種J#語言可將J++的應用遷移到使用C#的虛擬機上。
    Java與Internet
    這里的思想很簡單:用戶將從Internet下載Java字節碼,并在自己的機器上運行。在網頁中運行的Java程序稱為applet。為了使用applet,需要一個啟用Java的Web瀏覽器來執行字節碼。因為Sun公司只負責發放Java源代碼的許可證,并堅持不允許對語言和基本類庫的結構做出任何修改,因此,Java的applet應該可以運行在任何啟用Java瀏覽器上。遺憾的是,實際情況并非如此。
    各個版本的Netscape(網景瀏覽器)和Internet Explorer (IE瀏覽器)運行著不同版本的Java,其中有些早已過時。這種糟糕的情況導致更加難于利用Java最新版本來開發applet。為了擺脫這種局面,Sun開發了Java插件。這就使得Netscape和Internet Explorer都可以利用最新的Java運行時環境。 用戶下載一個applet就如同在網頁中嵌入一幅圖片。applet成為了頁面的一部分。文本環繞著applet所占據的空間周圍。關鍵一點是圖片為活動的。它可以對用戶命令做出響應,改變外觀,在運行它的計算機與提供它的計算機之間傳遞數據。 applet顯示了分子結構,這將需要相當復雜的計算。
    在一個網頁中,可以利用鼠標進行旋轉,調整焦距等操作,以便能夠更好地理解分子結構。用靜態網頁將無法實現這種直接操作,而applet卻可以達到此目的。可以借助applet在網頁上增加按鈕和輸人框。但是,通過撥號連接下載這樣的applet速度相當慢。除此之外,還可以使用Dynamic HTML, HTML表單和某種腳本語言(如JavaScript)完成這類操作。當然,早期的applet主要用于動畫,如大家熟悉的旋轉球、跳動的卡通字符、瘋狂。

    完整畢業設計下載:https://www.huzhan.com/code/goods344411.html

    總結

    以上是生活随笔為你收集整理的基于Web的仓库管理系统的设计与实现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    377p欧洲日本亚洲大胆 | 亚洲成在人网站无码天堂 | 狠狠躁日日躁夜夜躁2020 | 成人一区二区免费视频 | 精品久久久久久人妻无码中文字幕 | 国产亚洲日韩欧美另类第八页 | 波多野42部无码喷潮在线 | 国产精品igao视频网 | 国产在线精品一区二区高清不卡 | 亚洲啪av永久无码精品放毛片 | 少妇性俱乐部纵欲狂欢电影 | 国产另类ts人妖一区二区 | 久久久久亚洲精品中文字幕 | 乌克兰少妇性做爰 | 99久久婷婷国产综合精品青草免费 | 蜜桃av抽搐高潮一区二区 | 亚洲の无码国产の无码步美 | 国产xxx69麻豆国语对白 | 久久午夜无码鲁丝片 | 77777熟女视频在线观看 а天堂中文在线官网 | 亚洲一区二区三区 | 欧美激情一区二区三区成人 | 成人一区二区免费视频 | 久久亚洲国产成人精品性色 | 久久人人爽人人人人片 | 国产成人久久精品流白浆 | 国产精品亚洲一区二区三区喷水 | 免费播放一区二区三区 | 中文字幕av无码一区二区三区电影 | 国产成人一区二区三区别 | 国产免费无码一区二区视频 | 亚洲国产精品久久人人爱 | 午夜男女很黄的视频 | 乱码午夜-极国产极内射 | 欧美精品在线观看 | 精品国产麻豆免费人成网站 | 高潮毛片无遮挡高清免费视频 | 国产激情精品一区二区三区 | 骚片av蜜桃精品一区 | 色综合久久久无码中文字幕 | 国产精品久久福利网站 | 玩弄少妇高潮ⅹxxxyw | 欧美高清在线精品一区 | 亚洲狠狠色丁香婷婷综合 | 亚洲日韩av一区二区三区四区 | 国产av无码专区亚洲a∨毛片 | 久久综合久久自在自线精品自 | 精品久久久无码中文字幕 | 99riav国产精品视频 | 成人片黄网站色大片免费观看 | 人妻尝试又大又粗久久 | 国产精品丝袜黑色高跟鞋 | 国产九九九九九九九a片 | 99久久久无码国产精品免费 | 久久久精品人妻久久影视 | 天堂а√在线地址中文在线 | 亚洲精品成人福利网站 | 成人欧美一区二区三区黑人免费 | 亚洲乱码国产乱码精品精 | 欧美精品无码一区二区三区 | 水蜜桃亚洲一二三四在线 | 国产亲子乱弄免费视频 | 中文精品无码中文字幕无码专区 | 综合网日日天干夜夜久久 | 欧洲精品码一区二区三区免费看 | 亚洲第一无码av无码专区 | 成人性做爰aaa片免费看不忠 | 无码播放一区二区三区 | 中文精品无码中文字幕无码专区 | 国产精品久久精品三级 | 国产莉萝无码av在线播放 | 精品久久久久久人妻无码中文字幕 | 亚洲日韩精品欧美一区二区 | 黑人巨大精品欧美一区二区 | 香港三级日本三级妇三级 | 成人三级无码视频在线观看 | 亚洲 日韩 欧美 成人 在线观看 | 天天爽夜夜爽夜夜爽 | 亚洲春色在线视频 | 人妻插b视频一区二区三区 | 宝宝好涨水快流出来免费视频 | 国产人妖乱国产精品人妖 | 免费视频欧美无人区码 | 97精品人妻一区二区三区香蕉 | 久久综合狠狠综合久久综合88 | 无码毛片视频一区二区本码 | 久久精品国产99精品亚洲 | 窝窝午夜理论片影院 | www国产亚洲精品久久网站 | 国产成人无码区免费内射一片色欲 | 久久熟妇人妻午夜寂寞影院 | 久久精品中文闷骚内射 | 老子影院午夜伦不卡 | 久久99久久99精品中文字幕 | 国产人妖乱国产精品人妖 | 黄网在线观看免费网站 | 在线а√天堂中文官网 | 国内综合精品午夜久久资源 | 久久国产精品萌白酱免费 | 久久久久av无码免费网 | 国产人成高清在线视频99最全资源 | 无码人妻av免费一区二区三区 | 国产艳妇av在线观看果冻传媒 | 色爱情人网站 | 亚洲欧洲中文日韩av乱码 | 亚洲aⅴ无码成人网站国产app | 亚洲精品中文字幕久久久久 | 装睡被陌生人摸出水好爽 | 亚洲日本va午夜在线电影 | 国产综合在线观看 | 免费无码午夜福利片69 | 亚洲精品无码人妻无码 | 国产偷国产偷精品高清尤物 | 午夜精品一区二区三区的区别 | 人妻夜夜爽天天爽三区 | 亚洲无人区一区二区三区 | 成年女人永久免费看片 | 丰满诱人的人妻3 | 成人免费无码大片a毛片 | 亚洲精品成a人在线观看 | 亚洲中文字幕成人无码 | 又紧又大又爽精品一区二区 | 内射后入在线观看一区 | 国产亚洲tv在线观看 | 丰满人妻一区二区三区免费视频 | 女人被男人躁得好爽免费视频 | 无码人中文字幕 | 免费国产黄网站在线观看 | 啦啦啦www在线观看免费视频 | 大肉大捧一进一出视频出来呀 | 18精品久久久无码午夜福利 | 国产精品亚洲а∨无码播放麻豆 | 国产黑色丝袜在线播放 | 99精品久久毛片a片 | 亚洲国产午夜精品理论片 | 男人的天堂av网站 | 无码av最新清无码专区吞精 | 草草网站影院白丝内射 | 久久精品人妻少妇一区二区三区 | 国产又爽又猛又粗的视频a片 | 久久久国产一区二区三区 | 精品一区二区三区无码免费视频 | 久久久久亚洲精品中文字幕 | 99精品久久毛片a片 | 久久天天躁狠狠躁夜夜免费观看 | 在线观看国产午夜福利片 | 久久久久国色av免费观看性色 | 国产人成高清在线视频99最全资源 | 亚洲国产av精品一区二区蜜芽 | 欧美性猛交内射兽交老熟妇 | 无码精品国产va在线观看dvd | 波多野42部无码喷潮在线 | 无码成人精品区在线观看 | 漂亮人妻洗澡被公强 日日躁 | 久久久久久久女国产乱让韩 | 欧美国产亚洲日韩在线二区 | 欧美日韩亚洲国产精品 | 国产成人综合在线女婷五月99播放 | 最近中文2019字幕第二页 | 免费观看的无遮挡av | 亚洲毛片av日韩av无码 | 国产精品对白交换视频 | 女高中生第一次破苞av | 4hu四虎永久在线观看 | 人妻与老人中文字幕 | 国产亚av手机在线观看 | 少女韩国电视剧在线观看完整 | 国产成人一区二区三区别 | 国产成人无码av片在线观看不卡 | www国产精品内射老师 | 麻豆成人精品国产免费 | 亚洲欧洲无卡二区视頻 | 亚洲精品国产品国语在线观看 | www国产亚洲精品久久久日本 | 亚洲日韩一区二区 | 国语精品一区二区三区 | 小sao货水好多真紧h无码视频 | 2019nv天堂香蕉在线观看 | 丰满妇女强制高潮18xxxx | 色婷婷综合激情综在线播放 | 国产午夜视频在线观看 | 亚洲色成人中文字幕网站 | 2019nv天堂香蕉在线观看 | 性生交大片免费看l | 人妻无码αv中文字幕久久琪琪布 | 免费无码一区二区三区蜜桃大 | 亚洲国精产品一二二线 | 丰满人妻被黑人猛烈进入 | 成人免费视频视频在线观看 免费 | 国产精品高潮呻吟av久久 | 久久精品中文字幕一区 | 国产精品对白交换视频 | 亚洲s色大片在线观看 | 天堂无码人妻精品一区二区三区 | 爆乳一区二区三区无码 | 99久久久无码国产精品免费 | 粉嫩少妇内射浓精videos | 美女扒开屁股让男人桶 | 欧美喷潮久久久xxxxx | 国产真实乱对白精彩久久 | 亚洲欧洲日本无在线码 | 欧美喷潮久久久xxxxx | 欧美怡红院免费全部视频 | 国产精品99久久精品爆乳 | 人妻少妇精品久久 | 精品国偷自产在线视频 | 色偷偷人人澡人人爽人人模 | 露脸叫床粗话东北少妇 | 激情国产av做激情国产爱 | 久久99精品久久久久久 | 精品国产成人一区二区三区 | 国产三级久久久精品麻豆三级 | 搡女人真爽免费视频大全 | 性做久久久久久久久 | 色五月丁香五月综合五月 | 全球成人中文在线 | 捆绑白丝粉色jk震动捧喷白浆 | 久久亚洲中文字幕无码 | 性生交片免费无码看人 | 日韩少妇内射免费播放 | 国产精品亚洲五月天高清 | 99国产精品白浆在线观看免费 | 无码国产激情在线观看 | 乱人伦中文视频在线观看 | 永久免费精品精品永久-夜色 | 内射后入在线观看一区 | 好男人www社区 | 一本色道久久综合狠狠躁 | 国产一区二区不卡老阿姨 | 国产乱人无码伦av在线a | 性欧美大战久久久久久久 | 红桃av一区二区三区在线无码av | 在线亚洲高清揄拍自拍一品区 | 真人与拘做受免费视频 | 中文字幕 亚洲精品 第1页 | 男女爱爱好爽视频免费看 | 欧美亚洲日韩国产人成在线播放 | 99在线 | 亚洲 | 中文字幕无码日韩欧毛 | 亚洲人成网站免费播放 | 久久国产精品二国产精品 | 亚洲成在人网站无码天堂 | 国产精品a成v人在线播放 | 丰满人妻一区二区三区免费视频 | 色婷婷综合激情综在线播放 | 国产猛烈高潮尖叫视频免费 | 亚洲日本一区二区三区在线 | 亚洲国精产品一二二线 | 领导边摸边吃奶边做爽在线观看 | 国语精品一区二区三区 | 国产在线精品一区二区三区直播 | 国产精品内射视频免费 | 久久无码专区国产精品s | 久久精品国产一区二区三区 | 午夜嘿嘿嘿影院 | 丰满妇女强制高潮18xxxx | 无码国模国产在线观看 | 88国产精品欧美一区二区三区 | 国产成人精品一区二区在线小狼 | 国内精品人妻无码久久久影院蜜桃 | 精品乱子伦一区二区三区 | 国产精品无码一区二区三区不卡 | 国产乱码精品一品二品 | 人妻少妇精品久久 | 亚洲成av人片在线观看无码不卡 | 性欧美熟妇videofreesex | 男女超爽视频免费播放 | 99riav国产精品视频 | 国产在线一区二区三区四区五区 | 天海翼激烈高潮到腰振不止 | 一区二区三区高清视频一 | 熟妇人妻中文av无码 | 日日碰狠狠丁香久燥 | 红桃av一区二区三区在线无码av | 国产真实乱对白精彩久久 | 无码国产色欲xxxxx视频 | 精品国产aⅴ无码一区二区 | 欧洲欧美人成视频在线 | 精品成人av一区二区三区 | 大乳丰满人妻中文字幕日本 | 2019nv天堂香蕉在线观看 | 亚洲狠狠色丁香婷婷综合 | 精品无码国产一区二区三区av | 国产精品亚洲一区二区三区喷水 | 色老头在线一区二区三区 | 久久精品女人的天堂av | 撕开奶罩揉吮奶头视频 | 日本xxxx色视频在线观看免费 | 国产激情精品一区二区三区 | 久久精品人人做人人综合 | 亚洲精品一区二区三区四区五区 | 国产人妻精品午夜福利免费 | 国产亚洲视频中文字幕97精品 | 波多野结衣高清一区二区三区 | 久久久久久国产精品无码下载 | 成人免费视频一区二区 | 台湾无码一区二区 | 午夜福利一区二区三区在线观看 | 亚洲日韩精品欧美一区二区 | 精品一区二区三区无码免费视频 | 久久综合香蕉国产蜜臀av | 欧美国产亚洲日韩在线二区 | 无码人妻丰满熟妇区毛片18 | 亚洲精品一区国产 | 国内丰满熟女出轨videos | 无码免费一区二区三区 | 久青草影院在线观看国产 | 久久人人爽人人爽人人片av高清 | 99久久婷婷国产综合精品青草免费 | 131美女爱做视频 | 乱人伦人妻中文字幕无码 | 女人高潮内射99精品 | 中文精品久久久久人妻不卡 | 久久成人a毛片免费观看网站 | 亲嘴扒胸摸屁股激烈网站 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 色窝窝无码一区二区三区色欲 | 人妻无码αv中文字幕久久琪琪布 | 亚洲精品国产第一综合99久久 | 国产高清不卡无码视频 | 一二三四在线观看免费视频 | 亚洲大尺度无码无码专区 | 国产69精品久久久久app下载 | 色偷偷人人澡人人爽人人模 | 精品人妻中文字幕有码在线 | 狠狠噜狠狠狠狠丁香五月 | 中文字幕乱妇无码av在线 | 中文字幕日产无线码一区 | 九九久久精品国产免费看小说 | 领导边摸边吃奶边做爽在线观看 | 日本xxxx色视频在线观看免费 | 99精品视频在线观看免费 | 日本高清一区免费中文视频 | 乱码午夜-极国产极内射 | 久久精品中文闷骚内射 | 真人与拘做受免费视频一 | 亚洲乱码国产乱码精品精 | 久久人人爽人人人人片 | 人人妻人人澡人人爽精品欧美 | 亚洲中文字幕久久无码 | 免费无码的av片在线观看 | 少妇性俱乐部纵欲狂欢电影 | 无码国产激情在线观看 | 欧美 日韩 人妻 高清 中文 | 成人一在线视频日韩国产 | 99久久无码一区人妻 | 国产香蕉尹人视频在线 | 自拍偷自拍亚洲精品被多人伦好爽 | 欧美 日韩 人妻 高清 中文 | 水蜜桃av无码 | 久久精品国产一区二区三区肥胖 | 51国偷自产一区二区三区 | 精品国产青草久久久久福利 | 国产精品无码久久av | 蜜臀av在线观看 在线欧美精品一区二区三区 | 四虎4hu永久免费 | 美女极度色诱视频国产 | 国产免费无码一区二区视频 | 搡女人真爽免费视频大全 | 免费观看黄网站 | 国产激情无码一区二区app | 人人妻人人澡人人爽精品欧美 | 一本色道久久综合亚洲精品不卡 | 国产亚洲精品久久久闺蜜 | 亚洲国产欧美在线成人 | 国产av一区二区精品久久凹凸 | 成人无码视频在线观看网站 | 在线看片无码永久免费视频 | 国产亚洲精品久久久久久大师 | 内射白嫩少妇超碰 | 无码国模国产在线观看 | 国语自产偷拍精品视频偷 | 国产免费观看黄av片 | 青青草原综合久久大伊人精品 | 久久久久久九九精品久 | 日本护士毛茸茸高潮 | 强奷人妻日本中文字幕 | 欧美日韩亚洲国产精品 | 国产精品亚洲一区二区三区喷水 | 久青草影院在线观看国产 | 久久综合色之久久综合 | 欧美第一黄网免费网站 | 久久99国产综合精品 | 日本熟妇大屁股人妻 | 99精品无人区乱码1区2区3区 | www一区二区www免费 | 亚洲一区二区三区含羞草 | 丰满人妻一区二区三区免费视频 | 亚洲欧美日韩成人高清在线一区 | 成人欧美一区二区三区 | 成人精品一区二区三区中文字幕 | 久久婷婷五月综合色国产香蕉 | 奇米影视7777久久精品人人爽 | 精品少妇爆乳无码av无码专区 | a在线亚洲男人的天堂 | 国内揄拍国内精品少妇国语 | 粉嫩少妇内射浓精videos | 久久久久免费看成人影片 | 国产性生交xxxxx无码 | 国产在热线精品视频 | 国产亚洲精品久久久久久大师 | 国色天香社区在线视频 | 欧美日韩综合一区二区三区 | 一个人免费观看的www视频 | 国产9 9在线 | 中文 | 日本在线高清不卡免费播放 | 未满小14洗澡无码视频网站 | 久久人人爽人人爽人人片ⅴ | 欧美 日韩 人妻 高清 中文 | 亚洲欧美日韩综合久久久 | 久久久久久a亚洲欧洲av冫 | 婷婷色婷婷开心五月四房播播 | 波多野结衣av一区二区全免费观看 | 鲁一鲁av2019在线 | 亚洲综合精品香蕉久久网 | 国产97色在线 | 免 | 暴力强奷在线播放无码 | 亚洲综合另类小说色区 | 亚洲成av人片天堂网无码】 | 麻豆国产人妻欲求不满谁演的 | 国内少妇偷人精品视频免费 | 麻豆蜜桃av蜜臀av色欲av | 亚洲精品一区二区三区大桥未久 | 在线看片无码永久免费视频 | 亚洲码国产精品高潮在线 | 亚洲精品国产a久久久久久 | 亚洲小说春色综合另类 | 日本一卡2卡3卡四卡精品网站 | 人人妻人人澡人人爽欧美一区 | 男女下面进入的视频免费午夜 | 亚洲gv猛男gv无码男同 | 一个人免费观看的www视频 | 女人和拘做爰正片视频 | 精品国产一区av天美传媒 | 亚洲精品国产a久久久久久 | 国产午夜亚洲精品不卡 | 亚洲人成人无码网www国产 | 久久国产精品精品国产色婷婷 | 中文字幕无码热在线视频 | 一本久道久久综合狠狠爱 | 秋霞成人午夜鲁丝一区二区三区 | 精品无码一区二区三区爱欲 | 99久久婷婷国产综合精品青草免费 | 欧美性猛交内射兽交老熟妇 | 亚洲自偷自拍另类第1页 | 99久久久无码国产精品免费 | 国产97在线 | 亚洲 | 国产亚洲精品久久久久久大师 | 午夜丰满少妇性开放视频 | 亚洲无人区午夜福利码高清完整版 | 西西人体www44rt大胆高清 | 国产精品国产自线拍免费软件 | 无码精品人妻一区二区三区av | 狠狠色欧美亚洲狠狠色www | 99久久婷婷国产综合精品青草免费 | 色婷婷欧美在线播放内射 | 双乳奶水饱满少妇呻吟 | 沈阳熟女露脸对白视频 | 亚洲无人区一区二区三区 | 色婷婷综合中文久久一本 | 人妻夜夜爽天天爽三区 | 女高中生第一次破苞av | 国产av无码专区亚洲awww | 亚洲一区二区三区 | 国产精品久久福利网站 | 成人片黄网站色大片免费观看 | 自拍偷自拍亚洲精品被多人伦好爽 | 中文字幕乱码亚洲无线三区 | 国产综合在线观看 | 蜜臀av在线播放 久久综合激激的五月天 | 久久这里只有精品视频9 | 亚洲国产欧美国产综合一区 | 国产无遮挡又黄又爽又色 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 精品国产一区av天美传媒 | 大色综合色综合网站 | 成年美女黄网站色大免费视频 | 国产人妻久久精品二区三区老狼 | 荫蒂添的好舒服视频囗交 | 久久99热只有频精品8 | 亚洲欧美精品aaaaaa片 | 无遮无挡爽爽免费视频 | 中文无码成人免费视频在线观看 | av香港经典三级级 在线 | 国产精品成人av在线观看 | 亚洲精品午夜国产va久久成人 | 波多野结衣高清一区二区三区 | 日本精品人妻无码77777 天堂一区人妻无码 | 亚洲爆乳精品无码一区二区三区 | 国产精品无码成人午夜电影 | www国产精品内射老师 | 亚洲成av人片天堂网无码】 | 熟女俱乐部五十路六十路av | 亚洲一区二区三区国产精华液 | 精品国产一区二区三区四区在线看 | 亚洲 另类 在线 欧美 制服 | 国产熟妇另类久久久久 | 欧美午夜特黄aaaaaa片 | 中文字幕无线码 | 人妻少妇精品无码专区二区 | 亚洲中文字幕乱码av波多ji | 国产亚洲美女精品久久久2020 | 国产免费久久精品国产传媒 | 波多野结衣高清一区二区三区 | 亚洲另类伦春色综合小说 | 国产精品国产三级国产专播 | 国产人妻人伦精品1国产丝袜 | 国产肉丝袜在线观看 | 装睡被陌生人摸出水好爽 | 鲁一鲁av2019在线 | 久久精品中文闷骚内射 | 成人片黄网站色大片免费观看 | 亚洲无人区一区二区三区 | 中文字幕无线码免费人妻 | 人妻有码中文字幕在线 | 亚洲中文字幕无码中字 | 久久久久成人片免费观看蜜芽 | 欧美刺激性大交 | 婷婷五月综合缴情在线视频 | 国产精品亚洲五月天高清 | аⅴ资源天堂资源库在线 | 樱花草在线播放免费中文 | 性啪啪chinese东北女人 | 理论片87福利理论电影 | 天干天干啦夜天干天2017 | 国产乱人无码伦av在线a | 国产精品a成v人在线播放 | 日欧一片内射va在线影院 | 色一情一乱一伦一区二区三欧美 | 免费看男女做好爽好硬视频 | 女人被爽到呻吟gif动态图视看 | 在线成人www免费观看视频 | 中文字幕无码av波多野吉衣 | 久久久精品欧美一区二区免费 | 国内精品九九久久久精品 | 欧美日韩在线亚洲综合国产人 | 大肉大捧一进一出好爽视频 | 午夜精品一区二区三区在线观看 | 三上悠亚人妻中文字幕在线 | 成熟人妻av无码专区 | 亚洲 激情 小说 另类 欧美 | 娇妻被黑人粗大高潮白浆 | 18禁黄网站男男禁片免费观看 | 成人免费视频视频在线观看 免费 | 亚洲无人区午夜福利码高清完整版 | 国产av一区二区三区最新精品 | 少妇无码一区二区二三区 | 久久久av男人的天堂 | 正在播放东北夫妻内射 | 东京热一精品无码av | 精品 日韩 国产 欧美 视频 | 伊人久久大香线蕉亚洲 | 亚洲日本在线电影 | 人人爽人人爽人人片av亚洲 | 国产精品久久久av久久久 | 国精产品一区二区三区 | 任你躁国产自任一区二区三区 | 成人女人看片免费视频放人 | 欧美肥老太牲交大战 | 色婷婷综合中文久久一本 | 18无码粉嫩小泬无套在线观看 | 精品aⅴ一区二区三区 | 人人澡人人妻人人爽人人蜜桃 | 久久国产劲爆∧v内射 | 国产成人精品必看 | 午夜精品一区二区三区在线观看 | 内射巨臀欧美在线视频 | 亚洲aⅴ无码成人网站国产app | 欧美人与牲动交xxxx | 日本一区二区三区免费高清 | 免费看男女做好爽好硬视频 | 97资源共享在线视频 | 久久久久se色偷偷亚洲精品av | 丰满人妻被黑人猛烈进入 | 欧美日韩人成综合在线播放 | 亚洲精品无码人妻无码 | 欧美阿v高清资源不卡在线播放 | 亚洲国产精品美女久久久久 | 丝袜足控一区二区三区 | 亚洲啪av永久无码精品放毛片 | 在线播放亚洲第一字幕 | 亚洲一区二区三区播放 | 人妻无码αv中文字幕久久琪琪布 | 亚洲 日韩 欧美 成人 在线观看 | 精品乱子伦一区二区三区 | 性欧美疯狂xxxxbbbb | 国产一区二区三区影院 | 377p欧洲日本亚洲大胆 | 精品一区二区三区无码免费视频 | 国产精品99久久精品爆乳 | 麻豆成人精品国产免费 | 少妇被黑人到高潮喷出白浆 | 一个人免费观看的www视频 | 亚洲高清偷拍一区二区三区 | 国产成人综合在线女婷五月99播放 | 四虎国产精品一区二区 | 欧美激情综合亚洲一二区 | 国产成人精品必看 | 久久精品中文闷骚内射 | 女人被爽到呻吟gif动态图视看 | 日日噜噜噜噜夜夜爽亚洲精品 | 欧美xxxxx精品 | 任你躁在线精品免费 | 正在播放东北夫妻内射 | 久热国产vs视频在线观看 | 国产高清不卡无码视频 | 亚洲熟悉妇女xxx妇女av | 国精产品一区二区三区 | 永久免费精品精品永久-夜色 | 亚洲自偷自偷在线制服 | 亚洲精品久久久久中文第一幕 | 国产乱人伦偷精品视频 | 国产香蕉尹人综合在线观看 | 55夜色66夜色国产精品视频 | 欧美熟妇另类久久久久久不卡 | 国产无遮挡又黄又爽免费视频 | 狠狠噜狠狠狠狠丁香五月 | 99视频精品全部免费免费观看 | 正在播放老肥熟妇露脸 | 少妇一晚三次一区二区三区 | 成人片黄网站色大片免费观看 | 欧美激情一区二区三区成人 | 99久久婷婷国产综合精品青草免费 | 日本高清一区免费中文视频 | 丰满妇女强制高潮18xxxx | 麻豆蜜桃av蜜臀av色欲av | 久久无码专区国产精品s | 国产又爽又黄又刺激的视频 | 精品厕所偷拍各类美女tp嘘嘘 | 日日噜噜噜噜夜夜爽亚洲精品 | 岛国片人妻三上悠亚 | 亚洲精品久久久久久一区二区 | 国产人妖乱国产精品人妖 | 亚洲国产精品一区二区美利坚 | 精品无码av一区二区三区 | 中文字幕av日韩精品一区二区 | 日本精品人妻无码77777 天堂一区人妻无码 | 牲欲强的熟妇农村老妇女 | 奇米影视7777久久精品 | 天堂亚洲2017在线观看 | 国产成人精品优优av | 亚洲国产成人av在线观看 | 无遮挡国产高潮视频免费观看 | 欧美三级a做爰在线观看 | 无码福利日韩神码福利片 | 在线看片无码永久免费视频 | 黑人粗大猛烈进出高潮视频 | 无码av最新清无码专区吞精 | 又湿又紧又大又爽a视频国产 | 性做久久久久久久免费看 | 国产激情无码一区二区 | 亚洲欧洲无卡二区视頻 | 欧美人与禽猛交狂配 | 狂野欧美性猛交免费视频 | 国产精品亚洲综合色区韩国 | 国内少妇偷人精品视频免费 | 又紧又大又爽精品一区二区 | 玩弄中年熟妇正在播放 | 无码精品人妻一区二区三区av | 久久久国产一区二区三区 | 亚洲国产精品一区二区美利坚 | 97色伦图片97综合影院 | 少妇太爽了在线观看 | 国产suv精品一区二区五 | 人妻无码αv中文字幕久久琪琪布 | 性欧美大战久久久久久久 | 中文字幕av无码一区二区三区电影 | 久久综合九色综合欧美狠狠 | 国产精品人妻一区二区三区四 | 成人免费无码大片a毛片 | 高潮毛片无遮挡高清免费 | 思思久久99热只有频精品66 | 亚洲精品成人av在线 | 国产成人精品视频ⅴa片软件竹菊 | 日本丰满熟妇videos | 国产精品-区区久久久狼 | 强开小婷嫩苞又嫩又紧视频 | 无码人妻av免费一区二区三区 | 99久久人妻精品免费一区 | 秋霞特色aa大片 | 亚洲狠狠色丁香婷婷综合 | 亚洲色www成人永久网址 | 人人妻在人人 | 中文字幕无码日韩专区 | 奇米影视888欧美在线观看 | 性啪啪chinese东北女人 | 天天做天天爱天天爽综合网 | 亚洲成av人在线观看网址 | 国产亚洲视频中文字幕97精品 | 国产精品毛片一区二区 | 西西人体www44rt大胆高清 | 久久国产精品偷任你爽任你 | 疯狂三人交性欧美 | 精品国产一区av天美传媒 | 欧美亚洲国产一区二区三区 | 久久99久久99精品中文字幕 | 国产精品美女久久久久av爽李琼 | 任你躁在线精品免费 | 日本护士xxxxhd少妇 | 亚洲国产精品成人久久蜜臀 | 55夜色66夜色国产精品视频 | 精品夜夜澡人妻无码av蜜桃 | 亚洲精品一区二区三区在线观看 | 国产午夜福利亚洲第一 | 图片区 小说区 区 亚洲五月 | 色综合天天综合狠狠爱 | 日韩成人一区二区三区在线观看 | 亚洲色成人中文字幕网站 | 女高中生第一次破苞av | 国产精品久久久久久亚洲毛片 | 欧美大屁股xxxxhd黑色 | 日日夜夜撸啊撸 | 国产在线aaa片一区二区99 | 亚洲成a人一区二区三区 | 扒开双腿吃奶呻吟做受视频 | 熟妇人妻激情偷爽文 | 在线欧美精品一区二区三区 | 久久视频在线观看精品 | 日本肉体xxxx裸交 | 亚洲狠狠色丁香婷婷综合 | 婷婷综合久久中文字幕蜜桃三电影 | 国产人妻人伦精品1国产丝袜 | 中文字幕av伊人av无码av | 性欧美牲交在线视频 | 色综合天天综合狠狠爱 | 久久久久久久女国产乱让韩 | 国产麻豆精品精东影业av网站 | 一区二区三区乱码在线 | 欧洲 | 国产成人无码一二三区视频 | 人人爽人人澡人人人妻 | 亚洲自偷自偷在线制服 | 一个人免费观看的www视频 | 中国大陆精品视频xxxx | 亚洲国产精品美女久久久久 | 国内精品人妻无码久久久影院蜜桃 | 日本一卡二卡不卡视频查询 | 精品日本一区二区三区在线观看 | 国内丰满熟女出轨videos | 国产人妻精品午夜福利免费 | 精品无码国产自产拍在线观看蜜 | 黑人巨大精品欧美黑寡妇 | 一区二区三区高清视频一 | 少妇性l交大片欧洲热妇乱xxx | 日韩精品无码一区二区中文字幕 | 国内精品久久毛片一区二区 | 妺妺窝人体色www在线小说 | 青青青爽视频在线观看 | 欧美 日韩 人妻 高清 中文 | 97资源共享在线视频 | 国产精品美女久久久久av爽李琼 | 最近的中文字幕在线看视频 | 久久久久久av无码免费看大片 | 老熟妇仑乱视频一区二区 | 又大又紧又粉嫩18p少妇 | 人妻中文无码久热丝袜 | 精品欧洲av无码一区二区三区 | 激情内射日本一区二区三区 | 亚洲中文字幕无码中文字在线 | 亚洲国产精品美女久久久久 | 国产av久久久久精东av | 人妻少妇精品无码专区动漫 | 午夜免费福利小电影 | 久久久久久久女国产乱让韩 | 性欧美熟妇videofreesex | 人人妻人人澡人人爽人人精品 | 亚洲第一无码av无码专区 | 国产人妖乱国产精品人妖 | 伊人色综合久久天天小片 | 精品 日韩 国产 欧美 视频 | 亚洲日本在线电影 | 国产另类ts人妖一区二区 | а√天堂www在线天堂小说 | 欧美日韩在线亚洲综合国产人 | 国产成人无码a区在线观看视频app | 一区二区三区乱码在线 | 欧洲 | 欧美日本精品一区二区三区 | 综合激情五月综合激情五月激情1 | 日韩欧美中文字幕在线三区 | 老熟女重囗味hdxx69 | 国产亚洲欧美在线专区 | 亚洲精品午夜无码电影网 | 久久天天躁夜夜躁狠狠 | 国内揄拍国内精品人妻 | 在线 国产 欧美 亚洲 天堂 | 欧美怡红院免费全部视频 | 曰韩无码二三区中文字幕 | 国产偷自视频区视频 | 欧美国产日韩久久mv | 99精品国产综合久久久久五月天 | 少妇高潮一区二区三区99 | 国产成人无码av一区二区 | 少妇激情av一区二区 | 99在线 | 亚洲 | 少妇无码一区二区二三区 | 131美女爱做视频 | 欧美日韩精品 | 成人免费视频一区二区 | 一本加勒比波多野结衣 | 少妇久久久久久人妻无码 | а√天堂www在线天堂小说 | 国产亚洲精品精品国产亚洲综合 | 亚洲国产精品毛片av不卡在线 | 亚洲一区二区三区播放 | 黑人粗大猛烈进出高潮视频 | 纯爱无遮挡h肉动漫在线播放 | 国产乱人无码伦av在线a | 久久国产精品萌白酱免费 | 日韩少妇内射免费播放 | 少妇性l交大片欧洲热妇乱xxx | 欧美激情内射喷水高潮 | 久久天天躁狠狠躁夜夜免费观看 | 国产成人精品视频ⅴa片软件竹菊 | 天干天干啦夜天干天2017 | 无码乱肉视频免费大全合集 | 中文亚洲成a人片在线观看 | 妺妺窝人体色www在线小说 | 熟女少妇在线视频播放 | 国产成人一区二区三区在线观看 | 欧美日韩在线亚洲综合国产人 | 国产成人无码av一区二区 | 免费中文字幕日韩欧美 | 亚洲精品国产a久久久久久 | 粉嫩少妇内射浓精videos | 久久久久久av无码免费看大片 | 亚洲国产av精品一区二区蜜芽 | 一本无码人妻在中文字幕免费 | 久久亚洲中文字幕精品一区 | 亚洲s色大片在线观看 | 午夜福利一区二区三区在线观看 | 内射欧美老妇wbb | 国产亚洲精品久久久ai换 | 国产精品鲁鲁鲁 | 久久亚洲精品成人无码 | 久久午夜夜伦鲁鲁片无码免费 | 亚洲精品午夜国产va久久成人 | 永久免费观看国产裸体美女 | 好爽又高潮了毛片免费下载 | 狠狠色欧美亚洲狠狠色www | 99久久婷婷国产综合精品青草免费 | 色妞www精品免费视频 | 欧洲精品码一区二区三区免费看 | 国产色视频一区二区三区 | 亚洲色欲久久久综合网东京热 | 强开小婷嫩苞又嫩又紧视频 | 久久精品女人天堂av免费观看 | 亚洲欧美日韩综合久久久 | 精品国产国产综合精品 | 九九热爱视频精品 | 成年美女黄网站色大免费视频 | 亚洲一区二区三区 | 亚洲国产精品久久久久久 | 成在人线av无码免观看麻豆 | 国语自产偷拍精品视频偷 | 欧美熟妇另类久久久久久不卡 | 少妇人妻偷人精品无码视频 | 狠狠亚洲超碰狼人久久 | 欧美激情一区二区三区成人 | 国产精品沙发午睡系列 | 国产成人综合在线女婷五月99播放 | 亚洲精品国偷拍自产在线麻豆 | 377p欧洲日本亚洲大胆 | 亚洲乱码中文字幕在线 | 亚洲热妇无码av在线播放 | www国产精品内射老师 | 国产成人无码a区在线观看视频app | 成人一区二区免费视频 | 国产精品怡红院永久免费 | 一本精品99久久精品77 | 香蕉久久久久久av成人 | 色爱情人网站 | 天天综合网天天综合色 | 久久久久久久女国产乱让韩 | 亚洲 日韩 欧美 成人 在线观看 | 欧美刺激性大交 | 狠狠色噜噜狠狠狠7777奇米 | 日韩亚洲欧美精品综合 | 国产在线精品一区二区三区直播 | 欧美性生交活xxxxxdddd | 久久国产精品_国产精品 | 精品国产aⅴ无码一区二区 | 亚洲精品国偷拍自产在线麻豆 | 婷婷色婷婷开心五月四房播播 | 国产精品久久久久久亚洲毛片 | 国产偷抇久久精品a片69 | 国产性生大片免费观看性 | 夫妻免费无码v看片 | 六十路熟妇乱子伦 | 久久亚洲精品中文字幕无男同 | 中文字幕乱码亚洲无线三区 | 久久综合九色综合97网 | 亚洲大尺度无码无码专区 | 精品国产aⅴ无码一区二区 | 天天av天天av天天透 | 人人妻人人藻人人爽欧美一区 | 欧美日韩视频无码一区二区三 | 无码免费一区二区三区 | 男人和女人高潮免费网站 | 国产精品久久久午夜夜伦鲁鲁 | 欧美一区二区三区视频在线观看 | 日本一卡二卡不卡视频查询 | 一本久久a久久精品vr综合 | 亚洲爆乳无码专区 | 99精品国产综合久久久久五月天 | 中文无码伦av中文字幕 | 国产绳艺sm调教室论坛 | 精品无码成人片一区二区98 | 免费看男女做好爽好硬视频 | 中国女人内谢69xxxx | 西西人体www44rt大胆高清 | 久久天天躁狠狠躁夜夜免费观看 | 日日夜夜撸啊撸 | 中文久久乱码一区二区 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲中文字幕无码中字 | 国内少妇偷人精品视频免费 | 亚洲国产精品久久人人爱 | 国精品人妻无码一区二区三区蜜柚 | 亚洲人成网站免费播放 | 在线看片无码永久免费视频 | 捆绑白丝粉色jk震动捧喷白浆 | 天天综合网天天综合色 | 亚洲一区二区三区含羞草 | 亚洲s码欧洲m码国产av | 国产精品久久久久久久影院 | 久久久亚洲欧洲日产国码αv | 国产精品高潮呻吟av久久4虎 | 麻豆国产人妻欲求不满谁演的 | 狂野欧美激情性xxxx | 亚洲国产成人a精品不卡在线 | 精品夜夜澡人妻无码av蜜桃 | 国产人妻大战黑人第1集 | 99精品视频在线观看免费 | 日韩视频 中文字幕 视频一区 | 国产亚洲欧美日韩亚洲中文色 | 欧美成人高清在线播放 | 日本成熟视频免费视频 | 日韩亚洲欧美中文高清在线 | 国产亚洲美女精品久久久2020 | 好男人社区资源 | 黑人粗大猛烈进出高潮视频 | 无码人妻精品一区二区三区不卡 | 国产熟妇高潮叫床视频播放 | 成人aaa片一区国产精品 | 一二三四在线观看免费视频 | av人摸人人人澡人人超碰下载 | 伊人色综合久久天天小片 | 丁香啪啪综合成人亚洲 | 欧美日韩人成综合在线播放 | 国产亚洲精品精品国产亚洲综合 | 永久免费观看国产裸体美女 | 人人妻人人澡人人爽人人精品浪潮 | 嫩b人妻精品一区二区三区 | 丝袜 中出 制服 人妻 美腿 | 精品欧美一区二区三区久久久 | av小次郎收藏 | 欧美人与牲动交xxxx | 中文字幕人妻丝袜二区 | 在线精品国产一区二区三区 | 5858s亚洲色大成网站www | 国产乱人伦av在线无码 | 97久久精品无码一区二区 | 成熟人妻av无码专区 | 久热国产vs视频在线观看 | 亚洲日韩中文字幕在线播放 | 爽爽影院免费观看 | 无码人妻av免费一区二区三区 | 午夜精品一区二区三区在线观看 | 老头边吃奶边弄进去呻吟 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 波多野结衣aⅴ在线 | 无码人妻av免费一区二区三区 | 无码人妻久久一区二区三区不卡 | 国产成人综合色在线观看网站 | 99国产欧美久久久精品 | 熟女俱乐部五十路六十路av | 国产精品香蕉在线观看 | 亚洲熟女一区二区三区 | 国产午夜福利100集发布 | 97人妻精品一区二区三区 | 成人影院yy111111在线观看 | 男人扒开女人内裤强吻桶进去 | 狠狠色噜噜狠狠狠7777奇米 | 人妻人人添人妻人人爱 | 欧美黑人巨大xxxxx | 成人欧美一区二区三区黑人免费 | 亚洲精品欧美二区三区中文字幕 | 日日摸日日碰夜夜爽av | 无码国产色欲xxxxx视频 | 伊人久久婷婷五月综合97色 | 天堂亚洲2017在线观看 | 亚洲欧洲日本综合aⅴ在线 | 人妻少妇精品无码专区动漫 | 色一情一乱一伦一区二区三欧美 | 奇米影视888欧美在线观看 | 午夜肉伦伦影院 | 牲欲强的熟妇农村老妇女视频 | 精品欧洲av无码一区二区三区 | 国产高清不卡无码视频 | 亚洲国产精品一区二区美利坚 | 婷婷五月综合缴情在线视频 | 亚洲精品久久久久avwww潮水 | 国产精品va在线观看无码 | 国产精品免费大片 | 中文字幕无码乱人伦 | 98国产精品综合一区二区三区 | 久久国产精品二国产精品 | 蜜臀aⅴ国产精品久久久国产老师 | 久久 国产 尿 小便 嘘嘘 | 无码精品国产va在线观看dvd | 人人妻人人澡人人爽精品欧美 | 少妇性l交大片欧洲热妇乱xxx | 国内精品九九久久久精品 | 亚洲熟妇色xxxxx亚洲 | 性生交大片免费看l | 无套内谢老熟女 | 国产在热线精品视频 | 伊人久久大香线蕉av一区二区 | 激情爆乳一区二区三区 | 精品亚洲成av人在线观看 | 无码乱肉视频免费大全合集 | 精品乱子伦一区二区三区 | 欧美 亚洲 国产 另类 | 午夜福利一区二区三区在线观看 | 国产av久久久久精东av | 久久99久久99精品中文字幕 | 国产明星裸体无码xxxx视频 | 对白脏话肉麻粗话av | 青春草在线视频免费观看 | 精品国产一区二区三区四区 | 国产无遮挡又黄又爽免费视频 | 亚洲男人av香蕉爽爽爽爽 | 色欲av亚洲一区无码少妇 | 人妻天天爽夜夜爽一区二区 | 亚洲中文字幕av在天堂 | 无码任你躁久久久久久久 | 日本xxxx色视频在线观看免费 | 亚洲日韩中文字幕在线播放 | 综合激情五月综合激情五月激情1 | 中文字幕日韩精品一区二区三区 | 国产成人精品三级麻豆 | 一本一道久久综合久久 | 老熟妇仑乱视频一区二区 | 草草网站影院白丝内射 | 在线观看免费人成视频 | 激情亚洲一区国产精品 | 内射老妇bbwx0c0ck | 夫妻免费无码v看片 | 欧美日韩一区二区免费视频 | 国模大胆一区二区三区 | 999久久久国产精品消防器材 | 国内精品九九久久久精品 | 久久久久久久人妻无码中文字幕爆 | 国语自产偷拍精品视频偷 | 欧美人妻一区二区三区 | 亚洲国产午夜精品理论片 | 亚洲性无码av中文字幕 | 亚洲一区二区三区 | 国产综合久久久久鬼色 | 国产免费观看黄av片 | 波多野结衣乳巨码无在线观看 | 日日躁夜夜躁狠狠躁 | 97无码免费人妻超级碰碰夜夜 | 纯爱无遮挡h肉动漫在线播放 | 国产乱子伦视频在线播放 | 中文字幕av日韩精品一区二区 | 一本色道久久综合亚洲精品不卡 | 东京热无码av男人的天堂 | 色偷偷人人澡人人爽人人模 | 99精品无人区乱码1区2区3区 | 丰满人妻精品国产99aⅴ | 午夜精品一区二区三区在线观看 | 岛国片人妻三上悠亚 | 男人和女人高潮免费网站 | 成人欧美一区二区三区黑人 | 国产激情无码一区二区app | 在线视频网站www色 | 国产偷国产偷精品高清尤物 | 亚洲国产av精品一区二区蜜芽 | 色爱情人网站 | 国产精品丝袜黑色高跟鞋 | 久久久久免费精品国产 | 亚洲七七久久桃花影院 | 欧美亚洲日韩国产人成在线播放 | 自拍偷自拍亚洲精品被多人伦好爽 | 蜜桃臀无码内射一区二区三区 | 久久综合久久自在自线精品自 | 亚洲中文字幕无码中字 | 日欧一片内射va在线影院 | 亚洲国产综合无码一区 | 精品日本一区二区三区在线观看 | 日韩成人一区二区三区在线观看 | 久久精品中文字幕一区 | 少妇性荡欲午夜性开放视频剧场 | 午夜福利一区二区三区在线观看 | 少妇性俱乐部纵欲狂欢电影 | 国产乱码精品一品二品 | 午夜精品久久久久久久 | 久久久久国色av免费观看性色 | 人妻插b视频一区二区三区 | 国产精品久久久久9999小说 | 亚洲综合无码久久精品综合 | 亚洲中文字幕久久无码 | 最新版天堂资源中文官网 | 亚洲精品国产a久久久久久 | 妺妺窝人体色www在线小说 | 亚洲国产精品久久人人爱 | 18精品久久久无码午夜福利 | 国产高清不卡无码视频 | 无码午夜成人1000部免费视频 | 欧美zoozzooz性欧美 | 图片小说视频一区二区 | 欧美肥老太牲交大战 | 精品偷自拍另类在线观看 | 无码国内精品人妻少妇 | 国产日产欧产精品精品app | 两性色午夜视频免费播放 | 天海翼激烈高潮到腰振不止 | 又大又硬又黄的免费视频 | 亚洲 日韩 欧美 成人 在线观看 | 狠狠综合久久久久综合网 | 九九综合va免费看 | 国产无套内射久久久国产 | 日韩成人一区二区三区在线观看 | 99久久亚洲精品无码毛片 | 欧美精品免费观看二区 | 亚洲一区二区三区香蕉 | 亚洲国产成人a精品不卡在线 | 青春草在线视频免费观看 | 免费人成在线观看网站 | 亚洲中文字幕久久无码 | 色一情一乱一伦一视频免费看 | 中文字幕人成乱码熟女app | 国产精品对白交换视频 | 激情人妻另类人妻伦 | 东京一本一道一二三区 | 国产麻豆精品精东影业av网站 | 性开放的女人aaa片 | 国产午夜精品一区二区三区嫩草 | 精品乱码久久久久久久 | 波多野结衣 黑人 | 久久亚洲中文字幕无码 | 欧美第一黄网免费网站 | 人妻少妇被猛烈进入中文字幕 | 国产一精品一av一免费 | 精品久久久久香蕉网 | 无遮挡啪啪摇乳动态图 | 亚洲综合色区中文字幕 | 亚洲成av人在线观看网址 | 国产激情无码一区二区 | 99精品久久毛片a片 | 7777奇米四色成人眼影 | 久久99精品国产.久久久久 | 日日麻批免费40分钟无码 | 亚洲区小说区激情区图片区 | 日欧一片内射va在线影院 | 色婷婷av一区二区三区之红樱桃 | 亚洲日韩精品欧美一区二区 | 亚洲成在人网站无码天堂 | 国产亚洲日韩欧美另类第八页 | 人妻与老人中文字幕 | 欧洲精品码一区二区三区免费看 | 无码av免费一区二区三区试看 | 国产特级毛片aaaaaa高潮流水 | 黑人粗大猛烈进出高潮视频 | 色综合久久久久综合一本到桃花网 | 亚洲人交乣女bbw | 少妇性荡欲午夜性开放视频剧场 | 欧洲欧美人成视频在线 | 国产av无码专区亚洲awww | 无套内谢的新婚少妇国语播放 | 精品久久久无码人妻字幂 | 精品夜夜澡人妻无码av蜜桃 | 久久综合色之久久综合 | 国产成人精品无码播放 | 国内精品人妻无码久久久影院 | 日产精品99久久久久久 | 大肉大捧一进一出好爽视频 | 亚洲人成人无码网www国产 | 成人动漫在线观看 | 欧美高清在线精品一区 | 激情五月综合色婷婷一区二区 | 一本色道久久综合狠狠躁 | 在教室伦流澡到高潮hnp视频 | 国产 浪潮av性色四虎 | 国产精品办公室沙发 | 国产艳妇av在线观看果冻传媒 | 日韩精品无码免费一区二区三区 | 日韩av无码一区二区三区 | 99久久婷婷国产综合精品青草免费 | 日本丰满护士爆乳xxxx | 日韩精品a片一区二区三区妖精 | 亚洲一区二区三区含羞草 | 97精品人妻一区二区三区香蕉 | 亚洲精品综合一区二区三区在线 | 日本乱偷人妻中文字幕 | 国产在线一区二区三区四区五区 | 亚洲人成网站在线播放942 | 国产色xx群视频射精 | 亚洲人成网站在线播放942 | 亚洲精品午夜国产va久久成人 | √8天堂资源地址中文在线 | 曰韩无码二三区中文字幕 | 国产真实乱对白精彩久久 | 女人被爽到呻吟gif动态图视看 | 精品国产青草久久久久福利 | 波多野结衣高清一区二区三区 | 亚洲综合色区中文字幕 | 女人和拘做爰正片视频 | 在线天堂新版最新版在线8 | 欧美喷潮久久久xxxxx | 亚洲无人区午夜福利码高清完整版 | 亚洲s码欧洲m码国产av | 2020久久超碰国产精品最新 | 亚洲狠狠婷婷综合久久 | 国产69精品久久久久app下载 | 欧美丰满熟妇xxxx性ppx人交 | 超碰97人人做人人爱少妇 | 亚洲啪av永久无码精品放毛片 | 久久这里只有精品视频9 | 久久久久av无码免费网 | 成人性做爰aaa片免费看不忠 | 午夜精品一区二区三区的区别 | 日欧一片内射va在线影院 | a片在线免费观看 | 成人亚洲精品久久久久软件 | 国产人妻久久精品二区三区老狼 | 图片小说视频一区二区 | 国产真实乱对白精彩久久 | 国产综合久久久久鬼色 | 久久国内精品自在自线 | 国产精品亚洲一区二区三区喷水 | 精品国产国产综合精品 | 无套内谢老熟女 | 久久无码中文字幕免费影院蜜桃 | 中文字幕乱码人妻二区三区 | 乱中年女人伦av三区 | 国产真实乱对白精彩久久 | 无人区乱码一区二区三区 | 亚洲一区二区三区香蕉 | 乱码午夜-极国产极内射 | 精品亚洲韩国一区二区三区 | 免费看少妇作爱视频 | 日韩成人一区二区三区在线观看 | 无码av最新清无码专区吞精 | 人妻人人添人妻人人爱 | 一本久道久久综合婷婷五月 | 亚洲中文字幕无码中字 | 久久久婷婷五月亚洲97号色 | 18精品久久久无码午夜福利 | 久久精品人人做人人综合试看 | 国産精品久久久久久久 | 国产精品第一国产精品 | 午夜熟女插插xx免费视频 | 中文字幕乱妇无码av在线 | 色妞www精品免费视频 | 国产精品亚洲一区二区三区喷水 | 久久久精品国产sm最大网站 | 午夜免费福利小电影 | 无码国产色欲xxxxx视频 | 精品无码av一区二区三区 | 乱人伦人妻中文字幕无码 | 特大黑人娇小亚洲女 | 色婷婷综合激情综在线播放 | 国产疯狂伦交大片 | 国产精品亚洲五月天高清 | 国语自产偷拍精品视频偷 | 麻豆国产丝袜白领秘书在线观看 | 国产av剧情md精品麻豆 | 亚洲另类伦春色综合小说 | 国产另类ts人妖一区二区 | 成人女人看片免费视频放人 | 露脸叫床粗话东北少妇 | 欧美国产日产一区二区 | 无码精品国产va在线观看dvd | 国产一区二区三区精品视频 | 国产精品久久久 | 成 人影片 免费观看 | 亚洲最大成人网站 | 天天躁日日躁狠狠躁免费麻豆 | 国产女主播喷水视频在线观看 | 在线播放亚洲第一字幕 | 亚洲精品无码人妻无码 | 久久午夜夜伦鲁鲁片无码免费 | 波多野结衣av一区二区全免费观看 | 日韩av无码一区二区三区不卡 | 色情久久久av熟女人妻网站 | 99麻豆久久久国产精品免费 | 国产av人人夜夜澡人人爽麻豆 | 国产一区二区三区精品视频 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 男人扒开女人内裤强吻桶进去 | 无码av岛国片在线播放 | 真人与拘做受免费视频 | 老子影院午夜伦不卡 | 欧美自拍另类欧美综合图片区 | 99久久精品午夜一区二区 | 无码人妻少妇伦在线电影 | 性生交片免费无码看人 | 高清国产亚洲精品自在久久 | 亚洲国产欧美日韩精品一区二区三区 | 国产成人精品必看 | 老熟妇仑乱视频一区二区 | 日本乱偷人妻中文字幕 | 99久久亚洲精品无码毛片 | 黑人玩弄人妻中文在线 | 中文字幕无线码 | 午夜熟女插插xx免费视频 | 久久久中文字幕日本无吗 | 18无码粉嫩小泬无套在线观看 | 亚洲精品午夜无码电影网 | 少妇无套内谢久久久久 | 国产9 9在线 | 中文 | 麻豆精品国产精华精华液好用吗 | 色偷偷人人澡人人爽人人模 | 欧美 亚洲 国产 另类 | 精品国产av色一区二区深夜久久 | 少妇高潮一区二区三区99 | 国产电影无码午夜在线播放 | 国产人妻人伦精品1国产丝袜 | 51国偷自产一区二区三区 | 久久 国产 尿 小便 嘘嘘 | 99久久精品日本一区二区免费 | 国产网红无码精品视频 | 久久久久久久人妻无码中文字幕爆 | 欧美精品无码一区二区三区 | 久久午夜无码鲁丝片午夜精品 | 熟妇人妻中文av无码 | 无码av中文字幕免费放 | 丰满少妇熟乱xxxxx视频 | 2020最新国产自产精品 | 亚洲小说图区综合在线 | 国产成人无码一二三区视频 | 露脸叫床粗话东北少妇 | 少妇人妻av毛片在线看 | 精品欧洲av无码一区二区三区 | 中文无码成人免费视频在线观看 | 国产情侣作爱视频免费观看 | 日韩亚洲欧美精品综合 | 日本又色又爽又黄的a片18禁 | 欧美老妇交乱视频在线观看 | 强开小婷嫩苞又嫩又紧视频 | 中文精品无码中文字幕无码专区 | 中国大陆精品视频xxxx | 久久久无码中文字幕久... | 天堂无码人妻精品一区二区三区 | a国产一区二区免费入口 | 国产成人精品无码播放 | 伊人久久大香线蕉av一区二区 | 亚洲成色在线综合网站 | 永久免费精品精品永久-夜色 | 无码吃奶揉捏奶头高潮视频 | 强伦人妻一区二区三区视频18 | 国产真人无遮挡作爱免费视频 | 麻豆国产97在线 | 欧洲 | 夜夜夜高潮夜夜爽夜夜爰爰 | 亚洲国产成人a精品不卡在线 | 国产免费观看黄av片 | 日本精品久久久久中文字幕 | 男女超爽视频免费播放 | 国产麻豆精品一区二区三区v视界 | 亚洲最大成人网站 | 日韩精品无码一本二本三本色 | 国产情侣作爱视频免费观看 | 久久国产精品萌白酱免费 | 西西人体www44rt大胆高清 | 国产精品美女久久久 | 未满成年国产在线观看 | 东京热一精品无码av | 亚洲成av人片在线观看无码不卡 | 少妇性l交大片欧洲热妇乱xxx | 99久久精品无码一区二区毛片 | 55夜色66夜色国产精品视频 | 少妇高潮喷潮久久久影院 | 免费无码av一区二区 | 久久精品一区二区三区四区 | 无套内射视频囯产 | 国产人妻人伦精品 | 免费人成网站视频在线观看 | 一本久道高清无码视频 | 日本一本二本三区免费 | 一本色道久久综合亚洲精品不卡 | 天堂亚洲免费视频 | 成人一在线视频日韩国产 | 激情亚洲一区国产精品 | 亚洲欧洲中文日韩av乱码 | 扒开双腿疯狂进出爽爽爽视频 | 男女性色大片免费网站 | 熟女少妇人妻中文字幕 | 图片区 小说区 区 亚洲五月 | 国产成人无码专区 | 老司机亚洲精品影院无码 | 少妇被黑人到高潮喷出白浆 | 久久99精品久久久久婷婷 | 131美女爱做视频 | 日日摸天天摸爽爽狠狠97 | 亚洲理论电影在线观看 | 亚洲精品一区二区三区婷婷月 | 露脸叫床粗话东北少妇 | 亚洲综合色区中文字幕 | 5858s亚洲色大成网站www | 18黄暴禁片在线观看 | 中文字幕乱码人妻无码久久 | 国产无遮挡吃胸膜奶免费看 | 精品国产精品久久一区免费式 | 少妇一晚三次一区二区三区 | 一二三四在线观看免费视频 | 久久99精品久久久久婷婷 | 中文字幕无码免费久久9一区9 | 中文字幕av日韩精品一区二区 | 给我免费的视频在线观看 | 精品国产乱码久久久久乱码 | 六月丁香婷婷色狠狠久久 | 男人和女人高潮免费网站 | 乱人伦中文视频在线观看 | 亚洲人交乣女bbw | 精品人妻人人做人人爽 | 欧美激情综合亚洲一二区 | 欧美老人巨大xxxx做受 | 久久久久人妻一区精品色欧美 | 欧美自拍另类欧美综合图片区 | 成人一在线视频日韩国产 | 亚洲国产精品久久久天堂 | 波多野结衣一区二区三区av免费 | 久久99精品久久久久久 | 日韩av无码一区二区三区不卡 | 成人精品一区二区三区中文字幕 | 秋霞成人午夜鲁丝一区二区三区 | 欧美性生交xxxxx久久久 | 免费观看的无遮挡av | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 欧美黑人巨大xxxxx | 久久久精品国产sm最大网站 | 国产精华av午夜在线观看 | 日韩成人一区二区三区在线观看 | 99久久婷婷国产综合精品青草免费 | 国产精品沙发午睡系列 | 国产成人无码av片在线观看不卡 | aⅴ亚洲 日韩 色 图网站 播放 | 国产九九九九九九九a片 | 岛国片人妻三上悠亚 | 久久成人a毛片免费观看网站 | 狠狠色欧美亚洲狠狠色www | 欧美日本免费一区二区三区 | 亚洲成a人一区二区三区 | 强伦人妻一区二区三区视频18 | 青草青草久热国产精品 | 2019午夜福利不卡片在线 | 99精品国产综合久久久久五月天 | 97人妻精品一区二区三区 | 久久精品丝袜高跟鞋 | 精品无人区无码乱码毛片国产 | 国产精品成人av在线观看 | 亚洲成在人网站无码天堂 | 国产精品久久久久久久9999 | 麻豆国产丝袜白领秘书在线观看 | 成人欧美一区二区三区黑人 | av在线亚洲欧洲日产一区二区 | 国产精品久久久久久久影院 | 极品尤物被啪到呻吟喷水 | 精品无码一区二区三区的天堂 | 人妻尝试又大又粗久久 | 久久国产自偷自偷免费一区调 | 高清国产亚洲精品自在久久 | 国产另类ts人妖一区二区 | 好男人社区资源 | 国产成人精品视频ⅴa片软件竹菊 | 性欧美牲交在线视频 | 欧美丰满少妇xxxx性 | 亚洲一区二区观看播放 | 天天拍夜夜添久久精品大 | 亚洲 欧美 激情 小说 另类 | 亚洲精品美女久久久久久久 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 欧美老妇交乱视频在线观看 | 无码国模国产在线观看 | 综合激情五月综合激情五月激情1 | 国产激情艳情在线看视频 | 久久99精品国产麻豆蜜芽 | aa片在线观看视频在线播放 | 久久精品国产大片免费观看 | 无码国产乱人伦偷精品视频 | 国产精品久久久久9999小说 | 四虎影视成人永久免费观看视频 | 妺妺窝人体色www在线小说 | 免费无码午夜福利片69 | 麻豆果冻传媒2021精品传媒一区下载 | 无码人妻精品一区二区三区不卡 | 国产精品第一国产精品 | 亚洲一区二区三区无码久久 | 亚洲成av人综合在线观看 | 久久久久99精品成人片 | 亚洲国产精品久久久久久 | 女人被爽到呻吟gif动态图视看 | 人人爽人人爽人人片av亚洲 | 又大又硬又黄的免费视频 | 精品午夜福利在线观看 | 亚洲日韩中文字幕在线播放 | 欧美丰满老熟妇xxxxx性 | 成熟妇人a片免费看网站 | 成熟妇人a片免费看网站 | 久久久精品欧美一区二区免费 | 国产激情无码一区二区 | 人妻无码αv中文字幕久久琪琪布 | 亚洲男人av天堂午夜在 | 亚洲精品久久久久中文第一幕 | www成人国产高清内射 | 亚洲a无码综合a国产av中文 | 国产精品-区区久久久狼 | 久久久久久久人妻无码中文字幕爆 | 强辱丰满人妻hd中文字幕 | 亚拍精品一区二区三区探花 | 成人无码精品1区2区3区免费看 | 国产精品a成v人在线播放 | 亚洲 欧美 激情 小说 另类 | 亚洲精品中文字幕久久久久 | 久久综合九色综合欧美狠狠 | 强伦人妻一区二区三区视频18 | 午夜熟女插插xx免费视频 | 特级做a爰片毛片免费69 | 午夜精品久久久内射近拍高清 | 99久久精品无码一区二区毛片 | 夫妻免费无码v看片 | 久久天天躁夜夜躁狠狠 | 人妻少妇精品无码专区二区 | 国产成人一区二区三区别 | 波多野42部无码喷潮在线 | 亚洲精品综合五月久久小说 | 色一情一乱一伦一区二区三欧美 | 亚洲综合在线一区二区三区 | 亚洲爆乳精品无码一区二区三区 | 蜜桃视频插满18在线观看 | 99久久久无码国产aaa精品 | 欧美黑人乱大交 | 无人区乱码一区二区三区 | 色欲久久久天天天综合网精品 | av无码久久久久不卡免费网站 | 亚洲色大成网站www | 中文精品久久久久人妻不卡 | 人人妻人人澡人人爽精品欧美 | 亚洲最大成人网站 | 麻豆果冻传媒2021精品传媒一区下载 | 精品成在人线av无码免费看 | 亚洲国产精品久久久久久 | 欧美精品无码一区二区三区 | 欧美成人午夜精品久久久 | 狠狠色丁香久久婷婷综合五月 | 无套内谢老熟女 | 国产在线精品一区二区三区直播 | 久久国语露脸国产精品电影 | 98国产精品综合一区二区三区 | 激情五月综合色婷婷一区二区 | 久久精品人妻少妇一区二区三区 | 久久99热只有频精品8 | 2019nv天堂香蕉在线观看 | 午夜精品一区二区三区在线观看 | 国产一区二区三区精品视频 | 四虎永久在线精品免费网址 | 国产内射老熟女aaaa | 国产精品久久久一区二区三区 | 国产后入清纯学生妹 | 亚洲性无码av中文字幕 | 99视频精品全部免费免费观看 | 夜夜夜高潮夜夜爽夜夜爰爰 | 亚洲国产精品久久久天堂 | 无码av中文字幕免费放 | 国产精品久久久久久亚洲毛片 | 四虎国产精品免费久久 | 亚洲无人区一区二区三区 | 久久99国产综合精品 | 无套内谢的新婚少妇国语播放 | 日产精品高潮呻吟av久久 | 欧美丰满老熟妇xxxxx性 | 精品偷自拍另类在线观看 | 亚洲日韩av一区二区三区四区 | 欧美日韩一区二区三区自拍 | 最新国产麻豆aⅴ精品无码 | 婷婷六月久久综合丁香 | 精品无码一区二区三区的天堂 | 麻豆国产97在线 | 欧洲 | v一区无码内射国产 | 精品国偷自产在线视频 | 高清国产亚洲精品自在久久 | 18精品久久久无码午夜福利 | 国产suv精品一区二区五 | 日韩精品一区二区av在线 | 欧美激情一区二区三区成人 | 亚洲人成无码网www | 亚洲一区二区三区国产精华液 | 国产午夜无码精品免费看 | 丰满人妻一区二区三区免费视频 | 日欧一片内射va在线影院 | 无码福利日韩神码福利片 | 亚洲欧洲日本综合aⅴ在线 | 亚洲日韩中文字幕在线播放 | www国产亚洲精品久久网站 | 久久aⅴ免费观看 | 国内揄拍国内精品人妻 | 无码人妻精品一区二区三区不卡 | 亚洲人亚洲人成电影网站色 | 国产精品美女久久久久av爽李琼 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲热妇无码av在线播放 | 国产精品欧美成人 | 2019午夜福利不卡片在线 | 国产免费久久精品国产传媒 | 欧美 丝袜 自拍 制服 另类 | 色婷婷综合激情综在线播放 | 国产精品亚洲综合色区韩国 | 亚洲s码欧洲m码国产av | 国产精品18久久久久久麻辣 | 国产精品久久久久无码av色戒 | 天天综合网天天综合色 | 国产电影无码午夜在线播放 | 老熟妇乱子伦牲交视频 | 日日摸日日碰夜夜爽av | 中文字幕av日韩精品一区二区 | 亚洲中文字幕在线无码一区二区 | 国产热a欧美热a在线视频 | 精品久久久中文字幕人妻 | 精品无人国产偷自产在线 | 乱中年女人伦av三区 | 人妻人人添人妻人人爱 | 国产手机在线αⅴ片无码观看 | 国产九九九九九九九a片 | 国产成人精品视频ⅴa片软件竹菊 | 女高中生第一次破苞av | 婷婷色婷婷开心五月四房播播 | 蜜桃无码一区二区三区 | 少妇无套内谢久久久久 | 丰满人妻翻云覆雨呻吟视频 | a在线亚洲男人的天堂 | 成人精品视频一区二区三区尤物 | 国产亚洲精品久久久久久大师 | 精品厕所偷拍各类美女tp嘘嘘 | 18禁止看的免费污网站 | 精品少妇爆乳无码av无码专区 | 性做久久久久久久久 | 欧美野外疯狂做受xxxx高潮 | 天天av天天av天天透 | 亚洲成色www久久网站 | 荫蒂被男人添的好舒服爽免费视频 | 奇米影视888欧美在线观看 | 亚洲一区二区三区国产精华液 | 亚洲国产精品久久人人爱 | 一本色道婷婷久久欧美 | 亚洲欧美日韩综合久久久 | 欧美日韩色另类综合 | 国产成人精品无码播放 | 九月婷婷人人澡人人添人人爽 | 2020最新国产自产精品 | 偷窥村妇洗澡毛毛多 | 樱花草在线播放免费中文 | 日本肉体xxxx裸交 | 中文字幕av日韩精品一区二区 | 又色又爽又黄的美女裸体网站 | 成人性做爰aaa片免费看 | 无码人妻出轨黑人中文字幕 | 久久久国产精品无码免费专区 | 国精产品一品二品国精品69xx | 亚洲性无码av中文字幕 | 最新国产麻豆aⅴ精品无码 | 波多野结衣av一区二区全免费观看 | 午夜精品一区二区三区的区别 | 日韩亚洲欧美精品综合 | 一二三四在线观看免费视频 | 精品国产国产综合精品 | 日韩精品一区二区av在线 | 亚洲色大成网站www国产 | 特黄特色大片免费播放器图片 | 精品偷拍一区二区三区在线看 | 一本色道久久综合亚洲精品不卡 | 丰满人妻精品国产99aⅴ | 亚洲人成无码网www | 55夜色66夜色国产精品视频 | 国内少妇偷人精品视频 | 国产精品美女久久久久av爽李琼 |