C语言实习报告 交通处罚单管理系统Word下载.docx

上传人:b****6 文档编号:21325641 上传时间:2023-01-29 格式:DOCX 页数:33 大小:62.52KB
下载 相关 举报
C语言实习报告 交通处罚单管理系统Word下载.docx_第1页
第1页 / 共33页
C语言实习报告 交通处罚单管理系统Word下载.docx_第2页
第2页 / 共33页
C语言实习报告 交通处罚单管理系统Word下载.docx_第3页
第3页 / 共33页
C语言实习报告 交通处罚单管理系统Word下载.docx_第4页
第4页 / 共33页
C语言实习报告 交通处罚单管理系统Word下载.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

C语言实习报告 交通处罚单管理系统Word下载.docx

《C语言实习报告 交通处罚单管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《C语言实习报告 交通处罚单管理系统Word下载.docx(33页珍藏版)》请在冰豆网上搜索。

C语言实习报告 交通处罚单管理系统Word下载.docx

intr;

/*变量n保存选择菜单选择数字,r判断输入的数字是否在功能菜单对应的数字范围内*/dosystem(cls);

printf(ntttt交通处罚单管理系统n);

printf();

printf(菜单:

1-信息录入2-信息删除3-信息浏览4-信息查询5-信息统计6-退出系统n);

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

);

scanf(%d,&

n);

if(n6)/*对选择的数字进行判断*/r=1;

elser=0;

while(r=1);

/*选择功能*/switch(n)case1:

input();

break;

/*输入模块*/case2:

dele();

/*删除模块*/case3:

browse();

/*浏览模块*/case4:

search();

/*查询模块*/case5:

count();

/*统计模块*/case6:

exit(0);

/*退出*/2各功能模块设计

(1)输入模块【数据结构】在这里,可以把处罚单涉及到的车辆、驾驶员和开单交警,处罚单号码、处罚时间作为结构体成员,要存放的处罚单信息就用结构体数组,整体的数据结构就比较完整、清晰,后续的信息处理及浏览将更加方便。

单独看各种信息可采用字符窜数组进行记录。

结构体数组;

structPlist/处罚单charvno20;

/车牌号chardname20;

/驾驶员姓名charpname20;

/交警姓名charpno20;

/交警编号charno20;

/处罚单编号chardate20;

/处罚日期listN;

/处罚单数组说明:

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

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

程序:

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

intnum;

inti,j;

if(fp=fopen(list.txt,r+)=NULL)if(fp=fopen(list.txt,w)=NULL)printf(文件打开或创建失败!

printf(npressentertoreturnmenun);

menu();

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

i);

printf(nn);

for(j=0;

ji;

j+)printf(输入第%d张处罚单的:

n,j+1);

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

printf(n注意:

中间用空格隔开!

scanf(%s%s%s%s%s%s,&

listj.vno,&

listj.dname,&

listj.pname,&

listj.pno,&

listj.no,&

listj.date);

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

printf(n);

j+)fprintf(fp,n%st%st%st%st%st%s,listj.vno,listj.dname,listj.pname,listj.pno,listj.no,listj.date);

fclose(fp);

printf(n保存成功!

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

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

该模块的流程图如下。

voiddele()intj;

intf=-1;

FILE*fp1,*fp2;

chars120;

if(fp1=fopen(list.txt,r)=NULL)printf(cannotopenfilen);

!

feof(fp1);

j+)/读取文件fscanf(fp1,%s%s%s%s%s%s,&

num=j;

fclose(fp1);

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

scanf(%s,s1);

jnum;

j+)if(strcmp(s1,listj.no)=0)f=j;

if(fnum-1)for(j=f;

jnum-1;

j+)strcpy(listj.vno,listj+1.vno);

strcpy(listj.dname,listj+1.dname);

strcpy(listj.pname,listj+1.pname);

strcpy(listj.pno,listj+1.pno);

strcpy(listj.no,listj+1.no);

strcpy(listj.date,listj.date);

if(fp2=fopen(list.txt,w)=NULL)printf(文件打不开!

j+)/保存文件fprintf(fp2,n%st%st%st%st%st%s,listj.vno,listj.dname,listj.pname,listj.pno,listj.no,listj.date);

fclose(fp2);

printf(n删除成功!

if(f0)printf(n没有找到该学号的记录:

(3)浏览模块该功能时显示删除某些信息后处罚单上的所有记录。

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

其程序如下所示。

程序:

voidbrowse()intj;

FILE*fp;

if(fp=fopen(list.txt,r)=NULL)printf(cannotopenfilen);

feof(fp);

j+)/读取文件fscanf(fp,%s%s%s%s%s%s,&

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

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

j+)/输出printf(n%st%st%st%st%st%s,listj.vno,listj.dname,listj.pname,listj.pno,listj.no,listj.date);

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

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

菜单流程图如下。

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

菜单程序:

voidsearch()intn;

dosystem(cls);

printf(n请选择查询类型:

nt1-按车牌号2-按驾驶员姓名3:

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

printf(n请输入数字选择:

if(n4)r=1;

switch(n)case1:

vno_search();

case2:

dna_search();

case3:

pna_search();

case4:

各分模块程序:

按车牌号查询voidvno_search()/*按车牌号查询*/intf=-1;

intj;

charno20;

if(fp=fopen(list.txt,r)=NULL)printf(文件打不开!

printf(n请输入车牌号:

scanf(%s,no);

printf(n罚单的信息为:

nn);

j+)if(strcmp(no,listj.vno)=0)f=j;

printf(n%st%st%st%st%st%s,listj.vno,listj.dname,listj.pname,listj.pno,listj.no,listj.date);

if(f0)printf(n没有找到该车牌号的记录!

printf(npressentertoreturnsubmenun);

按驾驶员姓名查询voiddna_search()/*按驾驶员姓名查询*/intf=-1;

charname20;

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

scanf(%s,name);

j+)if(strcmp(name,listj.dname)=0)f=j;

if(f0)printf(n没有找到该驾驶员的记录!

按开单交警姓名查询voidpna_search()/*按开单交警姓名查询*/intf=-1;

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

j+)if(strcmp(name,listj.pname)=0)f=j;

if(f0)printf(n没有找到该开单交警的记录!

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

程序为:

voidcount()intf=-1;

/所有罚单单数intj;

inttotal=0;

/某驾驶员的罚单数charname20;

chartime120;

chartime220;

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

printf(nn请输入驾驶员的姓名:

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

scanf(%s,time1);

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

scanf(%s,time2);

j=0)&

(strcmp(listj.date,time2)=0)f=j;

total+;

printf(n罚单号:

%sn,listj.no);

if(f0)printf(n没有找到记录!

printf(n罚单总数为:

%dn,total);

5.运行结果将程序运行出来后,会的到各模块的界面图。

1主菜单函数:

效果如图所示输入相应的数字即可运行相应的模块。

输入模块,下图为输入和保存的信息。

删除模块信息浏览模块信息查询模块主菜单信息查询模块:

按车牌号查询统计模块6.整体程序源代码:

#include#include#include#defineN100structPlist/处罚单charvno20;

/处罚单数组voidinput();

/输入模块voiddele();

/删除模块voidbrowse();

/浏览模块voidsearch();

/查询模块voidcount();

/统计模块voidmenu();

/主菜单voidvno_search();

/按车牌号查询voiddna_search();

/按驾驶员姓名查询voidpna_search();

/按开单交警姓名查询main()menu();

if(n6)r=1;

case5:

case6:

voidinput()FILE*fp;

i

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

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1