模拟银行排队取号系统 - 命令行版 - 代码
更新时间:2023-09-17 07:27:01 阅读量: 幼儿教育 文档下载
- 去银行排队取号机视频推荐度:
- 相关推荐
1 1 北邮模拟银行系统_命令行版_源代码(C语言版 C-Free)
以此怀念 我幼稚的不冷静 大一下 干了一些事 至少努力过 努力不错过 这段有点冲动的时期 毕竟青春 再见 宏福 再见 大一
By 北邮14级13班 颜力琦
constant.h
#define Wait 0//等待服务状态
#define DistributeForOrdinary 1//分配普通客户状态 #define WaitForVIPNum 2//等待VIP身份号状态 #define CheckVIP 3//核对VIP身份号状态 #define DistributeForVIP 4//分配VIP客户状态 #define Quit 5//下班指令发出,锁定取号机状态
#define Unopen 10//窗口关闭状态 #define WaitWin 11//窗口等待状态 #define Serve 12//窗口服务状态 #define Call 13//窗口叫号状态 #define Rest 14//窗口休息状态 #define Closed 15//窗口下班状态
variable.h
FILE *fptr1;//读取信息的文件 FILE *fptr2;//输出文件
FILE *fptr3;//输出统计数据文件 FILE *fVIP;//VIP文件打开指针
int state = 0;//取号机状态值
int closeOrder = 0;//下班指令是否发出 int WinCount, VIPWinCount;//营业窗口数 int change = 0;//是否有事件发生
2 1
struct VIPInformation VIPInfo; //VIP客户资料 struct WINDOWS Win[8]; //8个窗口编号0-7
int MaxSeqLen;//单队列最大允许等待长度 int MinSec;//单业务办理最短时长 int MaxSec;//单业务办理最长时长 int MinRestSec;//窗口休息最短时长 int MaxRestSec;//窗口休息最长时长 int VIPSERVLen;//VIP窗口设置时长
int maxNUM=0;//最大普通服务号码 int minNUM=0;//最小普通服务号码
int VIPmaxNUM=0;//最大VIP服务号码 int VIPminNUM=0;//最小VIP服务号码
char SERVE[3] = {0};//最大客户服务号码
HANDLE hScreenMutex;//保存互斥对象的句柄
Main.c
#include
#define DEBUG
void initialize(void);//初始化函数
3 1 void get_input(void); //输入函数 void control(void);//系统控制函数 void print_message(void);//输出函数
void print_file(void);//输出到运行情况的记录(结果)文件
void print_statisticsFile(void);//输出到运行情况的记录(结果)文件 void bankError(void);//特殊情况
void rest(int n); //处理窗口休息请求
void InputVIPInformation(void);//VIP客户资料维护 void queue(void);//为普通客户排队 void queueVIP(void);//为VIP排队 void windowWork(void);//各窗口控制 void windowControl(void);//增减窗口控制
//VIP客户资料维护部分 void correct(void); void Delete(void); void add(void); void menu(void);
int VIPInformationupdate(void);
struct VIPInformation { char name[10]; int num; int account; };
struct WINDOWS //存储窗口信息 { int IsVIP; int WindowState; int serveNum; int start;//记录事件发生时间 int timeInterval;//时间间隔 int closeLater;//服务完毕后是否关闭 int appraise;//客户满意度评价 int sum;//总共受理客户数 clock_t timeSum;//总业务办理时长 int restLater;//服务完毕后是否休息 };
main() { clock_t start, finish; //初始化 initialize();
//创建线程 DWORD ThreatID = 1; hScreenMutex = CreateMutex(NULL, FALSE, \创建互斥对象 HANDLE hRead1
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)get_input,NULL,0,&ThreatID); CloseHandle(hRead1); printf(\Welcome to 模拟银行营业******************************\\n\ //运行 while((VIPWinCount!=0||WinCount!=0)||state!=Quit) { WaitForSingleObject(hScreenMutex, INFINITE);//申请互斥对象所有权 control(); //模拟系统运行函数
print_message(); //信息输出函数 print_file();
ReleaseMutex(hScreenMutex);//释放互斥对象所有权 } fclose(fptr2); print_statisticsFile();//输出统计结果文件 printf(\服务结束,是否退出程序\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\a\ system(\ return 0; }
4 1 =
厅
5 1
void initialize(void) { FILE *file; int i; //打开文件 fptr2=fopen(\ file=fopen(\ if(fptr2==NULL||file==NULL){ printf(\ exit(0); } //8个窗口状态初始化 Win[0].IsVIP = 1; Win[0].WindowState = WaitWin; Win[1].IsVIP = 1; Win[1].WindowState = Unopen; Win[2].IsVIP = 0; Win[2].WindowState = WaitWin; Win[3].IsVIP = 0; Win[3].WindowState = WaitWin; Win[4].IsVIP = 0; Win[4].WindowState = WaitWin; Win[5].IsVIP = 0; Win[5].WindowState = Unopen; Win[6].IsVIP = 0;
11 1 if(VIPmaxNUM>VIPminNUM) { for(i=0; i<2; i=i+1) { if(Win[i].WindowState==WaitWin) { Win[i].WindowState=Call; VIPminNUM=VIPminNUM+1; Win[i].serveNum=VIPminNUM; Win[i].start = clock(); Win[i].timeInterval=rand()P00+5000;//叫号时间为5~10秒随机数 Win[i].timeSum = Win[i].timeSum + Win[i].timeInterval;//服务时间增加 Win[i].sum = Win[i].sum +1; change = 1; break; } } } }
void windowControl(void)//增减窗口控制 { int i; int maxVIPCount = 0; static clock_t present = 0, previous = 0; present = clock(); //普通窗口的增加 if((maxNUM-minNUM)>=(3*WinCount)) { for(i=2;i<8&&Win[i].WindowState!=Unopen;i=i+1) { }
12 1 if(i<8) { Win[i].WindowState = WaitWin; WinCount = WinCount + 1; change = 1; } }
//普通窗口的减少
if(((maxNUM-minNUM)<(2*WinCount))&&(WinCount>3)) { for(i=7;i>=2&&Win[i].WindowState==Unopen;i=i-1) { } if(i>=2) { switch(Win[i].WindowState) { case WaitWin: Win[i].WindowState = Unopen; WinCount = WinCount - 1; change = 1; break; case Rest: Win[i].WindowState = Unopen; WinCount = WinCount - 1; change = 1; break; case Call: Win[i].closeLater = 1; WinCount=WinCount-1; case Serve: Win[i].closeLater = 1; WinCount=WinCount-1; break; } } }
13 1
//VIP窗口的增加
if(VIPmaxNUM-VIPminNUM>3&&Win[1].WindowState==Unopen) { Win[1].WindowState = WaitWin; VIPWinCount = VIPWinCount + 1; change = 1; }
//VIP窗口的减少
if(present-previous
if(present-previous>=VIPSERVLen) { if(maxVIPCount<3) { switch(Win[1].WindowState) { case WaitWin: Win[1].WindowState = Unopen; VIPWinCount = VIPWinCount - 1; change = 1; break; case Rest: Win[1].WindowState = Unopen; VIPWinCount = VIPWinCount - 1; change = 1; break; case Call: Win[1].closeLater = 1; VIPWinCount=VIPWinCount-1; break; case Serve: Win[1].closeLater = 1; VIPWinCount=VIPWinCount-1; break; }
14 1 previous = present; } } }
void windowWork(void) { int i;
clock_t present; present = clock(); srand(time(NULL)); //随机种子 for(i=0; i<8; i=i+1) { switch(Win[i].WindowState) { case Serve: if(present>=Win[i].start+Win[i].timeInterval) { Win[i].appraise = rand()%3 + 1;//客户满意度由随机数产生 if(Win[i].closeLater==0) { Win[i].WindowState = WaitWin;//窗口服务结束 change = 1; } if(Win[i].closeLater==1) { Win[i].WindowState = Unopen;//窗口关闭 Win[i].closeLater=0;
15 1 change = 1; } if(Win[i].restLater==1) { Win[i].WindowState = Rest;//窗口休息 Win[i].start = present; Win[i].timeInterval = rand()%((MaxRestSec-MinRestSec)*1000)+MinRestSec*1000; Win[i].restLater=0; change = 1; } } break; case Call:
if(present>=Win[i].start+Win[i].timeInterval) { Win[i].WindowState = Serve; Win[i].start = present; Win[i].timeInterval = rand()%((MaxSec-MinSec)*1000)+MinSec*1000;//客户办理业务的时间长短由随机数产生,范围在MinSec到MaxSec之间 Win[i].timeSum = Win[i].timeSum + Win[i].timeInterval;//服务时间增加 change = 1; } break; case Rest: if(present>=Win[i].start+Win[i].timeInterval) { Win[i].WindowState = WaitWin;//窗口休息结束 if(i<2) { VIPWinCount = VIPWinCount+1; } else WinCount = WinCount+1; change = 1; } break;
正在阅读:
现代汉语汉字部分练习题(含答案)(1)03-29
稿 - 青春责任演讲05-05
2016房地产估价师后续教育答案汇总09-23
2015-2022年中国环保餐具生产原料市场分析及发展策略研究预测报04-22
电压空间矢量PWM控制的仿真研究12-09
地球的抱怨与诉说作文600字07-14
2015美术鉴赏答案04-25
实验讲义-2009级a06-06
暖通空调热泵技术素材第2章03-13
- 淘宝开店前调研报告
- 第一次九年级月考英语试卷
- 2013-2014学年第二学期职业道德期中测试题A卷
- 《建筑工程项目风险管理》作业答案
- 神经的电生理特性及影响因素实验报告
- 第九章车辆购置税、车船税和印花税法练习题(1)讲解
- VEECO、Aixtron明争暗斗发力亚洲市场
- 公司人力〔2014〕148号关于印发《员工休假管理暂行规定》的通知(1)
- 中国人权问题之现状与前景 纪念《世界人权宣言》发表五十周年
- 数据库系统概论实验指导书
- 2018-2024年中国聚葡萄糖市场调查与投资战略报告(目录) - 图文
- 保护弱者不是社会的倒退 辩论
- 实验报告 - 实验5 CC2530系统时钟的设置
- 育婴师试题(含答案)
- 2014年新北师大五年级数学上册每单元教学反思
- 人教版七年级数学下册平面直角坐标系知识汇总及经典题型
- 三年高考(2016-2018)地理试题分项解析中国地理+世界地理+选修+多知识交叉 - 图文
- 100道四年级简便运算练习题
- 体育科学研究方法(体育教育)复习题
- 电路的组成与连接方式