版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖北第二师范学院课程设计报告课程名称:数据结构课程设计设计题目:商品货架管理系统系别:计算机科学系专业:软件工程组别:蔡桥利,阳乐,邱东明,郝耀峰学生姓名:--学号:--起止日期:2013年12月7日~2013年12月21日指导教师:宋婉娟教研室主任:
目录一、 课程设计目的 3二、 问题描述 3三、 需求分析 3四、 概要设计 3五、 详细设计 4六、 测试分析 7七、 使用说明 9八、 测试数据 10九、 源程序清单 10十、 模块说明 19
一.课程设计目的通过实习,了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。二.问题描述设计、实现一个商品货架管理系统,实现商品出售,增加,查询(按商品代号,商品名字,生产日期),修改,输出过期商品,输出小于多少数量的商品。三.需求分析printf("\t\t******************************************\n"); printf("\t\t-----------1.建立目前商品信息--------\n"); printf("\t\t-----------2.添加商品--------\n"); printf("\t\t-----------3.出售商品--------\n"); printf("\t\t-----------4.查询商品--------\n"); printf("\t\t-----------5.修改商品--------\n"); printf("\t\t-----------6.显示所有商品信息--------\n"); printf("\t\t-----------0.退出系统--------\n"); printf("\t\t******************************************\n\n"); 按序号依次实现功能。四.概要设计4.1系统用到的抽象数据类型定义:1、//定义结构体typedefstructnode{ intn;//商品代号 charname[20];//商品名称 intdate;//生产日期 intvalidity;//保质期(天) intnum;//商品数量 structnode*next; }LiStack,*sqstack;基本操作:五、详细设计//输出所有商品p的名字、生产日期、保质期。voidprint(sqstackp){ sqstackL=(LiStack*)malloc(sizeof(LiStack)); L=p->next; if else}//增加商品sqstackpush(LiStack*top){}//创建一个存放商品信息的栈sqstackcreat(){ }//出售商品sqstackpop(LiStack*top){ }//按序号查找商品voidSequenceNumberF(LiStack*top){ }//按商品名字查询商品voidNameF(LiStack*top){ }//按商品生产日期查找商品voidProductionDateF(LiStack*top){}//按商品数量查找商品,查找小于该数量的商品voidNumberF(LiStack*top){ }//date加validity,并返回date,到期时间。intDateF(intdate,intvalidity){}//查询过期商品信息voidOverdueF(LiStack*top){ }//查询商品voidfind(LiStack*top){ }//修改商品sqstackupdate(LiStack*top){}voidmain(){ LiStack*top; chari,j; top=(LiStack*)malloc(sizeof(LiStack)); top->next=NULL; printf("\n\n\t\t------------欢迎使用商品货架管理系统------------\n"); while(1){ printf("\t\t******************************************\n"); printf("\t\t-----------1.建立目前商品信息--------\n"); printf("\t\t-----------2.添加商品--------\n"); printf("\t\t-----------3.出售商品--------\n"); printf("\t\t-----------4.查询商品--------\n"); printf("\t\t-----------5.修改商品--------\n"); printf("\t\t-----------6.显示所有商品信息--------\n"); printf("\t\t-----------0.退出系统--------\n"); printf("\t\t******************************************\n\n"); printf("\t\t\t请输入您的操作:"); scanf("%s",&i); scanf("%c",&j); printf("\n\n"); if(i=='0'){ printf("\t\t\t退出成功,欢迎下次使用!\n"); break; }else{ switch(i) { case'1':top=creat();break; case'2':top=push(top);break; case'3':top=pop(top);break; case'4':find(top);break; case'5':top=update(top);break; case'6':print(top);break; default:printf("\t\t\t输入错误,请选择正确的功能\n"); } } } }六.测试分析按照附录中的测试数据,得出如下测试、分析结果:1、新建商品信息。a/b/c/d2、增加商品。f。3、出售商品代号3,商品名称c,50个。4、出售商品代号2,商品名称b,200个。5、查询,按序号查询,输入1.6、查询,按商品名称查询,输入b。7、查询,按生产日期查询,输入20131010.8、查询,输入小于数量200的商品。9、查询,输出20131226时过期的商品。10、修改商品。修改商品代号为4的商品。11、输出货架上的所有商品。12、退出系统。七.使用说明1、建立目前商品信息。输入1,‘-1’2、添加商品。输入2,依次输入商品代号、商品名称、生产日期、保质期、数量。3、出售商品。输入3,显示所有商品,选择要出售的商品代号、数量,如果出售的数量小于等于该商品有的数量则显示出售成功。否则显示出售失败。4、查询商品。输入4,选择1、2、3则按商品代号、名称、生产日期查询商品,选择4、5,则分别输出小于该数值的商品,输出过期商品。5、修改商品信息。输入5,输入修改商品代号,按照提示输入商品名称、生产日期,保质期,数量。6、输入所有商品信息。输入6,显示所有商品信息。7、退出系统。输入0,退出系统。八.测试数据
如,测分析六九.源程序清单#include<stdio.h>#include<stdlib.h>#include<string.h>//定义结构体typedefstructnode{ intn;//商品代号 charname[20];//商品名称 intdate;//生产日期 intvalidity;//保质期(天) intnum;//商品数量 structnode*next; }LiStack,*sqstack;//输出所有商品p的名字、生产日期、保质期。voidprint(sqstackp){ sqstackL=(LiStack*)malloc(sizeof(LiStack)); L=p->next; if(L==NULL) printf("货架为空。\n"); else { printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); while(L!=NULL) { printf("%d",L->n); printf("\t%s\t\t",L->name); printf("%d\t\t",L->date); printf("%d\t\t",L->validity); printf("%d\t\t\n",L->num); p=L; L=p->next; } printf("\t***************************************\n"); }}//增加商品sqstackpush(LiStack*top){ intvalidity,num,n; intdate; charname[20]; LiStack*temp=(LiStack*)malloc(sizeof(LiStack)); printf("\t\t\t-----欢迎进入商品添加界面!-----\n"); temp=(LiStack*)malloc(sizeof(LiStack)); printf("\t增加商品的代号是:"); scanf("%d",&n); printf("\t增加的商品名称是:"); scanf("%s",name); printf("\t生产日期(年月日,如:20131215:)是:"); scanf("%d",&date); printf("\t保质期(天)是:"); scanf("%d",&validity); printf("\t数量(个):"); scanf("%d",&num); temp->date=date;strcpy(temp->name,name); temp->num=num;temp->validity=validity; temp->n=n; if(top->next==NULL) { temp->next=NULL; top->next=temp; } else { temp->next=top->next; top->next=temp; } printf("\t商品添加成功!\n"); return(top);}//创建一个存放商品信息的栈sqstackcreat(){ intn,validity,num; charname[20]; intdate; LiStack*p; LiStack*top=(LiStack*)malloc(sizeof(LiStack));top->next=NULL; while(1) { printf("\t请输入商品代号(int),代号为'-1'表示输入结束:"); scanf("%d",&n); if(n<0)break; else { printf("\t请输入%d号——商品名称:",n); scanf("%s",name); printf("\t请输入%d号——生产日期(年月日,如20131215):",n); scanf("%d",&date); printf("\t请输入%d号——保质期(天):",n); scanf("%d",&validity); printf("\t请输入%d号——数量(个):",n); scanf("%d",&num); p=(LiStack*)malloc(sizeof(LiStack)); p->date=date; p->validity=validity; strcpy(p->name,name); p->num=num;p->n=n; if(top->next==NULL) { p->next=NULL; top->next=p; } else { p->next=top->next; top->next=p; } } } return(top);}//出售商品sqstackpop(LiStack*top){ intn,num; LiStack*p,*L; p=(LiStack*)malloc(sizeof(LiStack)); L=(LiStack*)malloc(sizeof(LiStack)); printf("\t\t\t-----欢迎进入商品出售界面!-----\n"); printf("\t----目前商品有:\n"); print(top); printf("出售的商品代号是:"); scanf("%d",&n); printf("出售的商品数量(个):"); scanf("%d",&num); p=top->next; if(top->next==NULL) { printf("货架为空,请先添加货物!\n"); } else { while(p->next!=NULL) { if(p->next->n==n) { if(p->next->num<num) {printf("出售商品数量小于原有数量,出售商品失败。");} else { if(p->next->num==num) { if(p->next->next==NULL) { p->next=NULL; printf("商品出售成功!"); free(L);break;} else { L=p->next; p->next=L->next; free(L); printf("商品出售成功!");break;} } else { p->next->num-=num; printf("商品出售成功!");break; } } } p=p->next; } if(p==NULL) printf("输入的商品序号有误,请重新操作。\n"); } return(top);}//按序号查找商品voidSequenceNumberF(LiStack*top){ intn,x=0; LiStack*p; p=(LiStack*)malloc(sizeof(LiStack)); printf("需要查询的商品代号是:"); scanf("%d",&n); p=top; while(p->next!=NULL) { if(p->next->n==n) { printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); x=1;break; } p=p->next; } if(x==0&&p->next==NULL) printf("\t没有您要查询的商品。\n"); printf("\t查询成功,欢迎再次使用查询系统.\n");}//按商品名字查询商品voidNameF(LiStack*top){ charname[20]; intx=0; LiStack*p; p=(LiStack*)malloc(sizeof(LiStack)); printf("需要查询的商品名称是:"); scanf("%s",name); p=top; while(p->next!=NULL) { if(strcmp(p->next->name,name)==0) { printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); x=1;break; } p=p->next; } if(x==0&&p->next==NULL) printf("\t没有您查询的商品。\n"); printf("\t查询成功,欢迎再次使用查询系统.\n");}//按商品生产日期查找商品voidProductionDateF(LiStack*top){ intx=0; intdate; LiStack*p; p=(LiStack*)malloc(sizeof(LiStack)); printf("需要查询的生产日期是:"); scanf("%d",&date); p=top; printf("需要查询的生产日期%d的商品有:\n",date); printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); while(p->next!=NULL) { if(date==p->next->date) { printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); x=1; }p=p->next; } if(x==0&&p->next==NULL) printf("\t没有商品的生产日期在%d之前商品。\n",date); printf("\t查询成功,欢迎再次使用查询系统.\n");}//按商品数量查找商品,查找小于该数量的商品voidNumberF(LiStack*top){ intnum,x=0; LiStack*p; p=(LiStack*)malloc(sizeof(LiStack)); printf("需要查询的商品数量是:"); scanf("%d",&num); p=top; printf("商品数量低于%d的商品有:\n",num); printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); while(p->next!=NULL) { if(p->next->num<=num) { printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); x=1; }p=p->next; } if(x==0&&p->next==NULL) printf("\t没有商品低于%d的商品。\n",num); printf("\t查询成功,欢迎再次使用查询系统.\n");}//date加validity,并返回date,到期时间。intDateF(intdate,intvalidity){ inti=0,j=0,k=0; intc=0; i=date/10000; j=(date-10000*i)/100; k=date-10000*i-100*j; k=k+validity; if(k>30) { c=k/30; k=k%30; } j=j+c; c=0; if(j>12) { c=j/12; j=j%12; } i=i+c; date=i*10000+j*100+k; return(date);}//查询过期商品信息voidOverdueF(LiStack*top){ intvalidity,x=0; LiStack*p; intdate,date2,date1; p=(LiStack*)malloc(sizeof(LiStack)); printf("请输入目前的日期是:"); scanf("%d",&date); p=top; printf("需要查询目前日期(%d)的过期的商品有:\n",date); while(p->next!=NULL) { validity=p->next->validity; date1=p->next->date; date2=DateF(date1,validity); if(date2<date) { printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); x=1; } p=p->next; }if(x==0&&p->next==NULL) printf("\t没有过期商品。\n"); printf("\t查询成功,欢迎再次使用查询系统.\n");}//查询商品voidfind(LiStack*top){ inti; printf("\t\t\t-----欢迎进入商品查询界面!-----\n"); printf("tips:\t【按商品代号查询输入1】\t【按名称查询输入2】\n"); printf("\t【按生产日期查询输入3】\t【按个数查询输入4】\n"); printf("\t【查询过期商品信息输入5】\n"); printf("输入按什么方式查询(1-5):"); scanf("%d",&i); switch(i) { case1:SequenceNumberF(top);break; case2:NameF(top);break; case3:ProductionDateF(top);break; case4:NumberF(top);break; case5:OverdueF(top);break; default:printf("\t\t\t输入查询方式错误。\n"); }}//修改商品sqstackupdate(LiStack*top){intn,validity,num,i,x; charname[20]; intdate; LiStack*p; p=(LiStack*)malloc(sizeof(LiStack)); printf("\t\t\t-----欢迎进入商品修改界面!-----\n"); printf("需要查询的商品代号是:"); scanf("%d",&i); p=top; while(p->next!=NULL) { if(p->next->n==i) { printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); printf("\t修改为:"); n=p->next->n; printf("\t请输入%d号——商品名称:",n); scanf("%s",name); printf("\t请输入%d号——生产日期(年月日,如20131215):",n); scanf("%d",&date); printf("\t请输入%d号——保质期(天):",n); scanf("%d",&validity); printf("\t请输入%d号——数量(个):",n); scanf("%d",&num); p->next->date=date; p->next->validity=validity; strcpy(p->next->name,name); p->next->num=num;p->next->n=n; x=1; } p=p->ne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水供应输排工保密强化考核试卷含答案
- 有色金属矿干燥工岗中实操考核试卷含答案
- 重金属煅烧工岗位可持续发展考核试卷含答案
- 金属打火机制作工安全技能测试强化考核试卷含答案
- 液化气体生产工安全理论水平考核试卷含答案
- 2026年会计资格考试试题及答案
- 和平乳业安心牧场品牌延伸策略研究
- 小学生英语学习中认知策略的调查和分析
- 关于采购管理规定(8篇)
- 大学生暑期工社会实践心得体会范文(30篇)
- 移植物抗宿主病课件
- 医药行业销售团队管理方案
- 测绘地理信息安全保密管理制度
- 工地试验室安全培训会议课件
- 2025人教版高一化学全册知识点归纳总结(复习资料)
- 电风扇清洗安装课件
- 核反应堆核级机械设备检修工职业技能鉴定经典试题含答案
- 智慧健康养老智能产品应用
- 口腔科诊疗中晕厥的预防与处置
- JJF1033-2023计量标准考核规范
- 《健康体适能》课件
评论
0/150
提交评论