汽车站.docx
- 文档编号:16381485
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:26
- 大小:90.50KB
汽车站.docx
《汽车站.docx》由会员分享,可在线阅读,更多相关《汽车站.docx(26页珍藏版)》请在冰点文库上搜索。
汽车站
C语言课程设计报告书
随着计算机技术的发展,可视编程技术占有了越来越重要的作用。
本报告书详细叙述了基于VisualC++6.0环境下的汽车站车票管理系统的设计过程以及程序源代码。
本报告书从概要设计,详细设计,参考源程序代码以及显示程序运行的截屏等方面详尽的介绍了软件开发过程。
此次汽车车票管理系统的开发目的是使我们用面向对象的方式来思考和解决问题的能力,并且可以掌握字符数组的使用、字符指针的使用、数据库的设计和文件使用以及C语言语法。
一、需求分析
汽车车票管理系统的功能:
(1)录入班次信息(信息用文件保存),可不定时地增加班次数据;
(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息);
(3)查询路线(起点、终点):
可按班次号查询,可按终点站查询;
(4)增加及修改班次和删除班次信息;
(5)售票和退票功能。
当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数。
退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数我所解决的问题是汽车站车票的管理,对汽车站车次信息和售票退票进行管理和维护。
规定软件是对汽车站售票退票的情况进行处理。
车票管理系统软件的功能模块有:
(1)提供菜单界面,方便用户对程序个功能进行选择,选择要实现的功能按enter键进入该功能。
(2)接受用户输入的功能项,按enter键结束输入并将进入该系统,其需要的结果显示出来,方便用户查看。
(3)完成每次功能,可保存用户的修改的信息,及时更新文件信息。
下次查询时内容为最新信息。
实时的信息更新对比等。
二、算法设计
(1)流程图:
(2)重要的数据结构:
typedefstructinformation
{
intnumb;
charstarttime[10];
charbegin[21];
charend[21];
floatlasttime;
intcanload;
intalreadyload;
structinformation*next;
}INFORMATION,*PINF;
(3)主要算法思想:
录入函数:
这一项的主要做用是进行菜单的制作,对其进行选择,从而进行下面的工作。
查询班次:
这一项的主要做用是了解汽车的出车次数,其查询的方法有两种:
一、按班次号查询;二、按终点站查询。
增加班次:
1、输入增加班次的次数;2、返回
请选择1~2,
输入要增加班次的次数
输入错误
删除班次:
1、输入删除班次的次数;2、返回
请选择1~2,
输入要删除班次的次数,
输入错误
(4)系统的不足:
界面设置存在问题,程序代码对于繁琐,结构化、模板化不明显。
系统实现的功能很少,系统也存在着很多的不足。
在实现功能的过程当中无法做到那么的准确,真正的做到不出一点错误,还有就是这个系统的运行的过程也会出现错误。
三、用户手册:
尊敬的用户你好,欢迎使用汽车站车票管理系统,运行程序输入数据按回车键一步一步的运行程序最后到结果。
输入正确的数据得到结果。
四、调试及测试:
在制作程序的过程当中出现的很多错误,经过很长时间的调式,程序在制作的过程当中出现很难解决的问题,导致在做程序的过程种花费了很长的时间。
但是,通过此次的过程设计我C语言这门课又有了不同的了解,而后在其不断的努力之下最后终于调式成功,对其进行调式从而使得程序得以运行从而得到结果。
调式成功之后下面的试进行测试,通过测试从而得到制作的程序是否是所需要的程序。
五、小结:
这次程序设计试验增加了我对程序设计在实践上的认识,熟练了链表的使用,尤其是考虑到大量数据时插入删除操作此种数据结构对运行时间上的节省和方便。
加深了对模块化的认识,模块之间应达到高内聚低耦合。
C没有面向对象的直接应用,但是模块化依然是非常明确的方向。
这样可以提高代码重用和方便修改。
一些函数可以利用c++的stl,使程序规范高效容易读懂。
程序中用到的获取系统时间的函数,需要上网查找或去图书馆找资料,其过程提高了自学能力。
报告的撰写是回顾巩固程序的好方法。
为了提高我们的实践能力和合作能力,让我们学以致用,能灵活运用所学的知识进行再创造,学校特安排我们进行为期一周的C语言课程设计实习,并安排了专门的指导老师帮助辅导,让我们在规范化、严谨化、实用化上面有了很大进展。
为今后的工作适应环境。
在此次车票管理系统开发过程中,有很多东西值得我们思考并总结。
开发过程大体可分为以下几个步骤:
(1)思考总体设计方案:
总体结构和模块外部设计,功能分配。
思考要实现整个程序大体需要的几个模块和其中用到的C语言基本操作符、语句格式等。
(2)画出总体设计方案流程图:
用流程图的形式展现你的基本编程思想。
(3)流程图具体化:
即将流程图中的几大模块的具体实现思考清楚,可以用流程图的形式展现.并想好实现的关键代码框架。
(4)编辑程序代码:
这是一个至关重要复杂而且需要反复修改的环节,在此环节中你将发现总体设计和模块思想会存在很多问题,需不断改进.如何实现各函数功能,达到预期效果也将是一项繁复的工作。
(5)代码的调试:
在VisualC++6.0环境下输入代码并进行调试和正确运行。
在调试过程中会遇到很多需要精化的地方,需要十足的耐心与细心,不断改进完善程序。
(6)最后修饰:
程序可以正确运行之后,再不影响程序功能的情况下,运用各种辅助性符号,使界面更加美观漂亮,操作更人性化.增强程序的新意与可行性。
通过这次课程设计,使我们更加熟悉的掌握了C语言的运用。
帮助我们熟悉了更多C语言的功能,提高了我们的动手能力,学到了许多解决实际问题的宝贵经验.同时也挖掘出了我们潜在的能力,使我们对自己更有自信,对编程也更有兴趣。
我相信,只要努力、勤奋、坚持不懈,就没有什么做不到的事,不能还没开始就退缩,要勇于拼搏,敢于创新。
通过对本次课程设计的制作我对C语言这门课有更深刻的理解,我觉的C语言这门课虽然学习有一定的难度,但是真的学习起来又有不同的感觉,觉的在学习的过程当中又有很多的乐趣,自己独立的写完一个程序有一种非常愉悦的感觉。
在学习的过程当中能体会到不一样的感觉。
写完这个程序后我觉的我对C语言又有了不一样的感觉。
六、参考文件:
[1]黄明等编著《C语言课程设计》北京:
电子工业出版社
[2]郭翠英编著《C语言课程设计案例精编》北京:
中国水利水电出版社
[3]宁正元《数据结构(c语言)》南京:
东南大学出版社。
2000年6月第1版
[4]严蔚敏等《数据结构(c语言版)》北京:
清华大学出版社,1997年4月第1版
[5]谭浩强编著《C程序设计题解与上机指导(第3版)》北京:
清华大学出版社
[6]谭浩强编著《C程序设计(第3版)》北京:
清华大学出版
源程序:
#include
#include
#include
#include
typedefstructinformation
{
intnumb;
charstarttime[10];
charbegin[21];
charend[21];
floatlasttime;
intcanload;
intalreadyload;
structinformation*next;
}INFORMATION,*PINF;//结构体类型的指针
INFORMATION*head;//建立班次头结点
INFORMATION*rear;//建立班次尾结点
intmain()//主程序
{
system("color1f");
//system("modecon:
cols=140lines=130");
head=rear=(INFORMATION*)malloc(sizeof(INFORMATION));
head->next=NULL;
//函数声明
voidRead_In();//文件读入
voidNewMessage();//新纪录*录入函数******
voidScan();//浏览全部信息
voidLookup();//查询信息
voidadd();//增加记录
voiddeletenesssage();//删除记录
voidBuyticket();//预定车票
voidCancelticket();//退订车票
voidSave_In();//把数据重新保存到文件中
Read_In();//读入信息
inti=0;
while(i!
=8)
{
printf("*******汽车站车票管理系统*******\n");//总菜单
printf("1、录入班次\n");
printf("2、浏览信息\n");
printf("3、查询班次\n");
printf("4、增加班次\n");
printf("5、删除班次\n");
printf("6、预订车票\n");
printf("7、退订车票\n");
printf("8、退出系统\n");
printf("**************************\n");
printf("请选择你所需要的功能:
");
scanf("%d",&i);
switch(i)
{
case1:
NewMessage();break;
case2:
Scan();break;
case3:
search();break;
case4:
add();break;
case5:
deletenessage();break;
case6:
Buyticket();break;
case7:
Cancelticket();break;
case8:
quit();break;
default:
printf("输入错误,请确保你的输入为1--8.\n");break;
}
}//while(i!
=8)
Save_In();//保存信息
return0;
}
voidRead_In()//班次信息文件读入
{
FILE*fp;
if((fp=fopen("information.txt","r+"))==0)
{
printf("\n打开文件错误!
\n");
exit(0);
}
while(!
feof(fp))//读取文件并测试是否抵达文件尾
{
INFORMATION*p;
p=(INFORMATION*)malloc(sizeof(INFORMATION));//开辟内存空间
fscanf(fp,"%d%s%s%s%f%d%d\n",&p->numb,&p->starttime,&p->begin,&p->end,&p->lasttime,&p->canload,&p->alreadyload);
rear->next=p;//在INFORMATION单链表中依次插入下一结点
rear=p;
rear->next=NULL;
}
fclose(fp);
}
voidSave_In()//保存数据
{
FILE*fp;
if((fp=fp=fopen("information.txt","r+"))==0)
{
printf("\n打开文件错误!
\n");
exit(0);
}
PINFp=head->next;
while(p!
=NULL)
{
fprintf(fp,"%d\t%s\t%s\t%s\t%.2f\t%d\t%d\n",p->numb,p->starttime,p->begin,p->end,p->lasttime,p->canload,p->alreadyload);
p=p->next;
}
fclose(fp);
}
voidScan()
{
PINFp=head->next;
printf("\n各班次信息如下:
\n");
printf("\n班次号\t出发时间\t起点\t终点\t行车时间额定载客量已订票人数\n");
printf("____________________________________________________________________________\n");
while(p!
=NULL)
{
printf("%d\t%s\t\t%s\t%s\t%.2f\t\t%d\t\t%d\n",p->numb,p->starttime,p->begin,p->end,p->lasttime,p->canload,p->alreadyload);
p=p->next;
}
printf("____________________________________________________________________________\n");
}
voidLookup()//查询班次信息
{
system("color1f");
//system("modecon:
cols=140lines=130");
voidSearchbyNum();//函数声明
voidSearchbyEnd();//函数声明
inti,j=0;
while(j!
=1)
{
printf("\n");
printf("**************************\n");
printf("1.按班次号查询\t\n");
printf("2.按终点站查询\t\n");
printf("**************************\n");
printf("请选择查询方式:
");
scanf("%d",&i);
switch(i)
{
case1:
SearchbyNum();break;
case2:
SearchbyEnd();break;
default:
printf("\n输入错误,请确保你的输入为1--2.\n");
break;
}
printf("**************************\n");
printf("\n1.返回主菜单2.继续查询:
");
scanf("%d",&j);
}
}
voidSearchbyNum()//按班次号查询班次
{
system("color1f");
//system("modecon:
cols=140lines=130");
intGetHour(char*s);
intGetMinute(char*s);
PINFp,q;//定义两个结点
intnum;//要查询的班次号
intj=0;//判断班次
p=head->next;
printf("\n请输入需要查询的班次号:
");
scanf("%d",&num);
while(p!
=NULL)
{
if(p->numb-num==0)
{
q=p;
printf("\n");
printf("班次号:
\t");printf("%d\n",q->numb);
printf("出发时间:
\t");printf("%s\n",q->starttime);
printf("起点:
\t\t");printf("%s\n",q->begin);
printf("终点:
\t\t");printf("%s\n",q->end);
printf("行车时间:
\t");printf("%.2f\n",q->lasttime);
printf("额定载客量:
\t");printf("%d\n",q->canload);
printf("已定票人数:
\t");printf("%d\n",q->alreadyload);
time_tt;
structtm*timeinfo;
time(&t);
timeinfo=localtime(&t);
if(GetHour(q->starttime)
printf("\n此班次车已发出!
\n");
else
if(GetHour(q->starttime)==timeinfo->tm_hour)
{
if(GetMinute(q->starttime)<=timeinfo->tm_min)
printf("\n此班次车已发出!
\n");
else
printf("\n此班次车尚未发出!
\n");
}
else
printf("\n此班次车尚未发出!
\n");
j++;
}
p=p->next;
}//while(p!
=NULL)
if(j==0)
printf("\n对不起,不存在此班次!
\n");
}
voidSearchbyEnd()//按终点站查询班次
{
system("color1f");
//system("modecon:
cols=140lines=130");
intGetHour(char*s);
intGetMinute(char*s);
PINFp,q;//定义两个结点
charend[21];//要查询的终点站名
intj=0;
p=head->next;
printf("\n请输入需要查询的终点站名:
");
scanf("%s",end);
while(p!
=NULL)
{
if(strcmp(p->end,end)==0)
{
q=p;
printf("\n");
printf("班次号:
\t");printf("%d\n",q->numb);
printf("出发时间:
\t");printf("%s\n",q->starttime);
printf("起点:
\t\t");printf("%s\n",q->begin);
printf("终点:
\t\t");printf("%s\n",q->end);
printf("行车时间:
\t");printf("%.2f\n",q->lasttime);
printf("额定载客量:
\t");printf("%d\n",q->canload);
printf("已定票人数:
\t");printf("%d\n",q->alreadyload);
time_tt;
structtm*timeinfo;
time(&t);
timeinfo=localtime(&t);
if(GetHour(q->starttime)
printf("\n此班已发出!
\n");
else
if(GetHour(q->starttime)==timeinfo->tm_hour)
{
if(GetMinute(q->starttime)<=timeinfo->tm_min)
printf("\n此班已发出!
\n");
else
printf("\n此班次车尚未发出!
\n");
}
else
printf("\n此班次车尚未发出!
\n");
j++;
}
p=p->next;
}//while(p!
=NULL)
if(j==0)
printf("\n对不起,不存在此班次!
\n");
}
voidadd()////增加记录
{
inti,j=5;
load();//调用按班次查询函数
printf("1.增加班次\n");
printf("2.返回\n");
printf("请选择(1-2)\n");
scanf("%d",&i);
if(i==1)
{
printf("1.请输入要增加的班次:
\n");
scanf("%s",records[class_num].num);
for(i=0;i if(strcmp(records[class_num].num,records[i].num)==0) //判断字符串比较是否相等,,待比较的字符串判断车次没重复 { printf("输入错误! \n"); getch();//从控制台读取一个字符,但不显示在屏幕上 break; } if(i==class_num) { get(i,j);//修改及增加班次* class_num++;//使班次数加1 save();//调用保存函数 } } } voiddeletemessage()//删除班次信息 { inti,h=0; charnum[10]; printf("1.删除班次\n"); printf("2.返回\n"); printf("请选择(1-2): \n"); scanf("%d",&i); if(i==1) { printf("请输入要删除的班次: \n"); scanf("%s",num); i=findnum(num);//调用班次查询函数 if(i==class_num) { printf("输入错误,无此班次! \n"); getch();//从控制台读取一个字符,但不显示在屏幕上 } else { printf("确定? (y/n)\n"); scanf("%s",num); if(num[0]=='y'||num[0]=='Y') { for(;i records[i]=records[i+1]; class_num--;//班次总数减1 save();//调用保存函数 printf("删除成功! \n"); getch(); } } } } voidBuyticket()//预定车票 { system("color1f"); //system("modecon: cols=140lines=130"); intGetHour(char*s); intGetMinute(char*s); inti=0; while(i! =1) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汽车站