C语言商店商品管理系统设计报告与源代码.docx

上传人:b****1 文档编号:12753609 上传时间:2023-04-21 格式:DOCX 页数:36 大小:233.84KB
下载 相关 举报
C语言商店商品管理系统设计报告与源代码.docx_第1页
第1页 / 共36页
C语言商店商品管理系统设计报告与源代码.docx_第2页
第2页 / 共36页
C语言商店商品管理系统设计报告与源代码.docx_第3页
第3页 / 共36页
C语言商店商品管理系统设计报告与源代码.docx_第4页
第4页 / 共36页
C语言商店商品管理系统设计报告与源代码.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

C语言商店商品管理系统设计报告与源代码.docx

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

C语言商店商品管理系统设计报告与源代码.docx

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总体设计

按系统分析的功能要求将系统划分为以下几个主要功能模块:

一、文件管理

⏹文件打开、关闭:

对于刚输入或进行操作后的商品信息,在建立新的商品库存量后,可以把其保存在一个文件中,并对该文件可进行打开和关闭操作。

二、进出货管理

⏹商品进货:

输入数据后商品信息能自动更新进行添加

⏹商品销售:

输入数据后商品信息能自动更新进行减少

三、商品数据管理

⏹增加/删除商品:

添加或删除某条商品的信息

⏹修改商品信息:

对某条商品的信息进行修改

四、浏览商品信息管理

⏹查询商品信息:

可分别按商品编号、名称、类别或需要进货商品查询

⏹排序商品信息:

可按商品编号、名称、类别分别排排序

⏹浏览商品信息:

可浏览输入、查询或排序后的数据。

(此处可用图形描述功能模块划分,类似下图)

 

 

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;/*完成自动更改商品数量的功能*/

}

}

PR("\n\t

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

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

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

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