




已閱讀5頁,還剩15頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數據結構課程設計報告課程名稱:數據結構課程設計課程設計題目:病人看病模擬程序姓 名: 院 系: 信息工程系 專 業: 計算機科學與技術 班 級: 學 號: 指導老師: 目 錄1 課程設計的目的12 需求分析13 程序設計報告內容23.1 概要設計23.2 詳細設計23.3 函數調用關系圖43.4 程序清單53.5 運行結果54 總結7參考文獻7附錄8病人看病模擬程序1. 課程設計的目的(1) 熟練掌握隊列的兩種存儲方式。(2) 掌握隊列的基本操作及應用。(3) 利用隊列實現病人就醫管理模擬程序。2. 需求分析 設計一個病人就醫管理系統,編寫一個程序定義行醫,反映病人到醫院看病,排隊看醫生的情況,在病人排隊過程中,主要發生兩件事:(1) 病人到達診室,將病歷本交給護士,排到等待隊列中候診。(2) 護士從等待隊列中取出一位病人的病歷,該病人進入診室就診。要求程序采用菜單方式,其選項及功能說明如下:(1) 排隊-輸入病人的病歷號,加入到病人排隊隊列中(2) 就診-病人排隊隊列中最前面的病人就診,并將其從隊列中刪除。(3) 查看排隊-從隊首到隊尾列出所有的排隊病人的病歷號。(4) 下班-退出運行。3. 課程設計報告內容3.1 概要設計:(1).抽象數據類型圖的定義如下: 此程序采用隊列數據結構,存儲結構為單鏈表,采用此種結構一方面可以采用數據復雜程度,增加系統穩定性;另一方面,利用動態分配內存的方法,便于內存管理,充分利用內存空間。int Menu_select() /菜單選擇程序,要求用戶輸入一個正確的菜單選項。如果不正確,則重復調用此子程序,知道輸入的值是正確的struct bingli*(creat() /創建一個單鏈表。如果創建成功,則返回這個單鏈表的表頭;如果創建不成功,則退出程序。void ListInsert_rear(struct bingli*head)/創建一個單鏈表成功后,再次排隊則時調用此子程序,作用是在單鏈表尾部(即對尾)插入一個病歷號碼。如果插入不成功,則退出程序。struct bingli*(ListDelete(struct bingli*head)/就診程序。作用是輸出就診的病歷號(即隊首元素),并且刪除隊首元素、釋放其所占空間。void display(struct bingli*head)/顯示隊列所有元素(2)本程序包含兩個模塊: a.主程序模塊: void main() b.隊列操作模塊:實現所求的所有實際操作各模塊之間的調用關系如下: 主程序模塊 隊列操作模塊3.1 詳細設計 1) struct bingli Int number; /數據類型為整型 struct bingli*next /下一個節點 bingli; /列隊的類型 該結構體含有兩個數據:第一個是排隊的病歷號碼,第二個是指向這類結構體的指針。 2)菜單選擇程序: Int Menu_select() /要求用戶輸入一個正確的菜單選項。如果不正確,則重復調用此子程序,直到輸入的值是正確的 3)創建一個單鏈表: Struct bingli*(crear() /如果創建成功,則返回這個單鏈表的表頭,如果創建不成功,則退出程序, 4)插入一個病歷號碼: Void ListInsert_rear(struct bingli*head) /創建一個單鏈表成功后,再次排隊則調用此子程序,作用是在單鏈表尾部(即對尾)插入一個病歷號碼。如果不成功,則退出程序。5)就診程序: struct bingli*(ListDelete(struct bingli*head) /作用就是輸出就診的病歷號(即隊首元素),并且刪除隊首元素、釋放其所占空間。 6)顯示函數 void display(struct bingli*head) /顯示隊列所有元素 7)主函數 程序如下:void main()struct bingli*head;printf(*n); printf(* 歡 迎 進 入 就 醫 排 隊 管 理 系 統 ! *n); printf(*t :排隊; *n);printf(*t :就診; *n);printf(*t :查看排隊情況; *n);printf(*t :不再排隊; *n);printf(*t :下班-退出運行; *n);printf(*n);int j=1;while(1)switch(Menu_select()case 1:printf(1:排隊; n);if(j=1)j+;head=creat(); else ListInsert_rear(head);break;case 2:printf(2:就診; n);head=ListDelete(head); break; case 3:printf(3:查看排隊情況; n);display(head);break; case 4:printf(4:不再排隊,余下順序就診; n);display(head);return;break;case 5:printf(5:下班-退出運行。 n);return;就診(ListDelete)查看排隊情況(display)退出運行(return)不再排隊,余下就診(display,return)排隊(creat/ListInsert_rear)主程序(main)3.3函數調用關系圖3.4程序清單:(見附錄)3.5 運行結果 圖一 圖二4. 總結通過這次課程設計,讓我對一個程序的數據結構有更全面更進一步的認識,根據不同的需求,采用不同的數據存儲方式,不一定要用棧,二叉樹等高級類型,有時用基本的鏈表等,只要運用得當,也能達到相同的效果,甚至更佳,就如這次的課程設計題目病人看病模擬程序,提高了程序的運行效率。 在編寫這個程序的過程中,我復習了之前所學的基本語法,更加深刻的認識到循環是大部分程序的基本要素。結合上學期學的C語言,這個學期學的分析算法的時間復雜度,不斷改進算法,更佳鞏固了之前學的知識,比以前更能靈活運用。此次寫的程序還有很大的發展空間,例如可以增加文件的打開和存儲功能、增加病人姓名等。考慮到功能的增加,可能要更改數據結構及相關的算法。 此次課程設計,我受益匪淺,鞏固舊知識的同時,學習了心得知識。更重要的是,它使我對數據結構產生了濃厚的興趣,對編寫程序更有信心。參考文獻【1】 嚴蔚敏,吳偉民 編著.數據結構(C語言版)北京大學出版社.2011.附錄:#includestdafx.h#include#include#include#define NULL0#define LEN sizeof(struct bingli)struct bingliint number;struct bingli*next;bingli;int Menu_select()/菜單選擇程序,要求用戶輸入一個正確的菜單選項。如果不正確,則重復調用此子程序,直到輸入的值是正確的int sn;for(;)scanf(%d,&sn);if( sn5 )printf(nt 輸入錯誤,請重新輸入!n);elsebreak;return sn;struct bingli*(creat()/創建一個單鏈表。如果創建成功,則返回這個單鏈表的表頭;如果創建不成功,則退出程序。struct bingli*head;struct bingli*p1,*p2;int n = 0;if(!(p1=(struct bingli*)malloc(LEN)exit(1);p2 = p1;printf(請輸入病歷號(以輸入數字0表示結束)n);scanf(%d,&p1-number);head = NULL;while(p1-number!=0)n=n+1;if(n=1)head=p1;else p2-next=p1;p2=p1;p1=(struct bingli*)malloc(LEN);scanf(%d,&p1-number);p2-next=NULL;p1=head;printf(排隊成功!n);return(head);void ListInsert_rear(struct bingli*head)/創建一個單鏈表成功后,再次排隊時則調用此子程序,作用是在單鏈表尾部(即對尾)插入/一個病歷號碼。如果插入不成功則退出程序。struct bingli*p4,*p5;if(!(p4=(struct bingli*)malloc(LEN)exit(2);printf(請輸入病歷號!n);scanf(%d,&p4-number);p5=head;while(p5-next!=NULL) p5=p5-next; p5-next=p4;p4-next=NULL;printf(排隊成功!n);struct bingli*(ListDelete(struct bingli*head)/就診程序。作用就是輸出就診的病歷號(即隊首元素),并且刪除隊首元素、釋放/其所占空間。printf(就診的病歷號為:%dn,head-number);struct bingli*p6;p6=head;head=head-next;free(p6);return(head);void display(struct bingli*head)/顯示隊列所有元素struct bingli*p9;p9=head;while(p9!=NULL) printf(%dn,p9-number); p9=p9-next;void main()struct bingli*head;printf(*n); printf(* 歡 迎 進 入 就 醫 排 隊 管 理 系 統 ! *n);printf(n*t 請選擇操作: *n); printf(*t :排隊; *n);printf(*t :就診; *n);printf(*t :查看排隊情況; *n);printf(*t :不再排隊; *n);printf(*t :下班-退出運行; *n);printf(*n);int j=1;while(1)switch(Menu_select()case 1:printf(1:排隊; n);if(j=1)j+;head=creat(); else L
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 管理學獎學金管理制度
- 綠色建筑材料市場推廣策略與政策支持下的產業政策解讀報告
- 2025年細胞治療臨床試驗規范與審批要點報告
- 財政監控業務管理制度
- 家家悅采購管理制度
- 生產車間返修管理制度
- 石油公司采購管理制度
- 常規品銷售管理制度
- 網絡機房設備管理制度
- 肇慶工業廢物管理制度
- 西方經濟學考試題庫(含參考答案)
- 2024詳解《鑄牢中華民族共同體意識》黨課課件
- 國家開放大學2024春《1379人文英語3》期末考試真題及答案-開放本科
- 2025年高中自主招生模擬考試數學試卷試題(含答案詳解)
- 園林綠化樹木的修剪方案
- 國企集團公司各崗位廉潔風險點防控表格(廉政)范本
- 反腐敗與廉潔行為管理制度
- 吉林鄉土地理知識要點(試卷)
- 2024年士兵職業技能鑒定考試-軍械員理論知識筆試考試歷年高頻考點試題摘選含答案
- 江蘇省南京市鼓樓區2022-2023學年三年級下學期期末語文試卷
- 帕金森負荷試驗
評論
0/150
提交評論