医药管理系统实验报告.docx
《医药管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《医药管理系统实验报告.docx(30页珍藏版)》请在冰豆网上搜索。
医药管理系统实验报告
成绩评定表
学生姓名
班级学号
专业
计算机科学与技术
课程设计题目
医药管理系统
评
语
组长签字:
成绩
日期
2015年月日
课程设计任务书
学院
信息科学与工程学院
专业
计算机科学与技术
学生姓名
班级学号
课程设计题目
医药管理系统
实践教学要求与任务:
任务:
制作一个医药管理系统,能够查看药品列表,显示药品相关信息,能够修改药品信息,能够添加没有的药品,能够根据不同条件查询药品信息。
要求:
1.设计数据结构,存储结构;
2.在c兼容环境完成上述题目的代码编写与调试;
3.程序运行界面交互性好;
4.软件运行,给出测试数据。
工作计划与进度安排:
数据结构课程设计时间安排在教学第14周、第15周内完成,按上述题目要求完成查阅资料、程序设计、调试、运行等工作。
时间安排如下:
1、查阅资料、与初步设计;1-2天
2、整体功能设计、代码编码与初步调试。
1-3天
3、调试和软件功能的测试和验收。
1-3天
4、答辩与论文撰写。
1-2天
指导教师:
2015年12月12日
专业负责人:
2015年12月12日
学院教学副院长:
2015年12月12日
一、题目概述(内容及要求)
1.内容:
制作一个医药管理系统,能够查看药品列表,显示药品相关信息,能够修改药品信息,能够添加没有的药品,能够根据不同条件查询药品信息。
2.要求:
1.程序代码完成,编译运行成功。
2.数据输入首选采用文件的方式,其次键盘输入。
3.分析采用哪种合适的存储结构来储存数据
4.设计一定的用户界面,简洁。
二、功能分析
1.
功能模块图
2.程序流程图
查看
添加返回删除修改
返回返回
N
Y
Y
N
返回
N
Y
NN
返回
Y
N返回
图2.2程序流程图
三、设计
相关代码:
#include
#include
#include
#include
#include
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"\
"1:
修改药品名称\n"\
"2:
修改药品价格\n"\
"3:
修改药品数量\n"\
"4:
修改药品类型\n"\
"5:
修改药品备注\n"\
"0:
返回主菜单\n"\
"请您选择:
"
#defineMENU5"欢迎进入分类查询页面\n"\
"1:
按编号查询\n"\
"2:
按名称查询\n"\
"3:
按类型查询\n"\
"4:
按价格查询\n"\
"5:
按库存数量查询\n"\
"6:
按入库时间查询\n"\
"0:
返回主菜单\n"\
"请您选择:
"
#defineMENU50"按药品编号查询\n"\
"请输入要查询的药品编号:
"
#defineMENU51"按药品名称查询\n"\
"请输入要查询的药品名称:
"
#defineMENU52"按药品类型查询\n"\
"请输入要查询的药品类型:
\n"\
"1:
中药\n"\
"2:
中成药\n"\
"3:
西药\n"\
"0:
返回查询菜单\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&yaolist);//将文件读入链表
void*GetStdin(constchar*numstr,char*control,void*ret);
DrugPtrgetvalue();//取值
voiddruginsert(DrugPtr&yaolist,DrugPtryao);//插入操作
intisdrugin(DrugPtryaolist,DrugPtryao);//判断
voiddrugmodify(DrugPtr&yaolist,DrugPtryao);//修改操作
voiddeletenode(DrugPtr&yaolist,chardrug_id[]);//删除操作
voiddeletedrug(DrugPtr&yaolist);
voidupdatedrug(DrugPtr&yaolist);
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);//删除药品
break;
case4:
updatedrug(head);//修改药品信息
break;
case5:
//分类查询
drug_type_choose(head);
break;
case0:
//退出
break;
}
}
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);
}
system("cls");
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));
printf("请输入药品编号:
");
scanf("%s",&yao->Drug_id);
printf("\n");
printf("请输入药品名称:
");
scanf("%s",&yao->Drug_name);
printf("\n");
printf("请输入药品价格:
");
scanf("%f",&yao->Drug_price);
printf("\n");
printf("请输入药品数量:
");
scanf("%d",&yao->amount);
printf("\n");
printf("请输入药品入库时间:
");
scanf("%s",&yao->Drug_time);
printf("\n");
printf("请输入药品类型:
");
scanf("%s",&yao->Drug_type);
printf("\n");
printf("请输入药品备注:
");
scanf("%s",&yao->remark);
printf("\n");
yao->next=NULL;
returnyao;
}
voiddruginsert(DrugPtr&yaolist,DrugPtryao)
{if(!
yaolist)
yaolist=yao;
else
{yao->next=yaolist->next;
yaolist->next=yao;
}
}
DrugPtrisdrugin(DrugPtryaolist,chardrug_id[])
{DrugPtrp=yaolist;
while(p)
{if(!
strcmp(p->Drug_id,drug_id))
break;
else
p=p->next;
}
returnp;
}//更新结点
voiddrugmodify(DrugPtr&yaolist,DrugPtryao)
{intchoice;
DrugPtrp=yaolist;
floatt=0;//没有这句出现floatpointnotloaded
while(*(int*)GetStdin(MENU41,"%d",&choice))
{switch(choice)
{
case1:
GetStdin("请输入药品的新名称:
","%s",yao->Drug_name);
printf("\n");
cputs("更新成功!
请继续选择\n");
printf("\n");
break;
case2:
GetStdin("请输入药品的新价格:
","%f",&yao->Drug_price);
printf("\n");
cputs("更新成功!
请继续选择\n");
printf("\n");
break;
case3:
GetStdin("请输入药品的修改数量:
","%d",&yao->amount);
printf("\n");
cputs("更新成功!
请继续选择\n");
printf("\n");
break;
case4:
GetStdin("请输入药品的新类型:
","%s",yao->Drug_type);
printf("\n");
cputs("更新成功!
请继续选择\n");
printf("\n");
break;
case5:
GetStdin("请输入药品的新备注:
","%s",yao->remark);
printf("\n");
cputs("更新成功!
请继续选择\n");
printf("\n");
break;
case0:
break;
}
}
}//找到结点返回update
voidupdatedrug(DrugPtr&yaolist)
{charstring[30];
DrugPtryao;
while(strcmp((char*)GetStdin("请输入药品编号(按0结束):
\n","%s",string),"0"))
{yao=isdrugin(yaolist,string);
if(yao)//判断药是否存在
drugmodify(yaolist,yao);
else
printf("没有这种药\n");
}
}
voiddeletedrug(DrugPtr&yaolist)
{charstring[30];
while(STRCMP(SECOND,string))
{
if(isdrugin(yaolist,string))
{
deletenode(yaolist,string);
}
else
printf("药品不存在!
");
}
}
voiddeletenode(DrugPtr&yaolist,chardrug_id[])
{DrugPtrq,p;
q=yaolist;
p=q->next;
if(!
strcmp(yaolist->Drug_id,drug_id))
{yaolist=yaolist->next;
free(q);
}
else
{while(p)
{if(!
strcmp(p->Drug_id,drug_id))
break;
q=q->next;
p=p->next;
}
q->next=p->next;
free(p);
}
printf("药品已删除!
");
}
voidread_to_list(DrugPtr&yaolist)
{FILE*fp=fopen("E:
/yao.txt","r");
if(!
fp)
printf("error");
while(!
feof(fp))
{DrugPtryao=(DrugPtr)malloc(sizeof(Drug));
yao->next=NULL;fscanf(fp,"%s%s%f%s%s%d%s\n",yao->Drug_id,yao->Drug_name,&yao->Drug_price,yao->Drug_type,yao->Drug_time,&yao->amount,yao->remark);
druginsert(yaolist,yao);
}
fclose(fp);
}
voidsave_to_file(DrugPtr&yaolist)
{DrugPtrp=yaolist;
FILE*fp=fopen("E:
/yao.txt","w");
if(!
fp)
printf("error");
while(p)
{fprintf(fp,"%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",p->Drug_id,p->Drug_name,p->Drug_price,p->Drug_type,p->Drug_time,p->amount,p->remark);
p=p->next;
}
fclose(fp);
}
voiddrug_find_name(DrugPtrhead,char*name)
{DrugPtrcur,p;
p=head;
cur=head;
inti=0;
while(p)
{if(!
strcmp(p->Drug_name,name))
break;
else
p=p->next;
}
if(p)
{while(cur!
=NULL)
{if(!
strcmp(cur->Drug_name,name))
{printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id,cur->Drug_name,cur->Drug_price,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);
i++;
}
cur=cur->next;
}
printf("\n");
printf("所有名称为%s的数量为%d\n",name,i);
printf("\n");
}
else
{printf("\n");
printf("没有找到该药名!
\n");
printf("\n");
}
}
voiddrug_find_type_z(DrugPtrhead)
{DrugPtrcur,p;
cur=head;
p=head;
inti=0;
while(p)
{if(!
strcmp(p->Drug_type,"中药"))
break;
else
p=p->next;
}
if(p)
{while(cur!
=NULL)
{if(!
strcmp(cur->Drug_type,"中药"))
{printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id,cur->Drug_name,cur->Drug_price,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);
i++;
}
cur=cur->next;
}
printf("\n");
printf("所有中药的数量为%d\n",i);
printf("\n");
}
else
{printf("\n");
printf("没有该类型的药!
\n");
printf("\n");
}
}
voiddrug_find_type_zc(DrugPtrhead)
{DrugPtrcur,p;
cur=head;
p=head;
inti=0;
while(p)
{if(!
strcmp(p->Drug_type,"中成药"))
break;
else
p=p->next;
}
if(p)
{while(cur!
=NULL)
{if(!
strcmp(cur->Drug_type,"中成药"))
{printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id,cur->Drug_name,cur->Drug_price,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);
i++;
}
cur=cur->next;
}
printf("\n");
printf("所有中成药的数量为%d\n",i);
printf("\n");
}
else
{printf("\n");
printf("没有该类型的药!
\n");
printf("\n");
}
}
voiddrug_find_type_x(DrugPtrhead)
{DrugPtrcur,p;
cur=head;
p=head;
inti=0;
while(p)
{if(!
strcmp(p->Drug_type,"西药"))
break;
else
p=p->next;
}
if(p)
{
while(cur!
=NULL)
{if(!
strcmp(cur->Drug_type,"西药"))
{printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id,cur->Drug_name,cur->Drug_price,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);
i++;
}
cur=cur->next;
}
printf("\n");
printf("所有西药的数量为%d\n",i);
printf("\n");
}
else
{
printf("