需求分析:
1.设计题目:某医药公司销售系统
2.系统功能需求分析:经过对程序设计题目的分析可知,整个程序的设计实现大致分为四个模块,其中每一个模块对应一个函数,他们的功能分别是,录入药品信息,购进药品,出售药品,库存显示。
1、录入药品信息:在D盘中创建MyFile.txt文件,并对药品进行录入。
2、购进药品:模拟药品进购,并且按照题目要求,随时购进药品,并对其进行储存。
3、出售药品:按照题目的具体要求能够随时出售药品,并对其进行储存。
4、药库现状查看:可以随时对药库的现存状况进行查看 包括药品编号 药品名字,购进数量,购进价格,出售药品数,出售价格这六项。
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
原文件存在D盘的MyF ile.txt文件中,包括药品编号,药品名字,购进数量,购进价格,出售药品数,出售价格这六项信息,通过fopen函数读取,然后通过调用各个函数,运行其各项功能。
- 概要设计:
系统总体设计框架:
1、程序总体设计图
- 详细设计:
主要阐述功能模块的算法设计思路
本程序主要由四个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,录入药品信息,购进药品,出售药品和药库现状是程序中较为核心的部分下面分别进行说明。
1、录入药品信息
首先在D盘中创建一个MyFile文件,文件储存药店里药品的信息,信息显示依次为药品编号,药品名字,购进数量,购进价格,出售药品数,出售价格。在编写一个fopen函数,打开D盘中的MyFile文件,并且按照药品编号,药品名字,购进数量,购进价格,出售药品数,出售价格的顺序依次输出。具体的程序段如下:int i,j,z;
FILE*fp;fp=fopen("d:\\MyFile.txt","w");
printf("请输入您要输入的药品信息:\n");
printf("您要输入几种药品信息:\n");
scanf("%d",&i);
for(j=0;j<i;j++)
{printf("请输入药品的编号:\n");
scanf("%d",&med[j].num1);
printf("输入要添加的药品名称,购进数量,购进价格,出售药品数,出售价格\n");
scanf("%s %d %f %d %f",med[j].name,&med[j].num2,&med[j].price1,&med[j].num3,&med[j].price2);
printf("%s %d %f %d %f\n",med[j].name,med[j].num2,med[j].price1,med[j].num3,med[j].price2);
}printf("药品编号 药品名称 购进数量 购进价格 出售药品数 出售价格\n");
for(z=0;z<SIZE;z++)
printf("%s %d %6.2f %d%6.2f\n",med[z].name,med[z].num2,med[z].price1,med[z].num3,med[z].price2);
printf(" ***请选择操作1:录入药品信息(读取原始信息) 2 :顾客买药处理(购进药品出售药品)3:某日某种药品销售情况(出售显示 库存显示 计算利润)***\n");printf(" 4:退出!\n");
fclose(fp);
2,购进药品类似出售药品,运用scanf函数先输入图书的药品编号,再输入药品的数量,在对药品的数量进行nu m2++的操作。具体程序如下:void goujin()
{int i,j;
int num;
printf("购进药品*****************************\n");
printf("输入编号:");scanf("%d",&num);printf("输入数量:" );scanf("%d",&j);
for(i=0;i<10;i++)
if(num==med[i].num1)
{med[i].num2+=j;
printf("这种药品数是:%d\n",med[i].num2);printf("***请选择操作1:录入药品信息课(读取原始信息)2 :顾客买药处理(购进药品出售药品) 3:某日某种药品销售情况(出售显示 库存显示 计算利润)***\n");
printf(" 4:退出!\n");
}
3 出售药品
该函数执行时,首先出来提示信息,然后运用scanf函数输入药品编号,通过函数的调用读取D盘中的数据,并按照药品编号,药品名字,购进数量,购进价格,出售药品数, 出售价格这样的顺序进行输出,由于药品已售出,故要对该药品的数量进行num2--的操作,对该药品售出的数量进行num 3++操作。
具体程序如下:void chushou()
{int i;int num;
printf("…… 出售药品\n");
printf("你想买哪种药:");scanf("%d",&num);printf("以下是此药信\n");
for(i=0;i<10;i++)
if(num==med[i].num1)
{med[i].num2--;med[i].num3++;
printf("编号名称售价\n");
printf("%d%s%6.2 f\n",med[i].num1,med[i].name,med[i].price2);
printf("***请选择操作1:录入药品信息(读取原始信息)2 :顾客买药处理(购进药品出售药品) 3:某日某种药品销售情况(出售显示 库存显示 计算利润)***\n");
printf("4:退出!\n");
}
4.药库现状
通过函数的调用显示出现存的药品状况几及出售的药品状况。
具体程序如下:void mednow()
{int i,j;
FILE*fp;fp=fopen("d:\\MyFile.txt","r+");
for(j=0;j<SIZE;j++)
{scanf("%d %s %d %f %d %f\n",&med[j].num1,&med[j].name,&med[j].num2,&med[j].price1,&med[j].num3,&med[j].price2);
}printf("……**** 库 存 显 示\n");
printf("药品编号 药品名称 购进数量 购进价格 出售药品数 出售价\n");
for(i=0;i<SIZE;i++)
{printf("%d %s %d %f %d %f\n",med[i].num1,med[i].name,med[i].num2,med[i].price1,med[i].num3,med[i].price2);
}fclose(fp);printf("***请选择操作1:录入药品信息(读取原始信息)2 :顾客买药处理(购进药品出售药品) 3:某日某种药品销售情况(出售显示 库存显示 计算利润)***\n");
printf("4:退出!\n");}
程序代码
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define SIZE 10
struct medicine
{int num1;int num2;int num3;char name[20];
float price1;
float price2;
}med[SIZE];
void save()
{int i,j,z;
FILE*fp;fp=fopen("d:\\MyFile.txt","w");
printf("请输入您要输入的药品信息:\n");
printf("您要输入几种药品信息:\n");
scanf("%d",&i);
for(j=0;j<i;j++)
{printf("请输入药品的编号:\n");
scanf("%d",&med[j].num1);
printf("输入要添加的药品名称,购进数量,购进价格,出售药品数,出售价格\n");
scanf("%s %d %f %d %f",med[j].name,&med[j].num2,&med[j].price1,&med[j].num3,&med[j].price2);
printf("%s %d %f %d %f\n",med[j].name,med[j].num2,med[j].price1,med[j].num3,med[j].price2);
}printf("药品编号 药品名称 购进数量 购进价格 出售药品数 出售价格\n");
for(z=0;z<SIZE;z++)
printf("%s %d %6.2f %d%6.2f\n",med[z].name,med[z].num2,med[z].price1,med[z].num3,med[z].price2);
printf(" ***请选择操作1:录入药品信息(读取原始信息) 2 :顾客买药处理(购进药品出售药品)3:某日某种药品销售情况(出售显示 库存显示 计算利润)***\n");printf(" 4:退出!\n");fclose(fp);
}void goujin()
{int i,j;
int num;
printf("购进药品*****************************\n");
printf("输入编号:");scanf("%d",&num);printf("输入数量:" );scanf("%d",&j);
for(i=0;i<10;i++)
if(num==med[i].num1)
{med[i].num2+=j;
printf("这种药品数是:%d\n",med[i].num2);printf("***请选择操作1:录入药品信息课(读取原始信息)2 :顾客买药处理(购进药品出售药品) 3:某日某种药品销售情况(出售显示 库存显示 计算利润)***\n");
printf(" 4:退出!\n");
}
}
void chushou()
{int i;
int num;
printf("…… 出售药品\n");
printf("你想买哪种药:");scanf("%d",&num);printf("以下是此药信\n");
for(i=0;i<10;i++)
if(num==med[i].num1)
{med[i].num2--;med[i].num3++;
printf("编号名称售价\n");
printf("%d%s%6.2 f\n",med[i].num1,med[i].name,med[i].price2);
printf("***请选择操作1:录入药品信息(读取原始信息)2 :顾客买药处理(购进药品出售药品) 3:某日某种药品销售情况(出售显示 库存显示 计算利润)***\n");printf("4:退出!\n");
}
}void mednow()
{int i,j;
FILE*fp;fp=fopen("d:\\MyFile.txt","r+");
for(j=0;j<SIZE;j++)
{scanf("%d %s %d %f %d %f\n",&med[j].num1,&med[j].name,&med[j].num2,&med[j].price1,&med[j].num3,&med[j].price2);
}printf("……**** 库 存 显 示\n");
printf("药品编号 药品名称 购进数量 购进价格 出售药品数 出售价\n");
for(i=0;i<SIZE;i++)
{printf("%d %s %d %f %d %f\n",med[i].num1,med[i].name,med[i].num2,med[i].price1,med[i].num3,med[i].price2);
}fclose(fp);printf("***请选择操作1:录入药品信息(读取原始信息)2 :顾客买药处理(购进药品出售药品) 3:某日某种药品销售情况(出售显示 库存显示 计算利润)***\n");printf("4:退出!\n");}
void main()
{printf("******\n");printf("某医药公司售货系统******\n");printf("按1:录入药品信息******\n");printf("****** 按2:顾客买药处理\n");printf("按3:某日某种药品销售情况\n");
printf("按 4:退 出 !!******\n");printf("请选择序号按回车确认\n");
aa:switch(getch())
{case'1' :save();break;
case'2' :chushou();break;
case'3' :mednow();break;
case'4':exit(0);
}goto aa;
}