waxpy0918 发表于 2021-1-4 19:31:18

c语言

Assertion failed!

Program: C:\Users\waxpy\Documents\.exe
File: C:\Users\waxpy\Documents\商品订购系统设计.c, Line 488

Expression: fp
运行出现这个是啥意思?

昨非 发表于 2021-1-4 19:35:15

你好歹把代码发出来啊

waxpy0918 发表于 2021-1-4 19:41:37

昨非 发表于 2021-1-4 19:35
你好歹把代码发出来啊

#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <assert.h>
#include <stdlib.h>

int bgnumber = 023;      //客户号
int inumber = 0;                //商品量的统计
int ibuy = 0;                   //订单的统计

void secondmain();   //管理维护子菜单
void jianpanload();      //输入商品
void scanproduct();   //浏览商品
void searchproduct();//搜索商品
void dinggou();         //订购商品
void lookdinggou();   //查询订单
void addproduct();    //增加商品
void deleteproduct(); //删除商品
void saveproduct();   //保存商品
void savedinggou();    //保存订单
void wenbenload();   //从文本导入商品

struct product {char name;//商品名
int number;   //货号
char vender; //厂家
char filed; //产地
int stock;   //存量
double unvalent}; //单价 ;

struct product a;
struct dinggou   {int bgname;          //货号
int bmany;    //订购量
int btime;    //日期时间
char bname;//客户名
char baddress;//客户地址
int bnumber};   //客户号;

struct dinggou b;
int main(void) {
int i;
wenbenload();
do
{   system("cls");
printf("\n\n\n\n\n\n");
printf("**************************欢迎使用商品订购系统v1.0******************************\n");
printf("                        作者:                           \n");
printf("                ┏━━━━━━━━━━━━━━━━━━━━━━┓   \n");
printf("                ┃             1.浏览商品信息      ┃   \n");
printf("                ┃             2.订购商品               ┃   \n");
printf("                ┃             3.订单查询               ┃   \n");
printf("                ┃             4.搜索商品               ┃   \n");
printf("                ┃             5.管理菜单               ┃   \n");
printf("                ┃             0.退出系统               ┃   \n");
printf("                ┗━━━━━━━━━━━━━━━━━━━━━━┛   \n");
printf("********************************************************************************\n");
printf("\n\n\t\t请输入你的操作(0~5): ");
scanf("%d",&i);                     
switch(i)   {   
case 1: system("cls");    scanproduct();       break;
case 2: system("cls");       dinggou();       break;
case 3: system("cls");    lookdinggou();    break;
case 4: searchproduct();    break;
case 5: secondmain();    break;
case 0:                            //退出系统的界面   
system("cls");
printf("\n\n\n\n\n\n\n\n");      
printf("\n\n\t\t\t欢迎使用本系统\n\n\n\n\n\t\t\t欢迎再次使用\n");   
exit(0);                     //exit用于在程序运行的过程中随时结束程序            
}
}while(1);                              
return 0;
}
//浏览商品
void scanproduct()
{
int i;
system("cls");
printf("\t\t\t\t\t商品信息列表\n");
for (i = 0; i < inumber; i++)
{   
printf("名称 :%s\n",a.name);   
printf("货号 :%d\n",a.number);   
printf("厂家 :%s\n",a.vender);   
printf("产地 :%s\n",a.filed);   
printf("存量 :%d\n",a.stock);   
printf("单价 :%.2lf\n\n\n",a.unvalent);
}
printf("\n\n\n\n\n\n\t\t\t");
printf("返回主菜单\n");
printf("\t\t\t");
system("pause");
return;
}//商品的订购
void dinggou()   
{
char ch;
int i, j, t, c = 1;
int n = 1;
int m = 0;   
do
{   
switch(n)   
{   
case 1:    system("cls");   
printf("\t\t\t\t商品信息列表\n");    //显示商品的名称、货号信息,以便于订购   
printf("名称\t货号\t 库存\n");   
for (i = 0; i < inumber; i++)   
{   
printf("%s\t   %d\t%d\n\n\n",a.name,a.number,a.stock);      
}   
printf("\n\n\n");   
printf("\t\t\t\t商品订单\n");   
printf("\n\t\t\t请输入你的第%d个订单信息:\n",m + 1);   
printf("\n\t\t\t货号:");    fflush(stdin);   
scanf("%d",&b.bgname);    //检测是否含有此商品   
j = 1;   
for (i = 0; i < inumber; i++)   
{   
if(a.number == b.bgname)   
{      
   j = 0;      
   t = i;   
}   
}    //若有商品继续购买项目   
if(j == 0)
    {   printf("\n\t\t\t订购量:");
   fflush(stdin);
   scanf("%d",&b.bmany);
if (a.stock >= b.bmany)
   {      a.stock = a.stock - b.bmany;       //顾客购买后商品的库存计算
      printf("\n\t\t\t日期时间:");
      fflush(stdin);
       scanf("%d",&b.btime);
      printf("\n\t\t\t客户名:");
      fflush(stdin);
      gets(b.bname);
      printf("\n\t\t\t客户地址:");
      fflush(stdin);
       gets(b.baddress);
      printf("\n\t\t\t客户号:");
      b.bnumber = bgnumber;
      printf("%d\n",b.bnumber);
      bgnumber++;
   ibuy++;
      m++;
   printf("\n\n\n\t\t\t\t");
      system("pause");
   }
   else
    {      
   printf("\n\n\t\t\t订购数目超出库存\n");
      printf("\t\t\t");
      system("pause");
   }
   }    //若没有商品的提示及操作
    else
    {
   printf("\n\n\t\t\t查无此货\n");
      printf("\t\t\t");
   system("pause");
    }
         case 2:
   printf("是否继续输入订购?(Y/N)");
    fflush(stdin);
    scanf("%c",&ch);
if(ch == 'N' || ch == 'n')
    {
   c = 0;
    break;
    }
    else if(ch == 'Y' || ch == 'y')
    {
   c = 0;
   n = 1;
   break;
    }
    else if(ch != 'n' || ch != 'N' || ch != 'Y' || ch != 'y')
    {
   n = 0;
   c = 1;
   break;
    }
    case 0:
    if(c == 1)
    {
   n = 2;
   }
   }
   }while(ch != 'n' && ch != 'N');
system("cls");
   return ;
}//订单的查询
void lookdinggou()
   {
int i;
system("cls");
printf("\t\t\t\t\t订单列表\n");
   for (i = 0; i < ibuy; i++)
{
   printf("货号 :      %d\n",b.bgname);
   printf("订购量 :    %d\n",b.bmany);
   printf("日期时间 :%d\n",b.btime);
   printf("客户名 :    %s\n",b.bname);
   printf("客户地址 :%s\n",b.baddress);
   printf("客户号 :    %d\n\n\n",b.bnumber);
}
printf("\n\n\n\n\n\n\t\t\t");
printf("返回主菜单\n");
printf("\t\t\t");
system("pause");
return;
}//增加商品
void addproduct()
    {char ch;
   int i=1;
int n = 1;
    do
   {
   switch(n)
   {
   case 1:
    system("cls");
    printf("\t\t\t\t商品信息的增加\n");
    printf("\t\t\t\t\t注:要重新输入已有及增加的商品\n");
    printf("\n\t\t\t请输入你的第%d件商品的信息:\n",i);
    printf("\n\t\t\t名称:");
    fflush(stdin);
    scanf("%s",a.name);
    printf("\n\t\t\t货号:");
    fflush(stdin);
    scanf("%d",&a.number);
    printf("\n\t\t\t厂家:");
    fflush(stdin);
    scanf("%s",a.vender);
   printf("\n\t\t\t产地:");
    fflush(stdin);
    scanf("%s",a.filed);
    printf("\n\t\t\t存量:");
    fflush(stdin);
    scanf("%d",&a.stock);
    printf("\n\t\t\t单价:");
    fflush(stdin);
    scanf("%lf",&a.unvalent);
    i++;
    inumber++;
         case 2:
    printf("是否继续输入记录?(Y/N)");
    fflush(stdin);
    scanf("%c",&ch);
    if(ch == 'N' || ch ==' Y'|| ch == 'n'|| ch == 'y')
    {
   break;
    }
    if(ch ==' Y'|| ch == 'y')
    {
   n = 1;
   break;
    }
    case 0:
       printf("是否继续输入记录?(Y/N)");
    fflush(stdin);
    scanf("%c",&ch);
    n = 2;
    }
   }while(ch != 'n' && ch != 'N');
   return;
}//删除商品
void deleteproduct()
{
int i;
int j;
char ch;
int n = 1;
    do
{
    switch(n)
   {
   case 1:
    system("cls");
   printf("\t\t\t\t商品列表\n");    //显示商品的名称、货号信息,以便于下部的删除
   for (i = 0; i < inumber; i++)
    {
   printf("名称 :%s\n",a.name);
   printf("ID :%d\n",i);
   printf("库存 :%d\n\n\n",a.stock);
    }   //商品的搜索
    printf("\n\n\n\t\t\t\t请输入你要删除商品的ID:");
    scanf("%d",&j);
    i = j;
    while(i < inumber - 1)
    {
   strcpy(a.name, a.name);
                  a.number = a.number;
                        strcpy(a.filed, a.filed);
                        a.stock = a.stock;
                        a.unvalent = a.unvalent;
   strcpy(a.vender, a.vender);
   i++;
    }
    inumber--;
   case 2:
    printf("是否继续删除商品?(Y/N)");
    fflush(stdin);
    scanf("%c",&ch);
    if(ch == 'N' || ch ==' Y'|| ch == 'n'|| ch == 'y')
    {
   break;
    }
    if(ch ==' Y'|| ch == 'y')
    {
   n = 1;
   break;
    }
   case 0:
      printf("是否继续输入记录?(Y/N)");
    fflush(stdin);
    scanf("%c",&ch);
    n = 2;
    }
}while(ch != 'n' && ch != 'N');
    printf("\n\n\n\n\n\n\t\t\t");
printf("返回附加功能菜单\n");
printf("\t\t\t");
system("pause");
return;
}//商品信息的保存
void saveproduct()
{
FILE *fpgoods;
int i;
   fpgoods = fopen("goodsinfo.out","w");
assert(fpgoods != NULL);
       fprintf(fpgoods,"\t\t\t\t\t\t商品信息列表\n");//商品信息的录入
for (i = 0; i < inumber; i++)
{
   fprintf(fpgoods,"名称: %s\n",a.name);
   fprintf(fpgoods,"货号: %d\n",a.number);
   fprintf(fpgoods,"厂家: %s\n",a.vender);
   fprintf(fpgoods,"产地: %s\n",a.filed);
   fprintf(fpgoods,"存量: %d\n",a.stock);
   fprintf(fpgoods,"单价: %.2lf\n\n\n",a.unvalent);
}
   fclose(fpgoods);
    system("cls");
printf("\n\n\n\n\n\n\t\t\t\t商品信息保存成功!!!\n");
printf("\t\t\t\t");
system("pause");
    return;
}//订单的保存信息
void savedinggou()
{
FILE *fpgoods;
int i;
    fpgoods = fopen("bookrecordinfo.out","w");
assert(fpgoods != NULL);
   fprintf(fpgoods,"\t\t\t\t\t\t订单列表\n");
//商品信息的录入
for (i = 0; i < ibuy; i++)
{
   fprintf(fpgoods,"货号 :%d\n",b.bgname);
   fprintf(fpgoods,"订购量 :%d\n",b.bmany);
   fprintf(fpgoods,"日期时间 :%d\n",b.btime);
   fprintf(fpgoods,"客户名 :%s\n",b.bname);
   fprintf(fpgoods,"客户地址 :%s\n",b.baddress);
   fprintf(fpgoods,"客户号 :%d\n\n\n",b.bnumber);
}
   fclose(fpgoods);   //保存后信息的反馈
system("cls");
printf("\n\n\n\n\n\n\t\t\t\t信息保存成功!!!\n");
printf("\t\t\t\t");system("pause");
    return;
}    //管理维护子菜单
void secondmain()
{
int i;
      do
    {
   system("cls");
    printf("\n\n\n\n\n\n\n");
printf("******************************管理维护子菜单************************************\n\n");
printf("               ┏━━━━━━━━━━━━━━━━━━━┓\n");
printf("               ┃             1.输入全部商品         ┃\n");
printf("               ┃             2.增加商品               ┃\n");
printf("               ┃             3.删除商品               ┃\n");
printf("               ┃             4.储存商品               ┃\n");
printf("               ┃             5.储存订单               ┃\n");
printf("               ┃             0.返回上一级             ┃\n");
printf("               ┗━━━━━━━━━━━━━━━━━━━┛\n\n\n");
printf("********************************************************************************\n\n\n\n\n");
      printf("\n\n\t\t请输入你所要选择的功能(0~5): ");
   scanf("%d",&i);
                              switch(i)
    {
   case 1:
                              system("cls");
      jianpanload ();
      break;
   case 2:
            system("cls");
         addproduct();
         break;
   case 3:
            system("cls");
         deleteproduct();
         break;
         case 4:
            system("cls");
         saveproduct();
         break;
       case 5:
            system("cls");
         savedinggou();
         break;
      case 0:
                                  system("cls");
      return ;
                                  }
   }while(1);
    printf("\t\t\t\t");
   system("pause");
   system("cls");
    return;
}//从键盘输入商品
void jianpanload()
{
char ch;
int n = 1;
inumber = 0;
    do
   {
   switch(n)
   {
   case 1:
       //商品的录入
    system("cls");
    printf("\t\t\t\t请重新输入全部商品信息\n");
    printf("\n\t\t\t请输入第%d件商品的信息:\n",inumber + 1);
    printf("\n\t\t\t名称:");
    fflush(stdin);
    gets(a.name);
    printf("\n\t\t\t货号:");
    fflush(stdin);
    scanf("%d",&a.number);
    printf("\n\t\t\t厂家:");
    fflush(stdin);
    gets(a.vender);
    printf("\n\t\t\t产地:");
    fflush(stdin);
    gets(a.filed);
    printf("\n\t\t\t存量:");
    fflush(stdin);
    scanf("%d",&a.stock);
    printf("\n\t\t\t单价:");
    fflush(stdin);
    scanf("%lf",&a.unvalent);
   inumber++;
    fflush(stdin);
   case 2:
   printf("是否继续输入记录?(Y/N)");
    fflush(stdin);
    scanf("%c",&ch);
    if(ch == 'N' || ch ==' Y'|| ch == 'n'|| ch == 'y')
    {
   break;
    }
    if(ch ==' Y'|| ch == 'y')
    {
    n = 1;
   break;
    }
   case 0:
      printf("是否继续输入记录?(Y/N)");
    fflush(stdin);
    scanf("%c",&ch);
    n = 2;
   }
}while(ch != 'n' && ch != 'N');
   return;
}   //导入商品信息
void wenbenload()
{FILE *fp;
char ch;
double dou;
int in;
int i = 0;
inumber = 0;
   fp = fopen("goodsinfo.out","r");
assert(fp);       //从文件中导入商品信息
fscanf(fp,"%s",&ch);
while(fscanf(fp,"%s",&ch) != EOF)
{
   fscanf(fp, "%s", &ch);
   strcpy(a.name, ch);
   fscanf(fp,"%s",&ch);
    fscanf(fp,"%d",&in);
   a.number = in;
   fscanf(fp,"%s",&ch);
   fscanf(fp,"%s",&ch);
   strcpy(a.vender, ch);
   fscanf(fp,"%s",&ch);
   fscanf(fp,"%s",&ch);
   strcpy(a.filed, ch);
   fscanf(fp,"%s",&ch);
   fscanf(fp,"%d",&in);
   a.stock = in;
   fscanf(fp,"%s",&ch);
   fscanf(fp,"%lf",&dou);
   a.unvalent = dou;   inumber++;}   fclose (fp);
   return;
} //搜索商品
void searchproduct()
{
int i;
int j;
char ch;
int n = 1;
    do
{
    switch(n)
   {
   case 1:
    system("cls");
    printf("\t\t\t\t商品列表\n");
    //显示商品的名称、货号信息,以便于下部的删除
   for (i = 0; i < inumber; i++)
    {
   printf("名称 :%s\n",a.name);
   printf("ID :%d\n",i);
   printf("库存 :%d\n\n\n",a.stock);
    }
//商品的搜索
   printf("\n\n\n\t\t\t\t请输入你要搜索商品的ID:");
    scanf("%d",&j);
   if(0<=j&&j<=inumber)
   {
   printf("名称 :%s\n",a.name);
   printf("货号 :%d\n",a.number);
   printf("厂家 :%s\n",a.vender);
   printf("产地 :%s\n",a.filed);
   printf("存量 :%d\n",a.stock);
   printf("单价 :%.2lf\n\n\n",a.unvalent);
    }
         case 2:
    printf("是否继续搜索商品?(Y/N)");
   fflush(stdin);
    scanf("%c",&ch);
    if(ch == 'N'|| ch == 'n')
    {
   break;
    }
    if(ch ==' Y'|| ch == 'y')
    {
   n = 1;
   break;
    }
      }
}while(ch != 'n' && ch != 'N');
    printf("\n\n\n\n\n\n\t\t\t");
printf("返回主菜单!\n");
printf("\t\t\t");
system("pause");
return;
}
页: [1]
查看完整版本: c语言