是否有这样的开源系统,可以在线管理公司的产品库存,订单,客户关系,员工的开销等?
类似的系统是有的
但是 开源并不意味着 你一定可以找到开发者
每家系统都有自己的代码习惯 编程规则
开源在国内只是一个相对的概念
几乎还不存在纯净的 无利益的开源
另外 其实系统只是个基础 使用操作的基础
服务器的稳定 网络的顺畅 及时的售后维护
这些都是公司运营使用的关键因素
这些都是不可或缺的
求一个只用c语言编写的仓库管理系统
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
#define?max?32
int?ifempty=0;//标志,判断链表是无否为空
typedef?struct?dnode?/*?定义双向链表结构体?*/?
{
int?number;?/*?货物编号?*/
char?name[max];?/*?货物名称?*/?
int?counter;?/*?货物数量?*/
struct?dnode?*prior,?*next;
/*?定义两指针,分别指向其前驱和后继?*/
}dlnode;?
dlnode?*create(dlnode?*L);
dlnode?*input(dlnode?*L);
dlnode?*output(dlnode?*L);
dlnode?*?outnum(dlnode?*L);
dlnode?*?outname(dlnode?*L);
dlnode?*current(dlnode?*L);
void?search(dlnode?*L);
void?print(dlnode?*L);
void?searchnum(dlnode?*L);
void?searchname(dlnode?*L);
void?display(dlnode?*L)?;
void?main()
{
int?x;
dlnode?*L;
if(!(L=(dlnode?*)malloc(sizeof(dlnode))))?//分配空间
{
printf("
");
exit(1);
}
create(L);///调用函数,创建头节点
while(1)
{////////////////////////主菜单///////////////////////////
printf("?============================
");
printf("?1.?货物出库和入库
");
printf("?2.?查找货物表
");?
printf("?3.?显示仓库货物表
");
printf("?4.?输出到文件
");
printf("?0.?退出
");
printf("?=============================
");
printf("?选择0--3:");
scanf("%d",&x);
switch(x)
{
case?2:search(L);break;//调用查找函数
case?1:current(L);break;//调用入库出库函数
case?3:display(L);break;//调用显示输出函数
case?4:print(L);break;//调用打印函数
case?0:printf("
?bye!see?you!
");
getchar();getchar();exit(0);//退出程序
default:printf("
?Enter?erreor!please?input?0--4!");?
getchar();getchar();
}
}
}
dlnode?*create(dlnode?*L)//创建链表头节点
{
printf("?欢迎使用我的仓库管理系统");
getchar();?
ifempty=0;
///////初始化头节点的值////////
L->next=NULL;L->prior=NULL;
L->number=L->counter=0;
strcpy(L->name,"?");?
return?L;
}
void?search(dlnode?*L)?///查找的主要菜单
{
int?y;
if(ifempty==0)
{
printf("没有输入货物!
");
getchar();getchar();
return;
}
else
{
while(1)
{
printf("=====================
");
printf("1.按编号查询
");
printf("2.按货物名称查询
");
printf("0.返回上一层
");
printf("====================
");
printf("选择0--2:");
scanf("%d",&y);
switch(y)
{
case?1:searchnum(L);break;//调用按编号查找的函数
case?2:searchname(L);break;//调用按名称查找的函数
case?0:return;//返回
default:printf("enter?error!Please?input?0--2!
");
getchar();getchar();printf("
");
}
}
}
}
void?searchnum(dlnode?*L)///按编号查找的函数
{
int?num,flag=0;//flag为是否找到的标志
dlnode?*head=L;
if(ifempty==0)
{
printf("没有货物被输入
");
getchar();getchar();
return;
}
printf("输入你要查找的货物编号:
");
scanf("%d",&num);
while((L=L->next)!=head)
{
if(L->number==num)
{?flag=1;//flag为1时表示找到
printf("找到指定编号货物?
");?
printf("
编号:%d
",L->number);
printf("名称:%s
",L->name)?;
printf("数量:%d
",L->counter);?
}?
}
if(flag==0)//flag为0时表示没有找到
printf("没有找到指定编号货物,请查看是否还有货物。
");
getchar();getchar();
}
void?searchname(dlnode?*L)//按名称查找的函数
{
int?flag=0;//flag为是否找到的标志
char?na[32];
dlnode?*head=L;
if(ifempty==0)
{
printf("没有货物被输入
");
getchar();getchar();
return;
}
printf("输入你要查找的货物名称
");
scanf("%s",&na);
while((L=L->next)!=head)
{
if(strcmp(L->name,na)==0)
{?flag=1;//flag为1时表示找到
printf("找到指定名称货物?
");?
printf("
编号:%d
",L->number);
printf("名称:%s
",L->name)?;
printf("数量:%d
",L->counter);?
}?
}
if(flag==0)//flag为0时表示没有找到
printf("没有找到指定编号货物,请查看是否还有货物。
");
getchar();getchar();
}
dlnode?*current(dlnode?*L)//货物出库入库函数
{
int?y;
while(1)
{
printf("========================
");
printf("?1.货物入库
");
printf("?2.货物出库
");
printf("?0.返回上一层
");
printf("========================
");
printf("?选择0--2:");
scanf("%d",&y);
switch(y)
{
case?1:input(L);break;//调用入库函数
case?2:output(L);break;//调用出库函数
case?0:return(L);//返回上一层
default:printf("enter?error!Please?input?0--2!");
getchar();getchar();
printf("
");
}
}
}
dlnode?*input(dlnode?*L)//定义入库函数
{
dlnode?*in,*head;
head=in=(dlnode?*)malloc(sizeof(dlnode));//分配空间
head=L;
printf("
请输入货物数据:
");
printf("编号:");scanf("%d",&in->number);
printf("名称:");scanf("%s",&in->name);
printf("数量:");scanf("%d",&in->counter);
if(L->next==NULL)?//如果只有头节点,
{?//把刚输入的in节点
L->next=in;?//跟在头节点后面
L->prior=in;?//
in->next=L;?//
in->prior=L;?//
ifempty++;?//ifempty加1
}
else
{//如果当前L的下一个节点不是头节点
while((L=L->next)!=head)
{//如果输入的数大于L->number,则插到L的前面
if(L->number<in->number)
{
in->next=L;
in->prior=L->prior;?
L->prior->next=in;
L->prior=in;
ifempty++;?//ifempty加1
return(head);
}?
}
//输入的编号比其它编号都小,则插到最后个节点,并首尾相连
head->prior->next=in;
in->prior=head->prior;
head->prior=in;
in->next=head;
ifempty++;?//ifempty加1
}?
return?head;
}
dlnode?*output(dlnode?*L)//出库的函数
{
int?y;
dlnode?*head=L;
if(ifempty==0)//检测是否有货物输入
{
printf("没有货物输入系统
");
getchar();getchar();
return(head);
}?
while(1)
{
printf("=============
");
printf("1.按编号出库
");
printf("2.按名称出库
");
printf("0.返回上一层
");
printf("==============
");
printf("选择0--2:");scanf("%d",&y);
switch(y)
{
case?1:outnum(L);break;//调用按编号出库函数
case?2:outname(L);break;//调用按名称出库函数
case?0:return(L);
default:printf("enter?error!Please?input?0--2!");
getchar();getchar();printf("
");
}
}
}?
dlnode?*outnum(dlnode?*L)//按编号出库函数
{?
int?num;
dlnode?*head=L;
printf("请输入出库货物的编号:");
scanf("%d",&num);
while((L=L->next)!=head)
{//如果找到就删除节点
if(L->number==num)
{
L->prior->next=L->next;
L->next->prior=L->prior;
ifempty--;?//ifempty减1?
printf("编号为%d的货物成功出库",num);?
getchar();getchar();
return?head;?
}?
}
printf("没有此编号的货物,请查看是否还有货物。
");
getchar();getchar();
return?(head);
}
dlnode?*outname(dlnode?*L)//按名称出库函数
{
char?na[32];
dlnode?*head=L;
printf("请输入出库货物的名称:");
scanf("%s",&na);
while((L=L->next)!=head)
{//如果找到就删除节点
if(strcmp(L->name,na)==0)
{
L->prior->next=L->next;
L->next->prior=L->prior;
ifempty--;?//ifempty减1?
printf("名称为%s的货物成功出库",na);
getchar();getchar();
return?(head);
}
}
printf("没有此名称的货物,请查看是否还有货物。
");
getchar();getchar();
return(head);
}?
void?display(dlnode?*L)//显示货物清单
{
dlnode?*head=L;
if(ifempty==0)
{
printf("没有货物可显示
");
getchar();getchar();
return;
}
L=L->next;
do
{?
printf("
编号:%d
",L->number);
printf("名称:%s
",L->name)?;
printf("数量:%d
",L->counter);
}while((L=L->next)!=head);
getchar();getchar();?
}
void?print(dlnode?*L)
{
dlnode?*head=L;
L=L->next;
char?filename[max];
FILE?*out;
if(ifempty==0)
{
printf("没有货物可输出
");
getchar();getchar();
return;
}
printf("请输入文件名称:");
scanf("%s",filename);
if((out=fopen(filename,"w"))==NULL)
{
printf("打开文件失败!
");
getchar();getchar();
return;
}
do{?
fprintf(out,"编号:%d
名称:%s
数量:%d
",L->number,L->name,L->counter);
}while((L=L->next)!=head);
printf("输出成功
");getchar();getchar();
fclose(out);
}
仓库管理系统怎么做啊
可以发一份仓库管理EXCEL公式化系统给你。
仓库管理EXCEL公式化系统解决仓库管理混乱,采用收货、出货分开入账。
仓库管理EXCEL公式化系统,按四套表:
1、物料表(人工输入1次资料)
2、物品每日收入输入记帐表(自动显示物品名称,只需输入收入数量);
3、物品每日出库发货记帐表(自动显示物品名称,只需输入出货数量);
4、自动统计的“月度报表”
仓库 物料 收发存 入帐表
物料编码 物料名称 2010 年 10 月
日期 |
摘要 |
单位 |
入库数量 |
发出数量 |
结存 |
单价 |
金额 |
备注说明 |
2010-10-1 |
上月结存 |
|
|
|
|
|
|
|
10-2 |
|
|
|
|
|
|
|
|
10-3 |
|
|
|
|
|
|
|
|
。
。
。
。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10-31 |
本月结存 |
|
|
|
|
|
|
|
我在QQ:271011426给你系统吧,请采纳。
php有哪些仓储管理系统
1. isoft仓储管理系统是一个基于php和mysql的仓储管理系统。
2. 前身是think仓储管理系统,现更名为isoft仓储管理系统,简称isoft wms。
3. 包含以下功能模块:首页统计、入仓登记、入仓查询、出仓登记、出仓查询、库存统计、个人设置、用户管理、通知管理、基础数据、备份恢复、操作日志。