目录一、系统开发的背景 (1)二、系统分析与设计 (1)(一)、系统功能要求 (1)(二)、系统模板设计 (1)三、系统的设计与实现 (2)(一)产品信息存储:I NT 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() (14)四、系统的测试 (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)测试退出函数 (18)五、总结 (19)六、附件(代码、部分图表) (19)(一)源代码 (19)(二)、部分图表 (19)产品进销存管理系统一、系统开发的背景为了方便管理员对于仓库产品的销售和进货情况的了解,因此需要开发一个商品管理系统来帮助管理员查询仓库产品的情况,管理员就可以对产品的进货、销售、货存情况等信息有一个详细的了解。
二、系统分析与设计(一)、系统功能要求针对某一种行业的库房的产品进销存情况进行管理。
(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(sqmou ntlink &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)//创建数据库系统用于储存产品的相关信息,如每种产品的总量、进货日期、销出数量、销售时间等{ //初始化一个空的顺序表挂接链表Lint 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;elsebreak;}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)//添加产品的相关信息,如产品类、产品、产品数量、进货日期、销出数量、销售时间等。