汽车站.docx

上传人:b****6 文档编号:16381485 上传时间:2023-07-13 格式:DOCX 页数:26 大小:90.50KB
下载 相关 举报
汽车站.docx_第1页
第1页 / 共26页
汽车站.docx_第2页
第2页 / 共26页
汽车站.docx_第3页
第3页 / 共26页
汽车站.docx_第4页
第4页 / 共26页
汽车站.docx_第5页
第5页 / 共26页
汽车站.docx_第6页
第6页 / 共26页
汽车站.docx_第7页
第7页 / 共26页
汽车站.docx_第8页
第8页 / 共26页
汽车站.docx_第9页
第9页 / 共26页
汽车站.docx_第10页
第10页 / 共26页
汽车站.docx_第11页
第11页 / 共26页
汽车站.docx_第12页
第12页 / 共26页
汽车站.docx_第13页
第13页 / 共26页
汽车站.docx_第14页
第14页 / 共26页
汽车站.docx_第15页
第15页 / 共26页
汽车站.docx_第16页
第16页 / 共26页
汽车站.docx_第17页
第17页 / 共26页
汽车站.docx_第18页
第18页 / 共26页
汽车站.docx_第19页
第19页 / 共26页
汽车站.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

汽车站.docx

《汽车站.docx》由会员分享,可在线阅读,更多相关《汽车站.docx(26页珍藏版)》请在冰点文库上搜索。

汽车站.docx

汽车站

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)tm_hour)

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)tm_hour)

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)

{

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2