ડꫀꫀ ꪗꪮꪊ. 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 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求
  • ¥15 k8s生产配置推荐配置及部署方案
  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗
  • ¥15 一个小问题,本人刚入门,哪位可以help
  • ¥30 python安卓开发
  • ¥15 使用R语言GD包一直不出结果