




免费预览已结束,剩余12页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中北大学数 据 结 构课 程 设 计 说 明 书学生姓名:宋立群学 号:1021011803学 院:软件学院专 业:软件开发与测试题 目:产品进销存管理系统指导教师何志英2011年12月20日(一)设计任务概述针对某一种行业的库房的产品进销存情况进行管理。1、采用一定的存储结构对库房的货品及其数量进行分类管理;运用链表进行存储,同时用到指针变量,运用循环存储,对存储产品的信息要用到日期结构体和产品结构体,对存储要用到文件指针以及文件的一些方法的使用。2、可以进行产品类的添加、产品的添加、产品数量的添加; 首先要找到链表的指针变量,对指针变量进行修改,然后再进行产品的出入。3、能够查询库房每种产品的总量、进货日期、销出数量、销售时间等; 首先要定义一个查询函数,对产品类的指针变量进行循环查询,再对产品的指针变量进行循环查询,找到产品时,在调用显示产品信息函数,显示查询到的产品的各项信息。(二)本设计所采用的数据运用链表进行存储,同时用到指针变量,循环存储(三)功能模块详细设计3.1详细设计思想1、顺序表挂接链表的抽象定义类型:ADT sqmountlink 数据对象:D=ai|aikindlist,i=1,2,n,n=0 数据关系:R=|ai-1,aiD,i=1,2,3,n 基本操作: InitMountLisr(&L) 操作结果:构造一个空的顺序表挂接链表L。 KindInsert(&L,n) 初始条件:顺序表挂接链表L已存在。 操作结果:向顺序表挂接链表L中添加N类产品ProductInsert(&L,I,n) 初始条件:顺序表挂接链表L已存在且要将产品插入的产品类i已存在 操作结果:向顺序表挂接链表L中的产品类i中添加N种产品ProQuantity_add(&L,I,e,n) 初始条件:顺序表挂接链表L已存在且需要添加的产品及产品所属的类也存在 操作结果:添加顺序表挂接链表L的产品类i中的产品e的数量Visit(&L,i,e) 初始条件:顺序表挂接链表L已存在且待查询的产品所属产品类i也存在 操作结果:在顺序表挂接链表L中查询产品e的各项信息DisplayList(&L) 初始条件:顺序表挂接链表L已存在 操作结果:现实顺序表挂接链表L的内容3.2核心代码#include#include#include#define ok 1#define error 0#define overflow 0#define SQMOUNTLINK_INIT_SIZE 100#define SQMOUNTLINKINCREMENT 10typedef struct date int year; int month; int day;date; /日期typedef struct productlnode char pname30; /产品名称 int totalquantity; /产品总量 date goodsdate; /进货日期 int salesquantity; /消除数量 date salestime; /销售时间 struct productlnode *nextproduct;productlnode,*plinklist;typedef struct kindlnode productlnode *firstproduct; char pkindname30;kindlnode;typedef struct kindlnode *kindelem; int length; int listsize;sqmountlink;int InitMountList(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) 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;in;i+) scanf(%s,&L.kindelemL.length.pkindname); L.kindelemL.length.firstproduct=NULL; L.length+; return ok;/KindInsertint ProductInsert(sqmountlink &L,char pkindname2,int n) /向顺序表挂接链表L的某产品类中添加N个产品 plinklist p,q; int k,j; for(k=0;kpname),&(q-totalquantity),&(q-goodsdate).year),&(q-goodsdate).month),&(q-goodsdate).day),&(q-salesquantity),&(q-salestime).year),&(q-salestime).month),&(q-salestime).day); q-nextproduct=NULL; (L.kindelemk).firstproduct=q; for(j=1;jpname),&(p-totalquantity),&(p-goodsdate).year),&(p-goodsdate).month),&(p-goodsdate).day),&(p-salesquantity),&(p-salestime).year),&(p-salestime).month),&(p-salestime).day); p-nextproduct=q-nextproduct; q-nextproduct=p; q=p; else for(q=L.kindelemk.firstproduct; ;q=q-nextproduct) if(!(q-nextproduct) break; printf(需添加产品的名称、总量、进货日期、销售数量、销售时间:n); for(j=0;jpname),&(p-totalquantity),&(p-goodsdate).year),&(p-goodsdate).month),&(p-goodsdate).day),&(p-salesquantity),&(p-salestime).year),&(p-salestime).month),&(p-salestime).day); p-nextproduct=q-nextproduct; q-nextproduct=p; q=p; return ok;/ProductInsertvoid ProQuantity_add(sqmountlink &L,char pkindname1,char pname1,int n) /添加顺序表挂接链表L的某产品类中的某产品的总量,且需添加的产品总量为n int i,k; plinklist p; for(i=0;iL.length;i+) if(strcmp(L.kindelemi).pkindname,pkindname1)!=0) continue; else break; if(inextproduct) k=strcmp(p-pname,pname1); if(k=0) p-totalquantity=p-totalquantity+n; printf(查看添加后产品的各项输出:%s %d %d,%d,%d %d %d,%d,%dn,p-pname,p-totalquantity,(p-goodsdate).year,(p-goodsdate).month,(p-goodsdate).day,p-salesquantity,(p-salestime).year,(p-salestime).month,(p-salestime).day); /ProQuantity_addvoid ProQuantity_subtract(sqmountlink &L,char pkindname4,char pname4,int n) /添加顺序表挂接链表L的某产品类中的某产品销出数量,且销出的数量n int i,k; plinklist p; for(i=0;iL.length;i+) if(strcmp(L.kindelemi).pkindname,pkindname4)!=0) continue; else break; if(inextproduct) k=strcmp(p-pname,pname4); if(k=0) p-salesquantity=p-salesquantity+n; printf(查看添加后产品的各项输出:%s %d %d,%d,%d %d %d,%d,%dn,p-pname,p-totalquantity,(p-goodsdate).year,(p-goodsdate).month,(p-goodsdate).day,p-salesquantity,(p-salestime).year,(p-salestime).month,(p-salestime).day); /ProQuantity_subtractvoid Visit(sqmountlink &L,char pkindname3,char pname3) /在顺序表挂接链表L中,查询属于某产品类的某产品的各项信息 int i,k; plinklist p; for(i=0;iL.length;i+) if(strcmp(L.kindelemi).pkindname,pkindname3)!=0) continue; else break; if(inextproduct) k=strcmp(p-pname,pname3); if(k=0) break; if(k!=0) printf(此产品不存在:n); else printf(输出待查询产品的各项信息:n); printf(产品类产 品产品总量进 货 日 期销售数量销 售 时 间n); printf(%s %s %d %d,%d,%d %d %d,%d,%dn,(L.kindelemi).pkindname,p-pname,p-totalquantity,(p-goodsdate).year,(p-goodsdate).month,(p-goodsdate).day,p-salesquantity,(p-salestime).year,(p-salestime).month,(p-salestime).day); /Visitvoid DisplayList(sqmountlink &L) /显示各产品所属产品类、产品名称、产品总量、进货日期、销售数量、销售时间 int i; plinklist p; printf(产品类产 品产品总量进 货 日 期销售数量销 售 时 间n); for(i=0;inextproduct) printf(%s %s %d %d,%d,%d %d %d,%d,%dn,(L.kindelemi).pkindname,p-pname,p-totalquantity,(p-goodsdate).year,(p-goodsdate).month,(p-goodsdate).day,p-salesquantity,(p-salestime).year,(p-salestime).month,(p-salestime).day); /DisplayListvoid menu_operation()/操作菜单 printf(n); printf(输入所要执行的操作:n); printf(1、产品类添加: n); printf(2、产品添加: n); printf(3、产品数量添加: n); printf(4、产品售出: n); printf(5、查询产品: n); printf(0、退出程序: n); printf(n);/mene_operation/*-主程序-*/void main(void) int order; int i,n; char a30; char b30; sqmountlink L; InitMountList(L); printf(输入时间时请按照“年,月,日”格式输入.n); loop: menu_operation(); printf(输入命令:); scanf(%d,&order); switch(order) case 1: printf(需添加产品类的个数:); scanf(%d,&i); KindInsert(L,i); printf(修改后的产品库存管理表:n); DisplayList(L); goto loop; case 2: printf(需添加产品所属产品类的名称:); scanf(%s,&a); printf(需向此产品类添加产品的个数:); scanf(%d,&i); ProductInsert(L,a,i); printf(修改后的产品库存管理表:n); DisplayList(L); goto loop; case 3: printf(输入需添加数量的产品所属产品类的名称:); scanf(%s,&a); printf(输入需添加数量的产品的名称:); scanf(%s,&b); printf(输入需添加产品的数量:); scanf(%d,&n); ProQuantity_add(L,a,b,n); printf(修改后的产品库存管理表:n); DisplayList(L); goto loop; case 4: printf(输入售出产品所属产品类的名称:); scanf(%s,&a); printf(输入售出产品的名称:); scanf(%s,&b); printf(输入售出产品的数量:); scanf(%d,&n); ProQuantity_subtract(L,a,b,n); printf(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 样貌特征测试题及答案
- 北京知识产权师培训班课件
- 2025年第一季度护理管理制度考核试题考题答案
- 营养专科护士培训考试题及答案
- 医院传染病防控知识培训考核试题(附答案)
- 护理导论知识练习测试题(含答案)
- 2024年上海市浦东新区高桥镇新益村社区工作人员考试模拟试题及答案
- 北京房屋测绘培训课件
- 2025年注册会计师重点试题带答案
- 标日课件第九课
- 茶叶加工工安全技术操作规程
- 2025年云南高考地理试题解读及答案详解讲评课件
- 江苏清泉化学股份有限公司年产4000吨呋喃、1000吨四氢呋喃丙烷、3000吨四氢呋喃技改项目环评资料环境影响
- 新型医药销售外包(CSO)行业跨境出海项目商业计划书
- 口腔诊室6S管理
- 2025-2030年中国外墙外保温系统行业市场现状供需分析及投资评估规划分析研究报告
- 文印员考试题库及答案
- 安全总监考试试题及答案
- XX学校(幼儿园)食堂管理各岗位廉政(廉洁)风险点及防控措施一览表
- 钢结构钢爬梯包工包料合同范本
- 家庭房屋财产协议书
评论
0/150
提交评论