printf("time is %f s\n",difftime(t_end,t_end));difftime中兩個都是t_end,注定為0。

網站建設哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網頁設計、網站建設、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了索縣免費建站歡迎大家使用!
以前做那個停車場管理系統(tǒng)的時候,也是需要計時,因為要收費..好像就這么記得.每個上機的人,應該有一個結構體,在結構體里設個計時的變量,可以是個只有兩個元素的數(shù)組.當然這樣會很不方便了.(因為需要你自己輸入上機時間,和下機時間,并保存在變量里.)....ANSIC里有一個time函數(shù),在time.h頭文件里.這個函數(shù),傳遞一個參數(shù),返回的是系統(tǒng)時間(單位我不清楚),返回的系統(tǒng)時間保存在你傳遞的參數(shù)里...你可以試試這個.貌似這個可能就有點麻煩了.因為需要測試程序...你不可能等個1,2個小時,再看看輸出結果是不是對的...測試的時候,乘個數(shù)放大一下應該就可以了..也就是說,你設一個結構體,里面有一個記錄時間的數(shù)組time[2],數(shù)組只含兩個元素,這兩個元素的值,由time函數(shù)來獲得.(這里獲得的是系統(tǒng)時間)..這個結構體里應該還含有的其他元素,應該要包括,電腦標號ID(每個電腦對應一個號碼),和一個bool型變量status,來標識是該電腦的狀態(tài),已有人上機或者處于空閑狀態(tài).status為true(有人使用該機器)時,把系統(tǒng)時間付給time[0],該機器的status變?yōu)閒alse(有人下機)后,在把一個系統(tǒng)時間付給time[1].計算時間差和收費額...那些一個小時,半個小時,等等,不同時間的不同收費標準,一般用if,什么的來搞定.
/*----------------------------------------------------------------
// Copyright (C) 2009 沈陽工程學院信息安全工作室
// 版權所有。
//
// 文件名:模擬停車場問題.cpp
// 文件功能描述:模擬停車場問題
//
//
// 創(chuàng)建標識:20091214
//
// 修改標識:20091218
// 修改描述:完成編碼
//----------------------------------------------------------------*/
//頭文件
#include iostream
#include malloc.h
#include string
#include windows.h
//常量定義
#define MAX_STOP 4 //定義停車場最大停車數(shù)
#define MAX_PLATE 10 //定義車牌號最大長度
#define TIME_COUNT "秒" //定義時間單位
#define TIME_MS_TO_CONUT 1000 //定義時間進制,意為由TIME_COUNT到毫秒的進制
#define UNIT_PRICE 10 //定義單位時間收費標準
using namespace std; //使用std命名空間
//數(shù)據(jù)結構定義
//定義存儲汽車信息的結構體
typedef struct
{
char license_plate[MAX_PLATE]; //汽車牌照號碼,定義為一個字符指針類型
char state; //汽車當前狀態(tài),字符p表示停放在停車位上,字符s表示停放在便道上,每輛車的初始狀態(tài)用字符i來進行表示
int time; //汽車停入停車場時的時間,用來計時收費
}CAR;
//定義模擬停車場的棧結構
typedef struct
{
CAR STOP[MAX_STOP]; //汽車信息的存儲空間
int top; //用來指示棧頂位置的靜態(tài)指針
}SeqStack;
//定義模擬便道的隊列結構
typedef struct node
{
CAR WAIT; //汽車信息的存儲空間
struct node *next; //用來指示隊列位置的動態(tài)指針
}QNode; //鏈隊列節(jié)點的類型
//定義鏈隊列的收尾指針
typedef struct
{
QNode *front,*rear;
}LQueue; //將頭尾指針封裝在一起的鏈隊
//函數(shù)聲明
int Empty_LQueue(LQueue *q); //判隊空
int LeaveCheck(SeqStack parking , char *license_plate); //檢查離開的車是否在停車場中
int QueueLength(LQueue *q); //判隊長度
int Out_LQueue(LQueue *sidewalk , char *license_plate); //出隊操作
int StackEmpty(SeqStack parking); //判斷棧是否為空
int StackFull(SeqStack parking); //判斷棧是否為滿
int StackPop(SeqStack parking); //出棧操作
int StackTop(SeqStack parking , char *license_plate , int time);//取棧頂元素
void Car_come(SeqStack parking , LQueue *sidewalk); //有車到來時的操作
void Car_leave(SeqStack parking , LQueue *sidewalk); //有車離開的操作
void Display(SeqStack parking); //顯示停車場內的所有信息 調試時用
void InitStack(SeqStack parking); //初始化棧
void InitList(LQueue *sidewalk); //初始化隊列
void In_LQueue(LQueue *sidewalk , char *license_plate); //進隊操作
void Input_Check(char *license_plate); ////檢驗輸入的車牌是否合法
void StackPush(SeqStack parking , char *license_plate , int stop_time);//進棧操作
void main()
{
//定義變量
SeqStack parking;
LQueue *sidewalk = NULL;
char *choice = new char;
int flag = 1; //定義一個變量 判斷是否退出
//初始化一個為空的停車場
InitStack(parking);
//初始化一個為空的便道
InitList(sidewalk);
//運行界面及功能選擇
while(flag)
{
cout"\n\t 停車場模擬管理系統(tǒng) \n\n";
cout"\t|--------------------------------------------------|\n\n";
cout"\t|本程序為停車場的模擬管理系統(tǒng),有車到來時請按C鍵。|\n\n";
cout"\t|然后根據(jù)屏幕提示進行相關操作,有車要走時請按l鍵。|\n\n";
cout"\t|然后根據(jù)屏幕提示進行相關操作,查看停車場請按D鍵。|\n\n";
cout"\t|然后根據(jù)屏幕提示進行相關操作,要退出系統(tǒng)請按Q鍵。|\n\n";
cout"\t|--------------------------------------------------|\n\n";
cout"請選擇操作:";
gets(choice);
if(1 != strlen(choice))
{
cout"請正確輸入選項!";
continue;
}
else
{
switch(*choice)
{
case 'c':
case 'C':
{
Car_come(parking,sidewalk);break;
}
case 'l':
case 'L':
{
Car_leave(parking,sidewalk);break;
}
case 'q':
case 'Q':
{
flag=0;break;
}
case 'd':
case 'D':
{
Display(parking);break;
}
default:
cout"選擇不正確!請重新選擇!\n";
}
}
}
}
//有車到來時的操作
void Car_come(SeqStack parking , LQueue *sidewalk)
{
//定義變量
char license_plate[MAX_PLATE];
cout"請輸入車輛的車牌號碼:";
Input_Check(license_plate);
//判斷停車場是否已滿,滿則進入便道,不滿進入停車場
if(StackFull(parking))
{
In_LQueue(sidewalk , license_plate); //進入便道
cout"停車場已滿請在便道等候,您的位置為"QueueLength(sidewalk)
endl;
}
else
{
StackPush(parking , license_plate , GetTickCount()); //進入停車場
cout"請進入停車場中的"parking.top+1"號停車位\n";
}
// Display(parking);
}
//有車離開時的操作
void Car_leave(SeqStack parking , LQueue *sidewalk)
{
//定義變量
SeqStack tmpparking; //定義臨時停車場
char leave_license_plate[MAX_PLATE]; //要離開的車牌號
char license_plate[MAX_PLATE]; //存放從停車場中讀出來的車牌信息
int time;
InitStack(tmpparking); //初始化臨時停車場
//判斷停車場中是否有車
if(StackEmpty(parking))
{
cout"當前停車場中沒有車\n";
return; //退出子函數(shù)
}
cout"請輸入要離開的車牌照:";
Input_Check(leave_license_plate);
cout"當前停車場中有"parking.top+1"輛車\n";
if(LeaveCheck(parking , leave_license_plate)) //判斷車是否在停車場中
{
//車在停車場中
cout"您的車在"LeaveCheck(parking , leave_license_plate)"號車位上\n";
while(StackTop(parking , license_plate , time)
(strcmp(parking.STOP[parking.top].license_plate , leave_license_plate) != 0))
{
strcpy(parking.STOP[parking.top].license_plate , license_plate);
cout"牌照為"license_plate"的車暫時退出停車場"parking.top+1"號位\n";
StackPush(tmpparking , license_plate , time); //停車場中的車暫時退出 進入臨時停車場
StackPop(parking); //出棧
}
cout"牌照為"license_plate"的車離開停車場"parking.top+1"號位\n";
cout"您在停車場中停了"(GetTickCount()-time)/TIME_MS_TO_CONUTTIME_COUNTendl; //輸出所停時間信息
cout"應繳費用為"(GetTickCount()-time)/TIME_MS_TO_CONUT*UNIT_PRICE"元\n" //輸出費用信息
StackPop(parking); //出棧
//將臨時停車場中的車停回停車場
while(StackEmpty(tmpparking) != 1)
{
StackTop(tmpparking , license_plate , time);
StackPush(parking , license_plate , time);
cout"牌照為"license_plate"的車進入停車場"parking.top+1"號位\n";
license_plate[0] = '\0';
StackPop(tmpparking);
}
if(parking.top+1 == MAX_STOP-1) //判斷車離開前停車場是否停滿
if(QueueLength(sidewalk)) //如果停滿則判斷便道上是否有車
{
//便道中有車 則從便道中停入停車場
Out_LQueue(sidewalk , license_plate); //出隊
StackPush(parking , license_plate , GetTickCount()); //入棧
cout"在便道中牌照為"license_plate"的車進入停車場"parking.top+1"號位\n";
}
}
else
//車不在停車場中
cout"您的車不在停車場中!\n";
}
//初始化順序棧
void InitStack(SeqStack parking)
{
parking.top = -1;
}
//判棧空
int StackEmpty(SeqStack parking)
{
if(parking.top == -1)
return 1;
else
return 0;
}
//判棧滿
int StackFull(SeqStack parking)
{
if(parking.top == MAX_STOP-1)
return 1;
else
return 0;
}
//入棧
void StackPush(SeqStack parking , char *license_plate , int stop_time)
{
parking.top++;
strcpy(parking.STOP[parking.top].license_plate , license_plate);
parking.STOP[parking.top].state = 'p';
parking.STOP[parking.top].time = stop_time;
}
//出棧 返回棧頂指針
int StackPop(SeqStack parking)
{
if(StackEmpty(parking))
return 0;
else
return parking.top--;
}
//取棧頂元素
int StackTop(SeqStack parking , char *license_plate , int time)
{
if(StackEmpty(parking))
return 0;
else
{
strcpy(license_plate , parking.STOP[parking.top].license_plate);
time = parking.STOP[parking.top].time;
return 1;
}
}
//顯示所有
void Display(SeqStack parking)
{
if(parking.top == -1)
printf("停車場為空\n");
else
{
while(parking.top != -1)
{
cout"車牌號為:"parking.STOP[parking.top].license_plate;
cout",停在"parking.top + 1 "號車位上";
cout",已停"(GetTickCount()-parking.STOP[parking.top].time)/TIME_MS_TO_CONUTTIME_COUNTendl;
parking.top--;
}
}
}
//初始化隊列
void InitList(LQueue *sidewalk)
{
sidewalk = (LQueue *)malloc(sizeof(LQueue));
sidewalk-front=sidewalk-rear = NULL;
}
//入隊
void In_LQueue(LQueue *sidewalk,char *license_plate)
{
QNode *car_on_sidewalk;
car_on_sidewalk = (QNode *)malloc(sizeof(QNode)); //為新節(jié)點開辟新空間
strcpy(car_on_sidewalk-WAIT.license_plate , license_plate); //將數(shù)據(jù)寫入節(jié)點
car_on_sidewalk-WAIT.state = 's'; //寫入停車信息
car_on_sidewalk-WAIT.time = GetTickCount(); //寫入停車時間
car_on_sidewalk-next = NULL;
if(Empty_LQueue(sidewalk)) //隊空則創(chuàng)建第一個節(jié)點
sidewalk-front = sidewalk-rear = car_on_sidewalk;
else
{
//隊非空插入隊尾
sidewalk-rear-next = car_on_sidewalk;
sidewalk-rear = car_on_sidewalk;
}
}
//判隊空
int Empty_LQueue(LQueue *q)
{
if(q-front == NULL)
return 1;
else
return 0;
}
//判隊長度 返回隊長
int QueueLength(LQueue *q)
{
QNode *p=q-front;
int i=0;
while(p != NULL)
{
i++;
p=p-next;
}
return i;
}
//出隊 成功返回1 隊空返回0
int Out_LQueue(LQueue *sidewalk,char *license_plate)
{
QNode *car_on_sidewalk;
if(Empty_LQueue(sidewalk)) //如果隊空返回0
return 0;
car_on_sidewalk = sidewalk-front;
strcpy(license_plate , car_on_sidewalk-WAIT.license_plate);//取出隊頭元素
if(sidewalk-front == sidewalk-rear) //隊中只有一個元素
sidewalk-front = sidewalk-rear=NULL; //刪除元素
else
sidewalk-front = sidewalk-front-next; //隊頭指針后移
free(car_on_sidewalk); //釋放指針
return 1;
}
//檢查離開的車是否在停車場中 返回車在停車場中位置 不在則返回0
int LeaveCheck(SeqStack parking,char *license_plate)
{
int flag = parking.top+1; //定義變量記錄當前車在停車場中位置
if(StackEmpty(parking))
return 0;
else
{
//查找離開車所在位置
while(parking.top != -1 strcmp(parking.STOP[parking.top].license_plate , license_plate) != 0)
{
flag--;
parking.top--;
}
return flag;
}
}
//檢驗輸入的車牌是否合法
void Input_Check(char *license_plate)
{
int flag = 1;
int i;
string tmpstr;
while(flag)
{
cintmpstr;
getchar();
if(tmpstr.length()MAX_PLATE)
{
for(i=0;i10;i++)
license_plate[i] = tmpstr.c_str()[i];
flag = 0;
}
else
cout"輸入有誤,請重新輸入:";
}
}
以前的課設 你看看吧 純手工的~~
#include stdio.h
#include stdlib.h
#include string.h
#include time.h
#define max 3
#define price 1
int b=1;
typedef struct
{
int day;
int hour;
int min;
}TIME; //時間結點
typedef struct
{
char num[10]; //車牌號
TIME time; //進入停車場的時間
int n; //進入停車場的位置
}information;
//棧結構體定義
typedef struct node
{
information data;
struct node *next;
}stacknode; stacknode *top1,*top2;
//隊列結構體定義
typedef struct
{
information data;
stacknode *front,*rear;
}LQueue;LQueue *Q;
//函數(shù)聲明部分/////////////////////////////////////////////////////////
stacknode *Init(); //棧的初始化
stacknode *into(stacknode *top1,LQueue *Q); //初始化車輛進入
int expenses(stacknode *p,int x,int y); //停車費用計算函數(shù)
stacknode *leave(stacknode *top1,char str[],LQueue *Q); //車輛駛出出場函數(shù)
LQueue *InitLQue(); //初始化隊列函數(shù)
LQueue *wait(LQueue *q,stacknode *s); //車輛進入候車便道函數(shù)
int EmptyLQue(LQueue *q); //判斷候車便道有無等待車輛函數(shù)
stacknode *out(LQueue *q); //候車區(qū)車輛出隊
stacknode *LQinto(stacknode *p,stacknode *top1); //從候車便道進入停車場函數(shù)
void show(stacknode *top1); //顯示停車場所有信息函數(shù)
void T_shou(LQueue *Q); //顯示候車區(qū)信息
/*函數(shù)部分*/
//主函數(shù)
void main()
{
char str[10];
Q=InitLQue();
top1=Init();
top2=Init();
Q=InitLQue();
int i;
printf("\t\t\t*************************************\n");
printf("\t\t\t\t 停車場管理系統(tǒng)\n");
printf("\t\t\t|| 1. 車輛進入停車場 ||\n");
printf("\t\t\t|| 2. 車輛離開停車場 ||\n");
printf("\t\t\t|| 3. 顯示停車場內所有車輛信息 ||\n");
printf("\t\t\t|| 4. 顯示候車區(qū)內所有車輛信息 ||\n");
printf("\t\t\t|| 5. 退出 ||\n");
printf("\t\t\t*************************************\n");
while(i!=5)
{
printf("\t請輸入選項1-5:");
scanf("%d",i);
switch(i)
{
case 1:
top1=into(top1,Q);
break;
case 2:
printf("請輸入離開車輛的車牌號:");
scanf("%s",str);
top1=leave(top1,str,Q);
break;
case 3:show(top1);break;
case 4:T_shou(Q);break;
case 5:exit(1);
default:printf("輸入錯誤,請重新輸入1—5:");
break;
}
}
}
/*子函數(shù)*/
//初始化
stacknode *Init()
{
stacknode *top;
top=(stacknode *)malloc(sizeof(stacknode));
top=NULL;
return top;
}
//初始化車輛進入
stacknode *into(stacknode *top1,LQueue *Q)
{
stacknode *p,*q;
time_t rawtime; //調用系統(tǒng)時間函數(shù)
struct tm *timeinfo; //時間結點
time(rawtime);
timeinfo=localtime(rawtime);
p=(stacknode *)malloc(sizeof(stacknode));
if(p==NULL)
{
printf("內存分配失敗");
return top1;
}
printf("請輸入進入停車場車輛的車牌號:");
scanf("%s",p-data.num);
q=top1;
while(q!=NULL)
{
if(strcmp(p-data.num,q-data.num)==0)
{
printf("車牌號輸入有誤,該車已進入!");
return top1;
}
q=q-next;
}
p-data.time.day=timeinfo-tm_mday;
p-data.time.hour=timeinfo-tm_hour;
p-data.time.min=timeinfo-tm_min;
p-data.n=b;
if(bmax)
{
printf("停車場已滿,請在便道等候!\n");
wait(Q,p);
return top1;
}
if(top1==NULL)
{
p-next=NULL;
top1=p;
}
else
{
p-next=top1;
top1=p;
}
b++;
printf("車輛進入停車場成功,時間已經自動載入!\n");
printf("車牌為%s的汽車駛入時間為:%d號%d點%d分\n",top1-data.num,top1-data.time.day,top1-data.time.hour,top1-data.time.min);
return top1;
}
//停車費用計算函數(shù)
int expenses(stacknode *p,int x1,int x2,int x3)
{
int w;
if(x3!=0)
w=(x1*24+x2+1-(p-data.time.day*24+p-data.time.hour))*price;
else
w=(x1*24+x2-(p-data.time.day*24+p-data.time.hour))*price;
return w;
}
//車輛駛出出場函數(shù)
stacknode *leave(stacknode *top1,char str[],LQueue *Q)
{
int i,day,hour,min;
time_t rawtime;
struct tm *timeinfo;
time(rawtime);
timeinfo=localtime(rawtime);
day=timeinfo-tm_mday;
hour=timeinfo-tm_hour;
min=timeinfo-tm_min;
stacknode *p,*q;
if(top1==NULL)
{
printf("停車場沒有車輛!\n");
return top1;
}
q=(stacknode *)malloc(sizeof(stacknode));
if(p==NULL)
{
printf("內存分配失敗");
return top1;
}
q=top1;
while(q!=NULL)
{
if(strcmp(q-data.num,str)==0)
break;
q=q-next;
}
if(q==NULL)
{
printf("輸入有誤,該車輛不在停車場!\n");
return top1;
}
for(i=top1-data.n;iq-data.n;i--)
{
p=(stacknode *)malloc(sizeof(stacknode));
if(p==NULL)
{
printf("內存分配失敗");
return top1;
}
strcpy(p-data.num,top1-data.num);
p-data.time=top1-data.time;
p-data.n=top1-data.n-1;
top1=top1-next;
if(top2==NULL)
{
p-next=NULL;
top2=p;
}
else
{
p-next=top2;
top2=p;
}
}
top1=top1-next;
while(top2!=NULL)
{
p=(stacknode *)malloc(sizeof(stacknode));if(p==NULL){printf("內存分配失敗");return top1;}
p-data.n=top2-data.n;
strcpy(p-data.num,top2-data.num);
p-data.time=top2-data.time;
p-next=top1;
top1=p;
top2=top2-next;
}
if(EmptyLQue(Q))
{
p=out(Q);
p-data.n--;
top1=LQinto(p,top1);
}
else
b--;
printf("車牌為%s的汽車駛出時間為:%d號%d點%d分\n",q-data.num,day,hour,min);
printf("車輛駛出停車場需要繳納的費用為:%d元\n",expenses(q,day,hour,min));
return top1;
}
//隊列函數(shù)初始化
LQueue *InitLQue()
{
LQueue *Q;
stacknode *p;
Q=(LQueue *)malloc(sizeof(LQueue));
p=(stacknode *)malloc(sizeof(stacknode));
p-next=NULL;
Q-front=Q-rear=p;
return Q;
}
//候車區(qū)隊列入隊
LQueue *wait(LQueue *q,stacknode *s)
{
s-next=NULL;
q-rear-next=s;
q-rear=s;
return q;
}
//判斷候車便道有無車輛等待
int EmptyLQue(LQueue *q)
{
if(q-front==q-rear)
return 0;
else
return 1;
}
//候車區(qū)車輛出隊
stacknode *out(LQueue *q)
{
stacknode *p;
p=q-front-next;
if(q-front-next==q-rear)
{
q-rear=q-front;
return p;
}
else
q-front-next=p-next;
p-next=NULL;
return p;
}
//候車隊列進入停車場
stacknode *LQinto(stacknode *p,stacknode *top1)
{
p-next=top1;
top1=p;
return top1;
}
//顯示停車場內所有車輛信息
void show(stacknode *top1)
{
printf(" 停車場內全部車輛信息表\n");
if(top1==NULL)
printf(" 停車場內無車!\n");
else
{
printf("車牌號 進入時間 位置\n");
while(top1!=NULL)
{
printf(" %s %d號%d點%d分 第%d位\n",top1-data.num,top1-data.time.day,top1-data.time.hour,top1-data.time.min,top1-data.n);
top1=top1-next;
}
}
}
//顯示候車區(qū)的汽車信息
void T_shou(LQueue *Q)
{
LQueue *q;
q=(LQueue *)malloc(sizeof(LQueue));
q-rear=Q-rear-next;
printf(" 候車區(qū)信息\n");
if(q-front==q-rear)
printf("候車區(qū)沒有車輛!\n");
else
{
printf("車牌號 進入時間\n");
while(q!=NULL)
{
printf("%s %d號%d點%d分",q-data.num,q-data.time.day,q-data.time.hour,q-data.time.min);
q-rear=q-rear-next;
}
}
}
/*時間函數(shù)
int timef()
{
int x,y;
time_t rawtime;
struct tm *timeinfo;
time(rawtime);
timeinfo=localtime(rawtime);
x=timeinfo-tm_mday,y=timeinfo-tm_hour;
}
time_t rawtime;
struct tm *timeinfo;
time(rawtime);
timeinfo=locoltime(rawtime);
timeinfo-tm_ymday,*/
文章題目:停車場計時收費函數(shù)c語言 c語言停車場收費系統(tǒng)管理
文章URL:http://chinadenli.net/article34/ddgcgpe.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、標簽優(yōu)化、網頁設計公司、微信小程序、ChatGPT、電子商務
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)