C语言商店商品管理系统设计报告及源代码Word文件下载.docx
《C语言商店商品管理系统设计报告及源代码Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言商店商品管理系统设计报告及源代码Word文件下载.docx(31页珍藏版)》请在冰豆网上搜索。
longintprice;
/*商品单价*/
}goods[200];
/*最多200个商品*/
2系统设计
2.1总体设计
按系统分析的功能要求将系统划分为以下几个主要功能模块:
一、文件管理
⏹文件打开、关闭:
对于刚输入或进行操作后的商品信息,在建立新的商品库存量后,可以把其保存在一个文件中,并对该文件可进行打开和关闭操作。
二、进出货管理
⏹商品进货:
输入数据后商品信息能自动更新进行添加
⏹商品销售:
输入数据后商品信息能自动更新进行减少
三、商品数据管理
⏹增加/删除商品:
添加或删除某条商品的信息
⏹修改商品信息:
对某条商品的信息进行修改
四、浏览商品信息管理
⏹查询商品信息:
可分别按商品编号、名称、类别或需要进货商品查询
⏹排序商品信息:
可按商品编号、名称、类别分别排排序
⏹浏览商品信息:
可浏览输入、查询或排序后的数据。
(此处可用图形描述功能模块划分,类似下图)
2.2详细设计
2.2.1界面设计
1、菜单设计
⏹欢迎界面:
⏹系统提示:
⏹菜单设计:
2、输入界面的设计
3、信息显示界面的设计
2.2.2各功能模块的设计
根据划分的功能模块,定义以下函数实现各功能:
(这部分应介绍各函数的原型,各功能模块实现所用的算法,可用流程图描述)
1、主函数main()
定义主函数为空类型(void);
利用选择结构(switch)实现在在主函数中的调用各个子函数,利用goto和子函数中的return语句实现返回主菜单的循环。
声明各个子函数
输出欢迎界面
输出菜单
switch(m)
1
输入商品信息
2
排序商品信息
3
输入商品进货信息
4
输入商品销售信息
5
增加/删除商品
6
修改商品信息
7
查询商品信息
8
浏览商品信息
9
保存商品信息
清屏幕
2、子函数
(1)voidinput():
<
输入函数>
确定新的库存量n,输入商品信息,用for循环语句直到输入商品种类等于n,结束输入;
scanf(n)
for(i=0;
i<
=n;
i++)
将数据存入结构体成员
return
(2)voidsequence():
排序函数>
对已有的商品进行排序,可按商品编号、名称、类别进行排序;
longtemp;
charp1[30],p2[30];
按编号排序
for(k=0;
k<
n-1;
k++);
n-k-1;
if(goods[i].num>
goods[i+1].num)
是
排序
输出排序后结果
按名称排序
k++)for(i=0;
if(strcmp(goods[i].name,goods[i+1].name)>
0)
按类别排序
k++)for(i=0;
if(strcmp(goods[i].sort,goods[i+1].sort)>
(3)voidpurchase():
进货函数>
进货函数主要是针对已有库存的商品,在原来的商品数量再增加:
for(i=0;
n;
if(temp==goods[i].num);
输入数量
Return
(4)voidsale():
销售函数>
要求用户输入所销售的编号,系统用for循环查询该商品是否存在,不存在要求再进行输入,直到输入正确,输出销售商品:
if(k==goods[i].num)
if(a>
goods[i].count)
出现输入错误提示;
重新输入scanf;
i++)
输出销售商品
(5)voidedit():
添加/删除商品>
因为在进货函数已经实现对已有商品的数量的增加,此模块函数主要实现对新商品的添加或对旧商品的删除,并自动处理数据,可以在浏览中输出,用选择语句switch进行俩者操作的选择:
定义变量longtemp;
声明函数voidadd();
voiddele();
switch(k)
k=1k=2
add();
dele();
break;
(6)voidcorrect():
修改数据函数>
对有错误信息商品进行修改,输入需要修改的商品编号,用for循环与if语句找到此商品,重新输入该商品的新信息,并输出:
longtemp;
scanf(temp);
if(temp==goods[i].num)
输入新信息
输出修改后商品信息
(7)voidsearch():
查询函数>
用switch(k)语句可分别按商品编号、名称、类别或需要进货商品查询;
每个case选择中均用for语句查找要查询的商品,并输出查询结果。
longtemp1;
chartemp2[20],temp3[20];
switch(k)
case(k)
输出查询商品信息
(8)voidscan():
浏览商品函数>
可分别进行浏览输入的商品信息、查询的商品信息、排序后商品信息,用switch进行这三种方式的选择。
scnaf()
case
输出所要浏览信息;
(9)voidreserve():
保存文件>
建立文件FILE*fp;
charfile[15]用来存放文件保存路径以及文件名,进行清屏,输入文件路径及文件名,利用fp=fopen("
file"
"
w+"
)实现创建并打开一个文件,并得到该文件的地址的功能,显示fprintf(fp,"
商品编号\t商品名\t商品类别\t商品数量\t商品价格\n"
);
最后输出已保存文件,程序中是由PR("
语句执行。
3系统编码设计
(这部分将代码列出,注意,每个函数开始处要介绍函数的功能,重要的代码应有注释,代码格式按锯齿式编排)
3.1main函数
#include"
stdio.h"
string.h"
stdlib.h"
#definePRprintf
#defineSCscanf
structgoods
intk,n,i;
voidmain()
{
voidinput();
voidsequence();
voidpurchase();
voidsell();
voidedit();
voidcorrect();
voidsearch();
voidscan();
voidreserve();
voidexit();
PR("
\n******************************************************************\n*\t\t\t\t\t\t\t\t*\n"
*▏▎▍▌▋▊█▇▆▅▄▃▂▁*"
\n*\t\t\t\t\t\t\t\t*\n*Welcome\t\t\t\t\t\t*\n*\t\t\t\t\t\t\t\t*\n"
*\t\ttogointo....\t\t\t\t*"
\n*\t\t\t\t\t\t\t\t*\n"
*-theGoodsInformationManageaentSystem-*\n*\t\t\t\t\t\t\t\t*\n"
*▁▂▃▄▅▆▇█▉▊▋▌▍▏*\n"
*\t\t\t\t\t\t\t\t*\n******************************************************************"
\n\n\tPleasepressanykeytocontinue:
"
getch();
system("
cls"
\n\n---$-----$--------$----------$-----------$---------$-------$------$-----$---"
\n系统使用--温馨提示:
\n\n→商品编号、数量、单价:
采用十进制数,规定长度最长为8位;
\n\n→商品名称为26位字母组成字符串,长度最长为20位;
\n\n\t→商品类别:
以26个小写字母分别代表着26种商品类别;
\n\n\t→该商品需要进货的库存量:
count<
50;
\n"
---$-----$--------$----------$-----------$---------$-------$------$-----$---"
\npleasepressanykeytocontinue"
/*清屏*/
lp:
1;
\n\n——★—☆——★—☆——☆—★——☆—★——☆—☆——★—\n"
\n\t\t\t商品信息管理系统\t\n\n"
\t1→输入商品信息\n\n"
\t2→排序商品信息\n\n"
\t3→输入进货信息\t\t6→修改商品信息\n\n"
\t4→输入销售信息\t\t7→查询商品信息\n\n"
\t5→增加/删除商品\t\t8→浏览商品信息\n\n"
\t\t\t\t\t9→保存商品信息\n\n"
\t\t——☆—★——☆—★——☆—☆——★—☆——★—☆——★—"
/*菜单选择界面*/
\n\n"
\t请选择您所要的操作(或选择(0)退出):
SC("
%d"
&
k);
switch(k)/*用switch语句实现功能选择*/
{
case1:
input();
break;
case2:
sequence();
case3:
purchase();
case4:
sell();
case5:
edit();
case6:
correct();
case7:
search();
case8:
scan();
case9:
reserve();
case0:
\n\n\t/////^_^\\\\\\\\\\\n\n\t…………使用,欢迎再来,再见O(∩_∩)O…………"
exit(0);
/*退出系统*/
default:
puts("
输入错误,请按任意健返回主菜单:
}
gotolp;
/*返回主界面*/
}
voidinput()/*功能1:
输入商品信息*/
\n请输入需要建立新库存的商品种类数量:
n);
\n…………………………………………………………………………………………………\n"
i++)/*用循环实现输入n个商品*/
PR("
\n\t*请输入商品的编号:
SC("
%ld"
goods[i].num);
\n\t请输入商品的名称:
%s"
goods[i].name);
\n\t请输入商品的种类:
goods[i].sort);
\n\t请输入商品的数量:
goods[i].count);
\n\t请输入商品的单价:
goods[i].price);
\tPleasepressanykeytocontinue:
getch();
return;
/*返回主界面*/
voidsequence()/*功能2:
排序商品信息*/
{
for(k=0;
k++)/*
(1):
按编号排序*/
i++)/*用起泡法排序*/
if(goods[i].num>
goods[i+1].num)/*按编号由小到大排序*/
temp=goods[i].num;
goods[i].num=goods[i+1].num;
goods[i+1].num=temp;
strcpy(p1,goods[i].name);
strcpy(goods[i].name,goods[i+1].name);
strcpy(goods[i+1].name,p1);
strcpy(p2,goods[i].sort);
strcpy(goods[i].sort,goods[i+1].sort);
strcpy(goods[i+1].sort,p2);
--------------------------------------------------------------------------------"
\n\t\t按商品编号排序后的商品信息\n\n"
\t商品编号商品名称商品类别商品数量商品单价\n"
/*输出排序后商品信息*/
for(i=0;
\t%5ld%5s%5s%5ld%5ld\n"
goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);
k++)/*
(2):
按商品名称排序*/
if(strcmp(goods[i].name,goods[i+1].name)>
strcpy(p1,goods[i].name);
strcpy(goods[i].name,goods[i+1].name);
strcpy(goods[i+1].name,p1);
temp=goods[i].num;
goods[i].num=goods[i+1].num;
goods[i+1].num=temp;
strcpy(p2,goods[i].sort);
strcpy(goods[i].sort,goods[i+1].sort);
strcpy(goods[i+1].sort,p2);
\n\t\t按商品名称排序后的商品信息\n"
\n\t商品名称商品编号商品类别商品数量商品单价\n"
\t%5s%5ld%5s%5ld%5ld\n"
goods[i].name,goods[i].num,goods[i].sort,goods[i].count,goods[i].price);
k++)/*(3):
按商品类别排序*/
if(strcmp(goods[i].sort,goods[i+1].sort)>
\n\t\t按商品类别排序后的商品信息\n\n"
\t商品类别商品编号商品名称商品数量商品单价\n"
goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
pleasepressanykeytocontinue:
return;
voidpurchase()/*功能3:
进货商品信息*/
/*定义临时变量表示刚进货的商品编号*/
intj;
\n\t\5请输入刚进货的商品编号:
temp);
\n\t\5请输入刚进货的商品数量:
j);
\n\n\n\tpressanykeytocontiue:
\n\t输出进货后的商品信息:
i++)/*循环,寻找与进货相同的商品信息*/
goods[i].count=goods[i].count+j;
/*自动更改商品数量*/
\n\t商品编号商品名商品类别商品数量商品价格"
i++)/*循环,输出进货后的商品信息*/
\n\t%4ld%4s%4s%ld%4ld"
}
\n\n\t\tPressanykeytoentermenu:
/*返回功能选择界面*/
voidsell()/*功能4:
销售商品信息*/
/*定义临时变量temp表示刚销售的商品编号*/
\n\t\5请输入刚销售的商品编号:
\n\t\5请输入刚销售的商品数量:
i++)/*循环,找到刚销售的商品信息*/
for(;
j>
goods[i].count;
)/*如果销售额大于库存量,则出现错误提示*/
\n\t售出数量大于商品原有数量,出现错误,请重新输入:
goods[i].count=goods[i].count-j;
/*完成自动更改商品数量的功能*/