C语言商店商品管理系统设计报告及源代码Word文件下载.docx

上传人:b****5 文档编号:18569583 上传时间:2022-12-28 格式:DOCX 页数:31 大小:233.54KB
下载 相关 举报
C语言商店商品管理系统设计报告及源代码Word文件下载.docx_第1页
第1页 / 共31页
C语言商店商品管理系统设计报告及源代码Word文件下载.docx_第2页
第2页 / 共31页
C语言商店商品管理系统设计报告及源代码Word文件下载.docx_第3页
第3页 / 共31页
C语言商店商品管理系统设计报告及源代码Word文件下载.docx_第4页
第4页 / 共31页
C语言商店商品管理系统设计报告及源代码Word文件下载.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

C语言商店商品管理系统设计报告及源代码Word文件下载.docx

《C语言商店商品管理系统设计报告及源代码Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言商店商品管理系统设计报告及源代码Word文件下载.docx(31页珍藏版)》请在冰豆网上搜索。

C语言商店商品管理系统设计报告及源代码Word文件下载.docx

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;

/*完成自动更改商品数量的功能*/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1