版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法与数据结构
课程设计说明书
课题:商品管理系统
学院计算机与通信学院
班级软件工程二班
姓名
学号
指导老师:包仲贤
时间:2023.01.12
目录
摘要.....................................................3
序言.....................................................4
算法描述.................................................4
流程图:7
调试分析:...............................................8
输出典型数据................................................9
源代码.....................................................15
涉及总结...................................................30
参考文献..................................................31
摘要
随着社会经济的迅速发展和科学技术的全面进步,以计算机与
商店管理技术为基础的管理系统正处在蓬勃发展的时期。仓库这个名
词,已经不能用货品贮存地来概括,它现在是一个分销中心
(DistributionCenter),完毕的任务更全面。过去,人们不明白这
条渠道利益。到了今天,公司间的竞争更加剧烈了,因此仓库管理成
了供应链管理当中不可或缺的一环。在这样的发展形式下,通过系统
的分析与调研,完毕了本系统。
系统中重要分为两种操作权限,一种为超级管理员权限,另一
种为普通用户权限。重要功能涉及对货品的入库、出库、借出、盘点
的相应操作;查询库存、入库、出库、借出、归还的货品数量;对货
品月出入库数量与年出入库数量进行记录;对供应商、用户、货品信
息进行相应的设立;打印库存信息和货品的出库信息以及用户系统权
限的管理。超级管理员可以完毕所有的操作,而普通用户只能完毕查
询记录与修改密码的。本课题是一个适应现今仓库管理需求的计算机
信息管理系统,具有一定的实际开发价值和使用价值
关键词:库存;货品;入库;商店
序言.
面对信息爆炸的今天,对库存管理人员来说,工作量正日趋繁
琐,因此有一个好的管理系统,就显得非常的必要。
库存管理所涉及的范围广泛。但是,最基本的入库、
出库的操作,在以前的管理系统中,都会体现。过去,
人们的管理理念没有完善,并且经验不够,因此是在
摸索中成长。可是当今社会,假如还继承以前的东西,
而没有更新或创新的部分,那么是不能适应当今这个
大趋势的发展的。现在,一个最明显的变化是仓库不再
被看作仅仅是一个货品贮存地,以前人们把货品管理
看的很单调。最近出现了很多新的管理模式,如:基于
零库存思想的沃尔玛管理方式。这些新的思想在中国的
公司中普及只是个时间问题。库存管理的意义重大,不
容忽视,基于如此设计了这个系统
算法(数据结构)描述
5.1先定义一个商品的结构体数组:
typedefstruct/*定义结构体数组*/
charname[20];/*商品名称*/
inttime;/*进货时间*/
intyear;/*生产日期*/
intno;/*保质期*/
Jgoods;
5.2建立一个菜单函数,显示10个功能供用户选择,进行人机对
话。
设立一个排序的函数,运用
5.3voidSort_by_time(goodsgs[],intn)o
冒泡法先对商品按进货的时间排序,对进货时间同样的货品,再
按离保质期最近排序。
设立一个输入的函数,这个函数是最
5.4intlnput(goodsgs[],intn)o
初商品输入函数,当选择了这个功能后,假如是第一次运营这个
程序,保存输入,那将在D盘产生一个名为“商品.doc”的文献,假
如已经运营过了,并保存输入,那输入的商品信息将代替原有的
信息,数据输入使用交互输入,进行人机对话,拟定是否进行下一
个数据的添加。并且调用了上面的排序函数,对输入的数据进行排
序。
5.5设立一个显示的函数,voidDisplay(goodsgs[],intn)。显示上面输
入的所有数据,或者是从文献中读取的数据。
设立一个插入的函数,每次
5.6intlnsert_a_record(goodsgs[],intn)o
插入一组数据,假如要再插入,则再选择这个功能进行操作。并且
在插入的同时,已经排好序,把数据插入适合的位置。
5.7设立一个查找删除的函数,intDelete_a_record(goodsgs[],intn)。
输入要查找的商品名称,假如不存在,则输出失败信息,假如存在,
则用下一个信息代替原有信息的位置。
5.8设立一个查找显示的函数,voidQuery_a_record(goodsgs[],int
n)o输入要查找的商品名称,假如不存在,则输出失败信息,假如
存在,则显示信息。
5.9设立一个写入文献的函数,voidWritetoText(goodsgs[],intn)。设
立文献指针,先判断文献是否能打开并且能进行写操作,不能则
输出失败信息,能则循环写入数据,写完关闭文献。
5.10设立一个读文献的函数,intAddfromText(goodsgs[],intn)。设立
文献指针,判断文献是否能打开并且能进行读操作,能则先读出
总的数据量,接着循环读出数据,最后关闭文献。
5.11进入最后一步,main函数。判断选择的操作,根据用户选择的操
作,运用switch语句进行相应的函数调用。
5.12选择保存功能,对数据进行保存,然后选择结束程序退出功能,
退出程序。
Sort_by_time(gs/n)
初始条件:数据已经存在
操作结果:数据进行排序
lnput(gs,n)
初始条件:没有任何数据存在,或者要替换原文献中的所有数据
操作结果:数据进行输入
Display(gszn)
初始条件:数据已经存在
操作结果:数据显示
lnsert_a_record(gs,n)
初始条件:数据已经存在
操作结果:数据插入
Delete_a_record(gs,n)
初始条件:数据已经存在
操作结果:数据删除
Query_a_record(gs,n)
初始条件:数据已经存在
操作结果:数据记录
WritetoText(gs,n)
初始条件:数据已经存在
操作结果:写入文献中
AddfromText(gs,n)
初始条件:文献已经存在
操作结果:从文献中读出
流程图:
删
杳
排
显
添
记
.
除
序
示
加
录
找
数
数
数
数
数
数
据
据
据
据
据
据
V
a、调试分析:
b、调试中碰到的问题及对问题的解决方法;
在商品的排序方面,指针指向错误。
解决方案:运用画图理清指针的指向,并改正
2.写入文献,当文献不存在数无法写入
解决方案:当文献不存在时,创建一个文本去存取信息;
查找信息,当信息不存在时,程序没有反映
解决方案:当所搜寻的信息不存在时,返回查找失败;
VS运营程序时,出现scanf不安全问题
c、解决方案:在项目属性中的预解决器中加入一串代码;
d、算法的时间复杂度和空间复杂度;
算法的时间复杂度为:0(r/3)
空间复杂度:170
输出典型数据
界面:
;2.显示数据
I3.
!4.
!5.查找数
!6・统计并显示进货时间最早且最接近保质期巾止时间的货物;
;?・写入文件;
.8读文件二
!9:而读人的文件进行排序I
!0.
*****y*MMXXXMMMMXHMXXXXXMMMXX*XXM******
选择e-9〉j
显示功能,显示最初的数据:
插入功能:
Q系统****
X数据;
统等整躲进货时间最早且最接近保质期中止时间的货物:
'匕'ATTXul,
|I1
善解后文件进行排序;
择
选
入<40
。^
龙
南K
史
产
:1功
任
则
意
按
萧
不段
1
显
一
2数
a尖
3数
4
s曩
5并
s计
6文
7i入
R件
g文
入
9文
件进
L序
U
0n蕾H
;
请选择《0三):2
显ZF所有向品
舒於乐一—最丽虱正声百鼠―及赢;年〉
刷20161212201603041
伟20170101201601011
K精鼓任意键继续...
删除功能:
药品系统xxxx
输入数据;
显示数据;
奇人数居:
PlI
统计并显示进货时间最早且最接近保质期中止时间的货物;
破W文M神#;s
蠡人的文件进行排序;
请选择《0-9):4
曰,
Ml>2ZZ|Z、女7Kh+B<।
ATrviff।
jm/\^XJJQ1
j
叩flfli9日RF*z女rXvJiJ&石1■
统*驾进货时间最早且最接近保质期中止时间的货物;
写入文件;
亶I啰文件进行排序I
商品名称进货时间生产日期保质期<年)
牙刷20161212201603041
能按任意键继续.••■
查找商品信息:
甯g的
M
x
"
x
1数
显一.
2父爵
.
3统曩数
4
数;
5
计;
一并
6显示进货时慎
入
7尾文件;
8文件:
9
祗入的文件进行抖k序
t
蕾—
0:
『2
裹选
5
<0
-9
一找显示>:的
人杳商
露找
贷_项
01
.
61
01
生:2继
60
:2续
^键
:1忌二
的
时间
中止
质期
近保
最接
早且
间最
货时
示进
并显
记录
:
货品
■
蟹^
*数
1显
数
2
®
3数
4数
5数亲
6统并显
7一文件
8覆件;
9
I入的
0;
):6
《0-9
请选择
物
的货
时间
中止
质期
近保
最接
早且
间最
货时
示进
并显
绯计
:
货物
间的
止时
期中
保质
接近
且最
最早
时见
进反
:牙刷
刍称
慧晶
1212
:2016
时间
进优
0304
期:2016
生产日
睇1
保质
■
..
续.
意键继
请按任
献:
写入文
:1
:2
:
«
:3
;
数居
:4
数据।
S
:
的货物
止时间
质期中
接近保
早且最
间最
货时
示进
并显
统计
,
饕科
序;
行排
件进
的文
熊人
9
0
:7
<。-9)
请选择
中
文件
当到
ssed?
Succe
...
键继续
任意
情按
读取文献:
:1WIT
:2
;3111;
:4I®;
6统计并显示进货时诃最早且最接近保质期中止时间的货物;
7
8
f醯e弹l文l件进行排序;
9
0
请选择《0-9〉:8
支件中读数据
Successed!
请按任意键继续..・
对读入文献进行排序:
!1脚
!2
!3
尊除乾居:
!5
;6统计注显示进货时间最早且最接近保质期中止时间的货物:
!?7=>入x|/十r।
!8多藏向文件进行排序!
:9
!0
请选择《0-9〉:2
显于所有商品
商品名称进货时间生产日期保质期〈年〉
才冒20160202201601031
未刷20161212201603041
才刷2016121220160304
耆按任意键继续...1
获得测试结果:
****同品系统****
;i.输X数据;
比鼬
:4.尊除赣据:
j5香我数据!
;6:毓牛笠显示进货时间最早且最接近保质期巾止时间的货物
:!8?-.原W文AX件F!!
:9.若读入的文件进行排序:
:0,迪田;
请选择<0-9):2
显于所有前品
商品名称进货时间生产日期保质期<年)
201506062015010110
20160202201601031
20160205201601042
20160506201604041
20161212201603041
请按任意键继续...
源程序
#include<stdio.h>/*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedefstruct/*定义结构体数组*/
{
charname[20];/*商品名称*/
inttime;/*进货时间*/
intyear;/*生产日期*/
intno;/*保质期*/
}goods;
goodsgs[80];/*结构体数组变量*/
intmenu_select()/*菜单函数*/
{
charc;
do{
system(z,clsz/);/*运营前清屏*/
printf(〃****商品系统****\n〃);/*菜单选择
*/
printf("|1.输入数据|\n");
printf("|2.显示数据|\rT);
printf("|3.插入数据I\n");
printf("|4.删除数据|\n");
printf(*|5.查找数据|'n");
printfC|6.记录并显示进货时间最早且最接
近保质期中止时间的货品|\n〃);
printfC|7.写入文献|\n〃);
printfC|8.读文献|\n〃);
printfC|9.对读入的文献进行排序|\n〃);
printf(,z|0.退出|\n〃);
xL**JL**L**J>
printf(〃XjXXT'SXT*ZrS✓TxZTSXT'S✓iXX7SXTSXTXX7SZ1XXTXZjSX1XXTXZjSXTSXjXXjSX1XXrxXjSZ1XXjXZ7SZTXxtxX|SZ|XXjXZ7SXTX
******\n〃);
printf(〃请选择(0-9):〃);
c=getchar();/*读入选择*/
}while(c<'O'||c〉'9');
return(c-'O');/*返回选择*/
voidSort_by_time(goodsgs[],intn)/*按进货时
间排序*/
inti,j,*a,*b,c,*p,*q,s,*m,*k,d,e,
f;
chart[10];
for(i=0;i<n-1;i++)/*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(gs[j].time>gs[j+1].time)
{
a=&gs[j+1].time;
b=&gs[j].time;
c二*a;
*a二*b;
*b=c;
strcpy(t,gs[j+1].name);
strcpy(gs[j+1].name,gs[j].name);
strcpy(gs[j].name,t);
P=&gs[j+1].year;
q=&gs[j].year;
s
*p=*q;
*q二s;
m=&gs[j+1].no;
k=&gs[j].no;
d二*m;
*m二*k;
*k=d;
}
elseif(gs[j].time==gs[j+1].time)
(
P=&gs[j].year;
a=&gs[j+1].year;
b=&gs[j].no;
q=&gs[j+1].no;
e=(*p)+(*b)*10000;
f=(*a)+(*q)*10000;
if(e>f)
a=&gs[j+1].time;
b=&gs[j].time;
c=*a;
*a二*b;
*b二c;
strcpy(t,gs[j+1].name);
strcpy(gs[j+1].name,gs[j].name);
strcpy(gs[j].name,t);
p=&gs[j+1].year;
q=&gs[j].year;
s二*p;
*p=*q;
*q二s;
m=&gs[j+1].no;
k=&gs[j].no;
d=*m;
*m=*k;
*k二d;
intInput(goodsgs[],intn)/*输入若干条记录*/
{
inti=0;
charsign=0,x[10];
while(sign!='n'&&sign!='N')/*判断*/
(
printf(〃商品名称:〃);/*交互输入*/
scanf(/z%s,z,gs[n+i].name);
printf(〃进货时间(例20230201):z/);
scanf&gs[n+i].time);
printf(〃生产日期(例20230201):");
scanf(,z%d/z,&gs[n+i].year);
printf(〃保质期(年期〃);
scanf(〃%d〃,&gs[n+i].no);
gets(x);/*清除多余的输入*/
printf("继续输入?(Y/N)");
scanf(,z%c,z,&sign);/*输入判断*/
i++;
Sort_by_time(gs,n+i);/*调用排序函数*/
return(n+i);
)
voidDisplay(goodsgs[],intn)/*显示所有记录
*/
{
inti;
printf(〃------------------------------------
--------------\n");/*格式头*/
printf(〃商品名称进货时间生产日
期保质期(年)\n〃);
printf(〃--------------------------------------
--------------\n〃);
for(i=1;i<n+1;i++)/*循环输入*/
(
printf(,z%-5s%d%d%d\n〃,
gs[i-1].name,gs[i-1].time,gs[i-1].year,
gs[i-1].no);
if(i>l&&i%10==0)/*每十个暂停*/
I
printf(〃--------------------------------------
\n");/*格式*/
system(,,pause,/);
printf(〃--------------------------------------
\n〃);
}
}
system("pause");/*按任何键继续*/
)
intInsert_a_record(goodsgs[],intn)/*插入一
条记录*/
{
charx[10];/*清除多余输入所用*/
printf("商品名称:");/*交互输入*/
scanf(〃%s〃,gs[n].name);
printf("进货时间:");
scanf(〃%d〃,&gs[n].time);
printf(〃生产日期:〃);
scanf&gs[n].year);
printf(〃保质期:〃);
scanf(〃%d〃,&gs[n].no);
gets(x);
n++;
Sort_by_time(gs,n);/*调月排序函数*/
printf("插入成功!\n");/*返回成功信息*/
return(n);
)
intDelete_a_record(goodsgs[],intn)/*按商品
名字查找,删除一条记录*/
{
chars[20];
inti=0,j;
printf(〃商品名称:〃);
scanf(/z%s,z,s);
whi1e(strcmp(gs[i].name,s)!=0&&i<n)i++;
/*查找判断*/
if(i二二n)
(
printf(〃没找到!\n〃);/*返回失败信息*/
return(n);
}
for(j=i;j<n-1;j++)/*删除操作*/
{
strcpy(gs[j].name,gs[j+1].name);
gs[j].time=gs[j+1].time;
gs[j].year=gs[j+1].year;
gs[j].no=gs[j+1].no;
}
printf(〃删除成功!\n〃);/*返回成功信息*/
return(n-1);
voidQueryarecord(goodsgs[],intn)/*查找并
显示一个记录*/
{
chars[20];
inti=0;
printf(〃输入要查找的商品名称:〃);
scanf(z,%s,z,s);
while(strcmp(gs[i].name,s)!=0&&i<n)i++;
/*查找判断*/
if(i==n)
{
printf(〃没找到!\n〃);/*输入失败信息*/
return;
}
printf("进贷时间:%d\n〃,gs[i].time);/*输出
该商品信息*/
printf(〃生产日期:%d\n〃,gs[i].year);
printf(〃保质期:%d\n〃,gs[i].no);
voidWritetoText(goodsgs[],intn)/*将所有记
录写入文献*/
{
inti=0;
FILE*fp;/*定义文献指针*/
if((fp=fopen(〃d:\\商品.doc”,〃wb〃))==NULL)
/*打开文献*/
{
printf(/,cann,topenthefile\n/z);
system("pause");
return;
fprintf(fp,/z%d\n,z,n);/*循环写入数据*/
while(i<n)
fprintf(fp,,z%-5s%d%d%d\n〃,
gs[i].name,gs[i].time,gs[i].year,gs[i].no);
i++;
}
fclose(fp);/*关闭文献*/
printf("Successed!\n〃);/*返回成功信息*/
)
intAddfromText(goodsgs[],intn)/*从文献中读
入数据*/
{
inti=0,num;
FILE*fp;/'*定义文献指针*/
if((fp=fopen(〃d:\\商品.doc〃,〃rb〃))==N
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 系统联合调试收尾方案
- 针织面料印染加工项目节能评估报告
- 选矿厂碎磨系统优化改造方案
- 田间药效对比试验实施设计方案
- 余热余压回收工程安全生产责任制度
- 城镇海绵城市落地实施技术方案
- 石灰石矿山开采项目初步设计
- 电力工程施工安全技术交底手册
- 建筑工程施工样板引路实施手册
- 给排水施工现场标准化手册
- 信息管理岗位笔试题国企及答案
- 2026年江苏省初级注册安全工程师考试真题及答案
- 2026年大学计算机基础期末考试仿真题解析
- 兽医实验室管理制度
- 临床腹腔内压力经膀胱间接测量技术解读及实践经验共享
- 2026年达芬奇调色考证通关练习题附完整答案详解(名师系列)
- 2025-2026学年江苏省无锡市译林版(三起)四年级上册英语期末试卷
- 2026年法语口译考试模拟题及听力材料
- 卫生院统战工作制度
- 初中英语《从句辨析》专项练习与答案 (100 题)
- 2024中建临建标准化图册(可编辑版)
评论
0/150
提交评论