版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中北大学数据结构课程设计说明书学学生姓名:宋立群号:1021011803学院 :软件学院专业 :软件开发与测试题目 :产品进销存管理系统指导教师何志英.2011 年12月20日(一)设计任务概述针对某一种行业的库房的产品进销存情况进行管理。1、采用一定的存储结构对库房的货品及其数量进行分类管理;运用链表进行存储 ,同时用到指针变量 ,运用循环存储 ,对存储产品的信息要用到日期结构体和产品结构体,对存储要用到文件指针以及文件的一些方法的使用 。2、可以进行产品类的添加 、产品的添加 、产品数量的添加 ;首先要找到链表的指针变量,对指针变量进行修改,然后再进行产品的出入。3、能够查询库房每种产品的
2、总量、进货日期 、销出数量 、销售时间等 ;首先要定义一个查询函数,对产品类的指针变量进行循环查询,再对产品的指针变量进行循环查询,找到产品时 ,在调用显示产品信息函数,显示查询到的产品的各项信息 。(二)本设计所采用的数据运用链表进行存储 ,同时用到指针变量 ,循环存储(三)功能模块详细设计3.1 详细设计思想1、顺序表挂接链表的抽象定义类型:.专业专注.ADT sqmountlink数据对象 :D= ai|aikindlist,i=1,2, ,n,n=0 数据关系 :R= |ai-1,ai D,i=1,2,3,n基本操作 :InitMountLisr(&L)操作结果 :构造一个空的顺序表挂
3、接链表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 也存在操作结
4、果 :在顺序表挂接链表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 dateint year;int month;int day;date;/ 日期typedef struct prod
5、uctlnodechar pname30;/ 产品名称inttotalquantity;/ 产品总量date goodsdate;/ 进货日期intsalesquantity;/ 消除数量date salestime;/ 销售时间.专业专注.struct productlnode *nextproduct;productlnode,*plinklist;typedef struct kindlnodeproductlnode *firstproduct;char pkindname30;kindlnode;typedef structkindlnode *kindelem;int length
6、;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
7、+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;/KindInsert.专业专注.int ProductInsert(sqmountlink &L,char pkindname2,int n) /向顺序表挂接链表 L
8、 的某产品类中添加 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)
9、,&(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;elsefor(q=L.kindelemk.firstproduct; ;q=q-nextproduct)if(!(q-nextproduct)break;printf( 需添加产品的名称、总量 、进货日期 、销
10、售数量 、销售时间 :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 &
11、L,char pkindname1,char pname1,intn) / 添加顺序表挂接链表L 的某产品类中的某产品的总量,且需添加的产品总量为 nint i,k;plinklist p;for(i=0;iL.length;i+)if(strcmp(L.kindelemi).pkindname,pkindname1)!=0)continue;elsebreak;.专业专注.if(inextproduct)k=strcmp(p-pname,pname1);if(k=0)p-totalquantity=p-totalquantity+n;printf(查看添加后产品的各项输出: %s%d%d,%
12、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_addvoidProQuantity_subtract(sqmountlink&L,charpkindname4,charpname4,intn) / 添加顺序表挂接链表L 的某产品类中的某产品销出数量,且销出的数量 nint i,
13、k;plinklist p;for(i=0;iL.length;i+)if(strcmp(L.kindelemi).pkindname,pkindname4)!=0)continue;.专业专注.elsebreak;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
14、-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
15、;elsebreak;if(inextproduct)k=strcmp(p-pname,pname3);if(k=0)break;if(k!=0)printf( 此产品不存在 :n);elseprintf( 输出待查询产品的各项信息: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).da
16、y,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,
17、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(
18、 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( 需添加产品类的个
19、数 :);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( 输入需添加数量的产
20、品的名称: );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( 修改后的产品库存管理表:n);DisplayList(L);goto
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会计专业大一学期计划范文
- 乡镇文化站建成文艺晚会主持词
- 七夕节促销活动方案
- 范文新学期学习计划范文集锦十篇
- 个人工作总结(集锦14篇)
- 高等数学教程 上册 第4版 测试题 高数1-测试二
- 荒山租地合同协议书(2篇)
- 分段计费说课稿
- 南京工业大学浦江学院《汽车电气设备》2023-2024学年第一学期期末试卷
- 南京工业大学浦江学院《计算机设计》2022-2023学年期末试卷
- 信息技术教师专业发展
- 公职人员廉洁自律课件
- 建筑工程精细化管理培训讲解
- 学校领导测验题目和答案(经过打印)
- 风景园林专业职业生涯规划
- 食品安全员岗位的主要职责范本
- 《构成基础》课程习题及答案
- 中层干部考核测评表
- 钢琴专业的职业生涯规划书
- 《“要拿我当一挺机关枪使用”-纪念白求恩同志》
- 精美工业快速门施工方案
评论
0/150
提交评论