1、 long int price; /*商品单价*/ goods200; /*最多200个商品*/2 系统设计2.1 总体设计按系统分析的功能要求将系统划分为以下几个主要功能模块:一、文件管理文件打开、关闭:对于刚输入或进行操作后的商品信息,在建立新的商品库存量后,可以把其保存在一个文件中,并对该文件可进行打开和关闭操作。二、进出货管理商品进货: 输入数据后商品信息能自动更新进行添加商品销售: 输入数据后商品信息能自动更新进行减少三、商品数据管理增加/删除商品: 添加或删除某条商品的信息修改商品信息: 对某条商品的信息进行修改四、浏览商品信息管理查询商品信息:可分别按商品编号、名称、类别或需要进
2、货商品查询排序商品信息: 可按商品编号、名称、类别分别排排序浏览商品信息:可浏览输入、查询或排序后的数据。(此处可用图形描述功能模块划分,类似下图)2.2 详细设计2.2.1 界面设计1、菜单设计欢迎界面:系统提示:菜单设计:2、输入界面的设计3、信息显示界面的设计2.2.2 各功能模块的设计根据划分的功能模块,定义以下函数实现各功能:(这部分应介绍各函数的原型,各功能模块实现所用的算法,可用流程图描述)1、主函数main()定义主函数为空类型(void);利用选择结构(switch)实现在在主函数中的调用各个子函数,利用goto 和子函数中的return语句实现返回主菜单的循环。声明各个子函
3、数输出欢迎界面输出菜单switch(m)1输入商品信息2排序商品信息3输入商品进货信息4输入商品销售信息5增加/删除商品6修改商品信息7查询商品信息8浏览商品信息9保存商品信息清屏幕2、子函数(1)void input():确定新的库存量n,输入商品信息,用for循环语句直到输入商品种类等于n,结束输入;scanf(n)for(i=0;i对已有的商品进行排序,可按商品编号、名称、类别进行排序;long temp; char p130,p230;按编号排序for(k=0;kgoodsi+1.num) 是 排序输出排序后结果按名称排序k+) for(i=0;if(strcmp(goodsi.nam
4、e,goodsi+1.name)0)按类别排序k+) for(i=0;if(strcmp(goodsi.sort,goodsi+1.sort)(3)void purchase(): 进货函数 进货函数主要是针对已有库存的商品,在原来的商品数量再增加: for(i=0;n;if(temp=goodsi.num); 输入数量 Return (4)void sale(): 销售函数 要求用户输入所销售的编号,系统用for 循环查询该商品是否存在,不存在要求再进行输入,直到输入正确,输出销售商品:if(k=goodsi.num)if(agoodsi.count) 出现输入错误提示;重新输入scanf;
5、i+) 输出销售商品(5)void edit(): 添加/删除商品 因为在进货函数已经实现对已有商品的数量的增加,此模块函数主要实现对新商品的添加或对旧商品的删除,并自动处理数据,可以在浏览中输出,用选择语句switch进行俩者操作的选择:定义变量long temp; 声明函数void add(); void dele();switch(k) k=1 k=2 add(); dele(); break;(6)void correct(): 修改数据函数 对有错误信息商品进行修改,输入需要修改的商品编号,用for 循环与if语句找到此商品,重新输入该商品的新信息,并输出: long temp; s
6、canf(temp); if(temp=goodsi.num)输入新信息 输出修改后商品信息(7)void search(): 查询函数 用switch(k)语句可分别按商品编号、名称、类别或需要进货商品查询;每个case选择中均用for语句查找要查询的商品,并输出查询结果。 long temp1; char temp220,temp320; switch(k) case(k) 输出查询商品信息(8)void scan(): 浏览商品函数 可分别进行浏览输入的商品信息、查询的商品信息、排序后商品信息,用switch 进行这三种方式的选择。 scnaf ( ) case 输出所要浏览信息;(9)
7、void reserve(): 保存文件 建立文件FILE *fp;char file15用来存放文件保存路径以及文件名,进行清屏,输入文件路径及文件名,利用fp=fopen(file,w+)实现创建并打开一个文件,并得到该文件的地址的功能,显示fprintf(fp,商品编号t商品名 t商品类别t商品数量t商品价格n); 最后输出已保存文件,程序中是由PR(语句执行。3 系统编码设计(这部分将代码列出,注意,每个函数开始处要介绍函数的功能,重要的代码应有注释,代码格式按锯齿式编排)3.1 main函数#include stdio.hstring.hstdlib.h#define PR prin
8、tf#define SC scanf struct goods int k,n,i; void main () void input(); void sequence(); void purchase(); void sell(); void edit(); void correct(); void search(); void scan(); void reserve(); void exit(); PR(n *n *tttttttt *n * *n *tttttttt *n * Welcometttttt *n *tttttttt *n *tt to go into .tttt * n *
9、tttttttt *n * -the Goods Information Manageaent System- *n *tttttttt *n * *n *tttttttt *n *nntPlease press any key to continue: getch(); system(clsnn -$-$-$-$-$-$-$-$-$-n 系统使用-温馨提示:nn 商品编号、数量、单价:采用十进制数,规定长度最长为8位;nn 商品名称为26位字母组成字符串,长度最长为20位;nnt 商品类别:以26个小写字母分别代表着26种商品类别;nnt 该商品需要进货的库存量:countgoodsi+1.
10、num) /*按编号由小到大排序*/ temp=goodsi.num; goodsi.num=goodsi+1.num; goodsi+1.num=temp; strcpy(p1,goodsi.name); strcpy(goodsi.name,goodsi+1.name); strcpy(goodsi+1.name,p1); strcpy(p2,goodsi.sort); strcpy(goodsi.sort,goodsi+1.sort); strcpy(goodsi+1.sort,p2);-ntt按商品编号排序后的商品信息nnt商品编号 商品名称 商品类别 商品数量 商品单价n /*输出排
11、序后商品信息*/ for(i=0;t %5ld %5s %5s %5ld %5ldn,goodsi.num,goodsi.name,goodsi.sort,goodsi.count,goodsi.price);k+) /*(2): 按商品名称排序*/ if(strcmp(goodsi.name,goodsi+1.name) strcpy(p1,goodsi.name); strcpy(goodsi.name,goodsi+1.name); strcpy(goodsi+1.name,p1); temp=goodsi.num; goodsi.num=goodsi+1.num; goodsi+1.n
12、um=temp; strcpy(p2,goodsi.sort); strcpy(goodsi.sort,goodsi+1.sort); strcpy(goodsi+1.sort,p2);ntt按商品名称排序后的商品信息nnt商品名称 商品编号 商品类别 商品数量 商品单价nt %5s %5ld %5s %5ld %5ldn,goodsi.name,goodsi.num,goodsi.sort,goodsi.count,goodsi.price);k+) /*(3): 按商品类别排序*/ if(strcmp(goodsi.sort,goodsi+1.sort)ntt按商品类别排序后的商品信息nn
13、t商品类别 商品编号 商品名称 商品数量 商品单价n,goodsi.sort,goodsi.num,goodsi.name,goodsi.count,goodsi.price);please press any key to continue: return; void purchase() /*功能3:进货商品信息*/ /*定义临时变量表示刚进货的商品编号*/ int j;nt5请输入刚进货的商品编号:temp);nt5请输入刚进货的商品数量:j);nnntpress any key to contiue:nt输出进货后的商品信息:i+) /*循环,寻找与进货相同的商品信息*/ goodsi
14、.count=goodsi.count+j; /*自动更改商品数量*/nt商品编号 商品名 商品类别 商品数量 商品价格i+) /*循环,输出进货后的商品信息*/nt %4ld %4s %4s %ld %4ld nnttPress any key to enter menu: /*返回功能选择界面*/ void sell() /*功能4:销售商品信息*/ /*定义临时变量temp表示刚销售的商品编号*/nt5请输入刚销售的商品编号:nt5请输入刚销售的商品数量:i+) /*循环,找到刚销售的商品信息*/ for(;jgoodsi.count;) /*如果销售额大于库存量,则出现错误提示*/nt售出数量大于商品原有数量,出现错误,请重新输入: goodsi.count=goodsi.count-j; /*完成自动更改商品数量的功能*/
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1