问答题

【说明】
C市刚开通了地铁线,为方便乘客,计划开发自动售票系统。
该公司在每一个地铁站放置了多台自动售票机,每一台售票机有一唯一编号,售票记录统一汇总主机。自动售票机只发售从该站起始的各种地铁票,因此乘客只需输入目的站,起始站默认为该站,售票机给出从该站到达目的站的单程票。打印地铁票时为其编一个唯一的流水号,并同时打印自动售票机的编号及票价。
售票机的状态变化如下:“空闲”时,显示地铁线路图,等待乘客输入目的站;当乘客输入目的站后,转入“目的站确认/票数输入”状态,同时给出票价,此时若目的站有误,可返回到空闲状态重新输入,否则,输入票数;乘客输入票数后,转入“票数确认/付款”状态,同样此时若票数有误,可返回到上一状态重新输入,否则,投入钱币付款;当付款金额足够时,“出票/找零”(有必要时进行找零);然后转入“空闲”等待输入目的站状态。
该系统采用面向对象方法开发,系统中的类及类之间的关系用UML类图表示,如图9-18所示是该系统类图的一部分,图9-19描述了自动售票机的状态转换图。




【问题2】
根据题意,给出“地铁票”类的主要属性。

【参考答案】

“地铁票”类的主要属性有:流水号、起始站、目的站、票价。
热门 试题

问答题
【说明】 本程序将两个从小到大的有序链表合成一个新的从小到大的有序链表。链表的每一项由类 Node描述,而链表由List描述,类List的成员函数有以下几个: creatList(): 创建从小到大的有序链表。 multiplyList(List L1, Llst L2): 将链表L1和链表L2合并。 print(): 打印链表。 【C++代码】 #include <iostream> using namespace std; class List; class Node friend class List; public: Node(int data) (1) ; private: int data; Node *next; ; class List public: List()list=NULL; void multiplyList(List L1, List L2); void creatList(); void print(); private: Node *list; ; void List::creatList() Node *p, *u, *pre; int dara; list=NULL; wbile(1) cout<< 输入链表的一项: (小于零,结束链表) <<endl; cin>>data; if(dara<0)break; 小于零,结束输入 p=list; while(p !=NULL && dara>p->data) 查找插入点 pre=p; p=p->next; u= (2) ; if(p==list)list=u; else pre->next=u; (3) ; void List::multiplyList(List L1, List L2) Node *pL1, *pL2, *pL, *u; list = NULL; pL1 = L1.list; pL2 = L2.11st; while(pL1 != NULL && pL2 != NULL) if(pL1->data < pL2->data) u = new Node(pL1->data); pL1 = pL1->next; else u = new Node(pL2->data); pL2 = pL2->next; if(list == NULL) list = (4) ; else pL->next=u; pL=u; pL1 = (pL1 != NULL) pL1:pL2; while(pL1 != NULL) u= (5) ; pL1 = pL1->next; if(list == NULL) list=pL=u; else pL->next=u; pL=u; void List::print() Node *p; p = list; while(p !=NULL) cout<<p->data<< t ; p=p->next; cout<<end1; void main() List L1, L2, L; cout<< 创建第一个链表 n ;L1.creatList(); cout<< 创建第二个链表 n ;L2.creatList(); L1.print();L2.print(); L.multiplyList(L1,L2); L.print();