会议室管理系统改进

(1)博客介绍

  本篇博客中会议室预定系统源码来自同学课程设计大作业。通过阅读分析以及试运行,我觉得该系统仍有可以改进加入的功能模块。

 源代码如下:

#include<iostream>
#include<string>
#include<fstream>
using namespace std;
class Customer      //会议室用户信息类
{
public:
    string name;  //姓名
    int roomnum;  //预定会议室号
    string  ruzhum; //预定日期
    string  ruzhut;//预定时间        
    string  lidianm;//离室日期
    string  lidiant;//离室时间
    Customer()
    {
        name="无";
        roomnum=0;
        ruzhum="0";
        ruzhut="0";
        lidianm="0";
        lidiant="0";
    };
    ~Customer(){};
};
class Room     //会议室类
{
public:    
    int num;//会议室号
    Room()
    {
        num=0;    
    };
    ~Room(){};
};
//********会议室信息录入功能
void room_luru(Room *room);
void room_luru2(Room *room);
void room_luru(Room *room)//无会议室,添加会议室
{
    if(room[0].num==0)
    {
        int size;
        static int Number=1;
        cout<<"目前暂无会议室信息,请添加!"<<endl<<endl;
        cout<<"请输入要添加的会议室数:";
        cin>>size;
        for(int i=0;i<size;i++)
        {
            room[i].num=Number++;
            cout<<"会议室号码:"<<room[i].num;cout<<endl;
            cout<<endl<<endl;    
        };
        cout<<"会议室信息录入成功!"<<endl<<endl;
    }
    else
    {
        string P;
        cout<<"会议室信息已有,是否还要添加会议室?(Y/N)";
        cin>>P;
        if(P=="Y")
            room_luru2(room);
        else if(P=="N")
            cout<<"已取消会议室添加."<<endl<<endl;
        else cout<<"此操作非法!"<<endl<<endl;
    };
    system("pause");
    system("cls");    
};
void room_luru2(Room *room)//有会议室,添加会议室
{
    static int Number=1;
    string P;
    do{    
        for(int i=0;i<30;i++)
        {
            if(room[i].num==0)
            {
                room[i].num=Number++;
                cout<<"会议室号码:"<<room[i].num;cout<<endl;
                cout<<endl<<endl;
                cout<<"会议室添加成功,是否继续添加?(Y/N):";
                cin>>P;break;
            }
            else Number++;
        };
    }while(P=="Y");
    if(P=="N")
        cout<<"已取消添加。"<<endl<<endl;
    else cout<<"此操作非法!"<<endl<<endl;    
};
//用户使用登记功能
void check_in(Room *room,Customer *customer);
void check_in(Room *room,Customer *customer)
{
    int p=0;
    string b;
    cout<<"今日剩余会议室如下:"<<endl;
    for(int i=0;i<30;i++)
    {
        if(room[i].num!=0)
        {
            cout<<"会议室号码:";
            cout<<room[i].num<<"\t";    
            p++;
        }
    };
    if(p==0)cout<<"抱歉,今日暂无空会议室!"<<endl;
    else
    {
        cout<<"请问,需要使用吗?(Y/N)"<<endl;
        cin>>b;
        if(b=="Y")    
        {   int Num;
        int t=0;
        cout<<"请输入会议室号码:"<<endl;
        cin>>Num;
        for(int i=0;i<30;i++)
        {
            if(Num==room[i].num && room[i].num!=0)
            {
                customer[i].roomnum=Num;
                cout<<"请输入用户信息!"<<endl<<endl;
                cout<<"用户姓名:";
                cin>>customer[i].name;
                cout<<"预定日期:";
                cin>>customer[i].ruzhum;
                cout<<"预定时间:";
                cin>>customer[i].ruzhut;
                cout<<"离开日期:";
                cin>>customer[i].lidianm;
                cout<<"离开时间:";
                cin>>customer[i].lidiant;
                cout<<endl;
                cout<<"信息录入成功!"<<endl;
                t++;
            }
            else if(Num==room[i].num && room[i].num!=0)
            {
                cout<<"抱歉,此会议室已有人";
                t++;
            }
            else if(t==0 && i==29)
                cout<<"查无此会议室";    
        };
        }
        else if(b=="N") cout<<"预定已取消。";
        else cout<<"查无此会议室!";    
    }
    system("pause");
    system("cls");
};

//查询已预定的会议室功能
void chaxun_num(Room *room,Customer *customer)  //会议室查询
{
    int Num;
    int t=0;
    cout<<"输入要查找的会议室号码:";
    cin>>Num;
    for(int i=0;i<30;i++)              //for循环查找
    {
        if(room[i].num==Num )       //查找会议室号
        {
            string B,C;
            cout<<"会议室已找到:"<<endl;
            t++;
            for(int j=0;j<30;j++)
            {
                if(room[i].num==customer[j].roomnum)   //情况1,会议室有人
                {
                    cout<<"用户姓名:";
                    cout<<customer[j].name<<endl;
                }
            }    
        }
        else if(t==0&&i==29){cout<<"错误,找不到会议室信息!"<<endl<<endl;}
    }
    system("pause");
    system("cls");
}

//删除预定功能
void delete_room(Room *room,Customer *customer);
void delete_room(Room *room,Customer *customer)//删除预定函数
{
    int Num;
    int t=0;
    cout<<"请输入要删除的会议室号:";
    cin>>Num;
    for(int i=0;i<30;i++)              //for循环查找
    {    for(int j=0;j<30;j++)
    //*****************************************
    if(room[i].num==Num&&Num!=0 )       //查找会议室号
    {
        string B,C;
        cout<<"会议室已找到:"<<endl;
        t++;
        if(room[i].num==customer[j].roomnum)   //情况1,会议室有人
        {
            cout<<"该会议室仍有人使用,用户信息如下:"<<endl;
            cout<<"用户姓名:";
            cout<<customer[j].name<<endl;
            cout<<"确定仍要删除用户信息?(Y/N)";
            cin>>B;cout<<endl;
            if(B=="Y")
            {
                customer[j].name="无";
                customer[j].roomnum=0;
                customer[j].ruzhum="0";
                customer[j].ruzhut="0";
                customer[j].lidianm="0";
                customer[j].lidiant="0";
                
                room[i].num=0;
                cout<<"删除成功!"<<endl;    
            }
            else if(B=="N")
            {cout<<"取消删除。"<<endl;break;}
            else {cout<<"非法的操作!"<<endl;break;}
        }
        else if(room[i].num!=customer[j].roomnum)  //情况2,会议室空
        {  cout<<"确定要删除用户信息?(Y/N)";
        cin>>C;cout<<endl;
        if(C=="Y")
        {
            room[i].num=0;
            cout<<"删除成功!"<<endl;
        }
        else if(C=="N"){cout<<"取消删除。"<<endl;break;}
        else  {cout<<"非法的操作!"<<endl;break;}
        }
    }
    else if(t==0&&i==29&&j==29){cout<<"错误,找不到会议室信息!"<<endl<<endl;}
    };
    system("pause");
    system("cls");
};
//***保存文件功能
void write(Room * room,Customer *customer)   //保存会议室信息
{   ofstream Str("用户信息.txt",ios_base::trunc);
    ofstream C("用户信息.txt",ios_base::trunc);
if (!Str||!C)
    {
                return;
    }
    for(int i=0;i<30;i++)
{
    if(room[i].num!=0)   
    {        
        Str<<room[i].num<<"\t"<<endl;
    }
}
for(int j=0;j<30;j++)        
{
    if(customer[j].roomnum!=0)
    {        
        C<<customer[j].roomnum<<"\t"<<customer[j].name<<"\t"<<customer[j].ruzhum<<"\t"<<customer[j].ruzhut
            <<"\t"<<customer[j].lidianm<<"\t"<<customer[j].lidiant<<endl;
    }
}
Str.close();
C.close();
};
//***************读入文件功能
void read(Room *room,Customer *customer)
{
    int i=0;
    int j=0;
    ifstream readroom("用户信息.txt");
    ifstream readcustomer("用户信息.txt");
    if (!readroom||!readcustomer)
    {
                return;
    }
    while(!readroom.eof())
    {
        readroom>>room[i].num;
        i++;    
    };
    while(!readcustomer.eof())
    {    
        readcustomer>>customer[j].roomnum>>customer[j].name>>customer[j].ruzhum>>customer[j].ruzhut
            >>customer[j].lidianm>>customer[j].lidiant;
        j++;    
    };
    readroom.close();
    readcustomer.close();
}
int main()
{
    Room room[50];
    Customer customer[50];
    read(room,customer);
    while(1)
    {  
        cout<<"\n\n       *****会议室使用管理系统*****         \n\n";
        cout<<"               1.会议室信息的录入               \n\n";
        cout<<"               2.用户使用登记                   \n\n";
        cout<<"               3.查询已有的预订信息             \n\n";
        cout<<"               4.删除预定                       \n\n";
        cout<<"               0.退 出 系 统                    \n\n";
        cout<<"  请选择:";
        int choose=0;
        cin>>choose;
        system("cls");
        switch (choose)                                     //用户的选择
        {
        case 1:room_luru(room); break;       //输入用户信息    
        case 2:check_in(room,customer);break;           //用户使用登记
        case 3:chaxun_num(room,customer) ; break;     //查询已有的会议室
        case 4:delete_room(room,customer); break;     //删除预定
        case 0:write(room,customer);
            exit(0);                               //退出
        default : break;
        }
    }
};

(2)原系统模块分析

  功能模块涵盖录入会议室信息、用户使用登记、查询或删除已登记的预定。建立两个类,分别为Customer和Room,其中Customer类包含用户姓名,用户预订会议室日期、时间,以及离开会议室日期、时间,Room类包含会议室号。

 模块一 会议室的预订:录入会议室信息,先判断是否已存在会议室信息,如果已存在,则提示选择是否再次添加;若不存在,则添加会议室信息。用户登记模块:页面首先显示目前剩余会议室信息,后提示用户选择会议室号码,登记相关用户信息,登记预定成功。

 模块二 删除预定:从保存中的文件中读取信息,删除需要删除的信息,完善运作。

 模块三 查询已有的会议室预订:分按编号、类型、用户姓名查找客房信息,同时可以查看当日所有会议室、已使用会议室、剩余客会议室信息,这样可以更具有人性化来选择所剩余的会议室,从而进行日常安排。

 

(3)问题与改进

  综合以上模块已经是一个比较成熟完备的会议室预定系统,但如果客户方有需求,需要改动预定会议室的时间,那么可以添加一项功能对预定会议室的时间进行修改。

 

改进方案如下:

读取保存的会议室信息数据,根据会议室编号查找所需修改的会议室信息,然后根据具体所需,修改成员参数。

void printall1(Room *room,Customer *customer);

void printall2(Room *room,Customer *customer);

void room_xiugai(Room *room,Customer *customer)

{

int Num;

int _num;

string _ruzhut;

string _ruzhum;

string _lidianm;

string _lidiant;

cout<<"请输入要修改的会议室号码:"<<endl;

cin>>Num;

int t=0;

for(int i=0;i<30;i++)

{

if(Num==room[i].num)

{

cout<<"会议室号:"<<room[i].num<<"\t"<<endl;

cout<<"会议室信息已找到!"<<endl;

cout<<"是否确定要修改会议室信息?(Y/N)";

string p;

cin>>p;

if(p=="Y")

{

cout<<"预定日期改为:";

cin>>_ruzhum;

customer[i].ruzhum=_ruzhum;

cout<<endl;

cout<<"预定时间改为:";

cin>>_ruzhut;

customer[i].ruzhut=_ruzhut;

cout<<"离开日期改为:";

cin>>_lidianm;

customer[i].lidianm=_lidianm;

cout<<"离开时间改为:";

cin>>_lidiant;

customer[i].lidiant=_lidiant;

cout<<endl;

cout<<"修改成功!"<<endl<<endl;

}

else if(p=="N") cout<<"已取消修改。";

else cout<<"操作非法!";

t++;

}

else if(t==0 && i==29 && room[i].num==0)

cout<<"查无此会议室!"<<endl<<endl;

};

system("pause");

system("cls");

};

 

void printall1(Room *room,Customer *customer)   //打印已用会议室信息

{

int t=0;

 

cout<<"已使用会议室信息如下:"<<endl;

for(int i=0;i<30;i++)

{     for(int j=0;j<30;j++)

{

if(room[i].num!=0&&customer[j].roomnum==room[i].num)

{

cout<<"会议室号:"<<room[i].num<<"\t"<<endl;

cout<<"用户姓名:"<<customer[j].name<<"\t"

<<"预定日期:"<<customer[j].ruzhum<<"\t"<<"预定时间:"<<customer[j].ruzhut<<endl

<<"离开日期:"<<customer[j].lidianm<<"\t"<<"离开时间:"<<customer[j].lidiant<<endl<<endl<<endl;

t++;

}

}

if(t==0 && i==29) cout<<"暂无任何会议室信息!"<<endl<<endl;

};

system("pause");

system("cls");

};

(4)结果截图

原系统运行结果如下:

 会议室管理系统改进

 

 

 

 

 

 

 

 

 

修改后如下:

会议室管理系统改进

 

录入用户预定会议室信息:

会议室管理系统改进

 查询已使用会议室信息:

会议室管理系统改进

新添加功能:修改已预定会议室信息

 会议室管理系统改进

 

 

(5)心得体会

  通过对原程序的添加与改进,编写程序时分析问题做出算法,想好思路,在心里有个大致的框架,然后按部就班的记下自己想到的每一点内容,查缺补漏,把一些细节的地方补完整。改程序时逐条语句的读,看是否能输出自己想要输出的结果,直到把程序调试的完美无缺为至。对程序进行修改或改进,应该先对原程序进行比较全面的了解,根据原程序功能实现的不足处进行改善,使得程序能够更加高效合理。

 

 

上一篇:解决Tomcat乱码问题


下一篇:C++中提高程序运行效率的方法集合