前言:
提升软件开发能力的一个有效途径是,对别人的软件项目进行二次开发。在这个过程中,既能使自己取其精华,吸收他人优秀的编写代码思维,又要能做到去其糟粕,思考其中的不足,对其功能进行扩展或者二次开发。此篇博客我将选用我班某同学大一下学期的C++大作业——网上购书结账系统,对其进行功能扩展,实现二次开发。本文将先分析现有软件概况,其次分析其不足之处,接着对不足之处尝试进行修改,最后阐述心得体会。
软件概况:
在对软件进行分析时,首先分析其基本功能,“网上购物结账系统”功能结构图如下:

图1 网上购书结账系统功能结构图
该软件通过C++语言实现了用户和管理员分别对图书进行操作的功能。结合实际生活中我们购物的需求,该软件功能较为完善,但是在用户信息安全方面缺少必要的保护机制。在登录界面的登录功能上,该软件没有设置登录密码验证的功能,仅需输入账号便可以进入相应账号的操作页面,有着很大的信息泄露风险。在支付功能上同样缺少了对订单信息和支付安全的保护,无需输入相应的支付密码即可完成付款操作,容易造成钱财的损失。因此,我将基于用户信息安全,在该系统中添加登录和支付密码验证功能,提升软件的安全性。
二次开发:
以下是修改后需要输入密码的登陆界面部分代码(支付部分的密码验证代码与其基本相同,不再赘述):
while(true) { cout << "--------------------------------------------------" << endl; cout<<" 欢迎来到登陆界面,请选择功能:"<<endl; cout<<" ****************************************** "<<endl; cout<<"\t1:用户登录"<<endl; cout<<"\t2:用户账号修改"<<endl; cout<<"\t0:退出"<<endl<<endl; cout << "--------------------------------------------------" << endl; char n0; cin>>n0; switch(n0) { case '1': while(time) { system("cls"); cout<<"您还有"<<time<<"次机会"<<endl; cout<<"请输入账户:";cin>>usera; cout<<"请输入密码:";cin>>userc; if(time) { if(usera!=account) { cout<<"账号错误,2秒请重新输入!"<<endl;time--;Sleep(2000);continue;} else if(userc!=code) { cout<<"密码错误,2秒请重新输入!"<<endl;time--;Sleep(2000);continue;} else { cout<<endl<<"登录成功,2秒后自动跳转!"<<endl;Sleep(2000);print_menu(); return 0 ;} } } if(time==0) { system("cls");cout<<"您的机会已用完,系统2秒后将自动退出!"<<endl;Sleep(2000);return 0;} case '2': cout<<"请输入新的账号:";cin>>newaccount;cout<<endl;account=newaccount; cout<<"请输入新的密码:";cin>>newcode;cout<<endl;code=newcode; cout<<"修改完成,请按任意键继续!"<<endl; fflush(stdin);getchar(); system("cls"); break; case '0': cout<<"真的要退出系统?(y/n):"; fflush(stdin); // 清除缓冲区 char ch; cin>>ch; if (ch=='y'||ch=='Y') { cout<<endl<<"谢谢使用,再见!按Enter键退出。"; fflush(stdin); getchar(); return 0; } system("cls"); break; default: cout<<"输入错误,2秒后请重新输入!"; Sleep(2000); system("cls"); break; }
心得体会:
对他人编写的软件进行二次开发,需要花费较多的时间阅读代码去了解整体的功能框架,然后结合实际的软件使用需求,对其进行修改。此次修改只是一个小小的尝试,软件还有许多地方需要修改。单指我这次修改的功能来说,光光增加密码验证是不足的,可以采取密码加密的方法进一步提高软件的安全性,同时可以设置验证码来筛选是否为机器恶意登录。当然,这些功能的实现需要依托于一定的技术知识,比如加密需要密码学的理论知识,安全存储数据需要MySQL之类的数据库知识。希望在这学期内,能根据小组定的软件需求,学习相应功能实现所需要的技术知识,顺利完成预期任务!
浙公网安备 33010602011771号