软件综合课程设计药店药品销售统计系统.docx
- 文档编号:20112935
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:23
- 大小:217.83KB
软件综合课程设计药店药品销售统计系统.docx
《软件综合课程设计药店药品销售统计系统.docx》由会员分享,可在线阅读,更多相关《软件综合课程设计药店药品销售统计系统.docx(23页珍藏版)》请在冰豆网上搜索。
软件综合课程设计药店药品销售统计系统
课程设计说明书
课程设计名称:
软件综合课程设计
课程设计题目:
药店药品销售统计系统
学院名称:
信息工程学院
专业:
电子信息工程班级:
110411
学号:
11041109姓名:
何东震
评分:
教师:
贾杰老师
2014年02月28日
软件综合程序设计任务书
2013-2014学年第1学期
题目
药店的药品销售统计系统
内容及要求
1.设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号、单价、销售量或销售额做出排名。
2.在本设计中,首先从数据文件中读出各药品的信息记录,存储在顺序表中。
各药品的信息包括:
药品编号、药名、药品单价、销出数量、销售额。
药品编号共4位,采用字母和数字混合编号,如:
A125,前一位为大写字母,后三位为数字,按药品编号进行排序时,可采用基数排序法。
对各药品的单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序等方法。
进度安排
1.2013-2014学年第一学期假期分散一周,布置任务、查阅资料、选择方案。
2.2014年2月16日-21日程序调试。
3.调试:
6天
4.验收:
1天
5.提交报告:
2013-2014学年第二学期第2周
学生姓名:
指导时间:
2013-2014年第一学期寒假至第二学期第一周
指导地点:
E311室
任务下达
2014年1月16日
任务完成
2014年2月28日
考核方式
1.评阅
2.答辩
3.实际操作
4.其它
指导教师
赵敏
系(部)主任
贾杰
摘要
本次课程设计的任务是设计一个药店药品销售统计系统,实现对药店内药品的信息进行记录和对销售情况进行整理排序,更直观的了解药店的药品销售情况。
本次设计的系统主要采用C语言程序设计基本知识,通过文件来输入、记录、保存药品的编码、名称、单价、销售数量,运用乘法运算算出各类药品的销售总额,最后利用冒泡排序法(运用文件指针知识)将药品信息按照药品编码、药品名称、药品单价、药品销售数量、药品销售总额5个方面进行从大到小的排序。
该系统主要由1.输入记录并保存药品信息,2.在界面上显示所输入的药品信息,3.将药品信息根据5个方面进行排序并保存这三大模块所构成。
关键字:
C程序设计药品信息文件指针排序
目录
1.摘要.............................................3
2.目录.............................................4
3.正文.............................................5
3.1课程设计名称......................................5
3.2课程设计目的......................................5
3.3课程设计内容......................................5
3.4药品信息的定义....................................5
3.5设计实体关系图....................................6
3.6系统程序结构图....................................6
3.7课程设计程序......................................7
3.8程序调试与分析....................................12
3.9用户手册..........................................13
4.结论...............................................17
5.参考文献...........................................18
正文
3.1课程设计名称
药店的药品销售统计系统
3.2课程设计目的
培养学生懂得相关系统的设计理念,掌握具体的编程方法,提高学生的综合实践能力。
通过所学的知识和查阅相关资料,能够根据实际问题设计出实用并可靠的系统程序。
3.3课程设计内容
【问题描述】
设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号、单价、销售量或销售额做出排名。
【实现提示】
在本设计中,首先从数据文件中读出各药品的信息记录,存储在顺序表中。
各药品的信息包括:
药品编号、药名、药品单价、销出数量、销售额。
药品编号共4位,采用字母和数字混合编号,如:
A125,前一位为大写字母,后三位为数字,按药品编号进行排序时,可采用基数排序法。
对各药品的单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序等方法。
3.4药品信息的定义
药品信息的元素类型定义:
typedefstructnode
{charnum[4];/*药品编号*/
charname[10];/*药品名称*/
floatprice;/*药品单价*/
intcount;/*销售数量*/
floatsale;/*本药品销售额*/
}DataType;
存储药品信息的顺序表的定义:
typedefstruct
{DataTyper[MaxSize];
intlength;
}SequenList;
3.5设计实体关系图
药品编号按编号排序
药品名称按名称排序
文件
函数调用
单价按单价排序
药品销售量按销售量排序
药品销售额按销售额排序
3.6系统程序结构图
3.7课程设计程序
#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;i
for(j=i+1;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;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;i
for(j=i+1;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;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;i
for(j=i+1;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;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;i
for(j=i+1;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;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;i
for(j=i+1;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;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;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("抱歉! 输入有误,请重新输入~~");break; } } } 3.8程序调试与分析 程序的调试分析主要由两大步骤组成。 首先认真阅读所编写好的程序,进一步进行检查。 在过程中修改一些常识性简单的错误,例如: 符号“}”“;”的缺失,对不必要的叙述进行修改删减,使程序更简洁美观,增强程序的可读性,区分函数与子函数,分析变量含义的变更是否会导致错误,在关键程序后面给上相关的注释,让程序变得更易理解。 其次在阅读检查程序并修改后,进行初步的调试,根据程序设计思路查看各变量的含义是否符合设计初衷,并作适当的修改,初步调试完成后运行程序针对所显示的错误信息进行修改与优化。 例如: 调试过程中发现scanf函数处报错,则经分析发现格式上缺少“&”符号。 如果调试过程中忽而出现几十上百条错误,则问题可能是头文件或者某一两处出现错误,此时应根据程序流程图仔细分析错误所在,同时可单步运行输入实验数据查看各变量含义是否出错,进而合理的修改。 3.9用户手册 定义3个药品,并依次输入药品信息 一键回车后所输入的药品信息将显示在界面上 根据界面的提示,输入1—>Enter显示出药品按编号排序结果 输入2显示按药品名称排序 输入3显示按药品单价排序 输入4显示按药品销售量排序 输入5显示按药品销售额排序 输入0退出该系统 结论 通过本次课程设计,培养了我关于系统的设计理念,掌握具体的编程方法,提高了个人的综合实践能力。 学会通过所学的知识和查阅相关资料,能够根据实际问题设计出实用并可靠的系统程序。 药店药品销售统计系统是由C语言编写而成的,该系统程序函数层次简练分明,可读性强。 对于商店来讲,一般销售额的统计都比较繁琐、容易出现错误。 药店药品的销售统计系统在这方面可以大大的减少人们对信息的处理,比较有实际意义。 并且该系统操作起来简单快捷,极大的降低了工作量。 不过系统仍然存在着不足之处,需要后续的补充和修改完善。 例如: 无法对输入的信息进行分类保存,无法再中途添加药品信息,没有一个完整的信息库等等。 完成本次课程设计,一方面对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 综合 课程设计 药店 药品 销售 统计 系统