商店销售管理系统课程设计.docx
《商店销售管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《商店销售管理系统课程设计.docx(28页珍藏版)》请在冰豆网上搜索。
商店销售管理系统课程设计
No.:
000000000000032644
商店销售管理系统
摘要
在这个信息发展的时代,电脑普及、互联网的迅速发展,绝大部分的进程从单一的人工管理上升到电脑智能管理。
如今由于顾客量增多,商品出入时间的广泛,商场收益增多,仅仅依靠手写的老式输入记账法,已无法满足商场的需求。
这个商品销售管理系统,目的就在于能够更好的对商品信息情况,进货退货信息,商品的库存以及销售情况,销售结账的订单等进行精确的查询,以便更好的完善和更新商品销售信息系统。
该系统是将销售管理信息化,实现了进货、退货、消费、结账等新的管理方式,提高了商品销售的运转效率,利于企业的管理,可以实现企业商品管理的信息化,网络化,现代化。
关键字:
商品;销售;库存
ABSTRACT
Inthiseraofinformationdevelopmentandwidespreaduseofcomputers,becauseoftherapidlydevelopmentoftheInternet,themostofthelabormanagementprocessfromasinglemanagementbyhumanrisentoaintelligentbycomputer.Nowdays,duetothenumberofthecustomersincrease,thewidetimeofgood’ssaletime,theprofitincreaseofthemall,onlydependonold-fashionedbookkeepingbyhangwritten,hasunablemeettherequirementsofthemall.Hepurposeofthisproductsalesmanagementsystemistomakemoreprecisequeryofinformationaboutgood’spurchase,return,stockandsaleandsoon.Itcanmaketheproductsalesmanagementsystemmoreperfectandtoupdate.Thissystemmakesalemanagementinformation,itmakesthenewmethodofthepurchase,returncometure,improvestheefficiencyofgoodssaleanditgoodsforbusinessmanagement.Italsomakesenterprise'sgoodsmanagementinformation,networkandmodernizationcometure.
Keywords:
Merchandise;sales;stock
6.测试数据和测试结果…………………………………………………16
附录…………………………………………………………………………………22
1需求分析
电脑普及、互联网的迅速发展,电脑智能管理成了企业的主导。
商品的经营管理,已经慢慢发展到计算机管理。
对企业来说,随着生产规模的不断扩大,商品种类的不断增多,需要管理的各种商品信息也会大幅度增加。
商品管理,订货管理,销售管理都变得相对复杂。
故开发“商品销售管理系统”,这对企业的发展至关重要,也节省了大量时间,从而提高了销售的运转效率。
商品销售管理系统可以实现企业商品管理的网络化,信息化,现代化,可以有效的提高企业商品的管理效率,节约了管理开支。
商品销售管理系统主要涉及两项关键技术:
一是对数据库进行操作,二是进行宿舍报表打印。
要求系统需要具有以下功能:
(1) 较好的权限管理。
(2) 能够进行各种查询操作。
(3) 能够对商品信息进行管理。
(4) 通过计算机,能够看到商销售情况。
(5)能够进行商品入库管理。
(6) 能够进行商品销售管理。
(7)系统退出。
2系统设计概要
根据销售的具体情况,系统主要功能如下:
1.商品信息管理:
记录各种商品的信息,如商品名称、供应商等
2.进货信息管理:
记录进货的具体信息,如商品名称、单价、进货日期等
3.库存信息管理:
记录库存商品的具体信息,如商品名称、库存量等
4.销售信息管理:
记录商品销售的具体信息,如商品进货结账、销售结账等
5.增加商品种类信息管理:
记录增加商品的具体信息
6.删除商品信息
图1销售系统
3详细设计
首先定义货物最大种类,商品名称,商品数量,商品编号,商品价格。
代码如下:
#defineN1000//N代表货物的最大种类
structgoods
{
charname[10];//商品名称
intamount;//商品数量
intnum;//商品编号
floatprice;//商品价格
}sp[N],sc[N];
(1)定义全局变量
intflag=1;
FILE*fp;//fp是指针,用来指向FILE类型的对象
inti=0;//定义整形变量i
intk=0;//定义整形变量k
intb=0;//定义整形变量b
(2)进货信息管理
本模块通过do循环添加进货信息,for循环执行fp文件指针写入,操作界面,代码如下:
voidjinhuo()//进货模块
{
do
{
k++;
i++;
printf("\n<======请输入商品的名称:
");//输出
scanf("%s",sp[i].name);//输入
printf("<======请输入商品的数量:
");//输出
scanf("%d",&sp[i].amount);
printf("<======请输入商品的价格:
");
scanf("%f",&sp[i].price);
printf("<======请输入商品的标号:
");
scanf("%d",&sp[i].num);
printf("<======是否继续,是
(1),否(0):
");
scanf("%d",&flag);
}while(flag!
=0);
system("cls");//清除屏幕
fp=fopen("chaoshi","w");//已只写的方式打开chaoshi文件
for(i=1;i<=k;i++)
{
fwrite(&sp[i],sizeof(structgoods),1,fp);//向fp文件指针写入
}
fclose(fp);//关闭fp
chakan();
}
(3)库存信息管理
voidchakan()//显示目前库存
{
intzong=0;//定义zong,并赋初值0
system("cls");
fp=fopen("chaoshi","r");//已只写的方式打开chaoshi文件
for(i=1;i<=(k+b);i++)
{
fread(&sp[i],sizeof(structgoods),1,fp);
}
fclose(fp);
for(i=1;i<=k;i++)
{
zong=zong+sp[i].num;
}
if(zong!
=0)
{
printf("*****************目前库存情况****************\n");
printf("|-----|-----|-----|-----|\n");
printf("|商品名称|商品数量|商品价格|商品编号|\n");
printf("|-----|-----|-----|-----|\n");
for(i=1;i<=(k+b);i++)
{
printf("|%-10s|%10d|%10.2f|%10d|\n",sp[i].name,sp[i].amount,sp[i].price,sp[i].num);
printf("|-----|-----|-----|-----|\n");
}
}
else
{
printf("<=====目前没有任何商品!
\n\n\n");
}
printf("<=====请安任意键返回主界面!
");
getchar();
getchar();
return;
}
(4)销售信息管理
编写一个xiaoshou()函数,使用do循环输入出售商品编号及数量;通过if语句,减少相应的库存,计算售假。
voidxiaoshou()//销售模块
{
floatm[100];//定义数组
intz=1;
intj[100];
inta[100];
intg=0;
inty=0;
inth=0;
floatzong=0;
fp=fopen("chaoshi","r");//已只写的方式打开chaoshi文件
for(i=1;i<=k;i++)
{
fread(&sp[i],sizeof(structgoods),1,fp);
}
fclose(fp);
do
{
g++;
y++;
loop:
printf("\n<=====请输入上商品标号和数量,例如(10020):
");
scanf("%d%d",&j[y],&a[y]);
for(z=1;z<=k;z++)
{
if(j[y]==sp[z].num)
{
h++;
sp[z].amount=sp[z].amount-a[y];
m[y]=(float)a[y]*sp[z].price;
sc[y]=sp[z];
}
}
if(h=0)
{
printf("<=====输入有误,请重新输入:
");
gotoloop;
}
fp=fopen("chaoshi","wt");//已只写的方式打开chaoshi文件
for(i=1;i<=k;i++)
{
fwrite(&sp[i],sizeof(structgoods),1,fp);
}
fclose(fp);
printf("<======是否继续,是
(1),否(0):
");
scanf("%d",&flag);
}while(flag!
=0);
system("cls");
printf("|-----|-----|-----|-----|-----|\n");
printf("|商品编号|商品名称|商品单价|数量|总价|\n");
printf("|-----|-----|-----|-----|-----|\n");
for(y=1;y<=g;y++)
{
printf("|%10d|%-10s|%10.2f|%10d|%10.2f|\n",sc[y].num,sc[y].name,sc[y].price,a[y],m[y]);
printf("|-----|-----|-----|-----|-----|\n");
zong=zong+m[y];
}
printf("<======您此次一共消费%f元,欢迎您下次光临!
\n",zong);
shijian();
}
(5)删除商品信息
由do循环删除不需要的商品,第一个for循环语句执行结果是得到目前商品种类数。
第二个for循环向fp文件指针写入。
voidshanchu()//删除商品模块
{
intz;
intj[100],a[100];
intc=0;
inty=0;
inth=0;
do
{
c++;
loop:
printf("\n<======请输入您想删除的商品编号:
");
scanf("%d",&j[y]);
for(z=1;z<=k;z++)
{
h++;
if(j[y]==sp[z].num)
{
sp[z]=sp[z+1];
}
}
if(h==0)
{
printf("<=====输入有误,请重新输入:
");
gotoloop;
}
fp=fopen("chaoshi","wt");;//已只写的方式打开chaoshi文件
for(i=1;i<=(k-1);i++)
{
fwrite(&sp[i],sizeof(structgoods),1,fp);
}
fclose(fp);
printf("<======是否继续,是
(1),否(0):
");
scanf("%d",&flag);
}while(flag!
=0);
chakan();
}
(6)增加商品数量
增加之前
增加商品之后
voidzengjia()//增加商品数量模块
{
floatm;
intz=1;
intj[100],a[100];
intg=0;
inty=0;
intzong=0;
inth=0;
fp=fopen("chaoshi","r");;//已只写的方式打开chaoshi文件
for(i=1;i<=k;i++)
{
fread(&sp[i],sizeof(structgoods),1,fp);
}
fclose(fp);
do
{
g++;
y++;
loop:
printf("\n<======请输入上商品编号和数量,例如(10020):
");
scanf("%d%d",&j[y],&a[y]);
for(z=1;z<=k;z++)
{
if(j[y]==sp[z].num)
{
h++;
sp[z].amount=sp[z].amount+a[y];
m=a[y]*sp[z].price;
sc[y]=sp[z];
}
}
if(h=0)
{
printf("\n<======输入有误,请重新输入\n\t\t\t");
gotoloop;
}
fp=fopen("chaoshi","wt");
for(i=1;i<=k;i++)
{
fwrite(&sp[i],sizeof(structgoods),1,fp);
}
fclose(fp);
printf("<=====是否继续,是
(1),否(0):
");
scanf("%d",&flag);
}while(flag!
=0);
chakan();
}
设计和调试分析
调试过程中,遇到的问题主要是一些变量未定义。
问题分析:
本系统中的记录集采用的是顺序存储,也就是用数组来定义顺序表。
而数组是一种静态分配结构,使用时会预先分配一个较大的存储空间,可能造成空间闲置导致空间浪费。
系统中的商品记录集为无序状态,所以本系统中的查找算法都是采用顺序查找算法,时间复杂度为O(n)空间复杂度为O
(1)。
系统中未涉及到排序算法,所以在此不做讨论。
方法改进:
本系统可以改进为链式存储,可以更好的利用存储空间,加大空间的利用率。
如果继续使用顺序存储的话,在搜索算法上可以改进为二分查找算法或是首尾同时进行查找的算法,以达到节省时间的目的,提高程序的时间性能。
写好程序后,先进行人工检查,这个能发现因疏忽而造成的错误。
编程时最好采用结构化程序方法编程,尽可能多加注释,在编写复杂的程序时,利用一个函数来实现一个单独的功能,这样易于阅读也、调试。
人工检查无误后,上机调试。
编译时,给出语法错误的信息,根据提示的信息具体找出程序中出错之处并改正。
(值得注意的是有时提示的出错并不是真正出错的行,如果在提示出错的行上找不到错误的话应当到上一行再找。
)修改好以后,事先考虑好一批“试验数据”,运行程序,输入程序所需数据,即可得到运行结果,对结果作分析,看是否符合要求。
若此时运行结果不对,大多属于逻辑错误。
对这类错误往往需要仔细检查和分析才能发现。
可采用以下办法:
1.检查流程图有无错误,即算法有无问题,如有则改正之。
接着将程序与流程图对照,如果程序写错了,很容易发现。
2.如果实在找不到错误,可以采用“分段检查”的方法。
在程序不同的位置设几个printf函数语句,输出有关变量的值,往下检查。
3用“条件编译”命令进行程序调试。
用户使用说明
本程序的运行环境为windows操作系统。
在vc++环境下运行程序,出现主菜单。
1进货2销售3删除商品4增加商品数量5查看目前库存
按功能对应的数字即可进入该功能
测试数据与测试结果
(1)进货
(2)销售
(3)增加商品
(4)删除商品
(5)查看库存
参考文献
夏宽理.C语言与程序设计[M].复旦大学出版社,1994.
C语言程序设计基础[M].复旦大学出版社,1992.
科夫曼.C++精解和程序设计[M].清华大学出版社,2005.
C语言的实际应用,安徽科学技术出版社,2000
附录
源程序
#include
#include
#include
#defineN1000//N代表货物的最大种类
structgoods
{
charname[10];//商品名称
intamount;//商品数量
intnum;//商品编号
floatprice;//商品价格
}sp[N],sc[N];
//定义全局变量
intflag=1;
FILE*fp;
inti=0;
intk=0;
intb=0;
voidshijian()
{
structtmwhen;
time_tnow;
time(&now);
when=*localtime(&now);
printf("%s\n",asctime(&when));
printf("按任意键返回主菜单...");
getchar();
getchar();
}
voidchakan()//显示目前库存
{
intzong=0;
system("cls");
fp=fopen("chaoshi","r");
for(i=1;i<=(k+b);i++)
{
fread(&sp[i],sizeof(structgoods),1,fp);
}
fclose(fp);
for(i=1;i<=k;i++)
{
zong=zong+sp[i].num;
}
if(zong!
=0)
{
printf("*****************目前库存情况****************\n");
printf("|-----|-----|-----|-----|\n");
printf("|商品名称|商品数量|商品价格|商品编号|\n");
printf("|-----|-----|-----|-----|\n");
for(i=1;i<=(k+b);i++)
{
printf("|%-10s|%10d|%10.2f|%10d|\n",sp[i].name,sp[i].amount,sp[i].price,sp[i].num);
printf("|-----|-----|-----|-----|\n");
}
}
else
{
printf("<=====目前没有任何商品!
\n\n\n");
}
printf("<=====请安任意键返回主界面!
");
getchar();
getchar();
return;
}
voidjinhuo()//进货模块
{
do
{
k++;
i++;
printf("\n<======请输入商品的名称:
");
scanf("%s",sp[i].name);
printf("<======请输入商品的数量:
");
scanf("%d",&sp[i].amount);
printf("<======请输入商品的价格:
");
scanf("%f",&sp[i].price);
printf("<======请输入商品的标号:
");
scanf("%d",&sp[i].num);
printf("<======是否继续,是
(1),否(0):
");
scanf("%d",&flag);
}while(flag!
=0);
system("cls");
fp=fopen("chaoshi","w");
for(i=1;i<=k;i++)
{
fwrite(&sp[i],sizeof(structgoods),1,fp);
}
fclose(fp);
chakan();
}
voidxiaoshou()//销售模块
{
floatm[100];
intz=1;
intj[100];
inta[100];
intg=0;
inty=0;
inth=0;
floatzong=0;
fp=fopen("chaoshi","r");
for(i=1;i<=k;i++)
{
fr