//===头文件的引用 
#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文本信息:

程序运行结果:

C++课程设计订单信息管理系统相关推荐

  1. c语言用链表写管理系统程序,c语言课程设计职工信息管理系统单链表实现程序源代码-20210401015126.docx-原创力文档...

    文档编制序号:[KKIDT-LLE0828-LLETD298-POI08] 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08] C语言课程设计职工信息管理系统单链表实现程序源代 ...

  2. c语言课程设计宠物店,c语言课程设计-宠物店信息管理系统.doc

    c语言课程设计-宠物店信息管理系统 合肥学院 计算机科学与技术系 课程设计报告 2012-2013学年第二学期 课程面向过程综合设计课程设计名称宠物(小动物)店信息管理系统 学生姓名宋俊 学号 专业班 ...

  3. 数据库课程设计-员工信息管理系统(基于python和MySQL实现)

    一.项目地址 具体项目相关信息可移步至我的Github查看,那里有整套项目文件以及课程设计报告等,仅供交流学习和参考,如有错误之处请多多指正哦. 二.系统定义 随着计算机技术的不断发展,计算机作为知识 ...

  4. 《C语言》课程设计——火车票信息管理系统

    <C语言>课程设计--火车票信息管理系统 一.课题功能描述 二.基本原理 三.程序代码 一.课题功能描述 本课题要求设计一个火车票信息管理系统,主要包括火车时刻信息的录入.火车票查询.统计 ...

  5. c语言课程设计 职工信息管理系统,C语言课程设计-职工信息管理系统程序设计.doc...

    C语言课程设计-职工信息管理系统程序设计 C语言课程设计报告 设计题目:职工信息管理系统程序设计 课程设计评语2 目 录3 1.课程论文题目4 2.程序设计思路4 3.功能模块图5 4.数据结构设计5 ...

  6. C语言 课程设计——职工信息管理系统

    C语言 课程设计--职工信息管理系统 提示:该课程设计是本人第一次制作,有诸多不足之处,希望王对你有些许帮助!!! 文章目录 C语言 课程设计--职工信息管理系统 前言 一.首先定义一个结构体数组 二 ...

  7. ASP.NET程序设计课程设计——学生信息管理系统

    点击查看详细信息 ASP.NET程序设计课程设计--学生信息管理系统 一.实验目的 综合运用们所学的ASP.NET知识,开发学生信息管理系统,完成相关功能: (1)教师管理 (2)学生信息 (3)课程 ...

  8. oracle学生信息管理系统课程设计,数据库课程设计-学生信息管理系统的设计与实现.doc...

    数据库课程设计-学生信息管理系统的设计与实现 2011-2012课程设计II 学生信息管理系统的设计与实现 一 设计内容 建立一个简单的在校学生信息查询系统,可以让使用者查询到学生的一些简单的个人信息 ...

  9. C语言课程信息管理系统课程设计,c语言课程设计学生信息管理系统.doc

    c语言课程设计学生信息管理系统 课程设计报告 课程名称: 高级语言程序设计课程设计 姓 名: 汤璞君 班级学号: BX1209 121003410937 指导教师: 吉顺如 完成日期: 2013.6. ...

  10. java查询学生信息_分别显示女生_女生学生基本信息的代码_java课程设计学生信息管理系统_毕业论文.doc...

    java课程设计学生信息管理系统_毕业论文 学 号: 课 程 设 计 题 目学生信息管理系统学 院计算机科学与信息工程学院专 业金融信息化服务外包班 级学生姓名指导教师 2015年12月28日 课程设 ...

最新文章

  1. Linux系统时间和时序,什么是时序竞态 Linux系统时序竞态问题分析
  2. 手把手系列:(一)用Benchmarksql测试Oracle数据库性能
  3. 内置传感器---智能手机(资料)
  4. Eclipse无法连接真机 并非ADB被占用 原因 很2 已解决 记录之
  5. Hive引擎改为Tez笔记
  6. 后端:Java 中 10 大坑爹功能!
  7. Rabbit MQ windows下安装
  8. Python弹窗提示警告框MessageBox
  9. [fzu 2273]判断两个三角形的位置关系
  10. JVM 堆内存设置原理
  11. MOVE降低高水位 HWM
  12. selenium模块
  13. 2018年,硅谷的P2P公司们为啥没跑路?
  14. 作业3 跟踪分析Linux内核的启动过程
  15. 光模块和光纤收发器的区别
  16. 微信小程序 - [完整源码] 全屏左右菜单联动效果,左侧分类与右侧内容联动,类似美团饿了么的点餐页面 “左边菜单,右边内容“ 效果(开箱即用的示例源码,代码干净整洁且注释详细)
  17. 旅途——Python基本的“生存技能”
  18. 基于 next.js + mdx 搭建组件库文档项目(二) -- mdx 控件封装实现组件的演示与 Props 列表
  19. 基于asp.net小区物业信息管理系统
  20. 判断是ios终端还是安卓终端

热门文章

  1. OSChina 周五乱弹 —— 源花?真土鳖,我要开源小仙女!
  2. 【C语言】计算圆周长以及面积
  3. Activiti会签
  4. UDAL 分布式数据库介绍(1)
  5. 数字图像处理实验三各种图像类型转换
  6. Chrome去除新标签页最近访问
  7. [转] vagrant学习笔记 - provision
  8. ios开发的p12和provision
  9. 用于分类的神经网络算法,图像识别神经网络算法
  10. 基于DRL的城市TSC 综述笔记(一)