C语言程序设计课程设计材料c语言交通处罚单管理系统含实验报告和源代码.docx
《C语言程序设计课程设计材料c语言交通处罚单管理系统含实验报告和源代码.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课程设计材料c语言交通处罚单管理系统含实验报告和源代码.docx(29页珍藏版)》请在冰点文库上搜索。
![C语言程序设计课程设计材料c语言交通处罚单管理系统含实验报告和源代码.docx](https://file1.bingdoc.com/fileroot1/2023-5/24/c3fbb606-6e4f-498f-b00b-1525aac00899/c3fbb606-6e4f-498f-b00b-1525aac008991.gif)
C语言程序设计课程设计材料c语言交通处罚单管理系统含实验报告和源代码
C语言程序设计课程设计材料
C语言交通处罚单管理系统(含实验报告和源代码)
●课程设计目的………………………………………3
●课程设计内容………………………………………3
●总体设计………………………………………3
●详细设计………………………………………4
●运行结果………………………………………8
●程序调试………………………………………10
●编程体会………………………………………11
一、课程设计目的
1.通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
2.通过课程设计,进一步掌握C有并重要的数据结构。
掌握并熟练运用指针、链表、结构体、文件等数据结构。
3.通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。
4.通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个中小型系统。
5.通过课程设计,加强了自己的程序分析能力。
6.通过课程设计,完成了交通处罚单管理系统,很多功能还待完善。
二、课程设计内容
用C语言编写软件完成以下任务:
1交通处罚单基本信息输入(数据包括处罚单号码,车牌号码,姓名,开单警察的信息ID,处罚时间等),信息保存在data.txt文件中,
2交通处罚单基本信息浏览。
将文件内所有的交通处罚单信息全部输出展现出来。
3交通处罚单基本信息查询。
可以查询特定的交通处罚单信息。
4交通处罚单基本信息统计。
可以查询某一个时间段的所有的交通处罚单信息。
5交通处罚单基本信息删除。
删除不需要的交通处罚单信息。
三、总体设计
本系统的功能模块如图1所示,主要有以下模块:
(1)交通处罚单基本信息输入:
构造函数voidshurujianli()),对产生新的交通处罚单的信息进行输入。
(2)交通处罚单基本信息浏览:
构造函数voidliulan(),全部浏览已被录入交通处罚单的所有信息。
(3)交通处罚单基本信息查询:
构造函数voidchaxun(),输入想要查询的方式,用三种方式查询交通处罚单基本信息。
(4)交通处罚单基本信息统计:
构造函数voidtongji(),对文件中所有的交通处罚单进行精确统计。
(5)交通处罚单基本信息删除:
构造函数voidshanchu(),通过输入书名,判断此交通处罚单是否存在,若存在,则删除该交通处罚单所有信息,然后再把剩下的交通处罚单信息保存到文件。
系统功能模块图
图一
四、详细设计
结构体定义如下:
#defineN500
structchufadan
{
intnum;/*处罚单号码*/
intchepai;/*车牌号码*/
charname[10];/*驾驶员名字*/
intid;/*开单警察的信息ID*/
intyear;
intmonth;
intday;/*处罚时间为年月日排列*/
}chufadan[N];/*dan[500]中每个数组元素对应一个处罚单信息*/
(一)信息输入函数:
图2信息录入功能流程图
(三)信息删除函数:
图3信息删除功能流程图
(三)信息查询函数:
图4信息查询功能流程图
(四)统计功能函数:
图5信息统计功能流程图
(五)浏览功能函数:
图6信息浏览功能流程图
五、运行结果
主菜单界面
图7
输入建立模块
图8
查询模块
图9
浏览模块
图10
统计模块
图11
删除模块
图12
六、程序调试
自从把整体的c语言处罚单管理系统编成以后,就开始进行调试。
调试的过程中不知道修改了多少次源代码,为了能让交通处罚单管理系统在输入任何代码的情况下都能正常使用,不会出错,反复的修改,看书,查资料,询问同学调试之后,终于运行成功。
主要克服了以下问题:
(1)怎么样把交通处罚单数据输入文件中。
(2)通过主函数把其他的函数连接起来,形成一个完整的有序的程序。
(3)难度最大的是统计模块,算法十分复杂。
七、编程体会
老师布置完程序设计任务的第二天,我就开始寻找题目准备入手,见到交通处罚单管理系统这个课题以后,我对此很感兴趣。
于是,当天下午开始做准备工作,重新把c语言复习一遍,开始编程。
起初是挺困难的,偌大的一个程序,我之前从未编过,无从下手,然后,我通过查资料,了解其大概模型,首先是把管理系统所含有的功能各自分成几个模块,建立一个主函数,把主函数和其他数个函数连接起来。
我想好了做输入、查询、浏览、删除、统计这五个功能,先把主函数完成,另外设计一个主界面。
一开始真的困难重重,虽然c语言复习过了,但是看书看懂了和真正的运用学到的知识写程序是完全不同的,不断的对照例题,不断的尝试与修改。
当我把所有的功能完成以后,已经花了将近五天的时间,结果,编程程序检查我的源代码时候,有超过一百个错误。
我顿时绝望了。
我自己做的程序,我很想把它做好,我一个一个的检查,发现原来是我的结构体没有设置好,导致系统无法识别后面的源代码。
对照书本上结构体例题把结构体给完成,剩下的便是一些小毛病。
陆陆续续的修改了几天,最后一刻,发现程序能够运行了,我心情顿时兴奋澎湃了!
源代码
#include
#include
#include
#defineN1000
voidshurujianli();
voidliulan();
voidchaxun();
voidtongji();
voidshanchu();
voidprintf_back();
voidmenu();
voidmain()
{
intn;
while
(1)
{
menu();
scanf("%d",&n);
switch(n)
{
case1:
shurujianli();break;/*建立新的罚单*/
case2:
shanchu();break;/*删除处罚单*/
case3:
liulan();break;/*浏览交通处罚单相关信息*/
case4:
chaxun();break;/*查询交通处罚单相关信息*/
case5:
tongji();break;/*交通处罚单数据统计*/
case6:
exit(0);/*退出*/
return;
}
}
}
voidmenu()
{
{
printf("\n");
printf("欢迎来到交通处罚单管理系统!
\n");
printf("*******************************************************************************\n");
printf("1.建立新的罚单\n");
printf("2.删除交通处罚单\n");
printf("3.浏览交通处罚单相关信息\n");
printf("4.查询交通处罚单相关信息\n");
printf("5.统计交通处罚单数据信息\n");
printf("6.退出\n");
printf("*******************************************************************************\n");
printf("\t\t\t请输入您的操作(1-6):
[]\b\b");
}
}
structchufadan
{
intnum;/*处罚单号码*/
intchepai;/*车牌号码*/
charname[10];/*车主名字*/
intid;/*开单警察的信息ID*/
intyear;
intmonth;
intday;/*处罚时间为年月日排列*/
}chufadan[N];/*dan[500]中每个数组元素对应一个处罚单信息*/
voidshurujianli()/*输入建立模块*/
{
inti,j,k;
intNUM;
FILE*fp;/*打开文件,定义指向文件的指针变量*/
if((fp=fopen("data.txt","r"))==NULL)
{
if((fp=fopen("data.txt","w"))==NULL)
{
printf("无法打开文件!
\n");
exit(0);
}
printf("------------------------输入建立模块-----------------------------\n");
printf("\n你要输入多少条处罚单信息:
");
scanf("%d",&j);
printf("\n\n请依次输入罚单信息:
\n\n");
for(i=0;i{
printf("请输入车牌号码:
\n");
scanf("%d",&chufadan[i].chepai);
printf("请输入车主姓名:
\n");
scanf("%s",chufadan[i].name);
printf("请输交警ID:
\n");
scanf("%d",&chufadan[i].id);
printf("请输入开单日期:
年.月.日\n");
scanf("%d.%d.%d",&chufadan[i].year,&chufadan[i].month,&chufadan[i].day);
printf("请输入处罚单号:
\n");
scanf("%d",&chufadan[i].num);
printf("\n\n");
printf("-----------------------------------------------------------------\n");
fprintf(fp,"\n%5d%5d%10s%5d%d.%d.%d",
chufadan[i].num,chufadan[i].chepai,chufadan[i].name,chufadan[i].id,chufadan[i].year,chufadan[i].month,chufadan[i].day);
}
printf("输入信息成功!
\n");
fclose(fp);
printf_back();
}
printf("------------------------输入建立模块-----------------------------\n");
fp=fopen("data.txt","r");
for(i=0;!
feof(fp);i++)//读取文件
{
fscanf(fp,"%5d%5d%10s%5d%d.%d.%d",
&chufadan[i].num,&chufadan[i].chepai,chufadan[i].name,&chufadan[i].id,&chufadan[i].year,&chufadan[i].month,&chufadan[i].day);
}
fp=fopen("data.txt","a");
printf("\n你要输入多少条处罚单信息:
");
scanf("%d",&j);
NUM=i+j;
if(NUM>N)
{
printf("您输入的所有数据超过储存最大限额!
/n请联系管理系统开发人员。
");
exit(0);
}
printf("\n");
for(k=i;k{
printf("请输入车牌号码:
\n");
scanf("%d",&chufadan[k].chepai);
printf("请输入车主姓名:
\n");
scanf("%s",chufadan[k].name);
printf("请输交警ID:
\n");
scanf("%d",&chufadan[k].id);
printf("请输入开单日期:
年.月.日\n");
scanf("%d.%d.%d",&chufadan[k].year,&chufadan[k].month,&chufadan[k].day);
printf("请输入处罚单号:
\n");
scanf("%d",&chufadan[k].num);
printf("\n\n");
printf("-----------------------------------------------------------------\n");
}
for(k=i;k{
fprintf(fp,"\n%5d%5d%10s%5d%d.%d.%d",
chufadan[k].num,chufadan[k].chepai,chufadan[k].name,chufadan[k].id,chufadan[k].year,chufadan[k].month,chufadan[k].day);/*向文件输入*/
}
printf("输入信息成功!
\n");
fclose(fp);
printf_back();
}
voidshanchu()/*删除模块*/
{
inti;
intm;
intc;//待删除罚单号码
intw;//删除罚单号码
intt;
intNUM;
intflag=0;
FILE*fp;
printf("------------------------删除模块--------------------------------\n");
printf("请输入管理员密码:
\n");
scanf("%d",&m);
if(m==123456)
{
printf("密码输入正确!
\n");
printf("请输入要删除的处罚单号:
");
scanf("%d",&w);
fp=fopen("data.txt","r");
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%5d%5d%10s%5d%d.%d.%d",&chufadan[i].num,&chufadan[i].chepai,chufadan[i].name,&chufadan[i].id,&chufadan[i].year,&chufadan[i].month,&chufadan[i].day);
}
NUM=i;
for(i=0;i{
if(w==chufadan[i].num)//查找要删除的罚单号码
{
c=i;
printf("------------------------------------------\n");
printf("处罚单号:
%5d\n",chufadan[i].num);
printf("车牌号码:
%5d\n",chufadan[i].chepai);
printf("车主姓名:
%10s\n",chufadan[i].name);
printf("开单警察ID:
%5d\n",chufadan[i].id);
printf("处罚时间:
%d.%d.%d\n",chufadan[i].year,chufadan[i].month,chufadan[i].day);
printf("------------------------------------------\n");/*逐条输出文件信息*/
flag=1;
}
}
if(flag==0)
{
printf("找不到要删除的罚单信息!
\n");
fclose(fp);
printf_back();
}
fclose(fp);
printf("是否删除此罚单号码?
\n1.确定\t2.取消[]\b\b");
scanf("%d",&t);
if(t==1)
{
fp=fopen("data.txt","w");
for(i=0;i{
if(i!
=c)
{
fprintf(fp,"\n%5d%5d%10s%5d%d.%d.%d",chufadan[i].num,chufadan[i].chepai,chufadan[i].name,chufadan[i].id,chufadan[i].year,chufadan[i].month,chufadan[i].day);/*向文件输入*/
}/*把不要求删除的罚单信息在文件中输入*/
}
printf("成功删除罚单号码!
");
fclose(fp);
printf_back();
}
else
printf_back();
}
}
voidliulan()/*浏览模块*/
{
inti;
intNUM;
FILE*fp;
fp=fopen("data.txt","r");
printf("------------------------浏览模块---------------------------\n");
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%5d%5d%10s%5d%d.%d.%d",&chufadan[i].num,&chufadan[i].chepai,chufadan[i].name,&chufadan[i].id,&chufadan[i].year,&chufadan[i].month,&chufadan[i].day);
}
fclose(fp);
NUM=i;
for(i=0;i{
printf("------------------------------------------\n");
printf("处罚单号:
%5d\n",chufadan[i].num);
printf("车牌号码:
%5d\n",chufadan[i].chepai);
printf("车主姓名:
%5s\n",chufadan[i].name);
printf("开单警察ID:
%5d\n",chufadan[i].id);
printf("处罚时间:
%d.%d.%d\n",chufadan[i].year,chufadan[i].month,chufadan[i].day);
printf("------------------------------------------\n");/*逐条输出文件信息*/
}
printf_back();
}
voidchaxun()/*查询模块*/
{
inti,j,x,flag=0;
intNUM;
charm[10];
FILE*fp;
fp=fopen("data.txt","r");
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%5d%5d%10s%5d%d.%d.%d",
&chufadan[i].num,&chufadan[i].chepai,chufadan[i].name,&chufadan[i].id,&chufadan[i].year,&chufadan[i].month,&chufadan[i].day);
}
NUM=i;
printf("---------------------------查询模块---------------------------\n");
printf("请输入您想查询的信息:
\n");
printf("1_按车牌号查询\n");
printf("2_按车主姓名查询\n");
printf("3_按开单警察ID查询\n");
scanf("%d",&x);
if(x==1)
{
printf("请输入您要查询的车牌号:
\n");
scanf("%d",&j);
for(i=0;i{
if(chufadan[i].chepai==j)
{
printf("处罚单号:
%5d\n",chufadan[i].num);
printf("车牌号码:
%5d\n",chufadan[i].chepai);
printf("车主姓名:
");puts(chufadan[i].name);
printf("开单警察ID:
%d\n",chufadan[i].id);
printf("处罚时间:
%d.%d.%d\n",chufadan[i].year,chufadan[i].month,chufadan[i].day);
printf("--------------------------\n");
flag=1;
}
}
if(flag==0)
{
printf("找不到此罚单信息!
\n");
}
fclose(fp);
printf_back();
}
elseif(x==2)
{
printf("请输入您要查询的驾驶员姓名:
");
scanf("%s",m);
for(i=0;i{
//fscanf(fp,"%5d%5d%s%5d%d.%d.%d",&chufadan[i].num,&chufadan[i].chepai,chufadan[i].name,&chufadan[i].id,&chufadan[i].year,&chufadan[i].month,&chufadan[i].day);
if(strcmp(chufadan[i].name,m)==0)//字符串比较函数
{
printf(