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文本信息:
程序运行结果:
C++课程设计订单信息管理系统相关推荐
- c语言用链表写管理系统程序,c语言课程设计职工信息管理系统单链表实现程序源代码-20210401015126.docx-原创力文档...
文档编制序号:[KKIDT-LLE0828-LLETD298-POI08] 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08] C语言课程设计职工信息管理系统单链表实现程序源代 ...
- c语言课程设计宠物店,c语言课程设计-宠物店信息管理系统.doc
c语言课程设计-宠物店信息管理系统 合肥学院 计算机科学与技术系 课程设计报告 2012-2013学年第二学期 课程面向过程综合设计课程设计名称宠物(小动物)店信息管理系统 学生姓名宋俊 学号 专业班 ...
- 数据库课程设计-员工信息管理系统(基于python和MySQL实现)
一.项目地址 具体项目相关信息可移步至我的Github查看,那里有整套项目文件以及课程设计报告等,仅供交流学习和参考,如有错误之处请多多指正哦. 二.系统定义 随着计算机技术的不断发展,计算机作为知识 ...
- 《C语言》课程设计——火车票信息管理系统
<C语言>课程设计--火车票信息管理系统 一.课题功能描述 二.基本原理 三.程序代码 一.课题功能描述 本课题要求设计一个火车票信息管理系统,主要包括火车时刻信息的录入.火车票查询.统计 ...
- c语言课程设计 职工信息管理系统,C语言课程设计-职工信息管理系统程序设计.doc...
C语言课程设计-职工信息管理系统程序设计 C语言课程设计报告 设计题目:职工信息管理系统程序设计 课程设计评语2 目 录3 1.课程论文题目4 2.程序设计思路4 3.功能模块图5 4.数据结构设计5 ...
- C语言 课程设计——职工信息管理系统
C语言 课程设计--职工信息管理系统 提示:该课程设计是本人第一次制作,有诸多不足之处,希望王对你有些许帮助!!! 文章目录 C语言 课程设计--职工信息管理系统 前言 一.首先定义一个结构体数组 二 ...
- ASP.NET程序设计课程设计——学生信息管理系统
点击查看详细信息 ASP.NET程序设计课程设计--学生信息管理系统 一.实验目的 综合运用们所学的ASP.NET知识,开发学生信息管理系统,完成相关功能: (1)教师管理 (2)学生信息 (3)课程 ...
- oracle学生信息管理系统课程设计,数据库课程设计-学生信息管理系统的设计与实现.doc...
数据库课程设计-学生信息管理系统的设计与实现 2011-2012课程设计II 学生信息管理系统的设计与实现 一 设计内容 建立一个简单的在校学生信息查询系统,可以让使用者查询到学生的一些简单的个人信息 ...
- C语言课程信息管理系统课程设计,c语言课程设计学生信息管理系统.doc
c语言课程设计学生信息管理系统 课程设计报告 课程名称: 高级语言程序设计课程设计 姓 名: 汤璞君 班级学号: BX1209 121003410937 指导教师: 吉顺如 完成日期: 2013.6. ...
- java查询学生信息_分别显示女生_女生学生基本信息的代码_java课程设计学生信息管理系统_毕业论文.doc...
java课程设计学生信息管理系统_毕业论文 学 号: 课 程 设 计 题 目学生信息管理系统学 院计算机科学与信息工程学院专 业金融信息化服务外包班 级学生姓名指导教师 2015年12月28日 课程设 ...
最新文章
- Linux系统时间和时序,什么是时序竞态 Linux系统时序竞态问题分析
- 手把手系列:(一)用Benchmarksql测试Oracle数据库性能
- 内置传感器---智能手机(资料)
- Eclipse无法连接真机 并非ADB被占用 原因 很2 已解决 记录之
- Hive引擎改为Tez笔记
- 后端:Java 中 10 大坑爹功能!
- Rabbit MQ windows下安装
- Python弹窗提示警告框MessageBox
- [fzu 2273]判断两个三角形的位置关系
- JVM 堆内存设置原理
- MOVE降低高水位 HWM
- selenium模块
- 2018年,硅谷的P2P公司们为啥没跑路?
- 作业3 跟踪分析Linux内核的启动过程
- 光模块和光纤收发器的区别
- 微信小程序 - [完整源码] 全屏左右菜单联动效果,左侧分类与右侧内容联动,类似美团饿了么的点餐页面 “左边菜单,右边内容“ 效果(开箱即用的示例源码,代码干净整洁且注释详细)
- 旅途——Python基本的“生存技能”
- 基于 next.js + mdx 搭建组件库文档项目(二) -- mdx 控件封装实现组件的演示与 Props 列表
- 基于asp.net小区物业信息管理系统
- 判断是ios终端还是安卓终端