2023年12月14日发(作者:奔驰b200多少钱)

实验一 车辆违章管理系统

一、系统功能模块结构图

本系统主要具备以下三个功能

1.车辆及违章信息的录入。

2.基于车牌号查询每台车辆的违章情况。

3.基于车牌号统计每台车辆的罚款总金额。

车辆违章管理系统

车辆及违章信息的录入

基于车牌号查询每台车辆的违章情况。

基于车牌号统计每台车辆的罚款总金额。

二、数据结构设计及用法说明

需处理的车辆及违章基本信息包括:车牌号、车主姓名、违章停车次数、闯红灯次数、超速次数。这些信息采用结构体数据类型表示更为方便,因为违章信息数量的不确定性,所以信息应采用链表进行存储,这更符合实际应用

所以采用的数据结构如下

typedef struct Pe

{

char vno[8];

int times1;

int times2;

int times3;

/*车牌号*/

/*违章停车次数*/

/*闯红灯次数*/

/*超速次数*/

char name[15]; /*车主姓名*/

struct Pe *next /*结构体指针*/

}PECCANCY;

其中char vno[8] 用来存储车牌号, char name[15]存储车主姓名int times1记录违章停车次数,int times2记录闯红灯次数,int times3记录超速次数,struct Pe

*next为结构体指针,用于链表链接。

三、程序结构

开始

Switch中的表达式caidan

功能一 功能二 功能三

输入车牌号 输入车牌号 输入车牌号

N

存在

Y

N

Y

存在

N

存在

Y

输出不存在 输出违章信息

创建链表

违章停车

switch

闯红灯

次数+1

超速

次数+1

输出不存在 输出罚款金额

次数+1

四、各模块的功能

本程序一共具有3个功能。因此,一共将程序分为3个模块。

模块一是车辆及违章信息的录入。

具体流程为: 根据输入的车牌号判断原有的链表是否存在这个车牌号。如果存在,则要输入这个车牌号所违章的项目,并在相应的违章记录次数上+1.如果原链表不存在这个车牌号,则需要创建新的节点,并提示输入完整的信息。最后将这个节点用尾插法插入链表中。

模块二、基于车牌号查询违章记录

具体流程为:根据输入的车牌号判断链表中是否存在这个车牌号。如果存在,将这个节点的所有信息输出。如果不存在,则输出不存在。

模块三、根据车牌号统计每辆车的罚款总金额

具体流程为:根据输入的车牌号判断链表中是否存在这个车牌号。如果存在,将这个节点的罚款输出。如果不存在,则输出不存在。

int LocateElem(PECCANCY *L,char a[]) 是元素查找函数,其中PECCANCY *L传递头指针,,char a[])传递车牌号

五、实验结果

运行程序。打印菜单项。输入1,提示输入车牌号.输入12345678.。程序提示不存在这个信息,要求输入违章项目,输入1.违章次数+1.返回主菜单。

输入1,输入车牌号12345678.要求输入违章项目。输入2。闯红灯次数+1.返回主菜单。

输入1.输入车牌号。45612378. 程序提示不存在这个信息,要求输入违章项目,输入1.违章次数+1.返回主菜单。

输入2.输入车牌号78945612.程序提示不存在这个信息。返回主菜单。

输入2.输入车牌号12345678.程序输出该车违章信息。其中违章停车一次,闯红灯一次,超速0次。返回主菜单。

输入3. 输入车牌号78945612.程序提示不存在这个信息。返回主菜单。

输入3.输入车牌号12345678.输出罚款300.

六、体会

链表只是接触是在学习算法与数据结构课程中,虽然已经掌握基本语法,但第一次用链表的时候感觉力不从心。编写程序速度较慢。同时,c语言很久没有使用,感觉比较生疏,很多基本的语句都会出错。

完成这个实验让我明白,只有不断地编写程序才能提高自己,才能是自己更快的找到完成程序的算法。同时,第一的实验也为第二个实验开了个好头。

附录:程序清单

#include

#include

#include

typedef struct Pe /*建立结构体*/

{

char vno[8];

char name[15];

int times1;

int times2;

int times3;

/*车牌号*/

/*车主姓名*/

/*违章停车次数*/

/*闯红灯次数*/

/*超速次数*/

struct Pe *next; /*指针节点*/

}PECCANCY;

int LocateElem(PECCANCY *L,char a[])/*元素查找函数*/

void main()

{ int caidan; /*关于菜单项的变量*/

int i,j,k,money;

char names[15],carnumber[9];

PECCANCY *head,*r,*s,*q; /*建立链表结点*/

head=(PECCANCY*)malloc(sizeof(PECCANCY));

{

PECCANCY *p=L->next;

int n=1;

while(p!=NULL&&strcmp(a,p->vno)!=0)

{p=p->next;

}

if(p==NULL)

else

}

return(n);

return(0);

n++;

r=(PECCANCY*)malloc(sizeof(PECCANCY));

r=head; /*r始终指向尾节点*/

head->next=NULL;

for(;;)

{

printf(\"请输入您要查询的功能 n1.车辆及违章信息的录入。n2.基于车牌号查询每台车辆的违章情况。n3.基于车牌号统计每台车辆的罚款总金额。n\");/*菜单项*/

scanf(\"%d\",&caidan) ;

switch(caidan)

{

case 1: /*第一种服务*/

printf(\"请输入违章车辆的车牌号\");/*输入违章车辆车牌号*/

scanf(\"%s\",carnumber);

k=LocateElem(head,carnumber);

if(k==0)

{

s=(PECCANCY*)malloc(sizeof(PECCANCY));/*创建新节点*/

strcpy(s->vno,carnumber);

s->times1=0;

s->times2=0;

s->times3=0;

printf(\"原纪录不存n\");

/*scanf(\"%s\",names);

strcpy(s->name,names);*/

printf(\"请输入违章人所违反项目n 1.违章停车n2.闯红灯n3.超速n\");

scanf(\"%d\",&j);

switch(j)

{

case 1:s->times1++; break;

case 2:s->times2++;break;

case 3:s->times3++;break;

}

printf(\"已将违章情况记录下来n\");

r->next=s; /*尾插法*/

}

else

{ q=(PECCANCY*)malloc(sizeof(PECCANCY));

q=head;

for(i=0;i

r=s;

r->next=NULL;

q=q->next;

printf(\"请输入违章人所违反项目n 1.违章停车n2.闯红灯n3.超速n\");

scanf(\"%d\",&j);

switch(j)

{

case 1:q->times1++;break;

case 2:q->times2++;break;

case 3:q->times3++;break;

}

}

break;

case 2: /*第二种服务*/

printf(\"请输入车牌号\");

scanf(\"%s\",carnumber);

k=LocateElem(head,carnumber);

if(k==0)

{printf(\"无此车牌号记录\");

continue;

}

else{

q=(PECCANCY*)malloc(sizeof(PECCANCY));

q=head;

for(i=0;i

q=q->next; printf(\"请输入需要查询违章人所违反项目n 1.违章停车n2.闯红灯n3.超速n\");

scanf(\"%d\",&j);

switch(j)

{

case 1:printf(\"违章停车次数为:%dn\",q->times1); break;

case 2:printf(\"闯红灯次数为:%dn\",q->times2);break;

case 3:printf(\"违章停车次数为:%dn\",q->times3);break;

}

}break;

case 3: /*第三种服务*/

printf(\"请输入车牌号\");

scanf(\"%s\",carnumber);

k=LocateElem(head,carnumber);

if(k==0)

{printf(\"无此车牌号记录\");}

else{

q=(PECCANCY*)malloc(sizeof(PECCANCY));

q=head;

for(i=0;i

{

q=q->next;}

money=q->times1*100+q->times2*200+q->times3*500;

}

printf(\"%d\",money);

}}

}

更多推荐

输入,车牌号,违章,信息