1、查找相关资料,描述匿名技术中的Datafly算法。
Datafly算法是数据发布环境下保护数据隐私的一种k-匿名方法,实现k-匿名时只对准标识符属性集中属性值种类最多的属性进行归纳。
2、编程实现Datafly算法。
#include<iostream>
using namespace std;
#define NUM 50 //总容量
//K—匿名算法
//输入数据,使用数组存值
//进行泛化处理
void showMenu(){
std::cout<<"K-匿名算法"<<std::endl;
std::cout<<"1.显示你的输入"<<std::endl;
std::cout<<"2.K-匿名化处理"<<std::endl;
std::cout<<"0.退出程序"<<std::endl;
std::cout<<"请输入你的选择:"<<std::endl;
}
void kAnonymous(std::string name[],std::string sex[],std::string age[],std::string zip[],std::string disease[],int num){
//匿名化处理
for (int i = 0; i < num; ++i) {
//匿名化处理
name[i]="***";
(age[i])[1]= (char) '*';
for (int j = 3; j < 6; ++j) {
zip[i][j]=(char )'*';
}
}
std::cout<<"name\t\tsex\t\tage\t\tzip\t\tdisease"<<std::endl;
for (int i = 0; i < num; ++i) {
std::cout<<name[i]<<"\t\t"<<sex[i]<<"\t\t"<<age[i]<<"\t\t"<<zip[i]<<"\t\t"<<disease[i]<<std::endl;
}
system("pause");
system("cls");
}
int main() {
// Created by Tuo Xiaodong on 2022/12/3.
//定义数组
std::string Name[NUM]; //姓名
std::string Sex[NUM]; //性别
std::string Age[NUM]; //年龄
std::string Zip[NUM]; //编号
std::string Disease[NUM]; // 疾病
int num = 0; //添加的人数
std::cout<<"请输入你要输入的人数:"<<std::endl;
std::cin>>num;
//写入数据
for (int i = 0; i < num; ++i) {
//依次写入姓名 性别 年龄 编号 疾病
std::cout<<"请依次写入第"<<i+1<<"位病人的信息(姓名、性别、年龄、编号、疾病)"<<std::endl;
std::cin>>Name[i]>>Sex[i]>>Age[i]>>Zip[i]>>Disease[i];
if(i+1 == num){
std::cout<<"输入完成!"<<std::endl;
system("pause");
system("cls");
break;
}
}
int select = 0;
bool flag = true;
while (flag) {
showMenu();
std::cin>>select;
switch (select) {
case 1:
std::cout << "name\t\tsex\t\tage\t\tzip\t\tdisease" << std::endl;
//显示写入数据内容
for (int i = 0; i < num; ++i) {
//输出
std::cout<<Name[i]<<"\t\t"<<Sex[i]<<"\t\t"<<Age[i]<<"\t\t"<<Zip[i]<<"\t\t"<<Disease[i]<<std::endl;
}
break;
case 2:
kAnonymous(Name,Sex,Age,Zip,Disease,num);
break;
case 0:
flag = false;
std::cout<<"程序已结束,欢迎下次使用"<<std::endl;
system("pause");
break;
}
}
return 0;
}
数据一
| ID |
性别 |
年龄 |
区号 |
健康状况 |
| 1 |
男 |
中 |
0595 |
发烧 |
| 2 |


1185

被折叠的 条评论
为什么被折叠?



