数据结构与算法课程设计实验报告
(3)模块调用关系:
本程序中函数包括:
main函数,队列操作相关函数;
Personnel_Func(Ticket t2[],int n,int s)函数,手动业务生成函数,可选择要生成的业务同时产生一个到达时间和打票信息;
Ticket_Produce_Function(Ticket t[],int n)函数,自动生成客户到达银行时的打票信息,其中包括到达时间,小票编号,业务种类;
Personnel_Distribution_Func(int n,int flag)函数,业务办理函数,等待队列中的每个元素出对后通过时间的计算和窗口闲忙的判断把客户分配到各个窗口办理业务;
Business_statistic_Func(Windows win[],int m)函数,统计各个窗口当天办理的各种业务种类,以及各种业务的数量;
Display_Business_Func(Windows win[],int m,int n,int coordinate)函数,按窗口分别显示各个窗口办理了那些客户的业务,以及数量;
Make_waittime_Func(int n)函数,计算当天银行中办理业务的所有客户在银行的逗留时间,以及当天总共办理了多少客户的业务和有多少客户的业务在下班时还没有办理业务;
Menu()函数,模拟输出银行业务办理系统的打号菜单,并分类显示各个窗口业务办理情况。
6
数据结构与算法课程设计实验报告
其函数调用关系如下:
Mian() Menu() Personnel_Distribution_Func(int n,int flag) Make_waittime_Func(int n) Business_statistic_Func(Windows win[],int m) Display_Business_Func(Windows win[],int m,int n,int coordinate) Personnel_Func(Ticket t2[],int n,int s) Ticket_Produce_Function(Ticket t[],int n) Personnel_Distribution_Func(int n,int flag)) 7
数据结构与算法课程设计实验报告
4.详细设计
(1)实现概要设计的数据类型:
采用队列
const int QueueSize = 1000;
template
class BankBusinses {
public: BankBusinses(); void EnQueue(); int GetQueue(); void Personnel_Func(Ticket t2[],int n,int s); //手动业务生成函数 int Ticket_Produce_Function(Ticket t[],int n); //打号函数 int Personnel_Distribution_Func(int n,int flag); //业务办理函数
intBusiness_statistic_Func(Windows win[],int m); //业务统计函数voidDisplay_Business_Func(Windows win[],int m,int n,int coordinate);//业务显示函数 voidMake_waittime_Func(int n); //等待时间函数 intMenu(); //菜单函数 Windows win[4]; //窗口 Ticket
t[QueueSize]; //票 Ticket t2[QueueSize];
private: };
string name; //业务名称
int businesstime; //办理业务所需时间 int alltime; //办理所有业务的总时间 int waittime; //等待时间
double averagetime; //平均等待时间 long *a,*b,*v;
int data[QueueSize]; Ticket data2[QueueSize]; int front,rear;
8
数据结构与算法课程设计实验报告
(2)主程序以及其它模块的算法描述: 主函数具体代码:
int main()
{ BankBusinses C; while(1) { switch(C.Menu()){ case 1: srand(time(0)); n=(rand()%(500-1)+1); for(i = 0;i < n;i++){ C.t[i].arrivaltime.hour = (rand()%(17-9)+9); C.t[i].arrivaltime.minute = rand()`; C.t[i].arrivaltime.second = rand()`;} C.Ticket_Produce_Function(C.t,n); C.EnQueue(); C.GetQueue(); C.Personnel_Distribution_Func(n,0); break; case 2: if(flag==0){cout<<无可查询信息 !\n else{C.Make_waittime_Func(n);} break; case 3: if(flag==0){cout<<无可查询信息 !\n else{C.Business_statistic_Func(C.win,4);} break; case 4: if(flag==0){cout<<无可查询信息 !\n else{C.Display_Business_Func(C.win,4,n,0);} break; case 5: if(flag==0){cout<<无可查询信息 !\n else{C.Display_Business_Func(C.win,4,n,1);} break; case 6: if(flag==0){cout<<无可查询信息 !\n else{C.Display_Business_Func(C.win,4,n,2);} break; case 7: if(flag==0){cout<<无可查询信息 !\n else{C.Display_Business_Func(C.win,4,n,3);} break; case 8: for(i=0;i
9
数据结构与算法课程设计实验报告
cin.clear(); cin.ignore(); cout<<输入错误 !\n\t\t请重新输入! Sleep(1000); } else if(m!=0 && m!=1){ Sleep(1000); } else if(cin.good() && (m==0 || m==1) ){ if(m==0) {tag=1;} break;}} if(tag==1)break; C.Personnel_Func(C.t2,0,m);} break; case 0: //如返回值为0则程序结束 cout << exit(0); } } return 0;}
主函数的功能调用了各个实现函数。首先是调用菜单函数显示出模拟菜单,提示用户按照要求进行选择操作,输入有误则会重新操作,否则进行下一个功能函数的调用,产生模拟客户的基本业务信息,在信息随机产生后就会调用核心函数把办理业务的客户根据实际情况分配到不同的窗口办理自己的业务。调用时间计算函数确定客户平均逗留时间和办理客户的人数。最后是清屏函数。直至用户选择退出。
(3)其它模块的算法描述 打号函数
功能:调用随机函数产生客户到达银行的随机时间和随机业务,并通过冒泡法对所有时间排序,然后进入队列等待。 int BankBusinses::Ticket_Produce_Function(Ticket t[],int n)
{
srand(time(0));
n=(rand()%(500-1)+1); for(i = 0;i < n;i++) { //产生客户到达银行的随机时间 C.t[i].arrivaltime.hour = (rand()%(17-9)+9); C.t[i].arrivaltime.minute = rand()`; C.t[i].arrivaltime.second = rand()`; }
for(i = 0;i < n;i++)
{ t[i].number = i; //编号产生 rear=(rear+1)%QueueSize; data[rear]=t[i].number; //产生的编号入队 sign = (rand()%(5-1))+1;
10
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库银行业务系统等待队列(2)在线全文阅读。
相关推荐: