1抽奖程序设计说明书1概述1.1系统简述学院将举行庆元旦暨迎新春联欢晚会,其中有抽奖活动,需要一个抽奖程序。抽奖程序在联欢会由抽奖活动主持人,输入奖票号码范围,并指定获奖等级后,在给定的号码范围内产生一个随机号码,作为该获奖等级的一个中奖号码。如果产生的中奖号码与已产生的中奖号码重复,则给出明确的提示,由操作人员选择中奖号“有效”(即中奖规则允许一个奖票重复获奖),或者是“无效”(即不允许一个奖票重复获奖)。可随时显示或打印抽奖结果。1.2软件设计目标1.2.1、程序功能:1.输入中奖规则:输入最小奖票号码,输入最大奖票号码,输入是否允许重复获奖。2.产生中奖号码:产生一个界于最小奖票号和最大奖票号之间的数。并且判定该数是否为一个有效的中奖号。3.显示中奖信息:以表格的形式显示到目前为止所有抽出的中奖奖票号码和中奖等级。4.更新中奖记录:将中奖奖票号和中奖等级写入“LuckyRecord”文件。5.打印中奖记录:以表格形式打印“LuckyRecord”文件的内容。1.2.2运行环境和用户1设备需求:学校工会的手提电脑(P3CPU,256M内存)。2操作系统:WINDOWS2000。无需其它支撑软件。3用户界面:WINDOWS风格界面。4使用者可以是抽奖的操作人员,兑奖人员。1.2.3外部接口1系统输入:从用户界面输入抽奖规则2系统输出:存放“中奖信息”的文本文件。3硬件接口:一般的PIII机或更高档微机或手提电脑4软件接口:Windows2000或以上版本1.3参考资料见《抽奖程序需求规格说明书》1.4修订版本记录抽奖程序设计说明书,第1版,设计者:06软件游戏2-22术语表见《抽奖程序需求规格说明书》数据字典3用例2抽出中奖号码打印中奖记录查询中奖情况抽奖程序活动主持人兑奖者奖票持有者活动主持人兑奖者奖票持有者查询中奖情况显示中奖记录《include》《include》图1抽奖程序细化的用例图1、抽出中奖号码用例:它产生一个有效的中奖号码,它包含查询中奖情况用例。2、打印中奖记录用例:从连接的打印设备上以表格形式打印中奖记录,它包含显示中奖记录用例。3、显示中奖记录用例:以表格的形式在屏幕上显示中奖记录。4、查询中奖情况用例:对用户输入的奖票号,搜索中奖记录,如果该给定的奖票号在中奖记录中,则给出中奖等级,否则,给出没有中奖的信息。4设计概述抽奖程序采用面向对象的方法进行需求捕获、分析与设计,用面向对象的程序设计语言C++实现,系统主要的算法是产生中奖号码的算法,查询中奖信息的算法,显示中奖信息的算法。由于程序适用的范围是局部的,要求不高,采用随机函数产生中奖号码。查询中奖情况由于中奖记录不多,采用顺序查询。显示中奖记录方式按中奖记录顺序逐个显示。整个程序很小是一个整体,没有子系统,没有构架的太多考虑。采用UML对系统进行建模。4.3系统界面在《抽奖程序需求规格说明书》中已经对用户界面有了初步的设想,这里给出用户界面具体的设计,总共有八个界面。3深圳市信息职业技术学院迎新春趣味抽奖最小奖票号:XXXXXX最大奖票号:XXXXXXX初始界面请先输入最大奖票号,最小奖票号,再点击“开始抽奖”开始抽奖显示或打印中奖记录X结束程序查询中奖信息正在抽取等奖深圳市信息职业技术学院迎新春趣味抽奖请确认抽奖等级,点击“选定中奖号码”得到一个中奖号选定中奖号码中奖号码:XXXXXXXXXXXXXXXXX等待中奖号码产生的界面XX返回初始界面中奖号重复,请选定有效,还是丢弃?有效丢弃重复号处理界面深圳市信息职业技术学院迎新春趣味抽奖产生了一个中奖号码界面中奖号码:XXXXXXXXXXXXXXXXX中奖等级又有一个幸运者中奖XX确定4深圳市信息职业技术学院迎新春趣味抽奖中奖记录中奖等级奖票号码打印中奖记录XXXXXXXXXXXXXXXXXXXX..........显示中奖记录界面X结束程序返回初始界面深圳市信息职业技术学院迎新春趣味抽奖奖票号:XXXXXX查询中奖情况界面请先输入奖票号码,再点击“查询”按钮X查询深圳市信息职业技术学院迎新春趣味抽奖奖票号:XXXXXX查询中奖情况结果界面之一X恭喜您中了X等奖确定深圳市信息职业技术学院迎新春趣味抽奖奖票号:XXXXXX查询中奖情况结果界面之二X不好意思,您这次运气不太好没有中奖!确定图2抽奖程序界面5初始界面等待中奖号码产生产生一个中奖号码点击“开始抽奖”点击“选定中奖号码”点击“确定”点击“返回初始界面”初始界面显示中奖记录点击“显示或打印中奖记录”点击“返回初始界面”查询中奖信息初始界面查询中奖信息结果界面之二查询中奖信息结果界面之一点击“确定”点击“确定”点击“查询中奖信息”or点击“查询”点击“查询”图3抽奖程序界面间的转换(界面流)4.4约束和假定1用户期望程序的界面是Windows风格。界面设计已满足。2用户期望中奖信息显示成表格形式。因此设计决定在显示中奖记录用例中采用网格控件。3抽奖和打印中奖信息分开在不同时间完成,所以中奖信息必须以文件形式保存在硬盘里。4抽奖程序将安装在工会的一台手提电脑(配置:PIIICPU,256内存,Windows2000操作系统)上运行。经分析,抽奖程序无需复杂的构架设计,系统中所有构件都驻留一台电脑内可行。5本程序只限于内部使用,考虑到工会部门人员的操作水平,工会的手提电脑上不一定有数据库支持环境,所以采用文本文件来记录“中奖信息”。因为用文本文件记录中奖奖信息,工会的工作人员,尤其是兑奖人员,可以直接用Windows自带的记事本打开中奖信息和打印中奖信息,方便工作。将网格控件中显示的信息存入文本文件,每个字段间插入空格,每条中奖记录中间插入一个空行,将文本文件的内容按顺序显示在网格控件中,技术上可行。可以实现第2条和本条限制。6因为是院内娱乐性活动,没有严格的法律公证,奖票的有效性验证也只是增加趣味性。7抽奖规则(Rule)是系统的初始化信息,它应该包含所有初始化信息,但是用户要求将中奖等级,每个等级中奖的人数,是否允许重复中奖三个规则留给主持者现场人工控制以增加抽奖的趣味性。设计时,在整个系统中只有Chooser类使用最大号码和最小号码两个属性,按信息封装原则,将它们划归Chooser类,去掉初步类图中的Rule类。65对象模型5.1系统对象模型ChooserTicketRecordsNumberLeverAddRecord()Printing()Searching()Choose()11..*MaxNumberMinNumber图4抽奖程序类图6对象描述chooser类:只能产生一个对象,它是一个临时对象属性1:MinNumber,int,限定:界于1~20000之间,如果为空则取1属性2:MaxNumber,int,限定:界于1~20000之间,如果为空则取1000方法:choose(),返回值:intChoose()算法描述:利用随机函数,产生一个介于最大奖票号码和最小奖票号码范围内的一个随机数据,作为预备中奖号码,查询中奖情况,如果该号码重复中奖,显示重复号处理对话框由主持人现场决定该号有效或无效,如选择有效,则增加一条记录,如选择无效,则返回等待中奖号码产生界面。Ticket类:可产生多个对象,它是一个临时对象属性1:Number,int,限定界于1~20000之间Records类:只能产生一个对象,它是一个持久对象属性1:继承Ticket类的Number属性。属性2:Lever,int,如果没有给定则“等待中奖号码产生”界面中的“选定中奖号码按钮”无效。方法1:Add(),正常执行,无返回值。如果发生错误,显示操作系统返回的出错提示。Add():打开LuckyRecord.txt文件,在文件最未尾增加一条中奖记录。写入信息按中奖号码,空格,中奖等级,回车换行符的顺序写入文本文件末尾,关闭LuckyRecord.txt。方法2:Printing()Printing():打开LuckyRecord.txt文件,在屏幕上逐条显示中奖记录,等待用户点击“打印中奖信息”按钮后逐条打印中奖信息,关闭LuckyRecord.txt。7方法3:Searching()Searching():打开LuckyRecord.txt文件,逐条读出LuckyRecord.txt文件的中奖记录,比较中奖记录中的奖票号与查询奖票号,如果奖票号在LuckyRecord.txt中,则显示“中奖号码,中奖等级”,否则显示“没有中奖”,关闭LuckyRecord.txt。测试用例:测试用例1:MaxNumber=5MinNumber=1,抽出10个号码,分别选定允许重复,不允许重复,当选择不允许重复时,没法产生10个中奖号码,因为最大号和最小号中间只有5个数,测试打印中奖信息,测试查询中奖情况。测试用例2:MaxNumber=1000MinNumber=1,五个中奖等级,特等奖1名,一等奖3名,二等奖8名,三等奖8名,没有其它的奖,不允许重复。抽出20个中奖人数,测试抽奖情况与实际是否相符,测试打印功能,测试查询功能。7动态模型有三个场景:抽出一个中奖号码,显示中奖记录并打印中奖记录,查询中奖情况7.1场景1:抽出一个中奖号码场景:GUI:Chooser:Recordsenter(MaxNumber)enter(MinNumber)enter(开始抽奖)查询中奖情况(Ticket.Number)初始状态等待中奖号码产生[奖票没有重复中奖][奖票重复中奖]增加一个中奖记录重复号处理[允许重复中奖][不允许重复中奖]产生一个中奖号码图5抽出一个中奖号码场景顺序图8初始界面等待中奖号码产生产生一个中奖号码点击“开始抽奖”点击“选定中奖号码”点击“确定”点击“返回初始界面”图6抽出一个中奖号码场景用户界面间的转换7.2场景2:显示中奖记录并打印中奖记录场景:GUI:Records初始状态显示中奖记录Keystrokeenter(打印):打印机打印图7显示并打印中奖记录场景顺序图初始界面显示中奖记录点击“显示或打印中奖记录”点击“返回初始界面”图8显示并打印中奖记录场景用户界面间的转换7.3场景3:查询中奖情况场景9:GUI:Records初始状态查询中奖情况KeystrokeTicket.Number查询中奖情况结果界面之一查询中奖情况结果界面之二[中奖][未中奖]图9查询中奖情况场景顺序图查询中奖信息初始界面查询中奖信息结果界面之二查询中奖信息结果界面之一点击“确定”点击“确定”点击“查询中奖信息”or点击“查询”点击“查询”图10查询中奖情况场景用户界面转换图8非功能性需求抽奖程序的运行速度,响应时间,安全性,稳定性等性能要求较低,除操作系统外没有其它的软件环境要求,全部组件都安装在一台个人电脑或手提电脑上,没有硬件接口要求,前面的设计可以满足用户的非功能性要求。9辅助文档《抽奖程序需求规格说明书》