Chinaunix首页 | 论坛 | 博客
  • 博客访问: 418427
  • 博文数量: 121
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1393
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-11 12:17
个人简介

www.vibexie.com vibexie@qq.com

文章分类

全部博文(121)

文章存档

2015年(55)

2014年(66)

我的朋友

分类: C/C++

2014-03-13 15:21:59

药品管理系统.c


点击(此处)折叠或打开

  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. #include "readline.h"

  4. #define NAME_LEN 25
  5. #define MAX_PARTS 100

  6. struct part
  7. {
  8.     int number;
  9.     char name[NAME_LEN+1];
  10.     int on_hand;
  11. }inventory[MAX_PARTS];

  12. int num_parts=0;
  13. FILE *fp;

  14. int find_part(int number);
  15. void insert();
  16. void search();
  17. void update();
  18. void print();
  19. void menu();
  20. void goout();
  21. void readData();
  22. void saveData();


  23. int main()
  24. {
  25.     int code;

  26.     if((fp=fopen("C://Documents and Settings//Administrator//桌面//inventory.dat","rb+"))==NULL)
  27.     {
  28.         fprintf(stderr,"不能打开数据文件inventory.dat !\n");
  29.         exit(EXIT_FAILURE);
  30.     }

  31.     menu();

  32.     readData();

  33.     for(;;)
  34.     {
  35.         printf("\n请输入您要执行的操作:");
  36.         scanf("%d",&code);

  37.         system("cls");
  38.      menu();

  39.         while(getchar()!='\n');

  40.         switch(code)
  41.         {
  42.         case 1: insert();
  43.             break;
  44.         case 2: search();
  45.             break;
  46.         case 3: update();
  47.             break;
  48.         case 4: print();
  49.             break;
  50.         case 5: {goout();saveData();return 0;};
  51.         default: printf("无效的选项,请重新输入:");
  52.         }
  53.     }

  54.     return 0;
  55. }

  56. int find_part(int number)
  57. {
  58.     int i;
  59.     for(i=0;i<num_parts;i++)
  60.         if(inventory[i].number==number)
  61.             return i;
  62.         return -1;
  63. }

  64. void insert()
  65. {
  66.     int part_number;
  67.     
  68.     if(num_parts==MAX_PARTS)
  69.     {
  70.         printf("存储已经用完!\n");
  71.         return;
  72.     }

  73.     printf("\n您已选择添加药品\n请输入编号:");
  74.     scanf("%d",&part_number);

  75.     if(find_part(part_number)>=0)
  76.     {
  77.         printf("该编号已经存在!请重新输入\n");
  78.         return;
  79.     }
  80.     
  81.     inventory[num_parts].number=part_number;
  82.     printf("请输入药品名称:");
  83.     read_line(inventory[num_parts].name,NAME_LEN);
  84.     printf("请输入该药品的数量:");
  85.     scanf("%d",&inventory[num_parts].on_hand);
  86.     num_parts++;

  87.     printf("保存成功!!!\n");

  88. }

  89. void search()
  90. {


  91.     int i,number;

  92.     printf("\n您已选择查询药品信息\n请输入药品编号:");
  93.     scanf("%d",&number);
  94.     i=find_part(number);
  95.     if(i>=0)
  96.     {
  97.         printf("药品名称:%s\n",inventory[i].name);
  98.         printf("药品库存:%d\n",inventory[i].on_hand);
  99.     }
  100.     else
  101.         printf("该药品不存在!\n");

  102. }


  103. void update()
  104. {


  105.     int i,number,change;

  106.     printf("\n您已经选择进销货管理\n");

  107.     printf("\n请输入要进销货的药品编号:");
  108.     scanf("%d",&number);
  109.     i=find_part(number);
  110.     if(i>=0)
  111.     {
  112.         printf("该药品进货数量为(+/- 表示进销):");
  113.         scanf("%d",&change);
  114.         inventory[i].on_hand+=change;
  115.     }
  116.     else
  117.         printf("该药品不存在!\n");
  118. }


  119. void print()
  120. {

  121.     int i;

  122.     printf("\n您已选择所有查询药品信息\n\n");
  123.     printf("药品编号 药品名称 库存\n\n");
  124.     for(i=0;i<num_parts;i++)
  125.     {
  126.         printf("%6d%12s%10d\n",inventory[i].number,inventory[i].name,inventory[i].on_hand);
  127.     }
  128. }

  129. void menu()
  130. {
  131.     printf("*********************************************************\n");
  132.     printf("********** 药品管理系统 ************\n");
  133.     printf("*********************************************************\n");
  134.     printf("********** 1.添加药品 ************\n");
  135.     printf("********** 2.查询药品信息 ************\n");
  136.     printf("********** 3.进销货管理 ************\n");
  137.     printf("********** 4.显示所有药品信息 ************\n");
  138.     printf("********** 5.保存退出 ************\n");
  139.     printf("*********************************************************\n");
  140.     printf("********** 请按以上提示选择要执行的操作 ************\n");
  141.     printf("*********************************************************\n");
  142. }

  143. void goout()
  144. {
  145.     printf("\n您已选择保存退出!!!谢谢使用本系统!!!\n");
  146. }

  147. void readData()
  148. {
  149.     num_parts=fread(inventory,sizeof(struct part),MAX_PARTS,fp);

  150.     rewind(fp);

  151. }

  152. void saveData()
  153. {
  154.     fwrite(inventory,sizeof(struct part),num_parts,fp);
  155.     fclose(fp);
  156. }


readline.c

点击(此处)折叠或打开

  1. #include<ctype.h>
  2. #include<stdio.h>
  3. #include "readline.h"

  4. int read_line(char str[],int n)
  5. {
  6.     int ch,i=0;
  7.     while(isspace(ch=getchar()))
  8.         ;

  9.     while(ch!='\n' && ch!=EOF)
  10.     {
  11.         if(i<n)
  12.             str[i++]=ch;
  13.         ch=getchar();
  14.     }
  15.     str[i]='\0';
  16.     return i;
  17. }



readline.h

点击(此处)折叠或打开

  1. #ifndef READLINE_H
  2. #define READLINE_H

  3. int read_line(char str[],int n);

  4. #endif







阅读(3186) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~