服装销售系统.docx
《服装销售系统.docx》由会员分享,可在线阅读,更多相关《服装销售系统.docx(28页珍藏版)》请在冰豆网上搜索。
服装销售系统
Preparedon22November2020
服装销售系统
一、【题目】:
服装销售系统
【要求】
(1)系统包含三类用户:
管理员、店长、销售员。
(2)向管理员提供以下功能:
自身密码修改、其他用户添加删除、用户信息修改、统计。
商品信息添加、修改、删除、查找、统计。
(3)向店长提供以下功能:
登录、注销、自身密码修改、自身信息修改,商品信息修改、商品信息设计,查看日报表、月报表、商品销售量报表、查找浏览器修改商品储备信息。
(4)向销售员提供以下功能:
商品浏览、查找、出售,查看自己本日报表、本月报表。
[提示]
(1)总体设计:
整个服装销售系统可设计为管理员模块、店长模块、销售员模块、商品模块等。
(2)数据结构采用结构体。
二、结构图
根据需求分析,该程序中销售员应实现如下功能:
商品浏览、商品查找、出售商品、销售记录、用户注销,具体结构图如下。
店长应实现如下功能:
登录、注销、自身密码修改、自身信息修改,商品信息修改、商品信息设计,查看日报表、月报表、商品销售量报表、查找浏览器修改商品储备信息,具体结构图如下。
管理员需要实现如下功能:
自身密码修改、其他用户添加删除、用户信息修改、统计。
商品信息添加、修改、删除、查找、统计。
具体结构图如下。
三、程序中典型的流程图分析
(一)添加模块
(1)分析:
信息添加模块职工的基本信息包括:
用户、商品基本信息,对它们输入后,要存进原文件,流程图如下。
(二)浏览模块
(1)分析:
浏览功能首先需要查找信息是否存在,在查找时,因为磁盘文件无序,所以采用直接查找的办法。
在容错上有较好的能力,输错时系统会有提示,也会作出相应的反映。
算法和以上的分程序有相同的优点。
[流程
(三)查询模块
(1)分析:
基本信息的查询按查询方式:
按商品的名称查询,可供选择的方式比较丰富。
但本程序只使用了一种。
在查询小模块中采用了直接查找的方法,这主要是由于磁盘文件无序的缘故。
程序在选择结构上采用了if和else的嵌套形式,看起来有点繁杂,没有用switch语句直观明了,这个地方可以改成更好的。
(四)删除模块
(1)分析:
商品信息存放在磁盘中,程序须将该文件全部取出来,在内存中把要删掉的内容除去,然后在重新输入到磁盘,这种算法比较合理,但有一点烦琐。
可以改为另一种办法:
设置一个标示符,对有这些标识符的记录在下次输入时跳过,在新商品信息输入时,将其覆盖就行了。
在对文件进行删除时,考虑到很多方面,如:
查询不到时系统该如何处理等。
人性化设计有在删除之前询问是否继续。
[流程图]
五)修改模块
(1)分析:
修改与删除程序相似,管理员信息存放在磁盘中,程序须将该文件全部取出来,在内存中把要修改的内容修改,然后在重新输入到磁盘,这种算法比较合理,但有一点烦琐,可以改进。
四、题目分析
1、按照系统需要三类用户用它作为主函数:
intmain()
{
user*use;DRESS*dress;ADMIN*adm;
use=(user*)malloc(200*sizeof(user));
userIntiate(use);
adm=(ADMIN*)malloc(sizeof(ADMIN));
adminIntiate(adm);
dress=(DRESS*)malloc(500*sizeof(DRESS));
dressIntiate(dress);
while
(1)
{
if(first(use,adm,dress)==3)continue;
}
}
2、三类用户的选择登陆为
int*first(user*use,ADMIN*adm,DRESS*dress)
{
intchose;
inttemp,temp2;
while
(1)
{system("cls");
printf("lag==0)
{
printf("注册成功!
请继续使用!
\n");
strcpy(use[i].username,name);
strcpy(use[i].pass,pass);
usernum++;
use[i].flag=1;
use[i].type=type;
return1;
}
}
elsebreak;
}
}
}
intdeluser(user*use)
{inti;
charname[20];
printf("请输入你想要删除的用户的用户名:
");
scanf("%s",name);
for(i=0;i<200;i++)
{if(strcmp(use[i].username,name)==0)
{printf("\n\n\n用户%s删除成功!
\n\n\n\n",name);
strcpy(use[i].username,"unknown");
use[i].flag=-1;
return1;
}
}
printf("用户%s不存在!
请查正在次操作!
\n\n\n\n",name);
return0;
}
intuseall(user*use)
{inti;
system("cls");
printf("销售人员:
\n");
for(i=0;i<200;i++)
{if(use[i].type==0)
{if(use[i].flag==1)
printf("用户姓名:
%s用户密码:
%s\n",use[i].username,use[i].pass);
}
}
printf("店长:
\n");
for(i=0;i<200;i++)
{if(use[i].type==1)
{if(use[i].flag==1)
printf("用户姓名:
%s用户密码:
%s\n",use[i].username,use[i].pass);
}
}
}
intadminload(ADMIN*adm)
{charname[21];
charpass[7]={0};
intchose,chose2;
inti,j;
while
(1)
{
system("cls");
printf("管理员账号:
");
scanf("%s",&name);
printf("密码:
");
for(i=0;i<6;i++)
{
pass[i]=getch();
printf("*");
}
while
(1)
{
printf("\n\n用户登陆信息输入完毕,是否确认1,确认0,重新输入\n");
scanf("%d",&chose);
if(chose!
=1&&chose!
=0)
{
printf("你的输入有误,请重新的输入!
\n");
continue;
}
if(chose==1)
{
if(strcmp(adm->name,name)==0)
if(strcmp(adm->pass,pass)==0)
{
printf("登陆成功!
请继续使用!
\n");
strcpy,name);
return1;
}
printf("输入的用户名或者密码有误!
1,重新登陆2,退出登陆!
\n");
scanf("%d",&chose2);
if(chose2==1)
{system("cls");
break;
}
else
{system("cls");
return0;
}
}
if(chose==0)break;
}
}
}
intadminpass(ADMIN*adm)
{inti;
charpass[20]={0};
charpass2[20]={0};
while
(1)
{
system("cls");
printf("请输入新的管理员密码:
");
for(i=0;i<6;i++)
{pass[i]=getch();
printf("*");
}
printf("\n\n\n请再次输入新的管理员密码:
");
for(i=0;i<6;i++)
{
pass2[i]=getch();
printf("*");
}
if(strcmp(pass,pass2)!
=0)
{printf("\n\n两次输入的新的密码不一样,请重新的输入!
\n\n\n");
system("pause");
}
else
{
printf("\n密码修改成功!
下一次管理员登陆请使用新的密码!
\n\n\n");
strcpy(adm->pass,pass);
system("pause");
return1;
}
}
}
intadminout()
{intchose;
while
(1)
{system("cls");
printf("你确定要注销吗1,注销0,取消\n\n");
scanf("%d",&chose);
if(chose!
=0&&chose!
=1)
{printf("你的选项出现了错误,请重新的输入!
\n\n\n");
system("pasue");
continue;
}
if(chose==1)
{
printf("管理员账户注销完毕!
!
\n\n\n\n");
system("pause");
return1;
}
elsereturn0;
}
}
intout()
{intchose;
system("cls");
printf("真的要退出系统吗退出后信息会全部的丢失!
!
1,退出0,取消");
scanf("%d",&chose);
if(chose==1)exit(0);
elsereturn1;
}
intadminmenu(ADMIN*adm,user*use,DRESS*dress)
{
intchose1;
while
(1)
{
system("cls");
printf("\n在线用户:
%s\n\n",;
printf("ype==0)
if(strcmp(use[i].username,name)==0)
if(strcmp(use[i].pass,pass)==0)
{
printf("登陆成功!
请继续使用!
\n");
strcpy,name);
return1;
}
}
printf("输入的用户名或者密码有误!
1,重新登陆2,退出登陆!
\n");
scanf("%d",&chose2);
if(chose2==1)
{
system("cls");
break;
}
else
{system("cls");
return0;
}
}
if(chose==0)break;
}
}
}
这里面包含了管理员的十个功能选项。
4,选择销售员和店长,(注明第一次运行时本来没有销售员和店长,需要管理员添加。
)
intuserout()
{intchose;
while
(1)
{system("cls");
printf("\n在线用户:
%s\n\n",;
printf("你确定要注销吗1,注销0,取消\n\n");
scanf("%d",&chose);
if(chose!
=0&&chose!
=1)
{
printf("你的选项出现了错误,请重新的输入!
\n\n\n");
system("pasue");
continue;
}
if(chose==1)
{
printf("销售员账户注销完毕!
!
\n\n\n\n");
strcpy,"unknown");
sername,==0)
for(i=0;i<500;i++)
{
if(strcmp(dress[i].name,name)==0)
{
if(dress[i].nowdress[i].now=dress[i].now-num;
printf("\n\n\n商品%s已经销售出了%d件\n",name,num);
for(j=0;j<100;j++)
{
if(use[k].mdb[j].flag==0)
{
strcpy(use[k].mdb[j].name,name);
use[k].mdb[j].flag=1;
use[k].mdb[j].total=num;
return1;
}
}
}
}
}
printf("商品出售出现错误!
!
请重新操作!
\n\n\n");
return0;
}
voidmounth(user*use)
{inti;
intj;
charname[20];
strcpy(name,;
system("cls");
printf("\n在线用户:
%s\n\n",;
for(i=0;i<100;i++)
{if(strcmp(use[i].username,name)==0)
{for(j=0;j<100;j++)
{
if(use[i].mdb[j].flag==1)
printf("商品名称:
%s,出售数量:
%d\n",use[i].mdb[j].name,use[i].mdb[j].total);
}
}
}
}
intusermenu(user*use,DRESS*dress)
{inti;
intchose1;
while
(1)
{
system("cls");
printf("\n在线用户:
%s\n\n",;
printf("sername,==0)
{
strcpy(use[i].pass,pass);
system("pause");
}
}
return1;
}
}
}
voidmonsee(user*use)
{inti;
intj;
charname[20];
system("cls");
printf("\n在线用户:
%s\n\n",;
for(i=0;i<100;i++)
{if(use[i].flag==1&&use[i].type==0)
{
printf("销售员姓名:
%s\n",use[i].username);
for(j=0;j<100;j++)
{
if(use[i].mdb[j].flag==1)
printf("商品名称:
%s,出售数量:
%d\n",use[i].mdb[j].name,use[i].mdb[j].total);
}
}
}
}
intmonload(user*use)
{
charname[21];
charpass[7]={0};
intchose,chose2;
inti,j;
while
(1)
{
system("cls");
printf("用户名:
");
scanf("%s",&name);
printf("密码:
");
for(i=0;i<6;i++)
{
pass[i]=getch();
printf("*");
}
while
(1)
{
printf("\n\n用户登陆信息输入完毕,是否确认1,确认0,重新输入\n");
scanf("%d",&chose);
if(chose!
=1&&chose!
=0)
{printf("你的输入有误,请重新的输入!
\n");
continue;
}
if(chose==1)
{
for(i=0;i<200;i++)
{
if(use[i].type==1)
if(strcmp(use[i].username,name)==0)
if(strcmp(use[i].pass,pass)==0)
{
printf("登陆成功!
请继续使用!
\n");
strcpy,name);
return1;
}
}
printf("输入的用户名或者密码有误!
1,重新登陆2,退出登陆!
\n");
scanf("%d",&chose2);
if(chose2==1)
{
system("cls");
break;
}
else
{
system("cls");
return0;
}
}
if(chose==0)break;
}
}
}
intmonout()
{
intchose;
while
(1)
{
system("cls");
printf("\n在线用户:
%s\n\n",;
printf("你确定要注销吗1,注销0,取消\n\n");
scanf("%d",&chose);
if(chose!
=0&&chose!
=1)
{
printf("你的选项出现了错误,请重新的输入!
\n\n\n");
system("pasue");
continue;
}
if(chose==1)
{
printf("店长账户注销完毕!
!
\n\n\n\n");
strcpy,"unknown");
return1;
}
elsereturn0;
}
}
intfix(DRESS*dress)
{
charname[20],name2[20];
inttotal;
intnow;
inti;
system("cls");
printf("\n在线用户:
%s\n\n",;
printf("请输入需要修改信息的商品的名称:
");
scanf("%s",&name);
for(i=0;i<500;i++)
{
if(strcmp(dress[i].name,name)==0)
{
printf("商品信息:
\n名称:
%s,现存:
%d,总共:
%d\n",dress[i].name,dress[i].now,dress[i].total);
printf("\n\n请输入修改以后的商品的名称:
");
scanf("%s",&name2);
printf("\n\n请输入修改以后的商品的现存:
");
scanf("%d",&now);
printf("\n\n请输入修改以后的商品的总共:
");
scanf("%d",&total);
strcpy(dress[i].name,name2);
dress[i].now=now;
dress[i].total=total;
printf("\n\n");
printf("修改以后的商品信息:
\n名称:
%s,现存:
%d,总共:
%d\n",dress[i].name,dress[i].now,dress[i].total);
return1;
}
}
printf("修改信息失败!
请查正以后重新的操作!
!
\n\n\n");
return0;
}
intmonmenu(user*use,DRESS*dress)
{
inti;
intchose1;
while
(1)
{
system("cls");
printf("\n在线用户:
%s\n\n",;
printf("//=======用户功能菜单=====//\n");
printf("////\n");
printf("//1,商品浏览//\n");
printf("//2,商品查找//\n");
printf("//3,销售员业绩//\n");
printf("//4,商品信息修改//\n");
printf("//5,密码修改//\n");
printf("//6,用户注销//\n");
printf("////\n");
printf("//=========================//\n");
printf("\n/=============================请选择服务的种类========================/\n");
scanf("%d",&chose1);
if(chose1<1||chose1>8)
{printf("你的输入有误,请重新的输入!
\n");
system("pasue");
continue;
}
switch(chose1)
{
case1:
{system("cls");
dressall(dress);
break;
}
case2:
{system("cls");
finddress(dress);
break;
}
case3:
{system("cls");
monsee(use);
system("pause");
break;
}
case4:
{
system("cls");
fix(dress);
system("pause");
break;
}
case5:
{
system("cls");
monpass(use);
break;
}
case6:
{system("cls");
if(monout()==1)return3;break;
}
default:
continue;
}
}
}
五、程序截图
1、运行程序时出现的图象:
2、由于程序事先没有设置店长和销售员的帐号,所以要先选择3、管理员登陆,会出现如下图:
注明:
管理员初始帐号admin密码是123456
3、进入后会出现如下的图象:
以上是管理员的功能,店长和销售员的帐号要通过添加用户来增加。
4、选择添加用户后会出现:
以上可以选择注册两种类型的人员。
5、统计用户会出现已经注册的人:
6、还有一系列的东西不一一贴出,推出时点注销帐户,然后用注册的帐号可以进入其他人员的功能表,下面列举销售人员的功能:
这些是销售员的功能,实现这些功能之前,首先要管理员注册商品信息。
其他的不一一列举。
六、总结
在老