C語言課程設(shè)計(jì)報(bào)告用于醫(yī)院門診候診的隊(duì)列管理程序_第1頁
C語言課程設(shè)計(jì)報(bào)告用于醫(yī)院門診候診的隊(duì)列管理程序_第2頁
C語言課程設(shè)計(jì)報(bào)告用于醫(yī)院門診候診的隊(duì)列管理程序_第3頁
C語言課程設(shè)計(jì)報(bào)告用于醫(yī)院門診候診的隊(duì)列管理程序_第4頁
C語言課程設(shè)計(jì)報(bào)告用于醫(yī)院門診候診的隊(duì)列管理程序_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

./C語言課程設(shè)計(jì)課程設(shè)計(jì)題目:用于醫(yī)院門診候診的隊(duì)列管理程序姓名:學(xué)號:班級:指導(dǎo)老師:完成日期:目錄組員及其任務(wù)分配:3一、設(shè)計(jì)目的3二、需求分析3三、總體設(shè)計(jì)〔程序設(shè)計(jì)組成框圖、流程圖4四、詳細(xì)設(shè)計(jì)6源程序代碼〔分文件展示10調(diào)試測試展示13組員及其任務(wù)分配:呂智星:函數(shù)調(diào)用選項(xiàng)voidra<>statistics<統(tǒng)計(jì)當(dāng)天就診患者情況>施貝貝:分程序叫號Callnumber<叫號>,分診室CRoom<分診室>田渠:分程序registration<掛號>朱港平:菜單界面voidBUI<>一、設(shè)計(jì)目的數(shù)據(jù)類型、分支控制、循環(huán)控制、函數(shù)的定義及調(diào)用、結(jié)構(gòu)體及數(shù)組、指針、文件操作、編譯預(yù)處理等。達(dá)到系統(tǒng)理解、綜合運(yùn)用課程知識的學(xué)習(xí)目標(biāo);學(xué)會用C語言程序解決實(shí)際問題的方法;掌握程序的局部測試、調(diào)試方法,建立程序系統(tǒng)調(diào)試、測試的基本概念和思想,學(xué)會較大程序的系統(tǒng)測試和調(diào)試方法。二、需求分析方便醫(yī)院門診候診的隊(duì)列管理,采用先來先就診的排隊(duì)方式<就診順序與掛號單編號無關(guān)>,假設(shè)掛號時(shí)編碼是連續(xù)的,但由于同一個(gè)門診科目有3個(gè)診室,其中35<含35>歲以上的在第一診室,35歲以下男患者進(jìn)第二診室,其它的進(jìn)第三診室,程序啟動后顯示下列菜單:[實(shí)現(xiàn)提示]1--掛號2--叫號3--分診室4--顯示各診室隊(duì)列信息5--統(tǒng)計(jì)當(dāng)天就診的患者情況<要求按性別進(jìn)行統(tǒng)計(jì)和按任意年齡區(qū)段進(jìn)行統(tǒng)計(jì)>6--結(jié)束程序選1時(shí),提示用戶在一行內(nèi)輸入姓名及掛號單編號;選2時(shí),顯示排在隊(duì)列中第一位患者姓名、掛號單編號,并將其從掛號序列中刪除選3時(shí),進(jìn)行診室分配選4時(shí),按隊(duì)列順序顯示個(gè)診室排隊(duì)人的姓名、掛號單編號及所在診室選5時(shí),進(jìn)行兩種統(tǒng)計(jì)方法的選擇,并進(jìn)行必要的統(tǒng)計(jì)計(jì)算選6時(shí),退出程序的運(yùn)行要求1~5中每一個(gè)步驟完成后都能重新顯示此選擇菜單三、總體設(shè)計(jì)〔程序設(shè)計(jì)組成框圖、流程圖<1>系統(tǒng)功能分析:能實(shí)現(xiàn)掛號功能,提示用戶在一行內(nèi)輸入姓名及掛號單編號,并儲存;能實(shí)現(xiàn)叫號功能,顯示排在隊(duì)列中第一位患者姓名、掛號單編號,并將其從掛號序列中刪除;根據(jù)病人的性別與年齡,能實(shí)現(xiàn)診室的分配;能按隊(duì)列順序顯示各個(gè)診室排隊(duì)人的姓名、掛號單編號及所在診室。按性別進(jìn)行統(tǒng)計(jì)和按任意年齡區(qū)段進(jìn)行統(tǒng)計(jì),并打印輸出;完成每個(gè)步驟之后都能重新顯示此選擇菜單?!?總體設(shè)計(jì)框圖<3>流程圖模塊一、主界面調(diào)用voidra<>流程圖主界面模塊,顯示分程序模塊,通過函數(shù)調(diào)用的選擇項(xiàng),輸入相應(yīng)的數(shù)字即可進(jìn)入對應(yīng)的功能模塊,模塊的運(yùn)行應(yīng)當(dāng)是先1.掛號,2.叫號,3.分診室,分配分診室后就可以顯示隊(duì)列信息,之后也可選擇輸入年齡統(tǒng)計(jì)當(dāng)天就診患者情況,運(yùn)行結(jié)束后就是可選擇6結(jié)束程序。四、詳細(xì)設(shè)計(jì)模塊二、掛號voidregistration<>輸入輸入需要掛號病人的人數(shù)〔i:1-10人主界面BUI<>i++如果i<=10掛號主界面BUI<>i++如果i<=10掛號編號num性別sex姓名name年齡year輸入掛號模塊,是通過結(jié)構(gòu)體數(shù)組記錄患者的信息。其中需要輸入患者的姓名,性別,掛號單編號<就診順序與掛號單編號無關(guān)>,并且,先輸入需要掛號幾個(gè)病人,每次掛號病人最多十個(gè),并添加判斷單次是否在預(yù)先輸入需要掛號的病人的范圍之內(nèi),以此來控制輸入。模塊運(yùn)行輸入掛號的次數(shù),輸入完畢后,即可返回主界面。模塊三、叫號voidCallnumber<>病人病人已經(jīng)分配完畢顯示隊(duì)列第一位患者的信息,并叫號顯示隊(duì)列第一位患者的信息菜單界面判斷病人是否分配完畢叫號模塊,首先把掛號后的第一病人進(jìn)行叫號,之后能實(shí)現(xiàn)顯示之后剩余等待叫號的的病人并排在隊(duì)列中第一位患者姓名、掛號單編號,然后,通過文件寫入公共將已經(jīng)叫號就診的病人保存在1.txt中實(shí)現(xiàn)病人叫號信息的保存。叫號完畢之后將跳過已經(jīng)掛號的病人,叫號模塊運(yùn)行完畢時(shí),回車即可返回主菜單界面。模塊四、分診室voidCRoom<>分診室分診室在35歲以上上?男性?第一診室第二診室第三診室主界面 是 否是 否門診科目有3個(gè)診室,通過判斷年齡其中35<含35>歲以上的在第一診室,后再將剩余的患者進(jìn)行性別判斷進(jìn)行第二、第三診室的分配,35歲以下男患者進(jìn)第二診室,其它的進(jìn)第三診室模塊五、顯示隊(duì)列信息voidshow<>顯示分診室所匹配的診室信息顯示分診室所匹配的診室信息。第一診室人數(shù)a及患者信息主界面第二診室人數(shù)第二診室人數(shù)b及患者信息第三診室人數(shù)第三診室人數(shù)t及患者信息顯示各患者隊(duì)列及診室信息模塊,并且顯示每名患者的詳細(xì)信息,所顯示的信息分為三個(gè)部分展示。而且模塊運(yùn)行完畢后,按回車回到主界面。模塊六、統(tǒng)計(jì)當(dāng)天就診患者情況voidstatistics<>模塊六、統(tǒng)計(jì)當(dāng)天就診患者情況voidstatistics<>先輸入年齡界限year輸出高于的人數(shù)輸出低于的人數(shù)模塊六、統(tǒng)計(jì)當(dāng)天就診患者情況voidstatistics<>先輸入年齡界限year輸出高于的人數(shù)輸出低于的人數(shù)輸出男性患者人數(shù)輸出女性患者人數(shù)主界面年齡year>=y? 是 否統(tǒng)計(jì)模塊,先輸出共有多少位患者叫號就診,統(tǒng)計(jì)男性患者和女性患者各有多少位,然后再判斷高于或等于所輸入年齡分界線和低于所輸入年齡分界線的人數(shù),最后按回車回到主界面。在小組所設(shè)計(jì)分程序模塊為叫號voidCallnumber<>以及顯示分診室模塊設(shè)計(jì)voidCRoom<>函數(shù)調(diào)用關(guān)系:模塊三、叫號函數(shù):voidCallnumber<>函數(shù)的具體設(shè)計(jì):先清屏,顯示窗口標(biāo)題欄分程序名稱,使用全局變量e和c,e表示叫號當(dāng)中的人數(shù),判斷病人是否分配完畢,然后將掛號后拍在第一位的病人叫號,之后的病人繼續(xù)等待叫號,并且將叫號的病人寫入到文件1.txt中,變量c自加后再用e–c判斷剩余等待掛號的人數(shù)。最后按回車鍵回到主界面。模塊四、分診室函數(shù):voidCRoom<>函數(shù)的具體設(shè)計(jì):先判斷叫號當(dāng)值變量c的值是否為0,如若為0表示c并未自加,也就表示目前沒有病人叫號,提示提示請先叫號!定義全局變量fe之后判斷性別,年齡使之分配到各個(gè)診室,全局變量fe可避免病人重復(fù)分配到各個(gè)診室,引發(fā)錯(cuò)誤,如果多個(gè)已叫號病人可一次性分配,最后按回車鍵回到主界面。源程序代碼〔分文件展示#include<stdio.h>//頭文件#include<stdlib.h>#include<ctype.h>#include<string.h>#include<time.h>#include"windows.h"inte=0,a=0,b=0,t=0,c=0,fe=0;intk;structhos{ charname[16];//病人姓名 charsex[11];//病人性別 charnum[11];//病人掛號單編號 charyear[11];//病人年齡 introom;//病人被分到的診室號};structhosh[100];structhos*p=&h[0];voidCallnumber<>//叫號分系統(tǒng){ SetConsoleTitle<"2.叫號系統(tǒng)">;//窗口標(biāo)題欄 system<"cls">;//清屏 intk; if<c==e> { system<"cls">; printf<"所有病人都已經(jīng)分配完畢\n">; system<"pause">; return; } printf<"病人〔%s已前往就診掛號號碼:%s\n\n",p[c].name,p[c].num>; FILE*fp=fopen<"1.txt","a+">; if<fp==0>{printf<"can'topenfile\n">;} fseek<fp,0,SEEK_END>; intz=fgetc<fp>;//從文件中獲取一個(gè)字符 if<z!=EOF>//查看文件是否為空 { fprintf<fp,"姓名">; fprintf<fp,"\t性別">; fprintf<fp,"\t掛號單">; fprintf<fp,"\t年齡">; fprintf<fp,"\n">; } fwrite<p[c].name,strlen<p[c].name>,1,fp>;//將姓名輸出到文件中 fprintf<fp,"\t">; fwrite<p[c].sex,strlen<p[c].sex>,1,fp>; fprintf<fp,"\t">; fwrite<p[c].num,strlen<p[c].num>,1,fp>; fprintf<fp,"\t">; fwrite<p[c].year,strlen<p[c].year>,1,fp>; fprintf<fp,"\n\n">; fclose<fp>; c++; printf<"\n剩余[%d]位等待叫號的病人\n",e-c>; for<k=c;k<e;k++> printf<"目前等待叫號排序第[%d位]姓名:%s 掛號號碼:%s\n",k+1-c,p[k].name,p[k].num>; system<"pause">; system<"cls">;}voidCRoom<>//分配診室:fp〔函數(shù){ system<"cls">; SetConsoleTitle<"3.診室分配">; printf<"\n診室分配結(jié)果\n">; if<c==0> { printf<"Error!請先叫號!\n">; } for<fe;fe<c;fe++> { if<atoi<p[fe].year>>=35>//字符串轉(zhuǎn)換為整數(shù) { a++; p[fe].room=1; } //其中35<含35>歲以上的患者在第一診室 elseif<strcmp<p[fe].sex,"男">==0> { b++; p[fe].room=2; } //35歲以下男患者進(jìn)第二診室 else { t++; p[fe].room=3; } //其它的患者進(jìn)第三診室 printf<"\n病人<%s>性別:%s掛號編號:%s已被分配到第[%d]診室\n",p[fe].name,p[fe].sex,p[fe].num,p[fe].room>; } system<"pause">; system<"cls">;}調(diào)試測試展示:通過vc6.0進(jìn)行測試;源代碼:#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<string.h>#defineN100intS1=0,S2=0,S3=0,man=0,woman=0,pl=0,g=0;//定義s為診室,p1指針intk;structhos{ charname[15];//患者姓名 charsex[10];//患者性別 charnum[10];//掛號單編號 charyear[10];//患者年齡 introom;//被分到的診室號};structhosh[N];structhos*p=&h[0];voidintroduce<>//功能介紹introduce〔函數(shù){ printf<" \n◎功能選擇◎\n">; printf<"┌──────────────────────────────┐\n">; printf<"│●1-掛號│\n">; printf<"│●2-叫號│\n">; printf<"│●3-分診室│\n">; printf<"│●4-顯示各診室隊(duì)列信息│\n">; printf<"│●5-統(tǒng)計(jì)當(dāng)天就診患者情況<要求按性別和任意年齡區(qū)段進(jìn)行統(tǒng)計(jì)│\n">; printf<"│●6-結(jié)束程序│\n">; printf<"└──────────────────────────────┘\n">;}voidrun<>{ voidintroduce<>; voidinput<>; voidjiaohao<>; voidfp<>; voidstatistic<>; voidtype_statistic<>; charfunction='1',j[10]; while<function> { switch<function> { case'1':input<>;break; case'2':jiaohao<>;break; case'3':fp<>;break; case'4':statistic<>;break; case'5':type_statistic<>;break; case'6':exit<0>;break; default:system<"cls">;//清屏 printf<"\n\terror\n\n請重新輸入:">; } printf<"請選擇功能">; introduce<>; function=getchar<>; gets<j>; while<isdigit<function>==0> //isdigit<function>:判斷function字符是不是數(shù)字 { printf<"您輸入有誤,請重新輸入">; function=getchar<>; gets<j>; } } }voidinput<>{ intchange<char>;// intd; chari,j[8],s[15]; printf<"請輸入需要掛號的病人人數(shù)<請輸入0到9之間的數(shù)>:">; i=getchar<>; gets<j>; while<isdigit<i>==0> //isdigit<i>:判斷i字符是不是數(shù)字 { printf<"您輸入有誤,請重新輸入">; i=getchar<>; gets<j>; } printf<"請輸入%d位病人的個(gè)人信息\n",change<i>>; for<k=1;k<=change<i>;k++> { printf<"第%2d位病人:\n",k>; printf<"姓名:">; strcpy<p[pl].name,gets<s>>; printf<"編號:">; strcpy<p[pl].num,gets<s>>; /* for<d=pl;d>=0;d--> { if<p[pl].num==p[d].num&&pl!=d> printf<"error">; }*/ printf<"性別:">; strcpy<p[pl].sex,gets<s>>; printf<"年齡:">; strcpy<p[pl].year,gets<s>>; pl++; } printf<"已經(jīng)掛號的病人\n">; for<k=g;k<pl;k++> printf<"第%2d位姓名:%s 掛號號碼%s\n",k+1-g,p[k].name,p[k].num>; system<"pause">; //暫停 system<"cls">; //清屏}voidjiaohao<>{ if<g==pl> { system<"cls">; printf<"所有病人都已經(jīng)分配完畢\n">; return; } printf<"病人%s已前往就診掛號號碼:%5s\n\n",p[g].name,p[g].num>; g++; printf<"剩余%2d位等待叫號的病人\n",pl-g>; for<k=g;k<pl;k++> printf<"掛號排序第%2d位姓名:%s 掛號號碼:%5s\n",k+1-g,p[k].name,p[k].num>; system<"pause">; system<"cls">;}voidfp<>//分配診室:fp〔函數(shù){ S1=0;S2=0;S3=0; for<k=0;k<g;k++> { if<atoi<p[k].year>>=35> { S1++; p[k].room=1; } //其中35<含35>歲以上的患者在第一診室 else if<strcmp<p[k].sex,"man">==0> { S2++; p[k].room=2; } //35歲以下男患者進(jìn)第二診室 else { S3++; p[k].room=3 ; } //其它的患者進(jìn)第三診室 printf<"病人%s被分配在第%d診室\n",p[k].name,p[k].room,p[k].num>; } system<"pause">; system<"cls">;}voidstatistic<>//病人信息輸出:statistic<

溫馨提示

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

評論

0/150

提交評論