热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C语言实现医院管理系统

这篇文章主要为大家详细介绍了C语言实现医院管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下这个是C语言学完后的一个程序实践的内用。编写一个医院病人管理系统。这个程序有一些

这篇文章主要为大家详细介绍了C语言实现医院管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

这个是C语言学完后的一个程序实践的内用。编写一个医院病人管理系统。这个程序有一些BUG,要操作得当,否则可能结果有问题。不过作为作业应付一下还是有模有样的。

 #include #include #include typedef struct patient { char ID[10]; char name[10]; char bingli[300]; int cost[3]; struct patient * next; }node1; typedef struct storage { int amount[3]; int price[3]; }node2; node2 init(node2 temp) { temp.amount[0]=20; temp.amount[1]=20; temp.amount[2]=10; temp.price[0]=5; temp.price[1]=9; temp.price[2]=16; return temp; } void mainmeun() { printf("\n"); printf(" 健康是快乐的源泉\n"); printf("********************************\n"); printf("1.注册新病人信息\n"); printf("2.查询病人信息\n"); printf("3.写病历\n"); printf("4.病人消费\n"); printf("5.列出所有病人信息\n"); printf("6.载入所有病人信息\n"); printf("7.保存\n"); printf("8.查询药品库存\n"); printf("9.离开\n"); printf("*********************************\n"); } node1 * create(node1 *p1) { node1 *p; p=(node1 *)malloc(sizeof(node1)); printf("请输入病人ID\n"); scanf("%s",p->ID); while(p1->ID&&strcmp(p1->ID,p->ID)) { p1=p1->next; } if(p1==NULL) { printf("请输入病人姓名\n"); scanf("%s",p->name); strcpy(p->bingli,"0"); p->cost[0]=0; p->cost[1]=0; p->cost[2]=0; p->next=NULL; printf("已注入您的信息\n"); return p; } else { printf("输入病人ID以存在,注册失败\n"); return p; } } node1 * insert(node1 * head,node1 *p) { node1 *p1; if(head==NULL) { head=p; p->next=NULL; } else { p1=head; while(p1->next) { p1=p1->next; } p1->next=p; p->next=NULL; } return(head); } void search(node1 *p1) { int sum; char a[10]; printf("请输入病人ID\n"); scanf("%s",a); while(p1->ID&&strcmp(p1->ID,a)) { p1=p1->next; } if(p1) { printf("ID:%s\n",p1->ID); printf("姓名:%s\n",p1->name); printf("病例:%s\n",p1->bingli); printf("消费记录:\n"); if(p1->cost[0]) printf("巴米尔\t%d\n",p1->cost[0]); if(p1->cost[1]) printf("感冒灵\t%d\n",p1->cost[1]); if(p1->cost[2]) printf("病毒灵\t%d\n",p1->cost[2]); sum=p1->cost[0]*5+p1->cost[1]*9+p1->cost[2]*16; printf("总费用\t%d\n",sum); } else printf("该病人没有注册\n"); } void bingli(node1 *p) { char a[10]; char bingli[300]; char enter[5]=":\n"; printf("请输入病人ID\n"); scanf("%s",a); while(p->ID&&strcmp(p->ID,a)) { p=p->next; } if(p==NULL) { printf("无该病人信息\n"); } else { printf("请写病例:\n"[email protected]*码网); scanf("%s",bingli); strcpy(p->bingli,bingli); strcat(p->bingli,enter); } } node2 buy(node1 *p,node2 temp) { char i[10]; printf("请输入病人ID\n"); scanf("%s",i); while(p->ID&&strcmp(p->ID,i)) { p=p->next; } while(1) { int a,b,c,d; printf("1.购买巴米尔\n"); printf("2.购买感冒灵\n"); printf("3.购买病毒灵\n"); printf("0.退出\n"); scanf("%d",&a); switch(a) { case 1: do { printf("现有库存%d\n",temp.amount[0]); printf("购买巴米尔数量:"); scanf("%d",&b); temp.amount[0]=temp.amount[0]-b; p->cost[0]+=b*5; }while(b>20); break; case 2: do { printf("现有库存%d\n",temp.amount[1]); printf("购买感冒灵数量:"); scanf("%d",&c); temp.amount[1]=temp.amount[1]-c; p->cost[1]+=c*9; }while(c>20); break; case 3: do { printf("现有库存%d\n",temp.amount[2]); printf("购买病毒灵数量:"); scanf("%d",&d); temp.amount[2]=temp.amount[2]-d; p->cost[2]+=d*16; }while(d>=10); break; case 0: return temp; } } } void list(node1 *p) { if(p==NULL) printf("尚无病人信息\n"); else { do{ printf("病人ID:%s\n",p->ID); printf("病人姓名:%s\n",p->name); printf("病人病例:%s\n",p->bingli); printf("购买巴米尔费用:%d\n",p->cost[0]); printf("购买感冒灵费用:%d\n",p->cost[1]); printf("购买病毒灵费用:%d\n",p->cost[2]); printf("\n"); p=p->next; }while(p!=NULL); } } node1 * load(node1 *p) { char ID[10],name[10],bingli[300]; int cost0,cost1,cost2; FILE *fp; fp=fopen("information.txt","r"); int n=0; node1 *p1,*p2; while(!feof(fp)) { n++; p1=(node1 *)malloc(sizeof(node1)); fscanf(fp,"%s",ID); fscanf(fp,"%s",name); fscanf(fp,"%s",bingli); fscanf(fp,"%d",&cost0); fscanf(fp,"%d",&cost1); fscanf(fp,"%d",&cost2); strcpy(p1->ID,ID); strcpy(p1->name,name); strcpy(p1->bingli,bingli); p1->cost[0]=cost0; p1->cost[1]=cost1; p1->cost[2]=cost2; p1->next=NULL; if(n==1) { p=p1; p2=p1; } else { p2->next=p1; p2=p1; } } fclose(fp); return p; } void save(node1 *p) { FILE *fp; fp=fopen("information.txt","w"); if(p!=NULL) do{ fprintf(fp,"%s\n",p->ID); fprintf(fp,"%s\n",p->name); fprintf(fp,"%s\n",p->bingli); fprintf(fp,"%d\n",p->cost[0]); fprintf(fp,"%d\n",p->cost[1]); fprintf(fp,"%d\n",p->cost[2]); p=p->next; }while(p!=NULL); fclose(fp); } void liststock(node2 temp) { printf("药品\t数量\t价格\t\n"); printf("巴米尔\t%d\t%d\t\n",temp.amount[0],temp.price[0]); printf("感冒灵\t%d\t%d\t\n",temp.amount[1],temp.price[1]); printf("病毒灵\t%d\t%d\t\n",temp.amount[2],temp.price[2]); } chose() { node1 *head=NULL,*p; node2 temp; temp=init(temp); while(1) { mainmeun(); int a; scanf("%d",&a); switch(a) { case 1: p=create(head); head=insert(head,p); break; case 2: search(head); break; case 3: bingli(head); break; case 4: temp=buy(head,temp); break; case 5: list(head); break; case 6: head=load(head); break; case 7: save(head); break; case 8: liststock(temp); break; case 9: printf("谢谢使用\n"); return(0); default: printf("输入有误,重新输入\n"); break; } } } void main() { chose(); }

运行时的截图,由于模块太多,就看看主页面吧。

更多学习资料请关注专题《管理系统开发》。

以上就是C语言实现医院管理系统的详细内容,更多请关注gaodaima编程笔记其它相关文章!



推荐阅读
  • 单链表的高效遍历及性能优化策略
    本文探讨了单链表的高效遍历方法及其性能优化策略。在单链表的数据结构中,插入操作的时间复杂度为O(n),而遍历操作的时间复杂度为O(n^2)。通过在 `LinkList.h` 和 `main.cpp` 文件中对单链表进行封装,我们实现了创建和销毁功能的优化,提高了单链表的使用效率。此外,文章还介绍了几种常见的优化技术,如缓存节点指针和批量处理,以进一步提升遍历性能。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • 深入解析Android 4.4中的Fence机制及其应用
    在Android 4.4中,Fence机制是处理缓冲区交换和同步问题的关键技术。该机制广泛应用于生产者-消费者模式中,确保了不同组件之间高效、安全的数据传输。通过深入解析Fence机制的工作原理和应用场景,本文探讨了其在系统性能优化和资源管理中的重要作用。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 分享一款基于Java开发的经典贪吃蛇游戏实现
    本文介绍了一款使用Java语言开发的经典贪吃蛇游戏的实现。游戏主要由两个核心类组成:`GameFrame` 和 `GamePanel`。`GameFrame` 类负责设置游戏窗口的标题、关闭按钮以及是否允许调整窗口大小,并初始化数据模型以支持绘制操作。`GamePanel` 类则负责管理游戏中的蛇和苹果的逻辑与渲染,确保游戏的流畅运行和良好的用户体验。 ... [详细]
  • NOIP2000的单词接龙问题与常见的成语接龙游戏有异曲同工之妙。题目要求在给定的一组单词中,从指定的起始字母开始,构建最长的“单词链”。每个单词在链中最多可出现两次。本文将详细解析该题目的解法,并分享学习过程中的心得体会。 ... [详细]
  • 开发日志:201521044091 《Java编程基础》第11周学习心得与总结
    开发日志:201521044091 《Java编程基础》第11周学习心得与总结 ... [详细]
  • Python内置模块详解:正则表达式re模块的应用与解析
    正则表达式是一种强大的文本处理工具,通过特定的字符序列来定义搜索模式。本文详细介绍了Python内置的`re`模块,探讨了其在字符串匹配、验证和提取中的应用。例如,可以通过正则表达式验证电子邮件地址、电话号码、QQ号、密码、URL和IP地址等。此外,文章还深入解析了`re`模块的各种函数和方法,提供了丰富的示例代码,帮助读者更好地理解和使用这一工具。 ... [详细]
  • 在洛谷 P1344 的坏牛奶追踪问题中,第一问要求计算最小割,而第二问则需要找到割边数量最少的最小割。通过为每条边附加一个单位权值,可以在求解最小割时优先选择边数较少的方案,从而同时解决两个问题。这种策略不仅简化了问题的求解过程,还确保了结果的最优性。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • 题目要求维护一个数列,并支持两种操作:一是查询操作,语法为QL,用于查询数列末尾L个数中的最大值;二是更新操作,用于修改数列中的某个元素。本文通过ST表(Sparse Table)优化查询效率,确保在O(1)时间内完成查询,同时保持较低的预处理时间复杂度。 ... [详细]
author-avatar
maylo1978
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有