商店存货管理系统Word文档下载推荐.docx
- 文档编号:22603900
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:29
- 大小:262.03KB
商店存货管理系统Word文档下载推荐.docx
《商店存货管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《商店存货管理系统Word文档下载推荐.docx(29页珍藏版)》请在冰豆网上搜索。
5.程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
1.2.3运行环境
该程序的运行环境为Windowsxp系统,MicrosoftVisualC++6.0版本。
1.3课程设计分析
1)需要定义一个构造体数组,其中name表示商品的名称,time表示商品
的进货时间,year表示商品的生产日期,no表示商品的保质期。
2)利用冒泡法,对商品进展排序。
3)选择需要的功能,其中功能包括商品的最原始添加,商品的插入,删除,查找,将数据写入文件中,从文件中读出数据等操作。
4)选择输入0~9,10个数的其中一个数,进展相应的操作。
5)进展完所的操作之后,选择保存功能,将数据保存到文件中。
6)退出程序。
1.4算法描述
1)先定义一个商品的构造体数组:
typedefstruct/*定义构造体数组*/
{
charname[20];
/*商品名称*/
inttime;
/*进货时间*/
intyear;
/*生产日期*/
intno;
/*保质期*/
}goods;
2)建立一个菜单函数,显示10个功能,供用户选择,进展人机对话。
3)设置一个排序的函数,intshuru(shangpgs[],intn)。
利用冒泡法先对商品按进货的时间排序,对进货时间一样的货物,再按离保质期最近排序。
4)设置一个输入的函数,intInput(goodsgs[],intn)。
这个函数是最初商品输入函数,中选择了这个功能后,如果是第一次运行这个程序,保存输入,那将在D盘产生一个名为“商品.doc〞的文件,如果已经运行过了,并保存输入,那输入的商品信息将代替原有的信息,数据输入使用交互输入,进展人机对话,确定是否进展下一个数据的添加。
并且调用了上面的排序函数,对输入的数据进展排序。
5)设置一个显示的函数,voidshuchu(goodsgs[],intn)。
显示上面输入的所有数据,或者是从文件中读取的数据。
6)设置一个插入的函数,intcharu(goodsgs[],intn)。
每次插入一组数据,如果要再插入,那么再选择这个功能进展操作。
并且在插入的同时,已经排好序,把数据插入适合的位置。
7)设置一个查找删除的函数,intchazhaoxianshi((goodsgs[],intn)。
输入要查找的商品名称,如果不存在,那么输出失败信息,如果存在,那么用下一个信息代替原有信息的位置。
8)设置一个查找显示的函数voidchazhaoxianshi(goodsgs[],intn)。
输入要查找的商品名称,如果不存在,那么输出失败信息,如果存在,那么显示信息。
9)设置一个写入文件的函数,voidxiewenjian(goodsgs[],intn)。
设置文件指针,先判断文件是否能翻开并且能进展写操作,不能那么输出失败信息,能那么循环写入数据,写完关闭文件。
10)设置一个读文件的函数,intduwenjian(goodsgs[],intn)。
设置文件指针,判断文件是否能翻开而且能进展读操作,能那么先读出总的数据量,接着循环读出数据,最后关闭文件。
11)进入最后一步,main函数。
判断选择的操作,根据用户选择的操作,利用switch语句进展相应的函数调用。
12)选择保存功能,对数据进展保存,然后选择完毕程序退出功能,退出程序。
paixu(gs,n)
初始条件:
数据已经存在
操作结果:
数据进展排序
shuru(gs,n)
没有任数据存在,或者要替换原文件中的所有数据
数据进展输入
shuchugs,n)
数据显示
charu(gs,n)
数据插入
chanchu(gs,n)
数据删除
chazhaoshanchui(gs,n)
数据统计
xiewenjian(gs,n)
写入文件中
duwenjian(gs,n)
文件已经存在
从文件中读出
1.4流程图:
1.5源代码
#include<
stdio.h>
/*引用库函数*/
stdlib.h>
ctype.h>
string.h>
goodsgs[80];
/*构造体数组变量*/
intmenu_select()/*菜单函数*/
charc;
do{
system("
cls"
);
/*运行前清屏*/
printf("
\t\t****商品系统****\n"
/*菜单项选择择*/
\t\t|1.输入数据|\n"
\t\t|2.显示数据|\n"
\t\t|3.插入数据|\n"
\t\t|4.删除数据|\n"
\t\t|5.查找数据|\n"
\t\t|6.统计并显示进货时间最早且最接近保质期中止时间的货物|\n"
\t\t|7.写入文件|\n"
\t\t|8.读文件|\n"
\t\t|9.对读入的文件进展排序|\n"
\t\t|0.退出|\n"
\t\t*****************************************\n"
\t\t\t请选择(0-9):
"
c=getchar();
/*读入选择*/
}while(c<
'
0'
||c>
9'
return(c-'
/*返回选择*/
}
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;
*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)
{
e=(*p)+(*b)*10000;
f=(*a)+(*q)*10000;
if(e>
f)
{
a=&
}
intInput(goodsgs[],intn)/*输入假设干条记录*/
{
inti=0;
charsign,x[10];
while(sign!
='
n'
&
sign!
N'
)/*判断*/
{
\t\t\t商品名称:
/*交互输入*/
scanf("
\t\t\t%s"
gs[n+i].name);
\t\t\t进货时间(例20070201):
\t\t\t%d"
&
gs[n+i].time);
\t\t\t生产日期(例20070201):
gs[n+i].year);
\t\t\t保质期(年):
gs[n+i].no);
gets(x);
/*去除多余的输入*/
\t\t\t继续输入?
(Y/N)"
\t\t\t%c"
sign);
/*输入判断*/
i++;
}
Sort_by_time(gs,n+i);
/*调用排序函数*/
return(n+i);
voidDisplay(goodsgs[],intn)/*显示所有记录*/
inti;
\t\t------------------------------------------------\n"
/*格式头*/
\t\t商品名称进货时间生产日期保质期(年)\n"
for(i=1;
n+1;
i++)/*循环输入*/
\t\t%-5s%d%d%d\n"
gs[i-1].name,gs[i-1].time,gs[i-1].year,gs[i-1].no);
if(i>
1&
i%10==0)/*每十个暂停*/
printf("
\t\t\t-----------------------------------\n"
/*格式*/
\t\t\t"
pause"
/*按任键继续*/
intInsert_a_record(goodsgs[],intn)/*插入一条记录*/
charx[10];
/*去除多余输入所用*/
gs[n].name);
\t\t\t进货时间:
gs[n].time);
\t\t\t生产日期:
gs[n].year);
\t\t\t保质期:
gs[n].no);
n++;
Sort_by_time(gs,n);
\t\t\t插入成功!
\n"
/*返回成功信息*/
return(n);
intDelete_a_record(goodsgs[],intn)/*按商品名字查找,删除一条记录*/
chars[20];
inti=0,j;
%s"
s);
while(strcmp(gs[i].name,s)!
=0&
n)i++;
/*查找判断*/
if(i==n)
\t\t\t没找到!
/*返回失败信息*/
for(j=i;
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;
\t\t\t删除成功!
return(n-1);
voidQuery_a_record(goodsgs[],intn)/*查找并显示一个记录*/
\t\t\t输入要查找的商品名称:
/*输入失败信息*/
return;
\t\t\t进贷时间:
%d\n"
gs[i].time);
/*输出该商品信息*/
gs[i].year);
gs[i].no);
voidWritetoText(goodsgs[],intn)/*将所有记录写入文件*/
FILE*fp;
/*定义文件指针*/
if((fp=fopen("
d:
\\商品.doc"
"
wb"
))==NULL)/*翻开文件*/
\t\t\tcann'
topenthefile\n"
fprintf(fp,"
n);
/*循环写入数据*/
while(i<
n)
%-5s%d%d%d\n"
gs[i].name,gs[i].time,gs[i].year,gs[i].no);
fclose(fp);
/*关闭文件*/
\t\t\tSuccessed!
intAddfromText(goodsgs[],intn)/*从文件中读入数据*/
inti=0,num;
rb"
{
/*翻开失败信息*/
}
fscanf(fp,"
%d"
num);
/*读入总记录量*/
num)/*循环读入数据*/
%s%d%d%d"
gs[n+i].name,&
gs[n+i].time,&
gs[n+i].year,&
n+=num;
voidmain()/*主函数*/
intn=0;
for(;
;
)
switch(menu_select())/*选择判断*/
case1:
\t\t\t输入最初商品\n"
/*输入假设干条记录*/
n=Input(gs,n);
break;
case2:
\t\t\t显示所有商品\n"
/*显示所有记录*/
Display(gs,n);
case3:
\t\t\t插入\n"
n=Insert_a_record(gs,n);
/*插入*/
case4:
\t\t\t删除\n"
n=Delete_a_record(gs,n);
/*按商品名称查找,删除*/
case5:
\t\t\t查找并显示\n"
Query_a_record(gs,n);
/*查找并显示*/
case6:
\t\t\t统计并显示进货时间最早且最接近保质期中止时间的货物\n"
\t\t\t共有%d件商品.\n"
/*总共记录数*/
\t\t\t进货时间最早且最接近保质期中止时间的货物:
\t\t\t商品名称r:
%s\n"
gs[0].name);
gs[0].time);
gs[0].year);
%d\n\n"
gs[0].no);
case7:
\t\t\t写到文件中\n"
WritetoText(gs,n);
case8:
\t\t\t文件中读数据\n"
n=AddfromText(gs,n);
/*文件中读数据*/
case9:
\t\t\t\n"
/*对读入的文件进展排序*/
case0:
\t\t\t完毕退出!
/*完毕程序*/
exit(0);
1.6运行结果分析
1.初始界面:
〔从D盘读入已准备好的文件数据〕
2.选择功能8并选择功能2,显示最初的数据:
3.对读出的文件进展排序,选功能9,再选功能2,进展显示:
4.选择功能3,进展插入操作,选择功能2,进展显示:
5.选择功能4,进展删除操作,第一种情况为找不到要删除的商品数据:
接下去这个是另一种情况,即找到要删除的商品数据并按功能2,显示:
6.选择功能5,第一种情况为找不到要查找的数据:
第二种为存在情况
7.选择功能6:
8.选择功能7:
9.选择功能0,退出程序。
题目一一种排序〔难度:
3〕
1题目要求
1.1问题描述
描述
现在有很多长形,每一个长形都有一个编号,这个编号可以重复;
还知道这个长形的宽和长,编号、长、宽都是整数;
现在要求按照一下式排序〔默认排序规那么都是从小到大〕;
1.按照编号从小到大排序
2.对于编号相等的长形,按照长形的长排序;
3.如果编号和长都一样,按照长形的宽排序;
4.如果编号、长、宽都一样,就只保存一个长形用于排序,删除多余的长形;
最后排好序按照指定格式显示所有的长形;
输入
第一行有一个整数0<
n<
10000,表示接下来有n组测试数据;
每一组第一行有一个整数0<
m<
1000,表示有m个长形;
接下来的m行,每一行有三个数,第一个数表示长形的编号,
第二个和第三个数值大的表示长,数值小的表示宽,相等
说明这是一个正形〔数据约定长宽与编号都小于10000〕;
输出
顺序输出每组数据的所有符合条件的长形的编号长宽
样例输入
1
8
111
1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 商店 存货 管理 系统