數(shù)據(jù)結(jié)構(gòu)病人看病模擬程序_第1頁
數(shù)據(jù)結(jié)構(gòu)病人看病模擬程序_第2頁
數(shù)據(jù)結(jié)構(gòu)病人看病模擬程序_第3頁
數(shù)據(jù)結(jié)構(gòu)病人看病模擬程序_第4頁
數(shù)據(jù)結(jié)構(gòu)病人看病模擬程序_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、?數(shù)據(jù)結(jié)構(gòu)?課程設(shè)計報告課程名稱:?數(shù)據(jù)結(jié)構(gòu)?課程設(shè)計課程設(shè)計題目:病人看病模擬程序姓 名: 院 系: 信息工程系 專 業(yè): 計算機科學(xué)與技術(shù) 班 級: 學(xué) 號: 指導(dǎo)老師: 目 錄1 課程設(shè)計的目的12 需求分析13 程序設(shè)計報告內(nèi)容23.1 概要設(shè)計23.2 簡略設(shè)計23.3 函數(shù)調(diào)用關(guān)系圖43.4 程序清單53.5 運行結(jié)果54 總結(jié)7參考文獻7附錄817 / 17文檔可自由編輯打印病人看病模擬程序1. 課程設(shè)計的目的1 嫻熟掌握隊列的兩種存儲方式。2 掌握隊列的根本操作及應(yīng)用。3 利用隊列實現(xiàn)病人就醫(yī)管理模擬程序。2. 需求分析 設(shè)計一個病人就醫(yī)管理系統(tǒng),編寫一個程序定義行醫(yī),反映病人

2、到醫(yī)院看病,排隊看醫(yī)生的情況,在病人排隊過程中,主要發(fā)生兩件事:1 病人到達診室,將病歷本交給護士,排到等待隊列中候診。2 護士從等待隊列中取出一位病人的病歷,該病人進入診室就診。要求程序接受菜單方式,其選項及功能說明如下:1 排隊-輸入病人的病歷號,參加到病人排隊隊列中2 就診-病人排隊隊列中最前面的病人就診,并將其從隊列中刪除。3 查看排隊-從隊首到隊尾列出全部的排隊病人的病歷號。4 下班-退出運行。3. 課程設(shè)計報告內(nèi)容3.1 概要設(shè)計:1.抽象數(shù)據(jù)類型圖的定義如下: 此程序接受隊列數(shù)據(jù)結(jié)構(gòu),存儲結(jié)構(gòu)為單鏈表,接受此種結(jié)構(gòu)一方面可以接受數(shù)據(jù)簡單程度,增加系統(tǒng)穩(wěn)定性;另一方面,利用動態(tài)安排

3、內(nèi)存的方法,便于內(nèi)存管理,充分利用內(nèi)存空間。int Menu_select() /菜單項選擇擇程序,要求用戶輸入一個正確的菜單項選擇項。如果不正確,那么重復(fù)調(diào)用此子程序,知道輸入的值是正確的struct bingli*(creat() /創(chuàng)立一個單鏈表。如果創(chuàng)立成功,那么返回這個單鏈表的表頭;如果創(chuàng)立不成功,那么退出程序。void ListInsert_rear(struct bingli*head)/創(chuàng)立一個單鏈表成功后,再次排隊那么時調(diào)用此子程序,作用是在單鏈表尾部即對尾插入一個病歷號碼。如果插入不成功,那么退出程序。struct bingli*(ListDelete(struct bin

4、gli*head)/就診程序。作用是輸出就診的病歷號即隊首元素,并且刪除隊首元素、釋放其所占空間。void display(struct bingli*head)/顯示隊列全部元素2本程序包含兩個模塊: a.主程序模塊: void main() b.隊列操作模塊:實現(xiàn)所求的全部實際操作各模塊之間的調(diào)用關(guān)系如下: 主程序模塊 隊列操作模塊3.1 簡略設(shè)計 1 struct bingli Int number; /數(shù)據(jù)類型為整型 struct bingli*next /下一個節(jié)點 bingli; /列隊的類型 該結(jié)構(gòu)體含有兩個數(shù)據(jù):第一個是排隊的病歷號碼,其次個是指向這類結(jié)構(gòu)體的指針。 2菜單項選

5、擇擇程序: Int Menu_select() /要求用戶輸入一個正確的菜單項選擇項。如果不正確,那么重復(fù)調(diào)用此子程序,直到輸入的值是正確的 3創(chuàng)立一個單鏈表: Struct bingli*(crear() /如果創(chuàng)立成功,那么返回這個單鏈表的表頭,如果創(chuàng)立不成功,那么退出程序, 4插入一個病歷號碼: Void ListInsert_rear(struct bingli*head) /創(chuàng)立一個單鏈表成功后,再次排隊那么調(diào)用此子程序,作用是在單鏈表尾部即對尾插入一個病歷號碼。如果不成功,那么退出程序。5就診程序: struct bingli*(ListDelete(struct bingli*h

6、ead) /作用就是輸出就診的病歷號即隊首元素,并且刪除隊首元素、釋放其所占空間。 6顯示函數(shù) void display(struct bingli*head) /顯示隊列全部元素 7主函數(shù) 程序如下:void main()struct bingli*head;printf(*n); printf(* 歡 迎 進 入 就 醫(yī) 排 隊 管 理 系 統(tǒng) ! *n); printf(*t :排隊; *n);printf(*t :就診; *n);printf(*t :查看排隊情況; *n);printf(*t :不再排隊; *n);printf(*t :下班-退出運行; *n);printf(*n);

7、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:下班-退出運行。

8、 n);return;就診ListDelete查看排隊情況display退出運行return不再排隊,余下就診display,return排隊creat/ListInsert_rear主程序main3.3函數(shù)調(diào)用關(guān)系圖3.4程序清單:見附錄3.5 運行結(jié)果 圖一 圖二4. 總結(jié)通過這次課程設(shè)計,讓我對一個程序的數(shù)據(jù)結(jié)構(gòu)有更全面更進一步的生疏,依據(jù)不同的需求,接受不同的數(shù)據(jù)存儲方式,不肯定要用棧,二叉樹等高級類型,有時用根本的鏈表等,只要運用得當(dāng),也能到達相同的效果,甚至更佳,就如這次的課程設(shè)計題目病人看病模擬程序,提高了程序的運行效率。 在編寫這個程序的過程中,我復(fù)習(xí)了之前所學(xué)的根本語法,更加

9、深刻的生疏到循環(huán)是大局部程序的根本要素。結(jié)合上學(xué)期學(xué)的C語言,這個學(xué)期學(xué)的分析算法的時間簡單度,不斷改良算法,更佳穩(wěn)固了之前學(xué)的知識,比以前更能敏捷運用。此次寫的程序還有很大的開展空間,例如可以增加文件的翻開和存儲功能、增加病人姓名等??紤]到功能的增加,可能要更改數(shù)據(jù)結(jié)構(gòu)及相關(guān)的算法。 此次課程設(shè)計,我受益匪淺,穩(wěn)固舊知識的同時,學(xué)習(xí)了心得知識。更重要的是,它使我對數(shù)據(jù)結(jié)構(gòu)產(chǎn)生了深厚的愛好,對編寫程序更有信心。參考文獻【1】 嚴蔚敏,吳偉民 編著.數(shù)據(jù)結(jié)構(gòu)C語言版北京高校出版社.2022.附錄:#includestdafx.h#include#include#include#define NU

10、LL0#define LEN sizeof(struct bingli)struct bingliint number;struct bingli*next;bingli;int Menu_select()/菜單項選擇擇程序,要求用戶輸入一個正確的菜單項選擇項。如果不正確,那么重復(fù)調(diào)用此子程序,直到輸入的值是正確的int sn;for(;)scanf(%d,&sn);if( sn5 )printf(nt 輸入錯誤,請重新輸入!n);elsebreak;return sn;struct bingli*(creat()/創(chuàng)立一個單鏈表。如果創(chuàng)立成功,那么返回這個單鏈表的表頭;如果創(chuàng)立不成功,那么退

11、出程序。struct bingli*head;struct bingli*p1,*p2;int n = 0;if(!(p1=(struct bingli*)malloc(LEN)exit(1);p2 = p1;printf(請輸入病歷號以輸入數(shù)字0表示結(jié)束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;p

12、rintf(排隊成功!n);return(head);void ListInsert_rear(struct bingli*head)/創(chuàng)立一個單鏈表成功后,再次排隊時那么調(diào)用此子程序,作用是在單鏈表尾部即對尾插入/一個病歷號碼。如果插入不成功那么退出程序。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;prin

13、tf(排隊成功!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=

14、p9-next;void main()struct bingli*head;printf(*n); printf(* 歡 迎 進 入 就 醫(yī) 排 隊 管 理 系 統(tǒng) ! *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 ListInsert_rear(head);break;case 2:printf(2:就診; n);head=ListDelete(head); break; case 3:printf(3:查看排隊

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論