C语言课设报告Word下载.docx
- 文档编号:22621651
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:24
- 大小:630.47KB
C语言课设报告Word下载.docx
《C语言课设报告Word下载.docx》由会员分享,可在线阅读,更多相关《C语言课设报告Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
◆如何保证数据的储存性:
由于课题的特殊性,处罚单应具有良好的储存性,为了达到目的,将每一组输入的数组都写入文件中,一旦要调用数据再读入内存中,这项功能使得该程序即使在非正常关闭之后仍然“记忆”之前输入的数据,数据安全是一大特点;
◆运行过程中的人性化改进:
一、每组数据都写入文件,数据的储存性良好;
二、一个功能实现完毕会有一个窗口提示是回到主菜单还是浏览数据,避免了输入数据后功能“断层”的尴尬;
◆如何实现结构体数组的排序:
结构体数组相比于其他数组,由于其包含了较多数据,不好交换,经过搜索资料,再加上课本里学过的“冒泡法”,实现了结构体数组的交换;
◆若查询的记录不存在,如何处理:
单独定义一个变量flag,初始值为0,如若查询到需要的数据便赋值为1,利用if语句返回当数据不存在时提示“can’tfindtherecord”避免了程序因找不到数据而产生的各种错误;
◆怎样整批导入数据并加入结构体数组:
由于结构体数组是写在txt文档内的,无法直接读出有几组数据,故用feof实现读至文件最后处,并自动记录有几组数据,加入原结构体数组。
由于自身学习的局限性,这个课程设计有很多功能起初时让根本无法下手,但经过在网上搜集一些别人的课程设计结果,集百家之长,再加上自身合编,总成以下的源程序:
#include<
stdio.h>
stdlib.h>
#include<
string.h>
#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:
DisplayAllRecords\n"
Display();
case3:
DeleteaRecord\n"
Delete();
case4:
Sort\n"
Sort_by_Name();
case5:
InsertaRecord\n"
Insert();
case6:
Query\n"
Query();
case7:
AddRecordsfromaTextFile\n"
AddfromText();
case0:
Goodbye!
\n"
exit(0);
}
}
}
intmenu_select()
{
charc;
do{
system("
cls"
printf("
1.InputRecords\n"
2.DisplayAllRecords\n"
3.DeleteaRecord\n"
4.Sort\n"
5.InsertaRecord\n"
6.Query\n"
7.AddRecordfromaTextFile\n"
0.Goodbye!
Giveyourchoice(0~7):
"
c=getchar();
}while(c<
'
0'
||c>
7'
//如果输入的数字不是0~7内的,便不会通过
return(c-'
voidInput()//输入函数
{inti,j;
//i为循环辅助参数,j为需要输入的数据数
FILE*fp;
fp=fopen("
records.txt"
"
w"
//打开records.txt,下面要将内存中的数据输入文件中
printf("
------------------------Input-----------------------------\n"
\nHowmanydatadoyouneed:
scanf("
%d"
&
j);
\n\nPleaseinputthedatainorder:
\n\n"
for(i=0;
i<
j;
i++)
Pleaseinputdriver'
sname:
scanf("
%s"
traflist[i].driver);
Pleaseinputthecarnumber:
traflist[i].car);
Pleaseinputthepoliceman'
traflist[i].police);
Pleaseinputthetrafficnumber:
traflist[i].num);
Pleaseinputthedate:
%d.%d.%d"
traflist[i].year,&
traflist[i].month,&
traflist[i].date);
-----------------------------------------------------------------\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);
//将数据输入文件
}
Complete!
NUM=NUM+j;
//记录数组中的数据数
fclose(fp);
printf_back();
voidDelete()//删除函数
inti;
intc;
charw[10];
//储存暂时的输入的姓名
intt;
intflag=0;
------------------------Delete--------------------------------\n"
Pleaseinputthedriver'
sname:
scanf("
w);
fp=fopen("
r"
!
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,&
//将文件中的数据输入内存
NUM=i;
NUM;
if(strcmp(traflist[i].driver,w)==0)//字符串比较函数
{
c=i;
printf("
------------------------------------------\n"
Driver'
%s\n"
traflist[i].driver);
Carnumber:
%d\n"
traflist[i].car);
Policename:
traflist[i].police);
Trafficnumber:
traflist[i].num);
Date:
%d.%d.%d\n"
traflist[i].year,traflist[i].month,traflist[i].date);
flag=1;
}
if(flag==0)//未找到数据
Can'
tfindthedata!
fclose(fp);
fclose(fp);
Areyousure?
\n1.Yes\t2.No[]\b\b"
t);
if(t==1)
fp=fopen("
for(i=0;
if(i!
=c)
{
fprintf(fp,"
traflist[i].driver,traflist[i].car,traflist[i].police,traflist[i].num,traflist[i].year,traflist[i].month,traflist[i].date);
//向文件输入
}
else
voidDisplay()//浏览函数
------------------------Display---------------------------\n"
for(i=0;
fscanf(fp,"
fclose(fp);
NUM=i;
carnumber:
printf_back();
voidQuery()//查询函数
inti,flag=0;
charm[10];
fscanf(fp,"
&
---------------------------Query---------------------------\n"
sman:
m);
&
if(strcmp(traflist[i].driver,m)==0)//字符串比较函数
%10s\n"
%5d\n"
puts(traflist[i].police);
-------------------------\n"
if(flag==0)
tfindthetraflist!
printf_back();
voidSort_by_Name()//按姓名排序
inti,j,k;
Traffics;
for(k=0;
k<
NUM-1;
k++)//冒泡法排序
{
for(j=0;
j<
NUM-k-1;
j++)
{if(strcmp(traflist[j].driver,traflist[j+1].driver)>
0)
{
s=traflist[j];
traflist[j]=traflist[j+1];
traflist[j+1]=s;
for(j=0;
fprintf(fp,"
traflist[j].driver,traflist[j].car,traflist[j].police,traflist[j].num,traflist[j].year,traflist[j].month,traflist[j].date);
//将新数据写入文件
voidInsert()//插入若干组数据
------------------------Insert-----------------------------\n"
a"
NUM=i+j;
if(NUM>
N)
Thedataistoobigtocontain!
/n"
//提示数据太大而无法储存
exit(0);
for(k=i;
k++)
sname\n"
traflist[k].driver);
Pleaseinputthecarnumber\n"
traflist[k].car);
traflist[k].police);
Pleaseinputthetrafficnumber\n"
traflist[k].num);
Pleaseinputthedate\n"
traflist[k].year,&
traflist[k].month,&
traflist[k].date);
fprintf(fp,"
traflist[k].driver,traflist[k].car,traflist[k].police,traflist[k].num,traflist[k].year,traflist[k].month,traflist[k].date);
//向文件输入}
fclose(fp);
Sort_by_Name();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 报告