版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、算法与数据结构 文具店的货品管理系统的设计学院:信息工程学院班级:8888888学号:88888888姓名:浏览量磊磊落落指导老师:经济加加减减日期:2009年6月27日目录:一实验名称二问题描述三总体设计四流程图五源程序六结果表达七结果分析八收获体会九参考文献十评语一实验名称:文具店的货品管理系统二问题描述:在文具店的日常经营过程中,存在对各种文具管理问题。当库存文具不足或缺货时,需要进货。日常销售时,需要出库。当盘点货物时,需要查询货物信息。根据这些需要编写了此软件完成库存文具的管理功能。三总体设计: 通过对问题的抽象,文具信息和文具分类信息可以用表1和表2来表示。可见文具信息和文具分类信
2、息在逻辑上具有线性的关系,因此可以使用线性表来解决这个问题。由于文具信息变动较大,应该使用链式存储结构进行表示和实现。而文具分类信息变动不大,可使用顺序存储结构进行表示和实现。 表1 文具信息文具名称文具类别 文具数量jj钢笔 1 400lala日记本 2 1000pp计算器 3 150 表2 文具分类信息文具分类号 文具类别名 1文具 2 纸张 3 工具顺序表和链表的比较: 线性表除了可以用顺序存储结构来表示以外,还可以用链式存储结构来表示。链式存储结构与顺序存储结构不同的是:它不要求逻辑上相邻的数据元素在物理位置上也相邻,它通过指针来表示数据元素之间的逻辑关系。# 顺序表存储结构比较适合于
3、线性表的长度不经常发生变化,不经常进行插入和删除操作,经常进行存取和查询操作。# 链式存储结构比较适合于线性表的长度不可预知,需要频繁进行插入和删除操作。四流程图:开始mallocmain()createsortlist()createstocklist()querystock()addsort()addstock()removestock()文具是否存在出库库存修改数量插入删除修改数量dispstock()输出结果结束ynny五源程序:#include malloc.h#include stdio.h#include stdlib.h#include string.h#define list
4、size 100#define maxsize 50/*文具分类信息的结构*/typedef structint sortnumber; /*文具分类号*/char sortname10; /*文具分类名*/datatype,sorttype;typedef structsorttype itemsmaxsize;int length;sqlist;typedef sqlist sortlist; /*文具分类顺序表*/typedef structint sortnumber; /*文具分类号*/char stockname10; /*文具名称*/int amount; /*文具数量*/sto
5、cktype;/*单链表的结构节点定义*/typedef struct nodestocktype data;struct node *next;lnode,*pnode,*linklist; /*文具链表*/typedef linklist stocklist;/*串的定义*/#define strsize 100typedef structchar chstrsize;int length;sqstring;/*串比较*/int strcmp(sqstring s,sqstring t)int i;for( i = 0; i s.length & i next=null;return 1;
6、/*单链表的插入*/int insert(linklist h,int pos,stocktype x)pnode p=h,q;int i=0;while(p & inext;i+;if(!p | ipos-1)printf(插入位置不合法!n);return 0;q=(pnode)malloc(sizeof(lnode);if(!q)printf(不能生成新结点n);return 0;q-data=x;q-next=p-next;p-next=q;return 1;/*单链表的删除*/int delete(linklist h,int pos,stocktype *item)pnode p=
7、h,q;int i=0;while(p-next & inext;i+;if(!p-next | ipos-1)printf(删除位置不合法!n);return 0;q=p-next;p-next=q-next;*item=q-data;free(q);return 1;void destroy(linklist h)pnode p=h-next;while(h)p=h;h=h-next;free(p);/*顺序表的初始化*/int initlist_sq(sqlist *l)l - length = 0;return 1;/*顺序表的插入*/int listinsert_sq(sqlist
8、* l,int pos, datatype item)int i;if(l - length = listsize)printf();return 0;if(pos l - length +1)printf();return 0;for(i = l - length - 1; i = pos - 1; i -)l - itemsi + 1 = l - itemsi;l - itemspos - 1 = item;l - length +;return 1; /*初始化文具分类顺序表*/int createsortlist(sortlist *sl)int i,num=0;sorttype st
9、y; /*使用顺序表的initlist操作初始化顺序表*/ /*为了区别单链表的同名函数,把顺序表的initlist函数名改为initlist_sq*/initlist_sq(sl);printf(请输入文具类别总数:n);scanf(%d,&num);for(i=0;inum;i+)printf(请输入文具分类号:n);scanf(%d,&sty.sortnumber);printf(请输入文具分类名称:n);scanf(%s,&sty.sortname); /*使用顺序表的insert操作在顺序表中插入节点*/ /*为了区别单链表的同名函数,把顺序表的listinsert函数名改为inse
10、rt_sq*/listinsert_sq(sl,i+1,sty);printf(nok.n);return 1;/*初始化文具链表*/int createstocklist(stocklist *sl)int i,num=0;stocktype sty;/*使用单链表的initlist操作初始化单链表*/if(!initlist(sl)printf(创建错误n);return 0;printf(请输入文具总数:n);scanf(%d,&num);for(i=0;inext;printf(请输入文具分类号:n);scanf(%d,&sty.sortnumber);printf(请输入文具名称:n
11、);scanf(%s,&sty.stockname); printf(请输入文具数量:n);scanf(%d,&sty.amount); while(p) /*如果该文具存在,则修改其数量*/if(!strcmp(p-data.stockname,sty.stockname)p-data.amount+=sty.amount;break;p=p-next;pos+; /*如果该文具不存在,则插入到文具链表中*/if(!p) insert(sl,pos+1,sty);printf(nok.n);return 1;/*文具出库*/int removestock(stocklist sl)stock
12、type sty;pnode p=sl-next;int pos=0; printf(请输入文具名称:n); scanf(%s,&sty.stockname); printf(请输入出库数量:n); scanf(%d,&sty.amount); while(p&strcmp(p-data.stockname,sty.stockname)p=p-next;pos+; /*修改该文具的数量*/p-data.amount-=sty.amount;/*如果出库数量大于库存数量,则从链表中删除该文具*/if(p-data.amountnext;printf(请输入文具分类号:n);scanf(%d,&n
13、o);/*查询出所有该文具分类号的文具信息*/printf(nnumber stockname amountn);while(p)if(p-data.sortnumber=no)printf(%dt,p-data.sortnumber);printf(%st,p-data.stockname);printf(%dt,p-data.amount);printf(n);p=p-next;return 1;/*显示文具信息*/void dispstock(stocklist sl)pnode p=sl-next;printf(nnumber stockname amountn);while(p)pr
14、intf(%dt,p-data.sortnumber);printf(%st,p-data.stockname);printf(%dt,p-data.amount);printf(n);p=p-next;/*添加新文具类别*/int addsort(sortlist *l)sorttype st;printf(请输入文具分类号:n); scanf(%d,&st.sortnumber);printf(请输入文具分类名:n);scanf(%s,&st.sortname);if(!listinsert_sq(l,l-length+1,st)return 0;printf(nok.n);return
15、1;int main(int argc, char* argv)int choice;stocklist sl;sortlist l;doprintf(n 文具店货品管理系统 n);printf(n-主菜单-n);printf( (1)设置文具分类表 n);printf( (2)初始化文具表 n);printf( (3)文具入库 n);printf( (4)文具出库 n);printf( (5)查询文具信息 n);printf( (6)显示文具信息 n);printf( (7)添加新文具类别 n);printf( (0)退出系统 n); printf(n请选择(1,2,3,4,5,6,7,0)
16、:);scanf(%d,&choice);if(choice7)continue;switch(choice)case 1:createsortlist(&l);break; /*初始化文具分类顺序表*/case 2:createstocklist(&sl);break; /*初始化文具表*/case 3:addstock(sl);break; /*文具入库*/case 4:removestock(sl);break; /*文具出库*/case 5:querystock(sl);break; /*查询文具信息*/case 6:dispstock(sl);break; /*显示文具信息*/cas
17、e 7:addsort(&l);break; /*添加新文具类别*/case 0:exit(0); /*退出主程序*/default:break;while(1);return 0;六结果表达:(1) 设置文具分类表 图1(2)初始化文具店 图2显示文具信息 图3(3)文具入库 图4显示文具入库之后的文具信息 图5(4)文具出库 图 6显示文具出库之后的文具信息 图7(5)查询文具信息 图8(6) 显示文具信息(略)(7)添加新文具类别 图9七结果分析实验结果得到了预计的结果,没有出现错误,证明本程序结构严谨,逻辑正确,之后继续进行了多次同样的测试,也没有出现任何错误,说明本程序稳定性比较好,而且本程序运行速度较快,操作简单。八收获体会 本次课设我选择的课题为-文具店
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅游行业景点评级标准
- 手术中的电生理监测
- 自制礼物课件教学课件
- 河南省2024九年级语文上册第二单元8就英法联军远征中国致巴特勒上尉的信课件新人教版
- 慢病调理中心介绍
- 消防演练总结讲评
- 农业物联网导论
- 感恩课件英文教学课件
- 玉米灰斑病病害循环
- 气管切开烧伤病人的护理
- 农业肥料代理销售合同协议书
- 2024至2030年中国冲调饮料行业市场深度研究及投资规划建议报告
- 高考英语读后续写高分素材总结之动物描写句型清单
- 小型电站下游河道减脱水防治技术导则
- 锅炉和压力容器 第1部分:性能要求 征求意见稿
- 石油化工生产和危险化学品基础知识考试题库500题(含答案)
- 金属矿产资源开发利用方案编制提纲
- 供水服务满意度调查协议
- 《工程泥浆技术标准》
- 部编版语文二年级上册《口语交际 有趣的动物》(教案)
- 国家开放大学本科《纳税筹划》在线形考(形考任务一至五)试题及答案
评论
0/150
提交评论