文章目录:
c语言粮油进销存系统源代码
#includestdio.h
#includestdlib.h
#includestring.h
#includeconio.h
//日期结构体
typedef struct
{
int year;
int month;
int day;
}DATE;
//商品结构体
//定义链表
typedef struct Node
{
long num;
char name[20];
char kind[20];
DATE pro_date;
int save_day;
int shuliang;
float jinjia;
float shoujia;
DATE sale_date;
struct Node *next;
}Node,*LinkList;
//申请函数
void apply()
{
int i,flag=1;
FILE *fp;
char name[20],key[20];
flushall();
printf("用户名(不能为空):");
scanf("%s",name);
flushall();
printf("密码(不能为空):");
for(i=0;i=20;i++)
{
key[i]=getch();
if(key[i]==13)
{
key[i]='\0';
break;
}
printf("*");
}
fp=fopen("key.txt","w");
if(fp==NULL)
{
printf("the file can not open!");
flag=0;
exit(1);
}
fprintf(fp,"%s %s",name,key);
fclose(fp);
if(flag==1)
printf("\n申请成功,请登录!\n");
else
printf("\n申请失败,请重新申请!\n");
}
//登录函数
int load()
{
FILE *fp;
int i;
char name[20],key[20];
char name1[20],key1[20];
fp=fopen("key.txt","r");
fscanf(fp,"%s %s",name,key);
fclose(fp);
printf("用户名(不能为空):");
scanf("%s",name1);
flushall();
printf("密码(不能为空):");
for(i=0;i=20;i++)
{
key1[i]=getch();
if(key1[i]==13)
{
key1[i]='\0';
break;
}
printf("*");
}
printf("\n");
if(strcmp(name1,name)==0strcmp(key1,key)==0)
{ printf("登陆成功!\n\n");return 1; }
else
{ printf("用户名或密码错误;请重新登录!"); return 0;}
}
//密码保护系统
void key()
{
int choice,c;
do
{ printf("\n****************************申请登录系统********************************\n\n");
printf(" 1: 新用户注册; \n\n");
printf(" 2: 新用户登录; \n\n");
printf("请选择:");
scanf("%d",choice);
switch(choice)
{
case 1: apply(); break;
case 2: c=load();break;
}
}while(c!=1);
}
LinkList goods_input()
{
LinkList L;
Node *p1,*p2;
int i=1;
void file_write(Node *p);
int flag=1;
L=p2=(Node*)malloc(sizeof(Node));//为头节点分配存储空间
while(flag)
{
p1=(Node*)malloc(sizeof(Node));
printf("请输入第%d种商品的信息(商品号为0时,结束商品输入):\n\n",i++);
flushall();
printf("商品号:");
scanf("%ld",p1-num);
if(p1-num!=0)
{
flushall();
printf("名称:");
scanf("%s",p1-name);
flushall();
printf("类别:");
scanf("%s",p1-kind);
flushall();
printf("生产日期(年月日用空格隔开):");
scanf("%d%d%d",p1-pro_date.year,p1-pro_date.month,p1-pro_date.day);
flushall();
printf("保质期:");
scanf("%d",p1-save_day);
flushall();
printf("商品数量:");
scanf("%d",p1-shuliang);
flushall();
printf("进价:");
scanf("%f",p1-jinjia);
flushall();
printf("售价:");
scanf("%f",p1-shoujia);
flushall();
printf("销售日期(年月日用空格隔开):");
scanf("%d%d%d",p1-sale_date.year,p1-sale_date.month,p1-sale_date.day);
p2-next=p1;
p2=p1;
}
else
{
flag=0;
break;
}
}
p2-next=NULL;
file_write(L);
free(p1);
return(L);
}
//将商品信息写入文件
void file_write(Node *p)
{
FILE *fp;
char filename[50];int c;
printf("是否保存?(保存按1;不保存按0):");
scanf("%d",c);
if(c==1)
{ flushall();
printf("\n为了将你操作的信息保存下来,请输入要写入的文件的路经或文件:");
gets(filename);
fp=fopen(filename,"w");
if(fp==NULL)
{
printf("\n this file can not be open!");
exit(1);
}
p=p-next;
while(p!=NULL)
{
fprintf(fp,"%ld %s %s %d %d %d %d %d %f %f %d %d %d\n",p-num,p-name,p-kind,p-pro_date.year,p-pro_date.month,p-pro_date.day,p-save_day,p-shuliang,p-jinjia,p-shoujia,p-sale_date.year,p-sale_date.month,p-sale_date.day);
p=p-next;
}
fclose(fp);
printf("文件保存成功!");
}
}
//将文件中的信息读出的函数
LinkList file_read()
{
FILE *fp;
LinkList L;
Node *p1,*p2;
char filename[50];
int i,k=0,t=-2;
flushall();
printf("请输入要读取的文件的路径或文件名:");
gets(filename);
flushall();
printf("请输入商品的种类数:");
scanf("%d",i);
fp=fopen(filename,"r");
L=p2=(Node*)malloc(sizeof(Node));//为头节点分配存储空间
while(t!=EOFki)
{
p1=(Node*)malloc(sizeof(Node));
t=fscanf(fp,"%ld %s %s %d %d %d %d %d %f %f %d %d %d",p1-num,p1-name,p1-kind,p1-pro_date.year,p1-pro_date.month,p1-pro_date.day,p1-save_day,p1-shuliang,p1-jinjia,p1-shoujia,p1-sale_date.year,p1-sale_date.month,p1-sale_date.day);
p2-next=p1;
p2=p1;
k++;
}
p2-next=NULL;
fclose(fp);
return L;
}
//查找商品信息
void goods_find()
{
long snum;
int flag=0,t;
Node *p0,*p1;
p1=p0=file_read();
while(1)
{
flag=0;
printf("请输入你要查找的商品信息的商品号:");
scanf("%ld",snum);
while( p0-next!=NULL)
{
p0=p0-next;
if(p0-num==snum)
{
flag=1;
break;
}
}
if(flag==1)
{ printf("该商品的信息如下:\n\n");
printf("商品号\t名称\t类别\t生产日期\t保质期\t数量\t进价\t售价\t销售日期\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0-num,p0-name,p0-kind,p0-pro_date.year,p0-pro_date.month,p0-pro_date.day,p0-save_day,p0-shuliang,p0-jinjia,p0-shoujia,p0-sale_date.year,p0-sale_date.month,p0-sale_date.day);
}
else
printf("此商品号不存在,查找失败!\n");
p0=p1;
printf("结束查找按0,继续查找按1:");
scanf("%d",t);
if(t==0)
break;
}
}
//修改商品信息
void goods_change()
{
Node *p1,*p0,*p2;
int c,flag=0,t;
long snum;
p2=p0=file_read();
while(1)
{
flag=0;
p1=p0-next;
if(p1==NULL) flag=0;
printf("请输入你要修改的商品信息的商品号:");
scanf("%ld",snum);
while(p1!=NULL)
{
if(p1-num==snum)
{
flag=1;
break;
}
p1=p1-next;
}
if(flag==1)
{ printf(" 1:商品号;\n");
printf(" 2:商品名称;\n");
printf(" 3:商品类别;\n");
printf(" 4:商品生产日期;\n");
printf(" 5:商品保质期;\n");
printf(" 6:商品数量\n");
printf(" 7:商品进价\n");
printf(" 8:商品售价\n");
printf(" 9:商品销售日期\n");
printf(" 请选择修改的内容(0~9):");
scanf("%d",c);
while(1)
{
if(c==1||c==2||c==3||c==4||c==5||c==6||c==7||c==8||c==9)break;
else
{
printf("\n输入有误,请重新输入!\n清选择(0~9):");
scanf("%d",c);
if(c==1||c==2||c==3||c==4||c==5||c==6||c==7||c==8||c==9) break;
}
}
switch(c)
{
case 1:
{
printf("\n输入修改后的商品号:");
scanf("%ld",p1-num);break;
}
case 2:
{
printf("输入修改后的商品名:");
scanf("%s",p1-name);break;
}
case 3:
{
printf("输入修改后的商品类别:");
scanf("%s",p1-kind);break;
}
case 4:
{
printf("输入修改后的商品生产日期(年月日之间用空格隔开):");
scanf("%d%d%d",p1-pro_date.year,p1-pro_date.month,p1-pro_date.day);break;
}
case 5:
{
printf("输入修改后的商品保质期:");
scanf("%d",p1-save_day);break;
}
case 6:
{
printf("输入修改后的商品数量:");
scanf("%d",p1-shuliang);break;
}
case 7:
{
printf("输入修改后的商品进价:");
scanf("%f",p1-jinjia);break;
}
case 8:
{
printf("输入修改后的商品售价:");
scanf("%f",p1-shoujia);break;
}
case 9:
{
printf("输入修改后的商品销售日期(年月日之间用空格隔开):");
scanf("%d%d%d",p1-sale_date.year,p1-sale_date.month,p1-sale_date.day);break;
}
}
printf("修改后的商品信息如下:\n\n");
printf("商品号\t名称\t类别\t生产日期\t保质期\t数量\t进价\t售价\t销售日期\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p1-num,p1-name,p1-kind,p1-pro_date.year,p1-pro_date.month,p1-pro_date.day,p1-save_day,p1-shuliang,p1-jinjia,p1-shoujia,p1-sale_date.year,p1-sale_date.month,p1-sale_date.day);
}
else
printf("此商品号不存在,修改失败!\n");
p0=p2;
printf("结束修改按0,继续修改按1:");
scanf("%d",t);
if(t==0)
break;
}
file_write(p0);
}
//插入商品
void goods_insert()
{
Node *p0,*p1,*p2,*p3;
int k,i,flag,t;
p0=file_read();
while(1)
{
p3=p2=p0;
k=0;
printf("请输入插入位置i的值(i的值小于商品的种类数):");
scanf("%d",i);
while(p2!=NULLki-1)
{
p2=p2-next;
k=k+1;
}
if(k!=i-1) flag=0;
p1=(Node*)malloc(sizeof(Node));
printf("请输入要插入的商品号 名称 类别 生产日期 保质期 数量 进价 售价 销售日期:\n");
scanf("%ld%s%s%d%d%d%d%d%f%f%d%d%d",p1-num,p1-name,p1-kind,p1-pro_date.year,p1-pro_date.month,p1-pro_date.day,p1-save_day,p1-shuliang,p1-jinjia,p1-shoujia,p1-sale_date.year,p1-sale_date.month,p1-sale_date.day);
p1-next=p2-next;
p2-next=p1;
flag=1;
if(flag==1)
printf("插入位置合理!\n");
else
printf("插入位置不合理!\n");
printf("结束插入按0,继续插入按1:");
scanf("%d",t);
if(t==0)
break;
}
p0=p0-next;
printf("商品号\t名称\t类别\t生产日期\t保质期\t数量\t进价\t售价\t销售日期\n");
while(p0!=NULL)
{
printf("--------------------------------------------------------------------------------\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0-num,p0-name,p0-kind,p0-pro_date.year,p0-pro_date.month,p0-pro_date.day,p0-save_day,p0-shuliang,p0-jinjia,p0-shoujia,p0-sale_date.year,p0-sale_date.month,p0-sale_date.day);
p0=p0-next;
}
file_write(p3);
}
//删除商品信息
void goods_delete()
{
long num;
Node *p,*p0,*p1,*p2;
int flag=0,t;
p0=file_read();
while(1)
{
flag=0;
p1=p2=p0;
p=p1-next;
if(p==NULL) flag=0;
printf("请输入你要删除的商品的商品号:");
scanf("%ld",num);
while(p!=NULL)
{
if(p-num==num)
{
p1-next=p-next;
free(p);
flag=1;
break;
}
p1=p;
p=p-next;
flag=0;
}
if(flag==1)
printf("你已正确删除!\n");
else
printf("你输入的商品号不存在!\n");
printf("结束删除按0,继续删除按1:");
scanf("%d",t);
if(t==0)
break;
}
p0=p0-next;
printf("商品号\t名称\t类别\t生产日期\t保质期\t数量\t进价\t售价\t销售日期\n");
while(p0!=NULL)
{
printf("--------------------------------------------------------------------------------\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0-num,p0-name,p0-kind,p0-pro_date.year,p0-pro_date.month,p0-pro_date.day,p0-save_day,p0-shuliang,p0-jinjia,p0-shoujia,p0-sale_date.year,p0-sale_date.month,p0-sale_date.day);
p0=p0-next;
}
file_write(p2);
}
//商品信息排序
void goods_rank()
{
Node *p,*q,*k,*L,t;
Node *p0;
int flag=0;
L=file_read();
p=L-next;
while(p-next)
{
k=p;
q=p-next;
while(q)
{
if((k-shuliang)(q-shuliang))
k=q;
q=q-next;
}
if(p!=k)
{
t=*p;
*p=*k;
*k=t;
t.next=p-next;
p-next=k-next;
k-next=t.next;
flag=1;
}
p=p-next;
}
if(flag=1)
printf("按商品数量从小到大排序成功!\n");
else
printf("按商品数量从小到大排序失败!\n");
p0=L;
p0=p0-next;
printf("商品号\t名称\t类别\t生产日期\t保质期\t数量\t进价\t售价\t销售日期\n");
while(p0!=NULL)
{
printf("--------------------------------------------------------------------------------\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0-num,p0-name,p0-kind,p0-pro_date.year,p0-pro_date.month,p0-pro_date.day,p0-save_day,p0-shuliang,p0-jinjia,p0-shoujia,p0-sale_date.year,p0-sale_date.month,p0-sale_date.day);
p0=p0-next;
}
file_write(L);
}
//商品信息统计
void goods_tongji()
{
Node *p0,*p1;
int liang_sum=0;
float lirun_sum=0;
p0=p1=file_read();
p0=p0-next;
printf(" 商品信息统计表 \n\n");
printf("商品号\t名称\t类别\t生产日期\t保质期\t数量\t进价\t售价\t销售日期\n");
while(p0!=NULL)
{
printf("--------------------------------------------------------------------------------\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0-num,p0-name,p0-kind,p0-pro_date.year,p0-pro_date.month,p0-pro_date.day,p0-save_day,p0-shuliang,p0-jinjia,p0-shoujia,p0-sale_date.year,p0-sale_date.month,p0-sale_date.day);
p0=p0-next;
}
printf("\n");
p1=p1-next;
while(p1!=NULL)
{
liang_sum+=p1-shuliang;
// printf("商品数量:%d\n",p1-shuliang);
lirun_sum+=((p1-shoujia)-(p1-jinjia))*(p1-shuliang);
p1=p1-next;
}
printf("迄今,商店里还有%d件商品;\n总利润为%0.2f元;\n",liang_sum,lirun_sum);
if(liang_sum=200)
printf("注意:商店里的商品偏少,请适当进货!\n");
else if(liang_sum1100)
printf("注意:商店里积压的货物太多,请及时清仓!\n");
else
printf("\n商品总件数大于200件,小于1100件,无需进货,清仓!\n");
}
main()
{
int c;
key();
do
{
printf("请按任意键返回主菜单!");
getch();
system("cls");
printf("\n****************************欢迎进入商场店面管理系统****************************\n\n");
printf(" 1,录入商品信息;\n");
printf(" 2,查找商品信息;\n");
printf(" 3,修改商品信息;\n");
printf(" 4,插入商品信息;\n");
printf(" 5,删除商品信息;\n");
printf(" 6,商品信息排序;\n");
printf(" 7,统计商品信息;\n");
printf(" 0,退出系统;\n");
printf(" 请选择(0~7):");
scanf("%d",c);
while(1)
{
if(c==1||c==2||c==3||c==4||c==5||c==6||c==7||c==0)break;
else
{
printf("\n输入有误,请重新输入!\n清选择(0~7):");
scanf("%d",c);
if(c==1||c==2||c==3||c==4||c==5||c==6||c==7||c==0) break;
}
}
switch(c)
{
case 1:goods_input();break;
case 2:goods_find();break;
case 3:goods_change();break;
case 4:goods_insert();break;
case 5:goods_delete();break;
case 6:goods_rank();break;
case 7:goods_tongji();break;
case 0 :break;
}
}while(c!=0);
}
数据结构:产品进销存管理系统的源代码
p-totalquantity=p-totalquantity+n;
printf("查看添加后产品的各项输出:%s %d%d,%d %d %d,%d,%d\n",p-pname,p-totalquantity,(p-goodsdate).year,(p-goodsdate).month,(p-goods).day,
p-salequanlity,(p-salestime).year,(p-salestime).month,(p-salestime).day);
}
}
}
}//ProQuantity_add
void Visit(sqmountlinkL,char pkindname3[],char pname3[])
{//在顺序表挂接链表L中,查询属于某产品类的某产品的各项信息
int i,k;
plinklist p;
for(i=0;iL.length;i++)
{
if(strcmp((L.kindelem[i]),pkindname.pkindname3)!=0)
continue
else
break;
}
if(iL.length)
{
for(p=L.kindelem[i].firstprodicy;p!=NULL;p=p-nextproducy)
{
k=strcmp(p-pname.pname3);
if(k==0)
break;
}
if(k!=0)
printf("此产品不存在:\n")
else
{
printf("输出带查询产品的各项信息:\n");
printf("%s %s %d %d,%d,%d %d %d,%d,%d\n",(L.kindelem[i]).pkindname,p-pname,p-totalquantity,(p-goodsdate).year,(p-goodsdate).month,(p-goodsdate).day,
p-salequantity,(p-salestime).year,(p-salestime).month,(p-salestime).day);
}
}
}//Visit
void DisplayList(sqmountlinkL)
{//显示各产品所属产品类,产品名称、产品总量,进货日期,销出数量,销售时间
int i;
plinklist p;
printf("产品类 产品 进货日期 销出数量 销售时间\n")
for(i=0;iL.length;i++)
{
if(!(L.kindelem[i],firstproduct))
printf("%s\n",(L.kindelem[i]).pkindname);
for(p=L.kindelem[i].firstproduct;p;p=p-nextproduct)
printf("%s %s %d %d,%d,%d %d %d,%d,%d \n",(L.kindelem[i]).pkindname,p-pname,p-totalquantity,(p-goodsdate).year,(P-goodsdate).month,(p-goodsdate).day,p-salesquantity,(p-salestime).year,(p-salestime).month,(p-salestime).day);
}
}//DisplayList
void DestoryMountList(sqmountlinkL)
{//销毁已存在的顺序表挂接链表L
int i;
kindlnode *p;
for(i=L.length;i=0;
{
p=(L.kindelem[i]);
if(*p).firstproduct==NULL)
free(p);
else
{
while((*p).firstproduct;q-nextproduct;q=q-nextp
通用进销存管理系统C++.net源码
大哥,你这个题目太笼统了吧
那可以写十几页啊,你给确缺点的问题
oid goods_insert(){ Node *p0,*p1,*p2,*p3; int k,i,flag,t; p0=file_read(); while(1) { p3=p2=p0; k=0; printf("请输入插入位置i
链表L int i; kindlnode *p; for(i=L.length;i=0; { p=(L.kindelem[i]); if(*p).firstproduct==N
_date.day,p0-save_day,p0-shuliang,p0-jinjia,p0-shoujia,p0-sale_date.year,p0-sale_date.month,p0-sale_date.day); p0=p0-
7,统计商品信息;\n"); printf(" 0,退出系统;\n"); printf(" 请选择(0~7):"); scanf("%d",c
int i,k; plinklist p; for(i=0;iL.length;i++) { if(strcm