ડꫀꫀ ꪗꪮꪊ. 2022-10-09 01:57 采纳率: 88.6%
浏览 20
已结题

C++ 图书管理系统 运行不了 说我打开文件时候不能接受2个参数 不知道错哪里


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef  struct{


int   year;
int  month;
}time;
typedef struct  node{


int  num;
char  name[20];
time jin;
time  bao;
}node, huowu[20];



int visite(FILE* ft, node huowu[20])// 从文件中将信息读出并保存在数组中 
{


    int  i = 0;
    if ((ft = fopen_s("货物信息.txt", "r")) == NULL)
    {

        printf("\nCan't   open!");
        exit(0);

    }


    while (!feof(ft)) {






        fscanf_s(ft, "%s%d%d%d%d%d", huowu[i].name, &huowu[i].num, &huowu[i].jin.year, &huowu[
            i].jin.month, &huowu[i].bao.year, &huowu[i].bao.month);
        printf("\n");
        printf(" 名称:%-10s 数量: %-5d 生产日期: %d  年 %d    月  截止日期: % d年  %d  月\n", huowu[i].name, huowu[i].num, huowu[i].jin.year, huowu[i].jin.month, huowu[i].bao.year, huowu[i].bao.month);
        i++;

    }





    if (fclose(ft))
    {

        printf("\nCan't      close!");
        exit(0);


        return  i;
    }
}





void   kuochong(FILE* ft)//追加

{
    int  a, i;
    node    kuochong[20];


    if ((ft = fopen_s("货物信息.txt", "a+")) = NULL)
    {

        printf("\nCan't    open!");
        exit(0);
    }




    printf("\n扩充的商品数目: ");
    scanf_s("%d", &a);
    if (a > 15)
        printf("n商品过多,无法保存!");
    fflush(stdin);
    for (i = 0; i < a; i++)

        printf("n扩充的商品名称: ");
    scanf_s("%s", kuochong[i].name);



    printf("n扩充的商品数量: ");
    scanf_s("%d", &kuochong[i].num);



    printf("n该商品的生产日期:");
    scanf_s("%d%d", &kuochong[i].jin.year, &kuochong[i].jin.month);




    printf("n该商品的截止时间:");



    scanf_s("%d%d", &kuochong[i].bao.year, &kuochong[i].bao.month);
    fflush(stdin);






    for (i = 0; i < a; i++)
    {


        fprintf(ft, "n%s           %d       %d   %d  %d        %d", kuochong[i].name, kuochong[i].num, kuochong[i].jin.year, kuochong[i].jin.month, kuochong[i].bao.year, kuochong[i].bao.month);
    }





    if (fclose(ft))
    {

        printf("\nCan't    close!");
        exit(0);
    }
}










void  shanchu(node huowu[20], int n, FILE* ft)//删除
{
    int t, j, i;
    char s[20];
    printf("\n要删除的货物名称: ");
    scanf_s("%s", s);
    fflush(stdin);


    for (i = 0; i < n; i++)
        if (!strcmp(s, huowu[i].name))
            t = i;

    for (j = t; j < n;j++)
        huowu[j] = huowu[j + 1];


    if ((ft = fopen_s("货物信息.txt", "w+")) == NULL)


    {
        printf("\nCan't    open!");
        exit(0);
    }





    for (i = 0; i < n - 1; i++)


    {
        fprintf(ft, "\n%s          %d       %d    %d  %d     %d", huowu[i].name, huowu[i].num, huowu[i].jin.year, huowu[i].jin.month, huowu[i].bao.year, huowu[i].bao.month);
    }





    if (fclose(ft))

    {
        printf("\ncan't   close");
        exit(0);
    }
}







void chaxun(FILE* ft, node huowu[20], int n)//查询
{

    char s[20];
    int i;
    printf("n要查询的货物名称:");
    scanf_s("%s", s);


    for (i = 0; i < n; i++)
        if (!strcmp(s, huowu[i].name))
            printf("n        名称:%- 10s数量:%-5d生产日期:%d年%d月         截止日期                 : % d                  年 % d                                    月n",huowu[i].name,huowu[i].num,huowu[i].jin.year,huowu[i].jin.month,huowu[i].bao.year,huowu[i].bao.month);

}






//判断
int panduan(time g, time  f)
{





    if (g.year > f.year)
        return  1;
    else      if (g.month > f.month)
        return  1;



    return  0;
}










void  paixu(node  huowu[20], int  n)
{

    int  a, i, j;
    node  t;
    printf("\n               1  数量(从大到小)   2  生产日期  3  截止日期\n");
    printf("\n请选择排序的方式: ");
    scanf_s("%d", &a);




    switch (a)
    {

    case  1:
        for (i = 0; i < n - 1; i++)
            for (j = n - 1; j >= i + 1; j--)
                if (huowu[j].num < huowu[j - 1].num)
                {

                    t = huowu[j];
                    huowu[j] = huowu[j - 1];
                    huowu[j - 1] = t;
                }


        for (i = 0; i < n; i++)
            printf("\n       名称:%-10s数量:%-5d生产日期:%d年%d月         截止日期                 : % d                  年 % d                                    月\n", huowu[i].name, huowu[i].num, huowu[i].jin.year, huowu[i].jin.month, huowu[i].bao.year, huowu[i].bao.month);
        break;




    case  2:
        for (i = 0; i < n - 1; i++)
            for (j = n - 1; j >= i + 1; j--)
                if (panduan(huowu[j - 1].jin, huowu[j].jin))


                    t = huowu[j];
        huowu[j] = huowu[j - 1];
        huowu[j - 1] = t;





        for (i = 0; i < n; i++)
            printf("n       名称:%-10s数量:%-5d生产日期:%d年%d月        截止日期                : % d                  年 % d                                   月 \n", huowu[i].name, huowu[i].num, huowu[i].jin.year, huowu[i].jin.month, huowu[i].bao.year, huowu[i].bao.month);


        break;
    case  3:
        for (i = 0; i < n - 1; i++)
            for (j = n - 1; j >= i + 1; j--)
                if (panduan(huowu[j - 1].bao, huowu[j].bao))


                    t = huowu[j];
        huowu[j] = huowu[j - 1];
        huowu[j - 1] = t;


        for (i = 0; i < n; i++)
            printf("\n      名称:%-10s数量:%-5d生产日期:%d年%d月        截止日期                : % d                  年 % d                                   月 \n", huowu[i].name, huowu[i].num, huowu[i].jin.year, huowu[i].jin.month, huowu[i].bao.year, huowu[i].bao.month);


        break;
    }


}








int main()
    {


        FILE* ft;
        int t;
        int huowushu;
        char  ch;
        node  huowu[20];


        printf("\n");
        printf("  ***** 欢 迎 进 入 货 物 管 理 系 统***** ");
        printf("\n");



        printf("\n--------------------------------------------------------------------------------In");
        printf("          1  扩 充    2  查 看    3  删 除    4  排 序   5  查 询    6  退出\n");
        printf("\n--------------------------------------------------------------------------------In");

        printf("你要进行的操作…");
        scanf_s("%d", &t);
        fflush(stdin);
        switch (t)
        {
        case  1:
            kuochong(ft);


            fflush(stdin);


            break;




        case 2:


            huowushu = visite(ft, huowu);


            fflush(stdin);


            break;


        case 3:
            shanchu(huowu, huowushu, ft);


            fflush(stdin);


            break;


        case 4:
            paixu(huowu, huowushu);


            fflush(stdin);


            break;


        case 5:
            chaxun(ft, huowu, huowushu);


            break;





        case  6:
            printf("In谢谢惠顾!\n");
            break;
        }





    }
        




  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-10-09 04:13
    关注

    你可以查一下fopen_s的说明啊,与fopen是不一样的。另外fscanf_s的使用也是错的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月17日
  • 已采纳回答 10月9日
  • 创建了问题 10月9日

悬赏问题

  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?