线性表周内作业练习

周内作业

完成仓库货物信息管理系统,实现仓库货物的初始化、货物信息录入、货物查询、统计、入库管理、出库管理。(仓库可容纳足够数量的货物!)

具体要求如下:

自定义货物结构体类型(需要哪些货物属性自己分析确定,以满足功能需求),以货号(唯一)的升序方式建立货物的顺序表并以初始化方式提供一定数量的货物信息。

(1)输出所有货物信息,要求以二维表格形式显示,一行一个货物。

(2)插入一个新货物到表尾。

(3)删除某个货号对应的货物。

(4)按货物名称查询货物(不一定唯一!)

(5)完成入库管理:当一个货物要入库时,首先确定它是否是一个新的货物,如果不是新的,则查询到该货物并修改其数量,如果是新货物,则要确定新的货物号,同时录入其信息并将其插入到货物表中。(注意:只有货物名称相同,生产厂家相同,定价相同的才是相同中的货物)

(6)完成出库管理:当用户提供货物名和数量后,首先查询有没有这个货物,如果有,则显示查询结果,如果结果中数量满足的货物并不唯一时需提请用户选择需要哪一种,则出库并修改该货物数量,如果没有或者数量不足则需给出相应的信息。

7)统计显示目前库存所有货物的总数量。

8)当某货物库存仅剩一个时需进行补充,请输出需补充的货物清单。

注意: 可以采用文件存储货物信息,程序第1次运行时,键盘录入现有货物信息并存入文件,之后再进行其它操作均是在该文件基础上进行不再进行第1次的信息录入。

如果对文件操作有困难的同学则不用文件,直接定义顺序表结构体数组,全部信息都直接存入内存,但开始的货物信息建议用初始化方式提供,否则每次调试程序都要输入大量数据不合适。

开篇

我第一步做的是先将整道题的题目通读一遍,弄清楚大概是要干个啥,然后再开始慢慢写,在写的过程中再进一步遇到问题,解决问题。

开始想

1、我要解决的问题是:怎么在初始化顺序表的时候利用文件将已知的货物信息通过键盘读入,这样之后再进行写入或者其他操作的时候在文件的基础上进行操作,不再录入?

主要分为以下几步:

  • 先定义一个顺序表

  • 创建一个函数,初始化单链表

  • 创建一个函数,通过键盘读入接收货物信息,并将其录入顺序链表中

  • 录入之后,将数据写入文件

  • 后续再从文件读取,如果文件存在,那么就在文件的基础上进行顺序链表的增删查改等等

那么,就开始做第一次的尝试,开写:

  • 首先,先定义一个结构体数组Goods,来存放货物的基本信息(货号,名称,数量,生产厂家,定价)

  • 定义一个顺序表

  • 初始化这个顺序表

  • 通过键盘将货物的信息读入到顺序表中

  • 打开文件将顺序表中内容写入文件

2、插入一个新货物到表尾,检查表是否满,插入之后记得L->len++

3、删除货物的时候检查表是否为空,删除之后记得L->len--

4、想要把删除后的顺序表写入文件只能重新初始化一个顺序表Temp,然后通过与L比较,将不包含货号的剩下货物写入文件

5、记得把不包含货号的货物赋值给Temp的时候,记得Temp->len++,最后将临时顺序表写入文件后,记得释放内存

6、switch()语句的复习

switch(num){
    case 1:
        ...
        break;
    ...
    default:
        printf("请输入正确的菜单编号");
}

7、在入库的时候,先判断是否为新货物,如果是(name,company,price均相同才算):查询到该货物,并修改数量

如果不是:确定新年的货物号,同时录入信息并插入到货物表

8、利用辅助变量

9、字符串比较应该用strcmp而不是"=="

10、在比较货物价格的时候,可以引入#include<stdbool.h>通过

判断误差视为相等。

11、getchar()的作用:

getchar()用于从标准输入读取下一个可用的字符。当我们在读取输入后立即使用getchar(),它通常用于"吸收"或"清楚"输入缓冲区中的剩余字符,特别是换行符。因为如果scanf()读取了数据之后且按下了换行符,那么"\n"会留在缓冲区中,如果不清除的话,会影响后续的输入读取,尤其是使用scanf读取字符或字符串时。

12、如何在录入顺序表后将信息写入文件:在录入顺序表的函数的末端调用一个写入文件的函数

13、const char *filename 用于表示文件名,通常文件名在程序运行期间不会改变,因此使用 const 可以防止在函数内部不小心修改文件名指针指向的内容

4、文件

FILE *file = fopen(filename,"w");
fprintf(file,"",);
fclose(file);

代码就不贴了,贴个图,主要是我本来想的比较慢,写的也比较慢。😥较慢,

最后

终于写完了,从今天下午6点多开始写,到现在0:13,加上昨天(前天)做完物理实验后的时间,总共有近7个小时吧,天哪!累!

然后,我的物理实验的图还没画完,大物练习还没做,还有一大堆事情,但是,我还是毅然决然回去睡觉,因为我发现昨天1点多回去之后(不对,是今天1点多,不对过12点了,是昨天),然后一整个上午状态都不好!

所以,睡觉去喽!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值