• 大小: 17KB
    文件类型: .c
    金币: 2
    下载: 0 次
    发布日期: 2024-02-05
  • 语言: C/C++
  • 标签: 数据结构  c语言  

资源简介

在c语言数据机构课程课题中,写银行客户排队的离散模拟:主要信息为客户到达时间和办理业务所需时间,用两种数据结构--有序链表和队列实现。

资源截图

代码片段和文件信息

#include 
#include 
#include 
/*****************************************变量**************************************/
typedef struct CQueue
{
    int cometime;                              //进入银行的时间
int money;                             //存/取款金额,+为存,-为取
int leavetime;                         //离开银行时间
int working;                           //已交易时间
int worktime;                          //交易时间(用随机函数)
struct CQueue *next;
} CQ;
CQ *head[4]*cq[4]*last[4]*hlast[4];    //对应队列的头结点和尾结点指针
int currenttimetotaltimenexttime;       //目前时间设定按时间模拟总时间下一个顾客来的时间
int totalnumcurrentnum;                  //总人次目前为第几位顾客
int num[4];                               //对应三个窗口的目前人数
int totalVIP;                             //一共有多少位VIP
int *cometime;                            //存储顾客来的时间
float avewait;                            //平均等待时间
long int totalmoney;                      //目前银行总金额
char *menu[]={“****************************************““**********欢迎进入银行模拟系统**********“
              “****************************************““******************MENU******************“
  “1.按输入人次模拟““2.按输入时间模拟““3.退出“};
/*****************************************函数**************************************/
int menu_select();                        //菜单函数,用于显示菜单返回选择序号
void starttime();                         //按时间模拟函数
void startnum();                          //按人次模拟函数
void quit();                              //退出函数
void gotoxy(int iint j);                 //光标定位函数i表示列,j表示行
void quicksort(int *pint leftint right);//快速排序函数
void add(int iCQ *pint j);              //增加队列函数i表示窗口
int getminnum();                          //判断123号窗口人数最少窗口返回对应123
int getmaxnum();                          //判断123号窗口人数最多窗口返回对应123
void show();                              //显示窗口
void showqueue();                         //显示队列
void leave();                             //判断是否有人结束交易离开
void printtotal();                        //统计函数用于判断交易金额交易人次等
void printcq(int i);                      //显示某个窗口交易历史
void getavewait();                        //获得平均等待时间
void movequeue();                         //判断移动队伍函数
void mov(int maxint minint flag);       //移动长队到短队
/****************************************主函数**************************************/
void main()
{
system(“cls“);
for(;;)
{
switch(menu_select())
{
     case 1:startnum();break;
case 2:starttime();break;
case 3:quit();break;
}
}
}
/***************************************菜单函数**************************************/
int menu_select()
{
int s;
int i;
totalmoney=0;
currenttime=0;                       //对数据初始化
nexttime=0;
totaltime=0;
avewait=0;
currentnum=0;
totalVIP=0;
num[0]=num[1]=num[2]=0;
head[0]=cq[0]=last[0]=head[1]=cq[1]=last[1]=head[2]=cq[2]=last[2]=NULL;
head[3]=cq[3]=last[3]=NULL;
system(“cls“);
system(“color 06“);                  //改变DOS窗口显示颜色
gotoxy(102);
for(i=0;i<28;i++)                  

评论

共有 条评论