1引言1.1编写目的本详细设计说明书是基于系统概要设计说明书,经过项目组成员讨论后,将系统的各个功能模块细化,将总的用例图的功能细化到每个序列图中。并且为后续的编码工作提供依据,也是系统测试用例编写和后期维护的主要参考资料。1.3名词解释系统中所有以“JE_”开头的类和变量均为“JustEnjoy”——我们小组名称的缩写,也用以和系统或者其他人开发的变量和函数相区别。SQLServer2000:Microsoft公司的关系型数据库。JDK1.4:版本为号1.4的JAVA虚拟机。E-R图:关系实体图,用于表示数据库的设计。2软件结构概述2.1模块划分本系统根据需求分析可以划分为三大模块,他们是订餐管理模块、餐馆管理模块和会员管理模块。其中餐馆管理主要简化为了餐桌管理。餐馆管理模块和会员管理模块分别提供增加、修改、删除的管理功能,而最为核心的订餐管理模块提供记录订单、修改订单(换桌、换时间等)、取消订单、定时提醒和查询空桌等功能。2.2模块功能详细设计以UML序列图的方式列举各个用例模块的功能和实现过程。2.2.1CancelBooking取消订单功能,使用户可以取消已经下过的订单。序列图如下图2-1所示::Staff:StaffUI:BookingSystem:Restaurant:Store:DBmouseMove(cancel)mouseUp(cancel)UPDisplay()PutinID/DateAndNumCancel(booking)setCancel(booking)UpData()OK:boolOK:boolIsAvailable(booking)IDbookingSetStateCancel(IDbooking)OK:boolCheck()OK:boolUpData()OK:bool图2-1取消订单序列图2.2.2DeleteMember删除会员功能,使餐馆可以注销某些用户。序列图如下图2-2所示::Staff:staffUIMembersystemmouseDown(pos)updateDisplay()deleteMember(name,phonenumber)return(details)searchMember(ID,name,member)return(details)图2-2删除会员序列图2.2.3DisplayBooking显示订单功能,根据用户设定的时间显示的餐桌的信息。其序列图如图2-3所示::Staff/BookingObserver:StaffUI:BookingSystem:Restaurant:Bookingsubmit(date)display(date)update()getDate()getBookings()returnbookinsgetBooking(date)returnbookingsgetDate()returndate图2-3显示订单序列图2.2.4DisplayMember显示会员信息功能,显示选定的会员信息,以供管理员查看并作为修改的依据。其序列图如图2-4示::Staff:staffUIMembersystemmouseDown(pos)updateDisplay()dispalayMember(name,phonenumber)return(details)searchMember(ID,name,member)return(details)图2-42.2.5ModifyBooking修改订单的功能为用户提供修改预约的机会,比如更换时间、换桌等。修改订单的序列图如图2-5所示::Staff/BookingObserver:StaffUI:BookingSystem:Restaurant/Current:Booking/Selected:ReservationmouseDown(pos)submit(details)selectBooking(time,table)modify(details)modify(booking)getTable(tno)returntupdateDisplay()getDetails()Modify(date,t)图2-52.2.6ModifyMember修改会员信息提供给管理员以修改会员信息的功能,比图联系方式、用户姓名、信誉度等。其序列图如下图2-6所示::Staff:staffUIMembersystemmouseDown(pos)mouseMove(pos)updateDisplay()modifyMember(ID,name,phonenumber)return(details)searchMember(ID,name,member)return(details)图2-62.2.7RecordArrival记录到达功能会记录用户的到达情况,同时餐桌状态的显示跟它有一定的关系。其序列图如下图2-7所示::HeadWaiterStaffUIBookingSystemRestaurantBookingReservationmouseDown(pos)mouseDoubleDown(pos)keyDown(Enter)display(date)updateDisplay()selectBooking(time,table)recordArrival()updateDisplay()update()update()getBookings(date)returnbookingsgetDate()returndategetDetails()returnbookingInfosetArrivalTime(now)returnOK/Error图2-72.2.8RecordBooking记录订单为接待员提供记录订单的功能,但接待员接到客户的电话预约时,会使用此功能来记录客户的预约,包括吃饭时间、吃饭桌号和预约人数等。此功能完成的序列图如图2-8所示::ReceptionistStaffUI:Member:BookingSystem:Restaurant:BookingmouseDown(pos)updateDisplay()updateDisplay()getMemberInfo(memberID)memberInfomakeReservation(details)succeful?makeReservation(details)succeful?creatBooking()succeful?图2-82.2.9RecordLeft记录离开功能,但用餐者吃完饭后离开时记录此事件,同时修改桌子的状态为没有使用。其序列图如图2-9所示::HeadWaiterStaffUIBookingSystem:BookingSystemRestaurant:BookingmouseDown(pos)keyDown(Enter)display(date)updateDisplay()recordLeft(tno)updateDisplay()update()update()getBookings(date)returnbookingsgetDate()returndate图2-92.2.10RecordWalkIn记录未订餐者。对于没有预定的用餐者使用此功能来记录用餐信息。其序列图如图2-10所示::HeadWaiterStaffUIBookingSystemRestaurantWalkInsubmit(details)makeReservation(detais)upDisplay()update()makeReservation(detais)returnOK/ErrorsetArrivalTime(now)returnOK/Error图2-102.2.11RegisterMember会员注册功能。可以增加新的会员。其序列图如下图2-11所示::Staff:staffUIMembersystemmouseDown(pos)updateDisplay()createMember(name,phonenumber)returndatecheckMember(ID,name,phonenumber,)returndate图2-112.2.12RemindBooking定时提醒功能。但订单时间已到但用餐者还没有到达时就会体现本功能的作用。系统开辟一个线程单独来完成本功能,每隔一秒检查一下系统时间,如果到达用户设置的提醒时间,就从数据库中读取应当到达却未到达的订单信息显示给接待员,使其可以通过提供的联系方式提醒客户。整体的序列图如图2-12所示::Timer:Receptionist:BookingSystem:RestaurantrestartTimer()overTime()updateDisplay()getOTBookings()图2-122.2.13SearchBooking搜索订单,为用户提供搜索订单的功能。其功能序列图如图2-13所示::Staff:StaffUI:BookingSystem:Restaurant:Store:DBmouseMove(cancel)mouseUp(emptyTB)SearchEmpty(date)getEmpty(date)getAllEmpty(date)selectAllEmpty()AllEmptyemptyNumemptyNumemptyNumUPDisplay()图2-132.3系统状态图2.3.1预约系统类的状态图预约系统类显示的最重要的依赖状态行为与预约的选择有关,只有选择一个预约才能进行记录到达、记录离开。预约系统类的状态图如下图所示:2.3.2预约类的状态图预约显示依赖于状态的行为:一旦已经记录了到来者,就不能取消预约,或者再次记录到达;只有已经记录到达的预约才能记录离开。预约类的状态图如下:3数据库设计3.1数据库的E-R图根据系统功能和模块划分,设计出系统的E-R图中包括7个实体和1个多对多关系,共8张表如下图3-1所示:图3-1系统E-R图3.2数据字典本系统的数据库的数据字典如下表所示:Customer表表名字段名数据类型大小含义是否为空备注CustomerCIDbigint8顾客号主键Namevarchar50顾客名phoneNumvarchar20电话号码Member表表名字段名数据类型大小含义是否为空备注MemberMIDbigint8会员号主键Namevarchar50会员名phoneNumvarchar20电话号码是Reputationint4信誉度默认100Menu表表名字段名数据类型大小含义是否为空备注MenuMenuIDint4菜单号主键Namevarchar50菜单名Descriptionvarchar256说明是OrderList表表名字段名数据类型大小含义是否为空备注OrderListOrderIDint4订单号主键MenuIDint4菜单名外键RIDint4订餐号外键Descriptionvarchar256说明是RemindTime表表名字段名数据类型大小含义是否为空备注RemindTimeTimeIDint4提醒时间号主键RemindTimechar8提醒时间是Reservation表表名字段名数据类型大小含义是否为空备注ReservationreservationIDint4订餐号主键tableNumbervarchar10餐桌号码customerIDint4会员号外键coversint4人数bookDatedatetime8预定时间eatDatedatetime8吃饭时间eatTimedatetime8吃饭时段stateint4订餐状态Table表表名字段名数据类型大小含义是否为空备注TableTIDint4桌子编号主键placesint4人数Flagvarchar256使用标志是tableNumbervarchar10餐桌号WalkIn表表名字段名数据类型大小含义是否为空备注WalkInwalkinIDint4未订餐号主键tableNumbe