-
大小: 9KB文件類型: .c金幣: 1下載: 0 次發(fā)布日期: 2021-06-01
- 語(yǔ)言: C/C++
- 標(biāo)簽:
資源簡(jiǎn)介
C語(yǔ)言寫的銀行業(yè)務(wù)模擬代碼,使用隊(duì)列,動(dòng)態(tài)存儲(chǔ)結(jié)構(gòu)。
代碼片段和文件信息
#include??
#include??
#include
#include
#include?
#define?OK??1????//離開事件
#define?ERROR??0
#define?OVERFLOW?2
//全局變量:
int?total_money;//銀行現(xiàn)存資金總額
int?total_time=0;?//客戶逗留總時(shí)間
float?use_time;//每個(gè)顧客平均所用時(shí)間
int?money;//每個(gè)顧客辦理的款數(shù)
int?close_time;//銀行營(yíng)業(yè)時(shí)問(wèn)
int?space_time;//下一用戶到達(dá)的時(shí)間間隔
int?spend_time;//辦理業(yè)務(wù)所需時(shí)間
int?event_Type;//事件類型
int?number=1;//辦理業(yè)務(wù)的次序
SYSTEMTIME?sys;//獲取時(shí)間的變量
struct?Line1//隊(duì)列1元素(表示前來(lái)辦理業(yè)務(wù)的客戶)
{
int?arrive_time;//到達(dá)時(shí)間
int?event_Type;//事件類型,0表示存款,1表示取款。
int?spend_time;//辦理業(yè)務(wù)時(shí)間
int?money;//交易金額
}come;
struct?Line2//隊(duì)列2元素?(表示取款不能被滿足,等待隊(duì)列里的客戶)
{
????int?arrive_time;//到達(dá)時(shí)間
????int?spend_time;//辦理業(yè)務(wù)時(shí)間
????int?money;//交易金額
}wait;
struct?Node1//使隊(duì)列1的個(gè)體成為鏈塊結(jié)構(gòu)
{
struct?Line1?data;//存儲(chǔ)元素個(gè)體信息
struct?Node1?*next;
}Node1;
struct?Node2//使隊(duì)列2的個(gè)體成為鏈塊結(jié)構(gòu)
{
struct?Line2?data;
struct?Node2?*next;
}Node2;
struct?Point1//用于連接隊(duì)列1
{
struct?Node1?*front;//隊(duì)頭
struct?Node1?*rear;//隊(duì)尾
}link1;
struct?Point2//用于連接隊(duì)列2
{
struct?Node2?*front;//隊(duì)頭
struct?Node2?*rear;//隊(duì)尾
}link2;
void?time_now()?//獲取當(dāng)前系統(tǒng)時(shí)間
{?
GetLocalTime(&sys);?
}
void?print_time()//打印系統(tǒng)時(shí)間
{
if(sys.wDayOfWeek==0)
{
sys.wDayOfWeek=7;
}
printf(“\n\n\n\n\n\n\n\n\n\n\n\n“);
printf(“\n\n▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃“);
printf(“\n\n◆◆◆◆◆◆◆◆◆◆◆◆【?%4d/%02d/%02d?%02d:%02d:%02d?星期%1d?】◆◆◆◆◆◆◆◆◆◆◆◆“sys.wYearsys.wMonthsys.wDaysys.wHoursys.wMinutesys.wSecondsys.wDayOfWeek);
printf(“\n\n▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃“);
printf(“\n\n\n\n\n\n\n\n\n“);
printf(“按任意鍵開始模擬...“);
getch();
}
void?srandd()
{
srand(time(NULL));
}
void?at_random()//產(chǎn)生隨機(jī)數(shù)
{
money=rand()%10000+100;//設(shè)置客戶要辦理的款額為50~100050元
space_time=rand()%5;?//設(shè)置下一個(gè)客戶到達(dá)的時(shí)間為0~5分鐘
spend_time=rand()%25+5;//設(shè)置辦理業(yè)務(wù)所需時(shí)間為5~30分鐘
event_Type=rand()%2;//設(shè)置辦理業(yè)務(wù)為取或存中隨機(jī)一種
}
int?InitLine1()//初始化?申請(qǐng)空間
{
link1.front=link1.rear=(struct?Node1*)malloc(sizeof(struct?Node1));
????if(!link1.front)?exit(OVERFLOW);
????link1.front->next=NULL;
????return?OK;
}
int?InitLine2()
{
link2.front=link2.rear=(struct?Node2*)malloc(sizeof(struct?Node2));
????if(!link2.front)?exit(OVERFLOW);
????link2.front->next=NULL;
????return?OK;
}
int?destoryLine1()//釋放空間
{
while(link1.front)
????{?
link1.rear=link1.front->next;
free(link1.front);
link1.front=link1.rear=NULL;//把不用的指針指向NULL
}
return?OK;
}
int?destoryLine2()
{
while(link2.front)
????{?
link2.rear=link2.front->next;
free(link2.front);
link2.front=link2.rear=NULL;
}
return?OK;
}
int?flag1=0;
void?comingLine1()
{
struct?Node1?*new_come;//用于模擬新進(jìn)入銀行的客戶
new_come=(struct?Node1*)malloc(sizeof(struct?Node1));
if(!new_come)?exit(OVERFLOW);
at_random();//調(diào)用隨機(jī)數(shù)函數(shù),產(chǎn)生所需隨機(jī)數(shù)
new_come->data.arrive_time=total_time;//將產(chǎn)生的隨機(jī)數(shù)傳給新到客戶
total_time?+=?space_time;//該客戶到達(dá)時(shí)間即為當(dāng)前銀行已運(yùn)營(yíng)時(shí)間
new_come->data.event_Type=event_Type;
new_come->data.spend_time=spend_time;
if(event_Type==1)
{
new_come->data.money=money-(2
評(píng)論
共有 條評(píng)論