| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2131 人关注过本帖
标题:综合性实验,求大神
只看楼主 加入收藏
波波bobobo
Rank: 1
等 级:新手上路
帖 子:15
专家分:5
注 册:2016-9-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
综合性实验,求大神
*(1)加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密文;例如通过将字母按顺序推后n位起到加密作用,如果n=3,则将字母A换作字母D,将字母B换作字母E。X变成A,Y变成B,Z变成C,x变成a,y变成b,z变成c。 
(2)解密:输入密文后再输入移位位数则可输出明文
假如有这样一条指令:  Can you come here
用替代密码加密后就成为:  Fdq brx Frph khuh
实验要求:
(1)系统以菜单方式工作;菜单形式不限。
(2)界面比较美观。
(3)要有一定的容错能力,比如说输入一个不存在的菜单项编号
(4)明文和密文的输入输出都要使用文件。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>  
char a[]={"mingwen.txt"},b[]={"miwen.txt"};
welcome()//欢迎界面
{  
    printf("\n\n\n\n\n\n\n\n\n\t\t****************************************\n\n");  
    printf("\t\t\t加密解密欢迎您\n\n");   
    printf("\t\t****************************************\n");  
    printf("\n\n\n\n\n\n\t\t\t\t\t\t\t电信\n");  
return 0;
}   
byebye()//退出界面
{  
    printf("\n\n\n\n\n\n\n\n\n\t\t**************************************\n");  
    printf("\t\t**************************************\n\n");  
    printf("\t\t\t\t欢迎使用\n\n");  
    printf("\t\t**************************************\n");
    printf("\t\t**************************************\n");  
return 0;}
char *space(char *a,char *b)// 去空格
{      
    char *c = a;        
    int n =0;
    while (*b!='\0')  
    {           
        if (*b!=' ')
        {            
            *c = *b;
            n++;
            c++;
        }         
        b++;
    }      
    *c='\0';
    }   
transpen()//换位加密
{  FILE *mingwen,*miwen;
  int i,j,n,m,k,z=0,hang;
  char ch;
  char r[1000],h[100],zl[10][10],he[100];
if((mingwen=fopen(a,"w+"))==NULL)  
{
    printf("不能打开文件\n");
    exit(0);
}  
 if((miwen=fopen(b,"w+"))==NULL)
 {
     printf("不能打开文件\n");  
     exit(0);
 }   
 printf("请输入密钥\n");  
 scanf("%d",&n);  printf("请输入明文\n");  
 ch=getchar();
 gets(r);
 k=strlen(r);
 for(i=0;i<k;i++)  
     fputc(r[i],mingwen);
 fclose(mingwen);
 if((mingwen=fopen(a,"r"))==NULL)  
 {
     printf("不能打开文件\n");  
     exit(0);
 }  
 space(h,r);
 m=strlen(h);
 if(m%n==0)  
 {   
     hang=m/n;
     for(i=0;i<hang;i++)
     {  
         for(j=0;j<n;j++)
         {
             zl[i][j]=h[z];
             z++;  
         }
     }
 }
 else
 {   
     hang=m/n+1;j=0;
for(i=m;i<(hang*n);i++)   
{        
    h[i]='a'+j;
    j++;
}   
for(i=0;i<hang;i++)   
{   
    for(j=0;j<n;j++)   
    {     
        zl[i][j]=h[z];     
        z++;     
    }   
}
 }  
 z=0;   
 for(i=0;i<n;i++)   
     for(j=0;j<hang;j++)   
     {   
         he[z]=zl[j][i];   
         printf("%c",he[z]);  
         z++;
         fputc(zl[j][i],miwen);
     }   
     printf("\n");  
     fclose(mingwen);
     fclose(miwen);
     printf("\n\n");
     printf("密文请查看miwen.txt\n\n\n按enter键返回主菜单\n");  
     ch=getchar();
     system("cls");
     caidan();
 return 0;
}

 transpde()//换位解密
 {   
     FILE *mingwen,*miwen;
     int i,j,n,m,k,z=0,hang;  
     char ch;   
     char r[1000],h[100],zl[10][10],he[100];
     if((mingwen=fopen(a,"w+"))==NULL)
     {
         printf("不能打开文件\n");  
         exit(0);
}   
     if((miwen=fopen(b,"w+"))==NULL)  
     {
         printf("不能打开文件\n");
         exit(0);
  }   
     printf("请输入密钥\n");
     scanf("%d",&n);  
     printf("请输入密文\n");  
     ch=getchar();
     gets(r);
     k=strlen(r);
     for(i=0;i<k;i++)
         fputc(r[i],miwen);
     fclose(miwen);   
     if((mingwen=fopen(b,"r"))==NULL)
     {
         printf("不能打开文件\n");  
         exit(0);  
}  
     space(h,r);  
     m=strlen(h);  
     if(m%n==0)
     {
         hang=m/n;
         for(i=0;i<n;i++)
         {
             for(j=0;j<hang;j++)
             {  
                 zl[i][j]=h[z];
                 z++;
     }
     }
     }
     else  
     {   
         hang=m/n+1;
         j=0;
         for(i=m;i<(hang*n);i++)
         {
             h[i]='a'+j;   
             j++;
         }   
         for(i=0;i<n;i++)  
         {  
             for(j=0;j<hang;j++)  
             {
                 zl[i][j]=h[z];
                 z++;   
             }   
         }   
     }  
     z=0;   
     for(i=0;i<hang;i++)   
         for(j=0;j<n;j++)   
         {
             he[z]=zl[j][i];
             printf("%c",he[z]);
             z++;     
             fputc(zl[j][i],mingwen);
         }   
         fclose(mingwen);
         fclose(miwen);
         printf("\n\n");
         printf("明文请查看mingwen.txt\n\n\n按enter键返回主菜单\n");  
         ch=getchar();
         system("cls");
         caidan();
 return 0;
 }
 caidan()//菜单函数
 {  
     char a;   
     printf("\n\n\n\n");
     printf("\t\t\t\t1.换位加密\n\n");
     printf("\t\t\t\t2.换位解密\n\n");
     printf("\t\t\t\t7.退    出\n\n");   
     printf("\t\t\t请输入您要操作的项目编号\n");  
     a=getchar();   
     switch(a)   
     {    case'1':system("cls");     transpen();    break;   
          case'2':system("cls");     transpde();    break;   
          case'7':system("cls");          tuichu(); break;   
          default:system("cls");      caidan();     
     }  
 return 0;
 }   
tuichu()//退出菜单
{
    char tc;   
    printf("\n\n\n\n\n\n\n\n\n\t\t********************************************\n\n");  
    printf("\t\t\t\t  确定退出???\n\n");   
    printf("\t\t\t     确定请按Y,  取消请按N\n\n");   
    printf("\t\t********************************************\n");
    tc=getchar();
    tc=getchar();
    if(tc=='n'||tc=='N')   
    {
         system("cls");   
         caidan();  
    }   
    else if(tc=='y'||tc=='Y')
    {   
        system("cls");  
        byebye();
    }  
    else  
    {
        system("cls");  
        tuichu();
    }   
return 0;
}   

     
 void main(char a[]={"mingwen.txt"},b[]={"miwen.txt"};)//主函数
 {   
     char ch;  
     welcome();  
     printf("按enter键继续\n");  
     ch=getchar();  
     system("cls");  
     caidan();      
 return 0;
}   


[此贴子已经被作者于2016-12-26 21:44编辑过]

搜索更多相关主题的帖子: 键盘 加密 密码 能力 用户 
2016-12-26 19:30
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:10 
界面比较美观----好吧,刚才刚刷了一个贴,不知道这个界面行不行,里面的菜单格式包括文件输入输出处理可以参考一下~

至于正文方面,应该不太难,稍微摆弄一下代码就行了,感觉这题的重点是菜单处理以及文件的输入输出~

https://bbs.bccn.net/thread-472936-1-1.html

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-26 19:56
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
用密码字典
2016-12-26 19:56
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:10 
回复 3楼 吹水佬
那个不是循环移动n个数么,完全可以用对应的A表做啊,不过这样提出来还是要赞一个~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-26 20:04
波波bobobo
Rank: 1
等 级:新手上路
帖 子:15
专家分:5
注 册:2016-9-6
收藏
得分:0 
回复 2楼 九转星河
不懂
2016-12-26 21:48
波波bobobo
Rank: 1
等 级:新手上路
帖 子:15
专家分:5
注 册:2016-9-6
收藏
得分:0 
回复 4楼 九转星河
执行不出
综合性实验.cpp
F:\C语言文件\综合性实验.cpp(11) : error C2562: 'welcome' : 'void' function returning a value
        F:\C语言文件\综合性实验.cpp(5) : see declaration of 'welcome'
F:\C语言文件\综合性实验.cpp(20) : error C2562: 'byebye' : 'void' function returning a value
        F:\C语言文件\综合性实验.cpp(13) : see declaration of 'byebye'
F:\C语言文件\综合性实验.cpp(21) : error C2120: 'void' illegal with all types
F:\C语言文件\综合性实验.cpp(112) : error C2065: 'caidan' : undeclared identifier
F:\C语言文件\综合性实验.cpp(113) : error C2562: 'transpen' : 'void' function returning a value
        F:\C语言文件\综合性实验.cpp(37) : see declaration of 'transpen'
F:\C语言文件\综合性实验.cpp(194) : error C2562: 'transpde' : 'void' function returning a value
        F:\C语言文件\综合性实验.cpp(116) : see declaration of 'transpde'
F:\C语言文件\综合性实验.cpp(197) : error C2373: 'caidan' : redefinition; different type modifiers
F:\C语言文件\综合性实验.cpp(208) : error C2065: 'tuichu' : undeclared identifier
F:\C语言文件\综合性实验.cpp(211) : error C2562: 'caidan' : 'void' function returning a value
        F:\C语言文件\综合性实验.cpp(196) : see declaration of 'caidan'
F:\C语言文件\综合性实验.cpp(214) : error C2373: 'tuichu' : redefinition; different type modifiers
F:\C语言文件\综合性实验.cpp(237) : error C2562: 'tuichu' : 'void' function returning a value
        F:\C语言文件\综合性实验.cpp(213) : see declaration of 'tuichu'
F:\C语言文件\综合性实验.cpp(241) : error C2143: syntax error : missing ')' before '{'
F:\C语言文件\综合性实验.cpp(241) : error C2059: syntax error : ')'
F:\C语言文件\综合性实验.cpp(241) : error C2143: syntax error : missing ';' before '}'
F:\C语言文件\综合性实验.cpp(241) : error C2143: syntax error : missing ';' before ','
F:\C语言文件\综合性实验.cpp(241) : error C2143: syntax error : missing ';' before '{'
F:\C语言文件\综合性实验.cpp(241) : error C2447: missing function header (old-style formal list?)
F:\C语言文件\综合性实验.cpp(241) : error C2059: syntax error : ')'
F:\C语言文件\综合性实验.cpp(242) : error C2447: missing function header (old-style formal list?)
2016-12-26 21:49
快速回复:综合性实验,求大神
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.159160 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved