c语言程序设计 用链表编写商品库存管理。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node{
char no[20]//存放编号
char name[40]//存放名称
int reserve//库存
struct node *next
}NODE
typedef struct link{
NODE *front//头指针
NODE *rear//尾指针
}LINK;
NODE *create_node(void){
NODE *node = (NODE *)malloc(sizeof(NODE))
printf("请输入货物编号:")
gets(node->no)
printf("请输入货物名称:")
gets(node->name)
printf("请输入货物名称:")
char ch
while( (ch= getchar()) != '\n')//rewind(stdin)
scanf("%d",&node->reserve)
node->next = NULL
return node
}
void init_link(LINK *link){
link->rear = NULL
link->front = NULL
}
int link_empty(LINK *link){
return link->front == NULL ? 1: 0
}
int node_num(LINK *link){
int num = 0
if( link_empty(link)){
return num
}
num = 1
NODE *node = link->front
while(node != link->rear){
node = node->next
++num
}
return num
}
void node_push(LINK *link){
NODE *node = create_node()
if(link->front == NULL){
link->front = node
link->rear = node
node->next = NULL
}
else{
link->rear->next = node
link->rear = node
node->next = NULL
}
}
void node_insert(LINK *link,const int n){
int num = 0,i = 1
NODE *node = link->front
NODE *new_node = NULL
if ( link_empty(link) ){
printf("链表为空,将建立链表!\n")
node_push(link)
}
else{
if( n <= 1){
printf("在链表头插入数据\n")
new_node = create_node()
new_node->next = link->front
link->front = new_node
}
else if( n>= num = node_num(link) ){
printf("节点数少于%d,将在末尾插入节点.\n",n)
node_push(link)
}
else{
printf("在第n个节点后插入数据\n")
if(num >= n){
while( i != n){
node = node->next
++i
}
new_node = create_node()
new_node-next = node->next
node->next = new_node
}
}
}
void find_node_insert(LIKNK *link,const char *name){
NODE *node = link->front
if( link_empty(link) )
node_push(link)
else {
while(strcmp(node->name,name) != 0){
if(node != link->rear)
node = node->next
else break
}
if(node != NULL){
NODE *new_node = create_node()
new_node-next = node->next
node->next = new_node
}
else {
printf("没有找到相关货物,将在头节点插入数据\n")
intsert(link,0)
}
}
这个问题,首先,你会开发是吗?会的话,进销存(进货+销售+库存)进货有进货+应付款销售有出库+应收款库存是根据进货和销售得出的数量最基本的是这样了,后期会根据使用需要增加模块,比如库存下面的损益单之类的,用来调整库存
具体解决方法操作步骤如下:
1、先制作三张表格:一张进货表、一张销售表、最后一张结存表。
2、制作进货表的表头。
3、制作销货表的表头。
4、制作结存表的表头。
5、打开结存表,把鼠标放在b2单元格,之后点击公示栏的fx。
6、点击之后页面会弹出“插入函数”,选择“SUMIF”,点击确定。
7、确定之后,页面会弹出“函数参数”, 用鼠标点击第一行末尾的向上箭头,点击后,参数函数会变成单独的一行,然后点击进货表。
8、点击进货表之后,页面会跳转到进货表的界面,选择“品名”所在的整列;
选择好后点击“参数函数”后面的向上箭头。
9、鼠标点击第二行空白处,页面会跳转到结存表,选择B2单元格,再点击确定。
10、点击第三行的向上箭头,再点击进货表,页面会跳转到进货表,选中数量所在的整列(也就是C列),选好后,点击确定。
11、确定之后,页面会跳转到结存表,选中b2单元格,把鼠标放在单元格的右下角,当单元格出现“+”号时,按住往下拉,此为把第二单元格的公式填充到b列其他的单元格。
12、用同样的方法,设置C2单元格的公司,就是销售数量的公式;注意,此时取数的表格都是销售表;从下面的公式可以看出B2跟C2单元格的公式都是相同的,只是把进货表改成销售表,C2单元格的公式设置好之后,同样要将公式填充到其他单元格。
13、结存数量的公式设为:B2-C2;
14、结算金额公式设为:D2*E2。
15、最后,设置进货单价,也是用同样的方法设置,数据取进货表中的单价。
16、设置好之后,我们来验算一下表格的正确性;在进货表中输入一行数据:黑色笔,进货数量50,单价2元。
17、复制进货表中的品名“黑色笔”,粘贴到结存表中的品名处,可以看到进货数量变为了50,结存数量也变为了50,进货单价变为2,结存金额变为100元了。
18、在销售表中录入一行数据:销售黑色笔30支,单价5元。
19、返回到结存表中,销售数量处变成了30,结存数量处自动变成了20,数据无误;这样在结存表中既可以看到进货数量,也可以看看销售数量,出入库报表就制作完毕了。
具体操作步骤如下:
在第一行输入物料名称、日期、出库、入库和结存信息。如图:
将结存处使用公式=入库数+入库数+…-出库数-出库数…,输入好公式点击enter键即可。下面的物料只要向下拖拽已完成计算的结存处单元格左下角,即生成同样的公式。
备注:一般的仓库进销存表格只要将物料名称和出入库等信息写清楚,能做到一目了然,就已经达到了制作表格的目的。