C++课程设计订单信息管理系统

//===头文件的引用 
#include
#include
#include
#include

//程序状态码(宏定义常量用大写) 
#define MAXSIZE 100//线性表最大长度
#define OK 1
#define ERROR0 -3
#define OVERFLOW -2

using namespace std; 

typedef int status;//返回值状态


//订单信息结构体
struct Order{
    string id;//编号
    string company_name;//公司名称
    string product_name;//产品名称
    double product_price;//产品价格
    double order_num;//订购数量
    double order_price;//订购金额
};

//顺序表结构体
typedef struct{
    Order *elem;
    int length;
} SqlList;
//顺序表的初始化
status InitListSq(SqlList &L) {
    L.elem = new Order[MAXSIZE];    //申请100个book数组
    if(!L.elem) {
        // 内存申请失败,直接退出程序
        exit(OVERFLOW);
    }
    
    L.length = 0;        //初始
    return OK;
}

//添加功能
status addOrder(SqlList &L, Order o) {
    string id, company_name, product_name;
    double product_price;
    double order_num;
    int x=0;
        cout << "请输入订单编号:";
        cin >> id;
        //判断订单编号是否重复
    if (L.length!=0) {
        while(x == 0) {
        for (int i = 0; i < L.length; i++) {
            if (L.elem[i].id == id) {
                cout << "您输入的订单编号重复,请重新输入:";
                cin >> id;
                break;
            }
            x = 1;

        }
    }
    
    }
    
    
    printf("请输入公司名称:");
    cin >> company_name;
    printf("请输入产品名称:");
    cin >> product_name;
    printf("请输入产品定价:");
    cin >> product_price;
    printf("请输入订单数量:");
    cin >> order_num;
    //赋值
    o.id = id;
    o.company_name = company_name;
    o.product_name = product_name;
    o.product_price = product_price;
    o.order_num = order_num;
    o.order_price = product_price * order_num;
    //先增加线性表长度,再给与数据
    ++L.length;
    L.elem[L.length-1]=o;
    cout<<"添加成功"<     return OK;
}

//浏览功能
void showOreder(SqlList &L) {
    int i=0;
    for(int k=0; k < L.length; k++) {
        cout <<"订单编号:"<              <<"\t公司名称:"<              <<"\t产品名称:"<< L.elem[k].product_name
             <<"\t产品定价:"<              <<"\t订购数量:"<< L.elem[k].order_num
             <<"\t订单金额:"<< L.elem[k].order_price<         i=1;
    }
    
     //如果刚开始文件数据为空 
    if (i==0){
        cout<<"订单为空!!!\n";
    }
}

//查询功能(根据订单编号,公司名称,产品名称查询)
void locate_id(SqlList &L) {
    string name;
    cout<<"请输入订单编号或公司名或产品名:";
    cin>>name;
    //对用户输入的数据进行合法判断
    if(name.empty()){
        cout<<"您输入的信息为空";
    }
    
    int cc=0;
    for (int k = 0; k < L.length; ++k) {
        //根据产品名称,订单编号,公司名称来查询订单信息
        if (L.elem[k].product_name == name) {
            cout <<"订单编号:"<                  <<"\t公司名称:"<                  <<"\t产品名称:"<< L.elem[k].product_name
                 <<"\t产品定价:"<                  <<"\t订购数量:"<< L.elem[k].order_num
                 <<"\t订单金额:"<< L.elem[k].order_price<             cc = 1;
        }
        
        if (L.elem[k].company_name == name) {
            cout <<"订单编号:"<                  <<"\t公司名称:"<                  <<"\t产品名称:"<< L.elem[k].product_name
                 <<"\t产品定价:"<                  <<"\t订购数量:"<< L.elem[k].order_num
                 <<"\t订单金额:"<< L.elem[k].order_price<             cc = 1;
        }
        
        if (L.elem[k].id == name) {
            cout <<"订单编号:"<                  <<"\t公司名称:"<                  <<"\t产品名称:"<< L.elem[k].product_name
                 <<"\t产品定价:"<                  <<"\t订购数量:"<< L.elem[k].order_num
                 <<"\t订单金额:"<< L.elem[k].order_price<             cc = 1;
        }
    }
    
    //根据CC的值来判断是否查询成功
    if(cc==0){
        cout<<"您输入的信息查询不到。";
    }
}

//删除订单
void deleteO(SqlList &L) {
    string cc;
    printf("请输入要删除的订单号:");
    cin>>cc;
    int x;
    
    
    //根据订单号来判断订单信息的位置
    for (int j = 0; j < L.length; j++) {
        if (L.elem[j].id == cc) {
            x = j;
           
        }
    }
    
    
    //根据订单信息的位置来删除订单信息并移动线性表中的数据
    for (int j = x; j < L.length - 1; ++j) {
        L.elem[j]=L.elem[j + 1];
    }
    
    --L.length;
    cout<<"删除成功,删除后的订单列表为:"<     showOreder(L);
}

//统计功能(根据公司名称,统计并输出其所有订单的总额)
void price_sum(SqlList &L) {
    string company_name;
    cout<<"请输入公司名:";
    cin>>company_name;
    double sum=0;
    for(int i=0;i         if(L.elem[i].company_name==company_name){
            sum=sum+L.elem[i].order_price;
        }
    }
    
    if (sum==0){
        cout<<"该公司无订单信息";
    } else{
        cout<<"订单总额为:"<     }
}


//保存磁盘
void Save_Disk(SqlList &L) { 
    fstream Fileout(".\\order.txt",ios::out);
    if (!Fileout) {
        cout << "文件写入失败!" << endl;
        exit(0);
    }
    
    //先写入头文件再把线性表中的数据写入文件
    Fileout<<"id " <<"company_name "<<"product_name "<<"product_price "<<"order_num "<<"order_price"<     for(int i=0; i         Fileout<         <         <         <         <         <     }
    
    Fileout.close();
}

//读取 
void read_Disk(SqlList &L){
    int v = 0;
    string hand_1, hand_2, hand_3,hand_4,hand_5,hand_6;
    L.elem = new Order[MAXSIZE];
    if (!L.elem) {
        exit(OVERFLOW);
    }
    
    L.length = 0;
    //读文件
    fstream FilePtr;
    FilePtr.open(".\\order.txt");
    if (!FilePtr) {    //容错判断!!!
        cout << "文件读取失败!" << endl;
        exit(ERROR0);
    }
    
    //跳过文件中第一行表头
    FilePtr >> hand_1 >> hand_2 >> hand_3 >> hand_4 >> hand_5 >> hand_6;
    while (!FilePtr.eof()) {
        FilePtr >> L.elem[v].id >> L.elem[v].company_name 
        >>L.elem[v].product_name >> L.elem[v].product_price
        >> L.elem[v].order_num >> L.elem[v].order_price;
        //防止读出最后一行回车符
        FilePtr.get();
        if (FilePtr.peek()=='\n'){
            break;
        }
        v++;
    }
    
    cout << "订单信息导入成功!"<     L.length = v;
    FilePtr.close();
}


int main() {
    SqlList L;
    string c;
    int choose = -1;
    Order e;
    cout << "******************************************" << endl;
    cout << "*           1.添加订单                   *" << endl;
    cout << "*           2.浏览订单                   *" << endl;
    cout << "*           3.查询订单                   *" << endl;
    cout << "*           4.统计订单金额               *" << endl;
    cout << "*           5.删除订单                   *" << endl;
    cout << "*           6.退出                       *" << endl;
    cout << "******************************************" << endl;
    //建立线性表
    InitListSq(L);
    
    //读取数据
    read_Disk(L);
    
    while (choose != 0) {
        cout << "请输入操作项【0-5】:";
        cin >> choose;
        switch (choose) {
            case 1: {
                addOrder(L, e);
                break;
            }
            case 2: {
                showOreder(L);
                break;
            }
            case 3: { //查找
                locate_id(L);
                break;
            }
            case 4: {
                // 统计
                price_sum(L);
                break;
            }
            case 5: {
                deleteO(L);
                break;
            }
            case 6: {
                Save_Disk(L);
                printf("感谢使用订单管理系统!\n");
                return 0;
            }
            default:
                cout << "输入指令错误请重新输入";
        }
    }
    return 0;
}
txt文本信息:

程序运行结果:

  • 11
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值