C语言课程设计摩托车资料查询.docx
- 文档编号:2779808
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:23
- 大小:237.33KB
C语言课程设计摩托车资料查询.docx
《C语言课程设计摩托车资料查询.docx》由会员分享,可在线阅读,更多相关《C语言课程设计摩托车资料查询.docx(23页珍藏版)》请在冰豆网上搜索。
C语言课程设计摩托车资料查询
1.课程设计的目的
随着人们生活水平的提高,人们为了方便出行都有了买摩托车的想法,那么,简单明了的获得基本的摩托车资讯,了解摩托车的性能,是买车必不可少的步骤。
于是尝试编写了一个小的摩托车资料查询程序,希望对人们有所帮助。
该程序一共有七个选项,可以进行摩托车输入、删除、查询、修改、显示、保存、退出功能,能保存摩托车的名称、产地、价格、排量、油耗,操作界面简洁,方便的进行操作。
可以帮助人们进行摩托车资料的查询。
此程序运用了函数、条件、循环、指针、结构体等多个知识点,综合了链表和文件的打开和保存编写的。
用户轻松的按键既可实现对软件的操作,操作简单,功能丰富,可以很好的查询用户所需的资料。
以便了解市场行情与最新资料。
进行摩托车之间的比较[1]。
摩托车的发展像一层层台阶,越向上发展越高级。
1885年的原始摩托车摆在第一层的地面上。
第二层是世界首批生产的摩托车,这是1894年德国的双缸四冲程发动机的摩托自行车,共生产了1000辆。
第三层是20世纪30年流行的竞赛摩托车,此的的摩托车已经具备实用的功能了。
第四层是20世纪70年代之后的现代豪华摩托车。
该图不仅表明了摩托车发展的四个阶段,还配置四个阶段的车辆驾驶者的不同的装束。
20世纪70年代之后,摩托车生产又采用了电子点火技术、电启动、盘式制动器、流线型车体护板等,以及90年代的尾气净化技术、ABS防抱死制动装置等,使摩托车成为造型美观、性能优越、使用方便、快速便当的先进的机动车辆,成为当代地球文明的重要标志之一。
尤其是大排量豪华型摩托车已经把当今汽车先进技术移植到摩托车上,使摩托车达到炉火纯青的境界。
摩托车的发展进入了第四阶段--鼎盛阶段。
2.设计方案论证
2.1设计思路
建立一个函数,用来保存摩托车的名称、产地、价格等信息,完成资料查询的功能。
主函数可以调用七个子函数,分别完成输入、删除、查询、修改、显示、退出七个功能。
在主函数中可以设置调用七个子函数的方法,例如按1,2,3,4,5,6,0数字键,则分别可以执行某个功能模块[2]
主要功能模块即如图1所示:
图1摩托车资料查询系统的主要功能模块
2.2程序设计
数据结构体的定义:
将一个摩托车的信息作为一个结构体,由于利用链表所以在结构体中别忘记指向后继结点的指针。
如下
structcar
{
charnum[10];//编号
charname[20];
charplace[8];
intprice;
chardispla[4];
intfuel;
charneartime[10];//最近更新时间
};
typedefstructnode
{
structcardata;
structnode*next;
}
Node,*Link;
main()主函数:
主函数是程序的入口,采用模块化设计,首先声明一些必要变量和结构体,利用链表文件指针,if条件语句,while的当型循环,利用switch语句处理多分支选择,当表达式的值与某个case后面的常量表达式相等时,就执行此case后面的语句,若所有的case中无与其匹配的,则执行default后面的语句。
设置一个断点,即当返回值为一定条件时运行exit()函数来结束程序,以免造成死循环[3]。
流程图如下图2所示:
case1case2case3case4case5case6case0
图2主函数流程图
查询函数:
利用if语句进行选择查询方式(按编号或按名称),用printf进行输出[4]。
查询函数流程图如图3所示:
图3查询函数流程图
删除函数:
利用if语句进行选择删除方式(按编号或按名称),用printf进行输出。
流程图如图4所示:
NN
YY
图4删除函数流程图
2.3源程序
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
intshoudsave=0;//
structcar
{
charnum[10];//编号
charname[20];
charplace[8];
intprice;
chardispla[4];
intfuel;
charneartime[10];//最近更新时间
};
typedefstructnode
{
structcardata;
structnode*next;
}Node,*Link;
voidmenu()
{
printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");
printf("\t1输入摩托车资料\t\t\t\t\t2删除摩托车资料\n");
printf("\t3查询摩托车资料\t\t\t\t\t4修改摩托车资料\n");
printf("\t5显示摩托车资料\t\t\t\t\t6保存摩托车资料\n");
printf("\t\t\t\t\t0退出\t\t\t\t\t\n");
printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n");
}
voidprintstart()
{
printf("-----------------------------------------------------------------------\n");
}
voidWrong()
{
printf("\n=====>提示:
输入错误!
\n");
}
voidNofind()
{
printf("\n=====>提示:
没有找到该摩托车!
\n");
}
voidprintc()//本函数用于输出中文
{
printf("编号\t名称产地油耗排量价格\n");
}
voidprinte(Node*p)//本函数用于输出英文
{
printf("%-12s%s\t%s\t%d\t%s\t%d\n",p->data.num,p->data.name,p->data.place,p->data.fuel,p->data.displa,p->data.price);
}
Node*Locate(Linkl,charfindmess[],charnameornum[])//该函数用于定位连表中符合要求的接点,并返回该指针
{
Node*r;
if(strcmp(nameornum,"num")==0)//按编号查询
{
r=l->next;
while(r!
=NULL)
{
if(strcmp(r->data.num,findmess)==0)
returnr;
r=r->next;
}
}
elseif(strcmp(nameornum,"name")==0)//按名称查询
{
r=l->next;
while(r!
=NULL)
{
if(strcmp(r->data.name,findmess)==0)
returnr;
r=r->next;
}
}
return0;
}
voidAdd(Linkl)//增加摩托车
{
Node*p,*r,*s;
charnum[10];
r=l;
s=l->next;
while(r->next!
=NULL)
r=r->next;//将指针置于最末尾
while
(1)
{
printf("请你输入编号(以'0'返回上一级菜单:
)");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:
编号为'%s'的摩托车已经存在,若要修改请选择'4修改'!
\n",num);
printstart();
printc();
printe(s);
printstart();
printf("\n");
return;
}
s=s->next;
}
p=(Node*)malloc(sizeof(Node));
strcpy(p->data.num,num);
printf("请你输入名称:
");
scanf("%s",p->data.name);
getchar();
printf("请你输入产地:
");
scanf("%s",p->data.place);
getchar();
printf("请你输入价格:
");
scanf("%d",&p->data.price);
getchar();
printf("请你输入排量:
");
scanf("%s",&p->data.displa);
getchar();
printf("请你输入油耗:
");
scanf("%d",&p->data.fuel);
getchar();//信息输入已经完成
p->next=NULL;
r->next=p;
r=p;
shoudsave=1;
}
}
voidQur(Linkl)//查询摩托车
{
intsel;
charfindmess[20];
Node*p;
if(!
l->next)
{
printf("\n=====>提示:
没有资料可以查询!
\n");
return;
}
printf("\n=====>1按编号查找\n=====>2按名称查找\n");
scanf("%d",&sel);
if(sel==1)//编号
{
printf("请你输入要查找的编号:
");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("\t\t\t\t查找结果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
elseif(sel==2)//名称
{
printf("请你输入要查找的名称:
");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
printf("\t\t\t\t查找结果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else
Wrong();
}
voidDel(Linkl)//删除
{
intsel;
Node*p,*r;
charfi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 摩托车 资料 查询