利用c++做的课程设计(链表),在DEV C++等编译器上可通过

运行完毕后可自动保存信息输出文件

觉得还可以的话请点赞收藏哦

#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
#include<windows.h>
using namespace std;enum GoodsType//商品类别
{Food=1,//食品Cosmetic,//化妆品Commodity,//日用品Drink//饮料
};struct Date
{int year;int month;int day;
};struct Goods//商品基本信息
{string code;//商品编号string name;//商品名称string brand;//生产厂家double price;//商品价格int num;//商品数量GoodsType type;//商品类别Date date;//入库时间Goods *next;
};class GoodsManage//商品管理
{
public:GoodsManage();~GoodsManage(){}void DisplayMainMenu();//主菜单显示void AddGoodsInfo();//添加商品信息void DisplayGoodsInfo();//浏览商品信息void SearchByCode();//按照商品编号搜索商品信息void SearchByName();//按照商品名称搜索商品信息void DeleteGoodsInfo();//删除商品信息void SellGoodsInfo();//出售商品信息void SaveGoodsInfo();//保存商品信息
private:int amount;//商品量int DeleteAmount;Goods *head;Goods *DeleteHead;
};GoodsManage::GoodsManage()//定义构造函数
{amount=0;DeleteAmount=0;head=new Goods;head->next=NULL;DeleteHead=new Goods;DeleteHead->next=NULL;
}void GoodsManage::DisplayMainMenu()//定义主菜单函数
{cout<<" ━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆━═☆\n";cout<<" ┋                                                                ┋\n";cout<<" ┋                   欢迎使用商品库存管理系统                     ┋\n";cout<<" ┋                                                                ┋\n";cout<<" ┋                                                                ┋\n";cout<<" ┋                        【商品进货】…(a)                       ┋\n";cout<<" ┋                                                                ┋\n";cout<<" ┋                        【商品编辑】…(b)                       ┋\n";cout<<" ┋                                                                ┋\n";cout<<" ┋                        【商品删除】…(c)                       ┋\n";cout<<" ┋                                                                ┋\n";cout<<" ┋                        【按照编号查询】…(d)                   ┋\n";cout<<" ┋                                                                ┋\n";cout<<" ┋                        【按照名称查询】…(e)                   ┋\n";cout<<" ┋                                                                ┋\n";cout<<" ┋                        【商品出货】…(h)                       ┋\n";cout<<" ┋                                                                ┋\n";cout<<" ┋                        【商品统计】…(i)                       ┋\n";cout<<" ┋                                                                ┋\n";cout<<" ┋                        【信息保存】…(j)                       ┋\n";cout<<" ┋                                                                ┋\n";cout<<" ┋                                                                ┋\n";cout<<" ┋                          退出系统…(k)                         ┋\n";cout<<" ┋                                                                ┋\n";cout<<" ━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆━═☆\n";cout<<"\n                      请输入你要进行的操作编号:";
}void GoodsManage::AddGoodsInfo()//定义添加商品信息函数
{char c,c1;Goods *tail=head,*p;bool flag;cout<<"          ☆☆☆☆☆☆现在进行商品信息的添加☆☆☆☆☆☆          "<<endl;while(tail->next!=NULL)tail=tail->next;//令tail指向链表中最后一个节点do{flag=0;p=new Goods;cout<<"请选择商品类别:"<<endl;cout<<"1.食品 2.化妆品 3.日用品 4.饮料"<<endl;cout<<"请输入相应编号:";do{cin>>c1;if(c1>='1'&&c1<='4')//判断用户输入编号是否存在flag=1;else{cout<<"您输入的编号不存在!"<<endl;cout<<"请选择正确的商品类别:"<<endl;}}while(flag==0);//输入编号存在时跳出循环if(c1=='1')p->type=Food;if(c1=='2')p->type=Cosmetic;if(c1=='3')p->type=Commodity;if(c1=='4')p->type=Drink;cout<<"商品类别("<<p->type<<")"<<endl;//表示商品类别cout<<"请输入商品编号: ";cin>>p->code;do{Goods *q=head->next;while(q!=NULL&&q->code!=p->code)//当q指向NULL或输入的编号与之前编号重复时跳出循环q=q->next;if(q==NULL)//当p指向NNULL且编号不重复时flag=1;else//编号重复时{cout<<"存在该编号的货物!!!请重新输入编号:";cin>>p->code;}}while(flag==0);cout<<"请输入商品名称:";cin>>p->name;cout<<"请输入生产厂家:"; cin>>p->brand;cout<<"请输入商品价格:";cin>>p->price;cout<<"请输入商品数量:";cin>>p->num;cout<<"请输入入库时间(年/月/日):";cin>>p->date.year>>p->date.month>>p->date.day;tail->next=p;//将p插入链表p->next=NULL;tail=p;amount++;//商品量加一cout<<"数据输入成功!!!想继续添加吗(y/n):";cin>>c;while(c!='y'&&c!='n'){cout<<"指令错误!!!!!<请输入y/n>"<<endl;cout<<"数据添加成功!!!想继续输入吗(y/n):";cin>>c;}}while(c=='y');cout<<endl;cout<<"……信息处理完毕……"<<endl;cout<<"……按任意键返回主菜单……"<<endl;getchar();getchar();
}void GoodsManage::DisplayGoodsInfo()//定义商品信息浏览函数
{Goods *p=head;cout<<"          ☆☆☆☆☆☆现在进行商品信息的浏览☆☆☆☆☆☆          "<<endl;cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;while(p->next!=NULL)//直到p指向链表中最后一个结点{p=p->next;cout<<setiosflags(ios::left)<<setw(10)<<p->code<<setw(16)<<p->name;cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;}cout<<endl;cout<<"……信息统计完毕……"<<endl;cout<<"……按任意键返回主菜单……"<<endl;getchar();getchar();
}void GoodsManage::SearchByCode()//按照商品编号查找商品信息
{   Goods *p;bool flag;string FoundCode;cout<<"          ☆☆☆☆☆☆现在进行商品信息的查找☆☆☆☆☆☆          "<<endl;p=head;flag=0;cout<<"请输入您要查找的商品编号:";cin>>FoundCode;while(p->next!=NULL){p=p->next;if(p->code==FoundCode)//找到相应编号的商品{flag=1;cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;cout<<setiosflags(ios::left)<<setw(10)<<p->code<<setw(16)<<p->name;cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;break;}}if(flag==0){cout<<"对不起,您查询的商品不存在!!!"<<endl;             }cout<<endl;cout<<"……信息查找完毕……"<<endl;cout<<"……按任意键返回主菜单……"<<endl;getchar();getchar();
}void GoodsManage::SearchByName()//按照商品名称查找商品信息
{   Goods *p;bool flag;string FoundName;cout<<"          ☆☆☆☆☆☆现在进行商品信息的查找☆☆☆☆☆☆          "<<endl;p=head;flag=0;cout<<"请输入您要查找的商品名称:";cin>>FoundName;while(p->next!=NULL){p=p->next;if(p->name==FoundName)//找到相应名称的商品{flag=1;cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;cout<<setiosflags(ios::left)<<setw(10)<<p->code<<setw(16)<<p->name;cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;break;}}if(flag==0){cout<<"对不起,您查询的商品不存在!!!"<<endl;     }cout<<endl;cout<<"……信息查找完毕……"<<endl;cout<<"……按任意键返回主菜单……"<<endl;getchar();getchar();
}void GoodsManage::DeleteGoodsInfo()//定义商品信息删除函数
{Goods *q=head,*p,*tail=DeleteHead;p=new Goods;char c;string Dename;bool flag=0;while(tail->next!=NULL)//令tail指向链表中最后一个节点tail=tail->next;cout<<"          ☆☆☆☆☆☆现在进行商品信息的删除☆☆☆☆☆☆          "<<endl;do{cout<<"请输入您要删除的商品名称:";cin>>Dename;while(q->next!=NULL&&q->next->name!=Dename)//直到q指向链表中最后一个节点或者找到相应名称的商品时跳出循环q=q->next;if(q->next!=NULL)//找到相应名称的商品{flag=1;cout<<"确认删除吗?<y/n>";cin>>c;while(c!='y'&&c!='n'){cout<<"指令错误!!!!<请输入y/n>:";cin>>c;}if(c=='y'){  p=q->next;q->next=q->next->next;//q的下一个节点指向其后的节点tail->next=p;tail=p;tail->next=NULL;//在链表中删除指定节点DeleteAmount++;amount--;//商品量减一cout<<"删除成功!!"<<endl;}else cout<<"取消成功!!!"<<endl;}if(flag==0){cout<<"对不起,您删除的商品不存在!!!"<<endl;}cout<<"您想要继续删除吗?(y/n):";cin>>c;while(c!='y'&&c!='n'){cout<<"指令错误!!!<请输入y/n>:"<<endl;cout<<"您想要继续删除吗?(y/n):";cin>>c;}flag=0;q=head;//令q指向链表中第一个结点再次搜索相应名称的商品}while(c=='y');cout<<endl;cout<<"……信息删除完毕……"<<endl;cout<<"……按任意键返回主菜单……"<<endl;getchar();getchar();
}void GoodsManage::SellGoodsInfo()//定义商品出库函数
{int sellNum,year,month,day;double sellPrice,sum=0.0,profit=0.0;char c;Goods *p;bool flag=0;string SellName;cout<<"          ☆☆☆☆☆☆现在进行商品的出售☆☆☆☆☆☆          "<<endl;do{p=head->next;flag=0;cout<<"请输入您要出售的商品名称:";cin>>SellName;while(p->next!=NULL&&p->name!=SellName)p=p->next;if(p->name==SellName){flag=1;cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;cout<<setiosflags(ios::left)<<setw(10)<<p->code<<setw(16)<<p->name;cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;cout<<"确认出售吗?<y/n>";cin>>c;while(c!='y'&&c!='n'){cout<<"指令错误!!!!<请输入y/n>:";cin>>c;}if(c=='y'){cout<<"请输入出售的商品数量:";cin>>sellNum;if(sellNum<=p->num)//库存量充足{p->num=p->num-sellNum;//计算商品出库后商品的库存量cout<<"请输入出售的商品价格:";cin>>sellPrice;cout<<"请输入出货日期:";cin>>year>>month>>day;sum=sellNum*sellPrice;//计算销售金额profit=sellNum*(sellPrice-p->price);//计算利润cout<<"此次销售额为: "<<sum<<endl;cout<<"此次利润为: "<<profit<<endl;cout<<"出货日期为:"<<year<<"/"<<month<<"/"<<day<<endl;}else{cout<<"库存不足!出库失败!"<<endl;}  }else cout<<"取消成功!"<<endl;}if(flag==0){cout<<"对不起,您出售的货物不存在!!"<<endl;}cout<<"您想要继续出售吗?(y/n):";cin>>c;while(c!='y'&&c!='n'){cout<<"指令错误!!!<请输入y/n>:"<<endl;cout<<"您想要继续出售吗?(y/n):";cin>>c;}}while(c=='y');cout<<endl;cout<<"……出库完毕……"<<endl;cout<<"……按任意键返回主菜单……"<<endl;getchar();getchar();}void GoodsManage::SaveGoodsInfo()//定义商品信息保存函数
{Goods *p=head;cout<<"          ☆☆☆☆☆☆现在进行商品信息的保存☆☆☆☆☆☆          "<<endl;ofstream output("货物信息.txt",ios::out);//定义输出文件"货物信息.txt"if(!output){cerr<<"打开文件<货物信息.txt>失败!!!"<<endl;}cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;output<<"商品总量为: "<<amount<<"\n";output<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;while(p->next!=NULL){p=p->next;cout<<setiosflags(ios::left)<<setw(10)<<p->code<<setw(16)<<p->name;cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;output<<setiosflags(ios::left)<<setw(10)<<p->code<<setw(16)<<p->name;//在文件中显示相应商品信息output<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;output<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;}cout<<endl;cout<<"成功将货物信息保存到<货物信息.txt>"<<endl;cout<<"……信息保存完毕……"<<endl;cout<<"……按任意键返回主菜单……"<<endl;getchar();getchar();output.close();//关闭输出文件
}
int main()//主函数
{char c;int i=0;bool flag=0;GoodsManage bm;//定义GoodsManage类对象system("color f8");cout<<endl<<endl<<endl<<endl<<endl<<endl<<"                  欢迎使用库存管理系统......系统正在加载中";Sleep(2000);system("cls");//清屏bm.DisplayMainMenu();for(;;){do{cin>>c;if(c>='a'&&c<='k')//判断用户输入编号是否存在flag=1;else{cout<<"您输入的编号不存在!"<<endl;cout<<"请选择相应的数字进行操作:"<<endl;}}while(flag==0);//输入编号存在时跳出循环进行相应操作system("cls");//清屏switch(c){case'a':bm.AddGoodsInfo();break;case'c':bm.DeleteGoodsInfo();break;case'd':bm.SearchByCode();break;case'e':bm.SearchByName();break;case'h':bm.SellGoodsInfo();break;case'i':bm.DisplayGoodsInfo();break;case'j':bm.SaveGoodsInfo();break;case'k':exit(0);break;}system("cls");bm.DisplayMainMenu();}
}

C++大作业 商品库存管理系统相关推荐

  1. C语言大作业:车辆管理系统

    C语言大作业:车辆管理系统 声明 此代码使用VS2019编译器进行编译 使用 vc 和 dev-c 的有可能会出现编译警告,需要自己去网上查找相关的编译环境的问题 其次使用vs编译器也可能会报 C49 ...

  2. MySQL数据库大作业——学生管理系统GUI

    MySQL数据库大作业--学生管理系统GUI 原程序链接: https://www.bbsmax.com/A/kmzL3WQBdG/ 为了完成数据库大作业, 我在其基础上进行了一定的修改和扩充. 如果 ...

  3. Java大作业-考试管理系统(GUI)无数据库-Java课程设计

    Java课程设计-Java大作业-考试管理系统(GUI)无数据库 题目要求 开发环境 : 程序总功能模块 程序详细设计 使用情况 第一次写这东西有不少错误的地方,题目要求的功能也没有完全实现,以上内容 ...

  4. HTML5期末大作业:管理系统网站设计——学生信息管理系统模板 (13页) HTML+CSS+JavaScript html网页设计期末大作业_网页设计平时作业

    HTML5期末大作业:管理系统网站设计--学生信息管理系统模板 (13页) HTML+CSS+JavaScript html网页设计期末大作业_网页设计平时作业 常见网页设计作业题材有 个人. 美食. ...

  5. HTML5期末大作业:管理系统网站设计——蓝色OA企业员工管理系统(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源

    HTML5期末大作业:管理系统网站设计--蓝色OA企业员工管理系统(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常 ...

  6. C语言总结项目和入门大作业——信息管理系统(多文件版)

    文章目录 八. C语言入门大作业--信息管理系统(多文件版) 一. 功能模块的划分: 二. 多文件的编写 三. 基本函数的实现(重点) 四.文件操作函数 五.函数的辅助函数 六.多文件编程和联系 七. ...

  7. HTML5期末大作业:管理系统后台网站设计——代理商销售管理系统后台(8页) HTML+CSS+JavaScript web前端设计与开发期末作品/期末大作业

    HTML5期末大作业:管理系统后台网站设计--代理商销售管理系统后台(8页) HTML+CSS+JavaScript web前端设计与开发期末作品/期末大作业 常见网页设计作业题材有 个人. 美食. ...

  8. C6软件测试大乐,软件测试大作业——社团管理系统

    <软件测试大作业--社团管理系统>由会员分享,可在线阅读,更多相关<软件测试大作业--社团管理系统(19页珍藏版)>请在人人文库网上搜索. 1.山东科技大学软件测试技术与工具课 ...

  9. C#大作业——人事管理系统

    此文仅为记录在校期间windows应用开发课程学习成果,本项目仍存在很多不足,仅供参考学习使用. 本门课程大作业要求完成一个具有主界面.用户登录.注册.注销.重新登陆.员工信息增删改查等功能的系统.其 ...

最新文章

  1. 存储的学习:freenas使用记录
  2. oracle备份恢复之rman恢复到异机
  3. excel行转列_excel统计函数:应用广泛的动态统计之王OFFSET(上)
  4. 结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆
  5. anjularjs 路由
  6. YOLO学习-3:ubuntu16.04+ yolov3(darknet)+GPU(nvidia 1080ti)+opencv2.4.11 摄像头测试实践
  7. 决心迈向公有云?先问这五大问题
  8. python3 Django框架报错(备忘录)
  9. 【数据结构与算法】之深入解析“灯泡开关”的求解思路与算法示例
  10. 技术面试中,遇到不会回答的问题怎么破?来,教你几招!
  11. 基于wincc的虚拟电梯设计_一文带你了解西门子整个虚拟调试与仿真软硬件体系...
  12. 数据分析想要酷一点?这个超火的动态图表,你一定要学会
  13. ubunut安装redis
  14. java 集合操作_Java 集合的操作 个人方法总结
  15. 从GPU到3D渲染:游戏图形渲染技巧与性能优化
  16. 计算机科学导论第12版答案,计算机科学导论第12章参考答案
  17. 基于Android的简易的二手物品交易app
  18. 【DockerCE】Docker-CE 20.10.13正式版发布
  19. docfx 做一个和微软一样的文档平台
  20. 又一所新大学将落户广东省!

热门文章

  1. echarts 图例 两行展示
  2. 海信E8H Mini LED 电视评测
  3. react初步学习(三)
  4. 2023年软考高项论文秘籍大讲堂|开篇
  5. android应用程序设计_UED干货 | 一篇文章知晓小程序设计
  6. 北京理工大学操作系统复习——习题+知识点
  7. 我的世界pe服务器坐标怎么显示,我的世界手机版坐标怎么看 PE版没有MOD怎么查看坐标...
  8. 从零学前端第十七讲:小程序开发
  9. 铜九铁路客运将于2008年9月1日正式开通
  10. redis之python(二):zadd命令出现错误:AttributeError: 'str' object has no attribute 'iteritems'