coreBugZJ

此 blog 已弃。

密码传情,中兴捧月程序设计比赛作品









密码传情
任务描述:
一、 题目
在互联网上,曾经出现了一个感人的密码传情事件。一位网友收到了心仪的女生给他的答复,用摩尔斯密码表示如下:
****-/*----/----*/****-/****-/*----/---**/*----/****-/*----/-****/***--/****-/*----/----*/**---/-****/**---/**---/***--/--***/****-/
经过热心网友们的协助,破解了这段有5次编码组成的密码。过程如下:
a、摩尔斯解码:
得到:4194418141634192622374
b、手机按键码表:
得到:G Z G T G O G X N C S
c、QWE键盘码表:
得到:O T O E O I O U Y V L
d、栅栏密码:(两排栅栏)
得到:O O T U O Y E V O L I
e、倒序排列:
得到:I L O V E Y O U T O O (最终结果)
请利用这几种密码机制,编写一款聊天工具。
二、 初赛阶段要求
1. 聊天工具由客户端与服务器端组成。所有客户端之间的聊天内容,都通过服务器端进行转发,不进行客户端之间的点对点直接通信;
2. 客户端与服务器端可以为不同机器,也可以为机器上的不同窗口。二者之间用socket进行通信;
3. 服务器端管理的用户信息包括:(用户信息不用加密发送)
1) 用户名称(可含中文,最大16字符)
2) 用户ID(10位数字)
3) 密码(10位数字)
4. 用户的基本信息可在服务器端进行添加/删除/修改/查询。用户密码可以在客户端登录后修改;
5. 服务器端与客户端均可从PC机的当前IP地址组中选取一个IP地址使用。同时,启用的socket端口号可以指定;可以查看并修改当前的IP地址、socket端口号;
6. 客户端输入服务器端的IP地址和socket端口号,并通过用户ID和密码验证后,进入工作状态。发送信息时,需要指定接收用户的ID;
7. 当相同用户尝试在多个终端登录时,旧的终端告警并断开连接,新的终端启用;
8. 服务器端限定10个用户同时处于连接使用状态;
9. 客户端可以设置个人的密码策略。利用该策略,可以设置信息加密时每一步编码的算法,如策略 edcdcba则表示编码顺序为:倒序、栅栏、QWE、栅栏、QWE、手机、摩尔斯。(最后两步必须为手机编码和摩尔斯编码)(注意:设计中需要分析策略中各种编码方法的约束条件。最大策略设计为不超过8次编码)(新用户默认编码策略为空,采用未加密的明码发送信息)
10. 信息发送时只需要指定接收方的ID即可,不用知道接收方的密码策略;
11. 最后输出的摩尔斯码流将转换成二进制流方式发送,用1表示“-”,0表示“*”;
12. 客户端包含图形界面与命令行两种工作方式;
13. 编码与解码的每一步结果,将可以调试输出;
14. 初赛只处理纯字母字符串,字母统一转换为小写处理。对非字母以外的字符有检查与提示;
15. 输入单行字母串后,回车进行发送;
16. 附:数字的摩尔斯码表:
0:― ― ― ― ― 1:* ― ― ― ― 2:* * ― ― ― 3:* * * ― ―
4:* * * * ― 5:* * * * * 6:― * * * * 7:― ― * * *
8:― ― ― * * 9:――――*
三、 初赛阶段说明
1. 限用C、C++语言编码,不使用Java 或脚本语言;
2. 概念层次清晰,程序结构合理;
3. 提供程序框架设计文档、关键算法流程设计文档;
4. 提供使用手册,包含主要工作界面截图;
5. 提供源码包(含工程编译配置)与可执行程序(静态链接);
6. 手机按键编码:传统的电话/手机,会复用’2’--‘9’的八个数字键盘,进行英文字母的输入。如数字’3’,可输入’d’’e’’f’三个字母。按数字’2’键两次,表示字母’e’,用编码3 2描述。完整码表请查看手机;
7. QWE键盘编码:按照电脑英文键盘的格式进行编码,即1:Q、2:W、3:E 。。。,转换成字母替换,则为:a:Q、b:W、c:E 。。。,完整码表请查看电脑键盘;
8. 栅栏编码:将字串按间隔N拆成N排,然后重新组合。如字串abcdef,用2排栅栏编码后变成acebdf,用3排栅栏编码后变成adbecf;
9. 演示用字符串:“ZhongXingPengYue”;
四、 系统实现技术提示信息
1. 关注时间与空间性能
2. 容错能力
五、 审核标准及评价细则(初赛阶段满分100分)
功能完备,清晰易用;
程序可运行,无明显故障;
代码规范,结构合理;
设计完善,文档齐全;
有性能、容错、调测等方面分析与处理;









服务器端:

debug.h

 

doubleLove.h

 

packet.cpp

 

packet.h

 

packetCmd.h

 

resource.h

 

server.cpp

 

server.h

 

server_gui.cpp

 

server_gui.rc

 

serverDefaultInfo.h

 

serverThreadCenter.cpp

 

serverThreadCenter.h

 

serverThreadData.cpp

 

serverThreadData.h

 

threadCmd.h