基于C++的库存管理系统设计与实现

Mute

发布日期: 2018-10-18 22:21:00 浏览量: 4147
评分:
star star star star star star star star star star
*转载请注明来自write-bug.com

一 需求分析

1.1 总体要求

运用面向对象程序设计知识,利用C++语言设计和实现一个“库存管理系统设计”,主要完成对商品的销售、统计和简单管理。在实现过程中,需利用面向对象程序设计理论的基础知识,充分体现出C++语言关于类、继承和封装等核心概念,每一个类应包含数据成员和成员函数。

1.2 功能分析

超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和品牌等信息。

本系统要求具备如下主要功能:

1.2.1 商品简单管理功能

  • 添加功能:主要完成商品基本信息的添加

  • 查询功能:可按商品类别、商品名称、生产厂家、进货日期进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!”

  • 修改功能:可根据查询结果对相应的记录进行修改

  • 删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”

1.2.2 进货功能

按要求添加相应商品的信息到库存中。可按要求输入商品编号,商品名称,生产厂家,商品价格,商品数量,商品类别,入库时间等商品基本信息。

1.2.3 出货功能

出货时可按照商品名称查找相应商品,显示相关商品库存量等基本信息。若有库存量则输入出售数量,出售价格以及出库时间,计算销售额,利润。如果库存量不足则提示出货失败,结束出货。

1.2.4 统计功能

输出当前库存中所有商品的总数及详细信息;能统计每种商品一周时间内的销售额和利润;能统计每类商品的一周时间内的销售额和利润。输出统计信息时,要按从大到小进行排序。(根据个人能力,至少实现一种统计功能)

二 程序设计与实现

2.1 概要设计

在定义商品的类别时采用了枚举类型,并定义Food=1,因此在程序中阿拉伯数字1,2,3,4即分别代表食品,化妆品,日用品,饮料这四种商品。

系统类的关系图如下所示:

2.1.1 系统的类层次

在定义商品基本信息时采用了结构体类型,即定义了一个structGoods,其中包含类别,名称,品牌,价格,数量等信息,同时包含struct Date表示入库时间,包含enum GoodsType表示商品类别。

定义class GoodsManage包含各成员函数进行对商品信息的管理,其中包含DisplayMainMenu(),AddGoodsInfo(),DisplayGoodsInfo(),SearchByCode()等成员函数。

系统的类层次关系图如下图所示:

2.1.2 主程序流程

如下图所示:

2.2 详细设计

2.2.1 各类的描述

商品类别

  1. //商品类别
  2. enum GoodsType
  3. {
  4. Food=1, //食品
  5. Cosmetic, //化妆品
  6. Commodity, //日用品
  7. Drink //饮料
  8. };

入库时间

  1. //入库时间
  2. struct Date
  3. {
  4. int year;
  5. int month;
  6. int day;
  7. };

((商品基本信息**

  1. //商品基本信息
  2. struct Goods
  3. {
  4. string code; //商品编号
  5. string name; //商品名称
  6. string brand; //生产厂家
  7. double price; //商品价格
  8. int num; //商品数量
  9. GoodsType type;//商品类别
  10. Date date; //入库时间
  11. Goods *next;
  12. };

商品售出信息

  1. //商品售出信息
  2. struct SellRecord
  3. {
  4. Goods sellGoods; //已出售的商品
  5. int sellNum; //出售数量
  6. double sellPrice;//出售价格
  7. Date date; //出库日期
  8. SellRecord *next;
  9. };

商品管理

  1. //商品管理
  2. class GoodsManage
  3. {
  4. public:
  5. GoodsManage();
  6. ~GoodsManage(){}
  7. void DisplayMainMenu(); //主菜单显示
  8. void AddGoodsInfo(); //添加商品信息
  9. void DisplayGoodsInfo();//浏览商品信息
  10. void SearchByCode(); //按照商品编号搜索商品信息
  11. void SearchByName(); //按照商品名称搜索商品信息
  12. void SearchByType(); //按照商品类别搜索商品信息
  13. void SearchByBrand(); //按照商品品牌搜索商品信息
  14. void EditGoodsInfo(); //编辑商品信息
  15. void DeleteGoodsInfo(); //删除商品信息
  16. void SellGoodsInfo(); //出售商品信息
  17. void SaveGoodsInfo(); //保存商品信息
  18. private:
  19. int amount; //商品量
  20. int DeleteAmount;
  21. Goods *head;
  22. Goods *DeleteHead;
  23. };

2.2.2 成员函数定义

构造函数

  1. //定义构造函数
  2. GoodsManage::GoodsManage()
  3. {
  4. amount=0;
  5. DeleteAmount=0;
  6. head=new Goods;
  7. head->next=NULL;
  8. DeleteHead=new Goods;
  9. DeleteHead->next=NULL;
  10. }

2.主菜单显示函数

  1. //定义主菜单函数
  2. void GoodsManage::DisplayMainMenu()
  3. {
  4. cout<<" ━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆━═☆\n";
  5. cout<<" ┋ ┋\n";
  6. cout<<" ┋ 欢迎使用商品库存管理系统 ┋\n";
  7. cout<<" ┋ ┋\n";
  8. cout<<" ┋ ┋\n";
  9. cout<<" ┋ 【商品进货】…(a) ┋\n";
  10. cout<<" ┋ ┋\n";
  11. cout<<" ┋ 【商品编辑】…(b) ┋\n";
  12. cout<<" ┋ ┋\n";
  13. cout<<" ┋ 【商品删除】…(c) ┋\n";
  14. cout<<" ┋ ┋\n";
  15. cout<<" ┋ ┋【按照编号查询】…(d) ┋\n";
  16. cout<<" ┋ ┋ ┋\n";
  17. cout<<" ┋ ┋【按照名称查询】…(e) ┋\n";
  18. cout<<" ┋ 【商品查询】┋ ┋\n";
  19. cout<<" ┋ ┋【按照类别查询】…(f) ┋\n";
  20. cout<<" ┋ ┋ ┋\n";
  21. cout<<" ┋ ┋【按照品牌查询】…(g) ┋\n";
  22. cout<<" ┋ ┋\n";
  23. cout<<" ┋ 【商品出货】…(h) ┋\n";
  24. cout<<" ┋ ┋\n";
  25. cout<<" ┋ 【商品统计】…(i) ┋\n";
  26. cout<<" ┋ ┋\n";
  27. cout<<" ┋ 【信息保存】…(j) ┋\n";
  28. cout<<" ┋ ┋\n";
  29. cout<<" ┋ ┋\n";
  30. cout<<" ┋ 退出系统…(k) ┋\n";
  31. cout<<" ┋ ┋\n";
  32. cout<<" ━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆━═☆\n";
  33. cout<<"\n 请输入你要进行的操作编号:";
  34. }

添加商品信息函数

  1. //定义添加商品信息函数
  2. voidGoodsManage::AddGoodsInfo()
  3. {
  4. char c,c1;
  5. Goods tail=head,p;
  6. bool flag;
  7. cout<<" ☆☆☆☆☆☆现在进行商品信息的添加☆☆☆☆☆☆ "<<endl;
  8. while(tail->next!=NULL)
  9. tail=tail->next;
  10. do
  11. {
  12. flag=0;
  13. p=new Goods;
  14. cout<<"请选择商品类别:"<<endl;
  15. cout<<"1.食品 2.化妆品3.日用品 4.饮料"<<endl;
  16. cout<<"请输入相应编号:";
  17. do
  18. {
  19. cin>>c1;
  20. if(c1>='1'&&c1<='4')//判断用户输入编号是否存在
  21. flag=1;
  22. else
  23. {
  24. cout<<"您输入的编号不存在!"<<endl;
  25. cout<<"请选择正确的商品类别:"<<endl;
  26. }
  27. }while(flag==0);//输入编号存在时跳出循环
  28. if(c1=='1')
  29. p->type=Food;
  30. if(c1=='2')
  31. p->type=Cosmetic;
  32. if(c1=='3')
  33. p->type=Commodity;
  34. if(c1=='4')
  35. p->type=Drink;
  36. cout<<"商品类别("<<p->type<<")"<<endl;//表示商品类别
  37. cout<<"请输入商品编号: ";
  38. cin>>p->code;
  39. do
  40. {
  41. Goods *q=head->next;
  42. while(q!=NULL&&q->code!=p->code)
  43. q=q->next;
  44. if(q==NULL)
  45. flag=1;
  46. else
  47. {
  48. cout<<"存在该编号的货物!!!请重新输入编号:";
  49. cin>>p->code;
  50. }
  51. }while(flag==0);
  52. cout<<"请输入商品名称:";
  53. cin>>p->name;
  54. cout<<"请输入生产厂家:";
  55. cin>>p->brand;
  56. cout<<"请输入商品价格:";
  57. cin>>p->price;
  58. cout<<"请输入商品数量:";
  59. cin>>p->num;
  60. cout<<"请输入入库时间(年/月/日):";
  61. cin>>p->date.year>>p->date.month>>p->date.day;
  62. tail->next=p;
  63. p->next=NULL;
  64. tail=p;
  65. amount++;//商品量加一
  66. cout<<"数据输入成功!!!想继续添加吗(y/n):";
  67. cin>>c;
  68. while(c!='y'&&c!='n')
  69. {
  70. cout<<"指令错误!!!!!<请输入y/n>"<<endl;
  71. cout<<"数据添加成功!!!想继续输入吗(y/n):";
  72. cin>>c;
  73. }
  74. }while(c=='y');
  75. cout<<endl;
  76. cout<<"……信息处理完毕……"<<endl;
  77. cout<<"……按任意键返回主菜单……"<<endl;
  78. getchar();
  79. getchar();
  80. }

统计商品信息函数

  1. //定义商品信息浏览函数
  2. void GoodsManage::DisplayGoodsInfo()
  3. {
  4. Goods *p=head;
  5. cout<<" ☆☆☆☆☆☆现在进行商品信息的浏览☆☆☆☆☆☆ "<<endl;
  6. cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;
  7. while(p->next!=NULL)
  8. {
  9. p=p->next;
  10. cout<setiosflags(ios::left)<<setw(10)<<p-code<<setw(16)<<p->name;
  11. cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;
  12. cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;
  13. }
  14. cout<<endl;
  15. cout<<"……信息统计完毕……"<<endl;
  16. cout<<"……按任意键返回主菜单……"<<endl;
  17. getchar();
  18. getchar();
  19. }

按照编号查找商品信息函数

  1. //按照商品编号查找商品信息
  2. void GoodsManage::SearchByCode()
  3. {
  4. char c;
  5. Goods *p;
  6. bool flag;
  7. string FoundCode;
  8. cout<<" ☆☆☆☆☆☆现在进行商品信息的查找☆☆☆☆☆☆ "<<endl;
  9. do
  10. {
  11. p=head;
  12. flag=0;
  13. cout<<"请输入您要查找的商品编号:";
  14. cin>>FoundCode;
  15. while(p->next!=NULL)
  16. {
  17. p=p->next;
  18. if(p->code==FoundCode)
  19. {
  20. flag=1;
  21. cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;
  22. cout<setiosflags(ios::left)<<setw(10)<<p-code<<setw(16)<<p->name;
  23. cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;
  24. cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;
  25. break;
  26. }
  27. if(flag==0)
  28. {
  29. cout<<"对不起,您查询的商品不存在!!!"<<endl;
  30. cout<<"您想要继续查找吗(y/n):";
  31. cin>>c;
  32. while(c!='y'&&c!='n')
  33. {
  34. cout<<"指令错误!!!<请输入y/n>:"<<endl;
  35. cout<<"您想要继续查找吗(y/n):";
  36. cin>>c;
  37. }
  38. }
  39. }
  40. }while(c=='y');
  41. cout<<endl;
  42. cout<<"……信息查找完毕……"<<endl;
  43. cout<<"……按任意键返回主菜单……"<<endl;
  44. getchar();
  45. getchar();
  46. }

按照名称查找商品信息函数

  1. //按照商品名称查找商品信息
  2. void GoodsManage::SearchByName()
  3. {
  4. char c;
  5. Goods *p;
  6. bool flag;
  7. string FoundName;
  8. cout<<" ☆☆☆☆☆☆现在进行商品信息的查找☆☆☆☆☆☆ "<<endl;
  9. do
  10. {
  11. p=head;
  12. flag=0;
  13. cout<<"请输入您要查找的商品名称:";
  14. cin>>FoundName;
  15. while(p->next!=NULL)
  16. {
  17. p=p->next;
  18. if(p->name==FoundName)
  19. {
  20. flag=1;
  21. cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;
  22. cout<setiosflags(ios::left)<<setw(10)<<p-code<<setw(16)<<p->name;
  23. cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;
  24. cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;
  25. break;
  26. }
  27. if(flag==0)
  28. {
  29. cout<<"对不起,您查询的商品不存在!!!"<<endl;
  30. cout<<"您想要继续查找吗(y/n):";
  31. cin>>c;
  32. while(c!='y'&&c!='n')
  33. {
  34. cout<<"指令错误!!!<请输入y/n>:"<<endl;
  35. cout<<"您想要继续查找吗(y/n):";
  36. cin>>c;
  37. }
  38. }
  39. }
  40. }while(c=='y');
  41. cout<<endl;
  42. cout<<"……信息查找完毕……"<<endl;
  43. cout<<"……按任意键返回主菜单……"<<endl;
  44. getchar();
  45. getchar();
  46. }

按照类别查找商品信息函数

  1. //按照商品类别查找商品信息
  2. void GoodsManage::SearchByType()
  3. {
  4. char c;
  5. Goods *p;
  6. bool flag;
  7. int FoundType;
  8. cout<<" ☆☆☆☆☆☆现在进行商品信息的查找☆☆☆☆☆☆ "<<endl;
  9. do
  10. {
  11. p=head;
  12. flag=0;
  13. cout<<"请输入您要查找的商品类别:";
  14. cin>>FoundType;
  15. while(p->next!=NULL)
  16. {
  17. p=p->next;
  18. if(FoundType==1&&p->type==Food)
  19. {
  20. flag=1;
  21. cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;
  22. cout<setiosflags(ios::left)<<setw(10)<<p-code<<setw(16)<<p->name;
  23. cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;
  24. cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;
  25. }
  26. else if(FoundType==2&&p->type==Cosmetic)
  27. {
  28. flag=1;
  29. cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;
  30. cout<setiosflags(ios::left)<<setw(10)<<p-code<<setw(16)<<p->name;
  31. cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;
  32. cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;
  33. }
  34. else if(FoundType==3&&p->type==Commodity)
  35. {
  36. flag=1;
  37. cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;
  38. cout<setiosflags(ios::left)<<setw(10)<<p-code<<setw(16)<<p->name;
  39. cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;
  40. cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;
  41. }
  42. else if(FoundType==4&&p->type==Drink)
  43. {
  44. flag=1;
  45. cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;
  46. cout<setiosflags(ios::left)<<setw(10)<<p-code<<setw(16)<<p->name;
  47. cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;
  48. cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;
  49. }
  50. if(flag==0)
  51. {
  52. cout<<"对不起,您查询的商品不存在!!!"<<endl;
  53. cout<<"您想要继续查找吗(y/n):";
  54. cin>>c;
  55. while(c!='y'&&c!='n')
  56. {
  57. cout<<"指令错误!!!<请输入y/n>:"<<endl;
  58. cout<<"您想要继续查找吗(y/n):";
  59. cin>>c;
  60. }
  61. }
  62. }
  63. }while(c=='y');
  64. cout<<endl;
  65. cout<<"……信息查找完毕……"<<endl;
  66. cout<<"……按任意键返回主菜单……"<<endl;
  67. getchar();
  68. etchar();
  69. }

按照品牌查找商品信息函数

  1. //按照品牌查找商品信息
  2. void GoodsManage::SearchByBrand()
  3. {
  4. char c;
  5. Goods *p;
  6. bool flag;
  7. string FoundBrand;
  8. cout<<" ☆☆☆☆☆☆现在进行商品信息的查找☆☆☆☆☆☆ "<<endl;
  9. do
  10. {
  11. p=head;
  12. flag=0;
  13. cout<<"请输入您要查找的商品品牌:";
  14. cin>>FoundBrand;
  15. while(p->next!=NULL)
  16. {
  17. p=p->next;
  18. if(p->brand==FoundBrand)
  19. {
  20. flag=1;
  21. cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;
  22. cout<setiosflags(ios::left)<<setw(10)<<p-code<<setw(16)<<p->name;
  23. cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;
  24. cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;
  25. break;
  26. }
  27. if(flag==0)
  28. {
  29. cout<<"对不起,您查询的商品不存在!!!"<<endl;
  30. cout<<"您想要继续查找吗(y/n):";
  31. cin>>c;
  32. while(c!='y'&&c!='n')
  33. {
  34. cout<<"指令错误!!!<请输入y/n>:"<<endl;
  35. cout<<"您想要继续查找吗(y/n):";
  36. cin>>c;
  37. }
  38. }
  39. }
  40. }while(c=='y');
  41. cout<<endl;
  42. cout<<"……信息查找完毕……"<<endl;
  43. cout<<"……按任意键返回主菜单……"<<endl;
  44. getchar();
  45. getchar();
  46. }

编辑商品信息函数

  1. //定义编辑商品信息函数
  2. void GoodsManage::EditGoodsInfo()
  3. {
  4. char c;
  5. Goods *p;
  6. bool flag=0;
  7. string EditCode;
  8. cout<<" ☆☆☆☆☆☆现在进行商品信息的编辑☆☆☆☆☆☆ "<<endl;
  9. do
  10. {
  11. p=head->next;
  12. flag=0;
  13. cout<<"请输入您要修改的货物编号:";
  14. cin>>EditCode;
  15. while(p->next!=NULL&&p->code!=EditCode)
  16. p=p->next;
  17. if(p->code==EditCode)
  18. {
  19. flag=1;
  20. cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;
  21. cout<setiosflags(ios::left)<<setw(10)<<p-code<<setw(16)<<p->name;
  22. cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;
  23. cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;
  24. cout<<"确认修改吗?<y/n>";
  25. cin>>c;
  26. while(c!='y'&&c!='n')
  27. {
  28. cout<<"指令错误!!!!<请输入y/n>:";
  29. cin>>c;
  30. }
  31. if(c=='y')
  32. {
  33. cout<<"请输入商品名称:";
  34. cin>>p->name;
  35. cout<<"请输入生产厂家:";
  36. cin>>p->brand;
  37. cout<<"请输入商品价格:";
  38. cin>>p->price;
  39. cout<<"请输入商品数量:";
  40. cin>>p->num;
  41. cout<<"请输入入库时间(年/月/日):";
  42. cin>>p->date.year>>p->date.month>>p->date.day;
  43. cout<<"修改成功!"<<endl;
  44. }
  45. else
  46. cout<<"取消成功!"<<endl;
  47. }
  48. if(flag==0)
  49. {
  50. cout<<"对不起,您修改的货物不存在!!"<<endl;
  51. }
  52. cout<<"您想要继续修改吗?(y/n):";
  53. cin>>c;
  54. while(c!='y'&&c!='n')
  55. {
  56. cout<<"指令错误!!!<请输入y/n>:"<<endl;
  57. cout<<"您想要继续修改吗?(y/n):";
  58. cin>>c;
  59. }
  60. }while(c=='y');
  61. cout<<endl;
  62. cout<<"……信息编辑完毕……"<<endl;
  63. cout<<"……按任意键返回主菜单……"<<endl;
  64. getchar();
  65. getchar();
  66. }

删除商品信息函数

  1. //定义商品信息删除函数
  2. void GoodsManage::DeleteGoodsInfo()
  3. {
  4. Goods q=head,p,*tail=DeleteHead;
  5. p=new Goods;
  6. char c;
  7. string Dename;
  8. bool flag=0;
  9. while(tail->next!=NULL)
  10. tail=tail->next;
  11. cout<<" ☆☆☆☆☆☆现在进行商品信息的删除☆☆☆☆☆☆ "<<endl;
  12. do
  13. {
  14. cout<<"请输入您要删除的商品名称:";
  15. cin>>Dename;
  16. while(q->next!=NULL&&q->next->name!=Dename)
  17. q=q->next;
  18. if(q->next!=NULL)
  19. {
  20. flag=1;
  21. cout<<"确认删除吗?<y/n>";
  22. cin>>c;
  23. while(c!='y'&&c!='n')
  24. {
  25. cout<<"指令错误!!!!<请输入y/n>:";
  26. cin>>c;
  27. }
  28. if(c=='y')
  29. {
  30. p=q->next;
  31. q->next=q->next->next;
  32. tail->next=p;
  33. tail=p;
  34. tail->next=NULL;
  35. DeleteAmount++;
  36. amount--;
  37. cout<<"删除成功!!"<<endl;
  38. }
  39. else cout<<"取消成功!!!"<<endl;
  40. }
  41. if(flag==0)
  42. {
  43. cout<<"对不起,您删除的商品不存在!!!"<<endl;
  44. }
  45. cout<<"您想要继续删除吗?(y/n):";
  46. cin>>c;
  47. while(c!='y'&&c!='n')
  48. {
  49. cout<<"指令错误!!!<请输入y/n>:"<<endl;
  50. cout<<"您想要继续删除吗?(y/n):";
  51. cin>>c;
  52. }
  53. flag=0;
  54. q=head;
  55. }while(c=='y');
  56. cout<<endl;
  57. cout<<"……信息删除完毕……"<<endl;
  58. cout<<"……按任意键返回主菜单……"<<endl;
  59. getchar();
  60. getchar();
  61. }

出售商品信息函数

  1. //定义商品出库函数
  2. void GoodsManage::SellGoodsInfo()
  3. {
  4. int sellNum,year,month,day;
  5. doublesellPrice,sum=0.0,profit=0.0;
  6. char c;
  7. Goods *p;
  8. bool flag=0;
  9. string EditName;
  10. cout<<" ☆☆☆☆☆☆现在进行商品的出售☆☆☆☆☆☆ "<<endl;
  11. do
  12. {
  13. p=head->next;
  14. flag=0;
  15. cout<<"请输入您要出售的商品名称:";
  16. cin>>EditName;
  17. while(p->next!=NULL&&p->name!=EditName)
  18. p=p->next;
  19. if(p->name==EditName)
  20. {
  21. flag=1;
  22. cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;
  23. cout<setiosflags(ios::left)<<setw(10)<<p-code<<setw(16)<<p->name;
  24. cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;
  25. cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;
  26. cout<<"确认出售吗?<y/n>";
  27. cin>>c;
  28. while(c!='y'&&c!='n')
  29. {
  30. cout<<"指令错误!!!!<请输入y/n>:";
  31. cin>>c;
  32. }
  33. if(c=='y')
  34. {
  35. cout<<"请输入出售的商品数量:";
  36. cin>>sellNum;
  37. if(sellNum<=p->num)
  38. {
  39. p->num=p->num-sellNum;
  40. cout<<"请输入出售的商品价格:";
  41. cin>>sellPrice;
  42. cout<<"请输入出货日期:";
  43. cin>>year>>month>>day;
  44. sum=sellNum*sellPrice;
  45. profit=sellNum*(sellPrice-p->price);
  46. cout<<"此次销售额为: "<<sum<<endl;
  47. cout<<"此次利润为: "<<profit<<endl;
  48. cout<<"出货日期为:"<<year<<"/"<<month<<"/"<<day<<endl;
  49. }
  50. else
  51. {
  52. cout<<"库存不足!出库失败!"<<endl;
  53. }
  54. }
  55. else
  56. cout<<"取消成功!"<<endl;
  57. }
  58. if(flag==0)
  59. {
  60. cout<<"对不起,您出售的货物不存在!!"<<endl;
  61. }
  62. cout<<"您想要继续出售吗?(y/n):";
  63. cin>>c;
  64. while(c!='y'&&c!='n')
  65. {
  66. cout<<"指令错误!!!<请输入y/n>:"<<endl;
  67. cout<<"您想要继续出售吗?(y/n):";
  68. cin>>c;
  69. }
  70. }while(c=='y');
  71. cout<<endl;
  72. cout<<"……出库完毕……"<<endl;
  73. cout<<"……按任意键返回主菜单……"<<endl;
  74. getchar();
  75. getchar();
  76. }

保存商品信息函数

  1. //定义商品信息保存函数
  2. void GoodsManage::SaveGoodsInfo()
  3. {
  4. Goods *p=head;
  5. cout<<" ☆☆☆☆☆☆现在进行商品信息的保存☆☆☆☆☆☆ "<<endl;
  6. ofstream output("货物信息.txt",ios::out);//定义输出文件"货物信息.txt"
  7. if(!output)
  8. {
  9. cerr<<"打开文件<货物信息.txt>失败!!!"<<endl;
  10. }
  11. output<<amount<<"\n";
  12. cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;
  13. while(p->next!=NULL)
  14. {
  15. p=p->next;
  16. output<<p->code<<"\t"<<p->name<<"\t"<<p->brand<<"\t"<<p->price<<"\t"<<p->num<<"\t"<<p->type<<"\t"<<p->date.year<<"\t"<<p->date.month<<"\t"<<p->date.day<<"\n";
  17. cout<setiosflags(ios::left)<<setw(10)<<p-code<<setw(16)<<p->name;
  18. cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;
  19. cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;
  20. }
  21. cout<<endl;
  22. cout<<"成功将货物信息保存到<货物信息.txt>"<<endl;
  23. cout<<"……信息保存完毕……"<<endl;
  24. cout<<"……按任意键返回主菜单……"<<endl;
  25. getchar();
  26. getchar();
  27. output.close();//关闭输出文件
  28. }

2.2.3 算法流程图

添加商品信息函数流程如下所示:

浏览商品信息函数流程如下所示:

按照商品编号搜索商品信息函数流程如下所示:

按照商品名称搜索商品信息函数流程如下所示:

按照商品类别搜索商品信息函数流程如下所示:

按照商品品牌搜索商品信息函数流程如下所示:

编辑商品信息函数流程如下所示:

删除商品信息函数流程如下所示:

出售商品信息函数流程如下所示:

保存商品信息函数流程如下所示:

三 运行测试

程序主菜单

添加商品信息

编辑商品信息

删除商品信息

按照编号搜索商品信息

按照类别搜索商品信息

按照名称搜索商品信息

按照品牌搜索商品信息

出售商品信息

保存商品信息

统计商品信息

上传的附件 cloud_download 基于C++的库存管理系统设计与实现.7z ( 498.08kb, 230次下载 )
error_outline 下载需要9点积分

keyboard_arrow_left上一篇 : 基于深度学习的图像识别 带语音提示的图书管理系统 : 下一篇keyboard_arrow_right



Mute
2018-10-18 22:22:52
库存管理系统,商品的销售、统计和简单管理,c++
fuluoce
2019-05-20 10:38:06
积分不够,怎么赚积分
一只兔子
2020-06-30 17:04:45
积分不够!!!难过~

发送私信

生命可以随心所欲,但不能随波逐流

11
文章数
9
评论数
最近文章
eject