網咖賬戶管理系統
OOP課程設計
- 網咖賬戶管理系統
基本要求:設計一個網咖管理系統,使之能提供以下基本功能:
(1) 增加顧客(顧客型別:是否會員;上機時間);
(2) 顧客結賬(根據顧客型別以及上機時間確定收費金額);
(3) 查詢顧客的資訊;
(4) 其他功能(自行設計)。
目錄
設計題目:《網咖管理系統》 1
-
網咖賬戶管理系統 3
-
完成的功能 4
-
系統功能模組圖 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.4 點餐系統 12
3.3.5 退出此管理系統 13 -
類/成員函式 14
-
源程式 15
-
功能截圖 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 -
總結 36
-
網咖賬戶管理系統
基本要求:設計一個網咖管理系統,使之能提供以下基本功能:
(1) 增加顧客(顧客型別:是否會員;上機時間);
(2) 顧客結賬(根據顧客型別以及上機時間確定收費金額);
(3) 查詢顧客的資訊; -
完成的功能
(1)增加顧客(顧客型別:是否會員;上機時間);
用void Increase_customer(Internet_bar user[]);函式實現。建立一個使用者類,其私有成員包括姓名,是否為會員,上機時間和餘額。再此函式中輸入其基本資訊保存於user[]陣列中。
(2)顧客結賬(根據顧客型別以及上機時間確定收金額)
用void Customer_checkout(Internet_bar user[],Internet_bar use[]);函式實現。先輸入結賬顧客及其結賬時間,用for迴圈找到此使用者,然後過載減法運算子,計算此使用者上機時間,進一步算出收費金額(會員半價)。然後再use[]陣列中中刪除此使用者
用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時跳出迴圈,程式終止。
-
系統功能模組圖
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 退出此管理系統
圖九. 退出此管理系統流程圖
說明:管理員可以用此功能安全退出網咖管理系統。
- 類/成員函式
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]; //管理員密碼
};
- 源程式
#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=hour6+minute0.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();
}
- 功能截圖
6.1管理員登陸介面
圖十.管理員登陸介面
說明:此介面為管理員登陸介面,是為了保證系統安全,賬戶:000915。密碼為:123456。管理員輸入賬戶密碼後即可使用網咖管理系統。
6.2系統主介面
圖十一.系統主介面
說明:此介面上時系統總介面,一共有八個選項可供管理員使用。
6.3增加顧客
圖十三.增加顧客
說明:此介面為增加顧客介面,管理員需要在此輸入顧客的基本資訊。
6.4顧客結賬
圖十四.顧客結賬(成功結賬)
說明:此介面為會員顧客結賬成功介面。管理員輸入結賬姓名以及下機時間,系統自己結算,一小時六塊。會員可享受半價,結賬成功後返回主選單。
圖十五. 圖十四.顧客結賬(結賬失敗)
說明:此介面為顧客結賬失敗介面,因無此使用者,故直接返回主選單。
6.5查詢顧客資訊
圖十六. 查詢顧客資訊(成功查詢)
說明:此介面為查詢顧客成功介面,管理員輸入需要查詢的顧客姓名,系統會顯示出該顧客的基本資訊。
圖十七. 查詢顧客資訊(查詢失敗)
說明:此介面為查詢顧客失敗介面,因為管理員輸入的顧客並不存在,因此係統顯示無此使用者。返回主選單。
6.6充值系統
圖十八.充值系統(充值成功)
說明:此介面為為顧客充值成功介面,管理員輸入顧客姓名和充值金額,系統顯示充值成功後的餘額,然後返回主選單。
圖十九.充值系統(充值失敗)
說明:此介面為為顧客充值失敗介面,因為管理員輸入的顧客並不存在,因此係統顯示無此使用者充值失敗。返回主選單。
6.7查詢正在上機人數及人員名單
圖二十.查詢正在上機人數及人員名單
說明:此介面顯示的是正在上機的總人數以及人員名單。
6.8所有顧客資訊
圖二十一. 所有顧客資訊
說明:此介面顯示所有顧客總人數,以及每個顧客的基本資訊。
6.9點餐系統
圖二十二. 點餐系統(點餐介面)
說明:此介面為點餐的選單頁面,管理員輸入已存在的顧客姓名即可進入。
圖二十三.點餐系統(點餐成功)
說明:此介面為點餐成功介面,點餐後自動顯示剩餘餘額。以及點餐選單介面。
圖二十四.點餐系統(餘額不足)
說明:此介面為點餐時顧客卡里餘額不足。當顧客賬戶中餘額不足時,將跳轉到充值介面。
圖二十五.點餐系統(使用者輸入錯誤)
說明:此介面為點餐時輸入顧客姓名錯誤。便直接返回主選單。
圖二十六.點餐系統(商品選擇錯誤)
說明:此介面為商品選擇錯誤介面。需要管理員重新輸入正確的商品。
。