前言:

  提升软件开发能力的一个有效途径是,对别人的软件项目进行二次开发。在这个过程中,既能使自己取其精华,吸收他人优秀的编写代码思维,又要能做到去其糟粕,思考其中的不足,对其功能进行扩展或者二次开发。此篇博客我将选用我班某同学大一下学期的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之类的数据库知识。希望在这学期内,能根据小组定的软件需求,学习相应功能实现所需要的技术知识,顺利完成预期任务!