
超市智能商品推荐系统设计
超市智能商品推荐系统设计
根据客户以往商品选购情况(⽤户登录后检索以往的商品选购和商品查询情况),并能根据⽤户的兴趣爱好⾃动地推荐给每个⽤户可能
感兴趣的商品,实现具有⼀种类似采购助⼿的功能来帮助⽤户选购商品。提供不少于10个种类,100种商品,并以⽂件形式存储。
设计⽤户及商品的信息数据结构,实现如下功能:
(1)以⽂件形式存储⽤户信息,并以⽂件形式存储⽤户的商品选购和查询情况;
(2)设计商品兴趣度简单的数学模型(要求参数有权重【购买*2查询*1】、或者提供数据模型);
(3)应⽤排序算法实现商品的排名推荐(及格);
(4)实现商品分类推荐(良好);
(5)实现多⽤户不同商品兴趣度个性化推荐(优秀)。
要求:
(1)理解及熟练运⽤内部排序算法;
(2)理解运⽤数据的分类组织和存储;
(3)理解运⽤相关查询技术;
(4)界⾯友好、系统运⾏应该快速、稳定、⾼效和可靠。
:
XpVawTpNkK2SljsoMPnf6FaNHj3bix
QqBcn184r6zk0aiQAkiNphzNIW0twj
oVMZr1Ikl9PXDiBpYqtahi24kHQSqL
XEnKbfX5YKsLZDFS3zTVgQDA9XPfYt
XpVawTpNkK2SljsoMPnf6FaNHj3bix
QqBcn184r6zk0aiQAkiNphzNIW0twj
oVMZr1Ikl9PXDiBpYqtahi24kHQSqL
XEnKbfX5YKsLZDFS3zTVgQDA9XPfYt
XpVawTpNkK2SljsoMPnf6FaNHj3bix
QqBcn184r6zk0aiQAkiNphzNIW0twj
#define_CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
structCommodity//商品结构体
{
intCategory;//商品的种类
intid;//商品id
charname[4];//商品名称
};
structCustomer//⽤户结构体
{
charid[10];//⽤户ID
charpassword[10];//⽤户密码
inteCategory[10];//记录⽤户查看种类次数
intbuyCategory[10];//记录⽤户购买种类次数
inteCommodity[10][10];//记录⽤户查看商品的次数
intbuyCommodity[10][10];//记录⽤户购买商品的次数
floatinterCategory[10];//记录⽤户对种类的感兴趣度
floatinterCommodity[10][10];//记录⽤户对商品感兴趣度
};
voidInitialize(Commodity[][10],Customer&);//初始化结构体数组
voidLogIn(Customer&customer);//⽤户登录
voidRecommend(Commodity[][10],Customer&);//推荐商品
voidBuy(Commodity[][10],Customer&);//⽤户购买某商品
voidSee(Commodity[][10],Customer&);//⽤户查看某商品
voidInteraction(Commodity[][10],Customer&);//交互界⾯
voidSaveCustomer(Customer&,FILE*);//⽤户信息存储
charpathName[20];//存储⽤户⽂件
intmain()
{
Commoditycom[10][10];//假设⼀共10类商品,每类有10个商品
Customercustomer;//⽤户
Initialize(com,customer);//初始化
LogIn(customer);//登录
Interaction(com,customer);//⼈机交互界⾯
system("pau");
return0;
}
voidInitialize(Commoditycom[10][10],Customer&customer)//初始化结构体数组
{
inti,j;
FILE*fp;
//初始化商品结构体数组
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
com[i][j].Category=i;
com[i][j].id=j;
strcpy(com[i][j].name,"no");
}
}
//初始化客户结构体变量
strcpy(,"no");
strcpy(rd,"no");
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
modity[i][j]=0;
modity[i][j]=0;
ommodity[i][j]=0.0;
}
egory[i]=0;
egory[i]=0;
ategory[i]=0.0;
}
//读取商品信息⽂件
i=0;
fp=fopen("","r+");
while(fscanf(fp,"%s%s%s%s%s%s%s%s%s%sn",com[i][0].name,com[i][1].name,com[i][2].name,
com[i][3].name,com[i][4].name,com[i][5].name,
com[i][6].name,com[i][7].name,com[i][8].name,com[i][9].name)!=EOF)//读到⽂件尾停⽌
{
++i;
}
}
voidLogIn(Customer&customer)
{
system("cls");//清屏
inti,j;
charid[10],password[10];//临时存储输⼊的账号密码
FILE*fp;
printf("您需要登录请输⼊ID和密码:n");
scanf("%s",id);
scanf("%s",password);
strcpy(pathName,id);
strcat(pathName,".txt");//⽣成⽂件名
fp=fopen(pathName,"r+");//打开⽤户⽂件
if(fp)//如果⽤户⽂件存在,即⽤户⾮⾸次登陆
{
fscanf(fp,"%s%s",,rd);//读取密码到⽤户结构体变量
if(strcmp(password,rd)==0)//如果密码正确
{
for(i=0;i<10;i++)//写⼊查看种类次数
{
fscanf(fp,"%d",&egory[i]);
}
for(i=0;i<10;i++)//写⼊购买种类次数
{
fscanf(fp,"%d",&egory[i]);
}
for(i=0;i<10;i++)//写⼊查看商品次数
{
for(j=0;j<10;j++)
{
fscanf(fp,"%d",&modity[i][j]);
}
}
for(i=0;i<10;i++)//写⼊购买商品次数
{
for(j=0;j<10;j++)
{
fscanf(fp,"%d",&modity[i][j]);
}
}
fclo(fp);
}
el//如果密码错误
{
printf("您输⼊的账号或密码不正确,请重新输⼊!n");
fclo(fp);
system("pau");
LogIn(customer);//未登录成功,递归执⾏登录操作,直到登录成功为⽌
return;
}
}
el//如果为⾸次使⽤,创建⽤户⽂件
{
fp=fopen(pathName,"w+");
strcpy(,id);
strcpy(rd,password);
SaveCustomer(customer,fp);//保存⽂件
fclo(fp);
}
}
voidBuy(Commoditycom[10][10],Customer&customer)
{
FILE*fp=NULL;
intcategory=0,id=0;
fp=fopen(pathName,"w+");
system("cls");
printf("请输⼊您要购买的商品的类别:n");
scanf("%d",&category);
printf("请输⼊您要购买的商品的编号:n");
scanf("%d",&id);
printf("您要购买的商品名称是:%s,谢谢您的选购!n",com[category][id].name);
egory[category]+=1;//记录⽤户购买的种类
modity[category][id]+=1;//记录⽤户购买的商品
SaveCustomer(customer,fp);//保存⽤户的购物记录
system("pau");
}
voidSee(Commoditycom[10][10],Customer&customer)
{
system("cls");
FILE*fp=NULL;
intcategory=0,id=0;
fp=fopen(pathName,"w+");
printf("请输⼊您要查看的商品的类别:n");
scanf("%d",&category);
printf("请输⼊您要查看的商品的编号:n");
scanf("%d",&id);
printf("您要查看的商品名称是:%s。n",com[category][id].name);
egory[category]+=1;//记录⽤户查看的种类
modity[category][id]+=1;//记录⽤户查看的商品
SaveCustomer(customer,fp);//保存⽤户浏览记录
system("pau");
}
voidRecommend(Commoditycommodity[10][10],Customer&customer)
{
inti,j,m=0;
struct//临时存储⽤户喜欢的商品
{
intcategory;
intid;
floatinterCommodity;
}temCommodity[101];
struct//临时存储⽤户喜欢的种类
{
intcategory;
floatinterCategory;
}temCategory[11];
//计算感兴趣度。购买的权值为7,查看的权值为3
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
ommodity[i][j]=(float)(7.0*modity[i][j]+3.0*modity[i][j]);
}
ategory[i]=(float)(7.0*egory[i]+3.0*egory[i]);
}
/**************************************应⽤冒泡排序算法实现商品的排名推荐**************************************************************/
for(i=0;i<10;i++)//给temCommodity赋值
{
for(j=0;j<10;j++)
{
temCommodity[m].category=i;
temCommodity[m].id=j;
temCommodity[m].interCommodity=ommodity[i][j];
m++;
}
}
for(i=0;i<100-1;i++)//冒泡排序,商品排名推荐
{
for(j=0;j<100-1-i;j++)
{
if(temCommodity[j+1].interCommodity>temCommodity[j].interCommodity)
{
temCommodity[100]=temCommodity[j+1];
temCommodity[j+1]=temCommodity[j];
temCommodity[j]=temCommodity[100];
}
}
}
printf("根据您的购物习惯和购物历史,为您推荐以下商品:n");
for(i=0;i<10;i++)
{
printf("类别:%d,编号:%d,名字:%sn",commodity[temCommodity[i].category][temCommodity[i].id].Category,commodity[temCommodity[i].category][t
emCommodity[i].id].id,commodity[temCommodity[i].category][temCommodity[i].id].name);
}
/*******************************************实现商品分类推荐***********************************************************/
for(i=0;i<10;i++)//给temCategory赋值
{
temCategory[i].category=i;
temCategory[i].interCategory=ategory[i];
}
for(i=0;i<10-1;i++)//冒泡法排序,实现商品分类推荐
{
for(j=0;j<10-1-i;j++)
{
if(temCategory[j+1].interCategory>temCategory[j].interCategory)
{
temCategory[10]=temCategory[j];
temCategory[j]=temCategory[j+1];
temCategory[j+1]=temCategory[10];
}
}
}
printf("根据您的购物习惯和购物历史,为您推荐以下类别商品:n");
for(i=0;i<3;i++)
{
printf("类别:%dn",temCategory[i].category);
}
}
voidSaveCustomer(Customer&customer,FILE*fp)
{
inti,j;
fprintf(fp,"%s%s",,rd);//保存账号密码
for(i=0;i<10;i++)//写⼊查看种类次数
{
fprintf(fp,"%d",egory[i]);
}
for(i=0;i<10;i++)//写⼊购买种类次数
{
fprintf(fp,"%d",egory[i]);
}
for(i=0;i<10;i++)//写⼊查看商品次数
{
for(j=0;j<10;j++)
{
fprintf(fp,"%d",modity[i][j]);
}
}
for(i=0;i<10;i++)//写⼊购买商品次数
{
for(j=0;j<10;j++)
{
fprintf(fp,"%d",modity[i][j]);
}
}
}
voidInteraction(Commoditycom[10][10],Customer&customer)//⼈机交互界⾯
{intn;
system("cls");
Recommend(com,customer);//推荐商品
printf("nn请您选择要进⾏的操作:n");
printf("1.购买商品n");
printf("2.查看商品n");
printf("3.退出n");
scanf("%d",&n);
switch(n)
{
ca1:
Buy(com,customer);//购买
Interaction(com,customer);//递归
break;
ca2:
See(com,customer);//购买
Interaction(com,customer);//递归
break;
ca3:
exit(0);//退出
break;
default:
Interaction(com,customer);//递归
break;
}
}
本文发布于:2023-03-13 21:50:40,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/16787154409610.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:智能超市.doc
本文 PDF 下载地址:智能超市.pdf
| 留言与评论(共有 0 条评论) |