经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
C语言实现医院管理系统
来源:jb51  时间:2018/12/12 9:29:08  对本文有异议

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

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. typedef struct patient
  5. {
  6. char ID[10];
  7. char name[10];
  8. char bingli[300];
  9. int cost[3];
  10. struct patient * next;
  11. }node1;
  12. typedef struct storage
  13. {
  14. int amount[3];
  15. int price[3];
  16. }node2;
  17. node2 init(node2 temp)
  18. {
  19. temp.amount[0]=20;
  20. temp.amount[1]=20;
  21. temp.amount[2]=10;
  22. temp.price[0]=5;
  23. temp.price[1]=9;
  24. temp.price[2]=16;
  25. return temp;
  26. }
  27. void mainmeun()
  28. {
  29. printf("\n");
  30. printf(" 健康是快乐的源泉\n");
  31. printf("********************************\n");
  32. printf("1.注册新病人信息\n");
  33. printf("2.查询病人信息\n");
  34. printf("3.写病历\n");
  35. printf("4.病人消费\n");
  36. printf("5.列出所有病人信息\n");
  37. printf("6.载入所有病人信息\n");
  38. printf("7.保存\n");
  39. printf("8.查询药品库存\n");
  40. printf("9.离开\n");
  41. printf("*********************************\n");
  42. }
  43. node1 * create(node1 *p1)
  44. {
  45. node1 *p;
  46. p=(node1 *)malloc(sizeof(node1));
  47. printf("请输入病人ID\n");
  48. scanf("%s",p->ID);
  49. while(p1->ID&&strcmp(p1->ID,p->ID))
  50. {
  51. p1=p1->next;
  52. }
  53. if(p1==NULL)
  54. {
  55. printf("请输入病人姓名\n");
  56. scanf("%s",p->name);
  57. strcpy(p->bingli,"0");
  58. p->cost[0]=0;
  59. p->cost[1]=0;
  60. p->cost[2]=0;
  61. p->next=NULL;
  62. printf("已注入您的信息\n");
  63. return p;
  64. }
  65. else
  66. {
  67. printf("输入病人ID以存在,注册失败\n");
  68. return p;
  69. }
  70. }
  71. node1 * insert(node1 * head,node1 *p)
  72. {
  73. node1 *p1;
  74. if(head==NULL)
  75. {
  76. head=p;
  77. p->next=NULL;
  78. }
  79. else
  80. {
  81. p1=head;
  82. while(p1->next)
  83. {
  84. p1=p1->next;
  85. }
  86. p1->next=p;
  87. p->next=NULL;
  88. }
  89. return(head);
  90. }
  91. void search(node1 *p1)
  92. {
  93. int sum;
  94. char a[10];
  95. printf("请输入病人ID\n");
  96. scanf("%s",a);
  97. while(p1->ID&&strcmp(p1->ID,a))
  98. {
  99. p1=p1->next;
  100. }
  101. if(p1)
  102. {
  103. printf("ID:%s\n",p1->ID);
  104. printf("姓名:%s\n",p1->name);
  105. printf("病例:%s\n",p1->bingli);
  106. printf("消费记录:\n");
  107. if(p1->cost[0])
  108. printf("巴米尔\t%d\n",p1->cost[0]);
  109. if(p1->cost[1])
  110. printf("感冒灵\t%d\n",p1->cost[1]);
  111. if(p1->cost[2])
  112. printf("病毒灵\t%d\n",p1->cost[2]);
  113. sum=p1->cost[0]*5+p1->cost[1]*9+p1->cost[2]*16;
  114. printf("总费用\t%d\n",sum);
  115. }
  116. else
  117. printf("该病人没有注册\n");
  118. }
  119. void bingli(node1 *p)
  120. {
  121. char a[10];
  122. char bingli[300];
  123. char enter[5]=":\n";
  124. printf("请输入病人ID\n");
  125. scanf("%s",a);
  126. while(p->ID&&strcmp(p->ID,a))
  127. {
  128. p=p->next;
  129. }
  130. if(p==NULL)
  131. {
  132. printf("无该病人信息\n");
  133. }
  134. else
  135. {
  136. printf("请写病例:\n");
  137. scanf("%s",bingli);
  138. strcpy(p->bingli,bingli);
  139. strcat(p->bingli,enter);
  140. }
  141. }
  142. node2 buy(node1 *p,node2 temp)
  143. {
  144. char i[10];
  145. printf("请输入病人ID\n");
  146. scanf("%s",i);
  147. while(p->ID&&strcmp(p->ID,i))
  148. {
  149. p=p->next;
  150. }
  151. while(1)
  152. {
  153. int a,b,c,d;
  154. printf("1.购买巴米尔\n");
  155. printf("2.购买感冒灵\n");
  156. printf("3.购买病毒灵\n");
  157. printf("0.退出\n");
  158. scanf("%d",&a);
  159. switch(a)
  160. {
  161. case 1:
  162. do
  163. {
  164. printf("现有库存%d\n",temp.amount[0]);
  165. printf("购买巴米尔数量:");
  166. scanf("%d",&b);
  167. temp.amount[0]=temp.amount[0]-b;
  168. p->cost[0]+=b*5;
  169. }while(b>20);
  170. break;
  171. case 2:
  172. do
  173. {
  174. printf("现有库存%d\n",temp.amount[1]);
  175. printf("购买感冒灵数量:");
  176. scanf("%d",&c);
  177. temp.amount[1]=temp.amount[1]-c;
  178. p->cost[1]+=c*9;
  179. }while(c>20);
  180. break;
  181. case 3:
  182. do
  183. {
  184. printf("现有库存%d\n",temp.amount[2]);
  185. printf("购买病毒灵数量:");
  186. scanf("%d",&d);
  187. temp.amount[2]=temp.amount[2]-d;
  188. p->cost[2]+=d*16;
  189. }while(d>=10);
  190. break;
  191. case 0:
  192. return temp;
  193. }
  194. }
  195. }
  196. void list(node1 *p)
  197. {
  198. if(p==NULL)
  199. printf("尚无病人信息\n");
  200. else
  201. {
  202. do{
  203. printf("病人ID:%s\n",p->ID);
  204. printf("病人姓名:%s\n",p->name);
  205. printf("病人病例:%s\n",p->bingli);
  206. printf("购买巴米尔费用:%d\n",p->cost[0]);
  207. printf("购买感冒灵费用:%d\n",p->cost[1]);
  208. printf("购买病毒灵费用:%d\n",p->cost[2]);
  209. printf("\n");
  210. p=p->next;
  211. }while(p!=NULL);
  212. }
  213. }
  214. node1 * load(node1 *p)
  215. {
  216. char ID[10],name[10],bingli[300];
  217. int cost0,cost1,cost2;
  218. FILE *fp;
  219. fp=fopen("information.txt","r");
  220. int n=0;
  221. node1 *p1,*p2;
  222. while(!feof(fp))
  223. {
  224. n++;
  225. p1=(node1 *)malloc(sizeof(node1));
  226. fscanf(fp,"%s",ID);
  227. fscanf(fp,"%s",name);
  228. fscanf(fp,"%s",bingli);
  229. fscanf(fp,"%d",&cost0);
  230. fscanf(fp,"%d",&cost1);
  231. fscanf(fp,"%d",&cost2);
  232. strcpy(p1->ID,ID);
  233. strcpy(p1->name,name);
  234. strcpy(p1->bingli,bingli);
  235. p1->cost[0]=cost0;
  236. p1->cost[1]=cost1;
  237. p1->cost[2]=cost2;
  238. p1->next=NULL;
  239. if(n==1)
  240. {
  241. p=p1;
  242. p2=p1;
  243. }
  244. else
  245. {
  246. p2->next=p1;
  247. p2=p1;
  248. }
  249. }
  250. fclose(fp);
  251. return p;
  252. }
  253. void save(node1 *p)
  254. {
  255. FILE *fp;
  256. fp=fopen("information.txt","w");
  257. if(p!=NULL)
  258. do{
  259. fprintf(fp,"%s\n",p->ID);
  260. fprintf(fp,"%s\n",p->name);
  261. fprintf(fp,"%s\n",p->bingli);
  262. fprintf(fp,"%d\n",p->cost[0]);
  263. fprintf(fp,"%d\n",p->cost[1]);
  264. fprintf(fp,"%d\n",p->cost[2]);
  265. p=p->next;
  266. }while(p!=NULL);
  267. fclose(fp);
  268. }
  269. void liststock(node2 temp)
  270. {
  271. printf("药品\t数量\t价格\t\n");
  272. printf("巴米尔\t%d\t%d\t\n",temp.amount[0],temp.price[0]);
  273. printf("感冒灵\t%d\t%d\t\n",temp.amount[1],temp.price[1]);
  274. printf("病毒灵\t%d\t%d\t\n",temp.amount[2],temp.price[2]);
  275. }
  276. chose()
  277. {
  278. node1 *head=NULL,*p;
  279. node2 temp;
  280. temp=init(temp);
  281. while(1)
  282. {
  283. mainmeun();
  284. int a;
  285. scanf("%d",&a);
  286. switch(a)
  287. {
  288. case 1:
  289. p=create(head);
  290. head=insert(head,p);
  291. break;
  292. case 2:
  293. search(head);
  294. break;
  295. case 3:
  296. bingli(head);
  297. break;
  298. case 4:
  299. temp=buy(head,temp);
  300. break;
  301. case 5:
  302. list(head);
  303. break;
  304. case 6:
  305. head=load(head);
  306. break;
  307. case 7:
  308. save(head);
  309. break;
  310. case 8:
  311. liststock(temp);
  312. break;
  313. case 9:
  314. printf("谢谢使用\n");
  315. return(0);
  316. default:
  317. printf("输入有误,重新输入\n");
  318. break;
  319. }
  320. }
  321. }
  322. void main()
  323. {
  324. chose();
  325. }

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号