收藏 分销(赏)

产品进销存管理系统.doc

上传人:仙人****88 文档编号:8991644 上传时间:2025-03-10 格式:DOC 页数:29 大小:254.50KB
下载 相关 举报
产品进销存管理系统.doc_第1页
第1页 / 共29页
产品进销存管理系统.doc_第2页
第2页 / 共29页
点击查看更多>>
资源描述
目录 一、系统开发的背景 1 二、系统分析与设计 1 (一)、系统功能要求 1 (二)、系统模板设计 1 三、系统的设计与实现 2 (一)产品信息存储:Int cunchu(sqmountlink &L) 2 (二)产品添加:void product_leitianjia(sqmountlink &L,int n) 7 (三)、产品查询chaxun(sqmountlink &L,char pkindname3[],char pname3[]) 11 (四)、产品的打印输出void xianshi(sqmountlink &L) 13 (五)、菜单显示模块 void caidan_caozuo( ) 14 (六)、主函数控制 void main( ) 15 四、系统的测试 17 测试product_leitianjia(sqmountlink &L,int n)函数 17 测试product_tianjia(sqmountlink &L,char pkindname2[],int n)函数 18 测试chaxun(sqmountlink &L,char pkindname3[],char pname3[])函数 18 测试退出函数 19 五、总结 19 六、附件(代码、部分图表) 20 (一)源代码 20 (二)、部分图表 27 产品进销存管理系统 一、系统开发的背景 为了方便管理员对于仓库产品的销售和进货情况的了解,因此需要开发一个商品管理系统来帮助管理员查询仓库产品的情况,管理员就可以对产品的进货、销售、货存情况等信息有一个详细的了解。 二、系统分析与设计 (一)、系统功能要求 针对某一种行业的库房的产品进销存情况进行管理。 (1):可以进行产品类的添加、产品的添加、产品数量的添加;(2):能够查询库房每种产品的总量、进货日期、销出数量、销售时间等; (二)、系统模板设计 通过对系统功能的分析产品进销管理系统的功能如下图所示。 产品进销存管理系统 主函数控制模块 菜单显示模块 产品打印输出模块 产品查询管理模块 产品添加管理模块 产 品信息储存模块 图1.产品进销管理系统功能图 通过上图的功能分析,把整个系统划分为六个模块: 1.产品信息存储,该模块主要实现: 创建数据库系统用于储存产品的相关信息,如每种产品的总量、进货日期、销出数量、销售时间等,借助函数Int cunchu(sqmountlink &L)来实现; 2.产品添加, 该模块主要实现: 添加产品的相关信息,如产品类、产品、产品数量、进货日期、销出数量、销售时间等,借助函数:void product_leitianjia(sqmountlink&L,intn) product_leigeshutianjia(sqmountlink &L,char pkindname2[],int n) void product_zongliangtianjia(sqmountlink &L,charpkindname1[],charpname1[],intn)voidxiaochushuliangtianjia(sqmountlink &L,char pkindname4[],char pname4[],int n)来实现; 3.产品查询, 该模块主要实现: 查询产品相关信息,比如每种产品的总量、进货日期、销出数量、销售时间等,借助函数void chaxun(sqmountlink &L,char pkindname3[],char pname3[])来实现; 4.产品的打印输出, 该模块主要实现: 对查询到的产品的一些相关信息进行打印输出,借助函数void xianshi(sqmountlink &L)来实现; 5.菜单显示模块, 该模块主要实现: 对菜单整体情况和布局进行显示,并显示出出它的各项功能:添加功能,查询功能以及退出菜单, 借助函数void caidan_operation()来实现; 6. 主函数控制, 该模块主要实现: 对各部分的分工和控制和执行作用, 借助函数void main()来实现; 三、系统的设计与实现 (一)产品信息存储:Int cunchu(sqmountlink &L) 分析:首先编写相关文件头建立结构体,然后用链表创建数据库系统用于储存产品的相关信息流程图如下图2所示。 产品信息存储 向链表中添加产品信息 向链表中输入产品信息 输出产品信息 图2.产品信息储存流程图 该模块的具体代码如下所示。 int cunchu(sqmountlink &L)//创建数据库系统用于储存产品的相关信息,如每种产品的总量、进货日期、销出数量、销售时间等 { //初始化一个空的顺序表挂接链表L int i; 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.listsize;i++) { (L.kindelem[i]).firstproduct=NULL; } return ok; }//存储 int product_leitianjia(sqmountlink &L,int n) { //向顺序表挂接链表L中添加N类产品 int i; 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<n;i++) { scanf("%s",&L.kindelem[L.length].pkindname); L.kindelem[L.length].firstproduct=NULL; L.length++; } return ok; }//产品类添加 int product_leigeshutianjia(sqmountlink &L,char pkindname2[],int n) { //向顺序表挂接链表L的某产品类中添加N个产品 plinklist p,q; int k,j; for(k=0;k<L.length;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<n;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<n;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; } } return ok; }//产品类个数添加 void product_zongliangtianjia(sqmountlink &L,char pkindname1[],char pname1[],int n)//添加产品的相关信息,如产品类、产品、产品数量、进货日期、销出数量、销售时间等。 { //添加顺序表挂接链表L的某产品类中的某产品的总量,且需添加的产品总量为n int i,k; plinklist p; for(i=0;i<L.length;i++) { if(strcmp((L.kindelem[i]).pkindname,pkindname1)!=0) continue; else break; } if(i<L.length) { 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); } } } }//产品总量添加 void xiaochushuliangtianjia(sqmountlink &L,char pkindname4[],char pname4[],int n) { //添加顺序表挂接链表L的某产品类中的某产品销出数量,且销出的数量n int i,k; plinklist p; for(i=0;i<L.length;i++) { if(strcmp((L.kindelem[i]).pkindname,pkindname4)!=0) continue; else break; } if(i<L.length) { 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 void chaxun(sqmountlink &L,char pkindname3[],char pname3[])//查询产品相关信息,比如每种产品的总量、进货日期、销出数量、销售时间等 { //在顺序表挂接链表L中,查询属于某产品类的某产品的各项信息 int i,k; plinklist p; for(i=0;i<L.length;i++) { if(strcmp((L.kindelem[i]).pkindname,pkindname3)!=0) continue; else break; } if(i<L.length) { 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); } } (二)产品添加:void product_leitianjia(sqmountlink &L,int n) 分析:首先向链表中添加产品信息,产品的类、产品、产品数量、进货日期、销出数量、销出日期,然后输出。流程图如下图3.所示。 产品的添加 产品类 产品名称 产品总量 进货日期 销出数量 销售时间 输 出 图3.产品添加流程图 该模块的具体代码如下所示。 int product_leitianjia(sqmountlink &L,int n) //添加产品的相关信息,如产品类、产品、产品数量、进货日期、销出数量、销售时间等。 //添加顺序表挂接链表L的某产品类中的某产品的总量,且需添加的产品总量为n { //向顺序表挂接链表L中添加N类产品 int i; 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<n;i++) { scanf("%s",&L.kindelem[L.length].pkindname); L.kindelem[L.length].firstproduct=NULL; L.length++; } return ok; }//产品类添加 int product_leigeshutianjia(sqmountlink &L,char pkindname2[],int n) { //向顺序表挂接链表L的某产品类中添加N个产品 plinklist p,q; int k,j; for(k=0;k<L.length;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<n;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<n;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; } } return ok; }//产品类个数添加 void product_zongliangtianjia(sqmountlink &L,char pkindname1[],char pname1[],int n)//添加产品的相关信息,如产品类、产品、产品数量、进货日期、销出数量、销售时间等。 { //添加顺序表挂接链表L的某产品类中的某产品的总量,且需添加的产品总量为n int i,k; plinklist p; for(i=0;i<L.length;i++) { if(strcmp((L.kindelem[i]).pkindname,pkindname1)!=0) continue; else break; } if(i<L.length) { 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); } } } }//产品总量添加 void xiaochushuliangtianjia(sqmountlink &L,char pkindname4[],char pname4[],int n) { //添加顺序表挂接链表L的某产品类中的某产品销出数量,且销出的数量n int i,k; plinklist p; for(i=0;i<L.length;i++) { if(strcmp((L.kindelem[i]).pkindname,pkindname4)!=0) continue; else break; } if(i<L.length) { 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); } } } (三)、产品查询chaxun(sqmountlink &L,char pkindname3[],char pname3[]) 分析:查询产品相关信息,比如每种产品的总量、进货日期、销出数量、销售时间等流程图如下图4.所示。 k=strcmp(p->pname,pname3); if(k==0) break yes NO if(k!=0) Yes Else 此产品不存在 此产品信息 图4. 产品查询流程图 该模块的代码如下所示 void chaxun(sqmountlink &L,char pkindname3[],char pname3[])//查询产品相关信息,比如每种产品的总量、进货日期、销出数量、销售时间等 { //在顺序表挂接链表L中,查询属于某产品类的某产品的各项信息 int i,k; plinklist p; for(i=0;i<L.length;i++) { if(strcmp((L.kindelem[i]).pkindname,pkindname3)!=0) continue; else break; } if(i<L.length) { 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); } } }//查询 (四)、产品的打印输出void xianshi(sqmountlink &L) 分析:先查询产品的信息然后对查询到的产品的一些相关信息进行打印输出,从而对我们所需要查的产品的具体情况一目了然,流程图如下图5.所示。 if(!(L.kindelem[i].firstproduct)) 输出产品类名 for(p=L.kindelem[i].firstproduct;p;p=p->nextproduct) 产品类、产品、产品总量(个)、进货日期(年-月-日)、销出数量(个)、销售时间(年-月-日) 图5. 产品的打印输出流程图 该模块代码如下所示 void xianshi(sqmountlink &L)//对查询到的产品的一些相关信息进行打印输出 { //显示各产品所属产品类、产品名称、产品总量、进货日期、销出数量、销售时间 int i; plinklist p; printf("产品类、产品、产品总量(个)、进货日期(年-月-日)、销出数量(个)、销售时间(年-月-日)\n"); for(i=0;i<L.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->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); } }//打印 (五)、菜单显示模块 void caidan_caozuo( ) 分析:先对菜单整体情况进行布局,然后对情况和布局进行显示,并显示出出它的各项功能:添加功能,查询功能以及退出菜单,流程图如下图6.所示。 操作菜单 6.退出程序 5.查询产品 4.产品售出 3.产品数量添加 2.产品添加 1.产品类的添加 图6. 菜单显示模块流程图 该模块代码如下所示 void caidan_caozuo()//对菜单整体情况和布局进行显示,并显示出出它的各项功能:添加功能,查询功能以及退出菜单 {//操作菜单 printf(" 欢迎使用产品进销管理系统 \n"); printf(" -------------------------------\n"); printf(" 操作菜单 \n"); printf("--------------------------------\n"); printf(" ************************** \n"); printf(" *........................* \n"); printf(" *输入所要执行的操作: * \n"); printf(" *1、产品类添加: * \n"); printf(" *2、产品添加: * \n"); printf(" *3、产品数量添加: * \n"); printf(" *4、产品售出: * \n"); printf(" *5、查询产品: * \n"); printf(" *6、退出程序: * \n"); printf(" *........................* \n"); printf(" ************************** \n"); printf("--------------------------------\n"); }//菜单(六)、主函数控制 void main( ) 分析:编辑主函数,实现对各部分的分工和控制和执行作用,流程图如下图7所示。 order 输出 需添加产品类的个数 退出程序 输出 待查询产品所属产品类的名称 输出 需添加产品所属产品类的名称、产品名称、数量 输出 需添加产品所属产品类的名称、个数 1 2 3 4 5 结束 图7. 主函数控制模块流程图 该模块代码如下所示 void main()//编辑主函数,实现对各部分的分工和控制和执行作用 { int order; int i,n; char a[30]; char b[30]; sqmountlink L; cunchu(L); loop: caidan_caozuo(); printf("输入命令:"); scanf("%d",&order); switch(order) { case 1: printf("需添加产品类的个数:"); scanf("%d",&i); product_leitianjia(L,i); printf("修改后的产品库存管理表:\n"); xianshi(L); goto loop; break; case 2: printf("需添加产品所属产品类的名称:"); scanf("%s",&a); printf("需向此产品类添加产品的个数:"); scanf("%d",&i); product_leigeshutianjia(L,a,i); printf("修改后的产品库存管理表:\n"); xianshi(L); goto loop; break; case 3: printf("输入需添加数量的产品所属产品类的名称:"); scanf("%s",&a); printf("输入需添加数量的产品的名称:"); scanf("%s",&b); printf("输入需添加产品的数量:"); scanf("%d",&n); product_zongliangtianjia(L,a,b,n); printf("修改后的产品库
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服