药店药品信息管理系统课程设计报告.doc
《药店药品信息管理系统课程设计报告.doc》由会员分享,可在线阅读,更多相关《药店药品信息管理系统课程设计报告.doc(17页珍藏版)》请在咨信网上搜索。
《数据结构》课程设计 题目:药店药品信息管理系统 系 别:计算机信息与技术系 专 业:计算机科学与技术专业 班 级: B130601 学 号: B13060125 学生姓名: 杨晴雯 指导教师: 王 楠 2015年07月 目录 1 需求分析 1 1。1 问题描述 1 1.2 需求分析 1 2 概要设计 2 2。1 主界面设计 2 2.2 存储结构设计 2 2。3 系统功能设计 3 3 模块设计 4 3。1 系统子程序及功能设计 4 3。2 系统功能图 4 4 详细设计 5 4。1 数据类型定义 5 4.2 系统主要子程序详细设计 5 5 测试分析 9 6 源程序清单 12 7 工作总结 20 8 参考文献 21 1 需求分析 1.1 问题描述 随着我国医疗事业的发展和社会不同人群的需求,药店的药品层出不穷。这对于消费者来说固然是好事,可是对于药店管理者来说,药品种类越多,越不容易记录和查找,还容易出错。所以以前的记录在账本上的方式已经落后了,药店需要一套完备的药店药品信息管理系统,方便药店管理者管理药店,以贴近时代需求,走向现代化管理道路。 1.2 需求分析 1.建立药品信息表; 2.插入新药品信息; 3.查询新药品信息记录; 4.药品销售; 5.显示库存药品信息; 6. 退出管理系统 2 概要设计 2。1 主界面设计 当输入相应的操作字符(比如:0-5),通过在主函数中选择并调用对应的子函数程序以及其他函数(比如:菜单函数)中的辅助调用,实现并完成各自的功能操作(比如:添加、查找、删除、显示等). 系统主界面如下: 图2.1 2。2 存储结构设计 依据给定的数据格式,药品信息由四个字段来组成,即药品编号、药品名称、药品数量、药品价格。 如: 药品编号 | 药品名称 | 药品数量 | 药品价格| 012 感康 36 12 通过C语言把学生的信息用单链表形式连接,源程序要有适当的注释,使程序易于阅读,进行储存。同时进行各种修改,完成信息管理等功能. 2.3 系统功能设计 依据程序的数据结构和功能,遵照“自顶向下"原则,描述该程序的层次结构,在总体上包括数据的定位、插入、建表、显示、删除等功能模块。 (1)定位函数功能:具体了解要插入函数的位置。 (2)插入函数功能:找到要插入函数的位置,进行函数插入. (3)显示函数功能:按照指定关键字,对相应商品信息进行查找显示。 (4)删除函数功能:查找到要删除商品的相应信息,并将其从表中永久的删除。 (5)主函数功能:调用以上子函数,并用开关语句进行选择性的调用。 3 模块设计 3.1 系统子程序及功能设计 LinkList prior(LinkList L,LinkList p) 定位函数 void ListInsert_L(LinkList L,LinkList p) 插入函数 LinkList CreateList_L() 建表 void void showlist(LinkList L) 显示函数 void deleList(LinkList L,int i) 删除(按序号) void delName(LinkList L,char n[]) 删除(按名字) int searchnum(LinkList L,int n) 查询(按编号) int searchName(LinkList L,char n[]) 查询(按名字) 药店药品信息管理系统 3.2 系统功能图 退出管理系统 插入新药品信息 药品销售 显示库存药品信息 查询新药品信息记录 建立药品信息表 图3.1 4 详细设计 4。1 数据类型定义 typedef struct node { int num;//药品编号 char name[20];//商药品名称 int amount;//药品数量 int price;//药品价格 struct node *next; }Node,*LinkList; 4.2 系统主要子程序详细设计 1. 定位函数 LinkList prior(LinkList L,LinkList p) { {while(q—>next!=p) q=q—>next; return(q);} } 2。插入函数 void ListInsert_L(LinkList L,LinkList p) { 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。创建函数 LinkList CreateList_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。显示函数 void showlist(LinkList L) { if(L==NULL||L—>next==NULL) printf(”仓库中没有药品\n"); else while(p->next!=NULL)//不为空的情况下输出表内信息 { p=p—〉next;//不断寻找下一条信息 n++; } } 5。删除函数(按序号) void deleList(LinkList L,int i) { while(p-〉next&&j<i-1) {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。查找函数(按名字) int searchName(LinkList L,char n[]) { if(L->next==NULL||L==NULL) printf("仓库中没有该药品\n"); else { while(p!=NULL) { if(!strcmp(p->name,n)) p=p—〉next;sale++; } } return x; } 8.查找函数(按编号) int searchnum(LinkList L,int n ) { if(L-〉next==NULL) printf(”该链表中没有元素\n"); else { while(p!=NULL) { if(p—〉num〈=n) if(p-〉num==n) p=p-〉next;sale++; } } return x; } 2. 主函数:主要由switch语句组成,便于函数调用. switch(choose) { case 1:CreateList _L; break; /*增加记录*/ case 2: ListInsert_L(L,p);break; /*插入记录*/ case 3: searchnum(L,name);break; /*查询记录*/ case 4: deleList(L,n); break; /*删除记录*/ case 5: showlist(L);break; /*显示记录*/ case 0:exit();break; /*退出系统*/ } 3. 主页面函数 void main(){ LinkList L=NULL; system(”cls”); system (”color 4f"); 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〈stdio。h> #include<stdlib.h> #include〈string。h〉 int sale; typedef struct node { int num; char name[20]; int amount; int price; struct node * next; }node,*LinkList; LinkList prior(LinkList L,LinkList p)//定位函数 { LinkList q=L—>next; if(L—>next==NULL) return(L); else {while(q—>next!=p) q=q—>next; printf("1"); return(q);} } void ListInsert_L(LinkList L,LinkList p)//插入函数 { LinkList s=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;} } LinkList CreateList_L()//建表 { LinkList L=(LinkList)malloc(sizeof(node));//给空间 L—〉next=NULL;//初始化 LinkList p; int num; char name[20]; int amount; int price; printf(”请输入药品编码:”); scanf(”%d",&num); printf("请输入药品名称:”); char temp=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("请输入药品名称:"); char temp=getchar(); gets(name); printf(”请输入药品数量:"); scanf(”%d”,&amount); printf("请输入药品价格:”); scanf("%d”,&price); } return(L); } void showlist(LinkList L)//显示函数 { printf("\n -——--—————-—-—-——----—----—---——--—----—--------------—-- \n”); printf("\n 序号 药品编码 药品名称 药品数量 药品价格 \n"); printf(” ——---—-———---——-—-———————-—-—---———-—---—--—————-—-————-- \n"); LinkList p=L; int n=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”); } } void deleList(LinkList L,int i) { LinkList p=L; int j=0; while(p—〉next&&j〈i-1) {p=p—>next; j++; } if(!(p—>next)) {printf("删除失败\n”,i); } LinkList q=p-〉next; p-〉next=q—〉next; free(q); } int delName(LinkList L,char n[]) { int x=0; LinkList p=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"); } return x; } int searchName(LinkList L,char n[]) { int x=0; LinkList p=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:%d Name:%s amount:df Price:%d\n",p—〉num,p—〉name,p—>amount,p—〉price); } p=p—>next;sale++; } } return x; } int searchnum(LinkList L,int n) { int x=0; LinkList p=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:%d Name:%s Amount:%d Price:%d \n”,p-〉num,p->name,p—〉amount,p—〉price); } p=p—>next;sale++; } } return x; } void main(){ LinkList L=NULL; system(”cls"); system (”color 4f"); 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"); int x=0; int a; printf("请选择0—5: "); scanf(”%d”,&a); while(a!=0) { switch(a) { case 1: { printf("建立药品信息表:\n”); L=CreateList_L(); showlist(L); x=1; break; } case 2: {if(x==1) { int num,amount,price; char name[20]; printf(”请输入药品编码:"); scanf(”%d",&num); printf(”请输入药品名称:"); char temp=getchar(); gets(name); printf("请输入药品数量:"); scanf(”%d”,&amount); printf(”请输入药品价格:"); scanf(”%d”,&price); LinkList p=(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; } case 3: { int b,n,s; char name[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"); } else if(b==2) { printf(”\n请输入药品名称:"); char temp=getchar(); gets(name); s=searchName(L,name); if(s==0) printf(”无此药品!\n”); } else printf(”无库存!\n"); break; } case 4: { int b; printf("请选择删除方式: \n”); printf(”1按药品序号删除 2按药品名称删除\n”); scanf("%d”,&b); if (b==1) { int c; printf("请输入药品序号:\n”); scanf(”%d”,&c); printf(”删除后:\n”); deleList(L,c); showlist(L); } else if(b==2) { int f; char name[20]; printf(”请输入药品名称:\n”); char temp=getchar(); gets(name); f=delName(L,name); if (f!=0) { printf(”删除后:\n"); showlist(L);} else printf("无该药品!\n"); } else printf("出错!\n"); break; } case 5: { printf(”剩余药品信息:\n"); showlist(L); break; } case 0: exit (0); } printf(”请选择0-5: "); scanf("%d”,&a); } 7 工作总结 这周进行了数据结构的课程设计-—-——药店药品信息管理系统,我发现自己在编程方面存在很大问题,面对要求,代码根本无从下手,由于自己C语言能力比较差,写出来的代码调试也存在很多的问题.本次设计单凭自己的能力根本不可能完成,幸亏有老师和同学们的帮助,我才能完成这次设计。这次课程设计给我体会颇深,我深刻认识到自己C语言基础很差,以后要加强基础知识的学习,真正了解问题本身的精髓,特别要提高C语言编程能力,更重要的是要多进行试验操作,提高自己的动手实践能力。 8 参考文献 [1] 史济民,顾春华。 软件工程-—原理、方法与应用[M]。 北京:高等教育出版社,2004. [2] 张海藩. 软件工程导论[M]. 北京:清华大学出版社,2005. [3] 吴伟民. 数据结构。 北京:清华大学出版社,2013年. 14- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 药店 药品信息 管理 系统 课程设计 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文