2022年数据结构课程方案商店管理系统.docx
精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用数据结构课程设计题 目图的储备与遍历同学姓名 李中文指导老师 秦飞学 院治理科学与工程学院专业班级 信息治理与信息系统 081 班完成时间 2022-06-10目 录名师归纳总结 - - - - - - -第 1 页,共 15 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用第一章 课程设计目的··························· 2 其次章 课程设计内容和要求·················· 2 第三章 课程设计分析··························· 4 第四章 算法描述································· 6 第五章 源代码···································· 7 第六章 运行结果分析·························· 20 第七章 终止语··································· 27 第八章 参考文献································ 30 第一章 课程设计目的本学期我们对数据结构这门课程进行了学习;这门课程是一门实践性特别强的课程,为了让大家更好地懂得与运用所学学问,提高动手才能,我们进行了此次课程设计实习;这次课程设计不但要求实习者把握数据结构中的各方面学问,仍要求实习者具备肯定的 C 语言基础和编程才能;详细说来,这次课程设计主要有两大方面目的;一是让实习者通过实习把握数据结构中的学问;对于次序表和链表的储备与遍历这一课题来说,所要求把握的数据结构学问主要有:次序表的储备结构和查找,插入,删除等基本运算;单链表的储备结构和查找,插入,删除等操作;双向链表的储备结构以及插入删除名师归纳总结 - - - - - - -第 2 页,共 15 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用 操作;把握线性表的基本运算解决复杂问题;二是通过实习巩固并提高实习者的CC+>语言学问,并初步明白Visual C+的学问,提高其编程才能与专业水平;其次章 课程设计内容和要求 2.1 课程设计内容 题目:商店存货治理系统 功能: 建立一 商店存货治理系统,要求每次出货时取进货时间最早且最接近保质期中止时 间的货物;分步实施:初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;12完成最低要求:建立一个文件,包括充<追加),修改和删除以及简洁的排序;5 个种类的货物情形,能对商品信息进行扩3进一步要求:扩充商品数量,以及完成系统查询功能;有爱好的同学可以自己扩 充系统功能;要求:1)界面友好,函数功能要划分好 2)总体设计应画一流程图 3)程序要加必要的注释 4)要供应程序测试方案 5)程序肯定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是 没有价值的;2.1.1链表的建立 typedef struct char Name25; / 商品名称 int Mount; /商品数量 float Price; /商品单价 long int Data; /入库日期 long int Num; /商品编码 goods;typedef struct node goods data;struct node *next;LNode,*LinkList ;LinkList Creat_LinkListvoid> LinkList H ;H=LinkList>mallocsizeofLNode>> ;名师归纳总结 - - - - - - -第 3 页,共 15 页精选学习资料 - - - - - - - - - ifH> 个人资料整理仅限学习使用H->next=NULL ;return H; 2.1.2链表的遍历的实现 void ThroughLinkList H> LinkList p ;int Data;P=H;Whilep> Data=p->data; printf“%dn”,&p->data>; p=p->next; 2.2 运行环境 该程序的运行环境为Windows xp 系统, Microsoft Visual C+6.0 版本 ,Visual Stdio2022版本;第三章 课程设计分析3.1 链表的储备 typedef struct char Name25 ; / 商品名称 int Mount ; /商品数量 float Price ; /商品单价 long int Data ; /入库日期long int Num ; /商品编码 goods ;typedef struct node goods data ;struct node *next ;LNode,*LinkList ;名师归纳总结 - - - - - - -第 4 页,共 15 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用LinkList Creat_LinkListvoid> LinkList H ;H=LinkList>mallocsizeofLNode>>;ifH> H->next=NULL ;return H ; /申请胜利后,就可以给它赋值了,这里省略了3.2 链表的遍历 / 遍历,对其数据操作 void ThroughLinkList H> LinkList p;int Data;P=H;Whilep> Data=p->data; /可以再此对数据操作 printf“ %dn ” ,&p->data> ; p=p->next; 第四章 算法 <数据结构)描述4.1 链表的储备结构的建立 typedef struct ;char Name25; / 商品名称int Mount; /商品数量 float Price; /商品单价 long int Data; /入库日期名师归纳总结 - - - - - - -第 5 页,共 15 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用 long int Num; /商品编码 goods;/链表结点定义typedef struct node goods data;struct node *next;LNode,*LinkList ;/ 创建空单链表 LinkList Creat_LinkListvoid> LinkList H ;H=LinkList>mallocsizeofLNode>>;ifH> H->next=NULL ;return H ; 4.2 链表的遍历 / 遍历,对其数据操作 void ThroughLinkList H> LinkList p;int Data;P=H;Whilep> Data=p->data;/可以再此对数据操作 printf“ %dn ” ,&p->data> ; p=p->next; 第五章 源代码 <程序)名师归纳总结 - - - - - - -第 6 页,共 15 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用#include"stdio.h" #include"string.h" #include"malloc.h" #include"iostream" typedef struct char Name25; / 商品名称 int Mount; /商品数量 float Price; /商品单价 long int Data; /入库日期long int Num; /商品编码 goods;typedef struct node goods data;struct node *next;LNode,*LinkList ;/ 结点定义LinkList Creat_LinkListvoid> / 创建链表 LinkList H ;H=LinkList>mallocsizeofLNode>>;ifH> H->next=NULL ;return H ; / 定义一个全局变量 ,记录仓库中商品类总数 int Max=1; /初始化时,库中有一件商品/ 定义一个判定两个字符数组是否相等函数int equalchar a,char b> int i=0,j;whileai.='0'|bi.='0'> 名师归纳总结 - - - - - - -第 7 页,共 15 页精选学习资料 - - - - - - - - - 个人资料整理仅限学习使用j=0;ifai=bi> i+;j=1; else break; return j; / 字符串比较,返回值 1 相等, 0 不相等;/ 查找功能函数定义LinkList SearchLinkList H> int k1;LinkList p;char name20;long int num;p=H;printf" 请挑选: n1,按商品名称查询 n2,按商品编码查询 n0,退出 n">;scanf"%ld",&k1> ;whilek1=1> /按商品名称查询 printf" 请输入商品名称 n"> ;scanf"%s",name>;whilep> ifequalp->data.Name,name>=1> /查找名称 printf" 查找胜利,商品名称 %s,商品数量 %d ,n 商品价格 %f ,入库日期 %ld ,商品编码 %ldn",p->data.Name,p->data.Mount,p->data.Price,p->data.Data,p->data.Num>;break; 名师归纳总结 - - - - - - -第 8 页,共 15 页精选学习资料 - - - - - - - - - else 个人资料整理仅限学习使用p=p->next; if.p> printf" 查找失败,库中不存在此商品!n">;return NULL> ; printf" 请挑选: n1,按商品名称查询 n2,按商品编码查询 n0,退出 n">; scanf"%ld",&k1> ; whilek1=2> / 按商品编码查询 printf" 请输入商品编码 <数字 >n">;scanf"%ld",&num> ;whilep> ifp->data.Num=num> printf" 查找胜利,商品名称 %s,商品数量 %d ,n 商品价格 %f ,入库日期 %ld ,商品编码 %ldn",p->data.Name,p->data.Mount,p->data.Price,p- >data.Data,p->data.Num>;break; else p=p->next; if.p> printf" 查找失败,库中不存在此商品!n">;return NULL> ; printf" 请挑选: n1,按商品名称查询 n2,按商品编码查询 n0,退出 n">; scanf"%ld",&k1> ; return p;名师归纳总结 - - - - - - -第 9 页,共 15 页精选学习资料 - - - - - - - - - 个人资料整理仅限学习使用/ 添加商品: 1 修改仓库中已有商品数量 2 添加新商品int Insert_LinkListLinkList H> LinkList p,q;int k=1,k2=1,mount=0;long int m;char name125;int n;float price1=0.0;long int data1,n1;whilek2=1> p=H;printf" 请输入商品编码 n"> ;scanf"%ld",&m> ;whilep> ifp->data.Num=m> k=0;break; else p=p->next; ifk=0> / 修改商品数量 printf" 仓库中有这种商品 .n 请输入增加商品的数量 n">;scanf"%d",&mount> ;p->data.Mount=p->data.Mount+mount ;printf" 商品添加胜利 n"> ;printf" 现在库中有此商品 %d 件n",p->data.Mount> ;return 1; 名师归纳总结 - - - - - - -第 10 页,共 15 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用 else /添加新商品 q=LinkList>mallocsizeofLNode>>;if.q> printf" 申请空间失败 n"> ;return 0; else printf" 输入商品名称 n"> ;scanf"%s",name1>;printf" 请一次输入商品数量,单价,入库日期,编码 n 例如 : 200 12000.0 20220609 10001n">;scanf"%d %f %ld %ld",&n,&price1,&data1,&n1>;/ 把新商品信息赋给新结点strcpyp->data.Name,name1>;q->data.Mount=n;q->data.Price=price1;q->data.Data=data1;q->data.Num=n1;/ 修改指针q->next=p->next;p->next=q;printf" 新商品添加胜利 n"> ;Max=Max+1 ; /修改仓库中商品总类数printf" 此时仓库中共有 %d 种商品 n",Max> ;return 1; printf"1, 连续添加商品 0,退出 n"> ; scanf"%ld",&k2> ; return 1; 名师归纳总结 - - - - - - -第 11 页,共 15 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用 / 删除库中的商品 void Del_LinkListLinkList H> LinkList p,q;long int num;int k3=1;whilek3=1> printf" 请输入要删除的商品的编号 n"> ;scanf"%ld",&num> ;p=H;q=p;p=p->next;whilep> ifp->data.Num=num> q->next=p->next;freep>;printf" 删除胜利! n">;Max=Max-1 ;printf" 此时仓库中有商品类 %d 种n",Max> ;break; else q=p;p=p->next; ifp=NULL> printf" 仓库中没有这种商品 n"> ; printf"1, 连续删除 0,退出n"> ;scanf"%d",&k3> ;名师归纳总结 - - - - - - -第 12 页,共 15 页精选学习资料 - - - - - - - - - 个人资料整理仅限学习使用 / 商品出库 ,卖出void SellLinkList H> int k4=1;long int num;LinkList p;p=H;whilek4=1> printf" 请输入商品编码 n"> ;scanf"%ld",&num> ;whilep> / 在仓库中查找商品 ifp->data.Num=num> break;else p=p->next; ifp> / 查到商品 int m=0;float value=0,Total_value=0;printf" 请输入卖出商品的数量 n"> ;scanf"%d",&m> ;ifp->data.Mount>=m> / 仓库中商品数量够出售 value=value+p->data.Price*m;Total_value=Total_value+value;p->data.Mount=p->data.Mount-m ; / 修改仓库中商品数量/ 显示信息printf" 商品总价为 %.2f 元n",Total_value>;printf" 此商品库存仍有 %d 件n",p->data.Mount> ; else 名师归纳总结 - - - - - - -第 13 页,共 15 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用 printf" 仓库中这种商品数量不足 n">; else printf" 仓库中没有这种商品 n"> ;printf"0, 退出 1,连续卖出 n"> ;scanf"%d",&k4> ; /查找库存不足货物 void FindLinkList H> LinkList p;p=H;int max=0;int k5=1;whilek5=1> printf" 请输入:商品库存数量是多少算缺货 scanf"%d",&max> ;whilep> /遍历货物全部结点 ifp->data.Mount<=max> <默认为 0)n"> ;printf" 商品%s 编码%ld 库存数量%d 缺货,请准时进货n",p->data.Name,p->data.Num,p->data.Mount>;p=p->next; if.p> printf" 仓库中没有缺货的商品 n"> ;printf"1, 重新查看 0,退出 n">;scanf"%ld",&k5> ; /浏览全部产品信息 void browsingLinkList H> LinkList p;名师归纳总结 - - - - - - -第 14 页,共 15 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用 int k8=1;p=H;whilep> printf" 第%d 种商品信息 n",k8> ;printf" 商品名称 %s ,商品数量%d ,商品价格%f ,入库日期%ld ,商品编码%ldn",p->data.Name,p->data.Mount,p->data.Price,p->data.Data,p->data.Num> ;k8+;p=p->next; / 按日期搜查商品信息void Search_TimeLinkList H> LinkList p;long int time;int i=0;p=H;printf" 请输入日期 <格式 20220609)n"> ;scanf"%ld",&time> ;whilep>/ 遍历查找 ifp->data.Data=time> i+;/ 统计数量printf" 商品名称 %s,商品数量 %d ,商品价格 %f ,入库日期 %ld ,商品 编码 %ldn",p->data.Name,p->data.Mount,p->data.Price,p->data.Data,p->data.Num> ; p=p->next; printf" 共有 %d 种商品时在 %ld 入库的 n",i,time>;名师归纳总结 - - - - - - -第 15 页,共 15 页