【C++】网上购书平台完善

问题描述

收到了一份室友已经完成的网上购书平台程序,对其功能使用和熟悉后,进行了部分功能的添加,使其更加完善。

程序概况

书店登录界面

 

 部分功能展示

 

 

 

 

 

 信息储存文件

 

使用体验

由此可见软件完成度非常高,信息都显示明确,条理逻辑清晰,购买图书的每一步关键信息都有文件能够记录,翻找整理起来很方便。但使用时发现该平台购书订单一旦确认就无法再取消,必须要购买的情况,如若手滑点错无法更改,是这个平台的一个小小的漏洞,应当留出一个后悔更改的机会,毕竟总会有不当心点错的时候。

功能完善

在已有的使用体验基础上,我决定添加一个取消订单的功能,实现订单取消的功能,为手滑等失误增加一些容错的机会。

代码

复制代码
//取消订单函数定义
void Function::cancel(){
    vector<int> v;  //存放在大容器中的下标编号
    orderVector();  //从文件中获取信息到容器中 
    int i=0;        //统计用户个人订单数量 
    int j, m=0, choice;           
    for(vector<Buyer>::iterator it = V_Order.begin();it!=V_Order.end();it++){
        if(it->Acc==G_zh){
        i++;
        }
    }
    if(i==0){       //判断订单数量是否为0 
        cout<<endl<<"您目前没有订单!"<<endl<<endl;
        system("pause");
        system("cls");
        return menu();  //订单数量为0时返回菜单界面 
    } 
    else{
        for(j = 0; j<V_Order.size(); j++){
            if(G_zh==V_Order[j].Acc){
                v.push_back(j);    //将对应的用户账单在大容器下的序号放进小容器中 
                m++;
        cout<<endl<<"序号:"<<m<<"    账号:"<<V_Order[j].Acc<<"    姓名:"<<V_Order[j].Name<<"    图书号:"<<V_Order[j].Num<<"    书名:"
        <<V_Order[j].B_Name<<"    作者:" <<V_Order[j].Author
        <<endl<<"出版社:"<<V_Order[j].Press<<"    定价:"<<V_Order[j].Price<<"    地址:"<<V_Order[j].Address<<"    数量:"<<V_Order[j].amount;
        if(V_Order[j].judge==1){
            cout<<"    订单状态 :待结算"<<endl<<endl;
        }
        else if(V_Order[j].judge==0){
            cout<<"    订单状态 :已取消"<<endl<<endl;
        } 
        else if(V_Order[j].judge==2){
            cout<<"    订单状态 :已付款"<<endl<<endl;
        } 
            }
        }
        cout<<endl<<"请谨慎选择你要取消的订单,选择0可返回:";
        cin>>choice;
        while(1){
            if(choice>=0&&choice<=v.size()){
                if(choice==0){
                    cout<<endl<<"返回菜单界面"<<endl<<endl;
                    system("pause");
                    system("cls");
                    return menu();  //选择为0时返回菜单界面 
                }
                else{
                    V_Order[v[choice-1]].judge = 0;     //更改大容器中对应的订单状态信息 
                    
                    update();  //更改完容器中订单状态后将文件信息进行更新 
                    
                    cout<<endl<<"该订单已取消!"<<endl<<endl;
                    system("pause");
                    system("cls");
                    return menu();  //选择为0时返回菜单界面 
                    
                } 
        }
        else{
            cout<<endl<<"您的输入超出范围,请重新输入订单号!"<<endl;
         }
        }
        
    }
    
} 
复制代码

效果图

 

 查看订单界面也可以看到取消的订单

 

 

 总结

 经过对该购书平台代码的完整体验和分析,发现了其在订单处理方面存在部分缺陷,添加了订单取消的功能模块,并调整好了它的适配性。

posted on 2023-03-09 14:05  b0bXu  阅读(27)  评论(0编辑  收藏  举报