程序大作业健康管理系统.doc_第1页
程序大作业健康管理系统.doc_第2页
程序大作业健康管理系统.doc_第3页
程序大作业健康管理系统.doc_第4页
程序大作业健康管理系统.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include#include#includeusing namespace std;struct patient int registerNum; /用户名 char code10; /密码char date10; /日期char Name20; /病人姓名char gender; /性别char address100; /家庭住址char tel20; /联系电话int age; /年龄double height; /身高double weight; /体重double bloodSugar; /血糖double bloodPressureH; /高压血压double bloodPressureL; /低压血压double eyesight; /视力double lungCapacity; /肺活量double heartRate; /心率double BMI; /BMI指数();struct docWorkbool Mon;bool Tue;bool Wed;bool Thu;bool Fri;bool Sat;bool Sun;struct doctorint registerNum; /用户名 char code10; /密码char name20; /医生姓名char gender2; /性别char address100; /家庭住址char tel20; /联系电话int age; /年龄docWork work; /工作值班情况;struct nodePATpatient p;nodePAT*next;struct nodeDOCdoctor d;nodeDOC*next;/*按名字查找并打印病人信息(密码不打印)*/void byNamePrint(nodePAT*plisthead,char name);/*按用户名查找并打印病人信息(密码不打印)*/void byRegisterNumPrint(nodePAT*plisthead,int registerNum);/*打印所有人的信息(密码不打印)*/void allInfo(nodePAT*plisthead);/*修改信息*/void changeInfo(int change,nodePAT*patNow);void changeCode(nodePAT*patNow);void changeAge(nodePAT*patNow);void changeTel(nodePAT*patNow);void changeAddress(nodePAT*patNow);void changeHeight(nodePAT*patNow);void changeWeight(nodePAT*patNow);void changeBloodSugar(nodePAT*patNow);void changeBloodPressure(nodePAT*patNow);void changeHeartRate(nodePAT*patNow);void chnageEyesight(nodePAT*patNow);void changeLungCapacity(nodePAT*patNow);/*菜单*/void headMenu();void patEnterMenu();void patMenu();void docMenu();void changeMenu();void listMenu();/计算BMIdouble getBMI(patient n);/打印体检表void printEmpty();/*健康建议*/void myBMI(nodePAT*patNow);void myBloodSugar(nodePAT*patNow);void myheartRate(nodePAT*patNow);void mylungCapacity(nodePAT*patNow);void mybloodPressure(nodePAT*patNow);/*文件操作*/*动态医生链表存入文件*/医生信息录入void outfiledoc(int j,doctor doc);/从文件读出链表结点中docvoid infileDOC(int j,doctor *doc);/创建医生链表nodeDOC* createDOCLIST(int j,doctor doc);/存储文件中已有的医生人数int outDOCNUM(int j);/读出已有医生数int getDocNUM();/*动态病人链表存入文件*/病人信息存入void outfilepat(int i,patient pat);/病人信息读出void infilePAT(int i,patient *pat);/读出文件后重建链表nodePAT* createPATLIST(int i,patient pat);/存储已有的病人数void outPATNUM(int i);/读出已有病人数int getPatNUM();/*链表操作*/建立新密码patient codeRegister(nodePAT *temp);/登录后找到该病人在链表中的位置nodePAT* seekPAT(int registerNum,nodePAT*plisthead);nodeDOC* seekDOC(int registerNum,nodeDOC*dlisthead);/登录后验证密码void checkPatCode(int num,char code,nodePAT*p);void checkDocCode(int num,char code,nodeDOC*d);/病人注册用户名及密码patient reg(patient p);/病人登录nodePAT* patLoad(nodePAT*plisthead);/病人信息录入patient infoPAT(patient patNow);/医生登录void docLoad(nodeDOC*dlisthead);/查询符合条件的病人/*查询*void uplistHeight(int i,patient *pat);void lowlistHeight(int i,patient *pat);void uplistWeight(int i,patient *pat);void lowlistWeight(int i,patient *pat);void uplistBloodSugar(int i,patient *pat);void lowlistBloodSugar(int i,patient *pat);void uplistBloodPressure(int i,patient *pat);void lowlistBloodPressure(int i,patient *pat);void uplistLungCapacity(int i,patient *pat);void lowlistLungCapacity(int i,patient *pat);void uplistHeartRate(int i,patient *pat);void lowlistHeartRate(int i,patient *pat);void uplistEyesight(int i,patient *pat);void lowlistEyesight(int i,patient *pat);/病人使用循环nodePAT* patEnterChoice(nodePAT*plisthead);void patUse(int patEnter,nodePAT*plisthead,nodeDOC*dlisthead,nodePAT*patNow);void docUse(int docEnter,nodePAT*plisthead,patient pat,int q);int main()/加载信息int qq=getPatNUM();/获得病人数目cout目前有qq个病人endl;/按照以由病人数动态分布内存patient*pat;pat=(patient*)malloc(sizeof(patient)*qq);/*char s110=NULL,s220=NULL,s320=NULL,s4100=NULL,s510=NULL;for(int l=0;lp=pat0;nodePAT*ptail=plisthead;ptail-next=NULL;for(int n=1;np=patn;ptail-next=tp;tp-next=NULL;ptail=tp;coutpat2.codeenter;switch(enter) case 1:/病人使用int enterChoice=0;system(cls);/利用system函数调用DOS命令cls,清屏。patEnterMenu();/选择登录或注册cinenterChoice;system(cls);if(enterChoice=1)/登录nodePAT*patNow=patLoad(plisthead);int patEnter=0; while(patEnter!=5)if(patEnter5) coutendl;coutendl;coutendl;cout*patEnter;cout*endl;coutendl;coutendl;cout5)cout!endl;break; outfilepat(getPatNUM(),pat);return 0;if(enterChoice=2)/注册patient noww=NULL;noww=reg(noww);/更新数据数组情况patient*newpat;newpat=(patient*)malloc(sizeof(patient)*(qq+1);char s110=NULL,s220=NULL,s320=NULL,s4100=NULL,s510=NULL;for(int l=0;lqq;l+) strcpy(newpatl.address,s4);strcpy(newpatl.code,s1);strcpy(newpatl.tel,s2);strcpy(newpatl.Name,s3);strcpy(newpatl.date,s5); newpatl.age=newpatl.bloodPressureH=newpatl.bloodPressureL=newpatl.bloodSugar=newpatl.BMI=newpatl.eyesight=newpatl.heartRate=newpatl.height=0; newpatl.gender=0; newpatl.registerNum=newpatl.lungCapacity=newpatl.weight=0;/初始化for(int len=0;lenp=noww;ptail-next=now;now-next=NULL;ptail=now;ptail-next=NULL;/新生成结点挂在尾 int patEnter=0; while(patEnter!=5)if(patEnter5)coutendl;coutendl;coutendl;cout*patEnter;cout*endl;coutendl;coutendl;cout5)cout!endl;break; outPATNUM(qq+1);coutsafedocEnter;if(docEnter4)docUse(docEnter,plisthead,pat,q);elsecout!endl;break;return 0;return 0;/*菜单*/void headMenu()cout- 健康管理系统 -endlendl;cout 制作人:endl;cout 付文君 李威endl;cout 贝小歌 杨秋玉endl;cout-请选择访问身份(病人或医生)-endl;cout1.病人访问endl;cout2.医生访问endl;cout请选择访问身份项(请输入对映的数字): ;void patEnterMenu() cout1.登录endl;cout2.注册endl;cout请选择功能项(请输入对映的数字): ;void patMenu()cout1.打印体检表endl;cout2.查询医生值班情况endl;cout3.修改个人信息(包括修改密码)endl;cout4.查询健康建议endl;cout5.退出系统.endlendl;cout请选择功能项(请输入对映的数字): ;void docMenu()cout1.筛选病人endl;cout2.打印病人信息清单endl;cout3.打印所有病人信息endl;cout4.退出系统.endlendl;cout请选择功能项(请输入对映的数字): ;void changeMenu()cout1.修改密码endl;cout2.修改年龄endl;cout3.修改电话endl;cout4.修改住址endl;cout5.修改身高endl;cout6.修改体重endl;cout7.修改血糖endl;cout8.修改血压endl;cout9.修改心率endl; cout10.修改视力endl;cout11.修改肺活量endl;cout12.修改完毕,退出修改endl;cout请选择项目(请输入对映的数字): ;void listMenu()cout1.升序排列身高 2.降序排列身高endl;coutendl;cout3.升序排列体重 4.降序排列体重endl;coutendl;cout5.升序排列血糖 6.降序排列血糖endl;coutendl;cout7.升序排列血压 8.降序排列血压endl;coutendl;cout9.升序排列心率 10.降序排列心率endl;coutendl; cout11.升序排列视力 12.降序排列视力endl;coutendl;cout13.升序排列肺活量 14.降序排列肺活量endl;coutendl;cout15.排序完毕,退出排序endl;coutp.BMI;if(B18.5)cout偏瘦 医生建议:多补充营养物质,增强体育锻炼=18.5)&(B=27.9)cout正常 医生建议:继续保持27.9)cout偏胖 医生建议:多吃水果蔬菜,少吃肉类,增强体育锻炼,控制体重p.bloodSugar=11.1)cout有患有糖尿病的可能 医生建议:需另一天在检验。杜绝吃糖类食品、含胆固醇食品;吃部分水果;戒烟戒酒。p.bloodSugarp.bloodSugar=7.8)cout为糖耐量减低 医生建议:戒烟酒;控制饮食总量,不要吃太饱;不吃高糖、高淀粉、高油脂食物;少吃盐p.bloodSugarp.bloodSugar=6.0)cout若为饭后两小时则正常,否则偏高 医生建议:合理安排饮食,控制血糖在正常范围内,并要经常检测血糖值p.bloodSugarp.bloodSugar3.89)cout血糖正常p.agep.heartRate100)cout心跳偏慢,过低可能患有心脏病 医生建议:去医院进一步检查以确定病情对症下药p.heartRate=100)&(patNow-p.heartRate=150) cout心率正常p.heartRate150)&(patNow-p.heartRate=160) cout窦性心动过速 医生建议:注意饮食习惯和休息;保持心情愉悦;去医院做心电图等进一步检查p.heartRate160)cout可能患有心脏病 医生建议:去医院作心电图等检查进一步确认病情,对症下药;父母应注意饮食问题p.heartRate40)cout心脏病患者 医生建议:注意控制体重;戒烟戒酒,低脂低盐饮食;从事适当量的体育活动,但避免剧烈运动;服用药物来控制病情p.heartRate=40)&(patNow-p.heartRate=60)cout窦性心动过缓 医生建议:注意饮食,控制情绪;每天适当的运动,慢走约半小时p.heartRate60)&(patNow-p.heartRate=100)cout心率正常p.heartRate100)&(patNow-p.heartRate=160)cout窦性心动过速 医生建议:注意适当休息,可服用一些调节植物神经平衡的药p.heartRate160)&(patNow-p.heartRate=220)cout阵发性心动过速(为心脏病患者) 医生建议:注意控制体重;戒烟戒酒,低脂低盐饮食;从事适当量的体育活动,但避免剧烈运动;服用药物来控制病情p.gender=M)if(patNow-p.lungCapacity=2310)cout肺活量正常endl;elsecout呼吸功能较弱 医生建议:适当进行体育锻炼,如:变速跑,游泳,俯卧撑,深呼吸等p.gender=W)if(patNow-p.lungCapacity=1800)cout肺活量正常endl;elsecout呼吸功能较弱 医生建议:适当进行体育锻炼,如:变速跑,游泳,俯卧撑,深呼吸等p.bloodPressureLp.bloodPressureH90)cout血压偏低 医生建议:补充营养p.bloodPressureL=60)&(patNow-p.bloodPressureLp.bloodPressureHp.bloodPressureH=150)cout血压正常p.bloodPressureH150)|(patNow-p.bloodPressureL90)cout血压偏高 医生建议:合理调整膳食结构,严格控制体重;调节自我情绪;多进行有氧运动endl;/医生信息录入/按链表顺序存入doc信息void outfiledoc(int j,doctor *doc)FILE*f;if(f=fopen(doctorlist.dat,wb)!=NULL)for(int k=0;kj;k+)coutPlease input doctors dataendl;coutN;coutregisterNumdock.registerNum;coutcodedock.code;coutagedock.age;coutteldock.tel;coutgenderdock.gender;coutaddressdock.address;coutworkdock.work.Mondock.work.Tuedock.work.Weddock.work.Thudock.work.Fridock.work.Satdock.work.Sun;fwrite(&dock,sizeof(doctor),1,f);fclose(f);elseprintf(01 Open file or create file error.n);/从文件读出链表结点中docvoid infileDOC(int j,doctor *doc)FILE*f;if(f=fopen(doctorlist.dat,rb)!=NULL)for(int k=0;kd=docdd;tail=head;tail-next=NULL;while(ddd=docdd;tail-next=temp;tail=temp;tail-next=NULL;return head;/存储文件中已有的医生人数int outDOCNUM(int j)j=10;ofstream outFile(D.txt,ios:out);if(!outFile)cout1 Open file or create file error.endl;elseoutFilejendl;outFile.close();return j;/读出已有医生数int getDocNUM()int j;ifstream inFile(D.txt,ios:out);if(!inFile)cout2 Open file or create file error.j;inFile.close();return j;/*动态病人链表存入文件*/病人信息存入void outfilepat(int i,patient pat) FILE*f;if(f=fopen(patientlist.dat,wb)!=NULL)for(int k=0;ki;k+)fwrite(&patk,sizeof(patient),1,f);coutout SUCCEESSendl;fclose(f);elseprintf(0p Open file or create file error.n);/病人信息读出void infilePAT(int i,patient *pat)if(i!=0)FILE*f; if(f=fopen(patientlist.dat,rb)!=NULL)for(int k=0;ki;k+)fread(&patk,sizeof(patient),1,f);coutin SUCCEESSendl;fclose(f); else printf(02p Open file or create file error.n);elsecout目前无任何病人p=patpp;tail=head;tail-next=NULL;while(ppp=patpp;tail-next=temp;tail=temp;tail-next=NULL;return head;/存储已有的病人数void outPATNUM(int i) ofstream outFile(P.txt,ios:out); if(!outFile)cout3 Open file or create file error.endl; elseoutFileiendl;outFile.close();/读出已有病人数int getPatNUM()int i;ifstream inFile(P.txt,ios:out);if(!inFile)cout4 Open file or create file error.i;inFile.close();return i;/*链表操作*/建立新密码patient codeRegister(patient noww)char c110=NULL;cout-Please input your new code(limited to 9 figures of char)-noww.code;coutnoww.codeendl;cout-Please input your new code again-c1;bool is=true;if(strcmp(noww.code,c1)!=0)is=false;if(is)cout-set up code successfully -endl;else bool is1=false;docout-Mismatched code!Please input

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论