如何在C语言中实现计时
老师让做一个网吧上机管理收费系统,计时方面不会弄,谁能帮帮我???再给我说一下这个程序的具体框架!!需要实现1个小时2元钱的收费标准,小于半小时的收一元,5分钟以内不收费...
老师让做一个网吧上机管理收费系统,计时方面不会弄,谁能帮帮我???
再给我说一下这个程序的具体框架!!
需要实现1个小时2元钱的收费标准,小于半小时的收一元,5分钟以内不收费,晚上10点到转天的早上7点为通宵,收费8元!(注意每月的最后一天)
等待中如何计时???
我的意思是象电子表一样,时间在走动 展开
再给我说一下这个程序的具体框架!!
需要实现1个小时2元钱的收费标准,小于半小时的收一元,5分钟以内不收费,晚上10点到转天的早上7点为通宵,收费8元!(注意每月的最后一天)
等待中如何计时???
我的意思是象电子表一样,时间在走动 展开
5个回答
展开全部
以前做那个停车场管理系统的时候, 也是需要计时,因为要收费.. 好像就这么记得. 每个上机的人,应该有一个结构体,在结构体里设个计时的变量,可以是个只有两个元素的数组.当然这样会很不方便了.(因为需要你自己输入上机时间,和下机时间,并保存在变量里.)
.... ANSIC里有一个time函数,在time.h头文件里. 这个函数,传递一个参数,返回的是系统时间(单位我不清楚),返回的系统时间保存在你传递的参数里... 你可以试试这个. 貌似这个可能就有点麻烦了. 因为需要测试程序... 你不可能等个1,2个小时,再看看输出结果是不是对的...测试的时候,乘个数放大一下应该就可以了..
也就是说,你设一个结构体,里面有一个记录时间的数组time[2],数组只含两个元素, 这两个元素的值,由time函数来获得.(这里获得的是系统时间).
.这个结构体里应该还含有的其他元素,应该要包括,电脑标号ID(每个电脑对应一个号码),和一个bool型变量status,来标识是该电脑的状态,已有人上机或者处于空闲状态.
status为true(有人使用该机器)时,把系统时间付给time[0],
该机器的status变为false(有人下机)后,在把一个系统时间付给time[1].计算时间差和收费额.
.. 那些一个小时,半个小时,等等,不同时间的不同收费标准,一般用if,什么的来搞定.
.... ANSIC里有一个time函数,在time.h头文件里. 这个函数,传递一个参数,返回的是系统时间(单位我不清楚),返回的系统时间保存在你传递的参数里... 你可以试试这个. 貌似这个可能就有点麻烦了. 因为需要测试程序... 你不可能等个1,2个小时,再看看输出结果是不是对的...测试的时候,乘个数放大一下应该就可以了..
也就是说,你设一个结构体,里面有一个记录时间的数组time[2],数组只含两个元素, 这两个元素的值,由time函数来获得.(这里获得的是系统时间).
.这个结构体里应该还含有的其他元素,应该要包括,电脑标号ID(每个电脑对应一个号码),和一个bool型变量status,来标识是该电脑的状态,已有人上机或者处于空闲状态.
status为true(有人使用该机器)时,把系统时间付给time[0],
该机器的status变为false(有人下机)后,在把一个系统时间付给time[1].计算时间差和收费额.
.. 那些一个小时,半个小时,等等,不同时间的不同收费标准,一般用if,什么的来搞定.
展开全部
C语言中实现精确计时,参考代码如下:
ANSIC: ftime()
struct timeb {
time_t time;
unsigned short millitm;
short timezone;
short dstflag;
};
另外,还有就是更精确定计时,需要CPU的支持,具体情况,可以参考MSDN。
LARGE_INTEGER frequency = {0};
LARGE_INTEGER now = {0};
LARGE_INTEGER end = {0};
QueryPerformanceFrequency(&frequency);
while (QueryPerformanceCounter(&now) && ((now.QuadPart - end.QuadPart) < 0))
{
Sleep(0);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用<time.h>头文件;
函数time(0)返回历史上某一时刻到现在的秒数;
可先把它赋给一个整型值,如下:
int a = time(0);
int b;
//...
for(;time(0)-a>b;);//这个循环会执行b 秒
//...
函数time(0)返回历史上某一时刻到现在的秒数;
可先把它赋给一个整型值,如下:
int a = time(0);
int b;
//...
for(;time(0)-a>b;);//这个循环会执行b 秒
//...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
时间用 time (&t_start)取得
时间差用difftime()计算,单位是秒。
因为你不会结构,字符串时间 用 ctime 取得
strcpy 到 字符串里
字符串 格式:Fri Mar 07 11:50:49 2008
用
sscanf(shijian,"%*s %s %s %2d:%2d:%2d ",&YUE[0],&RI[0],&hh,&&mm,&ss);
获 月 日 时 分 秒
其它条件判断,加减乘除,你应当会了。
#include <time.h>
time_t t_start, t_end;
double dif;
char shijian[20];
char YUE[4],RI[3];
int hh,mm,ss;
// 如果用户开始使用,取开始时间
time (&t_start);
strcpy(shijian,ctime(&t_start));
printf("%s\n",shijian);
sscanf(shijian,"%*s %s %s %2d:%2d:%2d ",&YUE[0],&RI[0],&hh,&mm,&ss);
printf("%s %s %d %d %d\n",YUE,RI,hh,mm,ss);
// 判断是否月底,是否晚上
///等待
// 如果用户使用完毕,取结束时间
time (&t_end);
// 计算时间差 以秒计
dif = difftime (t_end,t_start);
// 算费
时间差用difftime()计算,单位是秒。
因为你不会结构,字符串时间 用 ctime 取得
strcpy 到 字符串里
字符串 格式:Fri Mar 07 11:50:49 2008
用
sscanf(shijian,"%*s %s %s %2d:%2d:%2d ",&YUE[0],&RI[0],&hh,&&mm,&ss);
获 月 日 时 分 秒
其它条件判断,加减乘除,你应当会了。
#include <time.h>
time_t t_start, t_end;
double dif;
char shijian[20];
char YUE[4],RI[3];
int hh,mm,ss;
// 如果用户开始使用,取开始时间
time (&t_start);
strcpy(shijian,ctime(&t_start));
printf("%s\n",shijian);
sscanf(shijian,"%*s %s %s %2d:%2d:%2d ",&YUE[0],&RI[0],&hh,&mm,&ss);
printf("%s %s %d %d %d\n",YUE,RI,hh,mm,ss);
// 判断是否月底,是否晚上
///等待
// 如果用户使用完毕,取结束时间
time (&t_end);
// 计算时间差 以秒计
dif = difftime (t_end,t_start);
// 算费
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2008-03-08
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询