产品进销存管理系统课程设计报告.docx
- 文档编号:22785469
- 上传时间:2023-04-27
- 格式:DOCX
- 页数:14
- 大小:73.11KB
产品进销存管理系统课程设计报告.docx
《产品进销存管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《产品进销存管理系统课程设计报告.docx(14页珍藏版)》请在冰豆网上搜索。
产品进销存管理系统课程设计报告
一、设计任务――产品进销存管理系统
问题描述:
针对某一种行业的库房的产品进销存情况进行管理。
基本要求:
⑴采用一定的存储结构对库房的货品及其数量进行分类管理;
⑵可以进行产品类的添加、产品的添加、产品数量的添加;
⑶能够查询库房每种产品的总量、进货日期、销出数量、销售时间等。
二、功能需求分析
系统的功能主要有:
管理员操作:
进入系统后,管理员就可以对产品的进货,销售,存货等方面的信息有个详细的了解。
并且可以对产品的类,产品,产品的数量,产品销售信息进行管理,可以添加新的产品信息。
同时对库房每种产品的总量、进货日期、销出数量、销售时间等也可以有详细的了解。
三、功能算法设计
3.1各功能函数关系图
3.2详细算法设计
(1)头文件设计
添加相关头文件即可
(2)intCreate(sqlist&L);
创建数据库系统用于储存产品的相关信息,如每种产品的总量、进货日期、销出数量、销售时间等。
(3)intAdd(sqlist&L);
添加产品的相关信息,如产品类、产品、产品数量、进货日期、销出数量、销售时间等。
(4)voidView(sqlist&L);
查询产品相关信息,比如每种产品的总量、进货日期、销出数量、销售时间等。
(5)voidDisplay(sqlist&L);
对查询到的产品的一些相关信息进行打印输出,从而对我们所需要查的产品的具体情况一目了然。
(6)voidmenu_operation();
对菜单整体情况和布局进行显示,并显示出出它的各项功能:
添加功能,查询功能以及退出菜单。
(7)Voidmain();
编辑主函数,实现对各部分的分工和控制和执行作用。
四、代码实现
4.1重要代码
4.1.1相关头文件的编写以及结构体的建立
#include
#include
#include
#include
#defineok1
#defineerror0
#defineoverflow0
#defineSQMOUTLINK_INIT_SIZE100
#defineSQMOUTLINKINCREMENT10
typedefstructdate
{intyear;
intmonth;
intday;}date;
typedefstructproductnode
{charproduct_name[40];//产品名称
intproduct_quantity;//产品总量
intsales_quantity;//销售数量
intproduct_stock;//产品库存
datebuy_time;//进货日期
datesales_time;//销售日期
structproductnode*next;
}productnode,*plinklist;
typedefstructkindnode
{productnode*first_product;//头指针
charpkindname[40];//商品名称
intkind_number;//产品种类个数
}kindnode;
typedefstruct
{kindnode*kindelem;
intlength;
intlistsize;}sqlist;
4.1.2添加产品信息函数
intAdd(sqlist&L)
{plinklistp,q;intk,j,n;charpkindname[20];
printf("请输入添加产品所属的商品类:
\n");
scanf("%s",&pkindname);
for(k=0;k {if(strcmp((L.kindelem[k]).pkindname,pkindname)==0) { printf("请输入所要添加的产品类数量(个): \n");scanf("%d",&n); L.kindelem[k].kind_number=L.kindelem[k].kind_number+n; if(L.kindelem[k].first_product==NULL)//商品下没产品 {q=(plinklist)malloc(sizeof(productnode)); printf("请输入需添加产品的名称: \n"); scanf("%s",&(q->product_name)); printf("请输入产品总量: \n"); scanf("%d",&(q->product_quantity)); printf("请输入进货日期(年-月-日): \n");scanf("%d-%d-%d",&((q->buy_time).year),&((q->buy_time).month),&((q->buy_time).day)); printf("请输入销售数量: \n"); scanf("%d",&(q->sales_quantity)); printf("请输入销售时间(年-月-日): \n");scanf("%d-%d-%d",&((q->sales_time).year),&((q->sales_time).month),&((q->sales_time).day)); q->product_stock=(q->product_quantity)-(q->sales_quantity); q->next=NULL; L.kindelem[k].first_product=q; p=L.kindelem[k].first_product; for(j=1;j {q=(plinklist)malloc(sizeof(productnode)); printf("请输入需添加产品的名称: \n"); scanf("%s",&(q->product_name)); printf("请输入产品总量: \n"); scanf("%d",&(q->product_quantity)); printf("请输入进货日期(年-月-日): \n");scanf("%d-%d-%d",&((q->buy_time).year),&((q->buy_time).month),&((q->buy_time).day)); printf("请输入销售数量: \n"); scanf("%d",&(q->sales_quantity)); printf("请输入销售时间(年-月-日): \n");scanf("%d-%d-%d",&((q->sales_time).year),&((q->sales_time).month),&((q->sales_time).day)); q->product_stock=(q->product_quantity)-(q->sales_quantity); q->next=p->next;p->next=q;p=q; } } else//商品下有产品 { p=L.kindelem[k].first_product; for(j=0;j {q=(plinklist)malloc(sizeof(productnode)); printf("请输入需添加产品的名称: \n"); scanf("%s",&(q->product_name)); printf("请输入产品总量: \n"); scanf("%d",&(q->product_quantity)); printf("请输入进货日期(年-月-日): \n"); scanf("%d-%d-%d",&((q->buy_time).year),&((q->buy_time).month),&((q->buy_time).day)); printf("请输入销售数量: \n"); scanf("%d",&(q->sales_quantity)); printf("请输入销售时间(年-月-日): \n");scanf("%d-%d-%d",&((q->sales_time).year),&((q->sales_time).month),&((q->sales_time).day)); q->product_stock=(q->product_quantity)-(q->sales_quantity); for(p=L.kindelem[k].first_product;(p->next)! =NULL;p=p->next); q->next=p->next;p->next=q;p=q; } }break; } } if(k>=L.length)//没有该商品类 {strcpy(L.kindelem[k].pkindname,pkindname); L.length++; printf("请输入所要添加的产品类数量(个): \n");scanf("%d",&n); L.kindelem[k].kind_number=n; for(j=0;j {p=(plinklist)malloc(sizeof(productnode)); printf("请输入此产品类所含产品的产品名称: \n"); scanf("%s",&(p->product_name)); printf("请输入产品总量: \n"); scanf("%d",&(p->product_quantity)); printf("请输入产品的进货日期(年-月-日): \n"); scanf("%d-%d-%d",&((p->buy_time).year),&((p->buy_time).month),&((p->buy_time).day)); printf("请输入产品的销售数量: \n"); scanf("%d",&(p->sales_quantity)); printf("请输入产品的销售时间(年-月-日): \n"); scanf("%d-%d-%d",&((p->sales_time).year),&((p->sales_time).month),&((p->sales_time).day)); p->product_stock=(p->product_quantity)-(p->sales_quantity); L.kindelem[k].first_product=p;p->next=NULL; } }returnok; } 4.1.3查询产品信息函数 voidView(sqlist&L) {inti,k,order,flag=0; charpkindname[20],product_name[20]; plinklistp; printf("请输入待查询产品所商品类: \n"); scanf("%s",&pkindname); for(i=0;i {if(strcmp((L.kindelem[i]).pkindname,pkindname)==0)//找到商品 {intm=0; printf("输入待查询的产品: \n");scanf("%s",&product_name); for(p=L.kindelem[i].first_product;p! =NULL;p=p->next)//进行产品的匹配 {m++; if(strcmp(p->product_name,product_name)==0)//找到产品 { printf("查询选项: \n"); printf("\t1---进货日期\n"); printf("\t2---产品总量\n"); printf("\t3---销售数量\n"); printf("\t4---销售日期\n"); printf("\t5---产品库存\n"); printf("\t6---全部信息\n"); printf("\t0---返回\n"); loop: printf("请进行选择: (0-7)\n"); scanf("%d",&order); switch(order) {case1: printf("*进货日期\t"); printf("%d-%d-%d\n",(p->buy_time).year,(p->buy_time).month,(p->buy_time).day); printf("………………………………………\n");gotoloop; case2: printf("*产品总量\t"); printf("%d\n",p->product_quantity); printf("………………………………………\n");gotoloop; case3: printf("*销售数量\t"); printf("%d\n",p->sales_quantity); printf("………………………………………\n");gotoloop; case4: printf("*销售日期\t");printf("%d-%d-%d\n",(p->sales_time).year,(p->sales_time).month,(p->sales_time).day); printf("………………………………………\n");gotoloop; case5: printf("*产品库存\t"); printf("%d\n",p->product_stock); printf("………………………………………\n");gotoloop; case6: printf("*查询信息如下: \n"); printf("\t"); printf("产品的名称\t"); printf("%s\t",p->product_name); printf("进货日期\t"); printf("%d-%d-%d\n",(p->buy_time).year,(p->buy_time).month,(p->buy_time).day); printf("\t"); printf("产品总量\t"); printf("%d\t",p->product_quantity); printf("销售数量\t"); printf("%d\n",p->sales_quantity); printf("\t"); printf("销售日期\t"); printf("%d-%d-%d\n",(p->sales_time).year,(p->sales_time).month,(p->sales_time).day); printf("\t"); printf("产品库存\t"); printf("%d\t",p->product_stock);gotoloop; case0: system("cls");flag=1;break; default: printf("对不起,你输入有误! ");gotoloop;}break; } } 4.1.4主函数 voidmain() {intorder; sqlistL; Init(L); loop: menu_operation(); printf("………………………………………………\n"); scanf("%d",&order); switch(order) {case1: system("cls"); Add(L);gotoloop; case2: system("cls"); View(L);gotoloop; case0: exit(0); } } 4.2运行结果 4.2.1系统界面 4.2.2添加 4.2.3查询 4.2.4退出 五、调试分析 5.1存储结构的建立 认识邻接矩阵存储结构,经过不断地调试,成功完成图创建函数的编辑。 5.2定义查询功能 让用户更快的,更好的查询到产品的相关信息,在做到存储以后马上就能根据提示进行查询。 5.3功能缺失弥补 进行整体效果调试,减少一些运行时出现的问题和错误,使其功能效果更加完善。 六、课设总结 要做好一件事,只能一步一步的去做,不可能一下子就完成。 在程序的编写,实现上同样如此。 简单的几个功能,在真正实现、编写代码的过程却发现有很多的问题没有解决。 比如要存储哪些数据,用什么方式存储;用怎么样的结构去保存各种数据等。 并且在最后去演示系统的时候还出来很大的漏洞,不过后来经过修改,终于成功的完成了系统. 要做好一个系统,一个严谨的思维是不可以或缺的,每一个联系都要考虑,每个细节都需要注意,每一种错误都要会解决。 只有把每一种问题都解决了,才能做出一个完善的系统出来。 七、谢辞 本报告是在王英华老师的悉心指导和热情关怀下完成的,同时也感谢给予我帮助的各位同学。 八、参考文献 1、严蔚敏,吴伟民.数据结构(C语言版)[M].清华大学出版社2010.3 2、严蔚敏,吴伟民.数据结构(C语言版)[M].清华大学出版社1999.2 3、严蔚敏,吴伟民.数据结构(C语言版)[M].清华大学出版社2007.8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 产品 进销存 管理 系统 课程设计 报告