2017太原理工大學軟件課程設計(共17頁)_第1頁
2017太原理工大學軟件課程設計(共17頁)_第2頁
2017太原理工大學軟件課程設計(共17頁)_第3頁
2017太原理工大學軟件課程設計(共17頁)_第4頁
2017太原理工大學軟件課程設計(共17頁)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上 課程設計 課程名稱: 程序設計課程設計 設計名稱: 相鄰數(shù)對、ISBN識別碼 文本文件單詞統(tǒng)計、構(gòu)造可以使n 個城市連接的最小生成樹 專業(yè)班級:軟件1502班 學號: 學生姓名: 馮旭超 指導教師: 呂進來 2017年06月23日專心-專注-專業(yè)太原理工大學課程設計任務書學生姓名專業(yè)班級 軟件 課程名稱程序設計課程設計(Programming Curriculum Design)設計名稱相鄰數(shù)對,ISBN識別碼,文本文件單詞統(tǒng)計等設計周數(shù)2設計任務主要設計參數(shù)1.基本要求掌握C或C+語言、結(jié)構(gòu)化程序和面向?qū)ο蟪绦蛟O計方法、數(shù)據(jù)結(jié)構(gòu)和離散數(shù)學理論知識,熟悉C或C+程序

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

3、程序?qū)崿F(xiàn);按要求撰寫設計報告。主要參考資 料1.程序設計課程設計指導書;2.程序設計技術(shù)、數(shù)據(jù)結(jié)構(gòu)等課程教材;3. 其他自選的相關(guān)資料。學生提交歸檔文件 課程設計報告封面應給出專業(yè)、班級、姓名、學號、指導教師和完成日期。每個設計題目的內(nèi)容包括以下幾項:設計題目、問題描述、問題分析、功能實現(xiàn)、測試實例及運行結(jié)果、源程序清單。注:1.課程設計完成后,學生提交的歸檔文件應按照:封面任務書說明書圖紙的順序進行裝訂上交(大張圖紙不必裝訂)。2.可根據(jù)實際內(nèi)容需要續(xù)表,但應保持原格式不變。指導教師簽名: 日期:2017.6.3目 錄33. 文本文件單詞統(tǒng)計.54. 構(gòu)造可以使n 個城市連接的最小生成樹11

4、 題目一 相鄰數(shù)對1.1【問題描述】給定n 個不同的整數(shù),問這些數(shù)中有多少對整數(shù),它們的值正好相差1。輸入格式輸入的第一行包含一個整數(shù)n,表示給定整數(shù)的個數(shù)。第二行包含所給定的n 個整數(shù)。輸出格式輸出一個整數(shù),表示值正好相差1 的數(shù)對的個數(shù)。1.2【設計及分析】輸入輸出610 2 6 3 7 83測試數(shù)據(jù)輸出說明值正好相差1 的數(shù)對包括(2, 3), (6, 7), (7, 8)。所以輸出:3數(shù)據(jù)約定1<=n<=1000,給定的整數(shù)為不超過10000 的非負整數(shù)。1.3【設計功能的實現(xiàn)】#include "stdafx.h"#include<iostrea

5、m>using namespace std;int main()int n; int m = 0;cout << "請輸入數(shù)字個數(shù):"cin >> n;int A1000;cout << "分別為:n"for (int i = 0; i < n; i+)cin >> 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 <<

6、"相鄰數(shù)對個數(shù)為:" << m << endl;return 0;1.4【測試及運行結(jié)果】1.5【總結(jié)】這個實驗主要使用兩個循環(huán)即可完成實驗。題目二 ISBN識別碼2.1【問題描述】每一本正式出版的圖書都有一個ISBN 號碼與之對應,ISBN 碼包括9 位數(shù)字、1 位識別碼和3位分隔符,其規(guī)定格式如“x-xxx-xxxxx-x”,其中符號“-”是分隔符(鍵盤上的減號),最后一位是識別碼,例如0-670-82162-4 就是一個標準的ISBN 碼。ISBN 碼的首位數(shù)字表示書籍的出版語言,例如0 代表英語;第一個分隔符“-”之后的三位數(shù)字代表出版社,例

7、如670 代表維京出版社;第二個分隔之后的五位數(shù)字代表該書在出版社的編號;最后一位為識別碼。識別碼的計算方法如下:首位數(shù)字乘以1 加上次位數(shù)字乘以2以此類推,用所得的結(jié)果mod 11,所得的余數(shù)即為識別碼,如果余數(shù)為10,則識別碼為大寫字母X。例如ISBN 號碼0-670-82162-4 中的識別碼4 是這樣得到的:對 這9 個數(shù)字,從左至右,分別乘以1,2,9,再求和,即0×1+6×2+2×9=158,然后取158 mod 11 的結(jié)果4 作為識別碼。編寫程序判斷輸入的ISBN 號碼中識別碼是否正確,如果正確,則僅輸出“Right”;如果錯誤,則輸出是正確的IS

8、BN 號碼。輸入格式輸入只有一行,是一個字符序列,表示一本書的ISBN 號碼(保證輸入符合ISBN 號碼的格式要求)。輸出格式輸出一行,假如輸入的ISBN 號碼的識別碼正確,那么輸出“Right”,否則,按照規(guī)定的格式,輸出正確的ISBN 號碼(包括分隔符“-”)。2.2【設計及分析】輸入1 輸出10-670-82162-4 Right輸入2 輸出20-670-82162-0 0-670-82162-42.3【設計功能的實現(xiàn)】#include "stdafx.h"#include<iostream>using namespace std;char a13;int

9、 main()int i = 1, sum = 0; int x;cout << "請輸入標準ISBN碼(X-XXX-XXXXX-X):"for (int i = 1; i <= 13; i+)cin >> ai;sum = a1 * 1 + a3 * 2 + a4 * 3 + a5 * 4 + a7 * 5 + a8 * 6 + a9 * 7 + a10 * 8 + a11 * 9;sum = sum - 45 * '0'x = sum % 11;if (x = 10 && a13 = 'X')

10、cout << "Right" << endl;return 0;else if (x = a13-'0')cout << "Right" << endl;return 0;else for (int i = 1; i <= 12; i+) cout << ai; if (x = 10)cout << "X"<<endl; return 0;else cout << x << endl;return 0;2

11、.4【測試及運行結(jié)果】2.5【總結(jié)】這個的關(guān)鍵點在于字符必須減去0才可以進行運算。題目三 文本文件單詞統(tǒng)計3.1【問題描述】假設有如下的英文文本文檔:(此處為太原理工大學學校簡介英文版)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 earlies

12、t national universities in China. With the tradition 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 na

13、tional higher education promotion program for 100 top 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

14、splendor andperspectives by their wisdom and diligence. 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

15、. Taiyuan University of Technology will be turning itself into aresearch-based university.設計C 或C+程序,統(tǒng)計在這樣的英文文本文件中,出現(xiàn)了多少個單詞,每個單詞出現(xiàn)了幾次。連續(xù)的英文字符都認為單詞(不包括數(shù)字),單詞之間用空格或標點符號分隔。3.2【設計及分析】要統(tǒng)計英文文本文件中出現(xiàn)了哪些單詞,就要從文件中讀取字符,讀取出來的連續(xù)英文字符認為是一個單詞,遇空格或標點符號單詞結(jié)束。使用線性表記錄單詞以及每個單詞出現(xiàn)的次數(shù)。線性表中的單詞按字典順序存儲。線性表的順序存儲結(jié)構(gòu)如下:#define LIST

16、_INIT_SIZE 100 /線性表存儲空間的初始分配量#define LISTINCREMENT 10 /線性表存儲空間的分配增量typedef structchar word21 /存儲單詞,不超過20 個字符int count; /單詞出現(xiàn)的次數(shù) ElemType;typedef structElemType *elem; /存儲空間基址int length; /當前長度int listsize; /當前分配的存儲容量- 4 - Seqlist;3.3【設計功能的實現(xiàn)】3.3.1 實現(xiàn)順序表的基本操作順序表的初始化:InitList(SqList &L)順序表上查找指定的單詞:

17、LocateElem(SqList &L,char *s)若找到,單詞的出現(xiàn)次數(shù)增1,返回0,否則返回該單詞的插入位置。在順序表上插入新的單詞:InsertList(SqList &L,int i,char *s)要求按字典順序有序。新單詞的出現(xiàn)次數(shù)為1.輸出順序表上存儲的單詞統(tǒng)計信息:PrintList(SqList &L)輸出文件中每個單詞出現(xiàn)的次數(shù)以及文件中總的單詞數(shù)(可輸出到文件中)。3.3.2 統(tǒng)計單詞數(shù)統(tǒng)計過程如下:(1)輸入要統(tǒng)計單詞的文本文件名,打開相應的文件;(2)初始化順序表;(3)從文本文件中讀取字符,直到文件結(jié)束。具體描述如下:while (讀文

18、件沒有結(jié)束結(jié)束)過濾單詞前的非字母字符;讀取一個單詞,以字符串形式存儲在一個字符數(shù)組中;在線性表中查找該單詞,若找到,單詞的出現(xiàn)次數(shù)加1,否則返回其插入位置;上一步中,若沒找到,則進行插入操作;處理下一個單詞。(4)關(guān)閉文件,輸出統(tǒng)計結(jié)果。#include "stdafx.h"#include<stdio.h>#include<string.h>#include<stdlib.h>#define LIST_INIT_SIZE 100 /線性表存儲空間的初始分配量#define LISTINCREMENT 10 /線性表存儲空間的分配增量t

19、ypedef structchar word21; /存儲單詞,不超過 20 個字符int count; /單詞出現(xiàn)的次數(shù) ElemType;typedef structElemType *elem; /存儲空間基址int length; /當前長度int listsize; /當前分配的存儲容量- 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-&

20、gt;listsize = LIST_INIT_SIZE; return 1;int LocateElem(SqList *p, char *word)int low, high, mid;low = 0; high = p->length - 1;while (low <= high)mid = (low + high) / 2;if (strcmp(word, p->elemmid.word) = 0)/表中進行二分查找p->elemmid.count+;return 0;else if (strcmp(word, p->elemmid.word) <

21、0)high = mid - 1;elselow = mid + 1;return low + 1;int lnsertList(SqList *p,int i,char *word)int j;ElemType *base;if (p->length >= p->listsize)base = (ElemType*)realloc(p->elem, (p->listsize + LISTINCREMENT)*sizeof(ElemType);if (base = NULL)return 0; p->listsize = p->listsize + L

22、ISTINCREMENT;/擴充表長p->elem = base;for (j = p->length; j >= i; j-)p->elemj = p->elemj - 1;strcpy(p->elemi - 1.word, word);p->elemi - 1.count = 1;p->length+;return 1;void PrintList(SqList *p, int num)FILE *fw;int i;int no = num;fw = fopen("D:單詞計數(shù).txt", "w");f

23、printf(fw, "該文章共有%d個單詞n以下字母順序來顯示每個單詞出現(xiàn)的個數(shù)n*n", no);fprintf(fw, "單詞 出現(xiàn)次數(shù)n", no);for (i = 0; i < p->length; i+)fprintf(fw, "%-24s %-5dn", p->elemi.word, p->elemi.count);fprintf(fw, "*n");fclose(fw);/主函數(shù)void main()SqList L;char word21, ch, filename30,

24、 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(filename1, "r") = NULL)printf("打開文件失敗,請輸入文件名與

25、文件路徑n");getchar();exit(0);ch = fgetc(fp);while (ch != EOF)if (ch >= 'A'&&ch <= 'Z') | (ch >= 'a'&&ch <= 'z')ch = ch >= 'A'&&ch <= 'Z' ? ch + 32 : ch;wordj+ = ch;mark = 1;elseif (mark = 1)if (j > 20)prin

26、tf("文章中部分單詞太長不予統(tǒng)計");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)計結(jié)束¥請查看打開的 單詞統(tǒng)計.txt里面便是檢索結(jié)果。n");PrintList(&L, num);system("start""D:單詞計數(shù).txt");getchar();3.4

27、【測試及運行結(jié)果】3.5【總結(jié)】這個實驗要熟悉線性表的各個操作,才能做出來完整的程序。題目四 構(gòu)造可以使n 個城市連接的最小生成樹4.1【問題描述】給定一個地區(qū)的n 個城市間的距離網(wǎng),用Prim 算法或Kruskal 算法建立最小生成樹,并計算得到的最小生成樹的代價。4.2【設計及分析】1、城市間的距離網(wǎng)采用鄰接矩陣表示,鄰接矩陣的存儲結(jié)構(gòu)定義采用課本中給出的定義,若兩個城市之間不存在道路,則將相應邊的權(quán)值設為自己定義的無窮大值。2、要求在屏幕上顯示得到的最小生成樹中包括了哪些城市間的道路,并顯示得到的最小生成樹的代價。3、表示城市間距離網(wǎng)的鄰接矩陣(要求至少6 個城市,10 條邊)。4.3【

28、設計功能的實現(xiàn)】#include"stdafx.h"#include<stdlib.h>#include<stdio.h>#include<iostream>using namespace std;#define MaxVextexNum 30 /* 最大頂點數(shù)為30 */*#define INFINITY 1000 定義一個權(quán)值的最大值 */typedef structint vexsMaxVextexNum; /* 頂點表 */int arcsMaxVextexNumMaxVextexNum; /* 鄰接矩陣,即邊表 */int n;

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

30、t;, &(G->n);/* 輸入頂點數(shù)和邊數(shù) */printf("n請輸頂點字符信息(共%d個):", G->n);for (i = 0; i<G->n; i+)scanf("%d", &(G->vexsi); /* 輸入頂點信息,建立頂點表 */printf("n請輸入鄰接矩陣,不存在則輸入1000n");for (i = 0; i < G->n; i+)for (j = 0; j < G->n; j+)cin >> G->arcsij;printf("此連鄰接矩陣為(1000為不存在):n");for (i = 0; i<G->n; i+)for (j = 0; j<G->n; j+)printf("%8d", G->arcsij);printf("n");void PRIM(MGraph G, int u, ClosEdge closedge)/* 從第u個頂點出發(fā)構(gòu)造圖G的最小生成樹,最小生成樹頂點信息存放在數(shù)組c

溫馨提示

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

評論

0/150

提交評論