地铁站售票系统.docx
《地铁站售票系统.docx》由会员分享,可在线阅读,更多相关《地铁站售票系统.docx(23页珍藏版)》请在冰豆网上搜索。
![地铁站售票系统.docx](https://file1.bdocx.com/fileroot1/2023-6/14/54fcba96-08b6-4e77-8d98-f50714a5dd68/54fcba96-08b6-4e77-8d98-f50714a5dd681.gif)
地铁站售票系统
仲恺农业技术学院
课程设计
课程设计题目地铁站售票系统
姓名白崇亮
院(系)计算机科学与工程学院
专业班级计算机科学与技术052班
学号15号
指导教师李晟
职称讲师
设计日期2006年12月28日
仲恺农业技术学院教务处制
一、需求分析:
……………………………3
二、概要设计:
……………………………3~5
三、详细设计:
……………………………6~17
四、调试分析:
……………………………17~18
五、用户说明:
……………………………18
六、课程设计总结:
……………………………19~20
地铁站售票系统课程设计
一、需求分析:
该地铁站售票管理系统由三个模块构成:
分别是进入系统,完成系统相关的功能以及退出系统。
相关功能包含了查找到每个站需要的金额,输出你要到达的站应付的价钱,输入买票的数量,输入金额,输出找回余额等功能。
方便了乘客们购买车票,当你在相应的购票机上输进你需要到达的车站,再输入你需要购买车票的数量,该系统会提示你需要输进的金额,当你输进的钱过多会给你找回余额,当你输入的钱不够会提示你补回相应的金额。
最后该机器会给你车票上车。
欢迎再为你服务!
现在由于时间的限制,暂时只能实现这些功能。
以后我会一边学习一边完善这个系统。
希望我以后做出一个给现在车站所用的系统更完善,更使用。
这样让市民更加方便。
我现在有很多知识不会,希望老师和同学们多多指教,跟大家共同学习。
二、概要设计(数据结构设计,软件结构设计.流程图设计)
数据结构设计
该地铁站售票系统我运用了整形数据在内存中的存放形式以及运用switch语句来调用函数。
这种做法既简单又易明白以后希望同学们能够好好地把握它的用法。
在程序中我也运用了if语句,有了这个语句更容易实现这个程序
2、软件结构设计:
a、软件构架
b、模块之间的关系
“功能选择”这个框架分为下面六个模块,各模块之间的关系可用下表表示:
程序流程图
该程序的算法
#include""
#include""
voidchangshoulu();
voidchenjiaci(intc);
voidximenkou(intc);
voidgongyuanqian(intc);
voidnongjiangsuo(intc);
voidlieshilingyuan(intc);
voidyangji(intc);
voidtiyuxilu(intc);
voidtiyuzhongxin(intc);
voidguangzhoudongzhan(intc);
voidmain()
{intj;
printf("*********Hello,Welcometo地铁售票系统******\n");
printf("公元前欢迎你!
\n");
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("9.退出\n");
printf("====================================================\n");
printf("选择你要到的站的编号以回车结束\n\n");
do{
scanf("%d",&j);
switch(j)
{case1:
/*调用该站的结构功能模块*/
gongyuanqian(j);break;
case2:
/*调用该站的结构功能模块*/
nongjiangsuo(j);break;
case3:
/*调用该站的结构功能模块*/
lieshilingyuan(j);break;
case4:
/*调用该站的结构功能模块*/
yangji(j);break;
case5:
/*调用该站的结构功能模块*/
tiyuxilu(j);break;
case6:
/*调用该站的结构功能模块*/
tiyuzhongxin(j);break;
case7:
/*调用该站的结构功能模块*/
guangzhoudongzhan(j);break;
case8:
break;
}}
while(j!
=0);/*结束*/
printf("谢谢\n");
}/*主函数结束*/
voidxilang()
{printf("长寿路\n");
printf("--------------------------------------------------------\n");
printf("Hello!
此站是你第一站,长寿路站\n");
printf("按需使用,请选择功能号码\n");
printf("谢谢合作\n");
}voidgongyuanqian(intc)
{inti=0,a=0,sum=4,m[200],total=0,bu=0,change=0,cheque=0,x=1,b=9;
sum=(b-x)/3+2;
printf("公元前站\n");
printf("--------------------------------------------------------\n");
printf("每张票应付的金额:
%d元\n",sum);printf("请输入你要购买的数量:
\n",c);
scanf("%d",&c);
total=sum*c;
printf("你应支付的金额:
%d\n",total);
printf("------------------------------------------------------\n");
printf("本机只收取的硬币,五元,十元及二十元的纸币,请按键输入金额\n");
printf("------------------------------------------------------\n");
printf("硬币一元请按1,五元请按5,十元请按10,二十元请按20,然后按2结束:
\n");
for(i=0;i<200;i++)
{scanf("%d",&m[i]);
if(!
(m[i]==1||m[i]==5||m[i]==0||m[i]==20||m[i]==2))
{printf("对不起:
不能接受这类型金额,请重新输入.\n");
continue;/*若条件不符合就跳出循环*/
}if(m[i]==2)break;/*退出语句*/
}for(a=0;a<200;a++)
{if(m[a]==1)/*为输入的金额*/
{cheque=cheque+1;/*应付的金额*/
continue;
}elseif(m[a]==5)/*为输入的金额*/
{cheque=cheque+5;/*应付的金额*/
continue;
}elseif(m[a]==0)/*为输入的金额*/
{cheque=cheque+10;/*应付的金额*/
continue;
}elseif(m[a]==20)/*为输入的金额*/
{cheque=cheque+20;/*应付的金额*/
continue;
}elseif(m[a]==2)break;/*退出界面*/
}if(cheque{do/*应用了循环*/
{printf("对不起!
你金额不足!
请补回:
%d\n",bu=total-cheque);/*算出应退补价钱*/
scanf("%d",&bu);
cheque+=bu;
}while(chequechange=cheque-total;/*计算出跳出循环体之后的应找的价钱*/
}else
change=cheque-total;
if(change==0)/*判断如果不需要找钱就输出下面语句*/
printf("loading...请取票,欢迎再为服务\n");
else/*判断如果需要找钱就计算出该找的钱数*/
printf("loading......找回余额:
%d\n",change);
printf("请取票,欢迎再为你服务bye*^_^*bye\n");
}voidnongjiangsuo(intc)/*基本与以上的“公元前站”函数模块相同*/
{inti=0,a=0,sum=5,m[200],total=0,bu=0,change=0,cheque=0,x=1,b=10;
sum=(b-x)/3+2;
printf("农讲所站\n");
printf("--------------------------------------------------------\n");
printf("每张票应付金额:
%d元\n",sum);printf("请输入你要购买的数量:
\n",c);
scanf("%d",&c);
total=sum*c;
printf("你应支付的金额是:
%d\n",total);
printf("------------------------------------------------------\n");
printf("本机只收取的硬币,五元,十元及二十元的纸币,请按键输入金额\n");
printf("------------------------------------------------------\n");
printf("硬币一元请按1,五元请按5,十元请按10,二十元请按20,然后按2结束:
\n");
for(i=0;i<200;i++)
{scanf("%d",&m[i]);
if(!
(m[i]==1||m[i]==5||m[i]==0||m[i]==20||m[i]==2))
{printf("对不起:
不能接受这类型金额,请重新输入.\n");
continue;
}if(m[i]==2)break;
}for(a=0;a<200;a++)
{if(m[a]==1)
{cheque=cheque+1;
continue;
}elseif(m[a]==5)
{cheque=cheque+5;
continue;
}elseif(m[a]==0)
{cheque=cheque+10;
continue;
}elseif(m[a]==20)
{cheque=cheque+20;
continue;
}elseif(m[a]==2)break;
}if(cheque{do
{printf("对不起!
你的金额不足!
请补回:
%d\n",bu=total-cheque);
scanf("%d",&bu);
cheque+=bu;
}while(chequechange=cheque-total;
}else
change=cheque-total;
if(change==0)
printf("loading...请取票,欢迎再为服务\n");
else
printf("loading.....找回余额:
%d\n",change);
printf("请取票,欢迎再为你服务\n");
}voidlieshilingyuan(intc)
{inti=0,a=0,sum=5,m[200],total=0,bu=0,change=0,cheque=0,x=1,b=11;
sum=(b-x)/3+2;
printf("烈士陵园站\n");
printf("--------------------------------------------------------\n");
printf("每张票应付金额:
%d元\n",sum);printf("请输入你要购买的数量:
\n",c);
scanf("%d",&c);
total=sum*c;
printf("你应支付的金额是:
%d\n",total);
printf("------------------------------------------------------\n");
printf("本机只收取的硬币,五元,十元及二十元的纸币,请按键输入金额\n");
printf("------------------------------------------------------\n");
printf("硬币一元请按1,五元请按5,十元请按10,二十元请按20,然后按2结束:
\n");
for(i=0;i<200;i++)
{scanf("%d",&m[i]);
if(!
(m[i]==1||m[i]==5||m[i]==0||m[i]==20||m[i]==2))
{printf("对不起:
不能接受这类型金额,请重新输入.\n");
continue;
}if(m[i]==2)break;
}for(a=0;a<200;a++)
{if(m[a]==1)
{cheque=cheque+1;
continue;
}elseif(m[a]==5)
{cheque=cheque+5;
continue;
}elseif(m[a]==0)
{cheque=cheque+10;
continue;
}elseif(m[a]==20)
{cheque=cheque+20;
continue;
}elseif(m[a]==2)break;
}if(cheque{do
{printf("对不起!
你的金额不足!
请补回:
%d\n",bu=total-cheque);
scanf("%d",&bu);
cheque+=bu;
}while(chequechange=cheque-total;
}else
change=cheque-total;
if(change==0)
printf("loading...?
?
è?
?
±,?
?
ó-?
ù?
a?
?
·t?
?
bye*^_^*bye\n");
else
printf("loading...?
ò?
?
óà?
?
:
%d\n",change);
printf("?
?
è?
?
±,?
?
ó-?
ù?
a?
?
·t?
?
bye*^_^*bye\n");
}
voidyangji(intc)
{inti=0,a=0,sum=5,m[200],total=0,bu=0,change=0,cheque=0,x=1,b=12;
sum=(b-x)/3+2;
printf("杨箕\n");
printf("--------------------------------------------------------\n");
printf("每张票应付的金额:
%d元\n",sum);printf("请输入你要购买的数量:
\n",c);
scanf("%d",&c);
total=sum*c;
printf("你应支付的金额:
%d\n",total);
printf("------------------------------------------------------\n");
printf("本机只收取的硬币,五元,十元及二十元的纸币,请按键输入金额\n");
printf("------------------------------------------------------\n");
printf("硬币一元请按1,五元请按5,十元请按10,二十元请按20,然后按2结束:
\n");
for(i=0;i<200;i++)
{scanf("%d",&m[i]);
if(!
(m[i]==1||m[i]==5||m[i]==0||m[i]==20||m[i]==2))
{printf("对不起:
不能接受这类型金额,请重新输入.\n");
continue;
}if(m[i]==2)break;
}for(a=0;a<200;a++)
{if(m[a]==1)
{cheque=cheque+1;
continue;
}elseif(m[a]==5)
{cheque=cheque+5;
continue;
}elseif(m[a]==0)
{cheque=cheque+10;
continue;
}elseif(m[a]==20)
{cheque=cheque+20;
continue;
}elseif(m[a]==2)break;
}if(cheque{do
{printf("对不起!
你的金额不足!
请补回:
%d\n",bu=total-cheque);
scanf("%d",&bu);
cheque+=bu;
}while(chequechange=cheque-total;
}else
change=cheque-total;
if(change==0)
printf("loading...请取票,欢迎再为服务\n");
else
printf("loading......找回余额:
%d\n",change);
printf("请取票,欢迎再为你服务bye*^_^*bye\n");
}voidtiyuxilu(intc)
{inti=0,a=0,sum=6,m[200],total=0,bu=0,change=0,cheque=0,x=1,b=13;
sum=(b-x)/3+2;
printf("体育西路站\n");
printf("--------------------------------------------------------\n");
printf("每张票应付的金额:
%d元\n",sum);printf("请输入你要购买的数量:
\n",c);
scanf("%d",&c);
total=sum*c;
printf("你应支付的金额:
%d\n",total);
printf("------------------------------------------------------\n");
printf("本机只收取的硬币,五元,十元及二十元的纸币,请按键输入金额\n");
printf("------------------------------------------------------\n");
printf("硬币一元请按1,五元请按5,十元请按10,二十元请按20,然后按2结束:
\n");
for(i=0;i<200;i++)
{scanf("%d",&m[i]);
if(!
(m[i]==1||m[i]==5||m[i]==0||m[i]==20||m[i]==2))
{printf("对不起:
不能接受这类型金额,请重新输入.\n");
continue;
}if(m[i]==2)break;
}for(a=0;a<200;a++)
{if(m[a]==1)
{cheque=cheque+1;
continue;
}elseif(m[a]==5)
{cheque=cheque+5;
continue;
}elseif(m[a]==0)
{cheque=cheque+10;
continue;
}elseif(m[a]==20)
{cheque=cheque+20;
continue;
}elseif(m[a]==2)break;
}if(cheque{do
{printf("对不起!
你的金额不足!
请补回:
%d\n",bu=total-cheque);
scanf("%d",&bu);
cheque+=bu;
}while(chequechange=cheque-total;
}else
change=cheque-total;
if(change==0)
printf("loading...请取票,欢迎再为服务\n");
else
printf("loading......找回余额:
%d\n",change);
printf("请取票,欢迎再为你服务bye*^_^*bye\n");
}voidtiyuzhongxin(intc)
{inti=0,a=0,sum=6,m[200],total=0,bu=0,change=0,cheque=0,x=1,b=14;
sum=(b-x)/3+2;
printf("体育中心站\n");
printf("--------------------------------------------------------\n");
printf("每张票应付的金额:
%d元\n",sum);printf("请输入你要购买的数量:
\n",c);
scanf("%d",&c);
total=sum*c;
printf("你应支付的金额:
%d\n",total);
printf("------------------------------------------------------\n");
printf("本机只收取的硬币,五元,十元及二十元的纸币,请按键输入金额\n");
printf("------------------------------------------------------\n");
printf("硬币一元请按1,五元请按5,十元请按10,二十元请按20,然后按2结束:
\n");
for(i=0;i<200;i++)
{scanf("%d",&m[i]);
if(!
(m[i]==1||m[i]==5||m[i]==0||m[i]==20||m[i]==2))
{printf("对不起:
不能接受这类型金额,请重新输入.\n");
continue;
}if(m[i]==2)break;
}for(a=0;a<200;a++)
{if(m[a]==1)
{cheque=cheque+1;
continue;
}elseif(m[a]==5)
{cheque=cheque+5;
continu