「源码分享」ASP.NET仓库进销存ERP管理系统+小程序源码

「源码分享」ASP.NET仓库进销存ERP管理系统+小程序源码,第1张

开发环境为Visual Studio 2012,数据库为SQL SERVER2012R2,使用.net 4.5开发。

一、源码介绍

所有行业的ERP系统/进销存/仓库系统,该系统为vs2012 .net+MsSQL版,目前标准版功能简单、明了、满足公司正常谨携使用,已有多家企业正常使用,成熟稳定,有需要的可以下载看看。

二、主要功能

1、电商管理(可以和公众号、小程序对接) 微信订单、小程序订单、公众号订单

参数设置:轮播图片设置、分类导航设置、小程序参数设置、公众号参数设置

2、销售管理:销售订单、销售出库

3、采购管理:采购订单、采购入库

4、生产管理:BOM分组、BOM清单、生产计划、生产领料、生产入库

5、仓库管理:其他入库、其他出库、商品组装、商品拆卸、库存盘点、库存调拨

6、财务管理:销售收款、其他收款、采购付款、其他付款、收款核销、付款核销

7、采购报表

采购订单跟踪表 采购明细表 采购汇总表(按商品) 采购汇总表(按供应商)

8、销售报表

销售订单跟踪表 销售明细表凳宽 销售汇总表(按商品) 销售汇总表(按客户)

9、生产报表

生产计划跟踪表 生产领料明细表 生产领料汇总表 生产入库明细表 生产入库汇总表

10、仓存报表

商品库存余额表 商品收发明细表 商品收发汇总表

11、资金报表

现金银行报表 应付账款明细表 应收账款明细表

客户对账单 供应商对账单 其他收支明细

12、基础资料

供应商管理 商品管理 仓库管祥粗伏理 账户管理 员工管理 企业号通讯录

工序管理 辅助资料 客户类别 供应商类别 商品类别 商品品牌

收支类别 计量单位 结算方式 工序类别 高级设置 *** 作日志

参数设置 打印设置 Logo印章

3、默认数据库连接字符串在web.config配置文件中修改

获取源码方式:点赞+转发+关注+私信【进销存ERP】

******************************************************************************

欢迎点赞+转发+关注!大家的支持是我分享最大的动力!!!

******************************************************************************

#include<stdio.h>

#include <string.h>

#define NULL 0

#define LEN sizeof(struct student)

struct date

{ int year

int month

int day

}

struct xueke

{

int pingshi

int shiyan

int kaoshi

float zchji

}

struct student

{

int num

char name[10]

char sex

struct date birthday

struct xueke xk[2]

struct student *next/*指向迹猛圆下一个结构体数据类型*/

}

typedef struct student score /*用score来代替类型struct student*/

int n,k /*n.k为全局变量,n表示结点个数,k表示人数*/

score *r=NULL /*定义一个全局变量指针*/

score *stu

/***************************************菜单***********/

int caidan(k)

{

int i

printf("\n\n\n\t\t\t\t考试成绩管理系统\n")

printf("\t\t\t作者:薛文波、魏文清、姚志浩\n")

for(i=1i<79i++)

printf("*")

printf("\n")

printf("1.输入学知含生资料\t\t2.输出学生资料\t\t3.统计学生资料\n")

printf("4.删除学生资料\t\t5.查询学生资料\t\t6.排序学生资料\n")

printf("7.插入学生资料\t\t8.更新学生资料\t\t9.保存学生资料\n")

printf("0.退出!\n")

for(i=1i<79i++)

printf("*")

printf("\n")

printf("请输入你所要 *** 作的选项:")

scanf("%d",&k)

printf("\n")

getchar()

return(k)

}

/**************************************************/

save(score *head)

{

score *q=head

FILE *fp /*调用fopen()函数打开磁盘文件*/

char wjlj[90]

printf("请输入文件的路经:")

scanf("%s",wjlj)

if((fp=fopen(wjlj,"w"))==NULL)/*为读、写建立一个新的二进制文件 */

{

printf("文件打开失败!\n")

return(0)

}

fprintf(fp,"*****************************************************************************\n")

fprintf(fp,"|学号|姓名|性别|生日 |")

fprintf(fp,"C(平时.实验.考试.综合)|")

fprintf(fp,"高数(平时.实验.考试.综合)\n")

fprintf(fp,"*****************************************************************************\n"姿塌)

while(q!=NULL)

{

fprintf(fp,"|%4d|%4s|%4c|%4d-%2d-%2d|",q->num,q->name,q->sex,q->birthday.year,q->birthday.month,q->birthday.day)

fprintf(fp,"%5d|%5d|%5d|%.1f|",q->xk[0].pingshi,q->xk[0].shiyan,q->xk[0].kaoshi,q->xk[0].zchji)

fprintf(fp,"%5d|%5d|%5d|%.1f\n",q->xk[1].pingshi,q->xk[1].shiyan,q->xk[1].kaoshi,q->xk[1].zchji)

q=q->next

}

fclose(fp) /*关闭文件指针fP指向的文件*/

printf("文件已保存\n")

return(0)

}

/*******************************************输入模块*******/

score *creat(void)

{

score *head,*p1,*p2/*定义一个头指针和两个工作点*/

int i

head=NULL

n=0

p1=(struct student *)malloc(LEN) /*用P1开辟一个新单元*/

printf("1.请输入学生资料(输0退出):\n")

printf("a.请输入学生学号(学号应大于0):")

scanf("%d",&p1->num)

while(p1->num<0)

{

printf("输入错误,请重新输入:")/* 学号小于零报错*/

scanf("%d",&p1->num)

}

while(p1->num!=0)

{ printf("b.请输入学生的姓名:")

scanf("%s",p1->name)

printf("请输入学生的性别(M&&F):")

scanf(" %c",&p1->sex)

while(p1->sex!='M'&&p1->sex!='F') /*判断输入性别时的字母是否为M或F*/

{

printf("输入错误,请重新输入学生的性别:")

scanf(" %c",&p1->sex)

}

printf("c.请输入学生的生日(年.月.日):")

scanf(" %d.%d.%d",&p1->birthday.year,&p1->birthday.month,&p1->birthday.day)

printf("d.请输入学生的成绩!\n")

printf("1.请输入 C 成绩(平时,实验,考试):")

scanf(" %d,%d,%d",&p1->xk[0].pingshi,&p1->xk[0].shiyan,&p1->xk[0].kaoshi)

p1->xk[0].zchji=p1->xk[0].pingshi*0.1+p1->xk[0].shiyan*0.2+p1->xk[0].kaoshi*0.7

printf("2.请输入高数成绩(平时,实验,考试):")

scanf(" %d,%d,%d",&p1->xk[1].pingshi,&p1->xk[1].shiyan,&p1->xk[1].kaoshi)

p1->xk[1].zchji=p1->xk[1].pingshi*0.1+p1->xk[1].shiyan*0.2+p1->xk[1].kaoshi*0.7

n=n+1/*结点个数加一*/

if(n==1) head=p2=p1/*若为首结点,则头指针指向本结点*/

else p2->next=p1

p2=p1/*若不是首结点 则把本结点链接到尾部*/

p1=(struct student *)malloc(LEN)

printf("********************************\n")

printf("1.请输入学生资料(输0退出):\n")

printf("a.请输入学生的学号(学号应大于0):")

scanf("%d",&p1->num)

while(p1->num<0) /*判断输入的学号是否小于0*/

{

printf("输入错误,输入错误请重新输入学号:")

scanf("%d",&p1->num)

}

}

p2->next=NULL /* 最后结点不指向任何地址*/

free(p1) /*释放结点占用空间*/

return(head)

}

/*****************************************输出模块********/

void print(score *head)

{

score *q=head

printf("\n输出%d个学生的资料:\n",n)

printf("*****************************************************************************\n")

printf("|学号|姓名|性别|生日 |")

printf("C(平时.实验.考试.综合)|")

printf("高数(平时.实验.考试.综合)\n")

printf("*****************************************************************************\n")

if(head==NULL)

{

printf("\n没有这个学生的资料!\n")

return

}

while(q!=NULL)

{

printf("|%4d|%4s|%4c|%4d-%2d-%2d|",q->num,q->name,q->sex,q->birthday.year,q->birthday.month,q->birthday.day)

printf("%5d|%5d|%5d|%.1f|",q->xk[0].pingshi,q->xk[0].shiyan,q->xk[0].kaoshi,q->xk[0].zchji)

printf("%5d|%5d|%5d|%.1f\n",q->xk[1].pingshi,q->xk[1].shiyan,q->xk[1].kaoshi,q->xk[1].zchji)

q=q->next /*q指针依次向下扫描*/

}

printf("\n***************************************************************************\n")

}

/*********************************************统计模块*****/

score *tongji(score *head)

{

score *q=head,*max,*min

int i,k1[2]={0,0},k2[2]={0,0},k3[2]={0,0} /*将人数统计值的初始值赋为0*/

float czong=0,gzong=0,caver,gaver

q=head /*工作点首先指向头指针*/

max=q

min=q

while(q!=NULL)

{

czong+=q->xk[0].zchji /*P1指向学生总成绩*/

gzong+=q->xk[1].zchji

for(i=0i<2i++)

{

if(q->xk[i].zchji>max->xk[i].zchji)

max=q /*将最大值的地址赋给P1*/

if(q->xk[i].zchji<min->xk[i].zchji)

min=q

if(q->xk[i].zchji>=80) k1[i]++/*k1[i]++为人数的统计*/

else if(q->xk[i].zchji>=60) k2[i]++

else k3[i]++ /*分段成绩的人数统计*/

}

q=q->next

}

caver=czong/n /*计算C的平均成绩*/

gaver=gzong/n /*计算math平均成绩*/

printf("C 语言成绩的总分为:%.2f C 语言成绩的平均分为:%.2f\n",czong,caver)

printf("C 语言成绩的最高分为:%.2f C 语言成绩的最低分为:%.2f\n",max->xk[0].zchji,min->xk[0].zchji)

printf("C 语言成绩优秀的人数为:%d\n",k1[0])

printf("C 语言成绩良好的成绩为:%d\n",k2[0])

printf("C 语言成绩及格的人数为:%d\n",k1[0]+k2[0])

printf("C 语言成绩不及格的人数为:%d\n",k3[0])

printf("高数成绩的总分为:%.2f 高数成绩的平均分为:%.2f\n",gzong,gaver)

printf("高数成绩的最高分为:%.2f 高数成绩的最低分为:%.2f\n",max->xk[1].zchji,min->xk[1].zchji)

printf("高数成绩优秀的人数为:%d\n",k1[1])

printf("高数成绩良好的人数为:%d\n",k2[1])

printf("高数成绩及格的人数为:%d\n",k1[1]+k2[1])

printf("高数成绩不及格的人数为:%d\n",k3[1])

return(head)

}

/*********************************************按学号查询模块*****/

void chaxun2(score *head)

{

score *q=head

int sss=0

char name[10]

printf("请输入要查询的学生姓名:")

scanf("%s",name)

while(q!=NULL)

{

if(strcmp(name,q->name)==0) /*通过字符串的比较按姓名查找*/

{

printf("*****************************************************************************\n")

printf("|学号|姓名|性别|生日 |")

printf("C(平时.实验.考试.综合)|")

printf("高数(平时.实验.考试.综合)\n")

printf("*****************************************************************************\n")

printf("|%4d|%4s|%4c|%4d-%2d-%2d|",q->num,q->name,q->sex,q->birthday.year,q->birthday.month,q->birthday.day)

printf("%5d|%5d|%5d|%.1f|",q->xk[0].pingshi,q->xk[0].shiyan,q->xk[0].kaoshi,q->xk[0].zchji)

printf("%5d|%5d|%5d|%.1f\n",q->xk[1].pingshi,q->xk[1].shiyan,q->xk[1].kaoshi,q->xk[1].zchji)

printf("*****************************************************************************\n")

sss=3 /*定义变量不等于初始值则退出循环体*/

}

q=q->next

}

if(sss==0) printf("没有这个学生的资料!\n\n")

}

/*******************************************按学号查询*******/

void chaxun1(score *head)

{

score *q=head

int num,sss=0

printf("请输入要查询的学生学号:")

scanf("%d",&num)

while(q!=NULL)

{

if(num==q->num)

{

printf("*****************************************************************************\n")

printf("|学号|姓名|性别|生日 |")

printf("C(平时.实验.考试.综合)|")

printf("高数(平时.实验.考试.综合)\n")

printf("*****************************************************************************\n")

printf("|%4d|%4s|%4c|%4d-%2d-%2d|",q->num,q->name,q->sex,q->birthday.year,q->birthday.month,q->birthday.day)

printf("%5d|%5d|%5d|%.1f|",q->xk[0].pingshi,q->xk[0].shiyan,q->xk[0].kaoshi,q->xk[0].zchji)

printf("%5d|%5d|%5d|%.1f\n",q->xk[1].pingshi,q->xk[1].shiyan,q->xk[1].kaoshi,q->xk[1].zchji)

printf("*****************************************************************************\n")

sss=3

}

q=q->next

}

if(sss==0) printf("没有这个学生的资料!\n\n")

}

/********************************************查询二级菜单******/

chaxun_cd()

{

int m=0,i

while(m==0)

{

printf("查询学生的资料\n")

printf("1.按学号查询\n")

printf("2.按姓名查询\n")

printf("请选择你所要 *** 作的选项(按0退出):")

scanf("%d",&i)

switch(i)

{

case 1:chaxun1(r)break /*break表示跳出循环结构结束循环退出包含break语句的那层循环体*/

case 2:chaxun2(r)break

case 0:m=1break

default:printf("错误,重新选择:")break

}

}

}

/***************************************按学号删除***********/

score *del1(score *head)

{

score *p1,*p2

int num

printf("请输入要删除学生的学号:")

scanf("%d",&num)

if(head==NULL)

{

printf("没有这个学生的资料!\n\n")

return(head)

}

p2=p1=head

while(num!=p1->num&&p1->next!=NULL)

{

p2=p1

p1=p1->next

}

if(num==p1->num)

{

if(head==p1)

head=head->next

else

p2->next=p1->next

free(p1)

p1=p2

printf("第%d 学生的资料已删除完毕!\n\n",num)

}

else printf("没有这个学生的资料!\n\n")

return(head)

}

/**************************************************/

score *del2(score *head)

{

score *p1,*p2

char name[10]

printf("请输入要删除学生的姓名:")

scanf("%s",name)

if(head==NULL)

{

printf("没有这个学生的资料!\n\n")

return(head)

}

p2=p1=head

while(strcmp(name,p1->name)!=0&&p1->next!=NULL)

{

p2=p1

p1=p1->next

}

if(strcmp(name,p1->name)==0)

{

if(head==p1)

head=head->next

else

p2->next=p1->next

free(p1)

p1=p2

printf("名字叫%s的学生的资料已被删除!\n\n",name)

}

else printf("没有这个学生的资料!\n\n")

return(head)

}

/*************************************************/

del_cd()

{

int m=0,i

while(m==0)

{

printf("删除学生的资料\n")

printf("1.按学号删除\n")

printf("2.按姓名删除\n")

printf("3.查看删除结果\n")

printf("请选择你所要 *** 作的选项(按0退出):")

scanf("%d",&i)

switch(i)

{

case 1:r=del1(r)break

case 2:r=del2(r)break

case 3:print(r)break

case 0:m=1break

default:printf("错误,重新选择:")break

}

}

}

/*****************************************按学号排序********/

score *paixu2(score *head)

{

score *p1,*p2,*k,h

int i

if(head==NULL)

{

printf("没有任何学生的资料!")

return(head)

}

p1=head

p2=head->next

k=p1

for(i=0i<n-1i++)

{

while(p2!=NULL)

{

if(k->num>p2->num)

k=p2

p2=p2->next

}

if(k!=p1)

{

h=*k

*k=*p1

*p1=h

h.next=k->next

k->next=p1->next

p1->next=h.next

}

p1=p1->next

p2=p1->next

k=p1

}

printf("排序成功!\n\n")

return(head)

}

/*************************************************/

score *paixu1(score *head)

{

score *p1,*p2,*k,h

int i

if(head==NULL)

{

printf("没有任何学生的资料!")

return(head)

}

p1=head

p2=head->next

k=p1

for(i=0i<n-1i++)

{

while(p2!=NULL)

{

if(k->xk[0].zchji>p2->xk[0].zchji)

k=p2

p2=p2->next

}

if(k!=p1)

{

h=*k

*k=*p1

*p1=h

h.next=k->next

k->next=p1->next

p1->next=h.next

}

p1=p1->next

p2=p1->next

k=p1

}

printf("排序成功!\n\n")

return(head)

}

/*************************************************/

paixu_cd()

{

int m=0,i

while(m==0)

{

printf("对学生的资料进行排序\n")

printf("1.按C语言成绩排序\n")

printf("2.按学号排序\n")

printf("请选择你所要 *** 作的选项(按0退出):")

scanf("%d",&i)

switch(i)

{

case 1:r=paixu1(r)break

case 2:r=paixu2(r)break

case 0:m=1break

default:printf("错误,重新选择:")break

}

}

}

/*******************************************按C成绩插入******/

score *charu1(score *head,score *stu)

{

score *p1,*p2

int i

p1=head

r=paixu1(r)

stu=(score*)malloc(LEN) /*开辟一个新单元,用于保存要插入的信息*/

printf("请输入要增加的学生资料:\n")

printf("请输入要增加的学生学号:")

scanf("%d",&stu->num)

while(stu->num<0) /*判断学号是否小于0*/

{

printf("输入错误,输入错误请重新输入学号:")

scanf("%d",&stu->num)

}

printf("b.请输入要增加的学生姓名:")

scanf("%s",stu->name)

printf("请输入要增加的学生性别(F或M):")

scanf(" %c",&stu->sex)

while(stu->sex!='M'&&stu->sex!='F')

{

printf("输入错误,输入错误请重新输入性别:")

scanf(" %c",&stu->sex)

}

printf("c.请输入要增加的学生生日(年.月.日):")

scanf(" %d.%d.%d",&stu->birthday.year,&stu->birthday.month,&stu->birthday.day)

printf("d.请输入要增加的学生成绩!\n")

printf("1.请输入要增加的学生C语言成绩(平时,实验,考试):")

scanf(" %d,%d,%d",&stu->xk[0].pingshi,&stu->xk[0].shiyan,&stu->xk[0].kaoshi)

stu->xk[0].zchji=stu->xk[0].pingshi*0.1+stu->xk[0].shiyan*0.2+stu->xk[0].kaoshi*0.7

printf("2.请输入要增加的学生高数成绩(平时,实验,考试):")

scanf(" %d,%d,%d",&stu->xk[1].pingshi,&stu->xk[1].shiyan,&stu->xk[1].kaoshi)

stu->xk[1].zchji=stu->xk[1].pingshi*0.1+stu->xk[1].shiyan*0.2+stu->xk[1].kaoshi*0.7

if(head==NULL)/*判断头指针是否为空*/

{

head=stu

stu->next=NULL /*如果为空,直接插入头上*/

n++ /*人数加一*/

return(head)

}

while(p1->xk[0].zchji<stu->xk[0].zchji&&p1->next!=NULL) /*根据C成绩确定要插入的位置*/

{

p2=p1

p1=p1->next

}

if(stu->xk[0].zchji<=p1->xk[0].zchji)

{

if(p1==head) /*如果p1指向头指针 */

{

head=stu

stu->next=p1

n++

}

else

{

stu->next=p2->next

p2->next=stu

n++

}

}

else

{

p1->next=stu

stu->next=NULL

n++

}

printf("增加学生资料成功!\n")

return(head)

}

/*********************************************按学号插入****/

score *charu2(score *head,score *stu)

{

score *p1,*p2

int i=0

p1=head

r=paixu2(r) /*调用排序函数*/

stu=(score*)malloc(LEN) /*开辟一个新单元,用于保存要插入的信息*/

printf("请输入要增加的学生资料:\n")

printf("请输入要增加的学生学号:")

scanf("%d",&stu->num)

while(stu->num<0)

{

printf("输入错误,输入错误请重新输入学号:")

scanf("%d",&stu->num)

}

printf("b.请输入要增加的学生姓名:")

scanf("%s",stu->name)

printf("请输入要增加的学生性别(F或M):")

scanf(" %c",&stu->sex)

while(stu->sex!='M'&&stu->sex!='F')

{

printf("输入错误,输入错误请重新输入性别:")

scanf(" %c",&stu->sex)

}

printf("c.请输入要增加的学生生日(年.月.日):")

scanf(" %d.%d.%d",&stu->birthday.year,&stu->birthday.month,&stu->birthday.day)

printf("d.请输入要增加的学生的成绩!\n")

printf("1.请输入要增加的学生C语言成绩(平时,实验,考试):")

scanf(" %d,%d,%d",&stu->xk[0].pingshi,&stu->xk[0].shiyan,&stu->xk[0].kaoshi)

stu->xk[0].zchji=stu->xk[0].pingshi*0.1+stu->xk[0].shiyan*0.2+stu->xk[0].kaoshi*0.7

printf("2.请输入要增加的学生高数的成绩(平时,实验,考试):")

scanf(" %d,%d,%d",&stu->xk[1].pingshi,&stu->xk[1].shiyan,&stu->xk[1].kaoshi)

stu->xk[1].zchji=stu->xk[1].pingshi*0.1+stu->xk[1].shiyan*0.2+stu->xk[1].kaoshi*0.7

if(head==NULL) /*判断头指针是否为空*/

{

head=stu

stu->next=NULL

n++

return(head)

}

while(p1->num<stu->num&&p1->next!=NULL) /*根据学号确定要插入的位置*/

{

p2=p1

p1=p1->next

}

if(stu->num<=p1->num)

{

if(p1==head)

{

head=stu

stu->next=p1

n++

}

else

{

stu->next=p2->next

p2->next=stu

n++

}

}

else

{

p1->next=stu

stu->next=NULL

n++

}

printf("增加学生资料成功!\n")

printf("\n")

return(head)/*返回头指针*/

}

/*******************************************插入的二级菜单******/

charu_cd()

{

int m=0,i

while(m==0)

{

printf("增加学生的人数\n")

printf("\n1.按C语言成绩增加\n")

printf("2.按学号增加\n")

printf("请选择你所要 *** 作的选项(按0退出):")

scanf("%d",&i)

switch(i)

{

case 1:r=charu1(r,stu)break

case 2:r=charu2(r,stu)break

case 0:m=1break

default:printf("错误,重新选择:")break

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12570098.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存