课程设计报告(201 —201 学年第学期)课程:_________ 高级语言程序设计题目:_________ 药房管理系统______________ 姓名: ________________________________________ 专业: ________________________________________ 班级: ________________________________________ 学号: ________________________________________ 指导教师:_____________________________________完成时间: ____________________________________、课程设计的内容(课程设计题目,正式报告需将括号内文字删除)药房管理系统功能:设计药房管理系统,输入药品基本信息(药品编号、名称、单价、库存数量、品牌),并实现以下功能:1、修改、删除指定药品的信息2、按单价或库存数量排序并显示药品信息3、统计指定品牌药品数量分步实施:1 、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2 、完成最低要求:实现药品的添加、修改、删除等功能; 3、进一步要求:实现排序及统计功能。
要求: 1、用 C 语言实现程序设计; 2、系统的各个功能模块要求用函数实现;3 、界面友好(良好的人机交互),程序加必要的注释。
二、功能描述(对系统要实现的功能进行描述,正式报告需将括号内文字删除)1、能正确地录入药品信息并保存下来。
2 、能够有效、快速地查看全部药品的信息。
3、可以查看某一药品的信息(按药品的默认序号查看)4 、可以查看某一药品的信息(按药品的编号进行查看)5 、能够按照管理人员的意愿修改任意药品的信息6、能修改药品信息 7、此系统还能对药品的单价进行排序三、概要设计(根据功能描述建立系统的体系结构,即将整个系统分解成若干子功能模块,并用框图表示各功能模块之间的衔接关系,并简要说明各模块的功能,正式报告需将括号内文字删除)确认全部删除取消单个删除单个删除按名称删除plr确认是否删除■ -I厂r是1删除成功四、详细设计(详细说明各功能模块的实现过程,包括用流程图对算法进行描述、所用//药品名称 //药品编号 //单价//库存数量 //品牌//假设最大数为 100.\n\n");#include<stdio.h> #include<stdlib.h> #include<string.h>#include<conio.h> struct medicine {char name[20]; char number[50]; char price[50]; char inventory[50]; char brand[20]; } medicine[100];//定义全局变量 numint num;int menu_select (){char s[80];int a;/* 定义整形变量 */ system ("cls");printf ("\t\t ---------- 您好!您已进入药房管理系统 printf ("\t\t\t1. 输入药品信息 \n"); printf ("\t\t\t2. 查看药品信息 \n"); printf ("\t\t\t3. 修改药品信息 \n"); printf ("\t\t\t4. 按编号查找药品 \n"); printf ("\t\t\t5. 按价格排序 \n");printf("\t\t\t6. 删除药品信息 \n"); printf("\t\t\t7. 退出 \n");\n");do{printf("Enter you choice(1~7):"); scanf("%s",s); a=atoi(s);}while (a<1 || a>7); return a;}int addmedicine(){printf("\t\t\t ----------- 请输入您要保存的信息printf("\t\t\t 输入药品名称 :\n"); scanf("%s",medicine[num].name); printf("\t\t\t 输入药品编号 :\n"); scanf("%s",medicine[num].number); printf("\t\t\t 单价 :\n"); scanf("%s",medicine[num].price); printf("\t\t\t 品牌 :\n"); scanf("%s",medicine[num].brand); printf("\t\t\t 库存数量 :\n"); scanf("%s",medicine[num].inventory); num++;printf("\t\t\t 是否继续添加 ?(Y/N):\n");if(getch()=='y'|| getch()=='Y')addmedicine();return(0);void modifybyname() //按药品名称修改{char c;int i,mark=0;char name[20];printf("\n\t\t 请输入要修改的药品名称: ");scanf("%s",name);if(num==0){printf("\n\t\t 文件中无相关药品 ");printf("\n\t\t 按任意键返回主菜单 ");getch(); mark++;return;}for(i=0;i<num;i++){if(strcmp(medicine[i].name,name)==0){printf("\n\t\t 以下是您要修改的药品信息 ");printf("\n\t\t 药品名称 : %s",medicine[i].name);printf("\n\t\t 药品编号 : %s",medicine[i].number);printf("\n\t\t 单价 : %s",medicine[i].price);printf("\n\t\t 品牌 : %s",medicine[i].brand);printf("\n\t\t 库存数量 : %s",medicine[i].inventory);printf("\n\t\t 是否修改 (y/n)");if(getch()=='y'){printf("\n\t---------------------- 请选择修改信息 ---------------------------------- ");printf("\n\t 1-修改药品名称");printf("\n\t 2-修改药品编号");printf("\n\t 3-修改单价");printf("\n\t 4-修改品牌");printf("\n\t 5-修改库存数量");printf("\n\t----------------------------------------------------------------------------- ");printf("\n\t 请选择您所要的服务: ");scanf("%s",&c);switch(c){case '1': printf("\n\t 请输入新药品名称: "); scanf("%s",medicine[i].name);break;case'2':printf("\n\t 请输入新药品编号: %s");scanf("%s",medicine[i].number);break; case'3':printf("\n\t 请输入新单价 : ");scanf("%s",medicine[i].price);break; case'4':printf("\n\t 请输入新品牌 : ");scanf("%s",medicine[i].brand);break; case'5':printf("\n\t 请输入新库存数量 : ");scanf("%s",medicine[i].inventory);break;}}}}if(mark==0){printf("\n\t\t 药品信息修改完毕 "); printf("\n\t 是否继续修改? (Y/N):");if(getch()=='y') modifybyname();return;}void list(){int i;system("cls");if(num!=0){printf("\t\t\t ------- 已为您显示所有药品信息----------------- \n");for (i=0;i<num;i++){printf("\t\t\t 药品名称: %s\n",medicine[i].name);printf("\t\t\t 药品编号: %s\n",medicine[i].number);printf("\t\t\t 单价: %s\n",medicine[i].price); printf("\n\t\t 品牌 : %s\n",medicine[i].brand);printf("\t\t\t 库存数量: %s\n",medicine[i].inventory);if(i+1<num){system("pause");}}printf("\t\t\t ---------------------------- \n");}elseprintf("\t\t\t 系统中无任何记录 \n");printf("\t\t\t 按任意键返回主菜单: \n");getch();return;}int searchbyname()int mark=0;int i;printf("\t\t\t ------- 按药品名称查找------------------- \n");char name[20];printf("\t\t\t 请输入药品名称 :\n");scanf("%s",name);for(i=0;i<num;i++){if (strcmp(medicine[i].name,name)==0){printf("\t\t\t ----- 以下是您查找的药品信息 -----------------\nprintf("\t\t\t 药品名称: %s",medicine[i].name);printf("\t\t\t 药品编号: %s",medicine[i].number); printf("\t\t\t 单价: %s",medicine[i].price); printf("\n\t\t 品牌 : %s",medicine[i].brand);printf("\t\t\t 库存数量: %s\n",medicine[i].inventory);printf("\t\t\t ------------------------------------------------------ \n");mark++;(y/n)\n");if((i+1)<num){printf("\t\t\t 是否继续查找相同名称的药品信息: if(getch()=='y'|| getch()=='Y'){continue;}elsereturn(0);}elseprintf ("\t\t\t 请按任意键返回主菜单 ");getch();return(0);}}}if(mark == 0){printf("\t\t\t 没有您要查找的药品记录 \n");printf("\t\t\t 请按任意键返回主菜单 \n");getch();return(0);}return 0;}int searchbynumber()\n"); {int mark=0;int i;printf("\t\t\t ------------- 按药品编号查找 ---------------------- \n");char number[10];printf("\t\t\t 请输入药品编号 :\n");scanf("%s",number);for(i=0;i<num;i++){if (strcmp(medicine[i].number,number)==0){printf("\t\t\t ------------ 以下是您查找的药品信息 --printf("\t\t\t 药品名称: %s",medicine[i].name);printf("\t\t\t 药品编号: %s",medicine[i].number);printf("\t\t\t 单价: %s",medicine[i].price);printf("\n\t\t 品牌 : %s",medicine[i].brand);printf("\t\t\t 库存数量: %s\n",medicine[i].inventory); printf("\t\t\t \n");printf("\t\t\t 请按任意键返回主菜单 \n");mark++;getch();return(0);}}if (mark==0){printf("\t\t\t 没有改药品的信息 \n");printf("\t\t\t 请按任意键返回主菜单 \n");getch();return(0);}return(0);}void deletebynumber(){int i,j;int deletemark=0;char number[20];printf("\t\t\t 请输入要删除药品编号: \n");scanf("%s",number);if(num==0){printf("\t\t\t 对不起,系统中无任何记录 \n");printf("\t\t\t 请按任意键返回主菜单 \n");getch();return;}for (i=0;i<num;i++){if (strcmp(medicine[i].number,number)==0){printf("\t\t\t 以下是您要删除的用户记录: \n");printf("\t\t\t 药品名称: %s",medicine[i].name);printf("\t\t\t 药品编号: %s",medicine[i].number); printf("\t\t\t 单价: %s",medicine[i].price); printf("\n\t\t 品牌 : %s",medicine[i].brand);printf("\t\t\t 库存数量: %s\n",medicine[i].inventory); printf("\t\t\t 是否删除 ?(y/n)");if (getch()=='y'|| getch()=='Y'){for (j=i;j<num-1;j++)medicine[j]=medicine[j+1];num--;deletemark++;printf("\t\t\t 删除成功 ");printf("\t\t\t 是否继续删除 ?(y/n)");if (getch()=='y'|| getch()=='Y')deletebynumber();return;}else return; continue;}if (deletemark==0){printf("\t\t\t 没有该药品的记录 ");printf("\t\t\t 是否继续删除 ?(y/n)");if(getch()=='y'|| getch()=='Y') deletebynumber();return;}return;}void deletebyname(){int a=0;int findmark=0;int j;int deletemark=0;int i;char name[20];printf("\t\t\t 请输入要删除药品名称: \n");scanf("%s",name);for (i=a;i<num;i++){if(strcmp(medicine[i].name,name)==0){printf("\t\t\t 以下是您要删除的药品信息: "); findmark++;printf("\t\t\t_________________________________ ");printf("\t\t\t 药品名称: %s",medicine[i].name); printf("\t\t\t 药品编号: %s",medicine[i].number); printf("\t\t\t 单价: %s",medicine[i].price); printf("\n\t\t 品牌 : %s",medicine[i].brand);printf("\t\t\t 库存数量: %s\n",medicine[i].inventory);printf("\t\t\t_________________________________ ");printf("\t\t\t 是否删除 ?(y/n)");if (getch()=='y'|| getch() == 'Y'){for(j=i;j<num-1;j++)medicine[j]=medicine[j+1];num--;deletemark++;printf("\t\t\t 删除成功 ");if((i+1)<num){printf("\t\t\t 是否继续删除相同名称的药品信息 ?(y/n)"); if (getch()=='y'){a=i;continue;}}printf("\t\t\t 是否继续删除 ?(y/n)");if (getch()=='y')deletebyname();return;}if((i+1)<num){printf("\t\t\t 是否继续删除相同名称的药品信息 ?(y/n)");if (getch()=='y'|| getch() == 'Y'){a=i;continue;}}}elsecontinue;}if ((deletemark==0)&&(findmark==0)) {printf("\t\t\t 没有该药品的记录 "); printf("\t\t\t 是否继续删除 ?(y/n)"); if(getch()=='y'|| getch() == 'Y') deletebynumber();return;}else if (findmark!=0){printf("\t\t\t 没有重名信息 ");printf("\t\t\t 没有该药品的记录 "); printf("\t\t\t 是否继续删除 ?(y/n)"); if(getch()=='y'|| getch() == 'Y') deletebynumber();return;}}int dele()//删除记录char choic;printf("\t\t\t1- 按药品编号删除 2-按药品名称删除 "); printf("\t\t\t 请选择: ");choic=getch();switch (choic){case '1':deletebynumber();break;case '2':deletebyname();break;}return(0);}int sortbyprice() // 按药品单价进行排序{int i,j;struct medicine tmp;for (i=1;i<num;i++){if(strcmp(medicine[i].price,medicine[i-1].price)<0){tmp=medicine[i];j=i-1;do{medicine[j+1]=medicine[j];j--;}while ((strcmp(tmp.price,medicine[j].price)<0&&j>=0)); medicine[j+1]=tmp; }}printf("\t\t\t 排序成功 ,是否显示 ?(y/n)");if (getch()=='y')list();return(0);}int main(){printf("\t\t ---------------------------------------------------------- \n");printf("\t\t ------- Welcome to management system ---------------- \n");printf("\t\t ------- Made By FACE CARD ------------------------- \n");printf("\t\t ---------------------------------------------------------- \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(); // 按药品单价排序break;}case 6:{dele();break;}case 7:{printf("BYE BYE!\n");system("pause");getchar();exit(0);}}} getchar(); return 0;五、测试结果(说明系统的各模块运行结果(附运行界面图片),正式报告需将括号内文字删除)1进入系统运行界面2、添加药品信息3、显示药品信息4、修改药品信息5、按编号查找药品信息■ “[>\C西宜*EltXDtbug磺鹿晋煙爭洗exe- —_ X6、按价格排序7、删除药品信息您好!曙已进入药馬管理系统-1. 输入药品信息2. 査看药品信息3. 修改药品信息4. 按编号查找药品5. 按价格tt序6. 删除药品甘息7. 退岀Enter you choice(P7) :61-按药品编号删除皆按药品名称和除请选择:请输入要删除药品编号:1001以下是您要删除的用户记录;药品苦称!aspirin跖品编号:1001单价:19品牌:AC 库存数呈;.13是否删除?(y/n)六、丿总结(谈谈自己的课程设计中的心得体会,正式报告需将括号内文字删除) □整个实验比较复杂,我使用switch语句调用菜单中的各个功能软件调用不同的函数来实现不同的功能,通过反复调用函数来实现反复输入。