药店药品信息管理系统课程设计报告Word文档格式.docx
《药店药品信息管理系统课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《药店药品信息管理系统课程设计报告Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
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;
next=s->
s->
3、创建函数
LinkListCreateList_L()
while(num>
=0)
{p=(LinkList)malloc(sizeof(node));
p->
num=num;
amount=amount;
strcpy(p->
name,name);
price=price;
ListInsert_L(L,p);
}
4、显示函数
voidshowlist(LinkListL)
if(L==NULL||L->
next==NULL)printf("
仓库中没有药品\n"
);
else
while(p->
=NULL)//不为空的情况下输出表内信息
{
p=p->
//不断寻找下一条信息
n++;
}
5、删除函数(按序号)
voiddeleList(LinkListL,inti)
{while(p->
next&
j<
i-1)
{p=p->
j++;
free(q);
6、删除函数(按名称)
if(L->
next==NULL)
{
while(p!
=NULL)
if(!
strcmp(p->
name,n))
{
p=p->
deleList(L,sale);
}
else{p=p->
sale++;
7、查找函数(按名字)
intsearchName(LinkListL,charn[])
next==NULL||L==NULL)printf("
仓库中没有该药品\n"
p=p->
returnx;
8、查找函数(按编号)
intsearchnum(LinkListL,intn)
该链表中没有元素\n"
if(p->
num<
=n)
if(p->
num==n)
p=p->
2.主函数:
主要由switch语句组成,便于函数调用。
switch(choose)
{
case1:
CreateList_L;
break;
/*增加记录*/
case2:
ListInsert_L(L,p);
break;
/*插入记录*/
case3:
searchnum(L,name);
/*查询记录*/
case4:
deleList(L,n);
/*删除记录*/
case5:
showlist(L);
/*显示记录*/
case0:
exit();
/*退出系统*/
3.主页面函数
voidmain(){
LinkListL=NULL;
system("
cls"
system("
color4f"
printf("
\n******^e^欢迎使用药店药品信息管理系统**********\n"
\n*1建立药品信息表*\n"
\n*2插入新药品信息*\n"
\n*3查询药品信息记录*\n"
\n*4药品销售*\n"
\n*5显示库存药品信息*\n"
\n*0退出管理系统*\n"
\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>
stdlib、h>
string、h>
intsale;
typedefstructnode
intprice;
structnode*next;
}node,*LinkList;
LinkListprior(LinkListL,LinkListp)//定位函数
{LinkListq=L->
return(L);
printf("
1"
voidListInsert_L(LinkListL,LinkListp)//插入函数
LinkLists=L->
if(s->
num==p->
printf("
重复输入\n"
s=s->
//已经存在信息
if(s==NULL)//空表插入
{s=prior(L,s);
else//寻找位置插入
LinkListCreateList_L()//建表
LinkListL=(LinkList)malloc(sizeof(node));
//给空间
L->
//初始化
LinkListp;
intnum;
charname[20];
intamount;
请输入药品编码:
"
scanf("
%d"
&
num);
请输入药品名称:
chartemp=getchar();
gets(name);
请输入药品数量:
amount);
请输入药品价格:
price);
while(num>
=0)//重复输入信息的条件
p=(LinkList)malloc(sizeof(node));
scanf("
chartemp=getchar();
gets(name);
voidshowlist(LinkListL)//显示函数
\n---------------------------------------------------------\n"
\n序号药品编码药品名称药品数量药品价格\n"
---------------------------------------------------------\n"
LinkListp=L;
intn=1;
//空表
printf("
%8d%4d"
n,p->
next->
%4s%4d%d\n"
p->
name,p->
amount,p->
----------------------------------------------------------\n"
intj=0;
while(p->
if(!
(p->
next))
{printf("
删除失败\n"
i);
LinkListq=p->
next=q->
intdelName(LinkListL,charn[])
intx=0;
LinkListp=L->
sale=1;
无可删除元素\n"
x=1;
printf("
%s"
name);
if(x)printf("
被删除\n"
查找的就是第%d个商品:
sale);
Num:
%dName:
%samount:
dfPrice:
%d\n"
num,p->
intsearchnum(LinkListL,intn)
{
x=1;
查找的就是第%d个药品:
%sAmount:
%dPrice:
%d\n"
}
intx=0;
inta;
请选择0-5:
"
a);
while(a!
=0)
switch(a)
建立药品信息表:
L=CreateList_L();
showlist(L);
x=1;
break;
{if(x==1)
intnum,amount,price;
charname[20];
LinkListp=(LinkList)malloc(sizeof(node));
p->
ListInsert_L(L,p);
插入后:
showlist(L);
case3:
intb,n,s;
选择查询方式:
1、按药品编码查询2、按药品名称查询\n"
scanf("
b);
if(b==1)
printf("
\n请输入药品编码:
scanf("
n);
s=searchnum(L,n);
if(s==0)
printf("
无此药品!
}
elseif(b==2)
{
printf("
\n请输入药品名称:
s=searchName(L,name);
if(s==0)
else
无库存!
break;
}
{intb;
请选择删除方式:
\n"
1按药品序号删除2按药品名称删除\n"
if(b==1)
intc;
请输入药品序号:
c);
删除后:
deleList(L,c);
showlist(L);
elseif(b==2)
intf;
charname[20];
chartemp=getchar();
gets(name);
f=delName(L,name);
if(f!
{
else
无该药品!
else
出错!
break;
case5:
剩余药品信息:
break;
case0:
exit(0);
}
7工作总结
这周进行了数据结构的课程设计-----药店药品信息管理系统,我发现自己在编程方面存在很大问题,面对要求,代码根本无从下手,由于自己C语言能力比较差,写出来的代码调试也存在很多的问题。
本次设计单凭自己的能力根本不可能完成,幸亏有老师与同学们的帮助,我才能完成这次设计。
这次课程设计给我体会颇深,我深刻认识到自己C语言基础很差,以后要加强基础知识的学习,真正了解问题本身的精髓,特别要提高C语言编程能力,更重要的就是要多进行试验操作,提高自己的动手实践能力。
8参考文献
[1]史济民,顾春华、软件工程——原理、方法与应用[M]、北京:
高等教育出版社,2004、
[2]张海藩、软件工程导论[M]、北京:
清华大学出版社,2005、
[3]吴伟民、数据结构、北京:
清华大学出版社,2013年、