急!急!计算机大神救命!!有关用C++做有界面加密解密的一些问题。 急!在线等!!C++ 档案加密解密
工大课设吧,我这里有,你看看有没有帮助,,很多呀,我要怎么给你,给你分享吧。。
直接给你吧。。。。。。希望对你有所帮助!!!!!
#include
#include
#define FilePath1 "Myinfor.dat"
#define FilePath2 "Myinfor.txt"
#define Status int
#define OK 1
#define Error 0
#define NotFound 2
typedef struct Infor{
int month;
int spxf;
int fz;
int znjy;
int sdf;
int ylf;
int cx;
int byzhf;
} Infor,*Infor1;
typedef struct pType{
int no;
int data;
}pType;
void menu(void);
void input1(Infor *newI,int mon);
void input(Infor *newI);
void writeinfor(Infor *newI);
void changeFormat(void );
Status search(Infor *a,int mon);
void paixu(Infor *a);
void modify(Infor *a,int mon);
void delRecord(int mon);
void xuanze(int item);
void xiugai(int m);
int panduan(Infor *a,int mon);
void main()
{ while(1)
{ menu(); }
}
void menu(void)/*菜单*/
{ int item;
printf("
………\"我的大学\"生活消费管理系统…………
");
printf("1.…………录 入 数 据………….
");
printf("2.…………查 看 数 据………….
");
printf("3.…………修 改 数 据………….
");
printf("4.…………查 询 数 据………….
");
printf("5.…………排 序 数 据………….
");
printf("6.…………删 除 数 据………….
");
printf("0.…………退 出 系 统………….
");
printf("请输入要进行的操作: " );
scanf("%d",&item);
if(item>6 || item<-1)
{ printf("请重新输入要进行的操作: " );
menu(); }
else xuanze( item); }
int panduan(Infor *a,int mon)
{ int item;
FILE *fp;
fp=fopen(FilePath1,"ab+");
if(fp==NULL)
{ printf("无法创建文件:%s",FilePath1);
exit(0); }
if(mon<=12)
{ item=search(a,mon);
while(item==OK)
{ printf("输入月份已存在请重新输入要建立的月份:
");
scanf("%d",&mon);
item=search(a,mon); } }
else{
printf("您输入的月份有误请重新输入:
");
scanf("%d",&mon);
panduan(a,mon); }
fclose(fp);
return mon; }
void xuanze(int item)
{ int mon;
Infor *a;
a=(Infor *)malloc(sizeof(Infor));
switch(item)
{ case 0: //getchar();/*退出*/
//getchar();
printf("
……………………欢迎使用…………………………");
printf("
..");
printf("
..");
printf("
..");
printf("
..");
printf("
. \"我的大学\"生活消费管理系统 .");
printf("
..");
printf("
..");
printf("
..");
printf("
..");
printf("
. 欢迎下次使用 .");
printf("
..");
printf("
..");
printf("
..");
printf("
..");
//printf("
\"我的大学\"生活消费管理系统
");
//printf("
. 欢迎下次使用
");
printf("
……………………………………………………………
");
exit(1);
break;
case 1:
printf("请输入要建立的月份:
");
scanf("%d",&mon);
mon=panduan(a,mon);
input1(a,mon);
writeinfor(a);
break;
case 2:
changeFormat();
break;
case 3:
printf("请输入要查找的月份:
");
scanf("%d",&mon);
item=search(a,mon);
mon=a->month;
if (item!=OK) printf("
没有符合条件的记录!
");
else
{
printf("
记录月份 食品消费 房租 子女教育费用 水电费 医疗费 储蓄 本月总花费
");
printf("-------------------------------------------------------
");
printf("%7d %8d %8d %8d %8d %8d %8d %8d
",a->month,a->spxf,a->fz,a->znjy,a->sdf,a->ylf,a->cx,a->byzhf);
input(a);
modify(a,mon); }
break;
case 4:
printf("请输入要查找的月份:
");
scanf("%d",&mon);
item=search(a,mon);
if (item!=OK) printf("
没有符合条件的记录!
");
else{
printf("
记录月份 食品消费 房租 子女教育费用 水电费 医疗费 储蓄 本月总花费
");
printf("-------------------------------------------------------
");
printf("%7d %8d %8d %8d %8d %8d %8d %8d
",a->month,a->spxf,a->fz,a->znjy,a->sdf,a->ylf,a->cx,a->byzhf);
}
break;
case 5:
printf("请输入要查找的月份:
");
scanf("%d",&mon);
item=search(a,mon);
if (item!=OK) printf("
没有符合条件的记录!
");
else
paixu(a);
break;
case 6:
printf("请输入要查找的月份:
");
scanf("%d",&mon);
item=search(a,mon);
mon=a->month;
if (item!=OK) printf("
没有符合条件的记录!
");
else
{
printf("-------------------------------------------------------
");
printf("%7d %8d %8d %8d %8d %8d %8d %8d
",a->month,a->spxf,a->fz,a->znjy,a->sdf,a->ylf,a->cx,a->byzhf);
delRecord(mon); }
break;}
free(a);}
void input1(Infor *newI,int mon)
{ printf("
请依次输入数据[说明:中间以空格符隔开]:
( 食品消费 房租 子女教育费用 水电费 医疗费 储蓄 )
");
scanf("%d%d%d%d%d%d",&newI->spxf,&newI->fz,&newI->znjy,&newI->sdf,&newI->ylf,&newI->cx);
newI->month=mon;
newI->byzhf=newI->spxf+newI->fz+newI->znjy+newI->sdf+newI->ylf+newI->cx;
fflush(stdin);}
void input(Infor *newI)
{
printf("
请依次输入数据[说明:中间以空格符隔开]:
( 食品消费 房租 子女教育费用 水电费 医疗费 储蓄 )
");
scanf("%d%d%d%d%d%d",&newI->month,&newI->spxf,&newI->fz,&newI->znjy,&newI->sdf,&newI->ylf,&newI->cx);
newI->byzhf=newI->spxf+newI->fz+newI->znjy+newI->sdf+newI->ylf;
fflush(stdin);}
void writeinfor(Infor *newI)
{
FILE *fp;
fp=fopen(FilePath1,"ab+");
if(fp==NULL)
{ printf("无法创建文件:%s",FilePath1);
exit(0);}
fwrite(newI,sizeof(Infor),1,fp);
fclose(fp);
printf("数据录入成功!
");}
void changeFormat(void)
{
FILE *fp1,*fp2;
Infor *a;
a=(Infor *)malloc(sizeof(Infor));
fp1=fopen(FilePath1,"rb+");
if(fp1==NULL)
{ printf("无法找到文件:%s
",FilePath1);
return ;}
fp2=fopen(FilePath2,"wt+");
if(fp2==NULL)
{printf("无法创建文件:%s
",FilePath2);
return ;
}
//fputs("
!@#¥%……&*(&……¥#@@?\"我的大学\"生活消费管理系统!@#¥%……&*(&……¥#@@!n
",fp2);
fputs("记录月份 食品消费 房租 子女教育费用 水电费 医疗费 储蓄 本月总花费
",fp2);
fputs("----------------------------------------------------
",fp2);
printf("
记录月份 食品消费 房租 子女教育费用 水电费 医疗费 储蓄 本月总花费
");
printf("---------------------------------------------------
");
rewind(fp1);
fread(a,sizeof(Infor),1,fp1);
while(!feof(fp1))
{printf("%7d %8d %8d %8d %8d %8d %8d %8d
",a->month,a->spxf,a->fz,a->znjy,a->sdf,a->ylf,a->cx,a->byzhf);
fprintf(fp2,"%7d %8d %8d %8d %8d %8d %8d %8d
",a->month,a->spxf,a->fz,a->znjy,a->sdf,a->ylf,a->cx,a->byzhf);
fread(a,sizeof(Infor),1,fp1);}
fputs("---------------------------------------------------
",fp2);
fputs("关闭本程序继续原程序!
",fp2);
fclose(fp1);
fclose(fp2);
system(FilePath2);
remove(FilePath2);}
Status search(Infor *a,int mon)
{
FILE *fp1;
int isfound=0;
//printf("请正确输入要查询的月份:");
//scanf("%d",&mon);
fflush(stdin);
fp1=fopen(FilePath1,"rb+");
if(fp1==NULL)
{ printf("无法找到文件:%s
",FilePath1);
return Error; }
rewind(fp1);
fread(a,sizeof(Infor),1,fp1);
while(!feof(fp1))
{ if(a->month==mon)
{ isfound=1;
Break; }
else
{ isfound=0; }
fread(a,sizeof(Infor),1,fp1);}
fclose(fp1);
if(isfound)
return OK;
else
return NotFound; }
void paixu(Infor *a)
{ int i=0,j=0,flag=0,t;
pType px[8]={{0,0}};
char str[8][14]={"记录月份","食品消费"," 房租", "子女教育费用", "水电费"," 医疗费"," 储蓄"," 本月总花费"};
for(;i<8;i++)
px[i].no=i;
px[0].data=a->month;
px[1].data=a->spxf;
px[2].data=a->fz;
px[3].data=a->znjy;
px[4].data=a->sdf;
px[5].data=a->ylf;
px[6].data=a->cx;
px[7].data=a->byzhf;
for(i=1;i<8;i++)
{
flag=0;
for(j=0;j<8-i;j++)
if(px[j].data>px[j+1].data)
{ t=px[j].data;
px[j].data=px[j+1].data;
px[j+1].data=t;
t=px[j].no;
px[j].no=px[j+1].no;
px[j+1].no=t;
flag=1; }
if(flag==0) break;}
printf("
");
for(i=0;i<8;i++)
{ printf(" %s",str[px[i].no]);}
printf("
-----------------------------------------------------
");
for(i=0;i<8;i++)
{printf("%8d ",px[i].data); }
printf("
");}
void modify(Infor *a,int mon)
{ FILE *fp1,*fp2;
Infor *b;
b=(Infor *)malloc(sizeof(Infor));
fp1=fopen(FilePath1,"rt");
fp2=fopen("temp.dat","wt+");
rewind(fp1);
fread(b,sizeof(Infor),1,fp1);
while (!feof(fp1))
{ if(b->month==mon)
{
fwrite(a,sizeof(Infor),1,fp2);
}
else
{ fwrite(b,sizeof(Infor),1,fp2);
}
fread(b,sizeof(Infor),1,fp1);
}
fclose(fp1);
fclose(fp2);
remove(FilePath1);
rename("temp.dat",FilePath1);
printf("修改数据成功!
" );
changeFormat();
}
void delRecord(int mon)
{
FILE *fp1,*fp2;
Infor *b;
b=(Infor *)malloc(sizeof(Infor));
fp1=fopen(FilePath1,"rt");
fp2=fopen("temp.dat","wt+");
rewind(fp1);
fread(b,sizeof(Infor),1,fp1);
while (!feof(fp1))
{
if(b->month!=mon)
fwrite(b,sizeof(Infor),1,fp2);
fread(b,sizeof(Infor),1,fp1);
}
fclose(fp1);
fclose(fp2);
remove(FilePath1);
rename("temp.dat",FilePath1);
printf("删除数据成功!
" );
changeFormat();
}
作一档案加密与档案解密程式
"x+3+4*x^3-5*8^4=2*x^5+5*5.275-2^x"
if the key word is "2213848"
then "passaway"
else wend
end if
end
加密方法为对每一个字元进行与密码做XOR运算 然后继续重复输入一个密码钥匙,当做密码,并将此密码写入加密后档案的第一个字元位置,用此密码进行解密对每一个字元进行与密码做XOR运算 需要
打开后缀名为dsw的文件!dsw表示的是工程文件