汽车行驶记录仪C语言编程.docx
- 文档编号:12579428
- 上传时间:2023-04-20
- 格式:DOCX
- 页数:15
- 大小:17.56KB
汽车行驶记录仪C语言编程.docx
《汽车行驶记录仪C语言编程.docx》由会员分享,可在线阅读,更多相关《汽车行驶记录仪C语言编程.docx(15页珍藏版)》请在冰豆网上搜索。
汽车行驶记录仪C语言编程
汽车黑匣子项目说明
1.汽车黑匣子简介
汽车黑匣子,又称汽车工作信息记录仪,汽车安全信息记录仪,也有人将其形象地称为汽车电子警察。
它能够完整、准确地记录汽车行驶状态下的有关情况,并通过专用软件在电脑上再现。
本项目只是实现的是它的软件部分。
2.项目要求
1.记录汽车运行时的日期,时间和速度;
2.经可能的多存一些信息:
使用位段;
3.每满10次(可根据用户要求更改)记录向文件中存一次;
4.文件大小只有1.2K(可根据用户要求更改);
3.分析建模
本次项目主要的关键点有不断的采集数据直到汽车停止,将采集到了数据存入到一个大小固定的文件中(此文件大小可以根据用户要求改变),将文件里的数据读出查看汽车行驶时采集到的数据。
3.1采集数据集存储
通过调用time和localtime函数来采集日期和时间,(由于目前没有采集速度的设备所以速度采用手动从键盘输入);
程序如下;
voidinput(PPERnew)
{
intn=0;
printf("请输入卡车行驶的速度\n");
scanf("%d",&n);
time_ttimep;
structtm*p;
time(&timep);
p=localtime(&timep);
new->year=(1900+p->tm_year);
new->mouth=(1+p->tm_mon);
new->day=p->tm_mday;
new->hour=p->tm_hour;
new->fen=p->tm_min;
new->second=p->tm_sec;
new->speed=n;
new->next=NULL;
}
由于每条数据有比较多的信息所以我们定义一个结构体来存储采集到的每条数据,数据采用位段存储省空间;
程序如下:
typedefstructcar
{
unsignedintyear:
12;
unsignedintmouth:
4;
unsignedintday:
5;
unsignedinthour:
5;
unsignedintfen:
6;
unsignedintsecond:
6;
unsignedintspeed:
9;
structcar*next;
}PER,*PPER;
由于存储的数据条数比较多且条数不固定所以采用链表将这些结构体链接起来,来的数据往链表末尾一挂
程序如下:
PPERaddlink(PPERhead)
{
inti=0;
PPERps=head;
while
(1)
{
PPERnew=calloc(1,sizeof(PER));
input(new);
if(NULL==head)
{
head=new;
ps=head;
i++;
}
else
{
head->next=new;
if(0==new->speed)
returnps;
head=head->next;
i++;
}
if(i>=N)
returnps;
}
}
3.2将数据存入文件中
每一次存储数据在文件的位置都要从上一次结束的位置开始,我们定义一个变量n来记录每次文件存储结束的位置,并存入文件的开头,第二次要存储数据的时候先读取n的数据就知道上一次存在哪里,然后接着往后面存;
文件的大小我们宏定义一个FILEMAX来控制每一次剩余文件的大小不能存储一条数据时将文件跳到n后面开始存储
程序如下:
voidinputfile(PPERhead)
{
intn=sizeof(int);
FILE*fp=fopen("xiangmu.txt","r+");
if(NULL==fp)
{
fp=fopen("xiangmu.txt","w");
fwrite(&n,sizeof(int),1,fp);
}
else
{
fread(&n,sizeof(int),1,fp);
fseek(fp,n,SEEK_SET);
}
while
(1)
{
if(NULL==head)
break;
if((FILEMAX-ftell(fp))>sizeof(PER))
{
fwrite(head,sizeof(PER),1,fp);
head=head->next;
}
else
fseek(fp,sizeof(int),SEEK_SET);
}
n=ftell(fp);
rewind(fp);
fwrite(&n,sizeof(int),1,fp);
fclose(fp);
}
3.3显示文件
由于文件是以二进制代码方式存储,人类无法直接查看所以要先将文件的内容调入PC机内存中显示在显示器上才好查看,
文件到内存放在链表中存储
程序如下:
PPERoutputfile(PPERhead)
{
FILE*fp=fopen("xiangmu.txt","r");
if(NULL==fp)
{
printf("文件打开失败\n");
returnNULL;
}
fseek(fp,sizeof(int),SEEK_SET);
while
(1)
{
PPERnew=calloc(1,sizeof(PER));
fread(new,sizeof(PER),1,fp);
new->next=NULL;
if(0!
=feof(fp))
break;
head=addlink1(head,new);
}
fclose(fp);
returnhead;
}
PPERoutput(PPERhead)
{
PPERps=head;
if(NULL==head)
returnhead;
while
(1)
{
show(ps);
ps=ps->next;
if(NULL==ps)
returnhead;
}
}
4.画流程图
由于时间有限在此就不画电子版的流程图;
5.编写程序
程序附带在同一个文件夹里,再此就不做编写
6.显示程序运行结果
主菜单页
请输入功能号
0--退出
1--将采集来的数据输入链表中
2--显示链表
3--将链表里的数据存入文件中
4--释放链表
5--把文件里面的数据导入链表中
6--求最大速度
7—求平均速度
显示文件记录的所有数据
时间2015年8月5日9时36分48秒
speed93km/h
时间2015年8月5日9时36分49秒
speed94km/h
时间2015年8月5日9时36分50秒
speed95km/h
时间2015年8月5日9时36分50秒
speed96km/h
时间2015年8月5日9时36分52秒
speed97km/h
时间2015年8月5日9时36分53秒
speed98km/h
时间2015年8月5日9时36分54秒
speed99km/h
时间2015年8月5日9时36分56秒
speed100km/h
时间2015年8月5日9时37分1秒
speed101km/h
时间2015年8月5日9时37分22秒
speed102km/h
时间2015年8月5日9时37分24秒
speed103km/h
时间2015年8月5日9时37分25秒
speed104km/h
时间2015年8月5日9时37分27秒
speed105km/h
时间2015年8月5日9时37分28秒
speed106km/h
时间2015年8月5日9时37分29秒
speed107km/h
时间2015年8月5日9时37分31秒
speed108km/h
时间2015年8月5日9时37分33秒
speed109km/h
时间2015年8月5日9时37分36秒
speed110km/h
时间2015年8月5日9时37分38秒
speed111km/h
时间2015年8月5日9时32分15秒
speed12km/h
时间2015年8月5日9时32分17秒
speed13km/h
时间2015年8月5日9时32分18秒
speed14km/h
时间2015年8月5日9时32分19秒
speed15km/h
时间2015年8月5日9时32分20秒
speed16km/h
时间2015年8月5日9时32分21秒
speed17km/h
时间2015年8月5日9时32分22秒
speed18km/h
时间2015年8月5日9时32分23秒
speed19km/h
时间2015年8月5日9时32分25秒
speed20km/h
时间2015年8月5日9时32分27秒
speed21km/h
时间2015年8月5日9时32分57秒
speed22km/h
时间2015年8月5日9时32分58秒
speed23km/h
时间2015年8月5日9时32分59秒
speed24km/h
时间2015年8月5日9时33分0秒
speed25km/h
时间2015年8月5日9时33分1秒
speed26km/h
时间2015年8月5日9时33分2秒
speed27km/h
时间2015年8月5日9时33分3秒
speed28km/h
时间2015年8月5日9时33分4秒
speed29km/h
时间2015年8月5日9时33分6秒
speed30km/h
时间2015年8月5日9时33分7秒
speed31km/h
时间2015年8月5日9时33分26秒
speed32km/h
时间2015年8月5日9时33分28秒
speed33km/h
时间2015年8月5日9时33分29秒
speed34km/h
时间2015年8月5日9时33分30秒
speed35km/h
时间2015年8月5日9时33分31秒
speed36km/h
时间2015年8月5日9时33分32秒
speed37km/h
时间2015年8月5日9时33分34秒
speed38km/h
时间2015年8月5日9时33分35秒
speed39km/h
时间2015年8月5日9时33分37秒
speed40km/h
时间2015年8月5日9时33分39秒
speed41km/h
时间2015年8月5日9时34分2秒
speed42km/h
时间2015年8月5日9时34分3秒
speed43km/h
时间2015年8月5日9时34分4秒
speed44km/h
时间2015年8月5日9时34分6秒
speed45km/h
时间2015年8月5日9时34分7秒
speed46km/h
时间2015年8月5日9时34分8秒
speed47km/h
时间2015年8月5日9时34分9秒
speed48km/h
时间2015年8月5日9时34分10秒
speed49km/h
时间2015年8月5日9时34分12秒
speed50km/h
时间2015年8月5日9时34分13秒
speed51km/h
时间2015年8月5日9时34分47秒
speed52km/h
时间2015年8月5日9时34分48秒
speed53km/h
时间2015年8月5日9时34分50秒
speed54km/h
时间2015年8月5日9时34分51秒
speed55km/h
时间2015年8月5日9时34分52秒
speed56km/h
时间2015年8月5日9时34分53秒
speed57km/h
时间2015年8月5日9时34分54秒
speed58km/h
时间2015年8月5日9时34分56秒
speed59km/h
时间2015年8月5日9时34分57秒
speed60km/h
时间2015年8月5日9时34分58秒
speed61km/h
时间2015年8月5日9时35分14秒
speed62km/h
时间2015年8月5日9时35分15秒
speed63km/h
时间2015年8月5日9时35分16秒
speed64km/h
时间2015年8月5日9时35分17秒
speed65km/h
时间2015年8月5日9时35分18秒
speed66km/h
时间2015年8月5日9时35分19秒
speed67km/h
时间2015年8月5日9时35分20秒
speed68km/h
时间2015年8月5日9时35分21秒
speed69km/h
时间2015年8月5日9时35分23秒
speed70km/h
时间2015年8月5日9时35分24秒
speed71km/h
时间2015年8月5日9时35分38秒
speed72km/h
时间2015年8月5日9时35分40秒
speed73km/h
时间2015年8月5日9时35分41秒
speed74km/h
时间2015年8月5日9时35分42秒
speed75km/h
时间2015年8月5日9时35分43秒
speed76km/h
时间2015年8月5日9时35分45秒
speed77km/h
时间2015年8月5日9时35分46秒
speed78km/h
时间2015年8月5日9时35分47秒
speed79km/h
时间2015年8月5日9时35分48秒
speed80km/h
时间2015年8月5日9时35分49秒
speed81km/h
时间2015年8月5日9时36分14秒
speed82km/h
时间2015年8月5日9时36分15秒
speed83km/h
时间2015年8月5日9时36分16秒
speed84km/h
时间2015年8月5日9时36分18秒
speed85km/h
时间2015年8月5日9时36分19秒
speed86km/h
时间2015年8月5日9时36分20秒
speed87km/h
时间2015年8月5日9时36分21秒
speed88km/h
时间2015年8月5日9时36分22秒
speed89km/h
时间2015年8月5日9时36分23秒
speed90km/h
时间2015年8月5日9时36分24秒
speed91km/h
时间2015年8月5日9时36分47秒
speed92km/h
显示文件记录所有数据的最高速度和平均速度
记录中速度最快为111km/h时间为2015年8月5日9时37分38秒
sum=6150.00文件的记录有100条
average=61.50km/h
7.总结
通过本次项目锻炼了自我解决问题的能力,加强了所学各个知识点的衔接,为以后的工作打下了坚实的基础。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汽车 行驶 记录仪 语言 编程