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