C语言课设报告.docx

上传人:b****8 文档编号:9485605 上传时间:2023-02-04 格式:DOCX 页数:24 大小:630.47KB
下载 相关 举报
C语言课设报告.docx_第1页
第1页 / 共24页
C语言课设报告.docx_第2页
第2页 / 共24页
C语言课设报告.docx_第3页
第3页 / 共24页
C语言课设报告.docx_第4页
第4页 / 共24页
C语言课设报告.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

C语言课设报告.docx

《C语言课设报告.docx》由会员分享,可在线阅读,更多相关《C语言课设报告.docx(24页珍藏版)》请在冰豆网上搜索。

C语言课设报告.docx

C语言课设报告

C语言课程设计

——交通处罚单管理系统

学号:

021220217

姓名:

王帅

专业:

热能与动力工程

●程序完成的主要功能

●对题目的分析,设计中遇到的主要问题与解决方法,对设计的感想和心得,新增功能。

●提供有注释的源程序,要求注释清楚函数的功能,函数参数的意义,返回值的含义

●画出函数调用关系图,描绘主要算法的实

●设计实验流程,并提供典型测试数据

程序主要功能

(1)可以输入、删除、显示、修改某个驾驶员的交通处罚单信息;

(2)可以按照驾驶员查询交通处罚单。

程序执行过程为:

循环显示主菜单,用户在Giveyourchoice:

处输入选项,即按照功能列表输入0~7任意一个数字,按回车后,执行相应的功能。

以下是程序的各项功能:

1、InputRecords(输入若干条记录)

2、DisplayAllRecords(显示所有记录)

3、DeleteaRecord(按姓名查找,删除一条数据)

4、Sort(排序)

5、InsertaRecords(插入一条记录)

6、Query(查找并显示一个记录)

7、AddRecordsfromaTextFile(从正文文件中添加数据到结构体数组中)

8、WritetoaTextFile(将数组中的数据写入文件中)

9、Quit(退出交通处罚单管理程序)

程序功能的实现

◆删除功能的实现:

建立一个函数,返回Driver项相同的结构体的编号,重新输入一遍整组结构体的数据,并忽略返回的那组数据,记录下来;

◆如何保证数据的储存性:

由于课题的特殊性,处罚单应具有良好的储存性,为了达到目的,将每一组输入的数组都写入文件中,一旦要调用数据再读入内存中,这项功能使得该程序即使在非正常关闭之后仍然“记忆”之前输入的数据,数据安全是一大特点;

◆运行过程中的人性化改进:

一、每组数据都写入文件,数据的储存性良好;二、一个功能实现完毕会有一个窗口提示是回到主菜单还是浏览数据,避免了输入数据后功能“断层”的尴尬;

◆如何实现结构体数组的排序:

结构体数组相比于其他数组,由于其包含了较多数据,不好交换,经过搜索资料,再加上课本里学过的“冒泡法”,实现了结构体数组的交换;

◆若查询的记录不存在,如何处理:

单独定义一个变量flag,初始值为0,如若查询到需要的数据便赋值为1,利用if语句返回当数据不存在时提示“can’tfindtherecord”避免了程序因找不到数据而产生的各种错误;

◆怎样整批导入数据并加入结构体数组:

由于结构体数组是写在txt文档内的,无法直接读出有几组数据,故用feof实现读至文件最后处,并自动记录有几组数据,加入原结构体数组。

由于自身学习的局限性,这个课程设计有很多功能起初时让根本无法下手,但经过在网上搜集一些别人的课程设计结果,集百家之长,再加上自身合编,总成以下的源程序:

 

#include

#include

#include

#defineN1000

intNUM;

typedefstruct

{chardriver[10];

intcar;

charpolice[10];

intnum;

intyear;

intmonth;

intdate;

}Traffic;//定义结构体数组

Traffictraflist[N];//定义数组

voidInput();

voidDisplay();

voidQuery();

voidDelete();

voidSort_by_Name();

voidprintf_back();

voidmenu();

voidInsert();

voidAddfromText();

intmenu_select();//函数申明

voidmain()

{

for(;;)//使函数陷入死循环,不会因为只实现一个功能便退出

{

switch(menu_select())

{

case1:

printf("InputRecords\n");

Input();

system("pause");

break;

case2:

printf("DisplayAllRecords\n");

Display();

system("pause");

break;

case3:

printf("DeleteaRecord\n");

Delete();

system("pause");

break;

case4:

printf("Sort\n");

Sort_by_Name();

system("pause");

break;

case5:

printf("InsertaRecord\n");

Insert();

system("pause");

break;

case6:

printf("Query\n");

Query();

system("pause");

break;

case7:

printf("AddRecordsfromaTextFile\n");

AddfromText();

system("pause");

break;

case0:

printf("Goodbye!

\n");

system("pause");

exit(0);

}

}

}

intmenu_select()

{

charc;

do{

system("cls");

printf("1.InputRecords\n");

printf("2.DisplayAllRecords\n");

printf("3.DeleteaRecord\n");

printf("4.Sort\n");

printf("5.InsertaRecord\n");

printf("6.Query\n");

printf("7.AddRecordfromaTextFile\n");

printf("0.Goodbye!

\n");

printf("Giveyourchoice(0~7):

");

c=getchar();

}while(c<'0'||c>'7');//如果输入的数字不是0~7内的,便不会通过

return(c-'0');

}

voidInput()//输入函数

{inti,j;//i为循环辅助参数,j为需要输入的数据数

FILE*fp;

fp=fopen("records.txt","w");//打开records.txt,下面要将内存中的数据输入文件中

printf("------------------------Input-----------------------------\n");

printf("\nHowmanydatadoyouneed:

");

scanf("%d",&j);

printf("\n\nPleaseinputthedatainorder:

\n\n");

for(i=0;i

{

printf("Pleaseinputdriver'sname:

\n");

scanf("%s",&traflist[i].driver);

printf("Pleaseinputthecarnumber:

\n");

scanf("%d",&traflist[i].car);

printf("Pleaseinputthepoliceman'sname:

\n");

scanf("%s",&traflist[i].police);

printf("Pleaseinputthetrafficnumber:

\n");

scanf("%d",&traflist[i].num);

printf("Pleaseinputthedate:

\n");

scanf("%d.%d.%d",&traflist[i].year,&traflist[i].month,&traflist[i].date);

printf("\n\n");

printf("-----------------------------------------------------------------\n");

fprintf(fp,"\n%s%d%s%d%d.%d.%d",

traflist[i].driver,traflist[i].car,traflist[i].police,traflist[i].num,traflist[i].year,traflist[i].month,traflist[i].date);//将数据输入文件

}

printf("Complete!

\n");

NUM=NUM+j;//记录数组中的数据数

fclose(fp);

printf_back();

}

voidDelete()//删除函数

{

inti;

intc;

charw[10];//储存暂时的输入的姓名

intt;

intflag=0;

FILE*fp;

printf("------------------------Delete--------------------------------\n");

printf("Pleaseinputthedriver'sname:

");

scanf("%s",&w);

fp=fopen("records.txt","r");

for(i=0;!

feof(fp);i++)//读文件至最后,i为数据组数

{

fscanf(fp,"%s%d%s%d%d.%d.%d",&traflist[i].driver,&traflist[i].car,&traflist[i].police,&traflist[i].num,&traflist[i].year,&traflist[i].month,&traflist[i].date);//将文件中的数据输入内存

}

NUM=i;

for(i=0;i

{

if(strcmp(traflist[i].driver,w)==0)//字符串比较函数

{

c=i;

printf("------------------------------------------\n");

printf("Driver'sname:

%s\n",traflist[i].driver);

printf("Carnumber:

%d\n",traflist[i].car);

printf("Policename:

%s\n",traflist[i].police);

printf("Trafficnumber:

%d\n",traflist[i].num);

printf("Date:

%d.%d.%d\n",traflist[i].year,traflist[i].month,traflist[i].date);

printf("------------------------------------------\n");

flag=1;

}

}

if(flag==0)//未找到数据

{

printf("Can'tfindthedata!

\n");

fclose(fp);

printf_back();

}

fclose(fp);

printf("Areyousure?

\n1.Yes\t2.No[]\b\b");

scanf("%d",&t);

if(t==1)

{

fp=fopen("records.txt","w");

for(i=0;i

{

if(i!

=c)

{

fprintf(fp,"\n%s%d%s%d%d.%d.%d",traflist[i].driver,traflist[i].car,traflist[i].police,traflist[i].num,traflist[i].year,traflist[i].month,traflist[i].date);//向文件输入

}

}

printf("Complete!

");

fclose(fp);

printf_back();

}

else

printf_back();

}

voidDisplay()//浏览函数

{

inti;

FILE*fp;

fp=fopen("records.txt","r");

printf("------------------------Display---------------------------\n");

for(i=0;!

feof(fp);i++)

{

fscanf(fp,"%s%d%s%d%d.%d.%d",&traflist[i].driver,&traflist[i].car,&traflist[i].police,&traflist[i].num,&traflist[i].year,&traflist[i].month,&traflist[i].date);

}

fclose(fp);

NUM=i;

for(i=0;i

{

printf("------------------------------------------\n");

printf("Driver'sname:

%s\n",traflist[i].driver);

printf("carnumber:

%d\n",traflist[i].car);

printf("Policename:

%s\n",traflist[i].police);

printf("Trafficnumber:

%d\n",traflist[i].num);

printf("Date:

%d.%d.%d\n",traflist[i].year,traflist[i].month,traflist[i].date);

printf("------------------------------------------\n");

}

printf_back();

}

voidQuery()//查询函数

{

inti,flag=0;

charm[10];

FILE*fp;

fp=fopen("records.txt","r");

for(i=0;!

feof(fp);i++)

{

fscanf(fp,"%s%d%s%d%d.%d.%d",

&traflist[i].driver,&traflist[i].car,&traflist[i].police,&traflist[i].num,&traflist[i].year,&traflist[i].month,&traflist[i].date);

}

printf("---------------------------Query---------------------------\n");

printf("Pleaseinputthedriver'sman:

");

scanf("%s",&m);

for(i=0;i

{

fscanf(fp,"%s%d%s%d%d.%d.%d",&traflist[i].driver,&traflist[i].car,&traflist[i].police,&traflist[i].num,&traflist[i].year,&traflist[i].month,&traflist[i].date);

if(strcmp(traflist[i].driver,m)==0)//字符串比较函数

{

printf("Driver'sname:

%10s\n",traflist[i].driver);

printf("Carnumber:

%5d\n",traflist[i].car);

printf("Policename:

");puts(traflist[i].police);

printf("Trafficnumber:

%5d\n",traflist[i].num);

printf("Date:

%d.%d.%d\n",traflist[i].year,traflist[i].month,traflist[i].date);

printf("-------------------------\n");

flag=1;

}

}

if(flag==0)

{

printf("Can'tfindthetraflist!

\n");

}

fclose(fp);

printf_back();

}

voidSort_by_Name()//按姓名排序

{

inti,j,k;

Traffics;

FILE*fp;

fp=fopen("records.txt","r");

for(i=0;!

feof(fp);i++)

{

fscanf(fp,"%s%d%s%d%d.%d.%d",&traflist[i].driver,&traflist[i].car,&traflist[i].police,&traflist[i].num,&traflist[i].year,&traflist[i].month,&traflist[i].date);

}

fclose(fp);

NUM=i;

for(k=0;k

{

for(j=0;j

{if(strcmp(traflist[j].driver,traflist[j+1].driver)>0)

{

s=traflist[j];

traflist[j]=traflist[j+1];

traflist[j+1]=s;

}

}

}

fp=fopen("records.txt","w");

for(j=0;j

{

fprintf(fp,"\n%s%d%s%d%d.%d.%d",traflist[j].driver,traflist[j].car,traflist[j].police,traflist[j].num,traflist[j].year,traflist[j].month,traflist[j].date);//将新数据写入文件

}

fclose(fp);

printf_back();

}

voidInsert()//插入若干组数据

{

inti,j,k;

FILE*fp;

printf("------------------------Insert-----------------------------\n");

fp=fopen("records.txt","r");

for(i=0;!

feof(fp);i++)

{

fscanf(fp,"%s%d%s%d%d.%d.%d",

&traflist[i].driver,&traflist[i].car,&traflist[i].police,&traflist[i].num,&traflist[i].year,&traflist[i].month,&traflist[i].date);

}

fp=fopen("records.txt","a");

printf("\nHowmanydatadoyouneed:

");

scanf("%d",&j);

NUM=i+j;

if(NUM>N)

{

printf("Thedataistoobigtocontain!

/n");//提示数据太大而无法储存

exit(0);

}

printf("\n");

for(k=i;k

{

printf("Pleaseinputthedriver'sname\n");

scanf("%s",&traflist[k].driver);

printf("Pleaseinputthecarnumber\n");

scanf("%d",&traflist[k].car);

printf("Pleaseinputthepoliceman'sname\n");

scanf("%s",&traflist[k].police);

printf("Pleaseinputthetrafficnumber\n");

scanf("%d",&traflist[k].num);

printf("Pleaseinputthedate\n");

scanf("%d.%d.%d",&traflist[k].year,&traflist[k].month,&traflist[k].date);

printf("\n\n");

printf("-----------------------------------------------------------------\n");

}

for(k=i;k

{

fprintf(fp,"\n%s%d%s%d%d.%d.%d",traflist[k].driver,traflist[k].car,traflist[k].police,traflist[k].num,traflist[k].year,traflist[k].month,traflist[k].date);//向文件输入}

printf("Complete!

\n");

fclose(fp);

Sort_by_Name();

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

当前位置:首页 > 初中教育 > 科学

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

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