超市商品管理系统c语言Word格式文档下载.docx
- 文档编号:22499118
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:29
- 大小:613.27KB
超市商品管理系统c语言Word格式文档下载.docx
《超市商品管理系统c语言Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《超市商品管理系统c语言Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
可分别按商品编号和需要进货的商品进行查询。
6、排序功能
可分别按商品编号、金额等进行排序。
7、数据显示功能
可分别浏览输入、查询和排序后的商品信息。
2、总体设计图
采用模块化程序设计方法,将较大任务按一定规则分成一些较小任务,各个模块之间既独立又相关。
2.1界面设计
主菜单
输入界面:
信息显示界面:
2.2详细设计:
(以下为部分代码)
2.2.1数据结构设计
structgoods
{
intnum;
//编号
charname[15];
//名称
doubleprice;
//单价
doublecount;
//数量
doubletotal;
//总金额
};
structgoodscomm[50];
//定义结构体数组
结构体structgoods将用于存储商品的基本信息
1、主函数main()
定义主函数为空类型(void);
利用选择结构(switch)实现在在主函数中的调用各个子函数。
main()函数执行流程
system("
colorf3"
);
改变颜色
system("
title超市商品信息管理系统"
修改窗口名称
输出菜单
switch
1
输入商品信息
2
查找商品信息
3
删除商品信息
4
修改商品信息
5
按总金额排序商品信息
6
按库存商品信息
7
查询缺货商品
8
浏览商品信息
退出
清屏幕
intmain(void)
intn;
//改变颜色
//修改窗口名称
menu();
//显示主菜单
scanf("
%d"
&
n);
//输入选择功能的编号
while(n)
{
switch(n)
{
case1:
in();
break;
//输入商品信息
case2:
find();
//查找商品信息
case3:
del();
//删除记录
case4:
modify();
//修改记录
case5:
order();
//按总金额排序
case6:
orderstock();
//按库存排序
case7:
findOOS();
//outofStock,查找无库存商品
case8:
show();
//显示商品信息
default:
}
getch();
menu();
//执行完功能再次显示主菜单
scanf("
}
return0;
}
2、子函数
(1)voidin();
录入商品信息用while语句循环,直到用户输入n结束录入;
voidin()
inti,a,m=0;
//m记录的条数
charc,h;
FILE*fp;
//定义文件指针
if((fp=fopen("
data.txt"
"
a+"
))==NULL)//打开文件
printf("
不能打开\n"
return;
while(!
feof(fp))
if(fread(&
comm[m],len,1,fp)==1)
m++;
fclose(fp);
if(m==0)
没有找到\n"
else
system("
cls"
wb"
))==NULL)
不能打开"
for(i=0;
i<
m;
i++)
fwrite(&
comm[i],len,1,fp);
//向指定磁盘文件写入信息
while
(1)
a=0;
请输入\n"
编号:
"
comm[m].num);
//商品编号
for(i=0;
{
if(comm[i].num==comm[m].num)
{a=1;
printf("
该记录已存在,按q返回主菜单,按任意键重新输入"
scanf("
%s"
c);
break;
}
if(a==1&
&
(c==113||c==81))//判断q是否被按下
break;
else
if(a==1&
(c!
=113||c!
=81))
{
system("
continue;
printf("
商品名:
comm[m].name);
//输入商品名称
单价:
%lf"
comm[m].price);
//输入商品单价
数量:
comm[m].count);
//输入商品数量
comm[m].total=comm[m].price*comm[m].count;
//计算出总金额
if(fwrite(&
comm[m],len,1,fp)!
=1)//将新录入的信息写入指定的磁盘文件
不能保存!
getch();
%s已经保存!
\n"
是否继续?
(y/n):
//询问是否继续
h);
if(h==121||h==89)
continue;
printf("
OK!
(2)voidfind()
用户输入商品编号进行查找,找到则显示,找不到则返回主菜单;
{
intsnum,i,m=0;
charc;
rb"
{
不能打开文件\n"
feof(fp))
comm[m],len,1,fp)==1)
fclose(fp);
if(m==0)
没有记录,请使用“输入记录”功能添加记录\n"
return;
请输入编号:
snum);
if(snum==comm[i].num)//查找输入的编号是否在记录中
{
printf("
已经找到该记录,是否显示?
(y/n)"
scanf("
if(c==121||c==89)//判断y是否被按下
{
printf("
编号商品名称单价数量总金额\t\n"
printf(form,data);
//将查找出的结果按指定格式输出
break;
}
else
return;
}
if(i==m)
没有找到相应的记录!
//未找到要查找的信息
(3)voiddel()
删除函数,输入商品编号删除相关商品;
voiddel()
intsnum,i,j,m=0;
chara;
if((fp=fopen("
r+"
))==NULL)//打开文件
没有记录!
if(snum==comm[i].num)
break;
if(i==m)
{
没有找到!
getchar();
return;
已经找到该记录,是否删除?
a);
if(a==121||a==89)//判断是否要进行删除
for(j=i;
j<
j++)
comm[j]=comm[j+1];
//将后一个记录移到前一个记录的位置
m--;
//记录的总个数减1
成功删除!
if((fp=fopen("
))==NULL)
不能打开!
for(j=0;
j++)//将更改后的记录重新写入指定的磁盘文件中
if(fwrite(&
comm[j],len,1,fp)!
=1)
getch();
fclose(fp);
(4)voidmodify()
修改函数,输入商品编号用for循环与if语句找到该商品信息并进行修改;
inti,j,m=0,snum;
不能打开文件!
请输入要修改的记录信息的编号\n编号:
i++)//检索记录中是否有要修改的信息
if(snum==comm[i].num)
if(snum!
=comm[i].num)//判断是否有记录
没有找到记录,请重试\n"
已经找到该记录,可以进行修改!
comm[i].name);
//输入名字
comm[i].price);
//输入商品单价
comm[i].count);
修改成功!
comm[i].total=comm[i].price*comm[i].count;
j++)//将新修改的信息写入指定的磁盘文件中
(5)voidfindOOS()
查找无货商品,用for循环与if语句找到该商品信息,并显示;
inti,m=0;
if((fp=fopen("
if(fread(&
comm[m],len,1,fp)==1)
以下商品缺货:
\n\n编号商品名称单价数量总金额\t\n"
if(0.0==comm[i].count)//查找是否有误库存商品
printf(form,data);
//将查找出的结果按指定格式输出
if(i==m)
——————查找完毕————————————————\n"
//完成查找
(6)voidorder()
按金额对商品进行由多到少排序
structgoodst;
inti=0,j=0,m=0;
cannotopen!
return;
if(fread(&
comm[m],len,1,fp)==1)
m++;
if(m==0)
norecord!
))==NULL)
cannotopen\n"
m-1;
for(j=i+1;
j++)//双重循环实现比较并交换
if(comm[i].total<
comm[j].total)
t=comm[i];
comm[i]=comm[j];
comm[j]=t;
i++)//将重新排好序的容重新写入指定的磁盘文件中
comm[i],len,1,fp)!
%scannotsave!
保存成功!
(7)voidorderstock()
按商品数量对商品进行由多到少排序
//定义文件指针
))==NULL)//打开文件
无法打开\n"
if(fread(&
comm[m],len,1,fp)==1)
if(comm[i].count<
comm[j].count)
if((fp=fopen("
if(fwrite(&
comm[i],len,1,fp)!
%s无法保存\n"
(8)voidshow()
显示商品信息
))==NULL)//打开文件
if(fread(&
商品信息:
for(i=0;
i<
m;
i++)
//将商品信息按指定格式输出
———————显示完毕,按任意键返回主菜单————————\n"
3、程序测试
●在主菜单中选择1
当用户输入1并按回车键后,即可进入数据输入界面。
若是第一次运行该程序,应能实现从键盘输入学生信息到文件中,当输入的编号重复时,应能不予接收,当输入完时提示是否继续,按y继续,按n结束输入,返回主菜单界面。
若非第一次运行该程序,应能实现从文件中读入商品信息,并进入增加商品记录画面。
其输入记录过程如下图所示
●在主菜单中选择2
当用户输入2并按回车键后,即可进入记录查找界面。
其查找记录过程如下图所示,可按编号进行查找。
●在主菜单中选择3
当用户输入3并按回车键后,即可进入记录删除界面。
其删除记录过程如下图所示,这里按编号删除了一条编号为2的记录。
●在主菜单中选择4
当用户输入4并按回车键后,即可进入记录修改界面。
其修改记录过程如下图所示,将编号为1的记录修改。
●在主菜单中选择5或6
当用户输入7并按回车键后,即可进入记录排序界面。
其排序结果如下图所示,有排序前和排序后的记录输出结果。
排序前
排序后
●在主菜单中选择7
当用户输入7并按回车键后,即可显示无货商品。
其结果如图3.7所示。
●在主菜单中选择8
当用户输入8并按回车键后,即可显示全部商品信息。
其排序结果如图所示。
4、总结
3.1开发经验
通过对本题目的开发,体会到要掌握以下几点容。
●大程序的设计风格。
按“自顶向下,逐步细化,模块化”的方法进行程序设计。
●编写主函数,并进行测试与调试。
当被调函数又需要调用其他函数时,也要遵循逐步细化的原则。
C语言提供丰富的库函数,编程序时要善于使用库函数,避免不必要的劳动。
●定义函数时,应选好参数的个数和数据类型。
●文件使用方法。
文件使用完毕后应及时关闭。
3.2设计存的不足之处
关于这次的程序,也有许多不足的地方.
由于个人水平有限有部分重要功能没有实现,如商品录入日期管理,商品厂家名以及商品批次等。
这些在现实的超市商品管理中是经常用到的。
完美的程序是不存在的,而且由于时间仓促,这套程序也难免有瑕疵,希望老师批评指正。
3.3感想和心得体会
通过这次实训,我深切感受到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超市 商品 管理 系统 语言
![提示](https://static.bdocx.com/images/bang_tan.gif)