1浙江农林大学程序设计综合实习报告设计题目:商店管理系统专业电子信息类班级095姓名陈晓艳学号200905070507起止时间2010.7.5-2010.7.102009~2010学年第三学期2目录第一章需求分析·································3第二章概要设计·································3第三章详细分析·································4第四章运行结果分析··························11第五章参考文献································173一、需求分析在日常生活中,商店里所存商品成千上万,若没有一个方便快捷的系统来对商品进行有效的管理,我们就会花费很多的人力物力和时间。《商店管理系统》这一课题,是通过运用数据结构知识中线性表的存储结构和查找,插入,删除等基本运算,来实现对商店的商品简单管理,完成对商品的添加,进货,卖出,查看,删除等基本操作。同时,通过对这个课题的完成,让大家更好地理解与运用所学知识,提高动手能力,提高编程能力和专业水平,更加增强了同学间的合作组织能力。二、概要设计1、抽象数据类型定义因程序中有大量的插入、删除,所以用线性表的链表存储结构来实现,ADTList{数据对象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0}数据关系:R1={ai-1,ai|ai-1,ai∈D,i=2,…,n}}2、主程序voidmain(){switch(){Case1:Case2:Case3:……}}3、程序模块:该程序有九个模块:主函数、链表存储结构、添加新商品函数、添加已有商品数量函数、查询商品函数、删除商品函数、卖出商品函数、查看库存函数,页面函数4三、详细分析1、存储结构typedefstruct{charname[25];//商品名称intmount;//商品数量floatprice;//商品单价longdata;//入库日期longnum;//商品编码}goods;typedefstructnode{goodsdata;structnode*next;}LNode,*LinkList;2、主函数voidmain(){intkey;LinkListH;H=Creat_LinkList();strcpy(H-data.name,computer);H-data.data=20100609;H-data.mount=1000;H-data.num=1;H-data.price=20000;H-next=NULL;LinkListL;L=Creat_LinkList();strcpy(L-data.name,car);L-data.data=20100609;L-data.mount=1000;L-data.num=2;L-data.price=20000;L-next=NULL;H-next=L;while(1){pri();scanf(%d,&key);switch(key){5case0:exit(0);case1:Insert_LinkList(H);break;case2:add_LinkList(H);break;case3:Search(H);break;case4:H=Del_LinkList(H);break;case5:Sell(H);break;case6:Find(H);break;}}}3.、查找函数voidSearch(LinkListH)//查找商品{intn;LinkListp;longnum;charname[25];p=H;printf(请选择:\n);printf(1、按商品名称查询\n);printf(2、按商品编码查询\n);printf(0、退出\n);scanf(%d,&n);switch(n){case0:exit(0);case1:printf(请输入需要查找的商品名称:\n);scanf(%s,name);while(p){6if(!strcmp(p-data.name,name)){printf(查找成功!\n);printf(商品名称%s\n商品数量%d\n商品单价%f\n入库日期%ld\n商品编码%ld\n,p-data.name,p-data.mount,p-data.price,p-data.data,p-data.num);break;}elsep=p-next;}if(!p){printf(查找失败,库中不存在此商品!\n);}break;case2:printf(请输入需要查找的商品编码:\n);scanf(%ld,&num);while(p){if(p-data.num==num){printf(查找成功!\n);printf(商品名称%s\n商品数量%d\n商品单价%f\n入库日期%ld\n商品编码%ld\n,p-data.name,p-data.mount,p-data.price,p-data.data,p-data.num);break;}elsep=p-next;}if(!p)printf(查找失败,库中不存在此商品!\n);break;}}4、添加商品数量函数voidadd_LinkList(LinkListH){LinkListp;longnum,m;intkey;7p=H;while(key){printf(请输入商品编码:\n);scanf(%ld,&num);while(p)//在库中查找{if(p-data.num==num)break;elsep=p-next;}if(p)//查到商品{printf(请输入添加的商品数量:\n);scanf(%d,&m);p-data.mount+=m;printf(现在库存此商品%d件\n,p-data.mount);}elseprintf(库中没有该商品!\n);printf(1.继续添加0.退出\n);scanf(%d,&key);}}5、添加新商品函数intInsert_LinkList(LinkListH){LinkListp,q;intkey=1,amount;longanum,adata;charaname[25];floataprice;while(key){p=H;q=(LinkList)malloc(sizeof(LNode));if(!q){printf(申请空间失败\n);return0;}else8{printf(输入商品名称:\n);scanf(%s,aname);printf(输入商品数量:\n);scanf(%d,&amount);printf(输入商品单价:\n);scanf(%f,&aprice);printf(输入商品入库日期:\n);scanf(%ld,&adata);printf(输入商品编码:\n);scanf(%ld,&anum);}//把新商品信息赋给新结点strcpy(q-data.name,aname);q-data.data=adata;q-data.mount=amount;q-data.num=anum;q-data.price=aprice;//修改指针q-next=p-next;p-next=q;printf(新商品添加成功!\n);printf(1.继续添加商品0.退出\n);scanf(%d,&key);}return1;}6、删除商品函数LinkListDel_LinkList(LinkListH){LinkListp,q;intkey=1;longnum;while(key){printf(请输入需要删除的商品编号:\n);scanf(%ld,&num);p=H;q=p;p=p-next;while(p){9if(p-data.num==num){q-next=p-next;free(p);printf(删除成功!\n);break;}else{q=p;p=p-next;}}if(p==NULL)printf(没有你要删除的商品!\n);printf(1.继续删除0.退出\n);scanf(%d,&key);}returnH;}7、卖出商品函数voidSell(LinkListH){LinkListp;longnum,m;intkey;p=H;while(key){printf(请输入商品编码:\n);scanf(%ld,&num);while(p)//在库中查找{if(p-data.num==num)break;elsep=p-next;}if(p)//查到商品{printf(请输入卖出的商品数量:\n);scanf(%d,&m);if(p-data.mount=m)//库中商品数量够出售10{p-data.mount-=m;printf(此商品库中还有%d件\n,p-data.mount);}elseprintf(库中该商品存货不足!\n);}elseprintf(库中没有该商品!\n);printf(1.继续卖出0.退出\n);scanf(%d,&key);}}8、查看库存函数voidFind(LinkListH){LinkListp;p=H;printf(商品名称商品数量商品价格入库日期商品编码\n);while(p){printf(%20s%10d%10.2f%10ld%10ld\n,p-data.name,p-data.mount,p-data.price,p-data.data,p-data.num);p=p-next;}}9、页面函数voidpri(){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(|0、退出|\n);printf(===================================\n);printf(请输入功能选项:);11}四、运行结果分析运行后,进入主界面添加新商品输入1,进入后,按提示输入新商品各项信息后,显示新商品添加成功继续添加按1,退出按0返回主界面12添加已有商品输入2,输入需添加的商品编码和数量,添加成功后,会显示该商品现有数量继续添加按1,退出按0返回主界面查询商品信息输入3按商品名称查询输入1,按商品编码查询输入2,退出输入013然后分别按提示输入商品信息,查找成功后,显示出该商品相应的信息返回主界面若所查商品不存在,显示查找失败卖出商品输入5,输入要卖的商品的编码和数量成功后,显示该商品剩余数量按1继续卖出,按0退出14若所卖商品库中没有,显示库中没有该商品若卖出的商品数大于库存数,存货全部卖出,并提示存货不足15查看库存输入6,屏幕显示出所有商品的各项信息然后返回主界面删除商品信息输入4,输入要删除的商品的编码显示删除成功继续删除按1,退出按016若需要删除的商品库中没有,显示没有要删除的商品退出主界面输入0,系统运行结束17五、参考文献1.严蔚敏吴伟民数据结构(C语言版)清华大学出版社2.《数据结构题集》严蔚敏清华大学出版社3.徐孝凯数据结构课程实验清华大学出版社4.《数据结构、算法与应用》SartajSahni械工业出版社5.杨路明C语言程序设计教程北京邮电大学出版社