1、地铁站售票系统仲恺农业技术学院课 程 设 计 课程设计题目 地铁站售票系统 姓 名 白崇亮院 (系) 计算机科学与工程学院专业班级 计算机科学与技术052班学 号 1 5号 指导教师 李晟职 称 讲师设计日期 2006年12月28日仲恺农业技术学院教务处制 一、需求分析: 3二、概要设计: 35三、详细设计: 617四、调试分析: 1718五、用户说明: 18 六、课程设计总结: 1920地铁站售票系统课程设计一、需求分析:该地铁站售票管理系统由三个模块构成:分别是进入系统,完成系统相关的功能以及退出系统。相关功能包含了查找到每个站需要的金额,输出你要到达的站应付的价钱,输入买票的数量,输入金
2、额,输出找回余额等功能。方便了乘客们购买车票,当你在相应的购票机上输进你需要到达的车站,再输入你需要购买车票的数量,该系统会提示你需要输进的金额,当你输进的钱过多会给你找回余额,当你输入的钱不够会提示你补回相应的金额。最后该机器会给你车票上车。欢迎再为你服务!现在由于时间的限制,暂时只能实现这些功能。以后我会一边学习一边完善这个系统。希望我以后做出一个给现在车站所用的系统更完善,更使用。这样让市民更加方便。我现在有很多知识不会,希望老师和同学们多多指教,跟大家共同学习。二、概要设计(数据结构设计,软件结构设计.流程图设计)数据结构设计该地铁站售票系统我运用了整形数据在内存中的存放形式以及运用s
3、witch语句来调用函数。这种做法既简单又易明白以后希望同学们能够好好地把握它的用法。在程序中我也运用了if语句,有了这个语句更容易实现这个程序2、软件结构设计: a、软件构架 b、模块之间的关系 “功能选择”这个框架分为下面六个模块,各模块之间的关系可用下表表示: 程序流程图 该程序的算法#include #includevoid changshoulu( );void chenjiaci(int c ); void ximenkou(int c ); void gongyuanqian(int c ); void nongjiangsuo(int c );void lieshilingyu
4、an(int c ); void yangji( int c); void tiyuxilu(int c );void tiyuzhongxin(int c );void guangzhoudongzhan(int c );void main( ) int j;printf(* Hello,Welcome to地铁售票系统 *n);printf( 公元前欢迎你! n);printf(=n);printf( - ? 1.长寿路 ?- n);printf( - ? 2.公元前 ?- n);printf( - ? 3.农讲所 ?- n);printf( - ? 4.烈士陵园 ?- n);printf
5、( - ? 5.杨箕 ?- n);printf( - ? 6.体育西路 ?- n);printf( - ? 7.体育中心 ?- n);printf( - ? 8.广州东站 ?- n);printf( 9.退出 n);printf(=n);printf(选择你要到的站的编号以回车结束 nn);doscanf(%d,&j);switch(j)case 1: /*调用该站的结构功能模块*/gongyuanqian(j ); break;case 2: /*调用该站的结构功能模块*/ nongjiangsuo( j); break;case 3: /*调用该站的结构功能模块*/ lieshilingy
6、uan(j );break;case 4: /*调用该站的结构功能模块*/ yangji(j );break;case 5: /*调用该站的结构功能模块*/ tiyuxilu(j );break;case 6: /*调用该站的结构功能模块*/ tiyuzhongxin(j );break;case 7: /*调用该站的结构功能模块*/ guangzhoudongzhan(j );break;case 8: break;while(j!=0); /*结束*/printf(谢谢n);/*主函数结束*/void xilang( )printf( 长寿路 n);printf(-n);printf(He
7、llo!此站是你第一站,长寿路站n);printf(按需使用,请选择功能号码n);printf(谢谢合作n);void gongyuanqian(int c)int i=0,a=0,sum=4,m200,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(你应支付的金额:%dn,total);printf(-n);printf(
8、本机只收取的硬币,五元,十元及二十元的纸币,请按键输入金额n);printf(-n);printf(硬币一元请按1,五元请按5,十元请按10,二十元请按20,然后按2结束:n);for(i=0;i200;i+)scanf(%d,&mi);if(!(mi=1|mi=5|mi=0|mi=20|mi=2)printf(对不起:不能接受这类型金额,请重新输入.n);continue;/*若条件不符合就跳出循环*/if(mi=2)break;/*退出语句*/for(a=0;a200;a+)if(ma=1)/*为输入的金额*/cheque=cheque+1;/*应付的金额*/continue;else i
9、f(ma=5)/*为输入的金额*/cheque=cheque+5;/*应付的金额*/continue;else if(ma=0)/*为输入的金额*/cheque=cheque+10;/*应付的金额*/continue;else if(ma=20)/*为输入的金额*/cheque=cheque+20;/*应付的金额*/continue;else if(ma=2)break;/*退出界面*/if(chequetotal)/*判断是否已经付足了钱*/ do /*应用了循环*/printf(对不起!你金额不足!请补回:%dn,bu=total-cheque);/*算出应退补价钱*/scanf(%d,&
10、bu);cheque+=bu;while(chequetotal);/*若条件满足则再返回循环体*/change=cheque-total;/*计算出跳出循环体之后的应找的价钱*/elsechange=cheque-total;if(change=0)/*判断如果不需要找钱就输出下面语句*/printf(loading.请取票,欢迎再为服务n);else /*判断如果需要找钱就计算出该找的钱数*/printf(loading.找回余额:%dn,change);printf(请取票,欢迎再为你服务bye*_*byen);void nongjiangsuo(int c)/*基本与以上的“公元前站”
11、函数模块相同*/int i=0,a=0,sum=5,m200,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(你应支付的金额是:%dn,total);printf(-n);printf(本机只收取的硬币,五元,十元及二十元的纸币,请按键输入金额n);printf(-n);printf(硬币一元请按1,五元请按5,十元请按10
12、,二十元请按20,然后按2结束:n);for(i=0;i200;i+)scanf(%d,&mi);if(!(mi=1|mi=5|mi=0|mi=20|mi=2)printf(对不起:不能接受这类型金额,请重新输入.n);continue;if(mi=2)break;for(a=0;a200;a+)if(ma=1)cheque=cheque+1;continue;else if(ma=5)cheque=cheque+5;continue;else if(ma=0)cheque=cheque+10;continue;else if(ma=20)cheque=cheque+20;continue;e
13、lse if(ma=2)break;if(chequetotal)doprintf(对不起!你的金额不足!请补回:%dn,bu=total-cheque);scanf(%d,&bu);cheque+=bu;while(chequetotal);change=cheque-total;elsechange=cheque-total;if(change=0)printf(loading.请取票,欢迎再为服务n);elseprintf(loading.找回余额:%dn,change);printf(请取票,欢迎再为你服务n); void lieshilingyuan(int c)int i=0,a=
14、0,sum=5,m200,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(你应支付的金额是:%dn,total);printf(-n);printf(本机只收取的硬币,五元,十元及二十元的纸币,请按键输入金额n);printf(-n);printf(硬币一元请按1,五元请按5,十元请按10,二十元请按20,然后按2结束:n
15、);for(i=0;i200;i+)scanf(%d,&mi);if(!(mi=1|mi=5|mi=0|mi=20|mi=2)printf(对不起:不能接受这类型金额,请重新输入.n);continue;if(mi=2)break;for(a=0;a200;a+)if(ma=1)cheque=cheque+1;continue;else if(ma=5)cheque=cheque+5;continue;else if(ma=0)cheque=cheque+10;continue;else if(ma=20)cheque=cheque+20;continue;else if(ma=2)break
16、;if(chequetotal)doprintf(对不起!你的金额不足!请补回:%dn,bu=total-cheque);scanf(%d,&bu);cheque+=bu;while(chequetotal);change=cheque-total;elsechange=cheque-total;if(change=0)printf(loading.?,?-?a?t?bye*_*byen);elseprintf(loading.?:%dn,change);printf(?,?-?a?t?bye*_*byen);void yangji(int c)int i=0,a=0,sum=5,m200,t
17、otal=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(你应支付的金额:%dn,total); printf(-n);printf(本机只收取的硬币,五元,十元及二十元的纸币,请按键输入金额n);printf(-n);printf(硬币一元请按1,五元请按5,十元请按10,二十元请按20,然后按2结束:n);for(i=0;i200;i
18、+)scanf(%d,&mi);if(!(mi=1|mi=5|mi=0|mi=20|mi=2)printf(对不起:不能接受这类型金额,请重新输入.n);continue;if(mi=2)break;for(a=0;a200;a+)if(ma=1)cheque=cheque+1;continue;else if(ma=5)cheque=cheque+5;continue;else if(ma=0)cheque=cheque+10;continue;else if(ma=20)cheque=cheque+20;continue;else if(ma=2)break;if(chequetotal)
19、doprintf(对不起!你的金额不足!请补回:%dn,bu=total-cheque);scanf(%d,&bu);cheque+=bu;while(chequetotal);change=cheque-total;elsechange=cheque-total;if(change=0)printf(loading.请取票,欢迎再为服务n);elseprintf(loading.找回余额:%dn,change);printf(请取票,欢迎再为你服务bye*_*byen);void tiyuxilu(int c)int i=0,a=0,sum=6,m200,total=0,bu=0,chang
20、e=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(你应支付的金额:%dn,total);printf(-n);printf(本机只收取的硬币,五元,十元及二十元的纸币,请按键输入金额n);printf(-n);printf(硬币一元请按1,五元请按5,十元请按10,二十元请按20,然后按2结束:n);for(i=0;i200;i+)scanf(%d,&mi)
21、;if(!(mi=1|mi=5|mi=0|mi=20|mi=2)printf(对不起:不能接受这类型金额,请重新输入.n);continue;if(mi=2)break;for(a=0;a200;a+)if(ma=1)cheque=cheque+1;continue;else if(ma=5)cheque=cheque+5;continue;else if(ma=0)cheque=cheque+10;continue;else if(ma=20)cheque=cheque+20;continue;else if(ma=2)break;if(chequetotal)doprintf(对不起!你的
22、金额不足!请补回:%dn,bu=total-cheque);scanf(%d,&bu);cheque+=bu;while(chequetotal);change=cheque-total;elsechange=cheque-total;if(change=0)printf(loading.请取票,欢迎再为服务n);elseprintf(loading.找回余额:%dn,change);printf(请取票,欢迎再为你服务bye*_*byen);void tiyuzhongxin(int c)int i=0,a=0,sum=6,m200,total=0,bu=0,change=0,cheque=
23、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(你应支付的金额:%dn,total);printf(-n);printf(本机只收取的硬币,五元,十元及二十元的纸币,请按键输入金额n);printf(-n);printf(硬币一元请按1,五元请按5,十元请按10,二十元请按20,然后按2结束:n);for(i=0;i200;i+)scanf(%d,&mi);if(!(mi=1|mi=5|mi=0|mi=20|mi=2)printf(对不起:不能接受这类型金额,请重新输入.n);continue;if(mi=2)break;for(a=0;a200;a+)if(ma=1)cheque=cheque+1;continue;else if(ma=5)cheque=cheque+5;continu
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1