1、C语言程序设计药房管理系统课程设计报告 (201 201 学年 第 学期)课 程: 高级语言程序设计 题 目: 药房管理系统 姓 名: 专 业: 班 级: 学 号: 指导教师: 完成时间: 一、课程设计的内容(课程设计题目,正式报告需将括号内文字删除)药房管理系统功能:设计药房管理系统,输入药品基本信息(药品编号、名称、单价、库存数量、品牌),并实现以下功能:1、修改、删除指定药品的信息2、按单价或库存数量排序并显示药品信息3、统计指定品牌药品数量分步实施: 1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2、完成最低要求:实现药品的添加、修改、删除等功能; 3、进一步要求
2、:实现排序及统计功能。要求:1、用C语言实现程序设计;2、系统的各个功能模块要求用函数实现; 3、界面友好(良好的人机交互),程序加必要的注释。二、功能描述(对系统要实现的功能进行描述,正式报告需将括号内文字删除)1、能正确地录入药品信息并保存下来。2、能够有效、快速地查看全部药品的信息。3、可以查看某一药品的信息(按药品的默认序号查看)4、可以查看某一药品的信息(按药品的编号进行查看)5、能够按照管理人员的意愿修改任意药品的信息6、能修改药品信息7、此系统还能对药品的单价进行排序三、概要设计(根据功能描述建立系统的体系结构,即将整个系统分解成若干子功能模块,并用框图表示各功能模块之间的衔接关
3、系,并简要说明各模块的功能,正式报告需将括号内文字删除)四、详细设计(详细说明各功能模块的实现过程,包括用流程图对算法进行描述、所用到的数据结构、算法实现的主要源代码等,正式报告需将括号内文字删除)#include#include#include#includestruct medicine char name20; /药品名称 char number50; /药品编号 char price50; /单价 char inventory50; /库存数量 char brand20; /品牌 medicine100; /假设最大数为100. /定义全局变量numint num; int menu_
4、select() char s80; int a;/*定义整形变量*/ system(cls); printf(tt-您好!您已进入药房管理系统-nn); printf(ttt1. 输入药品信息n); printf(ttt2. 查看药品信息n); printf(ttt3. 修改药品信息n); printf(ttt4. 按编号查找药品n); printf(ttt5. 按价格排序 n); printf(ttt6. 删除药品信息n); printf(ttt7. 退出n); printf(tt-nn); do printf(Enter you choice(17):); scanf(%s,s); a=
5、atoi(s); while (a7); return a;int addmedicine() printf(ttt-请输入您要保存的信息 -n); printf(ttt输入药品名称:n); scanf(%s,medicinenum.name); printf(ttt输入药品编号:n); scanf(%s,medicinenum.number); printf(ttt单价:n); scanf(%s,medicinenum.price); printf(ttt品牌:n); scanf(%s,medicinenum.brand); printf(ttt库存数量 :n); scanf(%s,medi
6、cinenum.inventory); num+; printf(ttt是否继续添加?(Y/N):n); if(getch()=y | getch()=Y) addmedicine(); return(0);void modifybyname() /按药品名称修改 char c; int i,mark=0; char name20; printf(ntt请输入要修改的药品名称:); scanf(%s,name); if(num=0) printf(ntt文件中无相关药品); printf(ntt按任意键返回主菜单); getch(); mark+; return; for(i=0;inum;i
7、+) if(strcmp(medicinei.name,name)=0) printf(ntt以下是您要修改的药品信息); printf(ntt药品名称: %s,medicinei.name); printf(ntt药品编号: %s,medicinei.number); printf(ntt单价: %s,medicinei.price); printf(ntt品牌: %s,medicinei.brand); printf(ntt库存数量: %s,medicinei.inventory); printf(ntt是否修改(y/n); if(getch()=y) printf(nt-请选择修改信息-
8、); printf(nt 1-修改药品名称 ); printf(nt 2-修改药品编号 ); printf(nt 3-修改单价 ); printf(nt 4-修改品牌 ); printf(nt 5-修改库存数量 ); printf(nt-); printf(nt请选择您所要的服务:); scanf(%s,&c); switch(c) case 1: printf(nt请输入新药品名称: ); scanf(%s,medicinei.name);break; case2:printf(nt请输入新药品编号: %s); scanf(%s,medicinei.number);break; case3:
9、printf(nt请输入新单价: ); scanf(%s,medicinei.price);break; case4:printf(nt请输入新品牌: ); scanf(%s,medicinei.brand);break; case5:printf(nt请输入新库存数量: ); scanf(%s,medicinei.inventory);break; if(mark=0) printf(ntt药品信息修改完毕); printf(nt是否继续修改?(Y/N):); if(getch()=y) modifybyname(); return; void list() int i; system(cl
10、s); if(num!=0) printf(ttt-已为您显示所有药品信息-n); for (i=0;inum;i+) printf(ttt药品名称:%sn,medicinei.name); printf(ttt药品编号:%sn,medicinei.number); printf(ttt单价:%sn,medicinei.price); printf(ntt品牌: %sn,medicinei.brand); printf(ttt库存数量:%sn,medicinei.inventory); if(i+1num) system(pause); printf(ttt-n); else printf(t
11、tt系统中无任何记录n); printf(ttt按任意键返回主菜单:n); getch(); return;int searchbyname() int mark=0; int i; printf(ttt- 按药品名称查找 -n); char name20; printf(ttt请输入药品名称:n); scanf(%s,name); for(i=0;inum;i+) if (strcmp(medicinei.name,name)=0) printf(ttt- 以下是您查找的药品信息 -n); printf(ttt药品名称: %s,medicinei.name); printf(ttt药品编号:
12、 %s,medicinei.number); printf(ttt单价: %s,medicinei.price); printf(ntt品牌: %s,medicinei.brand); printf(ttt库存数量:%sn,medicinei.inventory);printf(ttt-n); mark+; if(i+1)num) printf(ttt是否继续查找相同名称的药品信息:(y/n)n); if(getch()=y | getch()=Y) continue; else return(0); else printf(ttt请按任意键返回主菜单); getch(); return(0)
13、; if(mark = 0) printf(ttt没有您要查找的药品记录n); printf(ttt请按任意键返回主菜单n); getch(); return(0); return 0;int searchbynumber() int mark=0; int i; printf(ttt-按药品编号查找 -n); char number10; printf(ttt请输入药品编号:n); scanf(%s,number); for(i=0;inum;i+) if (strcmp(medicinei.number,number)=0) printf(ttt-以下是您查找的药品信息 -n); prin
14、tf(ttt药品名称: %s,medicinei.name); printf(ttt药品编号: %s,medicinei.number); printf(ttt单价: %s,medicinei.price); printf(ntt品牌: %s,medicinei.brand); printf(ttt库存数量:%sn,medicinei.inventory); printf(ttt-n); printf(ttt请按任意键返回主菜单n); mark+; getch(); return(0); if (mark=0) printf(ttt没有改药品的信息n); printf(ttt请按任意键返回主菜
15、单n); getch(); return(0); return(0);void deletebynumber() int i,j; int deletemark=0; char number20; printf(ttt请输入要删除药品编号:n); scanf(%s,number); if(num=0) printf(ttt对不起,系统中无任何记录n); printf(ttt请按任意键返回主菜单n); getch(); return; for (i=0;inum;i+) if (strcmp(medicinei.number,number)=0) printf(ttt以下是您要删除的用户记录:n
16、); printf(ttt药品名称: %s,medicinei.name); printf(ttt药品编号: %s,medicinei.number); printf(ttt单价: %s,medicinei.price); printf(ntt品牌: %s,medicinei.brand); printf(ttt库存数量:%sn,medicinei.inventory); printf(ttt是否删除?(y/n); if (getch()=y | getch()=Y) for (j=i;jnum-1;j+) medicinej=medicinej+1; num-; deletemark+; p
17、rintf(ttt删除成功); printf(ttt是否继续删除?(y/n); if (getch()=y | getch()=Y) deletebynumber(); return; else return; continue; if (deletemark=0) printf(ttt没有该药品的记录); printf(ttt是否继续删除?(y/n); if(getch()=y | getch()=Y) deletebynumber(); return; return;void deletebyname() int a=0; int findmark=0; int j; int delete
18、mark=0; int i; char name20; printf(ttt请输入要删除药品名称:n); scanf(%s,name); for (i=a;inum;i+) if(strcmp(medicinei.name,name)=0) printf(ttt以下是您要删除的药品信息:); findmark+; printf(ttt_); printf(ttt药品名称: %s,medicinei.name); printf(ttt药品编号: %s,medicinei.number); printf(ttt单价: %s,medicinei.price); printf(ntt品牌: %s,me
19、dicinei.brand); printf(ttt库存数量:%sn,medicinei.inventory); printf(ttt_); printf(ttt是否删除?(y/n); if (getch()=y | getch() = Y) for(j=i;jnum-1;j+) medicinej=medicinej+1; num-; deletemark+; printf(ttt删除成功); if(i+1)num) printf(ttt是否继续删除相同名称的药品信息?(y/n); if (getch()=y) a=i; continue; printf(ttt是否继续删除?(y/n); i
20、f (getch()=y) deletebyname(); return; if(i+1)num) printf(ttt是否继续删除相同名称的药品信息?(y/n); if (getch()=y | getch() = Y) a=i; continue; else continue; if (deletemark=0)&(findmark=0) printf(ttt没有该药品的记录); printf(ttt是否继续删除?(y/n); if(getch()=y | getch() = Y) deletebynumber(); return; else if (findmark!=0) printf
21、(ttt没有重名信息); printf(ttt没有该药品的记录); printf(ttt是否继续删除?(y/n); if(getch()=y | getch() = Y) deletebynumber(); return; int dele() /删除记录 char choic; printf(ttt1-按药品编号删除 2-按药品名称删除); printf(ttt请选择:); choic=getch(); switch (choic) case 1:deletebynumber();break; case 2:deletebyname();break; return(0);int sortby
22、price() /按药品单价进行排序 int i,j; struct medicine tmp; for (i=1;inum;i+) if(strcmp(medicinei.price,medicinei-1.price)0) tmp=medicinei; j=i-1; do medicinej+1=medicinej; j-; while (strcmp(tmp.price,medicinej.price)=0); medicinej+1=tmp; printf(ttt排序成功,是否显示?(y/n); if (getch()=y) list(); return(0);int main() p
23、rintf(tt-n); printf(tt-Welcome to management system -n); printf(tt-Made By FACE CARD-n); printf(tt-n); printf(请按任意键进入主菜单:)n); getch(); int selectnum; while(1) selectnum = menu_select(); switch(selectnum) case 1: addmedicine(); /添加药品信息 break; case 2: list(); break; case 3: modifybyname(); /修改药品信息 break; case 4: searchbynumber(); /按药品编号查找 break; case 5: sortbyprice(); /按药品单价排