各模块及函数调用之间的关系
主函数
文本创建函数
加密文本函数
解密文本函数
文章输出函数
数据结构设计
行结点定义
typedef struct LNode {
char *data;
LNode *next;
}LNode,*linklist;
主函数
void main()
{
int flag=1,a;
linklist head,head_jam,head_jem;
cout<<" "<<endl;
cout<<" "<<endl;
while(flag)
{ cout<<"请选择您要进行的操作:";
cin>>a;
switch(a)
{
case 1:head=CreateTXT();break;
case 2:out_TXT(head);break;
case 3:head_jam=JAM_TXT(head);break;
case 4:out_TXT(head_jam);break;
case 5:head_jem=JEM_TXT(head_jam);break;
case 6:out_TXT(head_jem);break;
case 7:flag=0;break;
default:cout<<"您的选择有误"<<endl; }
}
}
主界面
明文创建函数
linklist CreateTXT() //创建明文
{ linklist p,head; char temp[80]; int i,N;
p=new LNode;
p->data=NULL;
p->next=NULL;
head=p;
for(i=0;i<N;i++)
{
gets(temp); //以回车键作为行结束标志,却不接收最后一个回车键
p->next=new LNode;
p=p->next;
p->data=new char[strlen(temp)+1]; //申请字符串大小的空间(比字符串大1,用于存放字符串结束标识符)
strcpy(p->data,temp);
p->data[strlen(temp)]='\0';
}
p->next=NULL;
head=head->next;
return head;
}
明文创建界面
加密函数
linklist JAM_TXT(linklist head) //对明文进行加密
{
linklist p,head1,q,f;
int k; char c;
q=new LNode;
f=q;
cout<<"请输入加密密钥(字母移动长度): "; cin>>k;
p=head;
while(p)
{ q->next=new LNode;
q=q->next;
q->data=new char[strlen(p->data)+1];
for(int i=0;p->data[i]!='\0';i++)
{ ………..……..}
q->data[strlen(p->data)]='\0';
p=p->next;
}
q->next=NULL;
head1=f->next;
return head1;
}
加密方法
for(int i=0;p->data[i]!='\0';i++)
{
if(p->data[i]>='A'&&p->data[i]<='Z')
{ c=p->data[i];
c=(c-65+k)%26+65;
q->data[i]=c;
}
else if(p->data[i]>='a'&&p->data[i]<='z')
{
c=p->data[i];
c=(c-97+k)%26+65;
q->data[i]=c;
}
else
q->data[i]=p->data[i];
}
加密界面
解密函数
linklist JEM_TXT(linklist head) //对密文进行解密
{ linklist p,head1,q,f; char c,a; int k;
q=new LNode; f=q;
cout<<"请输入解密密钥(字母移动长度)"; cin>>k;
p=head;
while(p)
{ q->next=new LNode;
q=q->next;
q->data=new char[strlen(p->data)+1];
for(int i=0;p->data[i]!='\0';i++)
{………………………}
q->data[strlen(p->data)]='\0';
凯撒密码幻灯片 来自淘豆网m.daumloan.com转载请标明出处.