#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;
}
}
C++ 图书管理系统 运行不了 说我打开文件时候不能接受2个参数 不知道错哪里
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 快乐鹦鹉 2022-10-09 04:13关注
你可以查一下fopen_s的说明啊,与fopen是不一样的。另外fscanf_s的使用也是错的
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 服务端控制goose报文控制块的发布问题
- ¥15 学习指导与未来导向啊
- ¥15 求多普勒频移瞬时表达式
- ¥15 如果要做一个老年人平板有哪些需求
- ¥15 k8s生产配置推荐配置及部署方案
- ¥15 matlab提取运动物体的坐标
- ¥15 人大金仓下载,有人知道怎么解决吗
- ¥15 一个小问题,本人刚入门,哪位可以help
- ¥30 python安卓开发
- ¥15 使用R语言GD包一直不出结果