C语言程序设计交通处罚单管理系统.docx

上传人:b****5 文档编号:8808134 上传时间:2023-05-15 格式:DOCX 页数:27 大小:328.12KB
下载 相关 举报
C语言程序设计交通处罚单管理系统.docx_第1页
第1页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第2页
第2页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第3页
第3页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第4页
第4页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第5页
第5页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第6页
第6页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第7页
第7页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第8页
第8页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第9页
第9页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第10页
第10页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第11页
第11页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第12页
第12页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第13页
第13页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第14页
第14页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第15页
第15页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第16页
第16页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第17页
第17页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第18页
第18页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第19页
第19页 / 共27页
C语言程序设计交通处罚单管理系统.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言程序设计交通处罚单管理系统.docx

《C语言程序设计交通处罚单管理系统.docx》由会员分享,可在线阅读,更多相关《C语言程序设计交通处罚单管理系统.docx(27页珍藏版)》请在冰点文库上搜索。

C语言程序设计交通处罚单管理系统.docx

C语言程序设计交通处罚单管理系统

C语言设计实习报告

课程名称计算机高级语言课程设计(C)

教师姓名孔春芳

本科生姓名

本科生学号*******

本科生专业电子信息工程

所在院系机械与电子信息学院

类别:

C.本科生

日期:

2013-7-5

课程设计评语

对课程论文的评语:

平时成绩:

课程论文成绩:

总成绩:

评阅人签名:

注:

1、无评阅人签名成绩无效;

2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;

3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。

1.题目要求

【要求】:

交通处罚单涉及到车辆,驾驶员和开单交警的信息,还有交通处罚单的号码,处罚时间等信息。

【功能】:

(1)要求可以输入,删除,浏览交通处罚单信息。

(2)可以按车辆,驾驶员和开单交警查询。

(3)统计某时间段某个驾驶员的交通处罚数目及交通处罚单号码。

2.需求分析

交通处罚单信息用文件存储,提供文件的输输出操作;要求可以输入,输出,删除,浏览交通处罚单信息,因而要提供输入,删除和显示操作;要实现按车辆,驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。

3.总体设计

整个管理系统被设计为信息输入模块,信息删除模块,信息浏览模块,信息查询模块,信息统计模块。

 

4.详细设计

1,处罚单管理系统界面函数

此函数包括的功能是建立新的罚单,按司机姓名查询罚单并浏览相关信息,按交警姓名查询罚单并浏览相关信息,按罚单号查询罚单并浏览相关信息,删除罚单,数据统计和退出处罚单管理系统。

voidmenu()

{intn,r;

do

{system(“cls”);

printf(“\n\t\t\t交通处罚管理系统\n”);

printf(“**********************************”);

printf(“菜单:

1-信息录入\n”);

printf(“2-信息删除\n”);

printf(“3-信息浏览\n”);

printf(“4-信息查询\n”);

printf(“5-信息统计\n”);

printf(“6-退出系统\n”);

printf(“*******************************”);

printf(“请从输入数字选择相应的功能:

”);

scanf(“%d”,&n);

if(n<1||N>6)

{r=1;

getchar();

}

elser=0;

}while(r==1);

switch(n)

{case1:

input();break;

case2:

dele();break;

case3:

browse();break;

case4:

search();break;

case5:

count();break;

case6:

exit(0);

}

}

2,各功能模块设计

(1)输入模块

处罚单包含的内容有处罚单号,车牌号,司机姓名,交警姓名,和处罚日期,因此相应的函数也应包含这些内容,在这个函数所控制的操作会依次提示输入以上内容。

特别的,罚单号不能有重复,若输入的罚单号有重复,操作界面会提示罚单好重复,请重新输入。

结构体数组;

structPlist//处罚单

charvno[20];//车牌号

chardname[20];//驾驶员姓名

charpname[20];//交警姓名

charpno[20];//交警编号

charno[20];//处罚单编号

chardate[20];//处罚日期

}list[N];//处罚单数组

说明:

其中list[N]中的N为处罚单数量,程序中采用宏定义的方式,可随时在源程序宏定义中修改,本程序宏定义#defineN50。

输入模块程序流程图如下所示。

程序:

程序中涉及到文件的处理,要新建一个文件夹,将输入的信息保存进文件夹voidinput()

{

FILE*fp;

intnum;

inti,j;

if((fp=fopen("list.txt","r+"))==NULL)

{

if((fp=fopen("list.txt","w"))==NULL)

{

printf("文件打开或创建失败!

\n");

printf("\npressentertoreturnmenu\n");

getchar();

menu();

}

printf("\n请输入处罚单数量:

");

scanf("%d",&i);

printf("\n\n");

for(j=0;j

{

printf("输入第%d张处罚单的:

\n",j+1);

printf("\n车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20101112)\n");

printf("\n注意:

中间用空格隔开!

\n");

scanf("%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);

}

for(j=0;j

{

fprintf(fp,"\n%s\t%s\t%s\t%s\t%s\t%s",list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);/*开辟存储空间,将信息输入到指针指向的位置*/

}

fclose(fp);/*关闭文件*/

printf("\n保存成功!

");

printf("\npressentertoreturnmenu\n");

getchar();

getchar();

menu();

}

printf("\n请输入处罚单数量:

");

scanf("%d",&i);

for(j=0;!

feof(fp);j++)//读取文件

{

fscanf(fp,"%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);/*将指针中输入的数据送到指定的存储位置*/

}

num=j+i;

if(num>N)

{

printf("\n结构体数组数的N太小,请先修改N的值\n");

printf("\npressentertoreturnmenu\n");

getchar();

getchar();

menu();

}

printf("\n");

for(j=0;j

{

printf("输入第%d张处罚单的:

\n",j+1);

printf("\n车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20101112)\n");

printf("\n注意:

中间用空格隔开!

\n");

scanf("%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);

}

for(j=0;j

{

fprintf(fp,"\n%s\t%s\t%s\t%s\t%s\t%s",list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);

}

fclose(fp);

printf("\n保存成功!

");

printf("\npressentertoreturnmenu\n");

getchar();

getchar();

menu();

}

(2)删除模块

该模块删除多余信息,需要先以只读的形式打开,可以以其中一个信息输入内容确定需删除的信息,本程序输入处罚单的编号,根据编号删除记录。

删除记录时,将数据从文件中删除,删除位置后面的记录往前移。

该模块的流程图如下。

程序:

voiddele()

{

intj;

intnum;

intf=-1;

FILE*fp1,*fp2;

chars1[20];

if((fp1=fopen("list.txt","r"))==NULL)

{

printf("cannotopenfile\n");

printf("\npressentertoreturnmenu\n");

getchar();

getchar();

menu();

}

for(j=0;!

feof(fp1);j++)//读取文件

{

fscanf(fp1,"%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);

}

num=j;

fclose(fp1);

printf("请输入要删除的处罚单的编号\n");

scanf("%s",s1);

for(j=0;j

{

if(strcmp(s1,list[j].no)==0)

{

f=j;

if(f

{

for(j=f;j

{

strcpy(list[j].vno,list[j+1].vno);

strcpy(list[j].dname,list[j+1].dname);

strcpy(list[j].pname,list[j+1].pname);

strcpy(list[j].pno,list[j+1].pno);

strcpy(list[j].no,list[j+1].no);

strcpy(list[j].date,list[j].date);

}

}

if((fp2=fopen("list.txt","w"))==NULL)

{

printf("文件打不开!

\n");

printf("\npressentertoreturnmenu\n");

getchar();

menu();

}

for(j=0;j

{

fprintf(fp2,"\n%s\t%s\t%s\t%s\t%s\t%s",list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);

}

fclose(fp2);

printf("\n删除成功!

\n");

printf("\npressentertoreturnmenu\n");

getchar();

getchar();

menu();

}

}

if(f<0)

{

printf("\n没有找到该学号的记录:

\n");

printf("\npressentertoreturnmenu\n");

getchar();

getchar();

menu();

}

}

(3).浏览模块

该功能时显示删除某些信息后处罚单上的所有记录。

这部分显示处罚单的数量,再打开文件,按结构体数组的形式输出所有信息即可。

其程序如下所示。

程序:

voidbrowse()

{

intj;

intnum;

FILE*fp;

if((fp=fopen("list.txt","r"))==NULL)

{

printf("cannotopenfile\n");

printf("\npressentertoreturnmenu\n");

getchar();

getchar();

menu();

}

for(j=0;!

feof(fp);j++)//读取文件

{

fscanf(fp,"%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);

}

fclose(fp);

num=j;

printf("\n已添加%d条记录\n\n",num);

printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n");

for(j=0;j

{

printf("\n%s\t%s\t%s\t%s\t%s\t%s",list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);

}

printf("\npressentertoreturnmenu\n");

getchar();

getchar();

menu();

(4).查询模块

该模块有三个查询类型可供选择,可选择以车牌号、驾驶员姓名、开单交警姓名三种方式来查询,这些都将以菜单的形式选择,所以有一个主菜单和各个分模块。

同样查询模块也必须先打开文件夹。

菜单流程图如下。

分模块的流程图基本相同,现以按车牌号查询为例,编写其流程图。

 

菜单程序:

voidsearch()

{

intn;

intr;

do

{

system("cls");

printf("\n请选择查询类型:

\n\t1-按车牌号2-按驾驶员姓名3:

按开单交警姓名4-返回主菜单\n");

printf("\n请输入数字选择:

");

scanf("%d",&n);

if(n<1||n>4)

{

r=1;

getchar();

}

elser=0;

}while(r==1);

switch(n)

{

case1:

vno_search();break;

case2:

dna_search();break;

case3:

pna_search();break;

case4:

menu();

}

}

各分模块程序:

按车牌号查询

voidvno_search()/*按车牌号查询*/

{

intf=-1;

intnum;

intj;

charno[20];

FILE*fp;

if((fp=fopen("list.txt","r"))==NULL)

{

printf("文件打不开!

\n");

printf("\npressentertoreturnmenu\n");

getchar();

menu();

}

for(j=0;!

feof(fp);j++)//读取文件

{

fscanf(fp,"%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);

}

num=j;

fclose(fp);

printf("\n请输入车牌号:

");

scanf("%s",no);

printf("\n罚单的信息为:

\n\n");

printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n");

for(j=0;j

{

if(strcmp(no,list[j].vno)==0)

{

f=j;

printf("\n%s\t%s\t%s\t%s\t%s\t%s",list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);

}

}

if(f<0)

printf("\n没有找到该车牌号的记录!

\n");

printf("\npressentertoreturnsubmenu\n");

getchar();

getchar();

search();

}

按驾驶员姓名查询

voiddna_search()/*按驾驶员姓名查询*/

{

intf=-1;

intnum;

intj;

charname[20];

FILE*fp;

if((fp=fopen("list.txt","r"))==NULL)

{

printf("文件打不开!

\n");

printf("\npressentertoreturnmenu\n");

getchar();

menu();

}

for(j=0;!

feof(fp);j++)//读取文件

{

fscanf(fp,"%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);

}

num=j;

fclose(fp);

printf("\n请输入驾驶员的姓名:

");

scanf("%s",name);

printf("\n罚单的信息为:

\n\n");

printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n");

for(j=0;j

{

if(strcmp(name,list[j].dname)==0)

{

f=j;

printf("\n%s\t%s\t%s\t%s\t%s\t%s",list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);

}

}

if(f<0)

printf("\n没有找到该驾驶员的记录!

\n");

printf("\npressentertoreturnsubmenu\n");

getchar();

getchar();

search();

}

按开单交警姓名查询

voidpna_search()/*按开单交警姓名查询*/

{

intf=-1;

intnum;

intj;

charname[20];

FILE*fp;

if((fp=fopen("list.txt","r"))==NULL)

{

printf("文件打不开!

\n");

printf("\npressentertoreturnmenu\n");

getchar();

menu();

}

for(j=0;!

feof(fp);j++)//读取文件

{

fscanf(fp,"%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);

}

num=j;

fclose(fp);

printf("\n请输入开单交警的姓名:

");

scanf("%s",name);

printf("\n罚单的信息为:

\n\n");

printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n");

for(j=0;j

{

if(strcmp(name,list[j].pname)==0)

{

f=j;

printf("\n%s\t%s\t%s\t%s\t%s\t%s",list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);

}

}

if(f<0)

printf("\n没有找到该开单交警的记录!

\n");

printf("\npressentertoreturnsubmenu\n");

getchar();

getchar();

search();

}

(5).统计模块

该模块先输入驾驶员的姓名和一个时间段,就可以统计某个驾驶员在某段时间内的处罚单数目和处罚单号。

程序为:

voidcount()

{

intf=-1;

intnum;//所有罚单单数

intj;

inttotal=0;//某驾驶员的罚单数

charname[20];

chartime1[20];

chartime2[20];

FILE*fp;

if((fp=fopen("list.txt","r"))==NULL)

{

printf("文件打不开!

\n");

printf("\npressentertoreturnmenu\n");

getchar();

menu();

}

for(j=0;!

feof(fp);j++)//读取文件

{

fscanf(fp,"%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);

}

num=j;

fclose(fp);

printf("\n请根据提示输入驾驶员的姓名和一个时间段,统计某个驾驶员在某段时间内的处罚单数目和罚单号\n");

printf("\n\n请输入驾驶员的姓名:

");

scanf("%s",name);

printf("\n请输入一个较早的时间:

");

scanf("%s",time1);

printf("\n请输入一个最近的时间:

");

scanf("%s",time2);

for(j=0;j

{

if((strcmp(list[j].date,time1)>=0)&&(strcmp(list[j].date,time2)<=0))

{

f=j;

total++;

printf("\n罚单号:

%s\n",list[j].no);

}

}

if(f<0)

printf("\n没有找到记录!

\n");

printf("\n罚单总数为:

%d\n",total);

printf("\npressentertoreturnmenu\n");

getchar();

getchar();

menu();

}

5.上机操作

1,数据源

(1)处罚单号01车牌号码2001

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2