C语言课设论文.docx
《C语言课设论文.docx》由会员分享,可在线阅读,更多相关《C语言课设论文.docx(60页珍藏版)》请在冰豆网上搜索。
![C语言课设论文.docx](https://file1.bdocx.com/fileroot1/2023-5/29/c39870d0-aed3-447e-b1e3-6f4a57846f6d/c39870d0-aed3-447e-b1e3-6f4a57846f6d1.gif)
C语言课设论文
第一章绪论
1.1开发背景
C语言是1972年由美国的DennisRitchie设计发明的,并首次在UNIX操作系统的DECPDP-11计算机上使用。
它由早期的编程语言BCPL 发展演变而来。
在1970年, AT&T 贝尔实验室的 KenThompson根据BCPL语言设计出较先进的并取名为B的语言,最后导了C语言的问世。
随着微型计算机的日益普及,出现了许多C语言版本。
由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。
为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准。
1.2C语言的特点
C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。
C语言具有下列特点:
(1).C是结构式语言
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。
(2).C语言功能齐全
C语言具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。
另外C语言也具有强大的图形功能,支持多种显示器和驱动。
(4).C语言适用范围大
C语言还有一个突出的优点就是适合于多种操作系统。
第二章系统分析
2.1功能需求分析
本系统为《长春公交信息管理系统》,与市场上现有的系统来类比,用客户(或是我们自己)需要一个比以往的手动录入和电话咨询,更为方便快捷的方式来为自己服务。
本系统就充分做到了这一点。
更为公交集团的工作者和一般使用者带来了方便。
本系统可以升级,在系统的发展方面具有极高的可移值性。
本系统只需普通的PC机就可以通过局域网进行连接,方便,更为使用者降低了成本。
人员、时间、设备、系统、一次性投入资金、持续性投入资金之后,只需在必要的时候为系统升级。
面对信息发展迅速的今天,公交集团必须拥有一个这样的系统来方便其管理。
2.2性能需求分析
1.调查研究,收集数据
调查研究和收集数据应该围绕问题起因进行,一方面要验证有限定问题阶段形成的假设,另一方面要探讨产生问题的根本原因,为下一步提出解决问题的备选方案做准备。
调查研究常用的有四种方式,即阅读文件资料、访谈、观察和调查。
收集的数据和信息包括事实(facts)、见解(opinions)和态度(attitudes)。
要对数据和信息去伪存真,交叉核实,保证真实性和准确性。
2.提出备选方案和评价标准
通过深入调查研究,使真正有待解决的问题得以最终确定,使产生问题的主要原因得到明确,在此基础上就可以有针对性地提出解决问题的备选方案。
第三章总体设计与详细设计
3.1总体设计
《长春公交信息管理系统》包括如下几个功能:
基本信息选项、查询功能选项、统计功能选项。
◆基本信息选项,其中包括增加功能选项、修改功能选项、删除功能选项;
◆查询功能选项,其中包括查询所有路线、查询线路所有站点、查询A-B两地的公交线路;
◆统计功能选项,用来统计位于前十名的站点。
3.2详细设计
《长春公交信息管理系统》具体功能如下:
主界面功能图:
图1.1主界面
基本信息选项中的增加功能选项:
图1.2增加线路名称
图1.3加站点名称
基本信息选项中的修改功能选项:
图1.4改线路名称
图15.修改站点名称
基本信息选项中的删除功能选项:
图1.6除线路名称
图1.7删除站点名称
基本信息选项中的查询功能选项:
图1.8所有线路
图1.9所有站点
图1.10需转车站点
图1.11直达车站点
基本信息选项中的统计功能选项:
3.3函数功能设计
//全局变量定义
structbus_struct{//线路结构体
intbusNo;
charstopName[21][30];
intsum;
};
structbus_structbus;//线路变量
FILE*fpbus;//指向文件bus.txt的指针
//函数声明
voidinfo();//基本信息函数
voidinq();//查询函数
voidstat();//统计函数
voidadd();//增加函数
voiddel();//删除函数
voidupd();//修改函数
voidbuslineAdd();//增加新线路函数
voidbusstopAdd();//增加线路站点函数
voidbuslineDel();//删除现有线路函数
voidbusstopDel();//删除线路站点函数
voidbuslineUpd();//修改线路名称函数
voidbusstopUpd();//修改站点名称函数
voidbuslineInq();//查询站点信息函数
voidbusstopInq();//查询线路信息函数
voidbusInq();//查A-B直达
voidsavebus(intNo);//将数据写入bus.txt文件函数
voidreadbus(intNo);//将数据从bus.txt文件中读出函数
intfindbusline(intNo);//查询公交线路是否存在函数,存在返回1,否则返回0
intfindbusstop(intNo,charName[]);//查询站点是否存在函数,存在返回1,否则返回0
voidaddstop(intNo);//增加站点内层
intinqstop(charName[]);//查询经过某站点的线路数量
voidchangbus(intA[],intB[],inta,intb);//转车函数
第四章编码实现
4.1增加功能代码的实现
voidbuslineAdd()//增加新线路函数
{
intNo;
intflag;
charch;
do
{
printf("请输入要增加的线路名称:
");
fflush(stdin);
scanf("%d",&No);
flag=findbusline(No);
if(flag==1)
{
printf("\t\t\t此线路已存在,请重新输入!
(按任意键继续)\n");
getch();
ch='y';
continue;
}
else
{
bus.busNo=No;
bus.sum=0;
addstop(bus.busNo);
}
printf("\n是否继续增加新线路?
Y:
继续;N:
退出");
fflush(stdin);
scanf("%c",&ch);
}while(ch=='y'||ch=='Y');
}
voidbusstopAdd()//增加线路站点函数
{
intNo;
intflag;
charch;
do
{
printf("请输入要增加站点的线路名称:
");
scanf("%d",&No);
flag=findbusline(No);
if(flag==0)
{
printf("\n\t此线路不存在,请重新输入!
(按任意键继续)\n\n");
getch();
ch='y';
continue;
}
else
{
addstop(bus.busNo);
}
printf("\n是否继续增加其他线路站点?
Y:
继续;N:
退出");
fflush(stdin);
scanf("%c",&ch);
}while(ch=='y'||ch=='Y');
}
voidbuslineDel()//删除现有线路函数
{
intNo;
intflag;
inti;
charch;
do
{
printf("请输入要删除的线路名称:
");
fflush(stdin);
scanf("%d",&No);
flag=findbusline(No);
if(flag==0)
{
printf("\t\t\t此线路不存在,请重新输入!
(按任意键继续)\n");
getch();
ch='y';
continue;
}
else
{
readbus(No);
bus.busNo=0;
for(i=1;i<=bus.sum;i++)
{
strcpy(bus.stopName[i],"");
}
bus.sum=0;
savebus(No);
printf("\t\t删除成功!
\n");
}
printf("\n是否继续删除新线路?
Y:
继续;N:
退出");
fflush(stdin);
scanf("%c",&ch);
}while(ch=='y'||ch=='Y');
}
4.2修改功能代码的实现
voidbuslineUpd()//修改线路名称函数
{
intNo,No1;
intflag,flag1;
charch;
inti;
do
{
printf("请输入要修改的线路名称:
");
fflush(stdin);
scanf("%d",&No);
flag=findbusline(No);
if(flag==0)
{
printf("\t\t\t此线路不存在,请重新输入!
(按任意键继续)\n");
getch();
ch='y';
continue;
}
else
{
printf("请输入修改后的新线路名称:
");
scanf("%d",&No1);
flag1=findbusline(No1);
if(flag1==1)
{
printf("\t\t\t此线路已存在,请重新输入!
(按任意键继续)\n");
getch();
ch='y';
continue;
}
else
{
readbus(No);
bus.busNo=No1;
savebus(No1);
readbus(No);
bus.busNo=0;
for(i=1;i<=bus.sum;i++)
{
strcpy(bus.stopName[i],"");
}
bus.sum=0;
savebus(No);
printf("\t\t修改成功!
\n");
}
}
printf("\n是否继续修改其他线路?
Y:
继续;N:
退出");
fflush(stdin);
scanf("%c",&ch);
}while(ch=='y'||ch=='Y');
}
voidbusstopUpd()//修改站点名称函数
{
intNo;
intflag,flag1,m;
charch,ch1;
inti;
charName[30],Name1[30];
do
{
printf("请输入要修改站点的线路名称:
");
scanf("%d",&No);
flag=findbusline(No);
if(flag==0)
{
printf("\n\t此线路不存在,请重新输入!
(按任意键继续)\n\n");
getch();
ch='y';
continue;
}
else
{
do
{
printf("请输入要修改的站点名称:
");
scanf("%s",Name);
flag1=findbusstop(No,Name);
if(flag1==0)
{
printf("\t\t\t此站点不存在,请重新输入!
(按任意键继续)\n");
}
else
{
printf("请输入新的站点名称:
");
scanf("%s",Name1);
flag1=findbusstop(No,Name1);
if(flag1==1)
{
printf("\t\t\t此站点已存在,请重新输入!
(按任意键继续)\n");
getch();
ch='y';
continue;
}
else
{
readbus(No);
for(i=1;i<=bus.sum;i++)
{
m=strcmp(bus.stopName[i],Name);
if(m==0)
break;
}
strcpy(bus.stopName[i],Name1);
savebus(bus.busNo);
}
}
printf("\n是否继续修改该线路的其他站点名称?
Y:
继续;N:
退出");
fflush(stdin);
scanf("%c",&ch1);
}while(ch1=='Y'||ch1=='y');
}
printf("\n是否继续修改其他线路站点?
Y:
继续;N:
退出");
fflush(stdin);
scanf("%c",&ch);
}while(ch=='y'||ch=='Y');
}
4.3删除功能代码的实现
voidbusstopDel()//删除线路站点函数
{
intNo;
intflag,flag1,m;
charch,ch1;
inti;
charName[30];
do
{
printf("请输入要删除站点的线路名称:
");
scanf("%d",&No);
flag=findbusline(No);
if(flag==0)
{
printf("\n\t此线路不存在,请重新输入!
(按任意键继续)\n\n");
getch();
ch='y';
continue;
}
else
{
do
{
printf("请输入要删除的站点名称:
");
scanf("%s",Name);
flag1=findbusstop(No,Name);
if(flag1==0)
{
printf("\t\t\t此站点不存在,请重新输入!
(按任意键继续)\n");
}
else
{
readbus(bus.busNo);
for(i=1;i<=bus.sum;i++)
{
m=strcmp(bus.stopName[i],Name);
if(m==0)
break;
}
strcpy(bus.stopName[i],"");
savebus(bus.busNo);
}
printf("\n是否继续输入该线路新的站点名称?
Y:
继续;N:
退出");
fflush(stdin);
scanf("%c",&ch1);
}while(ch1=='Y'||ch1=='y');
}
printf("\n是否继续增加其他线路站点?
Y:
继续;N:
退出");
fflush(stdin);
scanf("%c",&ch);
}while(ch=='y'||ch=='Y');
}
voidbuslineUpd()//修改线路名称函数
{
intNo,No1;
intflag,flag1;
charch;
inti;
do
{
printf("请输入要修改的线路名称:
");
fflush(stdin);
scanf("%d",&No);
flag=findbusline(No);
if(flag==0)
{
printf("\t\t\t此线路不存在,请重新输入!
(按任意键继续)\n");
getch();
ch='y';
continue;
}
else
{
printf("请输入修改后的新线路名称:
");
scanf("%d",&No1);
flag1=findbusline(No1);
if(flag1==1)
{
printf("\t\t\t此线路已存在,请重新输入!
(按任意键继续)\n");
getch();
ch='y';
continue;
}
else
{
readbus(No);
bus.busNo=No1;
savebus(No1);
readbus(No);
bus.busNo=0;
for(i=1;i<=bus.sum;i++)
{
strcpy(bus.stopName[i],"");
}
bus.sum=0;
savebus(No);
printf("\t\t修改成功!
\n");
}
}
printf("\n是否继续修改其他线路?
Y:
继续;N:
退出");
fflush(stdin);
scanf("%c",&ch);
}while(ch=='y'||ch=='Y');
}
第五章调试与测试
测试结果如下:
5.1增加功能测试:
5.2修改功能测试:
5.3删除功能测试:
5.4查询功能测试:
第六章总结与心得
经过一个星期的上机实践学习,使我对才C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。
通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。
特别是作为高职生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。
其目录为:
程序要求、算法分析、流程图、源程序、调试结果实习体会。
最后感谢我的指导老师王锐、戴红,感谢她们对我细心指教。
附录
附录一:
源代码
//头文件
#include
#include
#include
#include
//全局变量定义
structbus_struct{//线路结构体
intbusNo;
charstopName[21][30];
intsum;
};
structbus_structbus;//线路变量
FILE*fpbus;//指向文件bus.txt的指针
//函数声明
voidinfo();//基本信息函数
voidinq();//查询函数
voidstat();//统计函数
voidadd();//增加函数
voiddel();//删除函数
voidupd();//修改函数
voidbuslineAdd();//增加新线路函数
voidbusstopAdd();//增加线路站点函数
voidbuslineDel();//删除现有线路函数
voidbusstopDel();//删除线路站点函数
voidbuslineUpd();//修改线路名称函数
voidbusstopUpd();//修改站点名称函数
voidbuslineInq();//查询站点信息函数
voidbusstopInq();//查询线路信息函数
voidbusInq();//查A-B直达
voidsavebus(intNo);//将数据写入bus.txt文件函数
voidreadbus(intNo);//将数据从bus.txt文件中读出函数
intfindbusline(intNo);//查询公交线路是否存在函数,存在返回1,否则返回0
intfindbusstop(intNo,charName[]);//查询站点是否存在函数,存在返回1,否则返回0
voidaddstop(intNo);//增加站点内层
intinqstop(charName[]);//查询经过某站点的线路数量
voidchangbus(intA[],intB[],inta,intb);//转车函数
//函数定义
main()//主函数
{
charselmenu;//选择项变量
if((fpbus=fopen("bus.txt","a+"))==NULL)//建立相关文件
{
printf("由于系统原因操作失败,停止运行!
");
exit(-1);
}
fclose(fpbus);
if((fpbus=fopen("bus.txt","r+"))==NULL)//打开相关文件
{
printf("由于系统原因操作失败,停止运行!
");
exit(-1);
}
do
{
system("cls");
printf("\n\n\n\n\t\t\t长春公交信息管理系统\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");
pri