实验一 车辆违章管理系统
一、系统功能模块结构图
本系统主要具备以下三个功能
1.车辆及违章信息录入。
2.基于车牌号查询每台车辆的违章情况
3.基于车牌号统计每台车辆的总金额
二、数据结构设计及用法说明
需处理的车辆及违章基本信息包括车牌号车主姓名、违章停车次数闯红灯次数超速次数这些信息采用结构体数据类型表示更为方便,因为违章信息数量的不确定性,所以信息应采用链表进行存储,这更符合实际应用
所以采用的数据结构如下
typedef struct Pe
{
        char vno[8];        /*车牌号*/
        char name[15];     /*车主姓名*/
        int times1;        /*违章停车次数*/
        int times2;        /*闯红灯次数*/
        int times3;        /*超速次数*/
      struct Pe *next  /*结构体指针*/
}PECCANCY;
其中char vno[8] 用来存储车牌号,    char name[15]存储车主姓名int times1记录违章停车次数,int times2记录闯红灯次数,int times3记录超速次数,struct Pe *next为结构体指针,用于链表链接。
三、程序结构
                   
四、各模块的功能
本程序一共具有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<stdio.h>
#include<stdlib.h>
#include<string.h>
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[])/*元素查函数*/
    {
    PECCANCY *p=L->next;
    int n=1;
    while(p!=NULL&&strcmp(a,p->vno)!=0)
    {p=p->next;
        n++;
    }
    if(p==NULL)
        return(0);
    else
        return(n);
    }
void main()
{  int caidan;          /*关于菜单项的变量*/
  int i,j,k,money;
  char names[15],carnumber[9];
    PECCANCY *head,*r,*s,*q;  /*建立链表结点*/
    head=(PECCANCY*)malloc(sizeof(PECCANCY));
    r=(PECCANCY*)malloc(sizeof(PECCANCY));
    r=head;  /*r始终指向尾节点*/
    head->next=NULL
                                                                                                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                for(;;)