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

下載本文檔

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

文檔簡介

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

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

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

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

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ù)對個(gè)數(shù)為: m endl;return 0;1.4【測試及運(yùn)行結(jié)果】1.5【總結(jié)】這個(gè)實(shí)驗(yàn)主要使用兩個(gè)循環(huán)即可完成實(shí)驗(yàn)。

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

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

8、格式,輸出正確的ISBN 號碼包括分隔符“-。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 請輸入標(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【測試及運(yùn)行結(jié)果】2.5【總結(jié)】這個(gè)的關(guān)鍵點(diǎn)在于字符必須減去0才可以進(jìn)行運(yùn)算。題目三文本文件

10、單詞統(tǒng)計(jì)3.1【問題描述】假設(shè)有如下的英文文本文檔:(此處為太原理工大學(xué)學(xué)校簡介英文版)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)符號分隔。3.2【設(shè)計(jì)及分析】要統(tǒng)計(jì)英文文本文件中出現(xiàn)了哪些單詞,就要從文件中讀取字符,讀取出來的連續(xù)英文字符認(rèn)為是一個(gè)單詞,遇空格或標(biāo)點(diǎn)符號單詞結(jié)束。使用線性表記錄單詞以及每個(gè)單詞出現(xiàn)的次數(shù)。線性表中的單詞按字典順序存儲。線性表的順序存儲結(jié)構(gòu)如下:#define LIST_INIT_SIZE 100 /線性表存儲空間的初始分配量#define LISTINCREMENT

15、10 /線性表存儲空間的分配增量typedef structchar word21 /存儲單詞,不超過20 個(gè)字符int count; /單詞出現(xiàn)的次數(shù) ElemType;typedef structElemType *elem; /存儲空間基址int length; /當(dāng)前長度int listsize; /當(dāng)前分配的存儲容量- 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.輸出順序表上存儲的單詞統(tǒng)計(jì)信息:PrintList(SqList &L)輸出文件中每個(gè)單詞出現(xiàn)的次數(shù)以及文件中總的單詞數(shù)(可輸出到文件中)。3.3.2 統(tǒng)計(jì)單詞數(shù)統(tǒng)計(jì)過程如下:1輸入要統(tǒng)計(jì)單詞的文本文件名,翻開相應(yīng)的文件;2初始化順序表;3從文本文件中讀取字符,直到文件結(jié)束。具體描述如下:while (讀文件沒有結(jié)束結(jié)束)過濾單詞前的非字母字符;讀取一個(gè)單詞,以字符串形式存儲在一個(gè)字符數(shù)組中;在線性表中查找該單詞,假設(shè)找到,單詞的出現(xiàn)次數(shù)加1,否

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

18、size; /當(dāng)前分配的存儲容量- 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ò)充表長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以下字母順序來顯示每個(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(請將要檢索的文本文件放入D盤根目錄,然后輸入文件名不用寫后綴:);scanf(%s, &filename);sprintf(filename1, D:%s.txt, filename); getchar();if (fp = fopen(fi

22、lename1, r) = NULL)printf(翻開文件失敗,請輸入文件名與文件路徑n);getchar();exit(0);ch = fgetc(fp);while (ch != EOF)if (ch = A&ch = a&ch = A&ch 20)printf(文章中局部單詞太長不予統(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é)束¥請查看翻開的單詞統(tǒng)計(jì).txt里面便是檢索結(jié)果。n)

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

24、市間的道路,并顯示得到的最小生成樹的代價(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是以鄰接矩陣存儲的圖類型 */typedefstructint adjvertex; /* 某頂點(diǎn)與已構(gòu)造好的局部生成樹的頂點(diǎn)之間權(quán)值最小的頂點(diǎn) */int lowcost; /* 某頂點(diǎn)與已構(gòu)造好的局部生成樹的頂點(diǎn)之間的最小權(quán)值 */ClosEdgeMaxVextexNum; /* 用prim算法求最小生成樹時(shí)的輔助數(shù)組 */void CreatGraph(MGraph *G) /* 建立有向圖G的鄰接矩陣存儲 */int i, j;printf(請輸入頂點(diǎn)數(shù)n :);scanf(%d, &(G-n);/* 輸入頂點(diǎn)數(shù)和邊數(shù) */printf(

26、n請輸頂點(diǎn)字符信息(共%d個(gè)):, G-n);for (i = 0; in; i+)scanf(%d, &(G-vexsi); /* 輸入頂點(diǎn)信息,建立頂點(diǎn)表 */printf(n請輸入鄰接矩陣,不存在那么輸入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的最小生成樹,最小生成樹頂點(diǎn)信息存放在數(shù)組cl

溫馨提示

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

評論

0/150

提交評論