版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法与数据结构 文具店的货品管理系统的设计学院:信息工程学院班级:8888888学号:学888888姓名:浏览吊磊磊落落指导老师:经济加加减减日期:2009年6月27日目录:一.实验名称二.问题描述三.总体设计四.流程图五.源程序六.结果表达七.结果分析八.收获体会九.参考文献十.评语实验名称:文具店的货品管理系统.问题描述:在文具店的日常经营过程中,存在对各种文具管理问题。当库存文具不足或缺货时,需要进货。日常销售时,需要出库。当盘点货物时,需要查询货物信息。根据这些需要编写了此软件完成库存文具的管理功能。.总体设计:通过对问题的抽象,文具信息和文具分类信息可以用表 1和表2来表示。可见文具信息和文具分类信息在逻辑上具有线性的关系, 因此可以使用线性表来解决这个问题。 由于文具信息变动较大,应该使用链式存储结构进行表示和实现。 而文具分类信息变动不大,可使用顺序存储结构进行表示和实现。表1 文具信息文具名称文具类别文具数量jj钢笔1400lala日t己本21000pp计算器3150表2 文具分类信息文具分类号文具类别名1文具2纸张3工具顺序表和链表的比较:线性表除了可以用顺序存储结构来表示以外, 还可以用链式存储结构来表示。链式存储结构与顺序存储结构不同的是: 它不要求逻辑上相邻的数据元素在物理位置上也相邻,它通过指针来表示数据元素之间的逻辑关系。#顺序表存储结构比较适合于线性表的长度不经常发生变化, 不经常进行插入和删除操作,经常进行存取和查询操作。#链式存储结构比较适合于线性表的长度不可预知,需要频繁进行插入和删除操作。
开始五.源程序:#include"malloc.h#include"stdio.h"#include"stdlib.h"#include"string.h"#defineLISTSIZE100#defineMAXSIZE50TOC\o"1-5"\h\z/*文具分类信息的结构 */typedefstruct{intSortNumber; /*文具分类号 */charSortName[10]; /*文具分类名 */}DataType,SortType;typedefstruct{SortTypeitems[MAXSIZE];intlength;}SqList;typedefSqListSortList; /*文具分类顺序表 */typedefstruct{/*文具分类号 /*文具分类号 *//*文具名称 *//*文具数量 */charStockName[10];intamount;}StockType;/*单链表的结构节点定义 */typedefstructNode{StockTypedata;structNode*next;}LNode,*PNode,*LinkList;/*文具链表 */typedefLinkListStockList;/*串的定义 */#defineSTRSIZE100typedefstruct{charch[STRSIZE];intlength;}SqString;/*串比较*/intstrcmp(SqStringS,SqStringT){inti;for(i=0;i<S.length&&i<T.length;i++)if(S.ch[i]!=T.ch[i])return(S.ch[i]-T.ch[i]);return(S.length-T.length);}/*单链表的初始化 */intInitList(LinkList*h){*h=(LinkList)malloc(sizeof(LNode));if(!h){printf("初始化链表错误! \n");return0;}(*h)->next=NULL;return1;}/*单链表的插入 */intInsert(LinkListh,intpos,StockTypex){PNodep=h,q;inti=0;while(p&&i<pos-1){p=p->next;i++;}if(!p||i>pos-1){printf("插入位置不合法! \n");return0;}q=(PNode)malloc(sizeof(LNode));if(!q){printf("不能生成新结点 \n");return0;}q->data=x;q->next=p->next;p->next=q;return1;}/*单链表的删除 */intDelete(LinkListh,intpos,StockType*item){PNodep=h,q;inti=0;while(p->next&&i<pos-1){p=p->next;i++;}if(!p->next||i>pos-1){printf("删除位置不合法! \n");return0;}q=p->next;p->next=q->next;*item=q->data;free(q);return1;}voidDestroy(LinkListh){PNodep=h->next;while(h){p=h;h=h->next;free(p);}/*顺序表的初始化 */intInitList_Sq(SqList*L){L->length=0;return1;}/*顺序表的插入 */intListInsert_Sq(SqList*L,intpos,DataTypeitem){inti;if(L->length>=LISTSIZE){printf("");return0;}if(pos<=0||pos>L->length+1){printf("");return0;}for(i=L->length-1;i>=pos-1;i--)L->items[i+1]=L->items[i];L->items[pos-1]=item;L->length++;return1;}/*初始化文具分类顺序表 */intCreateSortList(SortList*SL){inti,num=0;SortTypesty;/*使用顺序表的 InitList操作初始化顺序表 *//*为了区别单链表的同名函数,把顺序表的 InitList函数名改为 InitList_Sq*/InitList_Sq(SL);printf("请输入文具类别总数: \n");scanf("%d",&num);for(i=0;i<num;i++){
TOC\o"1-5"\h\zprintf("请输入文具分类号: \n");scanf("%d",&sty.SortNumber);printf("请输入文具分类名称: \n");scanf("%s",&sty.SortName);/*使用顺序表的 Insert操作在顺序表中插入节点 */Insert_Sq*//*为了区别单链表的同名函数,把顺序表的 ListInsert函数名改为Insert_Sq*/ListInsert_Sq(SL,i+1,sty);}printf("\nOK...\n");return1;}/*初始化文具链表 */intCreateStockList(StockList*SL){inti,num=0;StockTypesty;/*使用单链表的 InitList操作初始化单链表 */if(!InitList(SL)){printf("创建错误 \n");return0;}printf("请输入文具总数 :\n");scanf("%d",&num);for(i=0;i<num;i++){printf("请输入文具分类号 :\n");scanf("%d",&sty.SortNumber);printf("请输入文具名称 :\n");scanf("%s",&sty.StockName);printf("请输入文具数量 :\n");scanf("%d",&sty.amount);/*使用单链表的 Insert操作在单链表中插入结点 */Insert(*SL,i+1,sty);}printf("\nOK...\n");return1;}/*文具入库 */intAddStock(StockListSL){StockTypesty;intpos=0;PNodep=SL->next;printf("请输入文具分类号 :\n");scanf("%d",&sty.SortNumber);printf("请输入文具名称 :\n");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");return1;}/*文具出库 */intRemoveStock(StockListSL){StockTypesty;PNodep=SL->next;intpos=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.amount<=0)Delete(SL,pos+1,&sty);printf("\nOK...\n");return1;}/*查询文具信息 */intQueryStock(StockListSL){intno;PNodep=SL->next;printf("请输入文具分类号 :\n");scanf("%d",&no);/*查询出所有该文具分类号的文具信息 */printf("\nNumberStockNameamount\n");while(p){if(p->data.SortNumber==no){printf("%d\t",p->data.SortNumber);printf("%s\t",p->data.StockName);printf("%d\t",p->data.amount);printf("\n");}p=p->next;}return1;}/*显示文具信息 */voidDispStock(StockListSL){PNodep=SL->next;printf("\nNumberStockNameamount\n");while(p){printf("%d\t",p->data.SortNumber);printf("%s\t",p->data.StockName);printf("%d\t",p->data.amount);printf("\n");p=p->next;}}/*添加新文具类别 */intAddSort(SortList*L){SortTypest;printf("请输入文具分类号 :\n");scanf("%d",&st.SortNumber);printf("请输入文具分类名 :\n");scanf("%s",&st.SortName);if(!ListInsert_Sq(L,L->length+1,st))return0;printf("\nOK...\n");return1;}intmain(intargc,char*argv[]){intchoice;StockListSL;SortListL;doprintf("\n文具店货品管理系统TOC\o"1-5"\h\zprintf("\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):");scanf("%d",&choice);if(choice<0&&choice>7)continue;switch(choice){case1:CreateSortList(&L);break;case2:CreateStockList(&SL);break;case3:AddStock(SL);break;case4:RemoveStock(SL);break;case5:QueryStock(SL);break;\n");/*初始化文具分类顺序表 \n");/*初始化文具分类顺序表 *//*初始化文具表 *//*文具入库 *//*文具出库 *//*查询文具信息 *//*显示文具信息 *//*添加新文具类别/*添加新文具类别*//*退出主程序*/case0:exit(0);default:break;}}while(1);return0;}六.结果表达:(1)设置文具分类表K'I:\jj\Dcl)iig\CTPKeze文具店货品管理系统』表别髀类表息息类具信信具-T具文库库具具文统一文化入出文文港一意具具询示加出一翳文文查显富i>>>>>>>>12245670-<<<<<<<<但输入文具类别总数:乙诺>-ArH丛*旦罐文具分类名科请输入式里分类名称:Izla日[己本请输入文具分类号1△嘉具分类名称:PR什算靠(2)(2)初始化文具店图图3嬴*1:\jj\Dcbug\Cppl.ese*文具店货品管理系统一类表一类表息息哭》分具信信导一具文库库具具藻文生出文文法一1具具询示加出一^^^文查显簿i>>>>>>>>-12345670ccc/^-cccc请选择<1.22,45/,,0)二2请输入文具总数二卷输入文具分类号二储额人文具名称:请输入文具数量;483请输入文具分类号:l输入五是名称:iaLw日记本请输入文具数量,109B请输入文具分类号:文器文入算入输篇W请脚t15文器文入算入输篇W请脚t15称量名数具具图2显示文具信息(3)(3)文具入库图图5芍拼音半2请输入之具名称;lala日1己本a■□XmM*I:\jj\Delmg\Cpp1.oxe产表别奘表息息类)分具信信具上具文笈具具文统一文化入出文文要一.具具询示加出一翳文文查显暂一>>>}>>>>12345670请选择《加2.3.%5.6.7.3。请输入文具分类号:图4显示文具入库之后的文具信息(4)(4)文具出库图图7文具店货品管理系统号类表镭分具王昌的库库具具文统息息类
信信具文化入出文文/
,具具询示加出
甯文文查显董
12345670
<<<<<<<<q■■076■5■:笳心名,2具口
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 衣服创新创业计划书
- 大学本科新学期工作计划新学期工作计划范文
- 工作计划-2024年学校工会工作计划
- 2024年备课组工作计划范文
- 下学期职业中专高一数学教学计划
- 2024年呼吸科护理工作计划
- 2024年安全生产工作计划格式模板
- 高中信息技术工作计划锦集
- 托班下学期班务工作计划
- 2024年物流部门工作计划材料范本
- 7750BRAS维护与配置(SR功能篇)
- 二级供应商管理
- 《投资理财》课件
- 锅炉使用单位锅炉安全日管控、周排查、月调度制度
- 《信息安全风险管理》课件
- 南京工业大学《高等传热学》2023-2024学年第一学期期末试卷
- 新能源电站单位千瓦造价标准值(2024版)
- 2024年大数据中心运营合作协议
- 期末 (试题) -2024-2025学年人教PEP版英语四年级上册
- T-TSSP 032-2023 夹壳核桃油加工技术规程
- 第二章 第三节细菌性食物中毒课件
评论
0/150
提交评论