算法与数据结构的商品货架管理课程设计报告(还有程序源代码)


    

    课程设计


    课 程: 算法数结构
    题 目: 商品货架理
    专 业: 计算机类
    班 级:
    座 号:
    姓 名:


    2012年 X月 X 日
    解决问题
    商店货架栈方式摆放商品商品货架成栈栈顶商品生产日期早栈底商品生产日期生产日期越接越栈底出货时栈顶取货天营业结束果货架满需货入货直接商品摆放货架会生产日期越商品越栈顶样需倒货架生产日期越越栈底请编写程序模拟商品销售架倒货架等操作(设5种商品种商品少商品名生产日期两属性)
    二算法基思想描述:
    天营业开始首先店商品货架(栈)满货物商店总5种商品商品名:abcde商品货架满货物接着天营业结束店天销售出商品应货架补满店输入第种需补货商品商品名天销售出数量然输入补货架商品名生产日期补货架商品货架未销售出货物进行生产日期较补货架货物日期较早直接货架否进行倒货补货样日期较放栈底外申请空栈存储倒出货物第种商品补完货问店否商品需补货需补货第种商品补货程序进行类推进行补货
    三设计
    1 数结构设计
    (1)商品信息:
    typedef struct
    {
    char b存储商品名
    商品日期年月日
    int year
    int month
    int day
    }Data
    (2)商品货架(栈)
    #define max 5
    typedef struct
    {
    Data a[max]0栈底位置
    int top栈顶
    }Stack
    (3)商品种类:
    Stack *s[5]5种商品

    2算法设计:
    (1)初始化空栈:
    利for循环(商品货架)栈申请空间进行判断否申请空间没申请空间输出提示空间足申请空间top指栈顶初始值-1栈底0位置
    (2)货算法设计:
    先定义四变量分字符型k1整型k2k3k4存储商品名商品生产日期赋值栈元素属性商品货赋值前先判断top否值输出提示栈满结束该货程序货物满输出提示表示商品货架满输出时货架货物数量利for循环进行商品货直5商品货架全部满
    (3)出货(天销售)算法设计:
    天营业结束店需销售出商品进行补货需知道商品销售出销售数量店输入天销售出种商品商品名店输入商店没商品名输出提示店次输入商品名接着输入销售数量程序销售数量进行判断否超出栈值(货架容纳货物数量)超出输出提示请店次输入销售数量
    (4)补货算法设计:
    子函数中先定义四变量分字符型k1整型k2k3k4存储补货架商品名商品生产日期外初始化空栈L存储倒出货物补货架商品生产日期货架未销售出商品进行较日期较早直接货否进行倒货货入件货物进行样程序
    (5)倒货:
    避免发生入货直接商品摆放货架会生产日期越商品越栈顶样事发生需倒货补货架货物生产日期早货物倒出放入栈L直补货架货物入货栈L货物放回原栈
    (6)货架摆放货物印出:
    补货完成商品栈货物商品名生产日期印出样检验补货时否日期较放栈底
    (7)
    模块结构功:

    1)int main(void) 程序
    2)Stack *initstack() 初始化空栈
    3)Stack *onput(Stack *S) 货
    4)void *outpush(Stack *S) 出货
    5)void backstack(Stack *Sint x) 补货
    6)Stack *outstack(Stack *SStack *L) 倒货
    7)void Print(Stack *S) 印商品栈货物信息
    (8)模块算法描述:
    货:
    Stack *onput(Stack *S)
    {
    int j
    char k1储存商品名
    int k2k3k4储存商品生产日期年月日
    for(j0j {
    if(S>topmax1)判断栈满
    {
    printf(栈满\n)栈满入栈
    return S
    }
    S>top++
    printf(栈数d S>top)印货物栈数
    输入商品名生产日期
    fflush(stdin)清缓存区
    scanf(c ddd&k1&k2&k3&k4)输入商品信息
    S>a[S>top]bk1
    S>a[S>top]yeark2
    S>a[S>top]monthk3
    S>a[S>top]dayk4
    }
    printf(该商品货架满\n)
    printf(时该商品货架d商品\n\nS>top+1)
    return S
    }
    出货:
    出货
    void *outpush(Stack *S)
    {
    printf(请店输入天c商品销售出数量:S>a[S>top]b)
    int xi
    fflush(stdin)清缓存区
    do{
    fflush(stdin)
    scanf(d&x)
    if(x>max)
    printf(该货架没商品请重输\n)
    }while(x>max)
    for(i1itop
    printf(时c商品货架数量剩d件需补货架数量d\n\nS>a[S>top]bS>top+1x)
    补货
    backstack(Sx)
    }
    补货:
    补货
    void backstack(Stack *Sint x)
    {

    int iii
    int temp
    char k1储存商品名
    int k2k3k4储存生产日期分应年月日
    Stack *L
    Linitstack()重新申请空栈倒货时存放货物
    printf(请输入补货架商品名(字符)空格输入该商品生产日期(年月日)货件回车键结束:\n)
    for(i1i {
    输入商品名生产日期
    fflush(stdin)清缓存区
    scanf(c ddd&k1&k2&k3&k4)
    if(S>top1)时货架商品直接货
    {
    S>top++
    S>a[S>top]bk1
    S>a[S>top]yeark2
    S>a[S>top]monthk3
    S>a[S>top]dayk4
    printf(补货成功第d件\ni)
    printf(时栈顶数:d\nS>top)
    }
    else{
    if(k2a[S>top]year)生产年份补货架货架早直接货架
    {
    S>top++
    S>a[S>top]bk1
    S>a[S>top]yeark2
    S>a[S>top]monthk3
    S>a[S>top]dayk4
    printf(补货成功第d件\ni)
    printf(时栈顶数:d\nS>top)
    temp1
    }
    else
    {
    for(iiS>topii>1&&S>top1ii)
    {
    temp0标记否货物架
    if(k2S>a[S>top]year)生产年份补货架货架样较月份
    {
    if(k3a[S>top]month) 生产月份补货货架早直接货
    {
    S>top++
    S>a[S>top]bk1
    S>a[S>top]yeark2
    S>a[S>top]monthk3
    S>a[S>top]dayk4
    printf(补货成功第d件\ni)
    printf(时栈顶数:d\nS>top)
    temp1
    if(temp1)break
    }
    else
    {
    if(k3S>a[S>top]month)生产月份补货架货架样较生产天日期
    {
    if(k4a[S>top]day)生产天日期补货货架早相直接货否倒货重新货架
    {
    S>top++
    S>a[S>top]bk1
    S>a[S>top]yeark2
    S>a[S>top]monthk3
    S>a[S>top]dayk4
    printf(补货成功第d件\ni)
    printf(时栈顶数:d\nS>top)
    temp1
    if(temp1)break
    }
    else
    {
    倒货
    Loutstack(SL)
    }
    }
    else
    {
    倒货
    Loutstack(SL)

    }
    }
    }

    if(k2>S>a[S>top]year)时生产年份补货架货架
    {
    Loutstack(SL)倒货
    }

    }
    if(temp0)
    {
    S>top++
    S>a[S>top]bk1
    S>a[S>top]yeark2
    S>a[S>top]monthk3
    S>a[S>top]dayk4
    printf(补货成功第d件\ni)
    printf(时栈顶数:d\nS>top)
    }
    while(L>top>1)存储L栈中商品架
    {
    S>top++
    S>a[S>top]L>a[L>top]
    }
    Linitstack()
    }
    }
    }
    printf(补货完成\n\n)
    Print(S)
    }
    倒货:
    倒货
    Stack *outstack(Stack *SStack *L)
    {
    L>top++
    L>a[L>top]S>a[S>top]
    S>top
    printf(时栈顶数:d\nS>top)
    printf(倒货次\n\n)
    return L
    }
    四源程序清单:
    #include
    #include
    #include
    #define max 5
    typedef struct
    {
    char b存储商品名
    商品日期年月日
    int year
    int month
    int day
    }Data
    typedef struct
    {
    Data a[max]0栈底位置
    int top栈顶
    }Stack
    初始化空栈
    Stack *initstack()
    {
    Stack *S
    S(Stack *)malloc(sizeof(Stack))申请空间
    判断否申请栈空间
    if(S)
    {
    printf(空间足\n)
    return NULL
    }
    else
    {
    S>top1
    return S
    }
    }
    货架摆放货物印出
    void Print(Stack *S)
    {
    printf(c商品货架摆放d货物:\nS>a[S>top]bS>top+1)
    while(S>top>1)
    {
    printf(c ddd\nS>a[S>top]bS>a[S>top]yearS>a[S>top]monthS>a[S>top]day)
    S>top
    }
    }

    Stack *onput(Stack *S)
    {
    int j
    char k1
    int k2k3k4
    for(j0j {
    if(S>topmax1)
    {
    printf(栈满\n)栈满入栈
    return S
    }
    S>top++
    printf(栈数d S>top)
    输入商品名生产日期
    fflush(stdin)清缓存区
    scanf(c ddd&k1&k2&k3&k4)
    S>a[S>top]bk1
    S>a[S>top]yeark2
    S>a[S>top]monthk3
    S>a[S>top]dayk4
    }
    printf(该商品货架满\n)
    printf(时该商品货架d商品\n\nS>top+1)
    return S
    }
    倒货
    Stack *outstack(Stack *SStack *L)
    {
    L>top++
    L>a[L>top]S>a[S>top]
    S>top
    printf(时栈顶数:d\nS>top)
    printf(倒货次\n\n)
    return L
    }
    补货
    void backstack(Stack *Sint x)
    {

    int iii
    int temp
    char k1储存商品名
    int k2k3k4储存生产日期分应年月日
    Stack *L
    Linitstack()重新申请空栈倒货时存放货物
    printf(请输入补货架商品名(字符)空格输入该商品生产日期(年月日)货件回车键结束:\n)
    for(i1i {
    输入商品名生产日期
    fflush(stdin)清缓存区
    scanf(c ddd&k1&k2&k3&k4)
    if(S>top1)时货架商品直接货
    {
    S>top++
    S>a[S>top]bk1
    S>a[S>top]yeark2
    S>a[S>top]monthk3
    S>a[S>top]dayk4
    printf(补货成功第d件\ni)
    printf(时栈顶数:d\nS>top)
    }
    else{
    if(k2a[S>top]year)生产年份补货架货架早直接货架
    {
    S>top++
    S>a[S>top]bk1
    S>a[S>top]yeark2
    S>a[S>top]monthk3
    S>a[S>top]dayk4
    printf(补货成功第d件\ni)
    printf(时栈顶数:d\nS>top)
    temp1
    }
    else
    {
    for(iiS>topii>1&&S>top1ii)
    {
    temp0标记否货物架
    if(k2S>a[S>top]year)生产年份补货架货架样较月份
    {
    if(k3a[S>top]month) 生产月份补货货架早直接货
    {
    S>top++
    S>a[S>top]bk1
    S>a[S>top]yeark2
    S>a[S>top]monthk3
    S>a[S>top]dayk4
    printf(补货成功第d件\ni)
    printf(时栈顶数:d\nS>top)
    temp1
    if(temp1)break
    }
    else
    {
    if(k3S>a[S>top]month)生产月份补货架货架样较生产天日期
    {
    if(k4a[S>top]day)生产天日期补货货架早相直接货否倒货重新货架
    {
    S>top++
    S>a[S>top]bk1
    S>a[S>top]yeark2
    S>a[S>top]monthk3
    S>a[S>top]dayk4
    printf(补货成功第d件\ni)
    printf(时栈顶数:d\nS>top)
    temp1
    if(temp1)break
    }
    else
    {
    倒货
    Loutstack(SL)
    }
    }
    else
    {
    倒货
    Loutstack(SL)

    }
    }
    }

    if(k2>S>a[S>top]year)时生产年份补货架货架
    {
    Loutstack(SL)倒货
    }

    }
    if(temp0)
    {
    S>top++
    S>a[S>top]bk1
    S>a[S>top]yeark2
    S>a[S>top]monthk3
    S>a[S>top]dayk4
    printf(补货成功第d件\ni)
    printf(时栈顶数:d\nS>top)
    }
    while(L>top>1)存储L栈中商品架
    {
    S>top++
    S>a[S>top]L>a[L>top]
    }
    Linitstack()
    }
    }
    }
    printf(补货完成\n\n)
    Print(S)
    }

    出货
    void *outpush(Stack *S)
    {
    printf(请店输入天c商品销售出数量:S>a[S>top]b)
    int xi
    fflush(stdin)
    do{
    fflush(stdin)
    scanf(d&x)
    if(x>max)
    printf(该货架没商品请重输\n)
    }while(x>max)
    for(i1itop
    printf(时c商品货架数量剩d件需补货架数量d\n\nS>a[S>top]bS>top+1x)
    补货
    backstack(Sx)
    }

    int main(void)
    {
    Stack *s[5]5种商品
    int i
    printf(计算机类1102班 郑桂萍 学号:3110307201\n\n)
    printf(商店5种商品分abcde\n\n)
    for(i0i<5i++)
    {
    s[i]initstack()初始化栈
    printf(请输入货第d种商品名(字符)空格输入该商品生产日期(年月日)货件回车键结束:\ni+1)
    s[i]onput(s[i])商品入栈(货)
    }
    char cyes_no

    do
    {
    fflush(stdin)
    printf(请店输入天销售出商品商品名:\n)
    fflush(stdin)
    scanf(c&c)
    switch(c)
    {
    case 'a'
    outpush(s[0])
    break
    case 'b'
    outpush(s[1])
    break
    case 'c'
    outpush(s[2])
    break
    case 'd'
    outpush(s[3])
    break
    case 'e'
    outpush(s[4])
    break
    default
    printf(商店c商品输入错误\nc)
    }
    do
    {
    fflush(stdin)
    printf(请问店销售出商品?果请Y否N\n)
    yes_nogetchar()
    if(yes_no'Y'&&yes_no'N')
    {
    printf(输入错误\n\n)
    }
    }while(yes_no'Y'&&yes_no'N')
    }while(yes_no'Y')
    return 0
    }
    五测试数测试结果:
    测试数:
    5商品货架货
    a 201211
    a 201211
    a 201122
    a 201111
    a 201111

    b 201222
    b 201222
    b 201222
    b 201222
    b 201222

    c 201222
    c 201222
    c 201222
    c 201222
    c 201222

    d 201222
    d 201222
    d 201222
    d 201222
    d 201222

    e 201222
    e 201222
    e 201222
    e 201222
    e 20122
    出货:
    天销售出商品商品名:
    a
    销售数量:2
    补货
    a 201422
    a 2009122
    测试结果:
    商品栈货物信息:
    a 2009122
    a 201122
    a 201211
    a 201211
    a 201422

    否需补货商品:
    N
    六课程设计总结心体会:
    通次课程设计更深刻体会编写程序前首先分析知道功做什等等实现需认真思考分析划分整体成模块逐实现种解决方法调试程序程中需细心耐心
    福 建 工 程 学 院

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    数据结构和算法课程设计题目

    XX大学课程设计课程名称: 数 据 结 构 与 算 法院(部)名 称: 信息与计算科学学院组长姓名学号 同组人员姓名指导教师姓名: 设 计 时 间: 2010.6.7-...

    11个月前   
    376    0

    数据结构课程设计报告最小生成树Kruskal算法

    计算机科学与技术系课程设计报告 2014-2015学年第二学期课程数据结构课程设计名称Kruskal算法求最小生成树学生姓名 学号 专业班级 软件工程指导教师 2014年X月题目:设计...

    1年前   
    203    0

    数据结构大作业(含源代码)

    数据结构大作业作业题目: 职工信息管理系统 姓 名: 学 号: ...

    3年前   
    451    0

    数据结构课程设计舞伴配对程序

    沈阳航空航天大学课 程 设 计 报 告课程设计名称:数据结构课程设计课程设计题目:舞伴配对程序院(系):计算机学院专 业:计算机科学与技术班 级: 学 号:姓 名:指导...

    1年前   
    284    0

    数据结构课程设计报告——图书管理系统

    课程设计报告 课设课题: 课程设计——图书管理系统 学 院: 电 子 信 息 学 院 专 业: 网 络 工 程 ...

    3年前   
    677    0

    车牌号管理系统数据结构课程设计报告

    XX 学 院 计算机工程学院课程设计报告设计名称: 数据结构课程设计 选题名称: 车牌号管理系统 ...

    3年前   
    428    0

    查找算法的程序实现「学生版」

    查找算法的程序实现【学生版】【例1】 在数组元素a(1)到a(8)中查找键值为key的数,其顺序查找的VB程序段如下,请在划线处填写正确的语句。for i=1 to 8if ①        ...

    2年前   
    506    0

    高校教材管理系统数据结构课程设计

    数据结构课程设计题 目: 高校教材管理系统 课 程 设 计 任 务 书一、课程设计题目: 高校教材管理系统...

    3年前   
    772    0

    商品进销存管理系统数据库课程设计报告

    数据库原理课程设计方案设计设计题目:商品进、销、存管理系统专 业 计算机科学与技术 班 级 班 学 生 ...

    1年前   
    310    0

    操作系统课程设计编程序模拟银行家算法

    课程设计报告书 课程名称: 操作系统原理 题 目: 编程序模拟银行家算法 系 名: 信息工程系 专业班级: ...

    3年前   
    723    0

    哈夫曼树应用数据结构课程设计报告

    数据结构课程设计报告设计题目:哈夫曼树应用 专 业 : 软件工程 班 级 : 软件 学 生 : ...

    2年前   
    466    0

    数据结构课程设计报告n维矩阵乘法

    设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,输出ab-1结果。

    4年前   
    708    0

    ping程序课程设计实验报告

    Windows网络程序设计课程设计 课 程 名 称 ping程序设计 姓   名 ...

    2年前   
    472    0

    数字图像处理车牌识别课程设计matlab实现附源代码

    基于matlab的车牌识别系统一、 目的与要求目的:利用matlab实现车牌识别系统,熟悉matlab应用软件的基础知识,了解了基本程序设计方法,利用其解决数字信号处理的实际应用问题,从而加深...

    1年前   
    337    0

    操作系统课程设计银行家算法报告

    《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级:计科班 ...

    3年前   
    615    0

    合工大页面置换算法操作系统课程设计报告

    计算机与信息学院《操作系统综合设计》报告设计题目:页面置换算法学生姓名:学 号:专业班级:计算机科学与技术班2015 年 X月一、设计题目 3二、开发环境与工具 3三、设计原理 31....

    3年前   
    556    0

    《操作系统 银行家算法》课程设计报告

    《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级: 计科班 ...

    3年前   
    808    0

    银行家算法《操作系统》课程设计报告

    《操作系统》课程设计报告课题: 银行家算法 专业计算机科学与技术学生姓名班级计算机学号指导教师信息工程...

    3年前   
    694    0

    查找算法的程序实现「教师版」

    查找算法的程序实现【教师版】【例1】 在数组元素a(1)到a(8)中查找键值为key的数,其顺序查找的VB程序段如下,请在划线处填写正确的语句。for i=1 to 8if ①        ...

    2年前   
    418    0

    数据结构实习报告

    数据结构实习报告  一、需求分析1、  程序所实现的功能;2、  程序的输入,包含输入的数据格式和说明;3、  程序的输出,程序输出的形式;4、  测试数据,如果程序输入的数据量比较大,需要给...

    8年前   
    1037    0

    文档贡献者

    文***品

    贡献于2022-12-30

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!

    该用户的其他文档