![課程設計報告-數(shù)據(jù)結構與算法課程設計(完整版)資料_第1頁](http://file4.renrendoc.com/view/1973bc13a3bf29f5a00b217217828710/1973bc13a3bf29f5a00b2172178287101.gif)
![課程設計報告-數(shù)據(jù)結構與算法課程設計(完整版)資料_第2頁](http://file4.renrendoc.com/view/1973bc13a3bf29f5a00b217217828710/1973bc13a3bf29f5a00b2172178287102.gif)
![課程設計報告-數(shù)據(jù)結構與算法課程設計(完整版)資料_第3頁](http://file4.renrendoc.com/view/1973bc13a3bf29f5a00b217217828710/1973bc13a3bf29f5a00b2172178287103.gif)
![課程設計報告-數(shù)據(jù)結構與算法課程設計(完整版)資料_第4頁](http://file4.renrendoc.com/view/1973bc13a3bf29f5a00b217217828710/1973bc13a3bf29f5a00b2172178287104.gif)
![課程設計報告-數(shù)據(jù)結構與算法課程設計(完整版)資料_第5頁](http://file4.renrendoc.com/view/1973bc13a3bf29f5a00b217217828710/1973bc13a3bf29f5a00b2172178287105.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
課程設計報告-數(shù)據(jù)結構與算法課程設計(完整版)資料(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)
課程設計報告-數(shù)據(jù)結構與算法課程設計(完整版)資料(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)重慶大學課程設計報告課程設計題目:數(shù)據(jù)結構與算法課程設計學院:軟件學院專業(yè):軟件工程年級:2021級學生:李慶(組長)唐天吳東學號:20211766(李)20211779(唐)2(吳)完成時間:2021年12月30日成績:指導教師:蔡斌重慶大學教務處制
課程設計指導教師評定成績表項目分值優(yōu)秀(100>x≥90)良好(90>x≥80)中等(80>x≥70)及格(70>x≥60)不及格(x<60)評分參考標準參考標準參考標準參考標準參考標準學習態(tài)度15學習態(tài)度認真,科學作風嚴謹,嚴格保證設計時間并按任務書中規(guī)定的進度開展各項工作學習態(tài)度比較認真,科學作風良好,能按期圓滿完成任務書規(guī)定的任務學習態(tài)度尚好,遵守組織紀律,基本保證設計時間,按期完成各項工作學習態(tài)度尚可,能遵守組織紀律,能按期完成任務學習馬虎,紀律渙散,工作作風不嚴謹,不能保證設計時間和進度技術水平與實際能力25設計合理、理論分析與計算正確,實驗數(shù)據(jù)準確,有很強的實際動手能力、經(jīng)濟分析能力和計算機應用能力,文獻查閱能力強、引用合理、調(diào)查調(diào)研非常合理、可信設計合理、理論分析與計算正確,實驗數(shù)據(jù)比較準確,有較強的實際動手能力、經(jīng)濟分析能力和計算機應用能力,文獻引用、調(diào)查調(diào)研比較合理、可信設計合理,理論分析與計算基本正確,實驗數(shù)據(jù)比較準確,有一定的實際動手能力,主要文獻引用、調(diào)查調(diào)研比較可信設計基本合理,理論分析與計算無大錯,實驗數(shù)據(jù)無大錯設計不合理,理論分析與計算有原則錯誤,實驗數(shù)據(jù)不可靠,實際動手能力差,文獻引用、調(diào)查調(diào)研有較大的問題創(chuàng)新10有重大改進或獨特見解,有一定實用價值有較大改進或新穎的見解,實用性尚可有一定改進或新的見解有一定見解觀念陳舊論文(計算書、圖紙)撰寫質量50結構嚴謹,邏輯性強,層次清晰,語言準確,文字流暢,完全符合規(guī)范化要求,書寫工整或用計算機打印成文;圖紙非常工整、清晰結構合理,符合邏輯,文章層次分明,語言準確,文字流暢,符合規(guī)范化要求,書寫工整或用計算機打印成文;圖紙工整、清晰結構合理,層次較為分明,文理通順,基本達到規(guī)范化要求,書寫比較工整;圖紙比較工整、清晰結構基本合理,邏輯基本清楚,文字尚通順,勉強達到規(guī)范化要求;圖紙比較工整內(nèi)容空泛,結構混亂,文字表達不清,錯別字較多,達不到規(guī)范化要求;圖紙不工整或不清晰指導教師評定成績:指導教師簽名:年月日重慶大學本科學生課程設計任務書課程設計題目回文判斷學院軟件學院專業(yè)軟件工程年級2021已知參數(shù)和設計要求:[問題描述]試寫一個算法,判斷依次讀入的一個以@為結束符的字母序列,是否為形如‘序列1&序列2’模式的字符序列。其中序列1和序列2中都不含字符‘&’,且序列2是序列1的逆序列。例如,‘a(chǎn)+b&b+a’是屬該模式的字符序列,而‘1+3&3-1’則不是。學生應完成的工作:[實現(xiàn)提示]首先,序列1進棧,然后序列1出棧并與序列2比較。[測試數(shù)據(jù)]由學生依據(jù)軟件工程的測試技術自己確定。注意測試邊界數(shù)據(jù),如序列1和序列2均為空串。目前資料收集情況(含指定參考資料):1.RobertL.Kruse編.DataStructuresandProgramDesigninC++.高等教育出版社,2001.2.《數(shù)據(jù)結構》嚴蔚敏編,清華大學出版社,2000.3.《數(shù)據(jù)結構教程》李春葆編,清華大學出版社,2002.課程設計的工作計劃:本課題由唐天同學獨立完成,第一天由其編寫全部代碼第二天小組測試,討論,修改。最終完成此任務任務下達日期2021年11月10日完成日期2021年12月30日指導教師(簽名)學生(簽名)說明:1、學院、專業(yè)、年級均填全稱,如:光電工程學院、測控技術、2003。2、本表除簽名外均可采用計算機打印。本表不夠,可另附頁,但應在頁腳添加頁碼。
重慶大學本科學生課程設計任務書課程設計題目推銷員問題學院軟件學院專業(yè)軟件工程年級2021已知參數(shù)和設計要求:[問題描述]有一個推銷員要到N(N>0)個城市去推銷產(chǎn)品,他從某個城市出發(fā),經(jīng)歷每個城市,且每個城市只能去一次,然后回到初始城市,以距離作為代價,他希望找出一個最佳路徑。這N個城市相互都有道路可通,但距離各不相同,城市個數(shù)和各個城市的相通距離可由學生自己設定。學生應完成的工作:[基本要求](1)可以輸入城市個數(shù)(不少于10個)、輸入城市信息和城市之間的距離(為整數(shù));(2)按照輸入出發(fā)城市,根據(jù)城市的距離最短給出路徑選擇。(3)界面要求:有合理的提示和人機交互。目前資料收集情況(含指定參考資料):1.RobertL.Kruse編.DataStructuresandProgramDesigninC++.高等教育出版社,2001.2.《數(shù)據(jù)結構》嚴蔚敏編,清華大學出版社,2000.3.《數(shù)據(jù)結構教程》李春葆編,清華大學出版社,2002.課程設計的工作計劃:本課題由吳東同學獨立完成。第一期():接受課程任務,完成選題,并對任務初步了解;第二期():收集相關資料和復習基礎專業(yè)知識,初步完成設計;第三期():對課程設計進行最終實驗;第四期():整理并完善課程設計報告。任務下達日期2021年11月10日完成日期2021年12月30日指導教師(簽名)學生(簽名)說明:1、學院、專業(yè)、年級均填全稱,如:光電工程學院、測控技術、2003。2、本表除簽名外均可采用計算機打印。本表不夠,可另附頁,但應在頁腳添加頁碼。重慶大學本科學生課程設計任務書課程設計題目文學研究助手學院軟件學院專業(yè)軟件學院年級2021已知參數(shù)和設計要求:[問題描述]文學研究人員需要統(tǒng)計某篇英文小說中某些形容詞的出現(xiàn)次數(shù)和位置。試寫一個實現(xiàn)這一目標的文字統(tǒng)計系統(tǒng),稱為“文學研究助手”。學生應完成的工作:[基本要求]英文小說存于一個文本文件中。待統(tǒng)計的詞匯集合要一次輸入完畢,即統(tǒng)計工作必須在程序的一次運行之后就全部完成。程序的輸出結果是每個詞的出現(xiàn)次數(shù)和出現(xiàn)位置所在行的行號,格式自行設計。[測試數(shù)據(jù)]以你的源程序模擬英文小說,程序語言保留字集作為待統(tǒng)計的詞匯集。[實現(xiàn)提示]設小說中的詞匯一律不跨行。這樣,每讀入一行,就統(tǒng)計每個詞在這行中的出現(xiàn)次數(shù)。出現(xiàn)位置所在行的行號可以用鏈表存儲。若某行中出現(xiàn)了不止一次,不必存多個相同的行號。目前資料收集情況(含指定參考資料):1.RobertL.Kruse編.DataStructuresandProgramDesigninC++.高等教育出版社,2001.2.《數(shù)據(jù)結構》嚴蔚敏編,清華大學出版社,2000.3.《數(shù)據(jù)結構教程》李春葆編,清華大學出版社,2002.課程設計的工作計劃:本課題由李慶同學獨立完成,包括繪制程序邏輯圖,設計算法,實現(xiàn)算法,撰寫論文。任務下達日期2021年11月10日完成日期2021年12月30日指導教師(簽名)學生(簽名)說明:1、學院、專業(yè)、年級均填全稱,如:光電工程學院、測控技術、2003。2、本表除簽名外均可采用計算機打印。本表不夠,可另附頁,但應在頁腳添加頁碼。摘要本課程設計實驗報告共解決3個問題,解決過程中涉及到大部分主流數(shù)據(jù)結構算法。其中主要有棧,遞歸算法,串的應用,圖,圖實現(xiàn)的深度和廣度遍歷?;匚呐袛鄬⒆址凑沼脩糨斎氲捻樞蚍謩e入棧和隊列,然后二者進行比較。根據(jù)比較結果判斷序列是否為回文。2)推銷員問題該問題通過A*算法選擇出最短路徑,通過一個打開的列表,保存了打開節(jié)點的一個值記為F;每次從中取最小F值的節(jié)點打開下批子節(jié)點;一個關閉列表,將已展開的節(jié)點加入其中。3)文學助手該問題主要是利用數(shù)據(jù)結構中串和棧知識,核心思想是串的模式匹配算法,采用易于理解且設計簡單的串的樸素模式匹配算法,利用堆棧存儲匹配字符串的位置。關鍵字:程序設計,數(shù)據(jù)結構與算法,順序棧,隊列,最短路徑,模式匹配,商旅問題,圖論關于回文判斷(1)問題描述試寫一個算法,判斷依次讀入的一個以@為結束符的字母序列,是否為形如‘序列1&序列2’模式的字符序列。其中序列1和序列2中都不含字符‘&’,且序列2是序列1的逆序列。例如,‘a(chǎn)+b&b+a’是屬該模式的字符序列,而‘1+3&3-1’則不是。(2)基本要求序列1進棧,然后序列1出棧并與序列2比較。根據(jù)序列1與序列2比較結果判斷序列是否為回文。(3)算法思想1.數(shù)據(jù)結構:typedefstruct{charitem[STACKSIZE];inttop;}SqStack;使用結構體,內(nèi)部定義數(shù)組模擬棧。top為棧頂指針,指向當前元素的下一個位置,item[STACKSIZE]表示棧內(nèi)的元素個數(shù)。2.函數(shù)介紹:intInitStack(SqStack*S)//棧的初始化intPush(SqStack*s,chardata)//入棧intPop(SqStack*s,char*data)//出棧3.程序流程:1)將字符串按照用戶輸入的順序分別入棧和隊列
2)分別從隊列和棧中取出首個字符
3)比較取出的字符,若相等,繼續(xù)分別從隊列和棧中取首個字符;否則跳出循環(huán),并設置標志;
4)若隊列和棧中的字符取完,則結束,設置標志為真;
5)標志為真,表示字符從前往后和從后往前的序列完全匹配,該字符串屬于回文
6)標志為假,表示字符從前往后和從后往前的序列不完全匹配,該字符串不屬于回文
(4)模塊劃分intInitStack(SqStack*S)//棧的初始化intPush(SqStack*s,chardata)//入棧intPop(SqStack*s,char*data)//出棧(5)數(shù)據(jù)結構typedefstruct{charitem[STACKSIZE];inttop;}typedefstructQNode{chardata;structQNode*next;}typedefstruct{PQNodefront,rear;}(6)源程序#include<stdio.h>#include<stdlib.h>#include<string.h>#defineSTACKSIZE1000typedefstruct{charitem[STACKSIZE];inttop;}SqStack;typedefstructQNode{chardata;structQNode*next;}LQNode,*PQNode;typedefstruct{PQNodefront,rear;}LinkQueue;intInitStack(SqStack*S){S->top=-1;return1;}intStackEmpty(SqStackS){if(S.top==-1)return1;elsereturn0;}intPush(SqStack*s,chardata){if(s->top==STACKSIZE-1){printf("\n棧已滿,不能再進行入棧操作");return0;}s->top++;s->item[s->top]=data;return1;}intPop(SqStack*s,char*data){if(s->top==-1){//printf("\n堆棧已空,不能再進行出棧操作");return0;}*data=s->item[s->top];s->top--;return1;}intInitQueue(LinkQueue*q){q->front=q->rear=(PQNode)malloc(sizeof(LQNode));if(!q->front){printf("\n初始化隊列失敗");return0;}q->front->next=NULL;return1;}intQueueEmpty(LinkQueueq){if(q.front==q.rear){printf("\n隊列為空");return1;}elsereturn0;}intEnQueue(LinkQueue*q,charitem){PQNodep;p=(PQNode)malloc(sizeof(LQNode));if(!p){printf("\n內(nèi)存分配失敗");return0;}p->data=item;p->next=NULL;q->rear->next=p;q->rear=p;return1;}intDeQueue(LinkQueue*q,char*item){PQNodep;if(q->front==q->rear){//printf("\n隊列已空,不能出隊");return0;}p=q->front->next;*item=p->data;q->front->next=p->next;free(p);if(q->rear==p)/*若刪除的為最后一個結點,移動隊尾指針*/q->front=q->rear;return1;}intPutOutQueue(LinkQueueq){PQNodepos;if(q.front==q.rear){printf("\n隊列為空");return0;}pos=q.front->next;/*printf("\nHereisthestring:");while(pos!=NULL){printf("%c",pos->data);pos=pos->next;}printf("\n"); */return1;}intmain(void){inti,len,count1=0;charstr1[100],ch,ch1;LinkQueuelq1,lq2;SqStacksq;printf("請輸入一個字符串:");scanf("%s",&str1);len=strlen(str1);InitQueue(&lq1);InitQueue(&lq2);InitStack(&sq); if(str1[len-1]=='@') {for(i=0;i<len-1;i++){EnQueue(&lq1,str1[i]);}PutOutQueue(lq1);for(i=0;i<len-1;i++){DeQueue(&lq1,&ch);Push(&sq,ch);EnQueue(&lq1,ch);}for(i=0;i<len;i++){Pop(&sq,&ch);EnQueue(&lq2,ch);}PutOutQueue(lq2);for(i=0;i<len;i++){DeQueue(&lq1,&ch);DeQueue(&lq2,&ch1); if(ch1!=ch) { count1++; }} } else { printf("請以@結尾。"); return0; }if(count1==0){printf("\n該字符串為回文");}else {printf("\n該字符串不是回文"); }return0;}(7)測試數(shù)據(jù)測試4組數(shù)據(jù):1.123456789&987654321@2.12+3&3-12@3.213123&234.abc&cba@(8)測試情況該數(shù)據(jù)表示一般情況,以@結尾的一般字符串該數(shù)據(jù)表示含有符號的以@結尾的字符串該數(shù)據(jù)表示不以@結尾的字符串該數(shù)據(jù)表示含英文字母的字符串關于推銷員問題(1)問題描述有一個推銷員要到N(N>0)個城市去推銷產(chǎn)品,他從某個城市出發(fā),經(jīng)歷每個城市,且每個城市只能去一次,然后回到初始城市,以距離作為代價,他希望找出一個最佳路徑。這N個城市相互都有道路可通,但距離各不相同,城市個數(shù)和各個城市的相通距離可由自行設定。(2)基本要求:(1)可以輸入城市個數(shù)(不少于10個)、輸入城市信息和城市之間的距離(為整數(shù));(2)按照輸入出發(fā)城市,根據(jù)城市的距離最短給出路徑選擇。(3)界面要求:有合理的提示和人機交互。(3)算法思想: 在這個問題的具體解決過程中,我們可以使用A*算法。A*算法是N.Nillson于1971年提出的一種有序搜索算法,該算法被認為是求解人工智能問題的最成功的技術理論之一。Nillson指出對于某一已到達的現(xiàn)行狀態(tài),如已到達圖中的n節(jié)點,它是否可能成為最佳路徑上的一點的估價,應由估價函數(shù)f(n)值來決定。 假設g*(n)函數(shù)值表示從起始節(jié)點s到任意一個節(jié)點n的一條最佳路徑上的實際耗散值。h*(n)函數(shù)值表示從任意節(jié)點n到目標節(jié)點ti的最佳路徑的實際耗散值。其中ti是一個可能的目標節(jié)點。f*(n)函數(shù)值表示從起始s,通過某一指定的n到達目標節(jié)點ti的一條最佳路徑的實際耗散值,并有f*(n)=g*(n)+h*(n)。 假設f
函數(shù)是對f*
函數(shù)的一種估計,并有f(n)=g(n)+h(n),其中g函數(shù)是對g*的估計,h
函數(shù)是對h*的一種估計。f(n)包括兩個部分,其中g(n)表示到達n節(jié)點時,已付出代價的估計;而h(n)表示從n節(jié)點到達目標節(jié)點ti將要付出代價的估計。按f(n)=g*(n)+h*(n)的值來排序OPEN表的節(jié)點,f值小者優(yōu)先。通常稱這種算法為A算法。在A
算法的基礎上,進一步限制h(n)函數(shù),使得搜索圖中的每一個節(jié)點n,能滿足h(n)<=h*(n)、稱h函數(shù)取h*的下界。這種算法叫A*算法。(4)模塊劃分:ttable*table_constructor() 構造一個table實體void*table_destructor(ttable*table) 析構一個類nodeptr_add_to_open(inti) 將節(jié)點添加到OPEN表void_add_to_close(nodeptrptr) 將節(jié)點添加到CLOSE表nodeptr_remove_from_open(nodeptrptr) 將節(jié)點從OPEN表中移除,不刪除nodeptr_find_least_f() 在OPEN表中找出最小的F節(jié)點void_move_to_close(nodeptrptr ) 將節(jié)點從OPEN移到CLOSEintmain() 輸入節(jié)點并運算void_print_path(nodeptrptr) 打印最終路徑(5)數(shù)據(jù)結構:typedefstruct_node{ intf;//f值 intg;//g值 inth;//h值 intlevel;//第幾次走到這個點(important) intparent;//父城市; intcity;//citynum;}node;使用node結構體表述每一個城市。typedefstruct_list{ struct_list*next; struct_list*pre; struct_list*parent;//父城市節(jié)點指針 nodecity_node;}nodelist,*nodeptr;使用nodelist,*nodeptr描述路徑,城市結點與城市結點的關系。typedefstruct_ttable{ struct_ttable*_this;//this指針 nodelistopen;//open表, nodelistclose;//close表,(倉庫) //一些操作 nodeptr(*add_to_open)(int); nodeptr(*find_least_f)(void); void(*move_to_close)(nodeptrptr); void(*print_path)(nodeptrptr);}ttable;Ttable相當一個總表,相當于面向對象的一個類,成員變量有OPEN表和CLOSE表,成員函數(shù)有nodeptr(*add_to_open)(int)、nodeptr(*find_least_f)(void)、void(*move_to_close)(nodeptrptr)、void(*print_path)(nodeptrptr)。(6)源程序:#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<memory.h>#defineMAX_INT99999999typedefstruct_node{ intf; //f值 intg; //g值 inth; //h值 intlevel; //第幾次走到這個點(important) intparent; //父城市; intcity; //citynum;}node;typedefstruct_list{ struct_list*next; struct_list*pre; struct_list*parent;//父城市節(jié)點指針 nodecity_node;}nodelist,*nodeptr;nodeptr_add_to_open(int);nodeptr_find_least_f();void_print_path(nodeptrptr);void_move_to_close(nodeptrptr);nodeptr_remove_from_open(nodeptrptr);void_add_to_close(nodeptrptr);typedefstruct_ttable{ struct_ttable*_this; //this指針 nodelistopen; //open表, nodelistclose; //close表,(倉庫) //一些的操作 nodeptr(*add_to_open)(int); nodeptr(*find_least_f)(void); void(*move_to_close)(nodeptrptr); void(*print_path)(nodeptrptr);}ttable;intmap[100][100];intb_path[100]; //best_path;ttable*table=NULL;ttable*table_constructor(){//構造一個table實體 table=(ttable*)malloc(sizeof(ttable)); memset(table,0,sizeof(ttable)); table->open.next=NULL; table->close.next=NULL; table->add_to_open=_add_to_open; table->find_least_f=_find_least_f; table->move_to_close=_move_to_close; table->print_path=_print_path; table->_this=table; returntable;}void*table_destructor(ttable*table){//析構一個類 if(table!=NULL){ nodeptrp=table->_this->open.next; nodeptrq=NULL; while(p){ q=p->next; free(p); p=q; } p=table->_this->close.next; while(p){ q=p->next; free(p); p=q; } free(table); table=NULL; }}nodeptr_add_to_open(inti){//添加到OPEN表 //放在第一個位置 nodeptrp=NULL; p=(nodeptr)malloc(sizeof(nodelist)); memset(p,0,sizeof(nodelist)); if(p==NULL){ returnp; } p->next=NULL; p->parent=NULL; p->city_node.parent=-1; p->city_node.city=i; p->city_node.level=0; p->city_node.f=0; p->city_node.g=0; p->city_node.h=0; p->next=table->_this->open.next; p->pre=&table->_this->open; if(table->_this->open.next){ table->_this->open.next->pre=p; } table->_this->open.next=p; returnp;}void_add_to_close(nodeptrptr){//添加到close表 ptr->next=table->_this->close.next; ptr->pre=&table->_this->close; if(table->_this->close.next){ table->_this->close.next->pre=ptr; } table->_this->close.next=ptr;}nodeptr_remove_from_open(nodeptrptr){//從OPEN表中移除,不刪除 ptr->pre->next=ptr->next; if(ptr->next) ptr->next->pre=ptr->pre; returnptr;}nodeptr_find_least_f(){//在OPEN表中找出最小的F節(jié)點 intleast=MAX_INT; nodeptrp,q=NULL; p=table->_this->open.next; q=p; while(p){ if(p->city_node.f<least){ q=p; least=p->city_node.f; } p=p->next; } returnq;}void_move_to_close(nodeptrptr){//從OPEN移到CLOSE _remove_from_open(ptr); _add_to_close(ptr);}intmain(){ intnum,min=MAX_INT; inti,j,k,count; inttmpf,tmph,tmpg; ttable*table=(ttable*)table_constructor();//構造 nodeptrptr=NULL,ptr_p=NULL,ptr_c=NULL; nodeptrl_ptr=NULL; //thepointeroflastbestpath; //inputcities do{ printf("請輸入城市節(jié)點個數(shù)n,2<=n<99:\n"); scanf_s("%d",&num); }while(num>=99||num<=1); printf("請輸入各節(jié)點之間的距離矩陣\n\以第一個節(jié)點為出發(fā)城市:\n"); for(i=0;i<num;i++){ for(j=0;j<num;j++){ scanf_s("%d",&map[i][j]); if(i!=j&&min>map[i][j]){ min=map[i][j]; } } } //最后回到A map[num][num]=map[0][0]; for(i=0;i<num;i++){ map[num][i]=map[0][i]; map[i][num]=map[i][0]; } table->add_to_open(0); while(1){ ptr_p=table->find_least_f(); //'當前'最好節(jié)點,從最好節(jié)點回退肯定是最好路徑 table->move_to_close(ptr_p); //movetoclosetableandsaveit; if(l_ptr&&l_ptr!=ptr_p){ //更新最好路徑 while(l_ptr!=NULL){ b_path[l_ptr->city_node.city]=0; l_ptr=l_ptr->parent; } l_ptr=ptr_p; while(l_ptr!=NULL){ b_path[l_ptr->city_node.city]=1; l_ptr=l_ptr->parent; } } l_ptr=ptr_p; for(i=0,count=0;i<=num;i++){ if(b_path[i]) count++; } if(count==num+1){ //allcityinbestpath,Aintwice:FirstAndLast. break; } if(count==num){ //leftone,which?LastA.Becausewehaveneverchangedthevalueofb_path[num]. ptr_c=table->add_to_open(num);//把它添加進開啟列表中 ptr_c->city_node.parent=ptr_p->city_node.city; //把當前作為這的父節(jié)點 ptr_c->city_node.level=ptr_p->city_node.level+1; //他是父節(jié)點的下一層。 ptr_c->parent=ptr_p; ptr_c->city_node.g=ptr_p->city_node.g+map[num][ptr_p->city_node.city]; //g ptr_c->city_node.h=min*(num-ptr_c->city_node.level); //h ptr_c->city_node.f=ptr_c->city_node.g+ptr_c->city_node.h; //f } else{ for(i=0;i<num;i++){ //對鄰近的路徑計算 if(i!=ptr_p->city_node.city &&map[i][j]!=-1){ if(!b_path[i]){ //如果它不在'最短路徑'中 ptr_c=table->add_to_open(i);//把它添加進開啟列表中 ptr_c->city_node.parent=ptr_p->city_node.city; //把當前作為這的父節(jié)點 ptr_c->city_node.level=ptr_p->city_node.level+1; //他是父節(jié)點的下一層。 ptr_c->parent=ptr_p; ptr_c->city_node.g=ptr_p->city_node.g+map[i][ptr_p->city_node.city];//g ptr_c->city_node.h=min*(num-ptr_c->city_node.level); //h ptr_c->city_node.f=ptr_c->city_node.g+ptr_c->city_node.h; //f } } } } } table->print_path(l_ptr); table_destructor(table); return0;}void_print_path(nodeptrptr){//打印路徑 intleast; if(ptr==NULL) return; least=ptr->city_node.f; printf("Thebestpathis:"); printf("A"); ptr=ptr->parent; while(ptr){ printf("%c",ptr->city_node.city+65); ptr=ptr->parent; } printf("\nTheshortestlengthis%d\n",least);}(7)測試數(shù)據(jù):測試數(shù)據(jù)為十個城市兩兩之間的距離矩陣,其中設定A為初始城市:A B C D E F G H I JA 0 260 330 610 770 900 580 650 770 920 B 260 0 520 620 600 690 620 920 980 1160C 330 520 0 430 1090 1210 880 640 860 930 D 610 620 430 0 1220 1300 1180 1080 1300 1370E 770 600 1090 1210 0 190 500 1220 1150 1400F 900 690 1210 1300 190 0 700 1400 1340 1590G 580 620 880 1180 500 700 0 770 650 900 H 650 920 640 1080 1220 1400 770 0 290 290 I 770 980 860 1300 1150 1340 650 290 0 260 J 920 1160 930 1370 1400 1590 900 290 260 0 (8)測試情況:1.輸入城市個數(shù):2.輸入各城市距離矩陣:3.運行結果:最佳路徑為:ABFEGIJHCDA最短距離為:4520km
關于文學助手問題描述:文學研究人員需要統(tǒng)計某篇英文小說中某些形容詞的出現(xiàn)次數(shù)和位置。試寫一個實現(xiàn)這一目標的文字統(tǒng)計系統(tǒng),稱為“文學研究助手”。(2)基本要求:1、英文小說存放在一個文本文件中;2、待統(tǒng)計的額詞匯集合要一次輸入完畢,即統(tǒng)計工作必須在程序的一次運行后全部完成;3、程序的輸出結果是每個詞的出現(xiàn)次數(shù)和出現(xiàn)位置所在的行號;(3)算法思想:利用數(shù)據(jù)結構中串和棧知識,結合功能強大的C++語言實現(xiàn)文學研究助手的設計,該應用軟件設計的核心思想是串的模式匹配算法,采用易于理解且設計簡單的串的樸素模式匹配算法,利用堆棧存儲匹配字符串的位置。開始程序邏輯圖:開始輸入文章到文件中輸入文章到文件中把文件中的文章傳到數(shù)組中把文件中的文章傳到數(shù)組中輸入單詞輸入單詞m1m2。。。mnk=1k=1 k++mk++mk和數(shù)組進行kmp匹配k<=n?k<=n?Y結束N結束main()算法流程圖:main()HELPER()PRINT_R()Init_wordHELPER()PRINT_R()Init_word()InitWord_List()(()Rem_WordList_R()Idex_word()Rem_WordList_R()Idex_word()(4)模塊劃分:get_next(charword[],intW_next[]) //計算字符串word的next值,并存入整數(shù)數(shù)組W_next中。Idex(charword[],SStringS) //當找到匹配串時返回1,否則返回0Idex_word(Word_List&W,SStringS,intRow,Row_Number*R[]) //匹配存在W中各個結點中用戶要查詢的詞匯和從文件讀入的一行字符S,若匹配成功,記錄S的行數(shù)RowHELPER(charname[],Word_List&W) //讀取文件name中的字符,和W中存儲的要統(tǒng)計的詞匯匹配,把name中出現(xiàn)W中的詞匯的行數(shù)存在W中的相應位置。PRINT_R(Word_ListW) //輸出W中的詞匯和各詞匯對應的行數(shù)(5)數(shù)據(jù)結構1.定義了結點數(shù)據(jù)類型和字符串類型typedefcharSString[MAX_ROWWORDS+1];typedefstructRow_Num{ intR; //記錄詞匯出現(xiàn)的行號 structRow_Num*next; //指向下一出現(xiàn)該詞匯的行號}Row;typedefstructWord_Node{ charw[MAX_WORDLETTERS]; //存儲要查詢的詞匯 structRow_Num*row; //指向該詞匯的出現(xiàn)的所有行號 structWord_Node*next; //指向下一個要查詢的詞匯}Word;2.定義了順序棧和鏈式隊列typedefstructWord_Node*Word_List;3.定義了一個抽象數(shù)據(jù)類型ADTWord_List{數(shù)據(jù)對象:D1={ai|ai∈Word_Node,i=1,2,···,n,n≧0}D2={b1|b1∈Row_Num,i=1,2,···,n,n≧0}數(shù)據(jù)關系:R1={<ai-1,ai>,<ai,bi>,<bi-1,bi>|ai-1,ai∈D1,bi-1,bi∈D1,i=2,...,n}InitWord_List(Word_List&W)操作結果:構建一個空的鏈表W。 Init_word(Word_List&W)初始條件:鏈表W存在。操作結果:要求用戶輸入要統(tǒng)計的詞匯,并將各個詞匯存儲在鏈表W中。Rem_WordList_R(Row_Num*R[],Word_List&W)初始條件:鏈表W存在,指針數(shù)組R存在操作結果:用R指針數(shù)組記錄W各結點的row所指向的Row_Number結點的地址。(6)源程序:#include<stdio.h>#include<stdlib.h>#include<iostream>usingnamespacestd;#defineMAX_WORDLETTERS25 //一個詞匯中最多包含的字符數(shù)#defineMAX_ROWWORDS100 //一行最多的字符數(shù)typedefcharSString[MAX_ROWWORDS+1];typedefstructRow_Num{ intR; //記錄某詞匯出現(xiàn)的行號 structRow_Num*next; //指向下一出現(xiàn)該詞匯的行號}Row;typedefstructWord_Node{ charw[MAX_WORDLETTERS]; //存儲所要查詢的詞匯 structRow_Num*row; //指向該詞匯的出現(xiàn)的所有行號 structWord_Node*next; //指向下一個要查詢的詞匯}Word;typedefstructWord_Node*Word_List;voidInitWord_List(Word_List&N){ N=(Word_Node*)malloc(sizeof(Word_Node));}voidInit_word(Word_List&W){ //要求用戶輸入要查詢的詞匯,并儲存在鏈表中返回 Word_Node*word; //定義指向結點的指針,以供在循環(huán)操作中使用 Word_Node*temp; Row_Num*r; word=W; charc; inti=1; printf("請輸入要查詢的詞匯,各個詞匯之間用逗號隔開,如:are,be,we然后回車.:"); while((c=getchar())!='\n'){ //接收用戶的輸入并儲存 if(c==','){ //當遇到兩個詞匯的分隔符號時 word->w[i]='\0'; //給上一詞匯的末尾加上字符串結尾符號 temp=(Word_Node*)malloc(sizeof(Word_Node)); //當一個詞匯結束后,申請空間,用來存儲下一個詞匯 word->next=temp; //指向下一個詞匯 word=temp; i=1; } else{ word->w[0]=i; //用字符數(shù)組的第一個元素記錄字符串的長度 word->w[i]=c; i++; } } word->w[i]='\0'; //對最后一個結點的處理 word->next=NULL; temp=W; while(temp!=NULL){ //給W的每一個結點各申請一個Row_Numbe結點的空間,并讓W各個結點的row指針指向申請的Row_Num r=(Row_Num*)malloc(sizeof(Row_Num)); r->next=NULL; temp->row=r; temp=temp->next; }}voidget_next(charword[],intW_next[]){ //計算字符串word的next值,并存入整數(shù)數(shù)組W_next中 inti=1; W_next[1]=0; intj=0; while(i<(int)word[0]){ if(j==0||word[i]==word[j]){++i; ++j; W_next[i]=j;} else j=W_next[j]; }}intIdex(charword[],SStringS){ //當找到匹配串時返回1,否則返回0 intW_next[MAX_WORDLETTERS]; get_next(word,W_next); inti=1,j=1; while(i<=(int)S[0]&&j<=(int)word[0]){ if(j==0||S[i]==word[j]){++i;++j;} else j=W_next[j]; } if(j>word[0]) return1; else return0;}voidIdex_word(Word_List&W,SStringS,intRow,Row_Num*R[]){ //匹配存在W中各個結點中用戶要查詢的詞匯和從文件讀入的一行字符S,若匹配成功,記錄S的行數(shù)Row Word_Node*t; Row_Num*temp; inti=0; t=W; while(t!=NULL){ //遍歷W中的各個結點 if(Idex(t->w,S)){ //如果用戶查詢的詞匯w與文件中的某行S匹配成功,則記錄行數(shù) R[i]->R=Row; temp=(Row_Num*)malloc(sizeof(Row_Num)); R[i]->next=temp; R[i]=temp; R[i]->next=NULL; } i++; t=t->next; }}voidRem_WordList_R(Row_Num*R[],Word_List&W){ //用R指針數(shù)組記錄W各結點的row所指向的Row_Num結點的地址 Word_Node*t; intj=0; t=W; while(t!=NULL){ R[j]=t->row; j++; t=t->next; }}voidHELPER(charname[],Word_List&W){ SStringS; FILE*f; charc; Row_Num*R[20]; inti=1; intRow=1; Rem_WordList_R(R,W); //用R指針數(shù)組記錄W各結點的row所指向的Row_Num結點的地址 if((f=fopen(name,"r"))==NULL){ //打開用戶指定的文件,如果失敗則程序退出 printf("沒有找到相關文件\n"); system("pause"); exit(0); } while((c=fgetc(f))!=EOF){ //從文件讀入數(shù)據(jù) if(c!='\n'){ //將讀入的數(shù)據(jù)存入字符數(shù)組S中 S[i]=c; i++; } else{ //當讀到換行符時,將S字符串與W中各個結點中的詞匯進行匹配 S[i]='\0'; //將字符數(shù)組S變換為字符串 S[0]=i-1; //用字符數(shù)組的第一個位置記錄字符串的長度 i=1; //將i重新置為1,以供下次循環(huán) Idex_word(W,S,Row,R); //Row為當前S中存儲的內(nèi)容在文學作品中的行數(shù) Row++; //每循環(huán)一次,讀入一行,故每次循環(huán)Row加1 } } S[i]='\0'; //以下四行是當讀到文件結束時,對最后一行進行處理 S[0]=i-1; i=1; Idex_word(W,S,Row,R);}voidPRINT_R(Word_ListW){ Word_Node*temp; Row_Num*num; temp=W; printf("詞匯 行號\n"); while(temp!=NULL){ for(inti=1;temp->w[i]!='\0';i++) //由于w數(shù)組中的第一個元素存儲的是字符串的長度,故字符串實際是從第二個元素開始 printf("%c",temp->w[i]); printf("\t"); num=temp->row; if(num->next==NULL) printf("不存在"); while(num->next!=NULL){ //遍歷輸出所有出現(xiàn)過該查詢詞匯的行數(shù) printf("%d",num->R); num=num->next; } printf("\n"); temp=temp->next; }}intmain(){ Word_ListW; charliterature[20]; //存儲要打開的文件的文件名 InitWord_List(W); //初始化鏈表 Init_word(W); //讓用戶輸入要查詢的詞匯 printf("請輸入需要幫助的文學作品所在的文件的文件名:"); scanf("%s",literature); //獲取要打開的文件的文件名 HELPER(literature,W); //將要查詢的詞匯和文件進行匹配 PRINT_R(W); //輸出結果system("pause"); return0;}(7)測試數(shù)據(jù):And,summer,how(8)測試情況:運行結果如圖:所讀取的文件內(nèi)容如圖:
總結在做程序設計時要考慮全面,不僅要設想好實現(xiàn)各種功能的函數(shù)還要考慮函數(shù)之間的連接,并且怎樣通過函數(shù)之間的關系能很好地把函數(shù)連接起來,還要保證程序能夠很好且有效地運行。當然還有可能遇到一些以前沒有用過的知識,像怎樣在輸入有誤的情況下進行異常處理,這些都要通過函數(shù)的功能來實現(xiàn),而這些也應當考慮到,這些也是小組討論的結果。在做程序設計前還必須把書本上的基本知識搞懂,程序設計會用到書中的類做,但我對類的理解也不是很到位,一些概念的知識還沒有很好的理解,所以還需要借助書中的知識來加深對類的理解。而在編程的過程中我也遇到了很多的困難,不過通過同學的幫助我克服了困難,并漸漸對于程序有更深一步的理解.例如棧的先入后出性質,利用這一性質就是可以實現(xiàn)普通表達式向后綴表達式的的轉化,然后再利用其性質就可以計算后綴表達式。而實際的方法也就是將根據(jù)運算符的等級,將先運算級高的壓入,如果新入的符號的運算級更高則出棧,然后再將高的入。然后就是對A*算法的一些體會:A*算法必須有:一個打開的列表,保存了打開節(jié)點的一個值;每次從中取最小值的節(jié)點打開下批子節(jié)點;一個關閉列表,將已展開的節(jié)點加入其中。參考文獻1.RobertL.Kruse編.DataStructuresandProgramDesigninC++.高等教育出版社,2001.2.《數(shù)據(jù)結構》嚴蔚敏編,清華大學出版社,2000.3.《數(shù)據(jù)結構教程》李春葆編,清華大學出版社,2002.4.譚浩強,《C++程序設計》,北京,清華大學出版社,2006年.李慶(20211766)唐天(202117)吳東(2021)貢獻度:34%33%33%零件的工藝分析零件的功用,結構及特點該零件是鉆床上的主軸,結構是右端長的花鍵軸和中間M36*1.5—6h的齒輪軸以及左端直徑70軸且兩個鍵槽孔組成,通過主軸在花鍵上自由上下移動,和花鍵一起旋轉,以及中間固定的動力輸入齒輪,而且鉆頭的動力是通過花鍵傳遞給主軸,縱向進給要套筒帶動,主軸一起上下就可以,這是立鉆的結構,要是臺鉆還有簡單一些,外面套筒和立鉆基本相同,主軸是直接有花鍵結構連接在皮帶輪上的。鉆床主軸的主要工作表面為花鍵和動力輪如齒輪,主要配合面為直接31.27+-0.015的孔,該零件復雜程度一般,由于鉆床主軸在工作是承受較大的軸向立和徑向力,因此要求有一定的強度,剛度和韌度。主要加工表面及其要求錐孔0.015mm.齒輪軸M36*1.5—6h的齒輪軸,其圓柱度為0.008mm。花鍵直徑為32g6(-0.009——-0.025)的花鍵,其經(jīng)向圓跳度為0.03mm,粗超度值為1.6um中間細長軸直徑為4.(+0.013——+0.002)和直徑(+0.006——-0.005),其粗超度Ra值為0.8um。2.毛坯的選擇2.1確定毛坯的類型,制造方法和尺寸及其公差毛坯的類型為細長軸,可以采用自由鍛造的制造方法,鍛造的尺寸公差等級為CT14,加工余量等級為3級,采用F級機械加工精度鍛造,由于軸的長度為1030mm,直徑為70mm軸的單邊余量為12+-5mm,直徑40mm軸的單邊余量為10+-4mm,直徑32mm的花鍵軸的單邊余量為10+-4mm,直徑為31.27mm的孔的單邊余量為10+-4mm,直徑為50mm的軸肩的單邊余量為10+-4mm,直徑為60mm的軸肩的單邊加工余量為12+-5mm,直徑為30mm的軸的單邊加工余量為10+2.2確定毛坯的技術要求1.錐孔涂色檢查接觸面》=75%2調(diào)制處理28——32HRC3.未注明倒角C1.54材料45Cr2.3繪制毛坯圖根據(jù)圖鉆床主軸零件圖,在各加工表面上加工機械加工余量,繪制毛坯圖,并標注尺寸和技術要求,如圖所示。2.4零件毛坯類型鑄件:鑄件適用于形狀復雜的零件毛坯。其鑄造方法有砂型鑄造,精密鑄造,金屬型鑄造,壓力鑄造等。較常用的是砂型鑄造,當毛坯精度要求低,生產(chǎn)批量較小是,采用木模手工造型法;當毛坯精度要求高,生產(chǎn)批量很大時,采用金屬型機器造型法。鑄件材料有鑄鐵,鑄鋼及銅,鋁等有色合金。鍛件又可分為兩種形式自用鍛件:利用沖擊力或壓力,使金屬在上,下砧板之間,產(chǎn)生塑性變形面獲得所需形狀,尺寸以及內(nèi)部質量鍛件的一種加工方法。自由鍛的特點:工具簡單,通用性強,生產(chǎn)準備周期短。自由鍛件的質量范圍可由不及一千克到二,三百噸,對于大型鍛件,自由鍛是唯一的加工方法,這使得自由鍛在重型機械制造中具有特別重要作用,例如水輪機主軸,大型連桿,重要的齒輪等零件在工作是都承受很大的載荷,要求具有較高的力學性能,常采用自用鍛方法生產(chǎn)毛坯。模鍛件:是由模具的鍛造件,利用模具鍛出精度要求比較高,比較復雜的鍛件。模鍛件的特點應該是針對自由鍛來談才會好一點,自由鍛基本上下不會有模具,只能鍛軸,環(huán)等極其簡單的東西,而模鍛就可以鍛出很多結構的產(chǎn)品,而且可以控制產(chǎn)品的尺寸公差,減少車加工量。型材有熱軋和冷拉兩種。熱軋適用于尺寸較大,精度較低的毛坯;冷拉適用于尺寸較小,精度較高的毛坯。根據(jù)任務書可知零件屬于單件小批量生產(chǎn)類型,查《數(shù)控機床加工工藝》第五十五頁表3-4可知該生產(chǎn)類型的毛坯的制造方法,用鑄件用木模手工型,鍛件用自由鍛。鑄件適用于形狀復雜的零件,可本零件外形不怎么復雜。鑄造由于多種因素影響,常常會出現(xiàn)氣孔,針孔,夾渣,裂紋,凹坑等缺陷。自由鍛的特點:工具簡單,通用性強,生產(chǎn)準備周期短。鍛造的質量范圍比較廣不及一千克到二,三百噸,這兩點很適合本次零件的毛坯鍛造。從合理選擇毛坯,以求得最好的經(jīng)濟效益。綜合零件工藝特性,生產(chǎn)綱領大小及其經(jīng)濟性,確定為自由鍛件進過鍛造后進行正火處理以消除鍛件在鑄造過程中生產(chǎn)的內(nèi)應力,提高材料性能。2.5熱處理金屬熱處理工藝大體可分為整體熱處理,表面熱處理和化學熱處理三大類。根據(jù)加熱介質,加熱溫度和冷卻方法的不同,沒一大類又可區(qū)分為若干不同的熱處理工藝。熱處理是對固態(tài)金屬或合金采用合適方式加熱,保溫和冷卻,以獲得所需要的組織結構與性能的加工方法。整體熱處理是對工件整體加熱,然后以適當?shù)乃俣壤鋮s,獲得需要的金相組織,以改變其整體力學性能的金屬熱處理工藝。工整體熱處理大致有退火,正火,淬火和回火四種基本工藝。退火:是將工件加熱到適當溫度,根據(jù)材料和工件尺寸采用不同的保溫時間,然后進行緩慢冷卻,母的是使金屬累不組織達到后接近平衡狀態(tài),獲得良好的工藝性能和使用性能,或者為進一步淬火作組織準備。正火:是將工件加熱到適宜的溫度后在空氣中冷卻,正火的效果同退火相似,只是得到的組織更細,常用于改善材料的切削性能,也有事用于對一些要求不高的零件作為最終熱處理。淬火:是將工件加熱保溫后,在水,油后其他無機鹽,有機水溶液等淬冷介質中快速冷卻。淬火后剛性變硬,但同時變脆。為了降低鋼件的脆性,將淬火后的鋼件在高于室溫低于650攝氏度的某一適宜溫度進行長時間的保溫,在進行冷卻,這種工藝稱為回火。在本設計中,由于零件有熱處理要求,45Cr的材料硬度不適合切削,所以在毛坯切削以前先把毛坯進行正火處理改善材料的切削性。能并改善毛坯的內(nèi)應力。將毛坯加熱至某一適當溫度(AC線以上30——50攝氏度),保溫一定時間后,再在空氣中緩慢冷卻。得到西華金屬組織晶粒,消除在鍛,軋后的組織缺陷,改善毛坯的機械性能(強度,韌性和塑性)。3.1基準的選擇零件的定位基準選擇1.基準:指零件上用來確定其它點,線,面所依據(jù)的點,線,面。在選擇基準是應該要遵循以下幾個原則:2.基準分類:分為兩大類:設計基準和工藝基準其中,工藝基準又分可分為:1)工序基準:是工序圖上用來確定本工序所加工表面加工后應達到的尺寸,形狀,位置所用的基準。2)定位基準:是在加工中確定工件位置所用的基準。3)測量基準:是裝配是用來確定零件后部件在產(chǎn)品中的相對位置所采用的基準。4)裝配基準:是裝配時用來確定零或部件在產(chǎn)品中的相對位置所采用的基準。3定位基準的選擇粗基準:用未加工過的表面所作的定位基準。精基準:用與加工過的表面所做的定位基準。(1)粗基準的選擇原則選擇粗基準是,主要考利的問題是如何使各道工序均有足夠的加工余量以及加工安裝的穩(wěn)定性。選擇原則為:1)為了保證加工面與不加工面之間的位置要求,應該不加工面為粗基準;2)合理分分配各加工表面的余量3)盡量選用面積大而平整的表面為粗基準,以保證定位準確,加緊可靠。4)粗基準一般不重復使用,同一尺寸方向的粗基準一般只能使用一次。2精基準的選擇原則選擇精基準是,主要考利的問題是如何保證零件的加工精度以及安裝可靠。選擇原則為:1)基準重合原則。即選擇設計基準作為定位基準,以避免基準不重合誤差。2)即盡可能選用統(tǒng)一的定位基準加工各個表面,以保證個表面間的位置精度。3)自為基準原則當精加工某些重要表面是,常用其加工表面本身為定位基準。可以提高加工面本身的尺寸和形狀精度,但不能提高加工面的位置精度。4)互為基準對于用位置精度要求較高的表面,采用互為基準反復加工,更有利于精度的保證。5)保證工件定位基準,加緊可靠,操作方便的原則。在粗車的時候為了保證加工面與不加工面之間的位置要求,應選不加工面為粗基準:粗基準一般不重復使用,同一尺寸方向的粗加工一般只能使用一次,在半精加工和精加工的時候即選擇設計基準作為定位基準,以避免基準不重合誤差。即盡可能選用統(tǒng)一的定位基準加工各個表面,以保證各表面間的位置精度。對于有位置精度要求較高的表面,采用互為基準反復加工,更有利于精度的保證。加工裝備的選擇1.機床的選擇根據(jù)工件的性能,通用查閱《機械制造工藝與裝備》選擇如下的機床車床選用C620,萬能銑床X62W,磨床M2110A。其機床主要參數(shù)在附錄中可以查詢。1.夾具的選擇:換專門化程度可分為一下幾種類型的夾具:1)通用夾具:通用夾具是指已經(jīng)標準化的,在一定范圍內(nèi)可用于加工不同工件的夾具。例如。車床在三爪卡盤和四爪單動卡盤,銑床上的平口鉗,分度頭和回轉工作臺等。這類夾具一般由專業(yè)工廠生產(chǎn),常作為機床附件提供給用戶。其特點是適應性廣,生產(chǎn)效率低,主要使用與單件,小批量的生產(chǎn)中。2)專用夾具:專用夾具是指專為某一個工件的某道工序而專門設計的夾具。其特點是結構緊湊,操作迅速,方便,省力,可以保證較高的加工精度和生產(chǎn)效率,但設計制作周期較長,制作費用也較高。當產(chǎn)品變更是,夾具將由于無法再使用而報廢。只適合于產(chǎn)品固定且批量較大的生產(chǎn)中。3)通用可調(diào)夾具和組成夾具:其特點是夾具的部分元件可以更換,部分裝置可以調(diào)整,以適應不同零件的加工。用于相似零件的成組加工所用的夾具,稱為成組夾具。通用可調(diào)夾具與成組夾具相比,加工對象不很確定,適應范圍更廣一些。4)組合夾具:組合夾具是指按零件的加工要求,由一套事先制造好的標準元件和部件組裝而成的夾具。由專家廠家制造,其特點是靈活多變,萬能性強,制造周期短,元件能反復使用,特別適用于新產(chǎn)品的試制和單件小批生產(chǎn)。5)隨行夾具:隨行夾具是一種在自動線上使用的夾具。該夾具既要起到裝夾工件的作用,又要與工件成為一體沿著自動線從一個工位移動下一個工位,進行不同工序的加工。本設計中以車削加工為主,又是小批量生產(chǎn)類型,根據(jù)任務書得要求設計方案必須注重經(jīng)濟性,盡量選用通用工裝及設備,減少實際生產(chǎn)加工中的外委加工。所以選用組合夾具和通用夾具,由于零件的裝夾用到車床上三爪卡盤,車床附件中心架,銑床上的平口鉗,分度頭和回轉工作臺等。2.刀具的選擇:1)車削加工選用整體式外圓車刀,刀片材料選YT類硬質合金YT類硬質合金的特性如下:硬度高,韌性較差,難鋒利,切削溫度可達900度,因其具有紅硬性,一般不適合冷卻液。A.前角的作用:使刀刃鋒利,便于切削加工和切屑流動。B.后角的作用:減小主后刀面與過度表面的彈性恢復之間的摩擦,減輕刀具磨損。C.主偏角的作用:主要影響刀具耐用度,以加工表面粗糙度及切削力的大小。D.副偏角:主要影響加工表面的粗糙度,影響副切削刃與已加工表面之間的摩擦和刀具的強度。E.刃傾角:主要控制切屑的流動方向。2)銑削加工時,立銑刀。立銑刀的主要參數(shù):刀具直徑為12mm圓角半徑R0總長80mm刃長12.1mm切削刃數(shù)2前傾角零度材料硬質合金3.量具的選擇通常把沒有傳動放大系統(tǒng)的測量工具稱為量具。根據(jù)零件圖樣,在設計中選用:a游標卡尺————————量取輪廓的基本尺寸b偏移表——————————測量軸類零件徑向跳動誤差c對稱度量規(guī)————————檢驗鍵槽的對稱度1.直徑為40(+0.013——+0.002)的軸,其基準為A,即直徑為40(+0.013——+0.002)的軸線。2.直徑為40(+0.006——-0.005)的軸,其基準為B,即直徑為40(+0.006_-0.025)的花鍵軸的軸線。3.直徑為32g6(+0.013——+0.002)的軸,其基準為C,即直徑為32g6(-0.009_-0.025)的花鍵軸的軸線。4.以直徑為40(+0.013——+0.002)的外圓柱面和直徑為40(+0.006——-0.005)的外圓柱面為粗基準,即基準E,確定其同軸度為直徑0.008.擬定機械加工工藝路線根據(jù)各加工表面的加工精度和表面粗糙度的要求,選定如下加工方法,直徑為70mm外圓柱面,直徑為40,50,60,30(-0.2_-0.4)mm的外圓柱面采用車削加工方法,花鍵軸的直徑為32g6(-0.009_-0.025)采用插削,M36*1.5-6h的齒輪軸采用車削加工,兩個環(huán)針形鍵孔采用銑削方法加工,直徑為31.27+-0.015的錐孔采用鉆削,錐孔精度加工采用磨削。4.2擬定加工工藝路線09級模具1-姓名-學號機械加工工藝規(guī)程卡片產(chǎn)品型號零(部)件圖號共1頁第1頁產(chǎn)品名稱或代號零(部)件名稱
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微型太陽能電池板項目可行性研究報告申請報告
- 如何做好物資采購物資管理工作保證生產(chǎn)有序進行
- 供貨協(xié)議蔬菜合同范本
- 個人雇傭保姆合同范本
- 養(yǎng)殖區(qū)租賃合同范本
- 出租簡約家具合同范本
- 2025年度光伏組件生產(chǎn)質量及售后服務合同
- 2020-2025年中國大氣鉛污染治理行業(yè)發(fā)展趨勢及投資前景預測報告
- 醫(yī)療整形合同范本
- 體外試劑購銷合同范本
- 2024年福建漳州人才發(fā)展集團有限公司招聘筆試參考題庫附帶答案詳解
- JTGT F20-2015 公路路面基層施工技術細則
- 山東省食用油(植物油)生產(chǎn)企業(yè)名錄496家
- 《智慧農(nóng)業(yè)》的ppt完整版
- GB∕T 33047.1-2016 塑料 聚合物熱重法(TG) 第1部分:通則
- 經(jīng)濟學市場失靈與政府失靈課件
- 電力業(yè)務許可證豁免證明
- 建筑工程資料歸檔立卷分類表(全)
- 六年級上第二單元知識結構圖
- 溢流堰穩(wěn)定計算
- 馬曉宏_《法語》_第一冊復習(課堂PPT)
評論
0/150
提交評論