家庭药品管理系统
#include <stdio.h>
#include <string.h>
#include <stdlib.h>//為了使用exit函數
#define FORMAT1 “%-6s%-12s%-24s%-12s%-6s%-12s%-16s%-24s\n”
#define FORMAT2 “%-6s%-12s%-24s%-12s%-6s%-12s%-16s%-24s\n”
#define TITLE “編號”,“藥名”,“功效”,“類別”,“數量”,“有效日期”,“保存位置”,“生產廠家”
/利用結構體對藥品系統進行定義/
typedef struct{
char num[6];//存放藥品的編號
char name[12];//存放藥品名稱
char effect[24];//藥品的功效
char type[12];//藥品的種類,分為:內服、外用、醫療器具三類
int amount;//藥品的數量
char date[12];//藥品的有效期
//有關于日期一律用10個字符表示,例2019.06.28
char place[16];//藥品的存放位置
char factory[24];//藥品的生產廠家
}drugs;
/函數說明/
void import_drugs();//導入藥品信息
void add_drugs();//添加藥品信息
void browse_drugs();//瀏覽藥品信息
void update_drugs();//編輯藥品信息
void save_drugs();//保存藥品信息
/全局變量定義/
#define N 100//所能存放的最大藥品數
int NN=0;//當前的藥品數
drugs drug[N];//藥品
void main()
{
int menu;
printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
printf("\t◆ ◆\n");
printf("\t◆ 家庭藥品管理系統 v1.0 ◆\n");
printf("\t◆ ◆\n");
printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
printf("\t◆ ◆\n");
printf("\t◆ 操作菜單 ◆\n");
printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
printf("\t◆ ◆\n");
printf("\t◆ 1.添加藥品信息 ◆\n");
printf("\t◆ ◆\n");
printf("\t◆ 2.瀏覽藥品信息 ◆\n");
printf("\t◆ ◆\n");
printf("\t◆ 3.編輯藥品信息 ◆\n");
printf("\t◆ ◆\n");
printf("\t◆ 0.退出 ◆\n");
printf("\t◆ ◆\n");
printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
import_drugs();
while(1)
{
printf(“請輸入您所需要進行的操作:\n”);
scanf("%d",&menu);//通過鍵盤輸入數據,執行相應的程序
getchar();//用于接收回車鍵
switch(menu)//利用switch語句處理多選擇選擇
{
case 1: add_drugs(); break;
case 2: browse_drugs(); break;
case 3: update_drugs(); break;
case 0: exit(0); break;
}
printf(“請按回車鍵繼續操作:\n”);
getchar();
}
}
void import_drugs()//導入藥品信息
{
int n=0;
drugs temp;
FILE *fp;
if((fp=fopen(“藥品.txt”,“r”))NULL)
{
printf(“不能打開文件!\n”);
return;
}
while(fscanf(fp,"%s%s%s%s%d%s%s%s",temp.num,temp.name,temp.effect,temp.type,
&temp.amount,temp.date,temp.place,temp.factory)!=EOF)
drug[n++]=temp;
NN=n;
printf(“系統藥品信息已經導入!共%d種藥品!\n”,NN);
fclose(fp);
}
void add_drugs()//添加藥品信息的函數原型
{
drugs temp;
char ch=‘Y’;
int i,k=0;
while(ch’Y’|| ch==‘y’)
{
printf("\n\n");
k=0;
printf(“請輸入新增藥品的信息\n\n”);
printf(“請輸入藥品的編號:”);
gets(temp.num);
for(i=0;i<NN;i++)
{
if(strcmp(temp.num,drug[i].num)0)
k=1;
}
if(k1)
{
printf(“系統中已存在編號為:%s的藥品!\n\n”,temp.num);
return;
}
else
{
printf(“藥品的名稱:”);
gets(temp.name);
printf(“藥品的主要功效:”);
gets(temp.effect);
printf(“藥品的種類:”);
gets(temp.type);
printf(“藥品的數量:”);
scanf("%d",&temp.amount);
getchar();//用于接收回車鍵
printf(“藥品的生產地點:”);
gets(temp.place);
printf(“藥品的生產廠家:”);
gets(temp.factory);
printf(“藥品的有效截止日期:”);
gets(temp.date);
drug[NN]=temp;
NN++;
printf(“成功完成所有新增信息!\n”);
save_drugs();
printf(“是否繼續輸入新的信息(Y/N)? \n”);
scanf("%c",&ch);
getchar();//用于接收回車鍵
continue;//跳出本次的循環
}
}
}
void browse_drugs()//瀏覽藥品信息
{
int m=0;
int i=0,j=0;
drugs t;
char str[12];
printf(“請輸入您要瀏覽藥品時所需要進行的操作:\n”);
printf(“1、瀏覽全部\n”);
printf(“2、按藥品有效排序瀏覽藥品(從小到大)\n”);
printf(“3、按指定類別瀏覽藥品\n”);
scanf("%d",&m);
getchar();
switch(m)//直接處理多選擇選擇
{
case 1://瀏覽全部
{
printf(FORMAT1, TITLE);
for(i=0;i<NN;i++)
{
printf(FORMAT2,drug[i].num ,drug[i].name ,drug[i].effect ,drug[i].type ,
drug[i].amount ,drug[i].date ,drug[i].place ,drug[i].factory );
}
}
break;
case 2://按藥品有效排序瀏覽藥品(從小到大)
{
printf(FORMAT1, TITLE);
for(i=0;i<NN;i++)
{
for(i=0;j<NN-i-1;j++)
{
if(strcmp(drug[j].date,drug[j+1].date)>0)
{
t=drug[j];
drug[j]=drug[j+1];
drug[j+1]=t;
}
}
}
for(i=0;i<NN;i++)
{
printf(FORMAT2,drug[i].num ,drug[i].name ,drug[i].effect ,drug[i].type ,
drug[i].amount ,drug[i].date ,drug[i].place ,drug[i].factory );
}
}
break;
case 3://按指定類別瀏覽藥品
{
printf(“請輸入你要瀏覽藥品的類別(內服、外用、醫療器具):\n”);
gets(str);
printf(FORMAT1, TITLE);
for(i=0;i<NN;i++)
{
if(strcmp(drug[i].type,str)==0)
{
printf(FORMAT2,drug[i].num ,drug[i].name ,drug[i].effect ,drug[i].type ,
drug[i].amount ,drug[i].date ,drug[i].place ,drug[i].factory );
}
}
}
break;
default:
break;
}
}
void update_drugs()//更新藥品信息
{
char str[6];
int i,k;
while(1)
{
k=0;
printf(“請輸入待修改藥品的編號:\n”);
gets(str);
for(i=0;i<NN;i++)
{
if(strcmp(drug[i].num,str)==0)
{
k=1;
break;
}
}
if(!k)
{
printf(“該藥品不存在!\n”);
}
else
{
printf(“該藥品的信息為:\n”);
printf(FORMAT1, TITLE);
printf(FORMAT2,drug[i].num ,drug[i].name ,drug[i].effect ,drug[i].type ,
drug[i].amount ,drug[i].date ,drug[i].place ,drug[i].factory );
printf(“請輸入新的信息:\n”);
printf(“藥品的名稱:\n”);
gets(drug[i].name);
printf(“該藥品主治功能:\n”);
gets(drug[i].effect);
printf(“該藥品的種類:\n”);
gets(drug[i].type);
printf(“該藥品的數量:\n”);
scanf("%d",&drug[i].amount);
getchar();//用于接收回車鍵
printf(“藥品的生產廠家:\n”);
gets(drug[i].factory);
printf(“藥品的存放地點:\n”);
gets(drug[i].place);
printf(“藥品的有效截止日期:\n”);
gets(drug[i].date);
printf(“修改后的信息如下:\n”);
printf(FORMAT2,drug[i].num ,drug[i].name ,drug[i].effect ,drug[i].type ,
drug[i].amount ,drug[i].date ,drug[i].place ,drug[i].factory );
save_drugs();
break;
}
}
}
void save_drugs()//保存藥品信息
{
int i=0;
FILE *fp;
if((fp=fopen(“藥品.txt”,“w”))==NULL)//fopen打開文件
{
printf(“不能打開文件!\n”);
return;
}
while(i<NN)
{
fprintf(fp,FORMAT2,drug[i].num ,drug[i].name,drug[i].effect ,drug[i].type ,
drug[i].amount ,drug[i].date ,drug[i].place ,drug[i].factory );
i++;
}
printf(“系統藥品信息已經保存!共%d種藥品!\n”,NN);
fclose(fp);//是關閉文件,相當于保存文件
}
總結
- 上一篇: 投票法求众数
- 下一篇: 无人机边缘计算中的计算卸载——Stack