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