产品进销存管理系统.docx
- 文档编号:27570626
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:46
- 大小:253.89KB
产品进销存管理系统.docx
《产品进销存管理系统.docx》由会员分享,可在线阅读,更多相关《产品进销存管理系统.docx(46页珍藏版)》请在冰豆网上搜索。
产品进销存管理系统
产品进销存管理系统
一、系统开发的背景
为了方便管理员对于仓库产品的销售和进货情况的了解,因此需要开发一个商品管理系统来帮助管理员查询仓库产品的情况,管理员就可以对产品的进货、销售、货存情况等信息有一个详细的了解。
二、系统分析与设计
(一)、系统功能要求
针对某一种行业的库房的产品进销存情况进行管理。
(1):
可以进行产品类的添加、产品的添加、产品数量的添加;
(2):
能够查询库房每种产品的总量、进货日期、销出数量、销售时间等;
(二)、系统模板设计
通过对系统功能的分析产品进销管理系统的功能如下图所示。
图1.产品进销管理系统功能图
通过上图的功能分析,把整个系统划分为六个模块:
1.产品信息存储,该模块主要实现:
创建数据库系统用于储存产品的相关信息,如每种产品的总量、进货日期、销出数量、销售时间等,借助函数Intcunchu(sqmountlink&L)来实现;
2.产品添加,该模块主要实现:
添加产品的相关信息,如产品类、产品、产品数量、进货日期、销出数量、销售时间等,借助函数:
voidproduct_leitianjia(sqmountlink&L,intn)product_leigeshutianjia(sqmountlink&L,charpkindname2[],intn)voidproduct_zongliangtianjia(sqmountlink&L,charpkindname1[],charpname1[],intn)voidxiaochushuliangtianjia(sqmountlink&L,charpkindname4[],charpname4[],intn)来实现;
3.产品查询,该模块主要实现:
查询产品相关信息,比如每种产品的总量、进货日期、销出数量、销售时间等,借助函数voidchaxun(sqmountlink&L,charpkindname3[],charpname3[])来实现;
4.产品的打印输出,该模块主要实现:
对查询到的产品的一些相关信息进行打印输出,借助函数voidxianshi(sqmountlink&L)来实现;
5.菜单显示模块,该模块主要实现:
对菜单整体情况和布局进行显示,并显示出出它的各项功能:
添加功能,查询功能以及退出菜单,借助函数voidcaidan_operation()来实现;
6.主函数控制,该模块主要实现:
对各部分的分工和控制和执行作用,借助函数voidmain()来实现;
三、系统的设计与实现
(一)产品信息存储:
Intcunchu(sqmountlink&L)
分析:
首先编写相关文件头建立结构体,然后用链表创建数据库系统用于储存产品的相关信息流程图如下图2所示。
图2.产品信息储存流程图
该模块的具体代码如下所示。
intcunchu(sqmountlink&L)//创建数据库系统用于储存产品的相关信息,如每种产品的总量、进货日期、销出数量、销售时间等
{//初始化一个空的顺序表挂接链表L
inti;
L.kindelem=(kindlnode*)malloc(SQMOUNTLINK_INIT_SIZE*sizeof(kindlnode));
if(!
L.kindelem)exit(overflow);
L.length=0;
L.listsize=SQMOUNTLINK_INIT_SIZE;
for(i=0;i { (L.kindelem[i]).firstproduct=NULL; } returnok; }//存储 intproduct_leitianjia(sqmountlink&L,intn) {//向顺序表挂接链表L中添加N类产品 inti; kindlnode*newbase; if(L.length+n>=L.listsize) { newbase=(kindlnode*)realloc(L.kindelem,(L.listsize+n)*sizeof(kindlnode)); if(! newbase)exit(overflow); L.kindelem=newbase; L.listsize+=n; } printf("需添加的产品类名称: \n"); for(i=0;i { scanf("%s",&L.kindelem[L.length].pkindname); L.kindelem[L.length].firstproduct=NULL; L.length++; } returnok; }//产品类添加 intproduct_leigeshutianjia(sqmountlink&L,charpkindname2[],intn) {//向顺序表挂接链表L的某产品类中添加N个产品 plinklistp,q; intk,j; for(k=0;k { if(strcmp((L.kindelem[k]).pkindname,pkindname2)! =0) continue; else break; } if(L.kindelem[k].firstproduct==NULL) { q=(plinklist)malloc(sizeof(productlnode)); printf("输入此产品类所含产品的产品名称: "); scanf("%s",&((*q).pname)); printf("输入此产品类所含产品的产品总量(个): "); scanf("%d",&((*q).total_quantity)); printf("输入此产品类所含产品的进货日期(年-月-日): "); scanf("%d,%d,%d",&(((*q).buy_date).year),&(((*q).buy_date).month),&(((*q).buy_date).day)); printf("输入此产品类所含产品的销数出量(个): "); scanf("%d",&((*q).sales_quantity)); printf("输入此产品类所含产品的销售时间(年-月-日): "); scanf("%d,%d,%d",&(((*q).sales_time).year),&(((*q).sales_time).month),&(((*q).sales_time).day)); (*q).nextproduct=NULL; (L.kindelem[k]).firstproduct=q; for(j=1;j { p=(plinklist)malloc(sizeof(productlnode)); printf("输入此产品类所含产品的产品名称: "); scanf("%s",&((*q).pname)); printf("输入此产品类所含产品的产品总量(个): "); scanf("%d",&((*q).total_quantity)); printf("输入此产品类所含产品的进货日期(年-月-日): "); scanf("%d,%d,%d",&(((*q).buy_date).year),&(((*q).buy_date).month),&(((*q).buy_date).day)); printf("输入此产品类所含产品的销数出量(个): "); scanf("%d",&((*q).sales_quantity)); printf("输入此产品类所含产品的销售时间(年-月-日): "); scanf("%d,%d,%d",&(((*q).sales_time).year),&(((*q).sales_time).month),&(((*q).sales_time).day)); (*p).nextproduct=(*q).nextproduct; (*q).nextproduct=p; q=p; } } else { for(q=L.kindelem[k].firstproduct;;q=(*q).nextproduct) { if(! ((*q).nextproduct)) break; } printf("需添加产品的名称、总量(个)、进货日期(年-月-日)、销出数量(个)、销售时间(年-月-日): \n"); for(j=0;j { p=(plinklist)malloc(sizeof(productlnode)); scanf("%s%d%d,%d,%d%d%d,%d,%d",&((*p).pname),&((*p).total_quantity),&(((*p).buy_date).year),&(((*p).buy_date).month),&(((*p).buy_date).day),&((*p).sales_quantity),&(((*p).sales_time).year),&(((*p).sales_time).month),&(((*p).sales_time).day)); (*p).nextproduct=(*q).nextproduct; (*q).nextproduct=p; q=p; } } returnok; }//产品类个数添加 voidproduct_zongliangtianjia(sqmountlink&L,charpkindname1[],charpname1[],intn)//添加产品的相关信息,如产品类、产品、产品数量、进货日期、销出数量、销售时间等。 {//添加顺序表挂接链表L的某产品类中的某产品的总量,且需添加的产品总量为n inti,k; plinklistp; for(i=0;i { if(strcmp((L.kindelem[i]).pkindname,pkindname1)! =0) continue; else break; } if(i { for(p=L.kindelem[i].firstproduct;p! =NULL;p=p->nextproduct) { k=strcmp(p->pname,pname1); if(k==0) { (*p).total_quantity=(*p).total_quantity+n; printf("查看添加后产品的各项输出: %s%d%d,%d,%d%d%d,%d,%d\n",(*p).pname,(*p).total_quantity,((*p).buy_date).year,((*p).buy_date).month,((*p).buy_date).day,(*p).sales_quantity,((*p).sales_time).year,((*p).sales_time).month,((*p).sales_time).day); } } } }//产品总量添加 voidxiaochushuliangtianjia(sqmountlink&L,charpkindname4[],charpname4[],intn) {//添加顺序表挂接链表L的某产品类中的某产品销出数量,且销出的数量n inti,k; plinklistp; for(i=0;i { if(strcmp((L.kindelem[i]).pkindname,pkindname4)! =0) continue; else break; } if(i { for(p=L.kindelem[i].firstproduct;p! =NULL;p=(*p).nextproduct) { k=strcmp((*p).pname,pname4); if(k==0) { (*p).sales_quantity=(*p).sales_quantity+n; printf("查看添加后产品的各项输出: %s%d%d,%d,%d%d%d,%d,%d\n",(*p).pname,(*p).total_quantity,((*p).buy_date).year,((*p).buy_date).month,((*p).buy_date).day,(*p).sales_quantity,((*p).sales_time).year,((*p).sales_time).month,((*p).sales_time).day); } } } }//ProQuantity_subtract voidchaxun(sqmountlink&L,charpkindname3[],charpname3[])//查询产品相关信息,比如每种产品的总量、进货日期、销出数量、销售时间等 {//在顺序表挂接链表L中,查询属于某产品类的某产品的各项信息 inti,k; plinklistp; for(i=0;i { if(strcmp((L.kindelem[i]).pkindname,pkindname3)! =0) continue; else break; } if(i { for(p=L.kindelem[i].firstproduct;p! =NULL;p=(*p).nextproduct) { 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).total_quantity,((*p).buy_date).year,((*p).buy_date).month,((*p).buy_date).day,(*p).sales_quantity,((*p).sales_time).year,((*p).sales_time).month,((*p).sales_time).day); } } (二)产品添加: voidproduct_leitianjia(sqmountlink&L,intn) 分析: 首先向链表中添加产品信息,产品的类、产品、产品数量、进货日期、销出数量、销出日期,然后输出。 流程图如下图3.所示。 图3.产品添加流程图 该模块的具体代码如下所示。 intproduct_leitianjia(sqmountlink&L,intn)//添加产品的相关信息,如产品类、产品、产品数量、进货日期、销出数量、销售时间等。 //添加顺序表挂接链表L的某产品类中的某产品的总量,且需添加的产品总量为n {//向顺序表挂接链表L中添加N类产品 inti; kindlnode*newbase; if(L.length+n>=L.listsize) { newbase=(kindlnode*)realloc(L.kindelem,(L.listsize+n)*sizeof(kindlnode)); if(! newbase)exit(overflow); L.kindelem=newbase; L.listsize+=n; } printf("需添加的产品类名称: \n"); for(i=0;i { scanf("%s",&L.kindelem[L.length].pkindname); L.kindelem[L.length].firstproduct=NULL; L.length++; } returnok; }//产品类添加 intproduct_leigeshutianjia(sqmountlink&L,charpkindname2[],intn) {//向顺序表挂接链表L的某产品类中添加N个产品 plinklistp,q; intk,j; for(k=0;k { if(strcmp((L.kindelem[k]).pkindname,pkindname2)! =0) continue; else break; } if(L.kindelem[k].firstproduct==NULL) { q=(plinklist)malloc(sizeof(productlnode)); printf("输入此产品类所含产品的产品名称: "); scanf("%s",&((*q).pname)); printf("输入此产品类所含产品的产品总量(个): "); scanf("%d",&((*q).total_quantity)); printf("输入此产品类所含产品的进货日期(年-月-日): "); scanf("%d,%d,%d",&(((*q).buy_date).year),&(((*q).buy_date).month),&(((*q).buy_date).day)); printf("输入此产品类所含产品的销数出量(个): "); scanf("%d",&((*q).sales_quantity)); printf("输入此产品类所含产品的销售时间(年-月-日): "); scanf("%d,%d,%d",&(((*q).sales_time).year),&(((*q).sales_time).month),&(((*q).sales_time).day)); (*q).nextproduct=NULL; (L.kindelem[k]).firstproduct=q; for(j=1;j { p=(plinklist)malloc(sizeof(productlnode)); printf("输入此产品类所含产品的产品名称: "); scanf("%s",&((*q).pname)); printf("输入此产品类所含产品的产品总量(个): "); scanf("%d",&((*q).total_quantity)); printf("输入此产品类所含产品的进货日期(年-月-日): "); scanf("%d,%d,%d",&(((*q).buy_date).year),&(((*q).buy_date).month),&(((*q).buy_date).day)); printf("输入此产品类所含产品的销数出量(个): "); scanf("%d",&((*q).sales_quantity)); printf("输入此产品类所含产品的销售时间(年-月-日): "); scanf("%d,%d,%d",&(((*q).sales_time).year),&(((*q).sales_time).month),&(((*q).sales_time).day)); (*p).nextproduct=(*q).nextproduct; (*q).nextproduct=p; q=p; } } else { for(q=L.kindelem[k].firstproduct;;q=q->nextproduct) { if(! ((*q).nextproduct)) break; } printf("需添加产品的名称、总量(个)、进货日期(年-月-日)、销出数量(个)、销售时间(年-月-日): \n"); for(j=0;j { p=(plinklist)malloc(sizeof(productlnode)); scanf("%s%d%d,%d,%d%d%d,%d,%d",&((*p).pname),&((*p).total_quantity),&(((*p).buy_date).year),&(((*p).buy_date).month),&(((*p).buy_date).day),&((*p).sales_quantity),&(((*p).sales_time).year),&(((*p).sales_time).month),&(((*p).sales_time).day)); (*p).nextproduct=(*q).nextproduct; (*q).nextproduct=p; q=p; } } returnok; }//产品类个数添加 voidproduct_zongliangtianjia(sqmountlink&L,charpkindname1[],charpname1[],intn)//添加产品的相关信息,如产品类、产品、产品数量、进货日期、销出数量、销售时间等。 {//添加顺序表挂接链表L的某产品类中的某产品的总量,且需添加的产品总量为n inti,k; plinklistp; for(i=0;i { if(strcmp((L.kindelem[i]).pkindname,pkindname1)! =0) continue; else break; } if(i { for(p=L.kindelem[i].firstproduct;p! =NULL;p=(*p).nextproduct) { k=strcmp((*p).pname,pname1); if(k==0) { (*p).total_quantity=(*p).total_quantity+n; printf("查看添加后产品的各项输出: %s%d%d,%d,%d%d%d,%d,%d\n",(*p).pname,(*p).total_quantity,(*p).buy_date).year,((*p).buy_date).month,((*p).buy_date).day,(*p).sales_quantity,((*p).sales_time).year,((*p).sales_time).month,((*p).sales_time).day); } } } }//产品总量添加 voidxiaochushuliangtianjia(sqmountlink&L,charpkindname4[],charpname4[],intn) {//添加顺序表挂接链表L的某产品类中的某产品销出数量,且销出的数量n inti,k; plinklistp; for(i=0;i { if(strcmp((L.kindelem[i]).pkindname,pkindname4)! =0) continue; else break; } if(i { for(p=L.kindelem[i].firstproduct;p! =N
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 产品 进销存 管理 系统