药店药品信息管理系统课程设计报告.docx
- 文档编号:8623921
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:20
- 大小:95.82KB
药店药品信息管理系统课程设计报告.docx
《药店药品信息管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《药店药品信息管理系统课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
药店药品信息管理系统课程设计报告
《数据结构》课程设计
题目:
药店药品信息管理系统
系别:
计算机信息与技术系
专业:
计算机科学与技术专业
班级:
B130601
学号:
B13060125
学生姓名:
杨晴雯
指导教师:
王楠
2015年07月
1需求分析
1、1问题描述
随着我国医疗事业的发展与社会不同人群的需求,药店的药品层出不穷。
这对于消费者来说固然就是好事,可就是对于药店管理者来说,药品种类越多,越不容易记录与查找,还容易出错。
所以以前的记录在账本上的方式已经落后了,药店需要一套完备的药店药品信息管理系统,方便药店管理者管理药店,以贴近时代需求,走向现代化管理道路。
1、2需求分析
1.建立药品信息表;
2.插入新药品信息;
3.查询新药品信息记录;
4.药品销售;
5.显示库存药品信息;
6、退出管理系统
2概要设计
2、1主界面设计
当输入相应的操作字符(比如:
0-5),通过在主函数中选择并调用对应的子函数程序以及其她函数(比如:
菜单函数)中的辅助调用,实现并完成各自的功能操作(比如:
添加、查找、删除、显示等)。
系统主界面如下:
图2、1
2、2存储结构设计
依据给定的数据格式,药品信息由四个字段来组成,即药品编号、药品名称、药品数量、药品价格。
如:
药品编号|药品名称|药品数量|药品价格|
012感康3612
通过C语言把学生的信息用单链表形式连接,源程序要有适当的注释,使程序易于阅读,进行储存。
同时进行各种修改,完成信息管理等功能。
2、3系统功能设计
依据程序的数据结构与功能,遵照“自顶向下”原则,描述该程序的层次结构,在总体上包括数据的定位、插入、建表、显示、删除等功能模块。
(1)定位函数功能:
具体了解要插入函数的位置。
(2)插入函数功能:
找到要插入函数的位置,进行函数插入。
(3)显示函数功能:
按照指定关键字,对相应商品信息进行查找显示。
(4)删除函数功能:
查找到要删除商品的相应信息,并将其从表中永久的删除。
(5)主函数功能:
调用以上子函数,并用开关语句进行选择性的调用。
3模块设计
3、1系统子程序及功能设计
LinkListprior(LinkListL,LinkListp)定位函数
voidListInsert_L(LinkListL,LinkListp)插入函数
LinkListCreateList_L()建表
voidvoidshowlist(LinkListL)显示函数
voiddeleList(LinkListL,inti)删除(按序号)
voiddelName(LinkListL,charn[])删除(按名字)
intsearchnum(LinkListL,intn)查询(按编号)
intsearchName(LinkListL,charn[])查询(按名字)
3、2系统功能图
图3、1
4详细设计
4、1数据类型定义
typedefstructnode
{
intnum;//药品编号
charname[20];//商药品名称
intamount;//药品数量
intprice;//药品价格
structnode*next;
}Node,*LinkList;
4、2系统主要子程序详细设计
1.定位函数
LinkListprior(LinkListL,LinkListp)
{
{while(q->next!
=p)
q=q->next;
return(q);}
}
2、插入函数
voidListInsert_L(LinkListL,LinkListp)
{
while(s!
=NULL&&p->num>=s->num)
{s=prior(L,s);p->next=NULL;s->next=p;}
{s=prior(L,s);p->next=s->next;s->next=p;}
}
3、创建函数
LinkListCreateList_L()
{
while(num>=0)
{p=(LinkList)malloc(sizeof(node));
p->num=num;
p->amount=amount;
strcpy(p->name,name);
p->price=price;
ListInsert_L(L,p);
}
}
4、显示函数
voidshowlist(LinkListL)
{
if(L==NULL||L->next==NULL)printf("仓库中没有药品\n");
else
while(p->next!
=NULL)//不为空的情况下输出表内信息
{
p=p->next;//不断寻找下一条信息
n++;
}
}
5、删除函数(按序号)
voiddeleList(LinkListL,inti)
{while(p->next&&j {p=p->next; j++; } free(q); } 6、删除函数(按名称) { if(L->next==NULL) else { while(p! =NULL) { if(! strcmp(p->name,n)) { p=p->next; deleList(L,sale); } else{p=p->next;sale++;} } } 7、查找函数(按名字) intsearchName(LinkListL,charn[]) { if(L->next==NULL||L==NULL)printf("仓库中没有该药品\n"); else { while(p! =NULL) { if(! strcmp(p->name,n)) p=p->next;sale++; } } returnx; } 8、查找函数(按编号) intsearchnum(LinkListL,intn) { if(L->next==NULL)printf("该链表中没有元素\n"); else { while(p! =NULL) { if(p->num<=n) if(p->num==n) p=p->next;sale++; } } returnx; } 2.主函数: 主要由switch语句组成,便于函数调用。 switch(choose) { case1: CreateList_L;break;/*增加记录*/ case2: ListInsert_L(L,p);break;/*插入记录*/ case3: searchnum(L,name);break;/*查询记录*/ case4: deleList(L,n);break;/*删除记录*/ case5: showlist(L);break;/*显示记录*/ case0: exit();break;/*退出系统*/ } 3.主页面函数 voidmain(){ LinkListL=NULL; system("cls"); system("color4f"); printf("\n******^e^欢迎使用药店药品信息管理系统**********\n"); printf("\n*1建立药品信息表*\n"); printf("\n*2插入新药品信息*\n"); printf("\n*3查询药品信息记录*\n"); printf("\n*4药品销售*\n"); printf("\n*5显示库存药品信息*\n"); printf("\n*0退出管理系统*\n"); printf("\n******^e^欢迎使用药店药品信息管理系统**********\n"); printf("\n请选择操作: \n");} 5测试分析 各功能的运行结果: 1)建立信息表: 在主菜单中选择1,进入建立信息表 图5、1 2)插入信息: 选择2,进行插入信息 图5、2 3)查询药品信息,选择3,进行查询信息 图5、3 4)药品销售,选择4,进行药品销售 图5、4 5)显示库存药品信息,选择5,进行显示 图5、5 6)退出系统: 选择0,退出系统。 6源程序清单 #include #include #include intsale; typedefstructnode { intnum; charname[20]; intamount; intprice; structnode*next; }node,*LinkList; LinkListprior(LinkListL,LinkListp)//定位函数 {LinkListq=L->next; if(L->next==NULL) return(L); else {while(q->next! =p) q=q->next; printf("1"); return(q);} } voidListInsert_L(LinkListL,LinkListp)//插入函数 { LinkLists=L->next; while(s! =NULL&&p->num>=s->num) { if(s->num==p->num) printf("重复输入\n"); s=s->next;//已经存在信息 } if(s==NULL)//空表插入 {s=prior(L,s);p->next=NULL;s->next=p;} else//寻找位置插入 {s=prior(L,s);p->next=s->next;s->next=p;} } LinkListCreateList_L()//建表 { LinkListL=(LinkList)malloc(sizeof(node));//给空间 L->next=NULL;//初始化 LinkListp; intnum; charname[20]; intamount; intprice; printf("请输入药品编码: "); scanf("%d",&num); printf("请输入药品名称: "); chartemp=getchar(); gets(name); printf("请输入药品数量: "); scanf("%d",&amount); printf("请输入药品价格: "); scanf("%d",&price); while(num>=0)//重复输入信息的条件 { p=(LinkList)malloc(sizeof(node)); p->num=num; p->amount=amount; strcpy(p->name,name); p->price=price; ListInsert_L(L,p); printf("请输入药品编码: "); scanf("%d",&num); printf("请输入药品名称: "); chartemp=getchar(); gets(name); printf("请输入药品数量: "); scanf("%d",&amount); printf("请输入药品价格: "); scanf("%d",&price); } return(L); } voidshowlist(LinkListL)//显示函数 { printf("\n---------------------------------------------------------\n"); printf("\n序号药品编码药品名称药品数量药品价格\n"); printf("---------------------------------------------------------\n"); LinkListp=L; intn=1; if(L==NULL||L->next==NULL)printf("仓库中没有药品\n");//空表 else while(p->next! =NULL)//不为空的情况下输出表内信息 { printf("%8d%4d",n,p->next->num); printf("%4s%4d%d\n",p->next->name,p->next->amount,p->next->price); p=p->next;//不断寻找下一条信息 n++; printf("----------------------------------------------------------\n"); } } voiddeleList(LinkListL,inti) { LinkListp=L; intj=0; while(p->next&&j {p=p->next; j++; } if(! (p->next)) {printf("删除失败\n",i); } LinkListq=p->next; p->next=q->next; free(q); } intdelName(LinkListL,charn[]) { intx=0; LinkListp=L->next; sale=1; if(L->next==NULL) printf("无可删除元素\n"); else { while(p! =NULL) { if(! strcmp(p->name,n)) { x=1; printf("%s",p->name); p=p->next; deleList(L,sale); } else{p=p->next;sale++;} } if(x)printf("被删除\n"); } returnx; } intsearchName(LinkListL,charn[]) { intx=0; LinkListp=L->next; sale=1; if(L->next==NULL||L==NULL)printf("仓库中没有该药品\n"); else { while(p! =NULL) { if(! strcmp(p->name,n)) { x=1; printf("查找的就是第%d个商品: \n",sale); printf("Num: %dName: %samount: dfPrice: %d\n",p->num,p->name,p->amount,p->price); } p=p->next;sale++; } } returnx; } intsearchnum(LinkListL,intn) { intx=0; LinkListp=L->next; sale=1; if(L->next==NULL)printf("该链表中没有元素\n"); else { while(p! =NULL) { if(p->num<=n) if(p->num==n) { x=1; printf("查找的就是第%d个药品: \n",sale); printf("Num: %dName: %sAmount: %dPrice: %d\n",p->num,p->name,p->amount,p->price); } p=p->next;sale++; } } returnx; } voidmain(){ LinkListL=NULL; system("cls"); system("color4f"); printf("\n******^e^欢迎使用药店药品信息管理系统**********\n"); printf("\n*1建立药品信息表*\n"); printf("\n*2插入新药品信息*\n"); printf("\n*3查询药品信息记录*\n"); printf("\n*4药品销售*\n"); printf("\n*5显示库存药品信息*\n"); printf("\n*0退出管理系统*\n"); printf("\n******^e^欢迎使用药店药品信息管理系统**********\n"); printf("\n请选择操作: \n"); intx=0; inta; printf("请选择0-5: "); scanf("%d",&a); while(a! =0) { switch(a) { case1: { printf("建立药品信息表: \n"); L=CreateList_L(); showlist(L); x=1; break; } case2: {if(x==1) { intnum,amount,price; charname[20]; printf("请输入药品编码: "); scanf("%d",&num); printf("请输入药品名称: "); chartemp=getchar(); gets(name); printf("请输入药品数量: "); scanf("%d",&amount); printf("请输入药品价格: "); scanf("%d",&price); LinkListp=(LinkList)malloc(sizeof(node)); p->num=num; p->amount=amount; strcpy(p->name,name); p->price=price; ListInsert_L(L,p); printf("插入后: \n"); showlist(L); } break; } case3: { intb,n,s; charname[20]; printf("选择查询方式: \n"); printf("1、按药品编码查询2、按药品名称查询\n"); scanf("%d",&b); if(b==1) { printf("\n请输入药品编码: "); scanf("%d",&n); s=searchnum(L,n); if(s==0) printf("无此药品! \n"); } elseif(b==2) { printf("\n请输入药品名称: "); chartemp=getchar(); gets(name); s=searchName(L,name); if(s==0) printf("无此药品! \n"); } else printf("无库存! \n"); break; } case4: {intb; printf("请选择删除方式: \n"); printf("1按药品序号删除2按药品名称删除\n"); scanf("%d",&b); if(b==1) { intc; printf("请输入药品序号: \n"); scanf("%d",&c); printf("删除后: \n"); deleList(L,c); showlist(L); } elseif(b==2) { intf; charname[20]; printf("请输入药品名称: \n"); chartemp=getchar(); gets(name); f=delName(L,name); if(f! =0) { printf("删除后: \n"); showlist(L);} else printf("无该药品! \n"); } else printf("出错! \n"); break; } case5: { printf("剩余药品信息: \n"); showlist(L); break; } case0: exit(0); } printf("请选择0-5: "); scanf("%d",&a); } 7工作总结 这周进行了数据结构的课程设计-----药店药品信息管理系统,我发现自己在编程方面存在很大问题,面对要求,代码根本无从下手,由于自己C语言能力比较差,写出来的代码调试也存在很多的问题。 本次设计单凭自己的能力根本不可能完成,幸亏有老师与同学们的帮助,我才能完成这次设计。 这次课程设计给我体会颇深,我深刻认识到自己C语言基础很差,以后要加强基础知识的学习,真正了解问题本身的精髓,特别要提高C语言编程能力,更重要的就是要多进行试验操作,提高自己的动手实践能力。 8参考文献 [1]史济民,顾春华、软件工程——原理、方法与应用[M]、北京: 高等教育出版社,2004、 [2]张海藩、软件工程导论[M]、北京: 清华大学出版社,2005、 [3]吴伟民、数据结构、北京: 清华大学出版社,2013年、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 药店 药品信息 管理 系统 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)