求助,排序功能运行不对,还有怎么才能查找出相同的价格和库存的药品,求大神

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 100


struct medicine 
{
    char client_bnum[12];
char client_name[12];
char client_price[8];
char client_inventory[20];
char client_function[100];
}message[N];


void welcome();
void add();    //添加药品信息
void delete_client();//删除药品信息
void amend();    //修改药品信息
void search();  //查询药品信息
void traverse();  //浏览药品函数
void paixu();
void paixu1();
void paixu2();
void bnum();   //查询药品编号
void name();   //查询药品名称
void price();   //查询药品价格
void inventory();   //查询药品库存
void function();   //查询药品功效
void save_medicine(struct medicine information);//保存函数
int num;
int main()
{
system("color f4");
    
welcome();


char choice[10]="";


while(choice[0]!='7')
{
system("cls");
printf("\t\t\t*****************************\n\n");
printf("\t\t\t   欢迎使用药品信息管理系统!\n\n");
printf("\t\t\t*****************************\n\n");
printf("\t\t\t     1.输入药品信息\n");
printf("\t\t\t     2.修改药品信息\n");
printf("\t\t\t     3.查找药品信息\n");
printf("\t\t\t     4.浏览药品信息\n");
printf("\t\t\t     5.删除药品信息\n");
printf("\t\t\t     6.排序药品信息\n");
printf("\t\t\t     7.退出系统\n");
printf("请选择您的操作~~\n");
scanf("%s",choice);


if(choice[0]>'7')
{
printf("\n请输入1-7之间的整数\n");
printf("\n按任意键返回主菜单\n");
getchar();
            getchar();
continue;
}




switch(choice[0])
{
case '1':add();
break;
case '2':amend();
break;
case '3':search();
break;
case '4':traverse();
break;
case '5':delete_client();
break;
case '6':paixu();
break;
default:
break;
}
}
return 0;
}


void add()    //添加药品信息
{
struct medicine information;
    char reply='y';
    char save='y';
while (reply=='y')
{
system("cls");
printf("请输入药品的编号:");
scanf("%s",information.client_bnum);
printf("请输入药品的名称:");
scanf("%s",information.client_name);
printf("请输入药品的价格:");
scanf("%s",information.client_price);
printf("请输入药品的库存:");
scanf("%s",information.client_inventory);
printf("请输入药品的功效:");
scanf("%s",information.client_function);
printf("\n要保存吗?(y/n):");
scanf(" %c",&save);
if(save=='y')
{
save_medicine(information);
}






printf("\n要继续吗?(y/n): ");
scanf(" %c",&reply);
}

printf("\n按任意键返回.......\n");
getchar();
getchar();  




}


void amend() //修改药品信息
{
    struct medicine information;
FILE *fp;
char amend_name[20];
char reply='y';
    char found='y';
char save='y';
int size=sizeof(struct medicine);
while (reply=='y')
{
found='n';
fp=fopen("information.dat","r+w");
if (fp!=NULL)
        {
system("cls");
printf("\n请输入药品的名称: ");
scanf("%s",amend_name);
while((fread(&information,size,1,fp))==1)
{
if((strcmp(amend_name,information.client_name))==0)
{
found='y';
break;
}
}
if (found=='y')
{
printf("\n==========================================\n");
printf("\n药品编号:%s\n",information.client_bnum);
                printf("\n药品名称:%s\n",information.client_name);
printf("\n药品库存:%s\n",information.client_inventory);
                printf("\n药品功效:%s\n",information.client_function);
printf("\n药品价格:%s\n",information.client_price);
                printf("\n==========================================\n");
printf("\n修改药品信息:\n");
                printf("请输入药品的编号:");
       scanf("%s",information.client_bnum);
       printf("请输入药品的名称:");
       scanf("%s",information.client_name);
       printf("请输入药品的价格:");
       scanf("%s",information.client_price);
       printf("请输入药品的库存:");
          scanf("%s",information.client_inventory);
       printf("请输入药品的功效:");
       scanf("%s",information.client_function);
printf("\n要保存吗?(y/n):");
       scanf(" %c",&save);
if(save=='y')
{
          fseek(fp,-size,1);
fwrite(&information,sizeof(struct medicine),1,fp);
}
}
else
{
printf("\n无此人信息\n");
}
}
else
{
printf("\n打开文件时输入错误,按任意键返回......\n");
getchar();
return;
}
fclose(fp);
printf("\n要继续吗?(y/n):");
scanf(" %c",&reply);
}
printf("\n按任意键返回主菜单......\n");
getchar();
getchar();
}
void search() //查询药品信息
{
int choice=1;
    while (choice!=6)
    {
       system("cls");
       printf("\n 1.按药品编号查询\n");
       printf("\n 2.按药品名称查询\n");
       printf("\n 3.按药品价格查询\n");
       printf("\n 4.按药品库存查询\n");
       printf("\n 5.按药品功效查询\n");
       printf("\n 6.返回主菜单\n");
       printf("\n请选择(1-6):");
       scanf("%d%*c",&choice);
       if (choice>6)
       {
       printf("\n请输入1-6之间的整数\n");
       printf("\n按任意键返回菜单......\n");
       getchar();
       continue;
       }
       if (choice==1)
       {
           bnum();
       }
       else if (choice==2)
       {
           name();
       }
       else if (choice==3)
       {
           price();
       }
       else if (choice==4)
       {
           inventory();
       }
       else if (choice==5)
       {
           function();
       }


    }
}






void bnum()   //查询药品编号
{
    struct medicine information;
FILE *fp;
char amend_bnum[12];
    char reply='y';
char found='y';
while (reply=='y')
    {
found='n';
fp=fopen("information.dat","r+w");
if (fp!=NULL)
{
system("cls");
printf("\n请输入药品编号:");
scanf("%s",amend_bnum);
while ((fread(&information,sizeof(struct medicine),1,fp))==1)
{
if ((strcmp(amend_bnum,information.client_bnum))==0)
{
found='y';
break;
}
}
if (found=='y')
{
printf("\n==========================================\n");
printf("\n药品编号:%s\n",information.client_bnum);
                printf("\n药品名称:%s\n",information.client_name);
printf("\n药品价格:%s\n",information.client_price);
printf("\n药品库存:%s\n",information.client_inventory);
printf("\n药品功效:%s\n",information.client_function);
                printf("\n==========================================\n");
}
else
{
printf("\n无此药品信息!\n");
}
}
else
{
printf("\n打开文件时出现错误,按任意键返回......\n");
getchar();
return;
}
fclose(fp);
printf("\n要继续吗?(y/n):");
scanf(" %c",&reply);
}
printf("\n按任意键返回主菜单......\n");
getchar();
getchar();
}








void name()   //查询药品名称
{
    struct medicine information;
FILE *fp;
char amend_name[12];
    char reply='y';
char found='y';
while (reply=='y')
    {
found='n';
fp=fopen("information.dat","r+w");
if (fp!=NULL)
{
system("cls");
printf("\n请输入药品名称:");
scanf("%s",amend_name);
while ((fread(&information,sizeof(struct medicine),1,fp))==1)
{
if ((strcmp(amend_name,information.client_name))==0)
{
found='y';
break;
}
}
if (found=='y')
{
printf("\n==========================================\n");
printf("\n药品编号:%s\n",information.client_bnum);
                printf("\n药品名称:%s\n",information.client_name);
printf("\n药品价格:%s\n",information.client_price);
printf("\n药品库存:%s\n",information.client_inventory);
printf("\n药品功效:%s\n",information.client_function);
                printf("\n==========================================\n");
}
else
{
printf("\n无此药品信息!\n");
}
}
else
{
printf("\n打开文件时出现错误,按任意键返回......\n");
getchar();
return;
}
fclose(fp);
printf("\n要继续吗?(y/n):");
scanf(" %c",&reply);
}
printf("\n按任意键返回主菜单......\n");
getchar();
getchar();
}






void price()   //查询药品价格
{
    struct medicine information;
FILE *fp;
char amend_price[8];
    char reply='y';
char found='y';
while (reply=='y')
    {
found='n';
fp=fopen("information.dat","r+w");
if (fp!=NULL)
{
system("cls");
printf("\n请输入药品价格:");
scanf("%s",amend_price);
while ((fread(&information,sizeof(struct medicine),1,fp))==1)
{
if ((strcmp(amend_price,information.client_price))==0)
{
found='y';
break;
}
}
if (found=='y')
{
printf("\n==========================================\n");
printf("\n药品编号:%s\n",information.client_bnum);
                printf("\n药品名称:%s\n",information.client_name);
printf("\n药品价格:%s\n",information.client_price);
printf("\n药品库存:%s\n",information.client_inventory);
printf("\n药品功效:%s\n",information.client_function);
                printf("\n==========================================\n");
}
else
{
printf("\n无此药品信息!\n");
}
}
else
{
printf("\n打开文件时出现错误,按任意键返回......\n");
getchar();
return;
}
fclose(fp);
printf("\n要继续吗?(y/n):");
scanf(" %c",&reply);
}
printf("\n按任意键返回主菜单......\n");
getchar();
getchar();
}






void inventory()   //查询药品库存
{
    struct medicine information;
FILE *fp;
char amend_inventory[20];
    char reply='y';
char found='y';
while (reply=='y')
    {
found='n';
fp=fopen("information.dat","r+w");
if (fp!=NULL)
{
system("cls");
printf("\n请输入药品库存:");
scanf("%s",amend_inventory);
while ((fread(&information,sizeof(struct medicine),1,fp))==1)
{
if ((strcmp(amend_inventory,information.client_inventory))==0)
{
found='y';
break;
}
}
if (found=='y')
{
printf("\n==========================================\n");
printf("\n药品编号:%s\n",information.client_bnum);
                printf("\n药品名称:%s\n",information.client_name);
printf("\n药品价格:%s\n",information.client_price);
printf("\n药品库存:%s\n",information.client_inventory);
printf("\n药品功效:%s\n",information.client_function);
                printf("\n==========================================\n");
}
else
{
printf("\n无此药品信息!\n");
}
}
else
{
printf("\n打开文件时出现错误,按任意键返回......\n");
getchar();
return;
}
fclose(fp);
printf("\n要继续吗?(y/n):");
scanf(" %c",&reply);
}
printf("\n按任意键返回主菜单......\n");
getchar();
getchar();
}






void function()   //查询药品功效
{
    struct medicine information;
FILE *fp;
char amend_function[100];
    char reply='y';
char found='y';
while (reply=='y')
    {
found='n';
fp=fopen("information.dat","r+w");
if (fp!=NULL)
{
system("cls");
printf("\n请输入药品功效:");
scanf("%s",amend_function);
while ((fread(&information,sizeof(struct medicine),1,fp))==1)
{
if ((strcmp(amend_function,information.client_function))==0)
{
found='y';
break;
}
}
if (found=='y')
{
printf("\n==========================================\n");
printf("\n药品编号:%s\n",information.client_bnum);
                printf("\n药品名称:%s\n",information.client_name);
printf("\n药品价格:%s\n",information.client_price);
printf("\n药品库存:%s\n",information.client_inventory);
printf("\n药品功效:%s\n",information.client_function);
                printf("\n==========================================\n");
}
else
{
printf("\n无此药品信息!\n");
}
}
else
{
printf("\n打开文件时出现错误,按任意键返回......\n");
getchar();
return;
}
fclose(fp);
printf("\n要继续吗?(y/n):");
scanf(" %c",&reply);
}
printf("\n按任意键返回主菜单......\n");
getchar();
getchar();
}


void delete_client()//删除药品信息
{
struct medicine message[N];
struct medicine temp_str;
struct medicine delete_str;
int i=0,j=0;
char reply='y';
char found='y';
char confirm='y';
char delete_name[12];
FILE *fp;
while (reply=='y')
{
system("cls");
fp=fopen("information.dat","r");
if (fp!=NULL)
{
i=0;
found='n';
printf("\n请输入药品的名字:");
scanf("%s",delete_name);
while ((fread(&temp_str,sizeof(struct medicine),1,fp))==1)
{
if ((strcmp(delete_name,temp_str.client_name))==0)
{
found='y';
delete_str=temp_str;
}
else
{
message[i]=temp_str;
i++;
}
}
}
else
{
printf("\n打开文件时出现错误,按任意键返回......\n");
getchar();
return;
}
fclose(fp);
if (found=='y')
{
printf("\n===============================\n");
printf("\n药品的编号:%s\n",delete_str.client_bnum);
printf("\n药品的名称:%s\n",delete_str.client_name);
printf("\n药品的价格:%s\n",delete_str.client_price);
printf("\n药品的库存:%s\n",delete_str.client_inventory);
printf("\n药品的功效:%s\n",delete_str.client_function);
printf("\n===============================\n");
}
else
{
printf("\n无此人信息,按任意键返回......\n");
getchar();
break;
}
printf("\n确认删除吗?(y/n):");
scanf(" %c",&confirm);
if (confirm=='y')
{
fp=fopen("information.dat","w");
if (fp!=NULL)
{
for(j=0;j<i;j++)
{
fwrite(&message[j],sizeof(struct medicine),1,fp);
}
printf("\n记录已删除!!!\n");
}
else
{
printf("\n打开文件时出现错误,按任意键返回............\n");
getchar();
return;
}
fclose(fp);
}
printf("\n要继续吗?(y/n):");
scanf(" %c",&reply);
}
printf("\n按任意键返回主菜单......\n");
getchar();
getchar();

}
void traverse()  //浏览药品函数
{
struct medicine information;
FILE *fp;
fp=fopen("information.dat","r");
if (fp!=NULL)
        {
system("cls");
printf("\n编号\t\t名称\t\t价格\t\t库存\t\t功效\n");
while((fread(&information,sizeof(struct medicine),1,fp))==1)
{
printf("\n%-15s",information.client_bnum);
printf("%-18s",information.client_name);
printf("%-15s",information.client_price);
printf("%-15s",information.client_inventory);
printf("%-0s\n",information.client_function);
}
}
else
{
printf("\n打开文件时输入错误,按任意键返回......\n");
getchar();
return;
}
fclose(fp);
     printf("\n按任意键返回主菜单......\n");
getchar();
getchar();



void save_medicine(struct medicine information)//保存函数
{
FILE*fp;
fp=fopen("information.dat","a+");
if(fp!=NULL)
{
fwrite(&information,sizeof(struct medicine),1,fp);
}
else
{
printf("\n打开文件时出现错误,按任意键返回......\n");
getchar();
return;
}
fclose(fp);
}
void welcome()
{
    int i;
    for(i=1 ; i<=100 ; i++)
    {
        printf("*******************欢迎使用药品管理系统***********************");
        printf("\n\n\n\n\n\n\n");
        printf("                                                 加载中");
        printf("...\n");
        printf("                                                      %3d%%\n",i);
        printf("**********************************************************");
        system("cls");
    }
}
void paixu()
{
int g;
printf("请选择排序方式,1升序排序 2降序排序");
scanf("%d",&g);
if(g==1) 
{
paixu1();
}
else 
{
if(g==2)
{
paixu2();
}
}
}
void paixu1()
{
FILE *fp;
    struct medicine information,temp[N],a;
int i,j,k;
fp=fopen("information.dat","r");
for (i=0;(fread(&information,sizeof(struct medicine),1,fp))==1;i++)
{
temp[i]=information;
}
for (k=0;k<i-1;k++)
{
for (j=k+1;j<i;j++)
{
if (temp[k].client_price>temp[j].client_price)
{
a=temp[k];
temp[k]=temp[j];
temp[j]=a;
}
}
}
fclose(fp);
fp=fopen("information.dat","w");
if(fp!=NULL)
{
for (j=0;j<i;j++)
{
fwrite(&temp[j],sizeof(struct medicine),1,fp);
}
}
fclose(fp);
getchar();
}
void paixu2()
{
FILE *fp;
    struct medicine information,temp[N],a;
int i,j,k;
fp=fopen("information.dat","r");
for (i=0;(fread(&information,sizeof(struct medicine),1,fp))==1;i++)
{
temp[i]=information;
}
for (k=0;k<i-1;k++)
{
for (j=k+1;j<i;j++)
{
if (temp[k].client_price<temp[j].client_price)
{
a=temp[k];
temp[k]=temp[j];
temp[j]=a;
}
}
}
fclose(fp);
fp=fopen("information.dat","w");
if (fp!=NULL)
{
for (j=0;j<i;j++)
{
fwrite(&temp[j],sizeof(struct medicine),1,fp);
}
}
fclose(fp);
getchar();
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值