课程设计服装店管理系统之门店系统.docx
《课程设计服装店管理系统之门店系统.docx》由会员分享,可在线阅读,更多相关《课程设计服装店管理系统之门店系统.docx(46页珍藏版)》请在冰豆网上搜索。
课程设计服装店管理系统之门店系统
1前言
某某服装品牌近年来在全国内各个商业地区开了多个连锁店,这个服装连锁店主要销售各种款式的服装,形式多样,种类繁多,为了能更好的管理服装和使服装销售操作简单化,因此需要一个小型服装店管理系统实现退换货,出入单据和查询报表。
2需求分析
2.1功能分析
这个小系统主要是实现服装店退换货和出入单据和查询报表,是服装店管理系统之门店系统中的一个子模板功能,它主要为用户提供退换货功能,出入单据,和查询报表。
具体而言,系统必须完成的所有功能如下:
(1)退换货时在库中修改此型号服装记录;
(2)开出单据;
(3)查询所有的退换货记录,出入报表信息;
2.2方案分析
根据功有要求,实现退换货和出入单据和查询表只需要将这个小系统化分为三个小部份,每个部份就实现以上三个相对应的功能。
因此实现这个退换货和出入单据和查询报表款系统只需要在主函数中调用相应的小模板,就能实现相应的功能要求。
3概要设计
3.1数据结构
用一个数据库表来存储店中所有的服装信息,每条服装信息包括:
编号,名称,数量,单价。
用一个数据库表来存储已退换的服装,元组以销售的先后顺序试存储,每条退换货记录信息包括:
服装编号,名称,数量,单价。
3.2逻辑结构与物理结构
1.逻辑结构设计
在重新设计了产品库存单,并对数据的结构、所用数据类型、总长、数长、显长等方面进行全面的分析后,我们设计出了系统所用到的数据库的数据字典如下。
表3.2.1存库表单数据字典
字段名
中文描述
类型
是否可为空
是否为主键
id
编号
longint
否
是
name
名称
char
是
否
count
数量
int
是
否
price
价格
float
是
否
表3.2.2退换货记录表单数据字典
字段名
中文描述
类型
是否可为空
是否为主键
id
编号
longint
否
是
name
名称
char
是
否
count
数量
int
是
否
price
价格
float
是
否
2.物理结构设计
数据库中各表的文件物理结构采用顺序的记录文件。
3.3功能模块划分
3.3.1结构框图
输入编号
确认
图3.3.1
3.3.2程序流图
21
0
TF
图3.3.2
3.3.3模块功能分析及外部设计
退换货出入单据和查询报表共分为3个小模块,每个模块由相应函数构成:
主控模块:
在这个模块中,要显示用户操作界面,并提示用户进行相应选择,界面中有两个分别调用“退换货”与“出入单据”,和“查询信息”三个的接口
退换货模块:
这上模块实现退换货功能,输入服装编号进行退换货,并更新库存信息。
出入单据:
用户输入服装编号,然后查找相应编号的服装并将其所有信息显出来,供用户确认此型号服装是否有退换货信息,当操作者确认服装后进行打印
查询模块:
查询模块中,操作员可以查询库存信息,并且可以查询所有的单据信息,还可以通过输入服装编码查询服装是否有退换货记录。
3.4抽象数据类定义
抽象数据类型三元级的定义:
ADTTriplet
{
数据对象:
D={e1,e2,e3,……,en|e[i]⊱ElemSet}
数据关系:
R1={e1,e2,e3,……en}
基本操作:
readfile(&head)
初始条件:
磁盘中保存记录的文件存在
操作结果:
读取记录到head链表中
Createswap1(&head)
初始条件:
head不为空。
操作结果:
创建了存储退货信息的文件
Createkucun(&head)
初始条件:
head不为空。
操作结果:
创建了库存中存储商品的信息文件。
Createdanju(&head)
初始条件:
head不为空。
操作结果:
创建存储退换货单据的信息文件
Serach(&head,time_month)
初始条件:
head不为空。
操作结果:
实现对各个信息的查询。
}ADTTriplet
4详细设计
4.1数据类型定义
4.2主要模块内部设计
4.2.1退换货模块设计
4.2.1.1模块算法
structnode*swap(structnode*head)
{
intchoice;
do
{
menuswap();
cout<<"选择你要执行的操作"<cin>>choice;
switch(choice)
{
case1:
CreateFileswap1(head);
break;
case2:
CreateFileswap2(head);
break;
case0:
break;
}}while(choice);
returnhead;
}
voidCreateFileswap1(structnode*p)
{FILE*fp,*fp1;
charch;
inti=0;
structnode*headcu=NULL;//////////////////////////////]
structnode*temp=NULL;
headcu=readfile(headcu);
dresss,s1;
fp=fopen("D:
\\dressswap1.dat","ab+");
fp1=fopen("d:
\\kucun.dat","ab+");
s.totalprice=0;
if(!
fp)
{
cout<<"退货失败!
"<exit
(1);
}
do
{cout<<"是否要退货(y/n)"<cin>>ch;
if(ch=='n')
break;
else
cout<<"请输入要退货的商品编码"<cin>>s.num;
while(fread(&s1,sizeof(s1),1,fp1))
{
if(s1.num==s.num)
{i=1;
break;}
}
if(i)
{cout<<"商品编号"<cout<cout<<"请输入要退货的数量"<s=s1;
cin>>s.count;
s.totalprice=s.price*s.count;
cout<<"********************退货成功***********************"<cout<<"商品编号"<cout<s1.count+=s.count;
temp=headcu;
while(s1.num!
=temp->data.num)
{
temp=temp->next;
}
temp->data.count=s1.count;
cout<system("pause");
fwrite(&s1,sizeof(s1),1,fp1);
fwrite(&s,sizeof(s),1,fp);
savekucun(headcu);
}
else
cout<<"无此商品记录,退货失败"<}while
(1);
fclose(fp);
fclose(fp1);
}
voidCreateFileswap2(structnode*p)
{FILE*fp,*fp1;
charch;
dresss,s1;
inti=0;
fp=fopen("D:
\\dressswap2.dat","ab+");
fp1=fopen("d:
\\kucun.dat","ab+");
if(!
fp
)
{
cout<<"换货失败!
"<exit
(1);
}
do
{cout<<"是否要换货(y/n)"<cin>>ch;
if(ch=='n')
break;
else
cout<<"请输入要换货的商品编码"<cin>>s.num;
while(fread(&s1,sizeof(s1),1,fp1))
{
if(s1.num==s.num)
{i=1;
break;}
}
if(i)
{s=s1;
cout<<"商品编号"<cout<if(s1.count<1)
{
cout<<"存货不足,无法进行换货"<}
else
{cout<<"请输入要换货的数量"<cin>>s.count;
s.totalprice=s.price*s.count;
cout<<"**************************换货成功***********************"<cout<<"商品编号"<cout<fwrite(&s1,sizeof(s1),1,fp1);
fwrite(&s,sizeof(s),1,fp);
}}
else
cout<<"无此商品记录,换货失败"<}while
(1);
fclose(fp);
fclose(fp1);
}
4.2.1.2流程图
图4.1.1
4.2.2查询模块
4.2.2.1模块算法
structnode*serach(structnode*head)
{
intchoice;
do
{
menuserach();
cout<<"选择你要执