c++医院挂号系统设计Word文件下载.docx

上传人:b****1 文档编号:3913689 上传时间:2023-05-02 格式:DOCX 页数:61 大小:379.54KB
下载 相关 举报
c++医院挂号系统设计Word文件下载.docx_第1页
第1页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第2页
第2页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第3页
第3页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第4页
第4页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第5页
第5页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第6页
第6页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第7页
第7页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第8页
第8页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第9页
第9页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第10页
第10页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第11页
第11页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第12页
第12页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第13页
第13页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第14页
第14页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第15页
第15页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第16页
第16页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第17页
第17页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第18页
第18页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第19页
第19页 / 共61页
c++医院挂号系统设计Word文件下载.docx_第20页
第20页 / 共61页
亲,该文档总共61页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c++医院挂号系统设计Word文件下载.docx

《c++医院挂号系统设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《c++医院挂号系统设计Word文件下载.docx(61页珍藏版)》请在冰点文库上搜索。

c++医院挂号系统设计Word文件下载.docx

3

19

石凌霖

SARS专科

6

卢瑞鹏

福禄寿健儿宝

2003/03/03

二:

应用层面说明:

医院挂号系统不仅可用在医院挂号上,也可用在其它具比对性质的系统上。

三:

数据结构说明:

为了处理这些复杂的数据,我们定义了六种数据结构来处理数据与数据之间复杂的关系:

1.储存诊别数据的数据结构(SUBJECT):

SUBJECT

字段意义

字段名称

诊别编号

intid

诊别名称

charname[80]

2.储存医生数据的数据结构(DOCTOR):

DOCTOR

医生编号

医生名称

3.储存药物数据的数据结构(MEDICINE):

MEDICINE

药物编号

药物名称

4.储存比对数据的数据结构(MATCH):

MATCH

比对编号

intsubject_id

intdoctor_id

intmedicine_id

5.储存病人数据的数据结构(PATIENT):

PATIENT

病人编号

病人名称

6.储存挂号数据的数据结构(REPORT):

REPORT

挂号编号

intpatient_id

chatpatient_name[80]

charsubject_name[80]

chardoctor_name[80]

charmedicine_name[80]

挂号日期

chardate[80]

四:

主程序与子程序剖析:

1.主程序main():

功能:

允许使用者输入选项(1.新增病人资料,2.挂号,3.查询某病人的就诊纪录,4.查询某医生的看诊纪录,或5.结束程序),并执行该选项的功能。

流程图:

其中挂号功能比较复杂,因为我们必须判断1.某病人编号是否存在2.某病人所挂号的某医生是否有看某诊别3.某医生看某诊别时所开的药物的编号。

流程图:

程序代码:

main()

{

FILE*fp_subjects;

//诊别档

FILE*fp_doctors;

//医生档

FILE*fp_medicines;

//药物档

FILE*fp_matches;

//比对档

FILE*fp_patients;

//病人檔

FILE*fp_reports;

//挂号档

structSUBJECTsubjects[SUBJECTS_NUM+1],sub;

//诊别资料

structDOCTORdoctors[DOCTORS_NUM+1],doc;

//医生资料

structMEDICINEmedicines[MEDICINES_NUM+1],med;

//药物资料

structMATCHmatches[MATCHES_NUM+1],mat;

//比对数据

structPATIENTpatients[PATIENTS_NUM+1],pat;

//病人资料

structREPORTreports[REPORTS_NUM+1],rep;

//挂号数据

intpos_sub;

//诊别数据位置

intpos_doc;

//医生数据位置

intpos_med;

//药物数据位置

intpos_mat;

//比对数据位置

intpos_pat;

//病人数据位置

intpos_rep;

//挂号数据位置

intchoice,result;

//选项与选项执行结果

if(!

(fp_subjects=fopen(SUBJECTS_FILE,"

r"

)))//开启诊别档

{

printf("

无法开启诊别文件,程序终止!

"

);

\n"

exit

(1);

}

(fp_doctors=fopen(DOCTORS_FILE,"

)))//开启医生档

无法开启医生文件,程序终止!

(fp_medicines=fopen(MEDICINES_FILE,"

)))//开启药物档

无法开启药物文件,程序终止!

(fp_matches=fopen(MATCHES_FILE,"

)))//开启比对档

无法开启比对文件,程序终止!

(fp_patients=fopen(PATIENTS_FILE,"

)))//开启病人档

fp_patients=fopen(PATIENTS_FILE,"

w"

(fp_reports=fopen(REPORTS_FILE,"

)))//开启挂号档

fp_reports=fopen(REPORTS_FILE,"

initSubjects(subjects);

//初始化诊别资料

initDoctors(doctors);

//初始化医生资料

initMedicines(medicines);

//初始化药物资料

initMatches(matches);

//初始化比对数据

initPatients(patients);

//初始化病人资料

initReports(reports);

//初始化挂号数据

loadSubjects(subjects,fp_subjects);

//加载诊别数据

loadDoctors(doctors,fp_doctors);

//加载医生数据

loadMedicines(medicines,fp_medicines);

//加载药物数据

loadMatches(matches,fp_matches);

//加载比对数据

loadPatients(patients,fp_patients);

//加载病人数据

loadReports(reports,fp_reports);

//加载挂号数据

fclose(fp_subjects);

fclose(fp_doctors);

fclose(fp_medicines);

fclose(fp_matches);

fclose(fp_patients);

fclose(fp_reports);

while

(1)

*****************主选单*****************"

****************************************"

1.新增病人资料"

2.挂号"

3.查询某病人的就诊纪录"

4.查询某医生的看诊纪录"

5.结束"

请选择>

"

scanf("

%d"

&

choice);

//输入选项

switch(choice)

{

case1:

//新增病人资料

printf("

请输入病人编号>

scanf("

pat.id);

请输入病人名字>

%s"

pat.name);

if(searchPatient(patients,pat.id)>

0)

{

printf("

病人数据重复!

}

else

if(addPatient(patients,pat)>

{

printf("

新增病人资料成功\!

}

else

病人资料已满!

break;

case2:

//挂号

rep.patient_id);

//输入病人编号

pos_pat=searchPatient(patients,rep.patient_id);

if(pos_pat>

0)//如果有此病人编号

{

请输入挂号日期(ex.2002/04/20)>

scanf("

rep.date);

//输入挂号日期

showSubjects(subjects);

请输入诊别编号>

rep.subject_id);

//输入诊别编号

showDoctors(doctors);

请输入医生编号>

rep.doctor_id);

//输入医生编号

pos_mat=searchMatch(matches,rep.subject_id,rep.doctor_id);

if(pos_mat>

0)//如果此医生有看此诊别

//找出此诊别在诊别数据中的位置

pos_sub=searchSubject(subjects,matches[pos_mat].subject_id);

//找出此医生在医生数据中的位置

pos_doc=searchDoctor(doctors,matches[pos_mat].doctor_id);

//找出此医生看此诊别时所开的药物在药物数据中的位置

pos_med=searchMedicine(medicines,matches[pos_mat].medicine_id);

//找出此病人名字

strcpy(rep.patient_name,patients[pos_pat].name);

//找出此诊别名字

strcpy(rep.subject_name,subjects[pos_sub].name);

//找出此医生名字

strcpy(rep.doctor_name,doctors[pos_doc].name);

//找出此药物编号

rep.medicine_id=medicines[pos_med].id;

//找出此药物名字

strcpy(rep.medicine_name,medicines[pos_med].name);

//挂号

if(addReport(reports,rep)>

{

printf("

新增挂号资料成功\!

}

else

挂号数据已满!

else//如果此医生不看此诊别

此医生不看此诊别!

else//如果无此病人编号

无此病人编号!

case3:

//查询某病人的就诊纪录

queryByPatient(reports,pat.id);

case4:

//查询某医生的看诊纪录

showDoctors(doctors);

doc.id);

if(searchDoctor(doctors,doc.id)>

queryByDoctor(reports,doc.id);

无此医生编号!

case5:

//结束程序

fp_patients=fopen(PATIENTS_FILE,"

fp_reports=fopen(REPORTS_FILE,"

savePatients(patients,fp_patients);

saveReports(reports,fp_reports);

fclose(fp_patients);

fclose(fp_reports);

exit

(1);

default:

//无效的选项

无效的选项!

}

}

2.子程序initSubjects(),initDoctors(),initMedicines(),initMatches(),initPatients(),initReports():

初始化资料,在此仅举initSubjects()与initDoctors()两个例子,其它例子与这两个例子相似。

//初始化诊别资料

voidinitSubjects(structSUBJECTsubjects[])

inti;

for(i=1;

i<

=SUBJECTS_NUM;

i++)

subjects[i].id=-1;

//初始化医生资料

voidinitDoctors(structDOCTORdoctors[])

=DOCTORS_NUM;

doctors[i].id=-1;

3.子程序loadSubjects(),loadDoctors(),loadMedicines(),loadMatches(),loadPatients(),loadReports():

加载数据,在此仅举loadSubjects()与loadDoctors()两个例子,其它例子与这两个例子相似。

//加载诊别数据,回传加载数据笔数

intloadSubjects(structSUBJECTsubjects[],FILE*fp)

intcount;

count=0;

while(!

feof(fp))

count=count+1;

fscanf(fp,"

%d\t%s\n"

subjects[count].id,&

subjects[count].name);

returncount;

//加载医生数据,回传加载数据笔数

intloadDoctors(structDOCTORdoctors[],FILE*fp)

doctors[count].id,&

doctors[count].name);

4.子程序searchSubject(),searchDoctor(),searchMedicine(),searchPatient():

搜寻诊别数据,搜寻医生数据,搜寻药物数据,与搜寻病人数据;

搜寻的条件为搜寻符合的编号的数据;

如搜寻诊别数据为搜寻符合的诊别编号的数据。

//搜寻诊别数据,回传诊别数据位置

intsearchSubject(structSUBJECTsubjects[],intid)

intindex;

for(index=1;

index<

=SUBJECTS_NUM&

&

subjects[index].id!

=-1;

index++)

if(subjects[index].id==id)

returnindex;

return-1;

//搜寻医生数据,回传医生数据位置

intsearchDoctor(structDOCTORdoctors[],intid)

=DOCTORS_NUM&

doctors[index].id!

if(doctors[index].id==id)

//搜寻药物数据,回传药物数据位置

intsearchMedicine(structMEDICINEmedicines[],intid)

=MEDICINES_NUM&

medicines[index].id!

if(medicines[index].id==id)

//搜寻病人数据,回传病人数据位置

intsearchPatient(structPATIENTpatients[],intid)

=PATIENTS_NUM&

patients[index].id!

if(patients[index].id==id)

5.子程序searchMatch():

搜寻比对数据;

搜寻的条件与前述4个不太一样,为搜寻同时符合的诊别编号与医生编号的资料,也就是说,搜寻是否有某医生且看某诊别的资料。

//搜寻比对数据,回传比对数据位置

intsearchMatch(structMATCHmatches[],intsid,intdid)

=MATCHES_NUM&

matches[index].id!

if(matches[index].subject_id==sid&

matches[

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2