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

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

C++實(shí)現(xiàn)商店倉庫管理系統(tǒng)_C 語言

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

本文實(shí)例為大家分享了C++實(shí)現(xiàn)商店倉庫管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

一、問題描述

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

二、基本要求

(1)使用面向?qū)ο缶幊趟枷刖帉戦_發(fā)過程中需要用到的類,使用繼承的方法構(gòu)造至少 3個(gè)類(即商品類(虛基類),家用電器類和日用品類(派生類)),另外再設(shè)計(jì)一個(gè)管理類,實(shí)現(xiàn)對(duì)商品的管理;
(2)輸入和輸出可以使用文本文件重定向輸入(保存數(shù)據(jù)為磁盤文件);也可以使用標(biāo)準(zhǔn)輸入輸出進(jìn)行(提交時(shí)需要提交TXT格式輸入數(shù)據(jù))。包含各類商品信息,程序運(yùn)行時(shí)進(jìn)行初始化數(shù)據(jù),使用vector 數(shù)組存放對(duì)象指針。并能保存數(shù)據(jù)為磁盤文件。
(3)程序運(yùn)行時(shí)使用菜單顯示添加(輸入)記錄,修改商品數(shù)量,瀏覽商品信息,按商品代號(hào)查找 ,刪除記錄。
(4)編寫同名 display() 成員函數(shù)既虛函數(shù),用來輸出所有商品的信息。要求對(duì)<< 和>>
運(yùn)算符進(jìn)行重載,實(shí)現(xiàn)信息的輸入輸出。
(5) 基本功能要求具有增、刪、改、查。

基本流程圖

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

欄目分類
最近更新