家族關系查詢系統(tǒng)_第1頁
家族關系查詢系統(tǒng)_第2頁
家族關系查詢系統(tǒng)_第3頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設計說明書題目:家族關系查詢系統(tǒng)姓 名:院(系): 信息工程學院專業(yè)班級:16級計算機科學與技術二班學 號:指導教師:成 績:時間:2018年1月2日至 2018年1月11日課程設計任務書題目家族關系查詢系統(tǒng)專業(yè)、班級16級計算機科學與技術二班 學號 _ 基本要求:1、建立家族關系并能存儲到文件;2、對于建立的家族關系能夠遍歷家族成員,輸入兩個人的名字能夠確定二人的關系;3、實現(xiàn)家族成員的添加。4、可以查詢家族成員的雙親、祖先、兄弟、孩子和后代等信息。主要參考資料:【1】嚴蔚敏、吳偉民.數據結構(C語言版).清華大學【2】滕國文.數據結構課程設計.清華大學【3】譚浩強.C程序設計(第四版)

2、.清華大學完 成 期 限:指導教師簽名:課程負責人簽名:1、課程設計介紹1.1課程設計容41.2課程設計要求 41.3課程設計性質 41.4課程設計目的 42、 課程設計原理 42.1課程設計題目分析程序執(zhí)行的命令包括52.12程序中的四大模塊52.2課程設計原理圖分析 52.2.1 功能模塊圖52.2.2 流程圖分析 63、數據結構分析93.1存儲結構93.2算法描述104、調試與分析 104.1調試過程104.2執(zhí)行過程 114.3運行時的界面12結束語 1416參考文獻 15 附錄1課程設計介紹1.1、課程設計容運用隊列的存儲結構,構建家族關系樹。輸入家族的名稱,以此名 稱作文件的名稱,

3、建立文本文件。按層次輸入結點信息,在文件中每個 人的信息占一行,同時保存到樹的存儲結構中。輸入一個結點,若此結 點有多個兄弟,以“”作為兄弟結點的結束標志,結點若無孩子,直接 以“”作為標志,依次輸入各個結點的信息,以“ #”作為結束的標志。 輸 入結點 的序歹U 為 zhangxianzu, zhangguoyu, zhangguojun, zhangguoqiang,, zhangyongzhi, zhangyongrui, zhangyongming, zhangwende zhangwenjia,,#。建立家族關系樹后,對樹進行一些基本操作。首先,對家族關系樹 遍歷,確定家族成員已存入

4、文件,并檢驗是否成功建立家族關系樹。輸入兩個人的,判斷此二人是否屬于此家族,若屬于就判斷此二人 的關系。最后,能夠成功退出家族關系查詢系統(tǒng)。1. 2、課程設計要求構建家族關系樹。使用隊列的存儲結構,建立家族關系查詢系統(tǒng)樹。 采用指針數組作為隊列,保存結點輸入的地址。能夠遍歷家族關系樹。遍歷家族成員,檢驗輸出信息是否滿足要求。成功地判斷所輸入的兩個人是否是家族中得人,如果屬于就判斷兩人 的關系。最后,若選擇退出,能夠成功退出家族關系查詢系統(tǒng)。否則,繼續(xù)輸 入相關操作。1. 3、課程設計的性質通過數據結構的學習,使自己對軟件編程能力有一定的提高。數據結構學習是 鍛煉學生在進一步掌握模塊化、結構化程

5、序設計的方法的同時,培養(yǎng)自己運用已學 知識分析問題、解決問題及編寫實用程序的能力,通過對線性化、層次化、網絡化 數據結構的了解進一步掌握自然數據的結構方式及組織方式,讓自己深入體會存儲 在計算機中的數據及程序,如何運用數據實現(xiàn)編程。加深自己對該課程所學容的進一步的理解與鞏固,是將計算機課程與實際問題相聯(lián)接的關鍵步驟。通過課程設計,能夠提高自己分析問題、解決問題,從而運用 所學知識解決實際問題的能力。1.4、課程設計的目的主要目的如下:1、培養(yǎng)學生運用算法與數據結構的基本知識解決實際編程中的數據結 構設計和算法設計問題。2、培養(yǎng)學生獨立設計程序與解決問題的能力,培養(yǎng)學生團隊協(xié)作集成 程序模塊及調

6、試能力。3、培養(yǎng)學生初步的軟件設計及軟件測試的能力2. 課程設計原理2.1、課程設計題目分析演示程序以用戶和計算機的對話的方式執(zhí)行,即在計算機終端上顯示 “提示信息”之后,由用戶在鍵盤上輸入相應的數據(即每個人都所持的密 碼),每個人的序號由程序自動分配。程序執(zhí)行的命令包括:(1)構造家族關系查詢系統(tǒng)(使用樹的存儲結構);(2)根據提示及使用者的需求,用戶選擇相關選項,輸入相關數據;(3)執(zhí)行用戶所選的選項對應的程序,滿足用戶需求,實現(xiàn)相關功能;(4)退出家族關系查詢系統(tǒng),結束操作。程序中的四個大模塊(本程序共有六個模塊,其中查找模塊又分為六個):(1)家族成員信息錄入(構造家族關系查詢系統(tǒng))

7、模塊。此模塊將對家 族關系樹初始化,根據用戶輸入的信息構造家族關系查詢系統(tǒng)樹,并提醒用 戶再次輸入數據以便后續(xù)程序的使用。(2)遍歷家族成員模塊。此模塊將滿足用戶遍歷家族關系查詢系統(tǒng)樹中 的各個成員。另外,可以檢測用戶輸入的信息是否正確,以及瀏覽家族中的 人員。(3)確定兩個家族成員的關系模塊。由用戶輸入兩個人的名字,此模塊 實現(xiàn)在整個程序中查找,確定是否有用戶輸入的人。如果有,則輸出兩人的 之間的關系(即他們相差幾代)。(4)主程序中的退出模塊。根據用戶輸入的信息管理控制變量,根據控 制變量判斷是否退出程序。2.2、課程設計原理圖分析、功能模塊圖確定家族成員中兩人關系222、流程圖分析根據1

8、、此部分是家族關系查詢系統(tǒng)的主函數。首先,初始化程序中所需要 變量;在輸出提示性的語句,等待用戶輸入將要進行的操作的選項, 用戶輸入的數據調用相關的函數。2、此部分是創(chuàng)建家族關系樹函數,并且保存到文件。用隊列的存儲結構 輔助創(chuàng)建樹。輸入成員信息并存入文件,開始建樹將文件中的一個結點入隊strO!= ' #'str0!='N root=NULL建立樹的頭結點取隊頭作結點的雙親,flag=O接雙親結點的左孩子接雙親結點的右孩子Nstart2=03、此部分是遍歷家族成員函數。采用遞歸的思想,對家族關系樹進行遍 歷。4、此部分是確定家族成員中兩人關系的函數。由用戶輸入兩個人的,

9、系統(tǒng)調用Confirm ()函數判斷此二人是否屬于此家族。若屬于,判斷兩 人的關系。3、數據結構分析3.1、存儲結構根據要求首先應該建立一個隊列,用隊列的存儲結構輔助實現(xiàn)家族關系樹的建立。樹是n (>=0)個結點的有限集。在任意一棵非空樹中:(1)有且僅 有一個特定的稱為根的結點;(2)當n>1時,其余結點可分為m個互不 相交的有限集,其中每個集合本身又是一棵樹。設置結構體存儲節(jié)點:用結構體存儲每一個家族成員的基本信息,及結點的左右孩子指針和雙親指針;再使用結構體存儲表示隊列結點。樹的結點結構體:typedef struct TNodechar n ameM;struct TNod

10、e *pare nt;struct TNode *lchild;struct TNode *rchild; Tree;隊列結點結構體:typedef struct NodeTree *i nfo;struct Node *n ext;Node;typedef structstruct Node *front;struct Node *rear;LQ;3.2、算法描述1、用戶進入家族關系查詢系統(tǒng),根據提示輸入要進行的操作所對應 的選項,用戶輸入的數據被d接收,系統(tǒng)判斷d是否大于7并小于1,如 果是,則提醒用戶重新輸入。否則調用相關函數,執(zhí)行相應的功能。若用戶輸入的d的值在1-6之間,如果用戶第一

11、次輸入的數值大于1,則系統(tǒng)會提醒用戶先建立家族關系樹。2、建立家族關系樹。用戶輸入家族名稱,系統(tǒng)根據家族名稱建立對應的文件,用戶輸入結點信息,系統(tǒng)先將信息保存到文件和fnameM數組中。在建樹時,將結點的信息從fnameM數組中復制給str,系統(tǒng)判斷 str0是否等于#',并且是否等于,直接執(zhí)行下面的語句,第一次 傳入結點時,root等于NULL建立頭結點,再次傳入結點時,如果str0 等于,部循環(huán)結束,接著出入結點,再次此判斷str0是否等于, 不等于的話,執(zhí)行部循環(huán),取對頭元素,判斷flag是否等于0,如果等于0,將結點接在所取對頭的左孩子上,否則接在右孩子上。在執(zhí)行外循 環(huán)時,如

12、果start2不等于0時,刪除對頭元素。3、 查詢兩個家族成員的關系。由用戶輸入兩個人的,Relatio n()函 數調用Confirm ()函數,確認用戶所輸入成員是否屬于此家族中的成員。如果屬于,用xM存放對應的結點,并令全局變量 z等于1,在執(zhí)行 Relation ()函數時,判斷z的值,確定此人是否屬于這個家族。若屬于, 令結點不停的指向它的父親結點,直到父親結點是根結點,同時應整數形 式的wM控制執(zhí)行的次數,作為判斷是第幾代的根據。最后,根據wM判斷兩人相差幾代。4、退出家族關系查詢系統(tǒng)。在主函數中,用戶選擇退出選項在(即 輸入6),系統(tǒng)執(zhí)行flag等于0,即控制外循環(huán)的變量為0,循

13、環(huán)結束, 成功退出家族關系查詢系統(tǒng)。4、調試與分析4.1、調試過程 在調試程序是主要遇到一下幾類問題:1、當輸入此函數時出現(xiàn)了與&相關的錯誤,例如后面缺少括號以及分號等 等以下的錯誤;2、輸入每個家庭成員的的信息時,兄弟之間沒有用“”區(qū)分,導致建立家族關系樹時錯誤。另外輸入不正確,程序有可能出現(xiàn)停止;3、在一些函數前不加返回值變量類型,調試時出現(xiàn)邏輯錯誤;4、在定義結構體時,定義結構體指針變量,但在程序運行時出現(xiàn)了定義的 結構體指針不起作用。5、在運行程序時,由于沒有聲明變量,或對于指針變量沒有初始化,無法 執(zhí)行程序。4.2、執(zhí)行過程進入家族關系查詢系統(tǒng),系統(tǒng)提示用戶輸入相關操作:輸入

14、要進行的操作:1輸入家族的名稱:zha ng輸入家族成員:zha ngxia nzu輸入家族成員:輸入家族成員:zha ngguoyu輸入家族成員:zha ngguoj un輸入家族成員:zha ngguoqia ng輸入家族成員:輸入家族成員:zha ngyon gzhi輸入家族成員:輸入家族成員:zha ngyon grui輸入家族成員:zha ngyongming輸入家族成員:輸入家族成員:輸入家族成員:zha ngwe nde輸入家族成員:zha ngwenjia輸入家族成員:輸入家族成員:#家族關系成功建立?。ㄏ到y(tǒng)接著提示用戶輸入)輸入要進行的操作:2(輸入結果)zhangxianz

15、u zhangguoyu zhangyongzhi zhangwende , zhangwenjiazha ngguoj un zha ngyon grui zha ngyongmingzha ngguoqia ng(系統(tǒng)接著提示用戶輸入) 輸入要進行的操作:6(輸入結果)成功退出家族關系查詢系統(tǒng)!4.3、運行時界面1、運行主函數時。2、輸入要進行的操作。&lt±u-u y沖詔xijmv;slodfio 20L0,Projeclsg lazuguanl butDr'iigDeb<jgly> sizj話診窩入曇點兄弟筍入轟以*r為標志.踣更標志為"

16、” zhAJiqrxljuisu削It綁八:*訂帶啟輸人 zhan<vqu<oyu -扒FJ瓠:釈it期乳/_: in 卿 曽酣躺I. 詒巡列輔人 zhan*g yomjiuhi 徐It腳人 han 卿 vomifLU i 詒證鴻宀 zhan? Monqri in 號 釈世囹輛人: 站蜩丄3、接著根據提示輸入相應的操作,輸入數據遍歷家族關系查詢系統(tǒng)中的 成員。關農己咸功矍毎錄旗關.詼51鑄-祜隹蛻蔗丟耳氛遍帀冢棧成員J- E走網心系仏國找氣沃M:亭旗氏氣氣退出査詢系統(tǒng)toASitfr 的幄作azJMunsgpcinziuhungguosjuzhknngoingzhihnffucnd

17、ce hafigwcn jinv. IwiligiyiMci Ju lr|iit h&ny uli UJ-£ tiMing-uill yn in y丄 lini|jiy利口爼 in甘叢世野蛋旬尋統(tǒng);亓冠鹼系筑遞諒隹忌負x餌定兩人矢瘞 < 查找5、毎加嶷關系4退岀査詢篆統(tǒng)翎入嬰11彳泄操lV<m -4、根據提示選擇確定兩人關系選項,輸入兩個人的蠱 hen 殖 moli«in ri«iin mi FL/ h*i 11 ci yn >i irrii 匚早 i I4':A.郡層二此黑住:e: yu-sotsV £ no.: .d

18、 ne 忑: t:. it b._ _i_ jljm/?案費蠻査恂系城1、新建輸關系a. ifi歷家庶趣3、嵋示兩人壬系冬古掙氣 勵家族關漿J也出沓荀聚垮1£c I 1.- n ; lf.& % % -fH-l -2 .-8 零 <A 0LL+LL1、若輸入的人不時家族中得人,運行情況如下2、退出家族關系查詢系統(tǒng)。BE1E冢族關糸金詢家頓 匚弔直融斥=矗忘議五焉j*確定兩人關殺蠱杏找畀爲加衣族關茶6,週出查詢慕統(tǒng)訥入要進行的操件C1F; &寂旅矢系丑再絞便月結刃Pr«SB l»v to G&ntiniUiD結束語通過這次課程設計,雖然

19、程序設計和調試的能力有所提升,但最終還是沒 能獨立完成課程設計的課程要求。這次課程設計使我深刻認識到自己專業(yè)知識的 匱乏,缺乏獨立程序設計的能力。通過這次的課程設計也是我認識到了我在程序 設計方面的嚴重不足,以及專業(yè)知識的嚴重匱乏。我的程序設計思想和代碼的編 寫和調試能力在此次課設期間有所提高。 這樣一種更貼切實際的課程設計,大大 的提高了我的學習效率,希望能夠在平時教學的時候也能加入一些類似課程設計 的程序設計習題。參考文獻【1】嚴蔚敏、吳偉民.數據結構(C語言版).清華大學【2】滕國文.數據結構課程設計.清華大學【3】譚浩強.C程序設計(第四版).清華大學附錄主要程序:1、主函數程序:vo

20、id mai n()int d,flag=1,start1=1,f;Tree t1;t=&t1;while(flag)printf("tt家族關系查詢系統(tǒng)n");printf("t n");printf("t1、新建家族關系t2、遍歷家族成員nn");printf("t3、確定兩人關系t4、查找nn");printf("t5、添加家族關系t6、退出查詢系統(tǒng)n"); printf("t n");A:printf("輸入要進行的操作(1-6):");s

21、can f("%d",&d);getchar();f=1;if(d<1|d>6)printf("n輸入有誤,請重新輸入! ! ! nn"); goto A;if(d>1)&&start1)printf("nn請先創(chuàng)建家庭關系!nn");f=0;if(f)switch(d)case 1: Create();start1=0;break;case 2: Traverse(t);pri ntf("nn");break;case 3: Relatio n();pri ntf(&qu

22、ot;nn");break;case 4: Search(t);pri ntf("nn");break;case 5: Add(t);pri ntf("nn");break;case 6: flag=0;break;printf("nt家族關系查詢系統(tǒng)使用結束!n");2、建立家族關系樹程序void Create()char strM;int i=0;FILE *fp;t->pare nt=NULL;t->lchild=NULL;t->rchild=NULL;printf("請輸入文件的名稱(家族

23、的名稱):");sca nf("%s",file name);getchar();strcat(file name,".txt");if(fp=fope n(file name,"w")=NULL)prin tf("ca n not ope n!");exit(O);printf("請按層次輸入結點(),兄弟輸入結束以“”為標志, 結束標志為“ #” :n");gets(str);fputs(str,fp);fputc('n',fp);strcpy(fnamei,str

24、);i+;while(strO!=#)prin tf("請繼續(xù)輸入:n");gets(str);fputs(str,fp);fputc('n',fp);strcpy(fnamei,str);i+;fclose(fp);TreeCreate(t);printf("家族關系已成功建立!nn");void TreeCreate()Tree *t1,*root=NULL;LQ *q;int i=0,flag=0,start2=0;char strM;q=LQCreateEmpty();strcpy(str,fnamei);while(str0!=

25、#)while(str0!='')if(root=NULL)root=(Tree *)malloc(sizeof(Tree); strcpy(root- >n ame,str); root->lchild=NULL;root->pare nt=NULL; root->rchild=NULL;LQE nQueue(q,root);t=root;elset1=(Tree *)malloc(sizeof(Tree); strcpy(t1- >n ame,str); t1->lchild=NULL;t1->rchild=NULL;t1->pare nt=LQGetFro nt(q);LQEn Queue(q,t1);if(!flag)root->lchild=t1;elseroot->rchild=t1; root=t1;flag=1;i+;strcpy(str,fnamei);if(start2!=0)LQDeQueue(q);if(q->fro nt!=NULL) root=LQGetFro nt(q);start2=1;flag=0;i+;strcpy(str,fnamei);3、確定關系

溫馨提示

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

評論

0/150

提交評論