此药店管理系统运用了循环、指针、结构体、链表、函数、文件等知识,包含了c语言绝大多数内容。
药店管理系统由登录界面、管理端、用户端构成。
登录界面用户必须先进行注册,并确认注册身份。注册的账号、密码、身份信息保存在id文件中。之后进行登录。如果用户输入的信息与id文件中的信息一致,才会登录成功。
管理端有药品录入、显示、查找和修改功能,用户端有药品显示,查找,购买功能。
药品的录入、查找运用了链表的建立、增删、遍历,显示运用了单链表的冒泡排序。药品的信息储存在medicine的文件中,需要的时候读到链表中。
运用printf将注册登录页面打印出来。用户选择后调到对应函数中。注册先选择注册的身份,随后输入账号密码,不一致则重新输入,一致则注册成功并返回登录界面。
登录密码错误上限三次,登录成功后进入正式页面。
注册与登录界面
int main(int argc, char *argv[]) {//登录面板
int n;
printf("\n\n\n");
printf("-----------------------------------------\n");
printf("|\t 欢迎使用药店管理系统\t\t|\n");
printf("|\t\t1- 注册 \t\t|\n");
printf("|\t\t2- 登录 \t\t|\n");
printf("|\t\t0- 结束 \t\t|\n");
printf("-----------------------------------------\n");
a: printf("请输入对应数字进行操作:");
scanf("%d",&n);
if(n==1)
{
system("cls");
register_();
}else if(n==2)
{
system("cls");
login();
}else if(n==0)
{
return 0;
}else
{
printf("输入错误,请重新输入!\n");
goto a;
}
return 0;
}
注册函数
a: printf("请确认你要注册的身份:\n");
printf("1-管理员\t\t2-用户\n");
int identity,i;
char account[20]={0},password_1[10]={0},password_2[10]={0};
scanf("%d",&identity);
if(identity==1||identity==2)
{
printf("请输入账号:\n");
scanf("%s",account);
b: printf("请输入密码(8位):\n");
for(i=0;i<8;i++)
{
password_1[i]=getch();
printf("*");
}
printf("请再次确认密码:\n");
for(i=0;i<8;i++)
{
password_2[i]=getch();
printf("*");
}
printf("%s\n%s",password_1,password_2);
if(strcmp(password_1,password_2)==0)
{
printf("注册成功!\n");
}else
{
printf("密码输入不一致!\n");
goto b;
}
}else
{
printf("输入错误,请重新输入!\n");
goto a;
}
保存到文件中
FILE *fp;
fp=fopen("D:/c/Dev-Cpp/id.txt","a+");
if(fp==NULL)
{
printf("文件打开失败!\n");
return 0;
}
fprintf(fp,"%d %s %s\n",identity,&account,&password_1);
fclose(fp);
printf("按任意键返回!\n");
getch();
system("cls");
main();
登录函数
#include
#include
#include
int login()
{
int identity=0,j=3;
char account_1[20]={0},account_2[20]={0},password_1[10]={0},password_2[10]={0};
a: printf("请输入账号:\n");
scanf("%s",account_1);
printf("请输入密码(8位):\n");
int judge=0,i;
for(i=0;i<8;i++)
{
password_1[i]=getch();
printf("*");
}
FILE *fp;
fp=fopen("D:/c/Dev-Cpp/id.txt","a+");
if(fp==NULL)
{
printf("账号不存在,请注册账号!\n");
system("cls");
main();
}
while(!feof(fp))
{
fscanf(fp,"%d %s %s\n",&identity,&account_2,&password_2);
if(identity==1&&strcmp(account_2,account_1)==0&&strcmp(password_2,password_1)==0)
{
judge=1;
break;
}else if(identity==2&&strcmp(account_2,account_1)==0&&strcmp(password_2,password_1)==0)
{
judge=2;
break;
}
}
fclose(fp);
printf("%d",judge);
if(judge==0)
{
if(j==0)
{
printf("次数用尽\n");
return 0;
}
system("cls");
printf("账号或密码错误!请重新输入!(你还有%d次机会)\n",j--);
goto a;
}else if(judge==1)
{
printf("登录成功!\n");
system("cls");
printf("你好,管理员\n");
master();
}else
{
printf("登录成功!\n");
system("cls");
printf("你好,用户!\n");
customer();
}
}
首界面
注册界面
登录界面
首先以单链表的形式读入所录入药品名称与价格,然后以追加方式打开medicine文件将链表内信息存入。
药品录入
do
{
scanf("%s %lf",name,&price);
s=(Node*)malloc(sizeof(Node));
strcpy(s->name,name);
s->price=price;
r->next=s;
r=s;
printf("\n继续录入?(Y/N)\n");
choice=getch();
}while(choice=='Y'||choice=='y');
r->next=NULL;
}
文件保存
//文件保存
FILE *fp;
fp=fopen("medicine","a+");
if(fp==NULL)
{
printf("文件打开失败!\n");
return 0;
}
Node *p;
int i;
double l;
char a[20];
for(p=link->next;p;p=p->next)
{
fprintf(fp,"%s %.2lf\n",p->name,p->price);
}
fclose(fp);
将medicine文件中的药品信息读到链表中进行操作。用户可以选择默认的输出顺序,也可以选择则按照价格的高低顺序来输出。
默认顺序即按照录入顺序进行输出,输出时会加上序号。
按照价格高低输出用到单链表的排序。我选择冒泡排序。首先根据药品标记的序号得出要排序的药品数目n。然后以while循环n次,在while循环中,首先初始化指针指向第一个药品信息,然后遍历链表,如果发现此结点的药品价格比下一个结点的药品价格高,则交换药品信息。随后输出修改后的链表即可。
从文件堕入链表
//文件读取
int i=1;
FILE *fp;
fp=fopen("medicine","r");
if(fp==NULL)
{
printf("文件打开失败!\n");
return 0;
}
//读入到链表
Node *s,*r,*head;
r=(Node*)malloc(sizeof(Node));
r->next=NULL;
head=r;
while(!feof(fp))
{
s=(Node*)malloc(sizeof(Node));
fscanf(fp,"%s %lf",s->name,&s->price);
s->order=i++;
r->next=s;
r=s;
}
r->next=NULL;
fclose(fp);
排序部分
while(i-1!=0)
{
q=head->next;
while(q->next->next)
{
if(q->price>q->next->price)
{
s=q->next;
char a[20];
double m=s->price;
s->price=q->price;
q->price=m;
strcpy(a,s->name);
strcpy(s->name,q->name);
strcpy(q->name,a);
}
q=q->next;
}
i--;
}
输出部分
Node *p;
p=head->next;
while(p->next)
{
printf("%-3d %-20s %-10.2lf\n",p->order,p->name,p->price);
p=p->next;
}
查找界面在输入药品名称后,会在文件中寻找对应药品,如果找到则会输出并继续寻找,直到遍历结束。非法输入则显示药品不存在。
在文件中查找药品信息
while(!feof(fp))
{
fscanf(fp,"%s %lf",a,&j);
if(!strcmp(a,A))
{
if(t==0)
{
printf("为你找到以下信息:\n");
}
printf("%-20s %-10.2lf\n",a,j);
t=1;
}
}
fclose(fp);
将文件中的信息存到链表中。用户可以选择修改或删除。用户输入要修改的药品后,遍历链表找到对应信息,然后对链表进行基本的修改和删除。随后再保存回文件中。
修改信息
do
{
t=0;
printf("请输入修改药品名称:\n");
scanf("%s",a);
Node *p=head;
while(p->next)
{
if(!strcmp(a,p->name))
{
printf("你要修改的信息为:\n");
printf("%-20s %-10.2lf\n",a,j);
printf("请重新输入药品信息:\n");
scanf("%s %.2lf",a,&j);
p->order=i;
strcpy(p->name,a);
p->price=j;
t=1;
}
p=p->next;
}
if(t==0)
{
printf("所修改的药品信息不存在!\n");
}
printf("继续修改?(Y/N)");
choice=getch();
}while(choice=='Y'||choice=='y');
删除信息
while(p->next)
{
if(!strcmp(a,p->next->name))
{
printf("你要删除的信息为:\n");
printf("%-20s %-10.2lf\n",p->next->name,p->next->price);
printf("请确认是否删除(Y/N)");
char choice=getch();
Node *q=p->next;
if(choice=='Y'||choice=='y')
{
p->next=q->next;
free(q);
}else
{
goto d;
}
t=1;
break;
}
p=p->next;
}
if(t==0)
{
printf("输入有误\n");
}
d: printf("继续修改?(Y/N)");
choice=getch();
}while(choice=='Y'||choice=='y');
修改信息
删除信息
用户在选择购买药品时,会显示出从低到高的所有药品信息和序号。用户选择购买的药品编码和数目后会打印出对应账单。
选购阶段
printf("请输入想要购买的药品编号:\n");
scanf("%d",&x);
printf("请输入想要购买的药品数目:\n");
scanf("%d",&number[i]);
Node *p=head->next;
while(p->next)
{
if(x==p->order)
{
break;
}
p=p->next;
}
strcpy(bill[i],p->name);
count+=number[i]*p->price;
i++;
printf("是否要继续购买(Y/N)\n");
w=getch();
}while(w=='Y'||w=='y');
账单打印
printf("你的账单:\n");
printf("--------------------------------\n");
printf("药品:\n");
for(j=0;j
四、特点
1.运用#include
2.非法输入会显示错误、药品不存在等。
3.密码隐式输出,且次数上限。
4.对于药品名称重复,再查找和修改时,都会显示出来。
//项目一:
#include
#include
#include
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {//登录面板
int n;
printf("\n\n\n");
printf("-----------------------------------------\n");
printf("|\t 欢迎使用药店管理系统\t\t|\n");
printf("|\t\t1- 注册 \t\t|\n");
printf("|\t\t2- 登录 \t\t|\n");
printf("|\t\t0- 结束 \t\t|\n");
printf("-----------------------------------------\n");
a:printf("请输入对应数字进行操作:");
scanf("%d",&n);
if(n==1)
{
system("cls");
register_();
}else if(n==2)
{
system("cls");
login();
}else if(n==0)
{
return 0;
}else
{
printf("输入错误,请重新输入!\n");
goto a;
}
return 0;
}
//项目二:
#include
#include
int register_()
{
a:printf("请确认你要注册的身份:\n");
printf("1-管理员\t\t2-用户\n");
int identity,i;
char account[20]={0},password_1[10]={0},password_2[10]={0};
scanf("%d",&identity);
if(identity==1||identity==2)
{
printf("请输入账号:\n");
scanf("%s",account);
b:printf("请输入密码(8位):\n");
for(i=0;i<8;i++)
{
password_1[i]=getch();
printf("*");
}
printf("请再次确认密码:\n");
for(i=0;i<8;i++)
{
password_2[i]=getch();
printf("*");
}
printf("%s\n%s",password_1,password_2);
if(strcmp(password_1,password_2)==0)
{
printf("注册成功!\n");
}else
{
printf("密码输入不一致!\n");
goto b;
}
}else
{
printf("输入错误,请重新输入!\n");
goto a;
}
FILE *fp;
fp=fopen("D:/c/Dev-Cpp/id.txt","a+");
if(fp==NULL)
{
printf("文件打开失败!\n");
return 0;
}
fprintf(fp,"%d %s %s\n",identity,&account,&password_1);
fclose(fp);
printf("按任意键返回!\n");
getch();
system("cls");
main();
}
//项目三:
#include
#include
#include
int login()
{
int identity=0,j=3;
char account_1[20]={0},account_2[20]={0},password_1[10]={0},password_2[10]={0};
a:printf("请输入账号:\n");
scanf("%s",account_1);
printf("请输入密码(8位):\n");
int judge=0,i;
for(i=0;i<8;i++)
{
password_1[i]=getch();
printf("*");
}
FILE *fp;
fp=fopen("D:/c/Dev-Cpp/id.txt","a+");
if(fp==NULL)
{
printf("账号不存在,请注册账号!\n");
system("cls");
main();
}
while(!feof(fp))
{
fscanf(fp,"%d %s %s\n",&identity,&account_2,&password_2);
if(identity==1&&strcmp(account_2,account_1)==0&&strcmp(password_2,password_1)==0)
{
judge=1;
break;
}else if(identity==2&&strcmp(account_2,account_1)==0&&strcmp(password_2,password_1)==0)
{
judge=2;
break;
}
}
fclose(fp);
printf("%d",judge);
if(judge==0)
{
if(j==0)
{
printf("次数用尽\n");
return 0;
}
system("cls");
printf("账号或密码错误!请重新输入!(你还有%d次机会)\n",j--);
goto a;
}else if(judge==1)
{
printf("登录成功!\n");
system("cls");
printf("你好,管理员\n");
master();
}else
{
printf("登录成功!\n");
system("cls");
printf("你好,用户!\n");
customer();
}
}
//项目四:
#include //管理端
#include
int master()
{
printf("=========================================\n");
printf("|管理端: \t\t\t\t|\n");
printf("|1-显示所有药品\t\t\t\t|\n");
printf("|2-录入药品信息\t\t\t\t|\n");
printf("|3-查询药品信息\t\t\t\t|\n");
printf("|4-修改药品信息\t\t\t\t|\n");
printf("|5-返回登录页面\t\t\t\t|\n");
printf("|0-退出程序 \t\t\t\t|\n");
printf("=========================================\n");
a:printf("请选择功能0-5:\n");
int n;
while(1)
{
scanf("%d",&n);
switch(n)
{
case 1:
system("cls");
output_1();
break;
case 2:
system("cls");
create();
break;
case 3:
system("cls");
search_1();
break;
case 4:
system("cls");
revamp();
break;
case 5:
system("cls");
main();
break;
case 0:
return 0;
default:
printf("输入错误,请重新输入!\n");
goto a;
}
}
}
//项目五:
#include //用户端
#include
int customer()
{
printf("=========================================\n");
printf("|用户端: \t\t\t\t|\n");
printf("|1-显示所有药品\t\t\t\t|\n");
printf("|2-查询药品信息\t\t\t\t|\n");
printf("|3-购买药品 \t\t\t\t|\n");
printf("|4-返回登录页面\t\t\t\t|\n");
printf("|0-退出程序 \t\t\t\t|\n");
printf("=========================================\n");
a:printf("请选择功能0-4:\n");
int n;
scanf("%d",&n);
switch(n)
{
case 1:
system("cls");
output_2();
break;
case 2:
system("cls");
search_2();
break;
case 3:
system("cls");
purchase();
break;
case 4:
system("cls");
main();
break;
case 0:
return 0;
default:
printf("输入错误,请重新输入!\n");
goto a;
}
}
//项目六:
#include //录入药品信息
#include
#include
#include
typedef struct node
{
int order;
char name[20];
double price;
struct node *next;
}Node;
void list(Node *head)//单链表录入药品信息
{
Node *r,*s;
r=head;
char choice;
char name[20];
int order;
double price;
do
{
scanf("%s %lf",name,&price);
s=(Node*)malloc(sizeof(Node));
strcpy(s->name,name);
s->price=price;
r->next=s;
r=s;
printf("\n继续录入?(Y/N)\n");
choice=getch();
}while(choice=='Y'||choice=='y');
r->next=NULL;
}
int create()
{
printf("药名:价格:\n");
Node *link;
link=(Node*)malloc(sizeof(Node));
link->next=NULL;
list(link);
//文件保存
FILE *fp;
fp=fopen("medicine","a+");
if(fp==NULL)
{
printf("文件打开失败!\n");
return 0;
}
Node *p;
int i;
double l;
char a[20];
for(p=link->next;p;p=p->next)
{
fprintf(fp,"%s %.2lf\n",p->name,p->price);
}
fclose(fp);
printf("文件保存完毕,按任意键返回!\n");
getch();
system("cls");
master();
}
//项目七:
#include
#include
#include
typedef struct node
{
int order;
char name[20];
double price;
struct node *next;
}Node;
int output_1()
{
//文件读取
int i=1;
FILE *fp;
fp=fopen("medicine","r");
if(fp==NULL)
{
printf("文件打开失败!\n");
return 0;
}
//读入到链表
Node *s,*r,*head;
r=(Node*)malloc(sizeof(Node));
r->next=NULL;
head=r;
while(!feof(fp))
{
s=(Node*)malloc(sizeof(Node));
fscanf(fp,"%s %lf",s->name,&s->price);
s->order=i++;
r->next=s;
r=s;
}
r->next=NULL;
fclose(fp);
printf("请选择输出格式:(1-默认顺序/2-价格顺序)\n");
//输出链表
int z;
scanf("%d",&z);
if(z==1)
{
Node *p;
p=head->next;
while(p->next)
{
printf("%-3d %-20s %-10.2lf\n",p->order,p->name,p->price);
p=p->next;
}
}else if(z==2)
{
Node *q,*s;
while(i-1!=0)
{
q=head->next;
while(q->next->next)
{
if(q->price>q->next->price)
{
s=q->next;
char a[20];
double m=s->price;
s->price=q->price;
q->price=m;
strcpy(a,s->name);
strcpy(s->name,q->name);
strcpy(q->name,a);
}
q=q->next;
}
i--;
}
q=head->next;
while(q->next)
{
printf("%-3d %-20s %-10.2lf\n",q->order,q->name,q->price);
q=q->next;
}
}else
{
printf("输入有误,请重新输入\n");
}
printf("按任意键返回!\n");
getch();
system("cls");
master();
}
//项目八:
#include
#include
#include
typedef struct node
{
int order;
char name[20];
double price;
struct node *next;
}Node;
int output_2()
{
//文件读取
int i=1;
FILE *fp;
fp=fopen("medicine","r");
if(fp==NULL)
{
printf("文件打开失败!\n");
return 0;
}
//读入到链表
Node *s,*r,*head;
r=(Node*)malloc(sizeof(Node));
r->next=NULL;
head=r;
while(!feof(fp))
{
s=(Node*)malloc(sizeof(Node));
fscanf(fp,"%s %lf",s->name,&s->price);
s->order=i++;
r->next=s;
r=s;
}
r->next=NULL;
fclose(fp);
printf("请选择输出格式:(1-默认顺序/2-价格顺序)\n");
//输出链表
int z;
scanf("%d",&z);
if(z==1)
{
Node *p;
p=head->next;
while(p->next)
{
printf("%-3d %-20s %-10.2lf\n",p->order,p->name,p->price);
p=p->next;
}
}else if(z==2)
{
Node *q,*s;
while(i-1!=0)
{
q=head->next;
while(q->next->next)
{
if(q->price>q->next->price)
{
s=q->next;
char a[20];
double m=s->price;
s->price=q->price;
q->price=m;
strcpy(a,s->name);
strcpy(s->name,q->name);
strcpy(q->name,a);
}
q=q->next;
}
i--;
}
q=head->next;
while(q->next)
{
printf("%-3d %-20s %-10.2lf\n",q->order,q->name,q->price);
q=q->next;
}
}else
{
printf("输入有误,请重新输入\n");
}
printf("按任意键返回!\n");
getch();
system("cls");
customer();
}
//项目九:
#include
#include
#include
void search_1()
{
char A[20]={0},choice;
int I=-1,i;
double J=-1,j;
char a[20];
int x;
int t=0;
FILE *fp;
do
{
t=0;
printf("请输入药品名称:\n");
scanf("%s",A);
fp=fopen("medicine","r");
while(!feof(fp))
{
fscanf(fp,"%s %lf",a,&j);
if(!strcmp(a,A))
{
printf("为你找到以下信息:\n");
printf("%-20s %-10.2lf\n",a,j);
t=1;
break;
}
}
fclose(fp);
if(t==0)
{
printf("输入药品不存在!\n");
}
printf("继续查询?(Y/N)\n");
choice=getch();
}while(choice=='Y'||choice=='y');
printf("按任意键返回!\n");
getch();
system("cls");
master();
}
//项目十:
#include
#include
#include
void search_2()
{
char A[20]={0},choice;
int I=-1,i;
double J=-1,j;
char a[20];
int x;
int t=0;
FILE *fp;
do
{
t=0;
printf("请输入药品名称:\n");
scanf("%s",A);
fp=fopen("medicine","r");
while(!feof(fp))
{
fscanf(fp,"%d %s %lf",&i,a,&j);
if(!strcmp(a,A))
{
printf("为你找到以下信息:\n");
printf("%-3d %-20s %-10.2lf\n",i,a,j);
t=1;
break;
}
}
fclose(fp);
if(t==0)
{
printf("输入药品不存在!\n");
}
printf("继续查询?(Y/N)\n");
choice=getch();
}while(choice=='Y'||choice=='y');
printf("按任意键返回!\n");
getch();
system("cls");
customer();
}
//项目十一:
#include
#include
#include
#include
typedef struct node
{
int order;
char name[20];
double price;
struct node *next;
}Node;
int revamp()
{
int x,t;
int I=-1,i;
double J=-1,j;
char A[20]={0};
char a[20];
char choice;
FILE *fp;
//文件读取
fp=fopen("medicine","r");
if(fp==NULL)
{
printf("文件打开失败!");
return 0;
}
Node *s,*r,*head;
r=(Node*)malloc(sizeof(Node));
r->next=NULL;
head=r;
while(!feof(fp))
{
s=(Node*)malloc(sizeof(Node));
fscanf(fp,"%s %lf",s->name,&s->price);
r->next=s;
r=s;
}
r->next=NULL;
fclose(fp);
//操作信息
b:printf("请选择操作方法(1-修改信息/2-删除信息):\n");
scanf("%d",&x);
if(x==1)
{
//修改操作
a:do
{
t=0;
printf("请输入修改药品名称:\n");
scanf("%s",a);
Node *p=head;
while(p->next)
{
if(!strcmp(a,p->name))
{
printf("你要修改的信息为:\n");
printf("%-20s %-10.2lf\n",a,j);
printf("请重新输入药品信息:\n");
scanf("%s %.2lf",a,&j);
p->order=i;
strcpy(p->name,a);
p->price=j;
t=1;
break;
}
p=p->next;
}
if(t==0)
{
printf("所修改的药品信息不存在!\n");
}
printf("继续修改?(Y/N)");
choice=getch();
}while(choice=='Y'||choice=='y');
//删除操作
}else if(x==2)
{
do
{
t=0;
printf("请输入删除药品名称:\n");
scanf("%s",a);
Node *p=head;
while(p->next)
{
if(!strcmp(a,p->next->name))
{
printf("你要删除的信息为:\n");
printf("%-20s %-10.2lf\n",p->next->name,p->next->price);
printf("请确认是否删除(Y/N)");
char choice=getch();
Node *q=p->next;
if(choice=='Y'||choice=='y')
{
p->next=q->next;
free(q);
}else
{
goto d;
}
t=1;
break;
}
p=p->next;
}
if(t==0)
{
printf("输入有误\n");
}
d:printf("继续修改?(Y/N)");
choice=getch();
}while(choice=='Y'||choice=='y');
}else
{
printf("输入有误,请重新输入\n");
goto b;
}
//文件保存
FILE *fq;
fq=fopen("medicine","w");
if(fp==NULL)
{
printf("文件打开失败!\n");
return 0;
}
Node *q;
for(q=head->next;q->next;q=q->next)
{
fprintf(fq,"%s %.2lf\n",q->name,q->price);
}
fclose(fq);
printf("修改完成!\n");
printf("按任意键返回!\n");
getch();
system("cls");
master();
}
//项目十二:
#include
#include
#include
#include
typedef struct node
{
int order;
char name[20];
double price;
struct node *next;
}Node;
int purchase()
{
//从文件转到链表中
FILE *fp;
int z=0;
fp=fopen("medicine","r");
if(fp==NULL)
{
printf("文件打开失败!\n");
return 0;
}
Node *s,*r,*head;
r=(Node*)malloc(sizeof(Node));
r->next=NULL;
head=r;
while(!feof(fp))
{
s=(Node*)malloc(sizeof(Node));
fscanf(fp,"%s %lf",s->name,&s->price);
s->order=z++;
r->next=s;
r=s;
}
r->next=NULL;
fclose(fp);
//显示所有药品
Node *p,*t;
while(z-1!=0)
{
p=head->next;
while(p->next->next)
{
if(p->price>p->next->price)
{
t=p->next;
char a[20];
double m=t->price;
t->price=p->price;
p->price=m;
strcpy(a,t->name);
strcpy(t->name,p->name);
strcpy(p->name,a);
}
p=p->next;
}
z--;
}
p=head->next;
while(p->next)
{
printf("%-3d %-20s %-10.2lf\n",p->order,p->name,p->price);
p=p->next;
}
//购买药品
int x,i=0,j;
double count=0;
char bill[200][200],number[200];
char w;
printf("--------------------------------\n");
do
{
printf("请输入想要购买的药品编号:\n");
scanf("%d",&x);
printf("请输入想要购买的药品数目:\n");
scanf("%d",&number[i]);
Node *p=head->next;
while(p->next)
{
if(x==p->order)
{
break;
}
p=p->next;
}
strcpy(bill[i],p->name);
count+=number[i]*p->price;
i++;
printf("是否要继续购买(Y/N)\n");
w=getch();
}while(w=='Y'||w=='y');
printf("你的账单:\n");
printf("--------------------------------\n");
printf("药品:\n");
for(j=0;j