C语言课程设计.docx
- 文档编号:14432627
- 上传时间:2023-04-23
- 格式:DOCX
- 页数:25
- 大小:633.07KB
C语言课程设计.docx
《C语言课程设计.docx》由会员分享,可在线阅读,更多相关《C语言课程设计.docx(25页珍藏版)》请在冰豆网上搜索。
C语言课程设计
交通处罚单管理
一、题目要求
交通处罚单涉及到车辆、驾驶员和开单交警的信息,还有交通处罚单号码、处罚时间等信息。
功能:
(1)要求可以输入、删除、浏览交通处罚单信息。
(2)可以按车辆、驾驶员和开单交警查询。
(3)统计某时间段某个驾驶员的交通处罚单数目及交通处罚单号码。
二、需求分析
交通处罚单信息用文件存储,提供文件的输入输出操作;要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;要实现按车辆、驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。
三、总体设计
整个管理系统被设计为信息输入模块、信息删除模块、信息浏览模块、信息查询模块和信息统计模块等。
四、详细设计
1、主函数
[主函数流程图]
[主函数程序]
menu()/*主界面*/
{
intn,w;/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/
do
{
printf("\t\t\t欢迎来到交通处罚单管理系统!
\n\n");
printf("\t\t*******************MENU*******************\n\n");
printf("\t\t\t\t1.信息输入\n");
printf("\t\t\t\t2.信息删除\n");
printf("\t\t\t\t3.信息浏览\n");
printf("\t\t\t\t4.信息查询\n");
printf("\t\t\t\t5.信息统计\n");
printf("\t\t\t\t6.退出\n");
puts("\n\n\t\t********************************************\n");
printf("\t\t请输入您的操作(1-6):
[]\b\b");
scanf("%d",&n);
if(n<1||n>6)/*对选择的数字作判断*/
{
w=1;
getchar();
}
else
w=0;
}
while(w==1);/*选择功能*/
switch(n)
{
case1:
shuru();break;
case2:
shanchu();break;
case3:
liulan();break;
case4:
chaxun();break;
case5:
tongji();break;
case6:
exit(0);
}
return(n);
}
voidmain()/*主函数*/
{
menu();
}
2、各功能模块设计
(1)、输入模块
[数据结构]
采用结构体的形式,把处罚单的处罚单号、车牌号码、驾驶员姓名、开单警察ID、处罚时间作为结构体成员,用结构体数组的形式存放若干条处罚单信息。
structfandan
{
intnum;/*处罚单号码*/
intchepai;/*车牌号码*/
charname[8];/*驾驶员名字*/
intid;/*开单警察的信息ID*/
chartime[11];/*处罚时间为年月日排列*/
}dan[N];/*dan[500]中每个数组元素对应一个处罚单信息*/
[注意]
dan[N]中的N为处罚单条数,本程序采用宏定义#defineN500。
[输入模块流程图]
[输入模块程序]
voidshuru()/*输入模块*/
{
inti,j;
FILE*fp;
if((fp=fopen("data.txt","w"))==NULL)
{
printf("无法打开文件!
\n");
exit(0);
}
printf("\n你要输入多少条处罚单信息:
");
scanf("%d",&j);
for(i=0;i { printf("\n请依次输入罚单信息: \n"); printf("\n罚单号车牌号驾驶员姓名警察ID处罚时间\n"); scanf("%3d%5d%8s%5d%11s",&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time); fprintf(fp,"\n%3d%5d%8s%5d%11s",dan[i].num,dan[i].chepai,dan[i].name,dan[i].id,dan[i].time); /*输入罚单信息*/ printf("输入信息成功! \n"); } fclose(fp); printf_back(); } (2)、删除模块 [删除模块流程图] [删除模块程序] voidshanchu()/*删除模块*/ { inti,j,m,n; FILE*fp; printf("请输入要删除的处罚单号: "); scanf("%d",&j); fp=fopen("data.txt","r"); for(i=0;! feof(fp);i++) { fscanf(fp,"%3d%5d%8s%5d%11s",&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time); } m=i;/*统计出文件中罚单总数*/ for(i=0;i { if(j==dan[i].num) n=i; } fclose(fp); fp=fopen("data.txt","w"); for(i=0;i { if(i! =n) { fprintf(fp,"\n%3d%5d%8s%5d%11s",dan[i].num,dan[i].chepai,dan[i].name,dan[i].id,dan[i].time); /*把不要求删除的罚单信息在文件中输入*/ } } fclose(fp); printf_back(); } (3)、浏览模块 [需求分析] 该模块的功能是显示文件中所有的处罚但记录信息。 [浏览模块流程图] [浏览模块程序] voidliulan()/*浏览模块*/ { inti; FILE*fp; fp=fopen("data.txt","r"); for(i=0;! feof(fp);i++) { fscanf(fp,"%3d%5d%8s%5d%11s",&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time); printf("------------------------------\n"); printf("处罚单号: %d\n",dan[i].num); printf("车牌号码: %d\n",dan[i].chepai); printf("驾驶员姓名: %s\n",dan[i].name); printf("开单警察ID: %d\n",dan[i].id); printf("处罚时间: %s\n",dan[i].time); printf("------------------------------\n");/*逐条输出文件信息*/ } fclose(fp); printf_back(); } (4)、查询模块 [需求分析] 该模块的功能是可以实现按车辆、驾驶员和开单交警查询。 [查询模块流程图] [查询模块程序] voidchaxun()/*查询模块*/ { inti,j,x,flag=0; FILE*fp; charm[8]; printf("请输入您想查询的信息: \n"); printf("1_按车牌号查询\n"); printf("2_按驾驶员姓名查询\n"); printf("3_按开单警察ID查询\n"); scanf("%d",&x); if(x==1) { printf("请输入您要查询的车牌号: \n"); scanf("%d",&j); fp=fopen("data.txt","r"); for(i=0;! feof(fp);i++) { fscanf(fp,"%3d%5d%8s%5d%11s",&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time); if(dan[i].chepai==j) { printf("处罚单号: %d\n",dan[i].num); printf("车牌号码: %d\n",dan[i].chepai); printf("驾驶员姓名: ");puts(dan[i].name); printf("开单警察ID: %d\n",dan[i].id); printf("处罚时间: ");puts(dan[i].time); printf("--------------------------\n"); flag=1; break; } } if(flag==0) printf("找不到此罚单信息! \n"); fclose(fp); printf_back(); } elseif(x==2) { printf("请输入您要查询的驾驶员姓名: "); scanf("%s",m); fp=fopen("data.txt","r"); for(i=0;! feof(fp);i++) { fscanf(fp,"%3d%5d%8s%5d%11s",&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time); if(strcmp(dan[i].name,m)==0) { printf("处罚单号: %d\n",dan[i].num); printf("车牌号码: %d\n",dan[i].chepai); printf("驾驶员姓名: ");puts(dan[i].name); printf("开单警察ID: %d\n",dan[i].id); printf("处罚时间: ");puts(dan[i].time); printf("-------------------------\n"); flag=1; break; } } if(flag==0) printf("找不到此罚单信息! \n"); fclose(fp); printf_back(); } elseif(x==3) { printf("请输入您要查询的开单警察ID: "); scanf("%d",&j); fp=fopen("data.txt","r"); for(i=0;! feof(fp);i++) { fscanf(fp,"%3d%5d%8s%5d%11s",&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time); if(dan[i].id==j) { printf("处罚单号: %d\n",dan[i].num); printf("车牌号码: %d\n",dan[i].chepai); printf("驾驶员姓名: ");puts(dan[i].name); printf("开单警察ID: %d\n",dan[i].id); printf("处罚时间: ");puts(dan[i].time); printf("-------------------------\n"); flag=1; break; } } if(flag==0) printf("找不到此处罚单信息! \n"); fclose(fp); printf_back(); } else {printf("输入错误! \n"); printf_back(); } } (5)、统计模块 [需求分析] 该模块的功能是可以实现统计某时间段某个驾驶员的交通处罚单数目及交通处罚单号码。 [统计模块流程图] 3、公共函数 一个任务结束时是选择浏览还是返回的函数: [一个任务结束时是选择浏览还是返回的函数的流程图] [一个任务结束时是选择浏览还是返回的函数的程序] voidprintf_back()/*一个任务结束时是选择浏览还是返回主界面*/ { voidliulan(); intw; printf("\nWhatdoyouwanttodo? \n\n\t (1).浏览\t (2).返回主界面[]\b\b"); scanf("%d",&w); if(w==1) liulan(); else menu(); } 五、上机操作 1、数据源 逐条输入处罚单信息中的处罚单号、车牌号码、驾驶员姓名、开单警察ID和处罚时间。 2、编译、连接和运行 3、结果 (1)主菜单函数 (2)输入模块 在主界面出现后输入1回车看到下图: 输入要输入的记录数然后逐条增加,如下图: (3)浏览模块 (4)删除模块 在主界面出现后输入2回车看到下图: 输入要删除的处罚单号然后如下图: 删除后文件中保留信息的浏览图如下: (5)查询模块 在主界面出现后输入4回车看到下图: 输入要查询的信息后如下图(如输入1): 若没找到需要查找的信息时如下图: (6)统计模块 在主界面出现后输入5回车看到下图: 输入需要统计的时间段与驾驶员姓名,如下图: 若查找不到需要统计的信息,如下图: 六、总结 经过10天的《C程序设计》的学习,我充分实践了C语言的知识应用,了解了C语言程序设计的思想。 通过课程设计,一方面检查了我学习C语言的成果,另一方面也让我进一步的掌握和运用它,同时也让我认清自己的不足之处和薄弱环节,得以弥补和加强。 1.通过C语言的实习我有了很大的收获。 学习C语言不仅提高了思维的严谨性和逻辑性,让我们对C语言有一个很深的理解。 让我基本掌握了一种语言的思想和语法,还从中认识到很多错误。 比如说在编程时,书写标识符的时候,忽略了大小写字母的区别;忽略了变量的类型,进行了不合法的运算;将字符常量与字符串常量混淆;忽略“=”与“==”的区别;忘记加分号;多加分号;输入变量时忘记加地址运算符;输入数据的方式与要求不符;输入字符的格式与要求不一致;输入输出的数据类型与所用格式说明符不一致;输入数据时企图规定精度;switch语句中漏写break语句;忽视了while与do-while语句在细节上的区别;定义数组时误用变量;在定义数组时,将定义的“元素个数”误以为是可使的最大下标值;在不应加地址运算符&的位置加了地址运算符;同时定义了形参和函数中的局部变量等。 这次C语言的实习让我暴露了很多问题和不足,但是我也进一步提高了我编程的精确度和速度。 2.在实习的过程中,我觉得自己在程序的整体设计和一些函数的使用上有很大的不足,比如说结构体,指针,链表等内容。 自己的思路刚开始不是相当的清晰,以致编程中走了不少弯路,浪费了不少时间。 3.这次实习与平时上课相比有很大的差别。 平时上课时老师讲授的知识都不是很深,讲的都是些很基本也很简单的程序和例子,书本上很多知识都没有涉及到,但本次实习中用到的知识几乎覆盖了整本书的内容,而且要求比平时要难的多。 4.我理解了在C语言编程中要细心,耐心,发现问题要及时检查和思考,不要急于求成,弄懂主要函数和些常用字符等的用法和具体意思,要反复修改自己的程序,善于从中发现问题,并想出相应的解决办法,逐个完成。 对于较复杂的系统编程,要分块进行,还要结合整体,结构清晰。 通过这次C语言程序设计实习,让我学会了C语言程序编程的基本步骤和基本方法,开发了我的逻辑思维能力,培养了我的分析问题和解决问题的能力! 2008年8月31日星期日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)