日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++實現商店倉庫管理系統_C 語言

作者:陸鳴笙 ? 更新時間: 2022-05-20 編程語言

本文實例為大家分享了C++實現商店倉庫管理系統的具體代碼,供大家參考,具體內容如下

一、問題描述

系統應具有下列主要功能:輸入記錄功能:從鍵盤輸入貨物信息:商品代號,商品名稱, 數量,價格,所屬類別(如家用電器、日用品等)等;修改商品數量、刪除記錄功能、按商品代號查詢、按商品代號排序并顯示等功能。

二、基本要求

(1)使用面向對象編程思想編寫開發過程中需要用到的類,使用繼承的方法構造至少 3個類(即商品類(虛基類),家用電器類和日用品類(派生類)),另外再設計一個管理類,實現對商品的管理;
(2)輸入和輸出可以使用文本文件重定向輸入(保存數據為磁盤文件);也可以使用標準輸入輸出進行(提交時需要提交TXT格式輸入數據)。包含各類商品信息,程序運行時進行初始化數據,使用vector 數組存放對象指針。并能保存數據為磁盤文件。
(3)程序運行時使用菜單顯示添加(輸入)記錄,修改商品數量,瀏覽商品信息,按商品代號查找 ,刪除記錄。
(4)編寫同名 display() 成員函數既虛函數,用來輸出所有商品的信息。要求對<< 和>>
運算符進行重載,實現信息的輸入輸出。
(5) 基本功能要求具有增、刪、改、查。

基本流程圖

#include //基本的輸入輸出?
#include  //文件操作?
#include //strcmp函數,比較兩個字符串?
#include //用getch();
#include //vector數組?
#define SIZE 100 ?//采用宏定義,定義char數組的大小?
using namespace std;
class Goods//Goods類定義?
{
?? ?public:
?? ??? ?Goods(){}//無參數無初值的構造函數 ,缺省構造函數?
?? ??? ?char Number[SIZE];//編號?
?? ??? ?char Name[SIZE];//商品名?
?? ??? ?int Amount;//數量?
?? ??? ?float Price;//價格?
?? ??? ?char Type[SIZE];//類別?
?? ??? ?Goods * Next;//指針?
?? ??? ?vector Manage; //vector數組的定義?
?? ??? ?friend ostream& operator<<(ostream& out,Goods& ?obj)//重載<<輸出運算符?
?? ??? ?{
?? ??? ??? ??? ?out<>(istream& in,Goods& obj)//重載>>輸入運算符?
?? ??? ?{
?? ??? ??? ??? ?in>>obj.Number>>obj.Name>>obj.Amount>>obj.Type;
?? ??? ?}
?? ??? ?void SetType()//設置商品類別?
?? ??? ?{?? ?cout<<" 請選擇種類:";?? ?cin>>Type;}
?? ??? ?void SetName()//設置商品名?
?? ??? ?{?? ?cout<<" 請輸入商品的名稱:"; cin>>Name;}
?? ??? ?void SetNumber()//設置商品編號?
?? ??? ?{?? ?cout<<" ?請輸入商品的編號:"; cin>>Number;}
?? ??? ?void SetPrice()//設置類商品價格?
?? ??? ?{cout<<" 請輸入商品單價:"; cin>>Price;}
?? ??? ?void SetAmount()//設置商品數量?
?? ??? ?{cout<<" 請輸入商品庫存:"; cin>>Amount;}
?? ??? ?void SetOther() //設置其他數據?
?? ??? ?{?? ?cout<<" ?請輸入商品價格:"; cin>>Price;
?? ??? ??? ?cout<<" ?請輸入存貨數量:"; cin>>Amount;} ?? ?
?? ??? ?void ReadFile(istream & in)//讀取文件?
?? ??? ?{?? ?in>>Name>>Type>>Number>>Price>>Amount;}?? ?
?? ??? ?void SetAll()//成員函數 ?功能:輸入信息?
?? ??? ?{
?? ??? ??? ?SetName();
?? ??? ??? ?SetType();
?? ??? ??? ?SetNumber();
?? ??? ??? ?SetOther(); ?? ??? ?
?? ??? ?}
?? ??? ?void Show()//輸出商品信息?
?? ??? ?{?? ?cout<<"商品名: "<Next;goods!=End;goods=goods->Next)//從頭結點循環到尾節點,輸出全部的商品信息?
?? ??? ??? ?{
?? ??? ??? ??? ?goods->Show(); //輸出每一個結點的各條信息?
?? ??? ??? ??? ?i++;
?? ? ? ? ? ?}
?? ??? ??? ?cout<<"共有"<Next!=End;goods=goods->Next)//匹配成功則返回上一個指針,不成功就返回空
?? ??? ??? ??? ?if(!strcmp(goods->Next->Name,Name))return goods;
?? ??? ??? ??? ?return NULL;
?? ??? ?}
?? ??? ?Goods *FindNumber(char * Number)//按編號查找?
?? ??? ?{
?? ??? ??? ?for(Goods * goods=Head;goods->Next!=End;goods=goods->Next)//匹配成功則返回上一個指針,不成功就返回空
?? ??? ??? ??? ?if(!strcmp(goods->Next->Number,Number))return goods;
?? ??? ? ?? ? return NULL;
?? ??? ?}
};?
void Manage::AddGoods()//從鍵盤輸入商品信息
{
?? ?system("cls");//清空屏幕?
?? ?ShowMenu(1);//調用菜單函數?
?? ?End->SetName();
?? ?End->SetType();
?? ?do
?? ?{End->SetNumber();}while(FindNumber(End->Number));//當編號不為空時輸入每一條信息?
?? ?End->SetOther();
?? ?End->Next = new Goods;//開辟新空間,存儲新的商品信息?
?? ?End=End->Next;
?? ?cout<<"添加成功!"<Next=new Goods;?
?? ?End=Head->Next;
?? ?in.open("倉庫.txt");//打開倉庫文件?
?? ?if(!in)//如果打開失敗?
?? ??? ?cout<<"沒有庫存"<ReadFile(in);
?? ??? ??? ?if(End->Name[0]=='\0')break;//當名字為0是結束讀取?
?? ??? ??? ?End->Next=new Goods;
?? ??? ??? ?End=End->Next;
?? ??? ?}
?? ??? ?in.close();//關閉文件?
?? ??? ?cout<<" 讀取商品信息成功!"<Next!=End;) //循環遍歷,釋放所有的指針?
?? ?{
?? ??? ?temp=Head->Next;
?? ??? ?Head->Next=Head->Next->Next;
?? ??? ?delete temp;
?? ?}
?? ?delete Head,End;
}
void Manage::FindGoods() //查找商品?
{
?? ?system("cls");
?? ?char Name[SIZE] ,Number[10];
?? ?int Input;
?? ?Goods * goods=NULL;//初始化指針?
?? ?ShowMenu(5);//調用菜單?
?? ?cin>>Input;//按姓名或者編號查詢?
?? ?switch(Input)
?? ?{
?? ??? ?case 1:{cout<<" 請輸入要查找的商品的名稱:";cin>>Name;
?? ??? ??? ?if(goods=FindName(Name))
?? ??? ??? ?{?? ?goods->Next->Show();
?? ??? ??? ? ? ?? ?cout<<"按任意鍵繼續......";
?? ??? ? ?? ? ? ?? ?getch();}
?? ??? ??? ?else{
?? ??? ??? ??? ?cout<<" 沒有找到該名稱的商品!"<<'\n'<>Number;
?? ??? ??? ??? ?if(goods=FindNumber(Number))
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?goods->Next->Show();
?? ??? ??? ??? ??? ?cout<<"按任意鍵繼續......";
?? ??? ??? ??? ??? ?getch();
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else{
?? ??? ??? ??? ??? ?cout<<" 沒有找到該編號的商品!"<<'\n'<>Input;
?? ?switch(Input)
?? ?{
?? ??? ?case 1:
?? ??? ?{
?? ??? ??? ?char Number[SIZE];
?? ??? ??? ?Goods * goods=NULL;
?? ??? ??? ?cout<<" 請輸入要修改的商品的編號:";cin>>Number;
?? ??? ??? ?if(goods=FindNumber(Number))
?? ??? ??? ?{ ?? ?cout<<" 已找到商品的信息,請輸入新的信息!"<Next->SetName();//將新輸入的姓名存到磁盤中?
?? ??? ??? ??? ?cout<<"修改成功!"<>Number;
?? ??? ??? ?if(goods=FindNumber(Number))
?? ??? ??? ?{
?? ??? ??? ??? ?cout<<" 已找到商品的信息,請輸入新的信息!"<Next->SetType();//將新輸入的類別存到磁盤中?
?? ??? ??? ??? ?cout<<"修改成功!"<>Number;
?? ??? ??? ?if(goods=FindNumber(Number))
?? ??? ??? ?{
?? ??? ??? ??? ?cout<<" 已找到商品的信息,請輸入新的信息!"<Next->SetNumber();//將新輸入的編號存到磁盤中?
?? ??? ??? ??? ?cout<<"修改成功!"<>Number;
?? ??? ??? ?if(goods=FindNumber(Number))
?? ??? ??? ?{
?? ??? ??? ??? ?cout<<" 已找到商品的信息,請輸入新的信息!"<Next->SetPrice();//將新輸入的價格存到磁盤中?
?? ??? ??? ??? ?cout<<"修改成功!"<>Number;
?? ??? ??? ?if(goods=FindNumber(Number))
?? ??? ??? ?{?
?? ??? ??? ??? ?cout<<" 已找到商品的信息,請輸入新的信息!"<Next->SetAmount();//將新輸入的數量存到磁盤中?
?? ??? ??? ??? ?cout<<"修改成功!"<>Number;
?? ?if(goods=FindNumber(Number))//調用 FindNumber()函數按照編號查找,找到后進行刪除?
?? ?{
?? ??? ?temp=goods->Next;
?? ??? ?goods->Next=goods->Next->Next;?
?? ??? ?delete temp;
?? ??? ?cout<<" 刪除成功!"<Next;goods!=End;goods=goods->Next)//對所有結點進行遍歷,遍歷結束后n即為總數?
?? ??? ?n++;
?? ?return n;
}
void Manage::SaveGoods() // 將磁盤中的文件寫入文本文件中?
{
?? ?out.open("倉庫.txt");
?? ?for(Goods *goods=Head->Next;goods!=End;goods=goods->Next)//循環寫入?
?? ??? ?out<Name<<" "<Type<<" "<Number<<" "<Price<<" "<Amount<<'\n';
?? ?out.close();
?? ?cout<<"信息保存成功"<>Input;
?? ??? ?switch(Input)
?? ??? ?{?
?? ??? ??? ?case 0:{quit=true;break;}
?? ??? ??? ?case 1:{G.AddGoods();break;}
?? ??? ??? ?case 2:{G.Display();break;}
?? ??? ??? ?case 3:{G.FindGoods();break;}
?? ??? ??? ?case 4:{G.DelGoods();break;}
?? ??? ??? ?case 5:{G.ChangeGoods();break;}
?? ??? ??? ?case 6:{G.SaveGoods();break;}
?? ??? ??? ?}
?? ??? ?}
?? ?return 0;?
}

原文鏈接:https://blog.csdn.net/cjl1831050185/article/details/109231553

欄目分類
最近更新