编写出交通罚单管理系统程序代码,包含输入,删改,浏览,查询,统计因何种原因而被处罚罚单等功能。
2条回答 默认 最新
- piaoyiren 2022-02-17 14:19关注
/* 15、交通处罚单管理系统 功能要求: 1)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。 2)、输入功能:录入罚单信息,最终存入指定文件。 3)、删除功能:删除符合条件的罚单。 4)、查询功能:按车牌号、驾驶证号、开单交警等查询罚单信息。 5)、统计功能:统计某时间段内的符合某条件的罚单记录。 6)、保存功能:把当前的操作结果保存到文件中。 罚单信息应至少包括以下数据:罚单编号、车牌号、驾驶证号、经办交警号、时间、处罚金额等。 */ #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> #include<windows.h> struct FD { char id[10]; //罚单编号 char carID[10]; //车牌号 char driveID[15]; //驾驶证号 char policeID[10]; //经办交警号 time_t lt1; //时间 float je;//处罚金额 }; struct NODE { struct FD fd; struct NODE *next; }; //格式字符串 char inputStr[]="%s%s%s%s%f",outStr[]="罚单号\t车牌号\t驾驶证\t交警号\t时间\t\t金额"; struct NODE *head; int init() { struct NODE *p,*q; struct FD fTmp; FILE *fp; p=head=(struct NODE *)malloc(sizeof(struct NODE)); p->next=NULL; //读数据并构建链表 fp=fopen("c:\\fd.dat","rb"); if(fp==NULL) return 0; while(!feof(fp)) { q=(struct NODE *)malloc(sizeof(struct NODE)); fread(&fTmp,sizeof(struct FD),1,fp); q->fd= fTmp; q->next=NULL; p->next=q; p=p->next; } fclose(fp); return 1; } void addNode(struct FD tTmp) //在链表尾添加一节点,同时写入文件 { FILE *fp; struct NODE *p=head->next,*q; q=head; while(p) { q=p; p=p->next; } p=(struct NODE *)malloc(sizeof(struct NODE)); p->fd=tTmp; p->next=NULL; q->next=p; //写入文件 fp=fopen("c:\\fd.dat","ab+"); //fseek(fp,0L,SEEK_END); fwrite(&tTmp,sizeof(struct FD),1,fp); fclose(fp); } struct FD inputData() { struct FD fd={"",0}; puts("请按以下格式输入数据,用空格隔开:\n"); puts(outStr); scanf(inputStr,&fd.id,&fd.carID,&fd.driveID ,&fd.policeID,&fd.je); time_t lt1; time( <1 ); fd.lt1=lt1; return fd; } void showLink() { struct NODE *p=head->next; struct tm *newtime; char tmpbuf[20]; while(p) { newtime=localtime(&p->fd.lt1); strftime( tmpbuf, 20, "%Y-%m-%d", newtime); printf("%s\t%s\t%s\t%s\t%s\t%.1f\n",p->fd.id,p->fd.carID,p->fd.driveID,p->fd.policeID,tmpbuf,p->fd.je); p=p->next; } } void deleteNode(int index,char *s) //0罚单编号 1车牌号 2驾驶证号 { struct NODE *p,*q; int flag=0; p=head->next; q=head; while(p) { if( strcmp( index==0?p->fd.id:(index==1?p->fd.carID:p->fd.driveID) ,s)==0) { flag=1; p=p->next; q->next=p; printf("删除成功!\n"); break; } q=q->next; p=p->next; } if(flag==0) printf("没有找到相关数据!\n"); } void searchNode(int index,char *s) //0罚单编号 1车牌号 2驾驶证号 { struct NODE *p=head->next; struct tm *newtime; char tmpbuf[20]; int flag=0; while(p) { if( strcmp( index==0?p->fd.id:(index==1?p->fd.carID:p->fd.driveID) ,s)==0) { flag=1; newtime=localtime(&p->fd.lt1); strftime( tmpbuf, 20, "%Y-%m-%d", newtime); printf("%s\t%s\t%s\t%s\t%s\t%.1f\n",p->fd.id,p->fd.carID,p->fd.driveID,p->fd.policeID,tmpbuf,p->fd.je); //break; } p=p->next; } if(flag==0) printf("没有找到相关数据!\n"); } void count(char *start,char *end)//统计功能 { struct NODE *p=head->next; struct tm *newtime; char tmpbuf[20]; while(p) { newtime=localtime(&p->fd.lt1); strftime( tmpbuf, 20, "%Y-%m-%d", newtime); //printf("Here:%d\n",strcmp(start,p->tmpbuf)); if( strcmp(start,tmpbuf)<0 && strcmp(end,tmpbuf)>0 ) { printf("%s\t%s\t%s\t%s\t%s\t%.1f\n",p->fd.id,p->fd.carID,p->fd.driveID,p->fd.policeID,tmpbuf,p->fd.je); //break; } p=p->next; } } void saveData() { struct NODE *p=head->next; FILE *fp; //读数据并构建链表 fp=fopen("c:\\fd.dat","wb"); while(p) { fwrite(&p->fd,sizeof(struct FD),1,fp); p=p->next; } fclose(fp); } void menu() { init(); char txt[80],c,st[20],et[20]; while(1) { system("cls"); puts("\n★★★★★★★★★★★罚单管理系统★★★★★★★★★★★\n"); puts("\t1、显示"); puts("\t2、输入"); puts("\t---查询---"); puts("\t\t3、按罚单号查询"); puts("\t\t4、按车牌号查询"); puts("\t\t5、按驾驶证查询"); puts("\t---删除--- "); puts("\t\t6、按罚单号删除"); puts("\t\t7、按车牌号删除"); puts("\t\t8、按驾驶证删除"); puts("\t\ts、保存"); puts("\t9、统计"); puts("\t0、退出"); c=getchar(); switch(c) { case '1':showLink(); system("pause"); system("cls"); break; case '2':addNode(inputData());break; //case '3': /* index=-1; strcpy(txt,""); puts("请输入查询项目(0:罚单号 1:车牌号 2:驾驶证号)与查询内容,用逗号隔开:"); scanf("%d %s",&index,txt); if(index==-1 || strcmp(txt,"")==0) break; searchNode(index,txt); break; */ case '3': strcpy(txt,""); puts("请输入罚单号:"); scanf("%s",txt); if(strcmp(txt,"")==0) break; searchNode(0,txt); system("pause"); break; case '4': strcpy(txt,""); puts("请输入车牌号:"); scanf("%s",txt); if(strcmp(txt,"")==0) break; searchNode(1,txt); system("pause"); break; case '5': strcpy(txt,""); puts("请输入驾驶证号:"); scanf("%s",txt); if(strcmp(txt,"")==0) break; searchNode(2,txt); system("pause"); break; case '6': strcpy(txt,""); puts("请输入罚单号:"); scanf("%s",txt); if(strcmp(txt,"")==0) break; deleteNode(0,txt); system("pause"); break; case '7': strcpy(txt,""); puts("请输入车牌号:"); scanf("%s",txt); if(strcmp(txt,"")==0) break; deleteNode(1,txt); system("pause"); break; case '8': strcpy(txt,""); puts("请输入驾驶证号:"); scanf("%s",txt); if(strcmp(txt,"")==0) break; deleteNode(2,txt); system("pause"); break; case '9': //统计 st[0]=et[0]=0; puts("请输入起止日期:(例2011-09-01 2012-04-15)"); scanf("%s %s",st,et); if(st[0]==0 || et[0]==0) break; count(st,et); system("pause"); break; case 's': puts("保存数据会覆盖原文件数据,是否继续(y/n)?"); c=getchar(); c=getchar(); if(c=='y' || c=='Y') { saveData(); printf("数据保存完成!\n"); } system("pause"); break; case '0': exit(0); break; } } } int main() { menu(); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 1
悬赏问题
- ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
- ¥20 怎么用dlib库的算法识别小麦病虫害
- ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
- ¥15 java写代码遇到问题,求帮助
- ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
- ¥15 有了解d3和topogram.js库的吗?有偿请教
- ¥100 任意维数的K均值聚类
- ¥15 stamps做sbas-insar,时序沉降图怎么画
- ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
- ¥15 关于#Java#的问题,如何解决?