1. 程式人生 > 其它 >網咖賬戶管理系統

網咖賬戶管理系統

技術標籤:c++ oppc++

OOP課程設計

  1. 網咖賬戶管理系統
    基本要求:設計一個網咖管理系統,使之能提供以下基本功能:
    (1) 增加顧客(顧客型別:是否會員;上機時間);
    (2) 顧客結賬(根據顧客型別以及上機時間確定收費金額);
    (3) 查詢顧客的資訊;
    (4) 其他功能(自行設計)。

目錄
設計題目:《網咖管理系統》 1

  1. 網咖賬戶管理系統 3

  2. 完成的功能 4

  3. 系統功能模組圖 5
    3.1 系統功能模組圖 5
    3.2 基本功能要求 6
    3.2.1 增加顧客 6
    3.2.2 顧客結賬 7
    3.2.3 查詢顧客資訊 8
    3.3 新增功能 9
    3.3.1 充值系統 9
    3.3.2 查詢正在上機人數及人員名單 10

    3.3.3 所有顧客資訊 11
    3.3.4 點餐系統 12
    3.3.5 退出此管理系統 13

  4. 類/成員函式 14

  5. 源程式 15

  6. 功能截圖 27
    6.1管理員登陸介面 27
    6.2系統主介面 28
    6.3增加顧客 28
    6.4顧客結賬 29
    6.5查詢顧客資訊 30
    6.6充值系統 31
    6.7查詢正在上機人數及人員名單 32
    6.8所有顧客資訊 32
    6.9點餐系統 33

  7. 總結 36

  8. 網咖賬戶管理系統
    基本要求:設計一個網咖管理系統,使之能提供以下基本功能:
    (1) 增加顧客(顧客型別:是否會員;上機時間);
    (2) 顧客結賬(根據顧客型別以及上機時間確定收費金額);
    (3) 查詢顧客的資訊;

    (4) 其他功能(自行設計)。

  9. 完成的功能
    (1)增加顧客(顧客型別:是否會員;上機時間);
    用void Increase_customer(Internet_bar user[]);函式實現。建立一個使用者類,其私有成員包括姓名,是否為會員,上機時間和餘額。再此函式中輸入其基本資訊保存於user[]陣列中。
    (2)顧客結賬(根據顧客型別以及上機時間確定收金額)
    用void Customer_checkout(Internet_bar user[],Internet_bar use[]);函式實現。先輸入結賬顧客及其結賬時間,用for迴圈找到此使用者,然後過載減法運算子,計算此使用者上機時間,進一步算出收費金額(會員半價)。然後再use[]陣列中中刪除此使用者

    (3)查詢顧客的資訊
    用void Look_up_customer_information(Internet_bar user[]);函式實現。先輸入顧客姓名,用for迴圈找到該顧客,輸出其基本資訊。
    (4)充值系統
    用void Top_up(Internet_bar user[]);函式實現。先輸入顧客姓名及其充值金額,用for迴圈找到該顧客,輸出其基本資訊。

(5)查詢正在上機人數及人員名單
用void number(Internet_bar use[]);函式實現。所有上機人員儲存在use[]陣列中,以for迴圈輸出所有上機人員。
(6)所有顧客資訊
用void Order(Internet_bar user[]);函式實現。所有人員儲存再user[]陣列中,以for迴圈輸出所有顧客資訊。
(7)點餐系統
用void Owner_list(Internet_bar user[]);函式實現。輸入顧客姓名會進入點餐選單,顧客點餐後從卡里扣費,餘額不足時轉到充值系統。
(8)退出此管理系統
整個程式我是用do while()迴圈,當select等於0時跳出迴圈,程式終止。

  1. 系統功能模組圖
    3.1 系統功能模組圖

                  圖一.系統功能流程圖
    

說明:網咖賬戶管理系統,一共具有八個功能,分別為1.增加顧客(顧客型別:是否會員;上機時間。2.顧客結賬(根據顧客型別以及上機時間確定收金額)。3.查詢顧客的資訊。4.充值系統。5.查詢正在上機人數及人員名單。6.所有顧客資訊。7.點餐系統。8.退出此管理系統。系統主要功能以流程圖的方式呈現,詳情見3.2和3.3章節。
3.2 基本功能要求
3.2.1 增加顧客

圖二.增加顧客系統流程圖
說明:進入增加顧客介面後,需要輸入顧客姓名、是否為會員、以及上機時間和充值金額
3.2.2 顧客結賬

圖三.顧客結賬系統流程圖
說明:管理員輸入顧客姓名以及下機時間。系統檢查是否有此使用者,如果沒有則返回主選單,如果有則判斷該使用者是否為會員,是會員半價計算花費金額,以及輸出最後剩餘餘額,不是會員則全價計算花費金額,以及輸出最後剩餘餘額。
3.2.3 查詢顧客資訊

圖四.查詢顧客系統流程圖
說明:管理員輸入要查詢到顧客姓名,如果無此顧客則返回主選單,如果有此使用者則輸出此使用者姓名及餘額。
3.3 新增功能
3.3.1 充值系統

圖五.充值系統流程圖
說明:管理員輸入要充值的顧客姓名以及充值金額,如果無此顧客則顯示充值失敗返回主選單,如果有此使用者則輸出充值後的餘額。

3.3.2 查詢正在上機人數及人員名單

圖六. 查詢正在上機人數及人員名單系統流程圖
說明:系統直接輸出此時正在上機的人數,以及上機人員名單。

3.3.3 所有顧客資訊

圖七. 輸出所有顧客資訊系統流程圖
說明:系統直接輸出此時所有顧客的基本資訊。

3.3.4 點餐系統

圖八.點餐系統流程圖
說明:管理員輸入需要點餐的顧客姓名,若此顧客不存在,則返回主選單。若顧客存在則需要輸入顧客選擇,輸入錯誤則重新輸入顧客選擇,輸入正確則查詢餘額是否足以購買該商品,如果可以則購買成功並顯示餘額,餘額不足時則跳轉到到充值頁面。
3.3.5 退出此管理系統

圖九. 退出此管理系統流程圖
說明:管理員可以用此功能安全退出網咖管理系統。

  1. 類/成員函式
    class Internet_bar{ //使用者類
    private:
    char name[5]; //使用者姓名
    char member[5]; //使用者是否為會員
    float hour; //上機時間:時
    float minute; //上機時間:分
    float balance; //使用者餘額
    public:
    void Increase_customer(Internet_bar user[]); //增加顧客
    void Customer_checkout(Internet_bar user[],Internet_bar use[]); //顧客結賬
    void Look_up_customer_information(Internet_bar user[]);
    //查詢顧客資訊
    void Top_up(Internet_bar user[]); //充值系統
    void number(Internet_bar use[]); //查詢正在上級人數及人員名單
    void Order(Internet_bar user[]); //所有顧客資訊
    void Owner_list(Internet_bar user[]); //點餐系統
    Internet_bar operator+(Internet_bar c); //退出此管理系統
    };
    class manager:public Internet_bar{ //管理員類
    public:
    void Run(); //開始程式
    char name1[9]; //管理員賬戶
    char password[9]; //管理員密碼

};

  1. 源程式
    #include
    using namespace std;
    #include
    #include
    #include<string.h>
    #include<windows.h>
    class Internet_bar{
    private:
    char name[5];
    char member[5];
    float hour;
    float minute;
    float balance;
    public:
    void Increase_customer(Internet_bar user[]);
    void Customer_checkout(Internet_bar user[],Internet_bar use[]);
    void Look_up_customer_information(Internet_bar user[]);
    void Top_up(Internet_bar user[]);
    void number(Internet_bar use[]);
    void Order(Internet_bar user[]);
    void Owner_list(Internet_bar user[]);
    Internet_bar operator+(Internet_bar c);
    };
    class manager:public Internet_bar
    {
    public:
    void Run();
    char name1[9];
    char password[9];

};
void menu()
{
cout<<" ******************************************************************"<<endl;
cout<<" * 歡迎使用網咖計費管理系統 *"<<endl;
cout<<" * 您可以選擇以下功能 *"<<endl ;
cout<<" ******************************************************************"<<endl;
cout<<" * (1)增加顧客(顧客型別:是否會員;上機時間) *"<<endl;
cout<<" * (2)顧客結賬(根據顧客型別以及上機時間確定收金額) *"<<endl;
cout<<" * (3)查詢顧客的資訊 *"<<endl;
cout<<" * (4)充值系統 *"<<endl;
cout<<" * (5)查詢正在上機人數及人員名單 *"<<endl;
cout<<" * (6)所有顧客資訊 *"<<endl;
cout<<" * (7)點餐系統 *"<<endl;
cout<<" * (8)退出此管理系統 *"<<endl;
cout<<" ******************************************************************"<<endl;
cout<<" * 請輸入你的選擇 * “<<endl;
cout<<” ******************************************************************"<<endl;
cout<<" *";
}
void manager::Run()
{
int select;
Internet_bar user[50],use[50];
do{
menu();
cin>>select;
system(“cls”);
switch(select)
{
case 1: Increase_customer(user);break;
case 2: Customer_checkout( user,use);break;
case 3: Look_up_customer_information( user);break;
case 4:Top_up(user);break;
case 5: number(use);break;
case 6 :Owner_list(user);break;
case 7: Order(user);break;
case 8: select=0;break;
default:cout<<" *輸入錯誤,請重新輸入"<<endl;break;
}
}while(select!=0);
}
int i=0,z=0;
void Internet_bar::Increase_customer(Internet_bar user[])
{
i++;
cout<<" ******************************************************************"<<endl;
cout<<" 請輸入顧客姓名"<<" |"<<“是否為會員(是/否)”<<" | “<<“請輸入上機時間”<<” |"<<"請輸入餘額"<<endl;
cout<<" ******************************************************************"<<endl;
cout<<" *";
cin>>user[i].name>>user[i].member>>user[i].hour>>user[i].minute>>user[i].balance;
cout<<" ******************************************************************"<<endl;
cout<<" * 增加成功 *"<<endl;
}
void Internet_bar::Customer_checkout(Internet_bar user[],Internet_bar use[])

{
char name[10];
float hour,minute,money;
int j=1;
int c=1,x=0;
cout<<" “;
cout<<“請輸入顧客姓名”<<setw(20)<<“下機時間”<<endl;
cout<<” ";
cin>>name>>hour>>minute;
for(j=1;j<=i;j++)
strcpy(use[j].name,user[j].name);
for(j=1;j<=i;j++)
{
if(strcmp(name,use[j].name)==0)
{
x=j;
z–;
c=0;
hour=hour-user[j].hour;
minute=minute-user[j].minute;
money=hour
6+minute
0.1;
if(strcmp(user[j].member,“是”)==0)
{
cout<<" *";
cout<<“此使用者為會員,可享受半價”<<endl;
money=money/2;
user[j].balance=user[j].balance-money;
cout<<" *";
cout<<“此次消費金額為:”<<money<<“元”<<endl;
cout<<" ******************************************************************"<<endl;

             cout<<"                           *";
            cout<<"餘額為:"<<user[j].balance<<"元"<<endl;
        }
        else
            {
              cout<<"                           *";
         cout<<"此使用者非會員"<<endl;
          cout<<"                           *";
            cout<<"此次消費金額為:"<<money<<endl;
                  user[j].balance=user[j].balance-money;
                          cout<<"                           ******************************************************************"<<endl;

             cout<<"                           *";
            cout<<"餘額為:"<<user[j].balance<<"元"<<endl;
        }
         for(;x<=i;x++)
        strcpy(use[x].name,use[x+1].name);
    }
      }

if©
{
cout<<" ******************************************************************"<<endl;
cout<<" *無此使用者,已返回主選單!!!"<<endl;
}

}
void Internet_bar::Look_up_customer_information(Internet_bar user[])
{
char name[10];
int j=1;
int c=1;
cout<<" *";
cout<<“請輸入顧客姓名:”;
cin>> name;
for(j=1;j<=i;j++)
if(strcmp(name,user[j].name)==0)
{
c=0;
cout<<" *";
cout<<“已找到此使用者”<<endl;
cout<<" *"<<“顧客姓名:”<<user[j].name<<endl;
cout<<" *";
cout<<“是否為會員:”<<user[j].member<<endl;
cout<<" *";
cout<<“餘額為:”<<user[j].balance<<endl;
}
if©
{
cout<<" ******************************************************************"<<endl;
cout<<" *無此使用者,返回主選單"<<endl;
}
}
void Internet_bar::Top_up(Internet_bar user[])
{
char name[9];
int money,j=0,t=1;
cout<<" ******************************************************************"<<endl;
cout<<" *請先輸入使用者姓名"<<" “<<“請輸入充值金額”<<endl;
cout<<” ******************************************************************"<<endl;
cout<<" *";
cin>>name>>money;
for(j=1;j<=i;j++)
if(strcmp(name,user[j].name)==0)
{
user[j].balance=user[j].balance+money;
t=0;
break;
}
if(t)
{
cout<<" ******************************************************************"<<endl;
cout<<" *無此使用者充值失敗!!!"<<endl;
}
else
{
cout<<" ******************************************************************"<<endl;
cout<<" *充值成功卡上餘額:"<<user[j].balance<<“元”<<endl;
}
}
Internet_bar Internet_bar::operator+(Internet_bar c)
{
Internet_bar temp;
temp.hour=hour-c.hour;
temp.minute=minute-c.minute;
return temp;
}
void Internet_bar::number(Internet_bar use[])
{
int l=i+z;
cout<<" ******************************************************************"<<endl;
cout<<" *上機人數為:"<<l<<“人”<<endl;
int j=1;

               cout<<"                           ******************************************************************"<<endl;
         cout<<"                           *上機名單為"<<endl;
             for(j=1;j<=l;j++)
             {
                 cout<<"                           ******************************************************************"<<endl;
              cout<<"                           *"<<j<<use[j].name<<endl;
             }

}
void menu1()
{
cout<<" ******************************************************************"<<endl;
cout<<" * 歡迎進入網咖點餐系統 *"<<endl;
cout<<" * 您可以選擇您要點的產品 *"<<endl ;
cout<<" ******************************************************************"<<endl;
cout<<" * (1)巨無霸------15 *"<<endl;
cout<<" * (2)方便麵------4 *"<<endl;
cout<<" * (3)可口可樂----3 *"<<endl;
cout<<" * (4)橙汁--------4 *"<<endl;
cout<<" * (5)奧利奧------5 *"<<endl;
cout<<" * (6)酸奶牛------12 *"<<endl;
cout<<" * (7)炸雞--------21 *"<<endl;
cout<<" * (8)退出點餐系統 *"<<endl;
cout<<" ******************************************************************"<<endl;
cout<<" * 請輸入你的選擇 * “<<endl;
cout<<” ******************************************************************"<<endl;
}
void Internet_bar::Order(Internet_bar user[])
{
char name[9];
int j=1,select;
cout<<" ******************************************************************"<<endl;
cout<<" * 請先輸入購物使用者姓名 *"<<endl;
cout<<" ******************************************************************"<<endl;
cout<<" *";
cin>>name;
for(j=1;j<=i;j++)
if(strcmp(name,user[j].name)==0)
do{
menu1();
cout<<" *";
cin>>select;
system(“cls”);
switch(select)
{
case 1:user[j].balance=user[j].balance-15 ;break;
case 2: user[j].balance=user[j].balance-4;break;
case 3: user[j].balance=user[j].balance-3;break;
case 4:user[j].balance=user[j].balance-4;break;
case 5: user[j].balance=user[j].balance-5;break;
case 6: user[j].balance=user[j].balance-12;break;
case 7:user[j].balance=user[j].balance-21;break;
case 8: select=0;break;
default:cout<<" *輸入錯誤,請重新輸入"<<endl;break;
}
if(user[j].balance<0&&select!=0)
{
cout<<" *";
cout<<“餘額不足請充值”<<endl;
Top_up(user);
}
if(user[j].balance>=0&&select!=0)
{
cout<<" *";
cout<<“消費成功,您的餘額為”<< user[j].balance<<endl;
}

}while(select!=0);
if(select==0)
{
cout<<" ******************************************************************"<<endl;
cout<<" *退出成功,已返回主選單"<<endl;
}
if(j>i&&select!=0)
{
cout<<" ******************************************************************"<<endl;
cout<<" *無此使用者,,已返回主選單"<<endl;
}
}
void Internet_bar::Owner_list(Internet_bar user[])
{
int j=1;
if(j>i)
{
cout<<" ******************************************************************"<<endl;
cout<<" *無使用者,,已返回主選單 *"<<endl;
}
else
{
cout<<" ******************************************************************"<<endl;
cout<<" *顧客總人數:"<<i<<“人 *”<<endl;

               cout<<"                           ******************************************************************"<<endl;
         cout<<"                           *顧客姓名                   是否會員                     卡上餘額*"<<endl;
             for(j=1;j<=i;j++)
             {
                 cout<<"                           ******************************************************************"<<endl;
              cout<<"                           *"<<j<<user[j].name<<"                           "<<user[j].member<<"                            "<<user[j].balance<<endl;
             }
        }

}
int main()
{ manager woker,cui;
system(“color 3”);
strcpy(woker.name1,“000915”);
strcpy(woker.password,“123456”);
do
{ cout<<" *";
cout<<"*管理員登入"<<endl;
cout<<" *";
cout<<" 歡迎使用網咖管理系統 *"<<endl;
cout<<" ******************************************************************"<<endl;
cout<<" * 請輸入您的管理員賬號 *"<<endl;
cout<<" ******************************************************************"<<endl;
cout<<" *";
cin>>cui.name1;
cout<<" ******************************************************************"<<endl;
int j=0;
if(strcmp(cui.name1,woker.name1)==0)
{ cout<<" *";
cout<<“請輸入密碼:”<<endl;
cout<<" ******************************************************************"<<endl;
cout<<" *";
cin>>cui.password;
cout<<" ******************************************************************"<<endl;
if(strcmp(cui.password,woker.password)!=0)
{
cout<<" *";
cout<<“輸入密碼錯誤!請重試”<<endl;
cout<<" ******************************************************************"<<endl;
}
else break;
}
else{
cout<<" *";
cout<<“輸入賬號錯誤!”<<endl;}
}while (1);
system(“cls”);
cout<<" ******************************************************************"<<endl;
cout<<" *";
cout<<" 密碼正確歡迎使用 * "<<endl;
cui.Run();
}

  1. 功能截圖
    6.1管理員登陸介面

圖十.管理員登陸介面
說明:此介面為管理員登陸介面,是為了保證系統安全,賬戶:000915。密碼為:123456。管理員輸入賬戶密碼後即可使用網咖管理系統。
6.2系統主介面

圖十一.系統主介面
說明:此介面上時系統總介面,一共有八個選項可供管理員使用。
6.3增加顧客

圖十三.增加顧客
說明:此介面為增加顧客介面,管理員需要在此輸入顧客的基本資訊。
6.4顧客結賬

圖十四.顧客結賬(成功結賬)
說明:此介面為會員顧客結賬成功介面。管理員輸入結賬姓名以及下機時間,系統自己結算,一小時六塊。會員可享受半價,結賬成功後返回主選單。

圖十五. 圖十四.顧客結賬(結賬失敗)
說明:此介面為顧客結賬失敗介面,因無此使用者,故直接返回主選單。
6.5查詢顧客資訊

圖十六. 查詢顧客資訊(成功查詢)
說明:此介面為查詢顧客成功介面,管理員輸入需要查詢的顧客姓名,系統會顯示出該顧客的基本資訊。

圖十七. 查詢顧客資訊(查詢失敗)
說明:此介面為查詢顧客失敗介面,因為管理員輸入的顧客並不存在,因此係統顯示無此使用者。返回主選單。
6.6充值系統

圖十八.充值系統(充值成功)
說明:此介面為為顧客充值成功介面,管理員輸入顧客姓名和充值金額,系統顯示充值成功後的餘額,然後返回主選單。

圖十九.充值系統(充值失敗)
說明:此介面為為顧客充值失敗介面,因為管理員輸入的顧客並不存在,因此係統顯示無此使用者充值失敗。返回主選單。

6.7查詢正在上機人數及人員名單

圖二十.查詢正在上機人數及人員名單
說明:此介面顯示的是正在上機的總人數以及人員名單。
6.8所有顧客資訊

圖二十一. 所有顧客資訊
說明:此介面顯示所有顧客總人數,以及每個顧客的基本資訊。
6.9點餐系統

圖二十二. 點餐系統(點餐介面)
說明:此介面為點餐的選單頁面,管理員輸入已存在的顧客姓名即可進入。

圖二十三.點餐系統(點餐成功)
說明:此介面為點餐成功介面,點餐後自動顯示剩餘餘額。以及點餐選單介面。

圖二十四.點餐系統(餘額不足)
說明:此介面為點餐時顧客卡里餘額不足。當顧客賬戶中餘額不足時,將跳轉到充值介面。

圖二十五.點餐系統(使用者輸入錯誤)
說明:此介面為點餐時輸入顧客姓名錯誤。便直接返回主選單。

圖二十六.點餐系統(商品選擇錯誤)
說明:此介面為商品選擇錯誤介面。需要管理員重新輸入正確的商品。