医药管理系统实验报告文档格式.docx
《医药管理系统实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《医药管理系统实验报告文档格式.docx(30页珍藏版)》请在冰点文库上搜索。
1.程序代码完成,编译运行成功。
2.数据输入首选采用文件的方式,其次键盘输入。
3.分析采用哪种合适的存储结构来储存数据
4.设计一定的用户界面,简洁。
二、功能分析
1.
功能模块图
2.程序流程图
查看
添加返回删除修改
返回返回
N
Y
Y
N
返回
N
Y
NN
返回
N返回
图2.2程序流程图
三、设计
相关代码:
#include<
stdio.h>
string.h>
stdlib.h>
time.h>
conio.h>
typedefstructDrug
{charDrug_id[30];
//编号
charDrug_name[50];
//药品名称
charDrug_type[10];
//类型
floatDrug_price;
//价格
intamount;
//库存数量
charDrug_time[30];
//入库时间
charremark[30];
//备注
structDrug*next;
}Drug,*DrugPtr;
#defineMENU"
欢迎进入药品管理系统\n"
\
"
1:
查看已有药品列表\n"
2:
添加新的药品\n"
3:
删除药品信息\n"
4:
修改药品信息\n"
5:
分类查询\n"
0:
退出\n"
"
请您选择:
"
#defineMENU41"
请选择要修改的选项\n"
修改药品名称\n"
修改药品价格\n"
修改药品数量\n"
修改药品类型\n"
修改药品备注\n"
返回主菜单\n"
#defineMENU5"
欢迎进入分类查询页面\n"
按编号查询\n"
按名称查询\n"
按类型查询\n"
按价格查询\n"
按库存数量查询\n"
6:
按入库时间查询\n"
返回主菜单\n"
#defineMENU50"
按药品编号查询\n"
请输入要查询的药品编号:
#defineMENU51"
按药品名称查询\n"
请输入要查询的药品名称:
#defineMENU52"
按药品类型查询\n"
"
请输入要查询的药品类型:
\n"
中药\n"
中成药\n"
西药\n"
返回查询菜单\n"
#defineMENU53"
按药品价格查询\n"
请输入要查询的药品价格:
#defineMENU54"
按药品库存数量查询\n"
请输入要查询的药品的库存数量:
#defineMENU55"
按药品入库时间查询\n"
请输入要查询的药品入库时间:
#defineSTRCMP(NAME,STR)strcmp((char*)GetStdin("
请输入药品的编号(按0结束):
"
%s"
STR),"
0"
)
DrugPtrinsert(DrugPtrhead,intid,char*name);
//添加药品
voidsave_to_file(DrugPtr&
yaolist);
//将更新后的链表保存到文件中
voidread_to_list(DrugPtr&
//将文件读入链表
void*GetStdin(constchar*numstr,char*control,void*ret);
DrugPtrgetvalue();
//取值
voiddruginsert(DrugPtr&
yaolist,DrugPtryao);
//插入操作
intisdrugin(DrugPtryaolist,DrugPtryao);
//判断
voiddrugmodify(DrugPtr&
//修改操作
voiddeletenode(DrugPtr&
yaolist,chardrug_id[]);
//删除操作
voiddeletedrug(DrugPtr&
voidupdatedrug(DrugPtr&
voidlistshow(DrugPtryaolist);
//显示操作
voiddrug_find_name(DrugPtrhead,char*name);
//以名称查询
voiddrug_find_id(DrugPtrhead,char*id);
//以编号查询
voiddrug_find_type_z(DrugPtrhead);
//查询中药
voiddrug_find_type_zc(DrugPtrhead);
//查询中成药
voiddrug_find_type_x(DrugPtrhead);
//查询西药
voiddrug_find_price(DrugPtrhead,floatprice);
//以价格查询
voiddrug_find_amout(DrugPtrhead,intamout);
//以库存数量查询
voiddrug_find_time(DrugPtrhead,char*time);
//以入库时间查询
voiddrug_type_choose(DrugPtrhead);
//查询主菜单
voidchoose_type(DrugPtrhead);
//类型查询
intmain()
{intchoice;
DrugPtrhead=NULL;
DrugPtryao;
read_to_list(head);
while(*(int*)GetStdin(MENU,"
%d"
&
choice))
{switch(choice){
case1:
listshow(head);
//显示药品列表
break;
case2:
{
yao=getvalue();
druginsert(head,yao);
//添加药品
printf("
药品添加成功\n"
);
break;
}
case3:
deletedrug(head);
//删除药品
case4:
updatedrug(head);
//修改药品信息
case5:
//分类查询
drug_type_choose(head);
case0:
//退出
}
}
save_to_file(head);
return0;
}
void*GetStdin(constchar*numstr,char*control,void*ret)
{cputs(numstr);
while(!
scanf(control,ret)){
fflush(stdin);
system("
cls"
cputs(numstr);
returnret;
}//显示列表
voidlistshow(DrugPtryaolist)
{
printf("
%5s%8s%16s%10s%14s%13s%7s\n"
药品编号"
名称"
价格"
类型"
入库时间"
"
库存数量"
备注"
DrugPtrp=yaolist;
if(!
p)
printf("
kong"
while(p)
{printf("
%-10s%-18s%-10.2f%-10s%-13s%-10d%-10s\n"
p->
Drug_id,p->
Drug_name,p->
Drug_price,p->
Drug_type,p->
Drug_time,p->
amount,p->
remark);
p=p->
next;
DrugPtrgetvalue()
{DrugPtryao=(DrugPtr)malloc(sizeof(Drug));
请输入药品编号:
scanf("
&
yao->
Drug_id);
请输入药品名称:
Drug_name);
请输入药品价格:
%f"
Drug_price);
请输入药品数量:
amount);
请输入药品入库时间:
Drug_time);
请输入药品类型:
Drug_type);
请输入药品备注:
yao->
next=NULL;
returnyao;
yaolist,DrugPtryao)
{if(!
yaolist)
yaolist=yao;
else
{yao->
next=yaolist->
yaolist->
next=yao;
DrugPtrisdrugin(DrugPtryaolist,chardrug_id[])
{DrugPtrp=yaolist;
while(p)
{if(!
strcmp(p->
Drug_id,drug_id))
break;
else
p=p->
returnp;
}//更新结点
floatt=0;
//没有这句出现floatpointnotloaded
while(*(int*)GetStdin(MENU41,"
{switch(choice)
{
case1:
GetStdin("
请输入药品的新名称:
yao->
cputs("
更新成功!
请继续选择\n"
break;
case2:
请输入药品的新价格:
case3:
请输入药品的修改数量:
case4:
请输入药品的新类型:
case5:
请输入药品的新备注:
case0:
}//找到结点返回update
{charstring[30];
while(strcmp((char*)GetStdin("
请输入药品编号(按0结束):
string),"
))
{yao=isdrugin(yaolist,string);
if(yao)//判断药是否存在
drugmodify(yaolist,yao);
printf("
没有这种药\n"
while(STRCMP(SECOND,string))
{
if(isdrugin(yaolist,string))
deletenode(yaolist,string);
else
printf("
药品不存在!
yaolist,chardrug_id[])
{DrugPtrq,p;
q=yaolist;
p=q->
strcmp(yaolist->
{yaolist=yaolist->
free(q);
{while(p)
{if(!
q=q->
q->
next=p->
free(p);
药品已删除!
{FILE*fp=fopen("
E:
/yao.txt"
r"
fp)
error"
while(!
feof(fp))
{DrugPtryao=(DrugPtr)malloc(sizeof(Drug));
yao->
fscanf(fp,"
%s%s%f%s%s%d%s\n"
Drug_id,yao->
Drug_name,&
Drug_price,yao->
Drug_type,yao->
Drug_time,&
amount,yao->
druginsert(yaolist,yao);
fclose(fp);
voidsave_to_file(DrugPtr&
FILE*fp=fopen("
w"
{fprintf(fp,"
%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n"
voiddrug_find_name(DrugPtrhead,char*name)
{DrugPtrcur,p;
p=head;
cur=head;
inti=0;
Drug_name,name))
if(p)
{while(cur!
=NULL)
strcmp(cur->
{printf("
cur->
Drug_id,cur->
Drug_name,cur->
Drug_price,cur->
Drug_type,cur->
Drug_time,cur->
amount,cur->
i++;
}
cur=cur->
所有名称为%s的数量为%d\n"
name,i);
{printf("
没有找到该药名!
voiddrug_find_type_z(DrugPtrhead)
{DrugPtrcur,p;
Drug_type,"
中药"
Drug_type,"
Drug_id,cur->
Drug_name,cur->
cur=cur->
所有中药的数量为%d\n"
i);
没有该类型的药!
voiddrug_find_type_zc(DrugPtrhead)
中成药"
{while(cur!
{if(!
所有中成药的数量为%d\n"
voiddrug_find_type_x(DrugPtrhead)
西药"
{
while(cur!
所有西药的数量为%d\n"