diff --git "a/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/1.jpg" "b/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..1fc187d3efd7d2e3eadbcaba50f1203b6618c672 Binary files /dev/null and "b/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/1.jpg" differ diff --git "a/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/2.jpg" "b/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/2.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..d08e0c48febbd94dd908b7813327e9ddf29548f9 Binary files /dev/null and "b/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/2.jpg" differ diff --git "a/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/3.jpg" "b/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/3.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..303f2edee12bbe5da57d3e6b675a9721d62306ea Binary files /dev/null and "b/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/3.jpg" differ diff --git "a/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/5.jpg" "b/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/5.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..eb84bd5b4790de9d62008f2007da65d3ca9880e8 Binary files /dev/null and "b/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/5.jpg" differ diff --git "a/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/README.md" "b/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/README.md" index 12f0a7bfe2524123f854fb6b27f1a436c196b898..9040aa114e9c6ff87c707a80dbe64b7ca2e80d36 100644 --- "a/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/README.md" +++ "b/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/README.md" @@ -1,34 +1,99 @@ # 19-列车订票系统-拓展项目-第三单元 队列、栈与树 ### 一、项目主题 +  随着计算机技术的发展,用计算机为人们的生活服务已经变得普及化。铁路公司为了增强公司的信息化程度,提高公司的售票管理的效率,就建立起了相应的火车票订系统,实现提高了火车客用系统的售票效率和管理水平 +火车票订票系统是典型的信息管理系统的一部份,火车票订票系统的开发充分利用了计算机信息技术提高了火车票订票的管理水平、服务水平。 ### 二、项目内容 - +  某些项APP软件提供订票服务,其功能为:按序登记客户的相关信息(客户姓名和所订的票数等),若有票,则按客户登记的顺序出票,输出相应的座位号;若无票,则输出“等待”。根据订票流程,组织客户相关的信息,为某趟列车设计订票系统。 #### 1.项目背景 +  火车票的管理和规范问题,是困扰我们多年的一个老问题,也是政府管理中的一个难点,订票是客运业务中的一个最基本的业务,表面上看,它只是长途客运业务的一个简单的部分,但是它涉及到管理与客户服务等多方面,因此,过去传统的售票方式已经不能满足现代客运业务流量剧增的客观要求,这就要求一种全新的订票方式——网上订票,来缓解订票高峰时期的客运压力,并为用户提供方便快捷的订票服务。 #### 2.项目设计依据 +  本项目的实施中,学生可利用暑期订票出游时,体验订票系统,然后分析系统,进行抽象与建模、分析并确定数据结构、设计算法,编程实现该系统。 #### 3.项目概述 +  本项目需要确定合适的数据结构存储并依据选择的数据结构设计算法,编程实现上述功能的列车订票系统。 ### 三、项目指导 +学生需要在理解、体验和分析的基础上,围绕下列问题进行思考: + +1.车票信息有哪些数据项? + +2.如何储存表格中的数据? + +3.要显示某趟列车的车次信息,如果从多条记录中查找该车次的记录? + +4.采用什么算法进行查找比较合适? + +5.当卖出一张票时,如何使用队列减少各个站点的票数? ### 四、项目实施流程 -### 五、项目实施环节安排 +![](https://gitee.com/wunanzeng/DataStructureProject/raw/master/19-%E5%88%97%E8%BD%A6%E8%AE%A2%E7%A5%A8%E7%B3%BB%E7%BB%9F-%E6%8B%93%E5%B1%95%E9%A1%B9%E7%9B%AE-%E7%AC%AC%E4%B8%89%E5%8D%95%E5%85%83%20%E9%98%9F%E5%88%97%E3%80%81%E6%A0%88%E4%B8%8E%E6%A0%91/1.jpg) +### 五、项目实施环节安排 +  本单元项目实施定位于学生已经学完选择性必修1《数据与数据结构》第五章的知识内容。通过本项目的实施,学生将对程序设计的各个环节、题目分析与算法设计、Python的基本控制结构以及不同的数据类型等内容在项目中进行综合应用。具体安排如下: #### 第一阶段:项目准备阶段 1. 确定项目主题 +  根据本项目内容确定项目题为列车订票系统 +2. 项目需求分析与总体规划 +  为了保证系统能够长期、安全、稳定、可靠、高效的运行,本系统应该满足以下的性能需求。 -2. 项目需求分析与总体规划 +  1.准确性和及时性 +  系统处理的准确性和及时性是系统的必要性能。 -3. 分组、分工 +  2.易用性 + +  本系统是直接面对用户的,而用户往往对计算机并不是非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面,从而保证系统的易用性。 + +  3.安全性 + +  网上订票系统中涉及到的数据是客运公司相当重要的信息,系统要保证用户的权限,对于车次等信息用户只享有查询服务,不得更改;系统还要提供方便的手段供系统维护人员进行数据备份、日常安全管理、以及系统意外崩溃时数据的恢复等工作。同时系统还要保证对数据库进行及时更新,保证数据一致性。 + + +![](https://gitee.com/wunanzeng/DataStructureProject/raw/master/19-%E5%88%97%E8%BD%A6%E8%AE%A2%E7%A5%A8%E7%B3%BB%E7%BB%9F-%E6%8B%93%E5%B1%95%E9%A1%B9%E7%9B%AE-%E7%AC%AC%E4%B8%89%E5%8D%95%E5%85%83%20%E9%98%9F%E5%88%97%E3%80%81%E6%A0%88%E4%B8%8E%E6%A0%91/2.jpg) +  建议3~~4名学生为一组,确定一个组长作为项目负责人,统一协调组内成员各阶段的任务。项目在不同实施阶段每个组员都有不同的项目分工。 +3. 分组、分工 +![](https://gitee.com/wunanzeng/DataStructureProject/raw/master/19-%E5%88%97%E8%BD%A6%E8%AE%A2%E7%A5%A8%E7%B3%BB%E7%BB%9F-%E6%8B%93%E5%B1%95%E9%A1%B9%E7%9B%AE-%E7%AC%AC%E4%B8%89%E5%8D%95%E5%85%83%20%E9%98%9F%E5%88%97%E3%80%81%E6%A0%88%E4%B8%8E%E6%A0%91/3.jpg) +  吴楠增 黄黎耀 #### 第二阶段:项目的指导阶段 +课时分配:1课时。 1. 抽象与建模 +  本项目的实施中,学生可利用暑期订票出游时,体验订票系统,然后分析系统,进行抽象与建模、分析并确定数据结构、设计算法,编程实现该系统。 2. 设计算法 +  通过本项目,学生能进行基于队列存储的抽象与建模,设计算法并编程实现 -3. 项目程序实现 - +3. 项目程序实现 +[列车订票系统.py](/列车订票系统.py) #### 第三阶段:项目汇报阶段 +课时分配:1课时。 + +1.学生制作项目汇报材料。 + +(1)展示与分享项目成果。 + +(2)对完成项目的感悟,总结项目的实施流程。 + +(3)回顾项目实施过程中存在的困难及解决途径。 + +2.教师组织学生对每个小组项目进行评价。 +![](https://gitee.com/wunanzeng/DataStructureProject/raw/master/19-%E5%88%97%E8%BD%A6%E8%AE%A2%E7%A5%A8%E7%B3%BB%E7%BB%9F-%E6%8B%93%E5%B1%95%E9%A1%B9%E7%9B%AE-%E7%AC%AC%E4%B8%89%E5%8D%95%E5%85%83%20%E9%98%9F%E5%88%97%E3%80%81%E6%A0%88%E4%B8%8E%E6%A0%91/5.jpg) ### 六、项目汇报环节安排 +1.教学导入。 + +  鼓励学生作为小组项目发言人,自主准备汇报材料,介绍自己所在小组项目实施的过程、成果、意义及感悟,以期待得到同学的“认可”。引导学生以项目评价量化表为标准,客观给予评价。汇报的内容和形式自定,可以是文稿演示、成果报告、展板展示、项目实施手册展示和项目活动过程陈述等方式。教师对小组汇报的项目研究报告进行打分,并对评选出的最佳小组给予奖励。 + +  汇报过程对学生来说是一个非常重要的学习经历,也是对学生的总结反思、整理资料能力及写作能力的一次挑战。 + +2.分组汇报。 + +  每个项目研究小组派小组代表采用合适的方式汇报小组的项目经历与成果。 + +3.学生提问,教师点评,评价打分。 + +  根据“项目成果评价表”进行评价,并记录同学们提出的意见。 + +  每个小组可以根据同学们的评价进一步地修改项目中存在的问题,将自评、他评、师评和专家评价结合起来,借助信息技术更及时呈现评价结果。为了激励学生并检验各组的项目成果,教师合理评价并为“最佳”项目成果颁发奖项,以评价的形式引导学生梳理、总结项目成果。 diff --git "a/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237.py" "b/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237.py" new file mode 100644 index 0000000000000000000000000000000000000000..a03c396371442e60bb21b353f1c1fb0dd51e2ed1 --- /dev/null +++ "b/19-\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\270\211\345\215\225\345\205\203 \351\230\237\345\210\227\343\200\201\346\240\210\344\270\216\346\240\221/\345\210\227\350\275\246\350\256\242\347\245\250\347\263\273\347\273\237.py" @@ -0,0 +1,98 @@ +#!/usr/bin/env python3 + +""" +1.实现订票功能 +课本 P85 +教学指导意见 P108 +""" + +#N = 100 +#stock=[] +#sche=[] +# +#for i in range(N,0,-1): +# stock.append(i) +# +#while stock: +# name = input('请输入姓名:') +# amount = int(input('请输入订票数量:')) +# sche.append([name,amount]) +# if amount > len(stock): +# print('等待') +# else: +# while amount: +# print('客户姓名:',name,' 座位号:',stock.pop()) +# amount-=1 +# sche.pop() + +""" +1.实现火车订票站点分类订票功能 +票存在A-B,A-C,A-D,B-C,B-D,C-D等,若订购了B-D,则票数量相应减少B-C,B-D,C-D部分 +列车途经点:A,B,C,D,E,用户输入入站与出站,有则出票,否则等待 +课本 P85 +教学指导意见 P108 +""" + + + +N = 5 +# A-B,B-C,C-D,D-E对应8,4,2,1 +dic={ + 'A-B':8, + 'B-C':4, + 'C-D':2, + 'D-E':1, + 'A-C':12, + 'A-D':14, + 'A-E':15, + 'B-D':6, + 'B-E':7, + 'C-E':3 +} +global sku +global stock +sku = [8,4,2,1] + +stock = [N,N,N,N] +sche=[] + + +def enough(start,end): + global sku + global stock + s = start+'-'+end + id = dic[s] + temp=stock.copy() + for i in range(len(sku)): + if id>=sku[i]: + if temp[i]: + temp[i] -= 1 + id-=sku[i] + else: + return False + if id != 0: + return False + stock=temp + return True + +while sum(stock): + print(sum(stock)) + amount = int(input('请输入订票数量:')) + + while amount: + name = input('请输入姓名:') + start = input('请输入起点:') + end = input('请输入终点:') + sche.append([name,start,end]) + + if not enough(start,end): + break + amount-=1 + + if amount==0: + print('出票成功,订票信息如下:') + while sche: + print(sche.pop()) + else: + sche=[] + print('无票,请等待')