【C语言实战应用】交通处罚单管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言实践应用
交通处罚单管理系统
内容:
〔要求〕交通处罚单涉及到车辆、驾驶员和开单交警的信息,还有交通处罚单号码,处罚时间等信息。
功能:
(1)要求可以输入、删除、浏览交通处罚单信息。
(2)可以按车辆、驾驶员和开单交警查询。
(3)统计某时间段某个驾驶员的交通处罚单数目及交通处罚单号码。
第二部分:需求分析
1.交通处罚单信息用文件存储,提供文件的输入输出操作;
2.要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;
3.要车辆、驾驶员和开单交警查询,则要提供查找操作;
4.另外提供系统操作和键盘式选择菜单以实现功能选择。
第三部分:程序总体设计思路
由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
在编写本程序的过程中,首先,确定目标程序运行的次序与界面,
即本程序首先运行【用户系统】菜单界面,菜单界面上为用户提供信息输入,信息删除,信息查询,信息浏览,信息统计,退出菜单共六种操作选择。此功能用switch语句来实现。其次,根据目标程序运行的次序与界面,确定设计顺序,设计界面(包括各部分菜单与用户提示信息)。再次,按照程序运行的各界面下的菜单功能编写各功能模块,并调试程序各功能模块,使各模块能够稳定高效准确地完成对应功能。
第四部分:程序功能模块划分、图示及流程图
系统的结构图:
.
【信息输入模块】
该模块的功能是为用户提供信息输入界面,用户可以根据信息提示进行信息输入,用户输入的信息将被保存在文件当中。
【流程图】
【程序】:
void shuru()
{
FILE *fp;
int i=0;
if((fp=fopen("data.txt","wb"))==NULL)
{
printf("Can not open the file\n");
exit(0);//调用此函数时必须包含
}
printf("请输入车牌号码:\n");
scanf("%d",&dan[NUM ].chepai);
printf("请输入驾驶员姓名:\n");
scanf("%s",dan[NUM ].name);
printf("请输交警ID:\n");
scanf("%d",&dan[NUM ].id);
printf("请输入开单日期(以年/月/日形式输入):\n");
scanf("%d/%d/%d",&dan[i].date.year,&dan[i].date.month,&dan[i].date.d ay);
printf("请输入处罚单号:\n");
scanf("%d",&dan[NUM ].num);
for (i=0;i<=NUM;i++)
{
if(fwrite(&dan[i],sizeof(struct cfd),1,fp)!=1)
printf("file write error\n");
} //此处for循环的作用是:在每次调用输入函数时都能够把结构体数组中已有的数据和本次输入的数据都记录在文件data.txt中
printf("已经有%d个罚单\n",i);
NUM++;//NUM用来记录罚单总数,每调用一次输入函数NUM 就加一
fclose(fp);
}
【删除罚单模块】:
按操作者的指令在结构体数组中找到删除的信息,把结构体数组中的信息抄到文件中去忽略要删除的信息达到要删除的目的。【流程图】:
【程序】:
void shanchu()
{
int i;
int c;//待删除罚单号码
int w;//删除处罚单号
FILE *fp;
printf("请输入要删除的处罚单号:"); scanf("%d",&w);
fp=fopen("data.txt","rb");
for(i=0;i { if(w==dan[i].num) //查找要删除的罚单号码 c=i; //待删除罚单号码 } fclose(fp); fp=fopen("data.txt","wb"); for(i=0;i { if(i!=c) fwrite(&dan[i],sizeof(struct cfd),1,fp); //如果罚单号与待删除罚单号不同,就写入文件 } //此处for循环的作用是:从文件中把待删除的信息删除 NUM--;//全局变量更新 printf("删除成功\n罚单号是%d\n",dan[c].num ); fclose(fp); } 【信息浏览模块】: 把储存在文件中信息全部输出。 【程序】: void liulan() { int i; FILE *fp; fp=fopen("data.txt","rb"); printf("已有%d个罚单",NUM); for(i=0;i { if(fread(&dan[i],sizeof(struct cfd),1,fp)) { printf("第%d罚单信息\n",i+1); prntf(i); } else break; } fclose(fp); } 【信息查询模块】: 用户根据界面的提示选择查询方式,并根据进一步的提示进行相关输入,程序根据用户输入的信息通过for循环找到与之相对应的信息,并输出相关信息。 【流程图】: