(1).源代码来源:来自csdn上查询到的一个简单的备忘录系统(C++),可以实现登录,登出,添加,展示的功能
(2).运行环境:vs2022
代码:

运行结果:



(3).主要问题:
1.应该先登入,再显示功能页面
2.输入的代码有问题,导致无法存入实质性的文字
3.欢迎页面应与登录页面在一起而非登陆过后经过用户手动输入才弹出
4.登陆失败应当有提示
(4).改进后的代码(改进过的部分)


(5).重构后的测试截图






(6).总结:
难点:本次改进实现了一个简单的登录逻辑,通过比较硬编码的用户名和密码来实现。
登录失败时,程序会提示用户并重新显示登录提示,而不是直接退出或允许访问功能。代码中涉及多次用户输入,如用户名、密码以及任务内容。正确处理用户输入,特别是处理输入错误(如非数字输入或空行)是代码的关键部分。使用std::cin.clear()和std::cin.ignore()来清除输入错误标志并忽略错误输入,确保程序不会因为输入错误而崩溃。
对于逆向软件工程的一些思考:
代码理解和重构:
逆向软件工程涉及理解现有代码的功能和结构,可能需要对代码进行重构以提高其可维护性、可扩展性或安全性。
对于这段代码,可以考虑将硬编码的用户名和密码替换为更安全的认证机制,如数据库存储的加密密码。
错误处理和用户反馈:
逆向工程中,可能需要增强错误处理和用户反馈机制,以确保用户在使用软件时能够获得清晰、有用的信息。
例如,可以添加更详细的错误消息,或者在用户输入无效数据时提供更具体的指导。
逆向软件工程是一个复杂的过程,涉及对现有代码的理解、重构、测试和改进。通过仔细分析代码的功能和结构,开发人员可以识别出潜在的改进点,并采取相应的措施来提高代码的质量、安全性和性能。