药店的药品销售统计系统.docx
《药店的药品销售统计系统.docx》由会员分享,可在线阅读,更多相关《药店的药品销售统计系统.docx(15页珍藏版)》请在冰点文库上搜索。
药店的药品销售统计系统
数据结构实验报告
实验六
实验题目:
小型系统开发(课程设计)
指导老师:
王文霞
专业班级:
计算机科学与技术系1102班
姓名:
王珣(2011100216)李国宝(2011100220)
马佳丽(2011100238)张艳(2011100257)
2013年5月30日
实验类型_设计_实验室_软件实验室一__
1、实验题目
小型系统开发(课程设计)
2、实验目的和要求
掌握小型系统开发方法,提高学生综合开发能力。
根据实际问题,设计方案,综合运用课程知识,完成《学生成绩管理系统》或《数据结构算法演示系统》的设计、编程与调试工作。
三、实验内容
上机实验内容三:
药店的药品销售统计系统
1.设计一系统,实现医药公司定期对各药品的销售记录进行统计,并按药品编号、单价、销售量或销售额做出排序。
2.设计分析
在设计中,首先从数据文件读出各药品的信息记录,存储在顺序表中。
各药品的信息包括:
药品编号、药品名称、单价、销售量、销售额。
其中药品编号共4位,采用字母和数字混合编号,如:
B125,前一位为大写字母,后三位为数字。
3.存储结构类型定义
①药品信息的存储结构类型定义
typedefstructnode
{
charnum[4];/*药品编号*/
charname[10];/*药品名称*/
floatprice;/*单价*/
intcount;/*销售量*/
floatsale;/*销售额*/
}DataType;
②存储药品信息的顺序表的定义
typedefstruct
{
DataTyper[maxsize];
intlength;
}sequenList;
四、实验步骤
#include
#include
#include
#definemaxsize100//该医药公司药品最大种类
typedefstructnode//药品信息的存储结构类型定义
{
charnum[10];//药品编号
charname[30];
floatprice;//单价
intcount;//销售量
floatsale;//销售额
}DataType;
typedefstruct//存储药品信息的顺序表的定义
{
DataTyper[maxsize];
intlength;
inttype;
}SqList;
voidnumber(SqList*L)//按药品编号排序
{
inti,j;
charnum1[10],name1[30];
floatprice1,sale1;
intcount1;
for(i=0;itype;i++)
for(j=i+1;jtype;j++)
if(strcmp(L->r[j].num,L->r[i].num)>0)
{strcpy(num1,L->r[j].num);
strcpy(L->r[j].num,L->r[i].num);
strcpy(L->r[i].num,num1);
strcpy(name1,L->r[j].name);
strcpy(L->r[j].name,L->r[i].name);
strcpy(L->r[i].name,name1);
price1=L->r[j].price;
L->r[j].price=L->r[i].price;
L->r[i].price=price1;
count1=L->r[j].count;
L->r[j].count=L->r[i].count;
L->r[i].count=count1;
sale1=L->r[j].sale;
L->r[j].sale=L->r[i].sale;
L->r[i].sale=sale1;
}
printf("\t按药品编号排序后:
\n");
printf("\t药品编号药品名称药品单价药品销售量药品销售额\n");
for(i=0;itype;i++)
printf("\t%s\t%s\t%f\t%d\t%f\n",L->r[i].num,L->r[i].name,L->r[i].price,L->r[i].count,L->r[i].sale);
}
voidnam(SqList*L)//按药品名称排序
{
inti,j;
charnum1[10],name1[30];
floatprice1,sale1;
intcount1;
for(i=0;itype;i++)
for(j=i+1;jtype;j++)
if(strcmp(L->r[j].name,L->r[i].name)>0)
{strcpy(num1,L->r[j].num);
strcpy(L->r[j].num,L->r[i].num);
strcpy(L->r[i].num,num1);
strcpy(name1,L->r[j].name);
strcpy(L->r[j].name,L->r[i].name);
strcpy(L->r[i].name,name1);
price1=L->r[j].price;
L->r[j].price=L->r[i].price;
L->r[i].price=price1;
count1=L->r[j].count;
L->r[j].count=L->r[i].count;
L->r[i].count=count1;
sale1=L->r[j].sale;
L->r[j].sale=L->r[i].sale;
L->r[i].sale=sale1;
}
printf("\t按药品编号排序后:
\n");
printf("\t药品编号药品名称药品单价药品销售量药品销售额\n");
for(i=0;itype;i++)
printf("\t%s\t%s\t%f\t%d\t%f\n",L->r[i].num,L->r[i].name,L->r[i].price,L->r[i].count,L->r[i].sale);
}
voidpric(SqList*L)
{
inti=0,j;
charnum1[10],name1[30];
floatprice1,sale1;
intcount1;
for(i=0;itype;i++)
for(j=i+1;jtype;j++)
if(L->r[j].price>L->r[i].price)
{strcpy(num1,L->r[j].num);
strcpy(L->r[j].num,L->r[i].num);
strcpy(L->r[i].num,num1);
strcpy(name1,L->r[j].name);
strcpy(L->r[j].name,L->r[i].name);
strcpy(L->r[i].name,name1);
price1=L->r[j].price;
L->r[j].price=L->r[i].price;
L->r[i].price=price1;
count1=L->r[j].count;
L->r[j].count=L->r[i].count;
L->r[i].count=count1;
sale1=L->r[j].sale;
L->r[j].sale=L->r[i].sale;
L->r[i].sale=sale1;
}
printf("\t按药品编号排序后:
\n");
printf("\t药品编号药品名称药品单价药品销售量药品销售额\n");
for(i=0;itype;i++)
printf("\t%s\t%s\t%f\t%d\t%f\n",L->r[i].num,L->r[i].name,L->r[i].price,L->r[i].count,L->r[i].sale);
}
voidcoun(SqList*L)
{
inti=0,j;
charnum1[10],name1[30];
floatprice1,sale1;
intcount1;
for(i=0;itype;i++)
for(j=i+1;jtype;j++)
if(L->r[j].count>L->r[i].count)
{strcpy(num1,L->r[j].num);
strcpy(L->r[j].num,L->r[i].num);
strcpy(L->r[i].num,num1);
strcpy(name1,L->r[j].name);
strcpy(L->r[j].name,L->r[i].name);
strcpy(L->r[i].name,name1);
price1=L->r[j].price;
L->r[j].price=L->r[i].price;
L->r[i].price=price1;
count1=L->r[j].count;
L->r[j].count=L->r[i].count;
L->r[i].count=count1;
sale1=L->r[j].sale;
L->r[j].sale=L->r[i].sale;
L->r[i].sale=sale1;
}
printf("\t按药品编号排序后:
\n");
printf("\t药品编号药品名称药品单价药品销售量药品销售额\n");
for(i=0;itype;i++)
printf("\t%s\t%s\t%f\t%d\t%f\n",L->r[i].num,L->r[i].name,L->r[i].price,L->r[i].count,L->r[i].sale);
}
voidsales(SqList*L)
{
inti=0,j;
charnum1[10],name1[30];
floatprice1,sale1;
intcount1;
for(i=0;itype;i++)
for(j=i+1;jtype;j++)
if(L->r[j].sale>L->r[i].sale)
{strcpy(num1,L->r[j].num);
strcpy(L->r[j].num,L->r[i].num);
strcpy(L->r[i].num,num1);
strcpy(name1,L->r[j].name);
strcpy(L->r[j].name,L->r[i].name);
strcpy(L->r[i].name,name1);
price1=L->r[j].price;
L->r[j].price=L->r[i].price;
L->r[i].price=price1;
count1=L->r[j].count;
L->r[j].count=L->r[i].count;
L->r[i].count=count1;
sale1=L->r[j].sale;
L->r[j].sale=L->r[i].sale;
L->r[i].sale=sale1;
}
printf("\t按药品编号排序后:
\n");
printf("\t药品编号药品名称药品单价药品销售量药品销售额\n");
for(i=0;itype;i++)
printf("\t%s\t%s\t%f\t%d\t%f\n",L->r[i].num,L->r[i].name,L->r[i].price,L->r[i].count,L->r[i].sale);
}
voidmenu()
{
printf("\t\t\t销售记录排序\n");
printf("\t-----------------------------------------------\n");
printf("\t|1)按药品编号|\n");
printf("\t|2)按药品名称|\n");
printf("\t|3)按药品单价|\n");
printf("\t|4)按药品销售量|\n");
printf("\t|5)按药品销售额|\n");
printf("\t|0)退出系统|\n");
printf("\t-----------------------------------------------\n");
printf("请选择<0~5>");
}
main()
{
SqList*L;
intn,i,m;
charnum1[10],name1[30];
floatprice1,sale1;
intcount1;
FILE*fp;
L=(SqList*)malloc(sizeof(SqList));
fp=fopen("medince.txt","w");//创建文件
if(!
fp){printf("Sorry!
Fileopenerror!
\n");exit(0);}
printf("请输入药品种类数(<=100):
");
scanf("%d",&n);
L->type=n;
for(i=0;i{
printf("请输入该药品的编号(格式如:
B125,前一位为大写字母,后三位为数字):
");
scanf("%s",num1);
getchar();
printf("请输入该药品的名称:
");
scanf("%s",name1);
getchar();
printf("请输入该药品的单价:
");
scanf("%f",&price1);
printf("请输入该药品的销售量:
");
scanf("%d",&count1);getchar();
sale1=price1*count1;
fprintf(fp,"%s\t%s\t%f\t%d\t%f\n",num1,name1,price1,count1,sale1);
printf("\n");
}
fclose(fp);
L->length=0;
fp=fopen("medince.txt","r");
if(!
fp){printf("Sorry!
Fileopenerror!
");exit(0);}
for(i=0;i{
fscanf(fp,"%s\t%s\t%f\t%d\t%f\n",L->r[i].num,L->r[i].name,&L->r[i].price,&L->r[i].count,&L->r[i].sale);//从文件中读信息
L->length++;
}
fclose(fp);
printf("\t药品编号药品名称药品单价药品销售量药品销售额\n");
for(i=0;itype;i++)
printf("\t%s\t%s\t%f\t%d\t%f\n",L->r[i].num,L->r[i].name,L->r[i].price,L->r[i].count,L->r[i].sale);
while
(1)
{menu();
scanf("%d",&m);
switch(m)
{
case1:
number(L);break;
case2:
nam(L);break;
case3:
pric(L);break;
case4:
coun(L);break;
case5:
sales(L);break;
case0:
exit(0);break;
default:
printf("Sorry!
输入有误!
");break;
}
}
}
运行结果:
五、实验总结
通过此次试验我们完成了药店的药品销售统计系统。
在实验中,我们用到了文件,每个人又重新复习了一下文件。
我们明显感觉此次试验比前几次都简单多了,感觉挺爽快的。