数据结构课程方案商店管理系统.docx
- 文档编号:25471082
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:20
- 大小:105.68KB
数据结构课程方案商店管理系统.docx
《数据结构课程方案商店管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构课程方案商店管理系统.docx(20页珍藏版)》请在冰豆网上搜索。
数据结构课程方案商店管理系统
《数据结构》课程设计
题目图的存储与遍历
学生姓名李中文
指导教师秦飞
学院管理科学与工程学院
专业班级信息管理与信息系统081班
完成时间2018-06-10
第一章课程设计目的2
第二章课程设计内容和要求2
第三章课程设计分析4
第四章算法描述6
第五章源代码7
第六章运行结果分析20
第七章结束语27
第八章参考文献30
第一章课程设计目的
本学期我们对《数据结构》这门课程进行了学习。
这门课程是一门实践性非常强的课程,为了让大家更好地理解与运用所学知识,提高动手能力,我们进行了此次课程设计实习。
这次课程设计不但要求实习者掌握《数据结构》中的各方面知识,还要求实习者具备一定的C语言基础和编程能力。
具体说来,这次课程设计主要有两大方面目的。
一是让实习者通过实习掌握《数据结构》中的知识。
对于《顺序表和链表的存储与遍历》这一课题来说,所要求掌握的数据结构知识主要有:
顺序表的存储结构和查找,插入,删除等基本运算;单链表的存储结构和查找,插入,删除等操作;双向链表的存储结构以及插入删除操作。
掌握线性表的基本运算解决复杂问题。
二是通过实习巩固并提高实习者的C(C++>语言知识,并初步了解VisualC++的知识,提高其编程能力与专业水平。
第二章课程设计内容和要求
2.1课程设计内容
题目:
商店存货管理系统
功能:
建立一商店存货管理系统,要求每次出货时取进货时间最早且最接近保质期中止时间的货物。
分步实施:
1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2.完成最低要求:
建立一个文件,包括5个种类的货物情况,能对商品信息进行扩充<追加),修改和删除以及简单的排序;
3.进一步要求:
扩充商品数量,以及完成系统查询功能。
有兴趣的同学可以自己扩充系统功能。
要求:
:
1)界面友好,函数功能要划分好
2)总体设计应画一流程图
3)程序要加必要的注释
4)要提供程序测试方案
5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
2.1.1链表的建立
typedefstruct{
charName[25]。
//商品名称
intMount。
//商品数量
floatPrice。
//商品单价
longintData。
//入库日期
longintNum。
//商品编码
}goods。
typedefstructnode{
goodsdata。
structnode*next。
}LNode,*LinkList。
LinkListCreat_LinkList(void>
{
LinkListH。
H=(LinkList>malloc(sizeof(LNode>>。
if(H>
H->next=NULL。
returnH。
}
2.1.2链表的遍历的实现
voidThrough(LinkListH>
{
LinkListp。
intData。
P=H。
While(p>
{
Data=p->data。
printf(“%d\n”,&p->data>。
p=p->next。
}
}
2.2运行环境
该程序的运行环境为Windowsxp系统,MicrosoftVisualC++6.0版本,VisualStdio2008版本。
第三章课程设计分析
3.1链表的存储
typedefstruct{
charName[25]。
//商品名称
intMount。
//商品数量
floatPrice。
//商品单价
longintData。
//入库日期
longintNum。
//商品编码
}goods。
typedefstructnode{
goodsdata。
structnode*next。
}LNode,*LinkList。
LinkListCreat_LinkList(void>
{
LinkListH。
H=(LinkList>malloc(sizeof(LNode>>。
if(H>
H->next=NULL。
returnH。
}
//申请成功后,就可以给它赋值了,这里省略了
3.2链表的遍历
//遍历,对其数据操作
voidThrough(LinkListH>
{
LinkListp。
intData。
P=H。
While(p>
{
Data=p->data。
//可以再此对数据操作
printf(“%d\n”,&p->data>。
p=p->next。
}
}
第四章算法<数据结构)描述
4.1链表的存储结构的建立。
typedefstruct{
charName[25]。
//商品名称
intMount。
//商品数量
floatPrice。
//商品单价
longintData。
//入库日期
longintNum。
//商品编码
}goods。
//链表结点定义
typedefstructnode{
goodsdata。
structnode*next。
}LNode,*LinkList。
//创建空单链表
LinkListCreat_LinkList(void>
{
LinkListH。
H=(LinkList>malloc(sizeof(LNode>>。
if(H>
H->next=NULL。
returnH。
}
4.2链表的遍历
//遍历,对其数据操作
voidThrough(LinkListH>
{
LinkListp。
intData。
P=H。
While(p>
{
Data=p->data。
//可以再此对数据操作
printf(“%d\n”,&p->data>。
p=p->next。
}
}
第五章源代码<程序)
#include"stdio.h"
#include"string.h"
#include"malloc.h"
#include"iostream"
typedefstruct{
charName[25]。
//商品名称
intMount。
//商品数量
floatPrice。
//商品单价
longintData。
//入库日期
longintNum。
//商品编码
}goods。
typedefstructnode{
goodsdata。
structnode*next。
}LNode,*LinkList。
//结点定义
LinkListCreat_LinkList(void>//创建链表
{
LinkListH。
H=(LinkList>malloc(sizeof(LNode>>。
if(H>
H->next=NULL。
returnH。
}
//定义一个全局变量,记录仓库中商品类总数
intMax=1。
//初始化时,库中有一件商品
//定义一个判断两个字符数组是否相等函数
intequal(chara[],charb[]>
{
inti=0,j。
while(a[i]!
='\0'||b[i]!
='\0'>
{
j=0。
if(a[i]==b[i]>
{
i++。
j=1。
}
else
break。
}
returnj。
}//字符串比较,返回值1相等,0不相等。
//查找功能函数定义
LinkListSearch(LinkListH>
{
intk1。
LinkListp。
charname[20]。
longintnum。
p=H。
printf("请选择:
\n1,按商品名称查询\n2,按商品编码查询\n0,退出\n">。
scanf("%ld",&k1>。
while(k1==1>//按商品名称查询
{
printf("请输入商品名称\n">。
scanf("%s",name>。
while(p>
{
if(equal(p->data.Name,name>==1>//查找名称
{
printf("查找成功,商品名称%s,商品数量%d,\n商品价格%f,入库日期%ld,商品编码%ld\n",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>。
}
while(k1==2>//按商品编码查询
{
printf("请输入商品编码<数字>\n">。
scanf("%ld",&num>。
while(p>
{
if(p->data.Num==num>
{
printf("查找成功,商品名称%s,商品数量%d,\n商品价格%f,入库日期%ld,商品编码%ld\n",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>。
}
returnp。
}
//添加商品:
1修改仓库中已有商品数量2添加新商品
intInsert_LinkList(LinkListH>
{
LinkListp,q。
intk=1,k2=1,mount=0。
longintm。
charname1[25]。
intn。
floatprice1=0.0。
longintdata1,n1。
while(k2==1>
{
p=H。
printf("请输入商品编码\n">。
scanf("%ld",&m>。
while(p>
{
if(p->data.Num==m>
{
k=0。
break。
}
else
p=p->next。
}
if(k==0>//修改商品数量
{
printf("仓库中有这种商品!
\n请输入增加商品的数量\n">。
scanf("%d",&mount>。
p->data.Mount=p->data.Mount+mount。
printf("商品添加成功\n">。
printf("现在库中有此商品%d件\n",p->data.Mount>。
return1。
}
else//添加新商品
{
q=(LinkList>malloc(sizeof(LNode>>。
if(!
q>
{
printf("申请空间失败\n">。
return0。
}
else
{
printf("输入商品名称\n">。
scanf("%s",name1>。
printf("请一次输入商品数量,单价,入库日期,编码\n例如:
20012000.02018060910001\n">。
scanf("%d%f%ld%ld",&n,&price1,&data1,&n1>。
//把新商品信息赋给新结点
strcpy(p->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>。
return1。
}
}
printf("1,继续添加商品0,退出\n">。
scanf("%ld",&k2>。
}
return1。
}
//删除库中的商品
voidDel_LinkList(LinkListH>
{
LinkListp,q。
longintnum。
intk3=1。
while(k3==1>
{
printf("请输入要删除的商品的编号\n">。
scanf("%ld",&num>。
p=H。
q=p。
p=p->next。
while(p>
{
if(p->data.Num==num>
{
q->next=p->next。
free(p>。
printf("删除成功!
\n">。
Max=Max-1。
printf("此时仓库中有商品类%d种\n",Max>。
break。
}
else
{
q=p。
p=p->next。
}
}
if(p==NULL>
{
printf("仓库中没有这种商品\n">。
}
printf("1,继续删除0,退出\n">。
scanf("%d",&k3>。
}
}
//商品出库,卖出
voidSell(LinkListH>
{
intk4=1。
longintnum。
LinkListp。
p=H。
while(k4==1>
{
printf("请输入商品编码\n">。
scanf("%ld",&num>。
while(p>//在仓库中查找商品
{
if(p->data.Num==num>
break。
else
p=p->next。
}
if(p>//查到商品
{
intm=0。
floatvalue=0,Total_value=0。
printf("请输入卖出商品的数量\n">。
scanf("%d",&m>。
if(p->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
printf("仓库中这种商品数量不足\n">。
}
else
printf("仓库中没有这种商品\n">。
printf("0,退出1,继续卖出\n">。
scanf("%d",&k4>。
}
}
//查找库存不足货物
voidFind(LinkListH>
{
LinkListp。
p=H。
intmax=0。
intk5=1。
while(k5==1>
{
printf("请输入:
商品库存数量是多少算缺货<默认为0)\n">。
scanf("%d",&max>。
while(p>//遍历货物所有结点
{
if(p->data.Mount<=max>
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>。
}
}
//浏览所有产品信息
voidbrowsing(LinkListH>
{
LinkListp。
intk8=1。
p=H。
while(p>
{
printf("第%d种商品信息\n",k8>。
printf("商品名称%s,商品数量%d,商品价格%f,入库日期%ld,商品编码%ld\n",p->data.Name,p->data.Mount,p->data.Price,p->data.Data,p->data.Num>。
k8++。
p=p->next。
}
}
//按日期搜查商品信息
voidSearch_Time(LinkListH>
{
LinkListp。
longinttime。
inti=0。
p=H。
printf("请输入日期<格式20180609)\n">。
scanf("%ld",&time>。
while(p>//遍历查找
{
if(p->data.Data==time>
{
i++。
//统计数量
printf("商品名称%s,商品数量%d,商品价格%f,入库日期%ld,商品编码%ld\n",p->data.Name,p->data.Mount,p->data.Price,p->data.Data,p->data.Num>。
}
p=p->next。
}
printf("共有%d种商品时在%ld入库的\n",i,time>。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程 方案 商店 管理 系统