購(gòu)買(mǎi)設(shè)計(jì)請(qǐng)充值后下載,,資源目錄下的文件所見(jiàn)即所得,都可以點(diǎn)開(kāi)預(yù)覽,,資料完整,充值下載可得到資源目錄里的所有文件。。?!咀ⅰ浚篸wg后綴為CAD圖紙,doc,docx為WORD文檔,原稿無(wú)水印,可編輯。。。具體請(qǐng)見(jiàn)文件預(yù)覽,有不明白之處,可咨詢(xún)QQ:12401814
一、設(shè)計(jì)(論文)內(nèi)容
根據(jù)企業(yè)的工藝現(xiàn)狀,對(duì)減速器等產(chǎn)品中的箱體類(lèi)零件進(jìn)行工藝分析,并規(guī)范化,
標(biāo)準(zhǔn)化,建立知識(shí)框架模型,確定工知識(shí)結(jié)構(gòu),根據(jù)所確定的工藝知識(shí)結(jié)構(gòu)錄入工
藝知識(shí),并建庫(kù)保存。建立工藝模板知,首先調(diào)用工藝模板編制模塊,根據(jù)工藝設(shè)計(jì)
規(guī)則,編制典型零件的工藝規(guī)程,并以此作為工藝規(guī)程模板。
二、設(shè)計(jì)(論文)依據(jù)
1、輸送機(jī)滾筒轉(zhuǎn)速為90r/min,減速器輸出功率為3.4kW。
2、運(yùn)輸機(jī)連續(xù)工作,單向轉(zhuǎn)動(dòng),載荷變化不大,空載起動(dòng),減速器小批生產(chǎn),使用
年限10年,大修期3年,兩班制工作,運(yùn)輸帶容許速度誤差為5%。
3、工藝決策規(guī)則的制定限制的條件為零件的總體信息,型面的特征信息,工藝常規(guī)
邏輯,企業(yè)的工藝習(xí)慣等。
三、技術(shù)要求
1. 對(duì)蓋套類(lèi)零件的工藝術(shù)語(yǔ)、工藝知識(shí)、工藝參數(shù)等進(jìn)行規(guī)范化,標(biāo)準(zhǔn)化。
2、建立人機(jī)友好的工作界面,便于用戶(hù)對(duì)工藝知識(shí)的獲取、管理與維護(hù)。
3、采用Pro/E對(duì)零件進(jìn)行三維造型。
4、數(shù)據(jù)庫(kù)采用SQL Server2000,開(kāi)發(fā)工具采用Delphi6.0/7.0。
.
四.畢業(yè)設(shè)計(jì)(論文)物化成果的具體內(nèi)容及要求
(具體內(nèi)容參照機(jī)械工程系畢業(yè)設(shè)計(jì)<論文>大綱及實(shí)施細(xì)則的有關(guān)要求填寫(xiě))
圖紙內(nèi)容及張數(shù)
減速器裝配圖 1 張(A0)
零件圖 4~6張(A1~A2)
-
實(shí)物內(nèi)容及要求
完成滿(mǎn)足該系統(tǒng)要求的原型系統(tǒng)
其他:
1、完成設(shè)計(jì)說(shuō)明書(shū)1份(字?jǐn)?shù)在2萬(wàn)字以上)
2、軟件測(cè)試分析報(bào)告各一份。
3、零件三維造型3~5個(gè)。
4、源程序代碼1份。
5、典型零件工藝模板1套。
五. 畢業(yè)設(shè)計(jì)(論文)進(jìn)度計(jì)劃
起訖日期
工作內(nèi)容
備 注
3.31——4.13
畢業(yè)實(shí)習(xí),收集資料。
4.14——4.27
資料整理,擬訂設(shè)計(jì)方案。
4.28——5.31
設(shè)計(jì)傳動(dòng)系統(tǒng),建立數(shù)據(jù)庫(kù)與工藝模板,系統(tǒng)測(cè)試。
6.1——6.15
編寫(xiě)設(shè)計(jì)計(jì)算說(shuō)明書(shū)。
6.16——6.22
畢業(yè)設(shè)計(jì)資料審閱,修改。
6.23——6.27
分小組答辯。
六. 主要參考文獻(xiàn):
1、王先逵.機(jī)械制造工藝學(xué).北京:機(jī)械工業(yè)出版社,1995.
2、趙汝嘉.計(jì)算機(jī)輔助工藝設(shè)計(jì)(CAPP).北京:機(jī)械工業(yè)出版社,1995.
3、三味工作屋.SQL Server7.0管理指南.北京:中國(guó)水利水電出版社,1999.
4、戴曙.金屬切削機(jī)床.北京:機(jī)械工業(yè)出版社,1999.
5、朱寶庫(kù).機(jī)械設(shè)計(jì).哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1994.
6、周開(kāi)勤.機(jī)械零件手冊(cè).北京:高等教育出版社,1989.
7、李存斌.Delphi6.0,程序設(shè)計(jì)及其應(yīng)用開(kāi)發(fā).北京,中國(guó)水利水電出版社,2002.
8、王細(xì)洋,王叔淳.工藝知識(shí)管理系統(tǒng)的設(shè)計(jì),計(jì)算機(jī)輔助設(shè)計(jì)與制造,
1998,(4):47-50.
9、恒永興,張振明,黃乃康等.CAPP面向?qū)ο笾R(shí)庫(kù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),
機(jī)械科學(xué)與技術(shù).2001,20(1):140-142.
10、劉金坤,王勻,王雷剛等.基于關(guān)系型數(shù)據(jù)的專(zhuān)家系統(tǒng)結(jié)構(gòu)模型及實(shí)現(xiàn)技術(shù),
中國(guó)機(jī)械工程。2001,12(5):545-547.
七、其他
學(xué)科門(mén)類(lèi): 工學(xué) 單位代碼 : 32022
箱體類(lèi)零件知識(shí)庫(kù)及工藝
模板的研究
測(cè)試分析報(bào)告
學(xué)生姓名
于 光 耀
所學(xué)專(zhuān)業(yè)
機(jī)械設(shè)計(jì)制造及其自動(dòng)化
班 級(jí)
建材機(jī)械99(5)班
學(xué) 號(hào)
B9912027
指導(dǎo)教師
王 正 剛
鹽城工學(xué)院機(jī)械工程系
二○○三年六月
鹽城工學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)
摘 要
隨著計(jì)算機(jī)在制造型企業(yè)中的運(yùn)用,通過(guò)計(jì)算機(jī)進(jìn)行工藝的輔助設(shè)計(jì)以成為可能,CAPP的運(yùn)用將為提高工藝文件的質(zhì)量,縮短生產(chǎn)準(zhǔn)備周期,并為廣大工藝人員從繁瑣、復(fù)雜的勞動(dòng)中解放出來(lái)提供一條切實(shí)可行的途徑。本文介紹了箱體類(lèi)零件的加工工藝分析以及對(duì)其知識(shí)庫(kù)與工藝模板的建立和表示。知識(shí)庫(kù)主要提供計(jì)算機(jī)輔助工藝過(guò)程設(shè)計(jì)(CAPP)系統(tǒng)中箱體類(lèi)零件工藝設(shè)計(jì)所需的工藝決策規(guī)劃、機(jī)床、刀具、量具等信息資源。本文在基于對(duì)箱體類(lèi)零件工藝分析的同時(shí),還描述了通用計(jì)算機(jī)輔助工藝過(guò)程設(shè)計(jì)(CAPP)所依據(jù)的知識(shí)庫(kù)的表達(dá)、知識(shí)的存取,系統(tǒng)工藝模板的建立等一系列問(wèn)題。
關(guān)鍵詞:箱體 計(jì)算機(jī)輔助工藝設(shè)計(jì) 知識(shí)庫(kù)
Abstract
With computer application of enterprise of making etc., carry on through computer craft supplementary to design in order to become possible, Application of CAPP for improve craft quality of file, shorten and produce cycle of planning, And liberate from tedious, complicated work and offer a feasible way for the masses of craft personnel.This text introduce case body processing technology of part analyse and to knowledge base and craft foundation and expression of template their. Knowledge base offer Computer Aided Process Planning (CAPP) System case body part technological design necessary craft make policy plan, lathe, cutter, measuring tool information resources. This text while because of analysing about the body part craft of the case, describe all-purpose Computer Aided Process Planning (CAPP) Expression, access of knowledge of knowledge base that base on, systematic craft foundation a series of problem of template.
Key words : Case CAPP Knowledge base
2
測(cè)試分析報(bào)告
一引言
基于PDM平臺(tái)的CAPP可以充分利用PDM的強(qiáng)大功能,實(shí)現(xiàn)工藝設(shè)計(jì)過(guò)程控制和并行工程。在國(guó)內(nèi)許多CIMS工程中,越來(lái)越多的企業(yè)開(kāi)始選擇商用PDM軟件作為CIMS的集成平臺(tái)和并行工程的使用環(huán)境,開(kāi)發(fā)基于PDM的CAPP系統(tǒng)必將成為一個(gè)發(fā)展趨勢(shì)。
1.編寫(xiě)目的
編寫(xiě)此測(cè)試報(bào)告的目的是為了保證基于PDM的CAPP系統(tǒng)的正常運(yùn)行,所以要通過(guò)測(cè)試,來(lái)發(fā)現(xiàn)錯(cuò)誤和異常情況,以保證程序在以后的運(yùn)行過(guò)程中盡可能的少出現(xiàn)故障。
2.背景
本此測(cè)試的是基于PDM的CAPP系統(tǒng)框架的構(gòu)建,是由鹽城工學(xué)院機(jī)械工程系提出的。它是由葛友華、劉道標(biāo)、王正剛老師共同負(fù)責(zé),由本屆畢業(yè)生張健、劉忠明同學(xué)作為畢業(yè)設(shè)計(jì)的課題協(xié)同規(guī)劃和開(kāi)發(fā),以期能建立起基于產(chǎn)品數(shù)據(jù)管理的計(jì)算機(jī)輔助工藝過(guò)程規(guī)劃的實(shí)際應(yīng)用系統(tǒng),以期能夠投入到企業(yè)的實(shí)際應(yīng)用中。由于測(cè)試環(huán)境與實(shí)際運(yùn)行環(huán)境之間可能存在著差異,所以在實(shí)際運(yùn)行過(guò)程中難免存在著不足之處,有待于進(jìn)一步的完善。
3.定義
CAD: 計(jì)算機(jī)輔助設(shè)計(jì),全稱(chēng)為Computer-Aided Design;
CAM: 計(jì)算機(jī)輔助制造,全稱(chēng)為Computer-Aided Manufacturing;
PDM: 產(chǎn)品數(shù)據(jù)管理,全稱(chēng)為Product Data Management;
CAPP:計(jì)算機(jī)輔助工藝規(guī)程設(shè)計(jì),全稱(chēng)為Computer-Aided Process Planning;
CIMS:計(jì)算機(jī)集成制造系統(tǒng),全稱(chēng)為Computer integrated manufacturing system。
4.參考資料
(1)劉道標(biāo).基于PDM的CAPP系統(tǒng)框架的研究與實(shí)現(xiàn).南京航天航空大學(xué)碩士學(xué)位論文,2002年12月。
(2)李善平,劉乃若,郭鳴等著.產(chǎn)品數(shù)據(jù)標(biāo)準(zhǔn)與PDM.清華大學(xué)出版社,2002年4月。
(3)魏志強(qiáng),王先逵,楊志剛,吳丹. 集成制造環(huán)境下的計(jì)算機(jī)輔助工藝設(shè)計(jì)框架系統(tǒng)2001年2月21號(hào)。
(4)《軟件標(biāo)準(zhǔn)和指導(dǎo)性技術(shù)文件》.航空工業(yè)標(biāo)準(zhǔn)HB6465—90。
二測(cè)試概要
本次測(cè)試主要是對(duì)下面的程序進(jìn)行的:
(1) 登陸界面的測(cè)試
測(cè)試動(dòng)態(tài)鏈接數(shù)據(jù)庫(kù),輸入服務(wù)器名、服務(wù)器密碼;
測(cè)試登陸用戶(hù)的合法性,輸入用戶(hù)名和密碼;
(2) 系統(tǒng)主界面的測(cè)試
測(cè)試簡(jiǎn)單的WEB瀏覽器能否應(yīng)用;
測(cè)試各應(yīng)用模塊能否正常顯示;
(3) 用戶(hù)管理界面的測(cè)試
測(cè)試用戶(hù)管理輸入數(shù)據(jù)是否有效;
測(cè)試添加、修改、刪除、關(guān)閉按鈕是否有效,是否有異常情況;
(4) 數(shù)據(jù)備份的測(cè)試
測(cè)試數(shù)據(jù)庫(kù)中的內(nèi)容能否以文件形式保存?zhèn)浞荩?
(5) 項(xiàng)目管理模塊的測(cè)試
測(cè)試該模塊所有界面中的按鈕能否正常實(shí)現(xiàn)功能;
測(cè)試是否對(duì)所有項(xiàng)目都分配完成后才能進(jìn)入下一流程;
(6) 產(chǎn)品管理模塊的測(cè)試
測(cè)試產(chǎn)品管理模塊中所有功能是否能夠正常實(shí)現(xiàn);
測(cè)試產(chǎn)品管理模塊中的功能是否符合需求;
(7) 工藝文件管理模塊的測(cè)試
測(cè)試新建工藝、打開(kāi)工藝、工藝提取、工藝預(yù)覽、工藝打印能否正常實(shí)現(xiàn)功能;
測(cè)試該界面中的各個(gè)子模塊是否有異常情況;
(8) 工序文件管理模塊的測(cè)試(圖略)
測(cè)試該模塊中新建工序文件、打開(kāi)工序文件是否正常實(shí)現(xiàn)功能;
測(cè)試該模塊中各個(gè)功能是否正常,有無(wú)異常情況;
(9) 工藝數(shù)據(jù)管理模塊的測(cè)試
測(cè)試該模塊中典型工藝數(shù)據(jù)維護(hù)、知識(shí)庫(kù)管理、切削用量和加工余量能否正常實(shí)現(xiàn)功能;
測(cè)試各個(gè)子界面中的按鈕等是否能實(shí)現(xiàn)其功能,有無(wú)異常情況;
(10) 工藝設(shè)計(jì)模塊的測(cè)試
測(cè)試該模塊中基于實(shí)例的工藝生成和基于模板的實(shí)例生成、工藝路線能否正常實(shí)現(xiàn)其功能;
測(cè)試該模塊中各界面的需求功能能否正常實(shí)現(xiàn),有無(wú)異常情況要處理;
(11) 系統(tǒng)查詢(xún)模塊的測(cè)試
測(cè)試基于WEB的查詢(xún)模塊能否實(shí)現(xiàn)其功能;
測(cè)試與后臺(tái)數(shù)據(jù)庫(kù)鏈接有無(wú)異常情況;
三測(cè)試結(jié)果及發(fā)現(xiàn)
(1) 測(cè)試1
輸入錯(cuò)誤的數(shù)據(jù)庫(kù)服務(wù)器名稱(chēng),系統(tǒng)報(bào)錯(cuò),數(shù)據(jù)庫(kù)自動(dòng)斷開(kāi),系統(tǒng)自動(dòng)關(guān)閉。
輸入正確的數(shù)據(jù)庫(kù)服務(wù)器名稱(chēng),服務(wù)器密碼錯(cuò)誤,系統(tǒng)無(wú)法進(jìn)入,關(guān)閉后重新登陸。
輸入正確的數(shù)據(jù)庫(kù)服務(wù)器名稱(chēng)和密碼,用戶(hù)名出錯(cuò)時(shí),無(wú)法登陸系統(tǒng)。
輸入正確的數(shù)據(jù)庫(kù)服務(wù)器名稱(chēng)和密碼,正確的用戶(hù)名,密碼錯(cuò)誤時(shí)無(wú)法登陸系統(tǒng)。
通過(guò)以上測(cè)試得出結(jié)果,只有當(dāng)以上各項(xiàng)都符合時(shí),方能成功登陸本系統(tǒng)。
(2) 測(cè)試2
測(cè)試主界面能否實(shí)現(xiàn)簡(jiǎn)單的WEB瀏覽器功能,在地址欄中輸入所要訪問(wèn)的主頁(yè)地址,測(cè)試在相應(yīng)的WebBrower處能否正常顯示網(wǎng)頁(yè)內(nèi)容。
測(cè)試主菜單中的各個(gè)鏈接是否正常,點(diǎn)擊時(shí)能否顯示相應(yīng)的界面。
通過(guò)反復(fù)的測(cè)試,發(fā)現(xiàn)了一些意想不到的問(wèn)題,尤其時(shí)在集成整個(gè)系統(tǒng)界面的時(shí)候,通過(guò)不斷的調(diào)整最終集合成主界面。
(3) 測(cè)試3
測(cè)試用戶(hù)管理界面時(shí),當(dāng)姓名輸入框?yàn)榭諘r(shí),無(wú)法對(duì)登陸用戶(hù)進(jìn)行添加、修改、刪除;當(dāng)?shù)顷懹脩?hù)為系統(tǒng)管理員時(shí),擁有最高權(quán)限可以對(duì)整個(gè)用戶(hù)管理界面進(jìn)行維護(hù),當(dāng)?shù)顷懹脩?hù)為普通用戶(hù)或工藝人員時(shí),無(wú)法運(yùn)用用戶(hù)管理界面中的添加、修改、刪除按鈕進(jìn)行用戶(hù)權(quán)限管理。剛開(kāi)始時(shí),當(dāng)用戶(hù)欄為空時(shí)也可以對(duì)用戶(hù)管理界面進(jìn)行修改。
(4) 測(cè)試4
測(cè)試數(shù)據(jù)備份界面時(shí),當(dāng)?shù)顷懹脩?hù)為系統(tǒng)管理員時(shí)可以對(duì)基礎(chǔ)資源庫(kù)進(jìn)行數(shù)據(jù)備份,以文件形式保存到硬盤(pán)中,而當(dāng)普通用戶(hù)登陸時(shí)則沒(méi)有此權(quán)限功能。而在具體實(shí)現(xiàn)此功能時(shí),經(jīng)過(guò)反復(fù)調(diào)試后,總算實(shí)現(xiàn)了此功能。
(5) 測(cè)試5
測(cè)試項(xiàng)目管理模塊時(shí),由于要實(shí)現(xiàn)通用化,所以在建立后臺(tái)數(shù)據(jù)庫(kù)時(shí)要建立關(guān)聯(lián)庫(kù),具體實(shí)現(xiàn)的時(shí)候用SQL查詢(xún)語(yǔ)言來(lái)實(shí)現(xiàn),當(dāng)項(xiàng)目分配完成后要進(jìn)入下一個(gè)流程,關(guān)鍵在于要實(shí)現(xiàn)如下需求,只有當(dāng)所有項(xiàng)目都分配完畢后才能進(jìn)入下一個(gè)工作流程,這就要逐一讀取數(shù)據(jù)庫(kù)中關(guān)于項(xiàng)目分配的信息,來(lái)確定是否能夠?qū)崿F(xiàn)。但由于開(kāi)發(fā)者自身?xiàng)l件的限制,導(dǎo)致后臺(tái)數(shù)據(jù)庫(kù)中的內(nèi)容不夠充實(shí),只是實(shí)現(xiàn)了一定的設(shè)計(jì)思想。
(6) 測(cè)試6
測(cè)試產(chǎn)品管理模塊時(shí),首先是對(duì)產(chǎn)品設(shè)計(jì)管理界面的測(cè)試,利用樹(shù)形結(jié)構(gòu)作導(dǎo)航,利用SQL查詢(xún)語(yǔ)言,使左邊的產(chǎn)品或零件與右邊的詳細(xì)信息相對(duì)應(yīng),當(dāng)指針指到產(chǎn)品樹(shù)中的某一零件時(shí)就觸發(fā)事件,在右邊相應(yīng)的位置顯示所查詢(xún)到的詳細(xì)信息,如零件的總體信息、工藝信息、其它信息,還可以查看其相應(yīng)的圖形,如果在數(shù)據(jù)庫(kù)中未添加零件圖形,則要到產(chǎn)品數(shù)據(jù)管理界面提供的圖形管理處加入與零件相對(duì)應(yīng)的圖形,在測(cè)試過(guò)程中發(fā)現(xiàn)采用樹(shù)形結(jié)構(gòu)來(lái)導(dǎo)航是非常方便的,不過(guò)在維護(hù)過(guò)程中對(duì)樹(shù)形結(jié)構(gòu)管理時(shí),容易產(chǎn)生數(shù)據(jù)庫(kù)更新不足,產(chǎn)生一些意外的出錯(cuò)信息,經(jīng)過(guò)反復(fù)測(cè)試后,調(diào)整了數(shù)據(jù)庫(kù)的結(jié)構(gòu),終于實(shí)現(xiàn)了初步的功能,而工藝信息部分是通過(guò)顯示按扭來(lái)觸發(fā)事件,當(dāng)零件的工藝已經(jīng)制定好了以后,則通過(guò)查詢(xún)來(lái)檢索后臺(tái)數(shù)據(jù)庫(kù)零件工藝匯總中的關(guān)于此零件的工藝信息,如果零件的工藝未制定,則進(jìn)入新建工藝界面對(duì)零件工藝進(jìn)行編輯,而工藝設(shè)計(jì)可以運(yùn)用兩種方法,一種是基于實(shí)例的工藝生成,還有是基于模板的工藝生成,測(cè)試過(guò)程中主要是測(cè)試產(chǎn)品樹(shù)中的零件與工藝信息是否能關(guān)聯(lián),以及后臺(tái)數(shù)據(jù)庫(kù)能否正常工作,經(jīng)過(guò)修改后已經(jīng)實(shí)現(xiàn)了初步功能。
(7) 測(cè)試7
測(cè)試過(guò)程中主要是對(duì)新建工藝界面、打開(kāi)工藝、工藝提取、工藝預(yù)覽、工藝打印能否正常實(shí)現(xiàn)功能;測(cè)試該界面中的各個(gè)子模塊是否有異常情況;在測(cè)試過(guò)程中主要是要使各個(gè)界面都能實(shí)現(xiàn)其初步功能,使之不出現(xiàn)異常情況,開(kāi)始測(cè)試時(shí)總出現(xiàn)一些小錯(cuò)誤,最后在程序中加入了異常處理后在運(yùn)行時(shí)就把錯(cuò)誤給排除拉,
在動(dòng)態(tài)輸入數(shù)據(jù)時(shí),可以選擇數(shù)據(jù)庫(kù)中的內(nèi)容添加到數(shù)據(jù)輸入框中,然后再通過(guò)按鈕觸發(fā)事件,保存到后臺(tái)數(shù)據(jù)庫(kù)中。通過(guò)動(dòng)態(tài)輸入的數(shù)據(jù)與保存到數(shù)據(jù)庫(kù)中的內(nèi)容相比較,最后確認(rèn)程序是否能滿(mǎn)足功能要求。
(8) 測(cè)試8
主要是測(cè)試工序管理模塊中的界面能否達(dá)到功能要求,測(cè)試該模塊中新建工序文件、打開(kāi)工序文件是否正常實(shí)現(xiàn)功能;測(cè)試該模塊中各個(gè)功能是否正常,有無(wú)異常情況;通過(guò)在新建工序文件界面中動(dòng)態(tài)輸入數(shù)據(jù),然后以文件形式保存到電腦中,然后再通過(guò)打開(kāi)工序文件界面把剛才保存的文件打開(kāi)來(lái),查看數(shù)據(jù)是否與動(dòng)態(tài)輸入的數(shù)據(jù)一致。如果數(shù)據(jù)不一致則說(shuō)明程序還存在著問(wèn)題,需要修改再調(diào)試,如果顯示的數(shù)據(jù)與動(dòng)態(tài)輸入的數(shù)據(jù)完全一致,說(shuō)明程序已初步實(shí)現(xiàn)了需求功能,可以對(duì)下一面進(jìn)行測(cè)試。
(9) 測(cè)試9
主要是測(cè)試該模塊中典型工藝數(shù)據(jù)維護(hù)、知識(shí)庫(kù)管理、切削用量和加工余量界面能否正常實(shí)現(xiàn)其功能,最后測(cè)試各個(gè)子界面中的按鈕等是否能實(shí)現(xiàn)其功能,有無(wú)異常情況;在測(cè)試過(guò)程中,對(duì)典型工藝數(shù)據(jù)維護(hù)界面測(cè)試主要是動(dòng)態(tài)輸入數(shù)據(jù),
再點(diǎn)擊相應(yīng)的功能按鈕,查看生成的數(shù)據(jù)是否與動(dòng)態(tài)輸入的數(shù)據(jù)相一致,如果得出的結(jié)果確實(shí)如此,則說(shuō)明所編寫(xiě)的程序是正確的,反之則需要修改,再不斷調(diào)試,直到實(shí)現(xiàn)需求功能為止。
(10) 測(cè)試10
主要是測(cè)試該模塊中基于實(shí)例的工藝生成和基于模板的工藝生成、工藝路線能否正常實(shí)現(xiàn)其功能;測(cè)試該模塊中各界面的需求功能能否正常實(shí)現(xiàn),有無(wú)異常情況要處理;根據(jù)上面所示的界面,首先是查詢(xún)與零件相對(duì)應(yīng)的工藝,然后在網(wǎng)格中顯示出來(lái),再點(diǎn)擊導(dǎo)出工藝按鈕,把檢索到的工藝單存儲(chǔ)到臨時(shí)表中,再顯示在網(wǎng)格中,以便使用者進(jìn)行修改,直到達(dá)到要求為止,然后再存儲(chǔ)到零件工藝匯總表中,如果這一過(guò)程中輸入與輸出的數(shù)據(jù)相一致,則說(shuō)明程序已實(shí)現(xiàn)了功能需求,反之,則要進(jìn)行修改,調(diào)試直到達(dá)到要求為止。
(11) 測(cè)試11
主要是測(cè)試基于WEB的查詢(xún)模塊,點(diǎn)擊左邊的查詢(xún)按鈕,在右邊對(duì)應(yīng)的位置顯示鏈接的內(nèi)容,如果未出現(xiàn)相應(yīng)的界面,則說(shuō)明源程序還需要修改,調(diào)試,直到能滿(mǎn)足功能需求為止。
四測(cè)試結(jié)論
1. 功能1
(1)能力
登陸界面已具備了動(dòng)態(tài)連接數(shù)據(jù)庫(kù)的能力,以及辨別登陸用戶(hù)合法性的能力,經(jīng)過(guò)多次測(cè)試,已證明了登陸界面擁有了以上能力。
(2)限制
在測(cè)試過(guò)程中,發(fā)現(xiàn)了問(wèn)題,開(kāi)始時(shí)無(wú)法動(dòng)態(tài)連接遠(yuǎn)程數(shù)據(jù)庫(kù),后來(lái)通過(guò)改進(jìn),才能夠連接到遠(yuǎn)程數(shù)據(jù)庫(kù)。
2. 功能2
(1)能力
系統(tǒng)主界面已具備作為簡(jiǎn)單的WEB瀏覽器的能力,能夠訪問(wèn)INTERNET,另外也達(dá)到了連接各個(gè)系統(tǒng)子模塊的能力,經(jīng)過(guò)多次測(cè)試,證明已具備了以上能力。
(2)限制
由于只是一個(gè)簡(jiǎn)單的WEB瀏覽器,所以跟IE相比還有一定的差距。
3. 功能3
(1)能力
用戶(hù)管理界面已經(jīng)具備了對(duì)使用本系統(tǒng)的用戶(hù)進(jìn)行管理的能力,當(dāng)?shù)顷懹脩?hù)為系統(tǒng)管理員時(shí)可以對(duì)任何用戶(hù)進(jìn)行修改其所有信息,也可以添加和刪除用戶(hù);而當(dāng)?shù)顷懹脩?hù)為普通用戶(hù)時(shí),則沒(méi)有權(quán)限修改用戶(hù)信息的能力。
4. 功能4
(1)能力
數(shù)據(jù)備份界面已經(jīng)具備了對(duì)基礎(chǔ)庫(kù)以文件形式保存的能力,經(jīng)過(guò)多次測(cè)試后,已經(jīng)能夠?qū)崿F(xiàn)功能需求,能夠保存數(shù)據(jù),并能夠在系統(tǒng)中顯示以文件形式保存的數(shù)據(jù)。
(2)限制
由于數(shù)據(jù)本身已保存在數(shù)據(jù)庫(kù)中,以文件形式再保存、備份只是為了防止意外事故發(fā)生,導(dǎo)致數(shù)據(jù)丟失,欠缺是為能所有用到的數(shù)據(jù)庫(kù)進(jìn)行備份。
5. 功能5
(1)能力
項(xiàng)目管理模塊主要是對(duì)通用化的項(xiàng)目進(jìn)行分配任務(wù)、編制任務(wù),經(jīng)過(guò)這一流程后,最后審核項(xiàng)目。經(jīng)過(guò)測(cè)試,證明該模塊已具備了此能力。
(2)限制
由于對(duì)項(xiàng)目?jī)?nèi)容及流程知道有限,導(dǎo)致建立的數(shù)據(jù)庫(kù)內(nèi)容教少,還不具備通用性,有待于改進(jìn)、提高。
6.功能6
(1) 能力
產(chǎn)品管理模塊主要是用來(lái)對(duì)企業(yè)中的產(chǎn)品自制件、標(biāo)準(zhǔn)件、外協(xié)件等進(jìn)行分類(lèi)管理,對(duì)自制件如果未制定工藝則到相應(yīng)的新建工藝界面制定工藝,如果已經(jīng)制定則能夠顯示其工藝內(nèi)容。經(jīng)過(guò)多次測(cè)試,證明該模塊已經(jīng)具備了以上能力。
(2) 限制
由于設(shè)計(jì)人員水平的限制,采用樹(shù)形結(jié)構(gòu)導(dǎo)航時(shí),沒(méi)做到把樹(shù)結(jié)構(gòu)做到無(wú)窮級(jí)數(shù)展開(kāi),有待于進(jìn)一步提高。
7.功能7
(1) 能力
工藝文件管理模塊主要具有工藝、打開(kāi)工藝、工藝提取、工藝預(yù)覽、工藝打印的能力,經(jīng)過(guò)多次測(cè)試后,證明該模塊已經(jīng)具備了以上能力。
8. 功能8
(1) 能力
工序文件管理模塊已經(jīng)具備了新建工序卡片和顯示已經(jīng)保存的工序卡片的能力,經(jīng)反復(fù)測(cè)試后,證明該模塊已經(jīng)具備了以上能力。
9. 功能9
(1) 能力
工藝數(shù)據(jù)管理模塊主要是對(duì)典型工藝數(shù)據(jù)維護(hù)、知識(shí)庫(kù)管理、切削用量和加工余量庫(kù)查詢(xún)。經(jīng)過(guò)多次測(cè)試后,證明該模塊已經(jīng)具備了以上能力。
10.功能10
(1) 能力
工藝設(shè)計(jì)管理模塊主要是實(shí)現(xiàn)基于實(shí)例的工藝生成和基于模板的實(shí)例生成、工藝路線的查詢(xún)的能力。
(2)由于開(kāi)發(fā)設(shè)計(jì)時(shí)間和自身水平的限制,還未能實(shí)現(xiàn)基于特征的工藝生成的能力,有待于進(jìn)一步提高。
11.功能11
(1) 能力
系統(tǒng)查詢(xún)模塊主要是用來(lái)查詢(xún)基礎(chǔ)資源庫(kù)中的信息,經(jīng)過(guò)測(cè)試后已具備了此能力。
(2) 限制
由于開(kāi)發(fā)者本身對(duì)ACTIVEFORM以及網(wǎng)絡(luò)發(fā)布了解不夠,還未能把用Delphi制作的網(wǎng)頁(yè)發(fā)布到服務(wù)器上,以達(dá)到基于WEB的查詢(xún)能力。
五評(píng)價(jià)
1. 能力
經(jīng)測(cè)試已證實(shí)了本軟件的能力。
2. 缺陷與限制
經(jīng)測(cè)試證實(shí)的軟件缺陷和限制已經(jīng)在測(cè)試結(jié)果和發(fā)現(xiàn)中交代過(guò),綜合以上的缺陷和限制,對(duì)本軟件存在著一定程度的影響。
六測(cè)試總結(jié)
通過(guò)此次測(cè)試,基于PDM的CAPP系統(tǒng)得到了很大的改進(jìn),但要消耗了測(cè)試人員很大的時(shí)間,設(shè)計(jì)人員更是消耗了大量的機(jī)時(shí)才使系統(tǒng)性能有了一定的提高,不過(guò)通過(guò)測(cè)試后,對(duì)于軟件本身來(lái)說(shuō)是必不可少的工作,有利于系統(tǒng)性能的改進(jìn)。
unit xjgy;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Grids, DBGrids, StdCtrls, OleCtrls, VOLOVIEWXLib_TLB,
Buttons, ExtCtrls,shellapi, Menus, DB, ADODB;
type
Tl_xjgy = class(TForm)
StatusBar1: TStatusBar;
Splitter2: TSplitter;
Splitter1: TSplitter;
SaveDialog1: TSaveDialog;
ADOQuery8: TADOQuery;
ADOQuery7: TADOQuery;
ADOQuery6: TADOQuery;
ADOQuery5: TADOQuery;
ADOQuery4: TADOQuery;
ADOQuery3: TADOQuery;
DataSource1: TDataSource;
ADOQuery2: TADOQuery;
ADOQuery1: TADOQuery;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
Panel3: TPanel;
Splitter3: TSplitter;
Splitter4: TSplitter;
Panel4: TPanel;
Panel7: TPanel;
SpeedButton2: TSpeedButton;
SpeedButton1: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton3: TSpeedButton;
Panel8: TPanel;
AvViewX1: TAvViewX;
Panel5: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Panel6: TPanel;
DBGrid1: TDBGrid;
Panel2: TPanel;
Panel9: TPanel;
Label6: TLabel;
Panel10: TPanel;
Panel11: TPanel;
Label7: TLabel;
Label8: TLabel;
Edit7: TEdit;
Edit8: TEdit;
Panel12: TPanel;
Label4: TLabel;
Label5: TLabel;
Edit4: TEdit;
Edit5: TEdit;
Panel1: TPanel;
TreeView1: TTreeView;
TreeView2: TTreeView;
TreeView3: TTreeView;
TreeView4: TTreeView;
TreeView5: TTreeView;
TreeView6: TTreeView;
OpenDialog1: TOpenDialog;
N3: TMenuItem;
N4: TMenuItem;
ADOQuery9: TADOQuery;
ADOQuery10: TADOQuery;
Label9: TLabel;
Label10: TLabel;
Edit6: TEdit;
Edit9: TEdit;
ADOQuery8DSDesigner: TIntegerField;
ADOQuery8DSDesigner2: TIntegerField;
ADOQuery8DSDesigner3: TStringField;
ADOQuery8DSDesigner4: TStringField;
ADOQuery8DSDesigner5: TStringField;
ADOQuery8DSDesigner6: TStringField;
ADOQuery8DSDesigner7: TStringField;
ADOQuery8DSDesigner8: TStringField;
ADOQuery8DSDesigner9: TStringField;
ADOQuery8DSDesigner10: TStringField;
ADOQuery8DSDesigner11: TFloatField;
ADOQuery8DSDesigner12: TStringField;
ADOQuery8DSDesigner13: TStringField;
ADOQuery8DSDesigner14: TStringField;
ADOQuery8DSDesigner15: TStringField;
ADOQuery8DSDesigner16: TStringField;
ADOQuery8DSDesigner17: TStringField;
ADOQuery8DSDesigner18: TStringField;
ADOQuery8DSDesigner19: TStringField;
ADOQuery8DSDesigner20: TStringField;
tuxing2: TBlobField;
ADOQuery2DSDesigner: TIntegerField;
ADOQuery2DSDesigner2: TIntegerField;
ADOQuery2DSDesigner3: TStringField;
ADOQuery2DSDesigner4: TStringField;
ADOQuery2DSDesigner5: TStringField;
ADOQuery2DSDesigner6: TStringField;
ADOQuery2DSDesigner7: TStringField;
ADOQuery2DSDesigner8: TStringField;
ADOQuery2DSDesigner9: TStringField;
ADOQuery2DSDesigner10: TStringField;
ADOQuery2DSDesigner11: TFloatField;
ADOQuery2DSDesigner12: TStringField;
ADOQuery2DSDesigner13: TStringField;
ADOQuery2DSDesigner14: TStringField;
ADOQuery2DSDesigner15: TStringField;
ADOQuery2DSDesigner16: TStringField;
ADOQuery2DSDesigner17: TStringField;
ADOQuery2DSDesigner18: TStringField;
ADOQuery2DSDesigner19: TStringField;
ADOQuery2DSDesigner20: TStringField;
tuxing: TBlobField;
procedure FormCreate(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure TreeView2Change(Sender: TObject; Node: TTreeNode);
procedure TreeView3Change(Sender: TObject; Node: TTreeNode);
procedure TreeView4Change(Sender: TObject; Node: TTreeNode);
procedure TreeView5Change(Sender: TObject; Node: TTreeNode);
procedure TreeView6Change(Sender: TObject; Node: TTreeNode);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure LoadgcmcTREE;
procedure LoadgcnrTREE;
procedure LoadjckTREE;
procedure LoadjjkTREE;
procedure LoaddjkTREE;
procedure LoadljkTREE;
end;
var
l_xjgy: Tl_xjgy;
tup,wjj:string;
implementation
uses unit1;
{$R *.dfm}
procedure Tl_xjgy.FormCreate(Sender: TObject);
var
i,ss:integer;
serveString: string;
begin
wjj:=GetCurrentDir;
//下面一部分是動(dòng)態(tài)連接數(shù)據(jù)庫(kù)
adoquery1.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from 工序名稱(chēng)庫(kù)') ;
adoquery1.open;
adoquery2.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select * from 機(jī)械加工工藝過(guò)程卡片') ;
adoquery2.open;
adoquery3.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery3.SQL.Clear;
adoquery3.SQL.Add('select * from 工序內(nèi)容') ;
adoquery3.open;
adoquery4.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery4.SQL.Clear;
adoquery4.SQL.Add('select * from 機(jī)床庫(kù)') ;
adoquery4.open;
adoquery5.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery5.SQL.Clear;
adoquery5.SQL.Add('select * from 夾具庫(kù)') ;
adoquery5.open;
adoquery6.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery6.SQL.Clear;
adoquery6.SQL.Add('select * from 刀具庫(kù)') ;
adoquery6.open;
adoquery7.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery7.SQL.Clear;
adoquery7.SQL.Add('select * from 量具庫(kù)') ;
adoquery7.open;
adoquery8.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery8.SQL.Clear;
adoquery8.SQL.Add('select * from 機(jī)械加工工藝過(guò)程卡片2') ;
adoquery8.open;
adoquery9.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery9.SQL.Clear;
adoquery9.SQL.Add('select * from 零件名稱(chēng)匯總') ;
adoquery9.open;
adoquery10.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery10.SQL.Clear;
adoquery10.SQL.Add('select * from 零件工藝匯總') ;
adoquery10.open;
LoadgcnrTREE;
LoadjckTREE;
LoadjjkTREE;
LoaddjkTREE;
LoadljkTREE;
LoadgcmcTREE;
treeview1.Visible:=true;
treeview2.Visible:=false;
treeview3.Visible:=false;
treeview4.Visible:=false;
treeview5.Visible:=false;
treeview6.Visible:=false;
adoquery2.First;
while not adoquery2.Eof do
begin
adoquery2.Delete;
end;
ss:=10;
for i:=1 to 15 do
begin
adoquery2.Append;
adoquery2['工序標(biāo)志']:=ss;
adoquery2.Post;
ss:=ss+10;
end;
adoquery2.Active:=false;
adoquery2.Active:=true;
//改變網(wǎng)格大小
dbgrid1.Columns[0].Width:=50;
dbgrid1.Columns[1].Width:=100;
dbgrid1.Columns[2].Width:=100;
dbgrid1.Columns[3].Width:=60;
dbgrid1.Columns[4].Width:=60;
dbgrid1.Columns[5].Width:=70;
dbgrid1.Columns[6].Width:=70;
dbgrid1.Columns[7].Width:=70;
dbgrid1.Columns[8].Width:=70;
dbgrid1.Columns[9].Width:=60;
end;
procedure Tl_xjgy.LoadgcmcTREE;
var
RootNode, CatNode : TTreeNode;
Category : string;
begin
treeview1.Items.Clear;
RootNode := treeview1.Items.Add( nil, '工序名稱(chēng)' );
RootNode.ImageIndex := 0; { Specify which bitmap to use }
RootNode.SelectedIndex := 0;
adoquery1.First;
while not adoquery1.Eof do
begin
Category := adoquery1.fieldbyname('工序名稱(chēng)').AsString;
CatNode := treeview1.Items.AddChild( RootNode, Category );
CatNode.ImageIndex := 5;
CatNode.SelectedIndex := 2;
adoquery1.Next;
end;
end;
procedure Tl_xjgy.LoadgcnrTREE;
var
RootNode, CatNode : TTreeNode;
Category : string;
begin
treeview2.Items.Clear;
RootNode := treeview2.Items.Add( nil, '工序內(nèi)容' );
RootNode.ImageIndex := 0; { Specify which bitmap to use }
RootNode.SelectedIndex := 0;
adoquery3.First;
while not adoquery3.Eof do
begin
Category := adoquery3.fieldbyname('工序內(nèi)容').AsString;
CatNode := treeview2.Items.AddChild( RootNode, Category );
CatNode.ImageIndex := 5;
CatNode.SelectedIndex := 2;
adoquery3.Next;
end;
end;
procedure Tl_xjgy.LoadjckTREE;
var
RootNode, TipNode, CatNode : TTreeNode;
ss,Category,jidian : string;
begin
treeview3.Items.Clear;
adoquery4.First;
while not adoquery4.Eof do
begin
if (adoquery4['機(jī)床標(biāo)志1']=0) and (adoquery4['機(jī)床標(biāo)志2']=0) and (adoquery4['機(jī)床標(biāo)志3']=0)then
begin
ss:=adoquery4['機(jī)床名稱(chēng)'];
RootNode := treeview3.Items.Add( nil, ss );
RootNode.ImageIndex := 0; { Specify which bitmap to use }
RootNode.SelectedIndex := 0;
end;
if (adoquery4['機(jī)床標(biāo)志1']=0) and (adoquery4['機(jī)床標(biāo)志2']=0) and (adoquery4['機(jī)床標(biāo)志3']=1)then
begin
Category := adoquery4.fieldbyname('機(jī)床分類(lèi)').AsString;
CatNode := treeview3.Items.AddChild( RootNode, Category );
CatNode.ImageIndex := 5;
CatNode.SelectedIndex := 2;
end;
if (adoquery4['機(jī)床標(biāo)志1']=1) and (adoquery4['機(jī)床標(biāo)志2']=1) and (adoquery4['機(jī)床標(biāo)志3']=1)then
begin
jidian := adoquery4.fieldbyname('機(jī)床型號(hào)').AsString;
tipNode := treeview3.Items.addchild( catnode,jidian );
tipNode.ImageIndex := 5;
tipNode.SelectedIndex := 2;
end;
adoquery4.Next;
end;
end;
procedure Tl_xjgy.LoadjjkTREE;
var
RootNode, TipNode, CatNode : TTreeNode;
ss,Category,jidian : string;
begin
treeview4.Items.Clear;
adoquery5.First;
while not adoquery5.Eof do
begin
if (adoquery5['夾具標(biāo)志1']=0) and (adoquery5['夾具標(biāo)志2']=0) and (adoquery5['夾具標(biāo)志3']=0)then
begin
ss:=adoquery5['夾具總稱(chēng)'];
RootNode := treeview4.Items.Add( nil, ss );
RootNode.ImageIndex := 0; { Specify which bitmap to use }
RootNode.SelectedIndex := 0;
end;
if (adoquery5['夾具標(biāo)志1']=0) and (adoquery5['夾具標(biāo)志2']=0) and (adoquery5['夾具標(biāo)志3']=1)then
begin
Category := adoquery5.fieldbyname('夾具分類(lèi)').AsString;
CatNode := treeview4.Items.AddChild( RootNode, Category );
CatNode.ImageIndex := 5;
CatNode.SelectedIndex := 2;
end;
if (adoquery5['夾具標(biāo)志1']=1) and (adoquery5['夾具標(biāo)志2']=1) and (adoquery5['夾具標(biāo)志3']=1)then
begin
jidian := adoquery5.fieldbyname('夾具名稱(chēng)').AsString;
tipNode := treeview4.Items.addchild( catnode,jidian );
tipNode.ImageIndex := 5;
tipNode.SelectedIndex := 2;
end;
adoquery5.Next;
end;
end;
procedure Tl_xjgy.LoaddjkTREE;
var
RootNode,CatNode : TTreeNode;
ss,Category : string;
begin
treeview5.Items.Clear;
adoquery6.First;
while not adoquery6.Eof do
begin
if (adoquery6['刀具標(biāo)志1']=0) and (adoquery6['刀具標(biāo)志2']=1) then
begin
ss:=adoquery6['刀具名稱(chēng)'];
RootNode := treeview5.Items.Add( nil, ss );
RootNode.ImageIndex := 0; { Specify which bitmap to use }
RootNode.SelectedIndex := 0;
end;
if (adoquery6['刀具標(biāo)志1']=1) and (adoquery6['刀具標(biāo)志2']=0) then
begin
Category := adoquery6.fieldbyname('刀具規(guī)格').AsString;
CatNode := treeview5.Items.AddChild( RootNode, Category );
CatNode.ImageIndex := 5;
CatNode.SelectedIndex := 2;
end;
adoquery6.Next;
end;
end;
procedure Tl_xjgy.LoadljkTREE;
var
RootNode, CatNode : TTreeNode;
ss,Category : string;
begin
treeview6.Items.Clear;
adoquery7.First;
while not adoquery7.Eof do
begin
if (adoquery7['量具標(biāo)志1']=0) and (adoquery7['量具標(biāo)志2']=1) then
begin
ss:=adoquery7['量具名稱(chēng)'];
RootNode := treeview6.Items.Add( nil, ss );
RootNode.ImageIndex := 0; { Specify which bitmap to use }
RootNode.SelectedIndex := 0;
end;
if (adoquery7['量具標(biāo)志1']=1) and (adoquery7['量具標(biāo)志2']=0) then
begin
Category := adoquery7.fieldbyname('量具規(guī)格').AsString;
CatNode := treeview6.Items.AddChild( RootNode, Category );
CatNode.ImageIndex := 5;
CatNode.SelectedIndex := 2;
end;
adoquery7.Next;
end;
end;
procedure Tl_xjgy.SpeedButton3Click(Sender: TObject);
begin
close;
end;
procedure Tl_xjgy.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (DBGrid1.SelectedIndex = 1) then
begin
//調(diào)用相應(yīng)樹(shù)形結(jié)構(gòu)
treeview1.Visible:=true;
treeview2.Visible:=false;
treeview3.Visible:=false;
treeview4.Visible:=false;
treeview5.Visible:=false;
treeview6.Visible:=false;
end;
if (DBGrid1.SelectedIndex = 2) then
begin
treeview2.Visible:=true;
treeview1.Visible:=false;
treeview3.Visible:=false;
treeview4.Visible:=false;
treeview5.Visible:=false;
treeview6.Visible:=false;
end;
if (DBGrid1.SelectedIndex = 5) then
begin
treeview3.Visible:=true;
treeview2.Visible:=false;
treeview1.Visible:=false;
treeview4.Visible:=false;
treeview5.Visible:=false;
treeview6.Visible:=false;
end;
if (DBGrid1.SelectedIndex = 6) then
begin
treeview4.Visible:=true;
treeview2.Visible:=false;
treeview3.Visible:=false;
treeview1.Visible:=false;
treeview5.Visible:=false;
treeview6.Visible:=false;
end;
if (DBGrid1.SelectedIndex = 7) then
begin
treeview5.Visible:=true;
treeview2.Visible:=false;
treeview3.Visible:=false;
treeview4.Visible:=false;
treeview1.Visible:=false;
treeview6.Visible:=false;
end;
if (DBGrid1.SelectedIndex = 8) then
begin
treeview6.Visible:=true;
treeview2.Visible:=false;
treeview3.Visible:=false;
treeview4.Visible:=false;
treeview5.Visible:=false;
treeview1.Visible:=false;
end;
end;
procedure Tl_xjgy.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if (DBGrid1.SelectedIndex = 1) then
begin
adoquery2.Edit;
adoquery2['工序名稱(chēng)']:=TreeView1.Selected.Text;
adoquery2.Post;
end;
end;
procedure Tl_xjgy.TreeView2Change(Sender: TObject; Node: TTreeNode);
begin
if (DBGrid1.SelectedIndex = 2) then
begin
adoquery2.Edit;
adoquery2['工序內(nèi)容']:=TreeView2.Selected.Text;
adoquery2.Post;
end;
end;
procedure Tl_xjgy.TreeView3Change(Sender: TObject; Node: TTreeNode);
begin
if (DBGrid1.SelectedIndex = 5) then
begin
adoquery2.Edit;
adoquery2['機(jī)床設(shè)備']:=TreeView3.Selected.Text;
adoquery2.Post;
end;
end;
procedure Tl_xjgy.TreeView4Change(Sender: TObject; Node: TTreeNode);
begin
if (DBGrid1.SelectedIndex = 6) then
begin
adoquery2.Edit;
adoquery2['夾具設(shè)備']:=TreeView4.Selected.Text;
adoquery2.Post;
end;
end;
procedure Tl_xjgy.TreeView5Change(Sender: TObject; Node: TTreeNode);
begin
if (DBGrid1.SelectedIndex = 7) then
begin
adoquery2.Edit;
adoquery2['刀具設(shè)備']:=TreeView5.Selected.Text;
adoquery2.Post;
end;
end;
procedure Tl_xjgy.TreeView6Change(Sender: TObject; Node: TTreeNode);
begin
if (DBGrid1.SelectedIndex = 8) then
begin
adoquery2.Edit;
adoquery2['量具設(shè)備']:=TreeView6.Selected.Text;
adoquery2.Post;
end;
end;
procedure Tl_xjgy.N1Click(Sender: TObject);
begin
avviewx1.ClearMarkup ;
if opendialog1.Execute then
begin
tup:=opendialog1.filename;
end;
avviewx1.src :=tup ;
if tup<>'' then
begin
avviewx1.Visible:=true;
end
else begin end;
end;
procedure Tl_xjgy.N2Click(Sender: TObject);
begin
avviewx1.ClearMarkup;
avviewx1.Visible:=false;
end;
procedure Tl_xjgy.SpeedButton6Click(Sender: TObject);
var
s:integer;
begin
adoquery2.Last;
s:=adoquery2['工序標(biāo)志'];
adoquery2.Append;
s:=s+10;
adoquery2['工序標(biāo)志']:=s;
end;
procedure Tl_xjgy.SpeedButton4Click(Sender: TObject);
var
aa,bb:integer;
begin
try
begin
aa:=adoquery2['工序標(biāo)志'];
aa:=aa-1;
adoquery2.Prior;
bb:=adoquery2['工序標(biāo)志'];
adoquery2.Insert;
if aa=bb then
begin
bb:=bb-1;
adoquery2['工序標(biāo)志']:=bb;
end else adoquery2['工序標(biāo)志']:=aa;
adoquery2.Post;
end
except showmessage('請(qǐng)將指針上移,謝謝');
end;
adoquery2.Active:=false;
adoquery2.Active:=true;
end;
procedure Tl_xjgy.SpeedButton5Click(Sender: TObject);
begin
adoquery2.delete;
adoquery2.Refresh;
end;
procedure Tl_xjgy.SpeedButton1Click(Sender: TObject);
begin
if (edit4.Text<>'')and (edit8.Text<>'') then
begin
if MessageDlg('是否要提交?',mtConfirmation, [mbYes, mbNo], 0 )=mryes then
begin
adoquery2.Refresh;
adoquery2.First;
adoquery2.Edit;
adoquery2['產(chǎn)品名稱(chēng)']:=edit4.Text;
adoquery2['產(chǎn)品型號(hào)']:=edit7.Text;
adoquery2['零件圖號(hào)']:=edit5.Text;
adoquery2['零件名稱(chēng)']:=edit8.Text;
adoquery2['編制日期']:=edit1.Text;
adoquery2['校對(duì)日期']:=edit2.Text;
adoquery2['審核日期']:=edit3.Text;
adoquery2['材料牌號(hào)']:=edit6.Text;
adoquery2['毛坯種類(lèi)']:=edit9.Text;
tuxing.LoadFromFile(tup) ;
adoquery2.Post;
adoquery9.Append;
adoquery9['零件名稱(chēng)']:=edit8.Text;
adoquery9.Post;
adoquery2.First;
repeat
begin
adoquery10.Append;
adoquery10['零件名稱(chēng)']:=edit8.Text;
adoquery10['產(chǎn)品名稱(chēng)']:=adoquery2['產(chǎn)品名稱(chēng)'];
adoquery10['產(chǎn)品型號(hào)']:=adoquery2['產(chǎn)品型號(hào)'];
adoquery10['零件圖號(hào)']:=adoquery2['零件圖號(hào)'];
adoquery10['編制日期']:=adoquery2['編制日期'];
adoquery10['校對(duì)日期']:=adoquery2['校對(duì)日期'];
adoquery10['審核日期']:=adoquery2['審核日期'];
adoquery10['材料牌號(hào)']:=adoquery2['材料牌號(hào)'];
adoquery10['毛坯種類(lèi)']:=adoquery2['毛坯種類(lèi)'];
adoquery10['圖形']:=adoquery2['圖形'];
adoquery10['工序號(hào)']:=adoquery2['工序號(hào)'];
adoquery10.fieldbyname('工序名稱(chēng)').AsString:=adoquery2.fieldbyname('工序名稱(chēng)').AsString;
adoquery10.fieldbyname('工序內(nèi)容').AsString:=adoquery2.fieldbyname('工序內(nèi)容').AsString;
adoquery10.fieldbyname('車(chē)間').AsString:=adoquery2.fieldbyname('車(chē)間').AsString;
adoquery10.fieldbyname('工段').AsString:=adoquery2.fieldbyname('工段').AsString;
adoquery10.fieldbyname('機(jī)床設(shè)備').AsString:=adoquery2.fieldbyname('機(jī)床設(shè)備').AsString;
adoquery10.fieldbyname('夾具設(shè)備').AsString:=adoquery2.fieldbyname('夾具設(shè)備').AsString;
adoquery10.fieldbyname('刀具設(shè)備').AsString:=adoquery2.fieldbyname('刀具設(shè)備').AsString;
adoquery10.fieldbyname('量具設(shè)備').AsString:=adoquery2.fieldbyname('量具設(shè)備').AsString;
adoquery10.fieldbyname('單件工時(shí)').AsString:=adoquery2.fieldbyname('單件工時(shí)').AsString;
adoquery10.Post;
adoquery2.Next;
end;
until adoquery2.Eof;
showmessage('提交成功!');
speedbutton1.Enabled:=false;
end;
end else showmessage('請(qǐng)輸入產(chǎn)品和零件名稱(chēng)!');
end;
procedure Tl_xjgy.SpeedButton2Click(Sender: TObject);
var
filename:string;
begin
adoq