2023太原理工大學(xué)軟件課程設(shè)計(jì)_第1頁(yè)
2023太原理工大學(xué)軟件課程設(shè)計(jì)_第2頁(yè)
2023太原理工大學(xué)軟件課程設(shè)計(jì)_第3頁(yè)
2023太原理工大學(xué)軟件課程設(shè)計(jì)_第4頁(yè)
2023太原理工大學(xué)軟件課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 課程設(shè)計(jì)課程名稱(chēng): 程序設(shè)計(jì)課程設(shè)計(jì)設(shè)計(jì)名稱(chēng):相鄰數(shù)對(duì)、ISBN識(shí)別碼 文本文件單詞統(tǒng)計(jì)、構(gòu)造可以使n 個(gè)城市連接的最小生成樹(shù)專(zhuān)業(yè)班級(jí):軟件1502班 學(xué)號(hào):2023005509學(xué)生姓名:馮旭超指導(dǎo)教師:呂進(jìn)來(lái) 2023年06月23日太原理工大學(xué)課程設(shè)計(jì)任務(wù)書(shū)學(xué)生姓名專(zhuān)業(yè)班級(jí) 軟件 課程名稱(chēng)程序設(shè)計(jì)課程設(shè)計(jì)Programming Curriculum Design設(shè)計(jì)名稱(chēng)相鄰數(shù)對(duì),ISBN識(shí)別碼,文本文件單詞統(tǒng)計(jì)等設(shè)計(jì)周數(shù)2設(shè)計(jì)任務(wù)主要設(shè)計(jì)參數(shù)1.根本要求掌握C或C+語(yǔ)言、結(jié)構(gòu)化程序和面向?qū)ο蟪绦蛟O(shè)計(jì)方法、數(shù)據(jù)結(jié)構(gòu)和離散數(shù)學(xué)理論知識(shí),熟悉C或C+程序的開(kāi)發(fā)環(huán)境及調(diào)試過(guò)程,穩(wěn)固和加深對(duì)理論課中

2、知識(shí)的理解,提高學(xué)生對(duì)所學(xué)知識(shí)的綜合運(yùn)用能力。2.培養(yǎng)學(xué)生以下技能培養(yǎng)學(xué)生查閱參考資料、手冊(cè)的自學(xué)能力,通過(guò)獨(dú)立思考深入鉆研問(wèn)題,學(xué)會(huì)自己分析、解決問(wèn)題。通過(guò)對(duì)所選題目分析,找出解決方法,設(shè)計(jì)算法,編制程序與調(diào)試程序。能熟練調(diào)試程序,在教師的指導(dǎo)下,完成課題任務(wù)。按課程設(shè)計(jì)報(bào)告的要求撰寫(xiě)設(shè)計(jì)報(bào)告。設(shè)計(jì)內(nèi)容設(shè)計(jì)要求1.設(shè)計(jì)內(nèi)容相鄰數(shù)對(duì);ISBN識(shí)別碼;文本文件單詞統(tǒng)計(jì);構(gòu)造可以使n個(gè)城市連接的最小生成樹(shù);送貨;學(xué)生信息管理系統(tǒng)2.設(shè)計(jì)要求至少完成上述設(shè)計(jì)內(nèi)容中的4個(gè)設(shè)計(jì)題目;對(duì)每個(gè)題目要給出設(shè)計(jì)方案、功能模塊劃分、算法思想;選擇使用的數(shù)據(jù)結(jié)構(gòu);給出題目的程序?qū)崿F(xiàn);按要求撰寫(xiě)設(shè)計(jì)報(bào)告。主要參考資

3、料1.?程序設(shè)計(jì)課程設(shè)計(jì)?指導(dǎo)書(shū);2.?程序設(shè)計(jì)技術(shù)?、?數(shù)據(jù)結(jié)構(gòu)?等課程教材;3. 其他自選的相關(guān)資料。學(xué)生提交歸檔文件 課程設(shè)計(jì)報(bào)告封面應(yīng)給出專(zhuān)業(yè)、班級(jí)、姓名、學(xué)號(hào)、指導(dǎo)教師和完成日期。每個(gè)設(shè)計(jì)題目的內(nèi)容包括以下幾項(xiàng):設(shè)計(jì)題目、問(wèn)題描述、問(wèn)題分析、功能實(shí)現(xiàn)、測(cè)試實(shí)例及運(yùn)行結(jié)果、源程序清單。注:1.課程設(shè)計(jì)完成后,學(xué)生提交的歸檔文件應(yīng)按照:封面任務(wù)書(shū)說(shuō)明書(shū)圖紙的順序進(jìn)行裝訂上交大張圖紙不必裝訂。2.可根據(jù)實(shí)際內(nèi)容需要續(xù)表,但應(yīng)保持原格式不變。指導(dǎo)教師簽名:日期:目錄 TOC o 1-3 h z u HYPERLINK l _Toc4851637891.相鄰數(shù)對(duì) PAGEREF _Toc485

4、163789 h 1HYPERLINK l _Toc4851637902.ISBN識(shí)別碼33. 文本文件單詞統(tǒng)計(jì).54. 構(gòu)造可以使n 個(gè)城市連接的最小生成樹(shù)11題目一 相鄰數(shù)對(duì)1.1【問(wèn)題描述】給定n 個(gè)不同的整數(shù),問(wèn)這些數(shù)中有多少對(duì)整數(shù),它們的值正好相差1。輸入格式輸入的第一行包含一個(gè)整數(shù)n,表示給定整數(shù)的個(gè)數(shù)。第二行包含所給定的n 個(gè)整數(shù)。輸出格式輸出一個(gè)整數(shù),表示值正好相差1 的數(shù)對(duì)的個(gè)數(shù)。1.2【設(shè)計(jì)及分析】輸入輸出610 2 6 3 7 83測(cè)試數(shù)據(jù)輸出說(shuō)明值正好相差1 的數(shù)對(duì)包括(2, 3), (6, 7), (7, 8)。所以輸出:3數(shù)據(jù)約定1=n=1000,給定的整數(shù)為不超過(guò)

5、10000 的非負(fù)整數(shù)。1.3【設(shè)計(jì)功能的實(shí)現(xiàn)】#includestdafx.h#includeusingnamespace std;int main()int n; int m = 0;cout n;int A1000;cout 分別為:n;for (int i = 0; i Ai;for (int i = 0; i n; i+)for (int j = i + 1; j n; j+)if (Ai - Aj) = 1) | (Aj - Ai) = 1)m+;cout 相鄰數(shù)對(duì)個(gè)數(shù)為: m endl;return 0;1.4【測(cè)試及運(yùn)行結(jié)果】1.5【總結(jié)】這個(gè)實(shí)驗(yàn)主要使用兩個(gè)循環(huán)即可完成實(shí)驗(yàn)。

6、題目二 ISBN識(shí)別碼2.1【問(wèn)題描述】每一本正式出版的圖書(shū)都有一個(gè)ISBN 號(hào)碼與之對(duì)應(yīng),ISBN 碼包括9 位數(shù)字、1 位識(shí)別碼和3位分隔符,其規(guī)定格式如“x-xxx-xxxxx-x,其中符號(hào)“-是分隔符鍵盤(pán)上的減號(hào),最后一位是識(shí)別碼,例如0-670-82162-4 就是一個(gè)標(biāo)準(zhǔn)的ISBN 碼。ISBN 碼的首位數(shù)字表示書(shū)籍的出版語(yǔ)言,例如0 代表英語(yǔ);第一個(gè)分隔符“-之后的三位數(shù)字代表出版社,例如670 代表維京出版社;第二個(gè)分隔之后的五位數(shù)字代表該書(shū)在出版社的編號(hào);最后一位為識(shí)別碼。識(shí)別碼的計(jì)算方法如下:首位數(shù)字乘以1 加上次位數(shù)字乘以2以此類(lèi)推,用所得的結(jié)果mod 11,所得的余數(shù)即

7、為識(shí)別碼,如果余數(shù)為10,那么識(shí)別碼為大寫(xiě)字母X。例如ISBN 號(hào)碼0-670-82162-4 中的識(shí)別碼4 是這樣得到的:對(duì)067082162 這9 個(gè)數(shù)字,從左至右,分別乘以1,2,9,再求和,即01+62+29=158,然后取158 mod 11 的結(jié)果4 作為識(shí)別碼。編寫(xiě)程序判斷輸入的ISBN 號(hào)碼中識(shí)別碼是否正確,如果正確,那么僅輸出“Right;如果錯(cuò)誤,那么輸出是正確的ISBN 號(hào)碼。輸入格式輸入只有一行,是一個(gè)字符序列,表示一本書(shū)的ISBN 號(hào)碼保證輸入符合ISBN 號(hào)碼的格式要求。輸出格式輸出一行,假設(shè)輸入的ISBN 號(hào)碼的識(shí)別碼正確,那么輸出“Right,否那么,按照規(guī)定的

8、格式,輸出正確的ISBN 號(hào)碼包括分隔符“-。2.2【設(shè)計(jì)及分析】輸入1 輸出10-670-82162-4 Right輸入2 輸出20-670-82162-0 0-670-82162-42.3【設(shè)計(jì)功能的實(shí)現(xiàn)】#includestdafx.h#includeusingnamespace std;char a13;int main()int i = 1, sum = 0; int x;cout 請(qǐng)輸入標(biāo)準(zhǔn)ISBN碼X-XXX-XXXXX-X:;for (int i = 1; i ai;sum = a1 * 1 + a3 * 2 + a4 * 3 + a5 * 4 + a7 * 5 + a8 *

9、6 + a9 * 7 + a10 * 8 + a11 * 9;sum = sum - 45 * 0;x = sum % 11;if (x = 10 & a13 = X)cout Right endl;return 0;elseif (x = a13-0)cout Right endl;return 0;elsefor (int i = 1; i = 12; i+) cout ai; if (x = 10)cout Xendl; return 0;else cout x endl;return 0;2.4【測(cè)試及運(yùn)行結(jié)果】2.5【總結(jié)】這個(gè)的關(guān)鍵點(diǎn)在于字符必須減去0才可以進(jìn)行運(yùn)算。題目三文本文件

10、單詞統(tǒng)計(jì)3.1【問(wèn)題描述】假設(shè)有如下的英文文本文檔:(此處為太原理工大學(xué)學(xué)校簡(jiǎn)介英文版)TAIYUAN UNIVERSITY OF TECHNOLOGYTaiyuan University of Technology (TUT) has its history traced all the way back to the Western Learning School ofShanxi Grand Academy (1902), which was one of the three earliest national universities in China. With the tradit

11、ion anddevelopment of over 100 years, TUT is now a general university with engineering as the major, sciences and technologyintegrated and coordinate development of multiple disciplines. It is a university that is included in the “Project 211 the national higher education promotion program for 100 t

12、op universities in China.Recollecting the centennial history, generations of TUT have created its mission and glory of a century with responsibilityand confidence; expecting the promising tomorrow, over 30,000 TUT students and faculty are producing splendor andperspectives by their wisdom and dilige

13、nce. In the new era, Taiyuan University of Technology, following the Conceptionof Scientific Development, is determined to further the reformation on education, to reinforce the teaching management soas to upgrade its teaching and researching levels. Taiyuan University of Technology will be turning

14、itself into aresearch-based university.設(shè)計(jì)C 或C+程序,統(tǒng)計(jì)在這樣的英文文本文件中,出現(xiàn)了多少個(gè)單詞,每個(gè)單詞出現(xiàn)了幾次。連續(xù)的英文字符都認(rèn)為單詞(不包括數(shù)字),單詞之間用空格或標(biāo)點(diǎn)符號(hào)分隔。3.2【設(shè)計(jì)及分析】要統(tǒng)計(jì)英文文本文件中出現(xiàn)了哪些單詞,就要從文件中讀取字符,讀取出來(lái)的連續(xù)英文字符認(rèn)為是一個(gè)單詞,遇空格或標(biāo)點(diǎn)符號(hào)單詞結(jié)束。使用線性表記錄單詞以及每個(gè)單詞出現(xiàn)的次數(shù)。線性表中的單詞按字典順序存儲(chǔ)。線性表的順序存儲(chǔ)結(jié)構(gòu)如下:#define LIST_INIT_SIZE 100 /線性表存儲(chǔ)空間的初始分配量#define LISTINCREMENT

15、10 /線性表存儲(chǔ)空間的分配增量typedef structchar word21 /存儲(chǔ)單詞,不超過(guò)20 個(gè)字符int count; /單詞出現(xiàn)的次數(shù) ElemType;typedef structElemType *elem; /存儲(chǔ)空間基址int length; /當(dāng)前長(zhǎng)度int listsize; /當(dāng)前分配的存儲(chǔ)容量- 4 - Seqlist;3.3【設(shè)計(jì)功能的實(shí)現(xiàn)】3.3.1 實(shí)現(xiàn)順序表的根本操作順序表的初始化:InitList(SqList &L)順序表上查找指定的單詞:LocateElem(SqList &L,char *s)假設(shè)找到,單詞的出現(xiàn)次數(shù)增1,返回0,否那么返回該單

16、詞的插入位置。在順序表上插入新的單詞:InsertList(SqList &L,int i,char *s)要求按字典順序有序。新單詞的出現(xiàn)次數(shù)為1.輸出順序表上存儲(chǔ)的單詞統(tǒng)計(jì)信息:PrintList(SqList &L)輸出文件中每個(gè)單詞出現(xiàn)的次數(shù)以及文件中總的單詞數(shù)(可輸出到文件中)。3.3.2 統(tǒng)計(jì)單詞數(shù)統(tǒng)計(jì)過(guò)程如下:1輸入要統(tǒng)計(jì)單詞的文本文件名,翻開(kāi)相應(yīng)的文件;2初始化順序表;3從文本文件中讀取字符,直到文件結(jié)束。具體描述如下:while (讀文件沒(méi)有結(jié)束結(jié)束)過(guò)濾單詞前的非字母字符;讀取一個(gè)單詞,以字符串形式存儲(chǔ)在一個(gè)字符數(shù)組中;在線性表中查找該單詞,假設(shè)找到,單詞的出現(xiàn)次數(shù)加1,否

17、那么返回其插入位置;上一步中,假設(shè)沒(méi)找到,那么進(jìn)行插入操作;處理下一個(gè)單詞。4關(guān)閉文件,輸出統(tǒng)計(jì)結(jié)果。#includestdafx.h#include#include#include#defineLIST_INIT_SIZE 100 /線性表存儲(chǔ)空間的初始分配量#defineLISTINCREMENT 10 /線性表存儲(chǔ)空間的分配增量typedefstructchar word21; /存儲(chǔ)單詞,不超過(guò) 20 個(gè)字符int count; /單詞出現(xiàn)的次數(shù) ElemType;typedefstructElemType *elem; /存儲(chǔ)空間基址int length; /當(dāng)前長(zhǎng)度int list

18、size; /當(dāng)前分配的存儲(chǔ)容量- 4 - SqList;int lnitList(SqList *p) p-elem = (ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if (p-elem = NULL)return 0;p-length = 0;p-listsize = LIST_INIT_SIZE; return 1;int LocateElem(SqList *p, char *word)int low, high, mid;low = 0; high = p-length - 1;while (low elemmid.word)

19、= 0)/表中進(jìn)行二分查找p-elemmid.count+;return 0;elseif (strcmp(word, p-elemmid.word) length = p-listsize)base = (ElemType*)realloc(p-elem, (p-listsize + LISTINCREMENT)*sizeof(ElemType);if (base = NULL)return 0; p-listsize = p-listsize + LISTINCREMENT;/擴(kuò)充表長(zhǎng)p-elem = base;for (j = p-length; j = i; j-)p-elemj =

20、p-elemj - 1;strcpy(p-elemi - 1.word, word);p-elemi - 1.count = 1;p-length+;return 1;void PrintList(SqList *p, intnum)FILE *fw;int i;int no = num;fw = fopen(D:單詞計(jì)數(shù).txt, w);fprintf(fw, 該文章共有%d個(gè)單詞n以下字母順序來(lái)顯示每個(gè)單詞出現(xiàn)的個(gè)數(shù)n*n, no);fprintf(fw, 單詞出現(xiàn)次數(shù)n, no);for (i = 0; i length; i+)fprintf(fw, %-24s %-5dn, p-el

21、emi.word, p-elemi.count);fprintf(fw, *n);fclose(fw);/主函數(shù)void main()SqList L;char word21, ch, filename30, filename150; int num = 0, i, j = 0, mark = 0;FILE *fp;lnitList(&L);printf(請(qǐng)將要檢索的文本文件放入D盤(pán)根目錄,然后輸入文件名不用寫(xiě)后綴:);scanf(%s, &filename);sprintf(filename1, D:%s.txt, filename); getchar();if (fp = fopen(fi

22、lename1, r) = NULL)printf(翻開(kāi)文件失敗,請(qǐng)輸入文件名與文件路徑n);getchar();exit(0);ch = fgetc(fp);while (ch != EOF)if (ch = A&ch = a&ch = A&ch 20)printf(文章中局部單詞太長(zhǎng)不予統(tǒng)計(jì));num+;wordj = 0;mark = 0;j = 0;i = LocateElem(&L, word);if (i 0)lnsertList(&L, i, word);ch = fgetc(fp);fclose(fp);printf(統(tǒng)計(jì)結(jié)束¥請(qǐng)查看翻開(kāi)的單詞統(tǒng)計(jì).txt里面便是檢索結(jié)果。n)

23、;PrintList(&L, num);system(startD:單詞計(jì)數(shù).txt);getchar();3.4【測(cè)試及運(yùn)行結(jié)果】3.5【總結(jié)】這個(gè)實(shí)驗(yàn)要熟悉線性表的各個(gè)操作,才能做出來(lái)完整的程序。題目四構(gòu)造可以使n 個(gè)城市連接的最小生成樹(shù)4.1【問(wèn)題描述】給定一個(gè)地區(qū)的n 個(gè)城市間的距離網(wǎng),用Prim 算法或Kruskal 算法建立最小生成樹(shù),并計(jì)算得到的最小生成樹(shù)的代價(jià)。4.2【設(shè)計(jì)及分析】1、城市間的距離網(wǎng)采用鄰接矩陣表示,鄰接矩陣的存儲(chǔ)結(jié)構(gòu)定義采用課本中給出的定義,假設(shè)兩個(gè)城市之間不存在道路,那么將相應(yīng)邊的權(quán)值設(shè)為自己定義的無(wú)窮大值。2、要求在屏幕上顯示得到的最小生成樹(shù)中包括了哪些城

24、市間的道路,并顯示得到的最小生成樹(shù)的代價(jià)。3、表示城市間距離網(wǎng)的鄰接矩陣要求至少6 個(gè)城市,10 條邊。4.3【設(shè)計(jì)功能的實(shí)現(xiàn)】#includestdafx.h#include#include#includeusingnamespace std;#defineMaxVextexNum 30 /* 最大頂點(diǎn)數(shù)為30 */*#define INFINITY 1000 定義一個(gè)權(quán)值的最大值 */typedefstructint vexsMaxVextexNum; /* 頂點(diǎn)表 */int arcsMaxVextexNumMaxVextexNum; /* 鄰接矩陣,即邊表 */int n; /* 頂點(diǎn)

25、數(shù)和邊數(shù) */MGraph; /* MGragh是以鄰接矩陣存儲(chǔ)的圖類(lèi)型 */typedefstructint adjvertex; /* 某頂點(diǎn)與已構(gòu)造好的局部生成樹(shù)的頂點(diǎn)之間權(quán)值最小的頂點(diǎn) */int lowcost; /* 某頂點(diǎn)與已構(gòu)造好的局部生成樹(shù)的頂點(diǎn)之間的最小權(quán)值 */ClosEdgeMaxVextexNum; /* 用prim算法求最小生成樹(shù)時(shí)的輔助數(shù)組 */void CreatGraph(MGraph *G) /* 建立有向圖G的鄰接矩陣存儲(chǔ) */int i, j;printf(請(qǐng)輸入頂點(diǎn)數(shù)n :);scanf(%d, &(G-n);/* 輸入頂點(diǎn)數(shù)和邊數(shù) */printf(

26、n請(qǐng)輸頂點(diǎn)字符信息(共%d個(gè)):, G-n);for (i = 0; in; i+)scanf(%d, &(G-vexsi); /* 輸入頂點(diǎn)信息,建立頂點(diǎn)表 */printf(n請(qǐng)輸入鄰接矩陣,不存在那么輸入1000n);for (i = 0; i n; i+)for (j = 0; j n; j+)cin G-arcsij;printf(此連鄰接矩陣為1000為不存在:n);for (i = 0; in; i+)for (j = 0; jn; j+)printf(%8d, G-arcsij);printf(n);void PRIM(MGraphG, intu, ClosEdgeclosedge)/* 從第u個(gè)頂點(diǎn)出發(fā)構(gòu)造圖G的最小生成樹(shù),最小生成樹(shù)頂點(diǎn)信息存放在數(shù)組cl

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論