版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課程設計(論文)任務書軟件學院 學 院軟件+xx 專 業(yè) 20121 班一、課程設計(論文)題目通訊錄系統(tǒng)的設計與實現(xiàn)二、課程設計(論文)工作自2014 年1月6 日起至2014 年1月12 日止三、課程設計(論文)地點:創(chuàng)新大樓軟件實訓中心機房四、課程設計(論文)內容要求:1 .本課程設計的目的訓練學生靈活應用所學數(shù)據(jù)結構知識,獨立完成問題分析,結合數(shù)據(jù)結構理論知識,編寫程序求解指定問題;初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設計、程序編碼、測試等基本方法和技能;提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力,鞏固、深化學生 的理論知識,提升編程水平。2 .課程設計的任務及要求1)基
2、本要求:要求從分析題目的需求入手,按設計抽象數(shù)據(jù)類型、構思算法、通過設計實現(xiàn)抽象數(shù)據(jù)類型、編寫上機程序和上機調試等若干步驟完成題目,最終寫出完整的報告;在程序設計階段應盡量利用已有的標準函數(shù),加大代碼的重用率;程序設計語言推薦使用c/c+,程序書寫規(guī)范,源程序需加必要的注釋;每位同學需提交可獨立運行的程序和規(guī)范的課程設計報告。2)課程設計論文編寫要求理論設計部分以課程設計論文的形式提交,格式必須按照課程設計論文標準格式進行書寫和裝訂;課程設計報告(論文)包括中文目錄、設計任務、需求分析、概要設計、詳細設計、編碼實現(xiàn)、調試分析、課設總結、謝辭、參考文獻、附錄等;設計部分應包含系統(tǒng)功能模塊圖,調試
3、分析應包括運行截圖等。3)課程設計評分標準:學習態(tài)度:10分;系統(tǒng)設計:20分;編程調試:20分;回答問題:20分;論文撰寫:30-4)參考文獻:嚴蔚敏吳偉民.數(shù)據(jù)z構(c語言版)m.清華大學出版社.2010.3嚴蔚敏吳偉民.數(shù)據(jù)結本題集(c語言版)m.清華大學出版社.1999.2何欽銘,馮燕等.數(shù)據(jù)結構課程設計m.浙江大學出版社.2007.85)課程設計進度安排準備階段(4學時):選擇設計題目、了解設計目的要求、查閱相關資料;程序模塊設計分析階段(4學時):程序概要設計、詳細設計;代碼編寫調試階段(8學時):程序模塊代碼編寫、調試、測試;撰寫論文階段(4學時):總結課程設計任務和設計內容,撰
4、寫課程設計論文。學生簽名:2014年 1月5日6)課程設計題目具體要求:增加、修改、刪除、查每個記錄包含姓名、電話號碼、住址等個人信息。課程設計(論文)評審意見(1)學習態(tài)度(10分):優(yōu)()、良()、中()、一m ()、差();(2)系統(tǒng)設計(20 分):優(yōu)()、良()、中()、一般()、差();(3)編程調試(20 分):優(yōu)()、良()、中()、一般()、差();(4)回答問題(20 分):優(yōu)()、良()、中()、一般()、差();(5)論文撰寫(30 分);(6)格式規(guī)范性及考勤是否降等級:是()、否()評閱人: 王英華 職稱: 講師目錄一、設計任務1二、需求分析 1三、系統(tǒng)設計2四、編
5、碼實現(xiàn)4五、調試分析.6六、課設總結.9七、謝辭 .10八、參考文獻 .103一、設計任務完成通訊錄的一般性管理工作:( 1)通訊錄的錄入、增加、修改、刪除、查找和按照字母順序輸出等功)( 2)每個記錄包含姓名、電話號碼、住址等個人信息。、需求分析通訊錄中記錄的每個人,和通訊錄主人之間存在朋友或認識的關系,但 相互之間也許認識,也許是陌生人,類似于集合。在設計實現(xiàn)通訊錄管理程 序時,可以采用線性結構來組織各聯(lián)系人之間的關系。線性結構有順序和鏈 式兩種物理實現(xiàn)方式,本課設選用鏈表來完成通訊錄功能。通訊錄中每個聯(lián)系人的信息主要包括編號、姓名、性別、電話號碼和住址等個人信息,這些信息作為一個整體來描
6、述一個聯(lián)系人,因此,對每個聯(lián) 系人需要建立類或結構體來描述,本課設采用的是結構體來描述一個聯(lián)系人 的信息,也稱為一條記錄。通訊錄的一般性管理工作主要是包括記錄的增加、修改、查找、刪除、輸出等功能,因此需要建立相應功能的操作函數(shù),使編寫出的程序模塊性、重用和條理性更強,方便閱讀理解。1.系統(tǒng)用到的數(shù)據(jù)有:char number5;/編號char name20;/姓名char sex10;/性別char telephone20; /電話char address20; /地址/實現(xiàn)通訊錄鏈表的建立功能 /實現(xiàn)通訊錄結點的插入/信息按編號排序 /信息按名字字母順序排序 /實現(xiàn)通訊錄結點的查找 /實現(xiàn)通
7、訊錄結點的刪除2 .系統(tǒng)用到的函數(shù)有:linklist createlist(void);void insertnode(linklist head,listnode *p);void ordernodenum(linklist *&l);void ordernodename(linklist *&l);listnode *listfind(linklist head);void deletenode(linklist head);1實現(xiàn)通訊錄結點的修改void modifynode(linklist head);3 .抽象數(shù)據(jù)定義adt list數(shù)據(jù)對象:d= ai|ai elemset,i
8、=1,2,n,n=0 數(shù)據(jù)關系:r1| ai-1,ai d,i=2,n基本操作:linklist createlist(void);實現(xiàn)通訊錄鏈表的建立功能void insertnode(linklist head,listnode *p); / 實現(xiàn)通訊錄結點的插入/信息按編號排序/信息按名字字母順序排序/實現(xiàn)通訊錄結點的查找/實現(xiàn)通訊錄結點的刪除/實現(xiàn)通訊錄結點的修改void ordernodenum(linklist *&l);void ordernodename(linklist *&l); listnode *listfind(linklist head); void deleten
9、ode(linklist head); void modifynode(linklist head); adt list三、系統(tǒng)設計3.1 .系統(tǒng)功能模塊圖系統(tǒng)主要有7個功能,分別是創(chuàng)建、插入、查找、刪除、修改、輸入和 退出,每個功能對應一個函數(shù),對同一個鏈表進行操作。通過系統(tǒng)操作主菜 單界面,可分別調用各函數(shù)完成相應功能。創(chuàng)建通訊錄插 入 通 訊 錄查 找 通 訊 錄刪 除 通 訊 錄修 改 通 訊 錄輸出通訊退 出 通 訊 錄圖3.1系軍功能模塊圖3.2 設計數(shù)據(jù)元素由于系統(tǒng)所采用的物理存儲結構是帶有頭結點的單鏈表,所以整個通訊錄包括head (頭節(jié)點)、rear (尾節(jié)點)和p (普通數(shù)
10、據(jù)節(jié)點)三種類型的指針。每個節(jié)點存儲一個數(shù)據(jù)元素的信息,包括數(shù)據(jù)域 data 與 next 指針域,而 data 數(shù)據(jù)域又包括每個聯(lián)系人的基本信息,即編號、姓名、性別、電話號碼和住址等信息。3.3 各個函數(shù)的設計3.3.1 插入函數(shù)void insertnode(linklist head,listnode *p);/實現(xiàn)通訊錄結點的插入設計思路與算法描述:定義兩個指針pl、p2,開始pl指向鏈表的頭結點, p2則指向p1-next。通過while循環(huán)找到插入數(shù)據(jù)p應該在的位置,利用 p1-next=p插入p所指向的2點利用p-next=p2,連接表中剩余的結點。至此, 插入工作完成。3.3.
11、2 排序函數(shù)void ordernodenum(linklist *&l);/信息按編號排序設計思路與算法描述:定義三個指針 p、q、s,起初q指向鏈表的頭結 點 , p 則 指 向 q-next-next, 然 后 斷 掉 q-next-next , 即 令 q-next-next=null ,通過 while 循環(huán)對鏈表每個相鄰進行的元素兩兩比較,通過不斷比較,結點指針相互賦值交換解決,找出最小的放在鏈表的前端,采用的是直接插入排序。3.3.3 刪除函數(shù)void deletenode(linklist head);/實現(xiàn)通訊錄結點的刪除設計思路與算法描述:定義兩個指針p、q,先利用元素查找
12、函數(shù)在鏈表中進行查找,只有在鏈表中找到要刪除的元素p 才能進行刪除操作,若已經找到,則輸出該元素的信息并提醒用戶是否繼續(xù)進行刪除操作,若確認刪除,則令 q 指向 head 頭結點,利用 while 循環(huán)找到 p 節(jié)點的位置,最后利用q-next=p-next刪除結點、free(p)釋放被刪除的結點空間。刪除結束。3.3.4 查找函數(shù)設計思路與算法描述:用戶查詢元素信息可以有兩個選擇,一是按每個元素的編號進行查詢,另一個就是按每個元素的名字進行查詢,先定義一個指針p與兩個數(shù)組charnumbe與charname若是按編號進行查詢,利用while(p& strcmp(p-data.number,n
13、umber)next;找至ij該元素的位置, 若找到則 return p, 否則令 p=null; 然后 returne p; 若是按照每個元素的姓名進行查詢,則是要將上訴 p-data.number改成即可。3.3.5 修改函數(shù)void modifynode(linklist head);/實現(xiàn)通訊錄結點的修改設計思路與算法描述:這個函數(shù)比較簡單,只要先利用查詢函數(shù)確定需要修改的節(jié)點 p 存在在鏈表當中,然后重新輸入該節(jié)點的信息即可。四、編碼實現(xiàn)4.1 通訊錄建立模塊設計linklist createlist(void) linklist head=(listnode
14、*)malloc(sizeof(listnode);/ 申請頭結點listnode *p,*rear;int flag=0; /結束指標置0rear=head; / 尾指針初始化指向頭結點while(flag=0) p=(listnode *)malloc(sizeof(listnode);/ 申請新結點printf( 編號 (1) 姓名 (2) 性別 電話 (4) 地址 (5)n);printf(n);scanf(%s%s%s%s%s,p-data.num,,p-data.sex,p-data.phone,p-data.addr);rear-next=p; / 新結點連
15、接到尾結點之后rear=p; / 尾指針指向新結點printf( 結束建表嗎?(1/0):);scanf(%d,&flag);/讀入一個標志數(shù)據(jù)rear-next=null;/終端結點指針域置空return head; /返回鏈表頭指針4.2 通訊錄插入模塊設計void insertnode(linklist head,listnode *p)listnode *p1,*p2;p1=head;p2=p1-next;while(p2!=null & strcmp(p2-data.num,p-data.num)next; /p2p1-next=p;/p-next=p2;/4.3 通訊錄查詢模塊設計
16、listnode * listfind(linklist head)/ 有序通訊錄鏈表上的查找listnode *p;char num5;char name9;if(t=1)printf( 請輸入要查找者的編號: );scanf(%s,num);while(p & strcmp(p-data.num,num)next;if(p=null | strcmp(p-data.num,num)0) p=null; / 沒有查到要查找的通訊者elseif(t=2) printf( 請輸入要查找者的姓名 : );scanf(%s,name);while(p & strcmp(,nam
17、e)!=0) p=p-next; return p;4.4 通訊錄刪除模塊設計q=head;while(p!=null & q-next!=p)q=q-next;q-next=p-next;free(p);printf( return; /刪除結點釋放被刪除的結點空間通訊者已被刪除!n);void delnode(linklist head)5printf( 通訊者沒有被刪除! n); 五、調試分析5.1主菜單主菜單提供了操作交互見面,不同的輸入可做不同的操作,可反復輸入, 直至退出系統(tǒng)為止。labts通訊錄 debuh5_ejce-l-t由的的st 等面 耳煢耳i 而而誣圖5.1程序開始界面
18、5.2 通訊錄鏈表的建立在開始菜單選擇1,進入鏈表建立模塊;然后依次輸入編號、姓名和電話 號碼等個人信息。單個人的信息輸入結束后,可選擇 y繼續(xù)輸入,或選擇n 退回主界面。操作界面如圖5.2所示。請選擇菜單號3一2 r編號費卻是灌產雪奢立岫址喻人的編號士入電話:lh72ewi&2tf南人地址2日上 = sr-詼為飛箝文- x it -jl圖5.2建立鏈表界面5.3 通訊者信息的插入在開始界面選擇2,依次輸入信息,插入一個新的節(jié)點。操作界面如圖5.4 所示:圖5.3插入信息界面5.5 通訊錄信息的查詢在開始菜單選擇3,查詢已經記錄在鏈表中節(jié)點的信息??梢赃x擇按編號查找或按姓名查找。操作界面如圖5
19、.4所示:圖5.4查詢信息界面5.6 通訊錄信息的刪除在開始菜單選擇4,刪除一個已經記錄在鏈表中的節(jié)點。操作界面如圖5.5 所示:圖5.5刪除界面gal的爵量h5.7 通訊錄信息的修改在開始菜單選擇5,修改一個記錄在鏈表中節(jié)點的信息。操作界面如圖5.8 所示:圖5.6修改界面5.9 通訊錄鏈表按姓名字母順序輸出在開始菜單選擇6,按照姓名字母順序輸出所有節(jié)點的信息。操作界面 如圖5.7所示:請選擇菜單號力一口g -通訊錄:電圖5.7順序輸出界面六、課設總結通過這次課程設計,使我對數(shù)據(jù)結構有了更進一步的認識和了解,要想 學好它要重在實踐,要通過不斷的上機操作才能更好地學習它,我也發(fā)現(xiàn)我 的好多不足之處,首先是自己在指法上還不行,經常按錯字母,通過學習也 有所改進;再有對數(shù)據(jù)結構的一些算法不是特別了解,還有對函數(shù)調用的正 確使用不夠熟悉,還有對程序中經常出現(xiàn)的錯誤也不了解, 通過實踐的學習, 我認識到學好計算機要重視實踐操作,不僅僅是學習數(shù)據(jù)結構,還是其它的 語言,以及其它的計算機方面的知識都要重在實踐,所以后在學習過程中,我會更加注視實踐操作,使自己便好地學好計算機。課程設計,使我懂得了做什么事情只要專心去做, 就能夠克服各種困難, 達到自己的說想要的結果。當然了,同學們和老師的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個人與個人個人旅游代理服務合同2篇
- 二零二五年度水電安裝工程安全責任合同樣本4篇
- 二零二五年度門窗行業(yè)原材料供應合同4篇
- 二零二五版大型活動臨時停車場租賃合同2篇
- 二零二五版新能源電池銷售代理服務協(xié)議書2篇
- 二零二五年度個人緊急短期借款協(xié)議
- 江蘇定制防腐木施工方案
- 羊肉購銷合同
- 電力供應合同
- 二零二五版醫(yī)療設備全面維護與急救響應合同3篇
- 案卷評查培訓課件模板
- 體檢中心分析報告
- 2024年江蘇省樣卷五年級數(shù)學上冊期末試卷及答案
- 波浪理論要點圖解完美版
- 金融交易數(shù)據(jù)分析與風險評估項目環(huán)境敏感性分析
- 牛頓環(huán)與劈尖實驗論文
- 最高人民法院婚姻法司法解釋(二)的理解與適用
- 移動商務內容運營(吳洪貴)任務四 其他平臺載體的運營方式
- 浙教版科學八年級下冊全冊課件
- 2022年中國止血材料行業(yè)概覽:發(fā)展現(xiàn)狀對比分析研究報告(摘要版) -頭豹
- 普通生物學筆記(陳閱增)完整版-PDF轉換成word轉換器
評論
0/150
提交評論