如何在C语言中实现计时

老师让做一个网吧上机管理收费系统,计时方面不会弄,谁能帮帮我???再给我说一下这个程序的具体框架!!需要实现1个小时2元钱的收费标准,小于半小时的收一元,5分钟以内不收费... 老师让做一个网吧上机管理收费系统,计时方面不会弄,谁能帮帮我???
再给我说一下这个程序的具体框架!!

需要实现1个小时2元钱的收费标准,小于半小时的收一元,5分钟以内不收费,晚上10点到转天的早上7点为通宵,收费8元!(注意每月的最后一天)
等待中如何计时???
我的意思是象电子表一样,时间在走动
展开
 我来答
0鞋子0
推荐于2016-03-23 · TA获得超过105个赞
知道答主
回答量:141
采纳率:0%
帮助的人:0
展开全部
以前做那个停车场管理系统的时候, 也是需要计时,因为要收费.. 好像就这么记得. 每个上机的人,应该有一个结构体,在结构体里设个计时的变量,可以是个只有两个元素的数组.当然这样会很不方便了.(因为需要你自己输入上机时间,和下机时间,并保存在变量里.)
.... ANSIC里有一个time函数,在time.h头文件里. 这个函数,传递一个参数,返回的是系统时间(单位我不清楚),返回的系统时间保存在你传递的参数里... 你可以试试这个. 貌似这个可能就有点麻烦了. 因为需要测试程序... 你不可能等个1,2个小时,再看看输出结果是不是对的...测试的时候,乘个数放大一下应该就可以了..

也就是说,你设一个结构体,里面有一个记录时间的数组time[2],数组只含两个元素, 这两个元素的值,由time函数来获得.(这里获得的是系统时间).

.这个结构体里应该还含有的其他元素,应该要包括,电脑标号ID(每个电脑对应一个号码),和一个bool型变量status,来标识是该电脑的状态,已有人上机或者处于空闲状态.

status为true(有人使用该机器)时,把系统时间付给time[0],
该机器的status变为false(有人下机)后,在把一个系统时间付给time[1].计算时间差和收费额.

.. 那些一个小时,半个小时,等等,不同时间的不同收费标准,一般用if,什么的来搞定.
一骑当后
推荐于2018-03-30 · 知道合伙人数码行家
一骑当后
知道合伙人数码行家
采纳数:40296 获赞数:306451
网络、设备维护、电路、弱电检测。

向TA提问 私信TA
展开全部

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);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友84cfd92
2008-03-11
知道答主
回答量:32
采纳率:0%
帮助的人:0
展开全部
使用<time.h>头文件;
函数time(0)返回历史上某一时刻到现在的秒数;
可先把它赋给一个整型值,如下:
int a = time(0);
int b;
//...
for(;time(0)-a>b;);//这个循环会执行b 秒
//...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
L_o_o_n_i_e
2008-03-08 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5280万
展开全部
时间用 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);
// 算费
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2008-03-08
展开全部
这里有个桌面计时器:
桌面计时器
参考下
http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=752
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式