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点餐系统

图二十二. 点餐系统(点餐界面)
说明:此界面为点餐的菜单页面,管理员输入已存在的顾客姓名即可进入。

图二十三.点餐系统(点餐成功)
说明:此界面为点餐成功界面,点餐后自动显示剩余余额。以及点餐菜单界面。

图二十四.点餐系统(余额不足)
说明:此界面为点餐时顾客卡里余额不足。当顾客账户中余额不足时,将跳转到充值界面。

图二十五.点餐系统(用户输入错误)
说明:此界面为点餐时输入顾客姓名错误。便直接返回主菜单。

图二十六.点餐系统(商品选择错误)
说明:此界面为商品选择错误界面。需要管理员重新输入正确的商品。

Logo

快速构建 Web 应用程序

更多推荐