彩票选号系统实验报告_第1页
彩票选号系统实验报告_第2页
彩票选号系统实验报告_第3页
彩票选号系统实验报告_第4页
彩票选号系统实验报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西华大学课程设计报告西华大学课程设计报告6-22-数学与计算机学院课程设计说明书课程名称:软件工程课程设计课程代码:8404131题目:彩票选号系统—实现选号功能年级/专业/班:09软件工程4班学生姓名:学号:开始时间:2011年5月23日完成时间:2011年6月6日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总分(100)指导教师签名:年月日软件工程课程设计任务书学院名称:数学与计算机学院课程代码:_8404131______专业:软件工程年级:09级一、设计题目彩票选号系统—实现选号功能。二、主要内容彩票过去销售数据可以模拟自动生成,然后进行选号:(1)跟随选号:根据历史跟随情况,预测下期开奖,并有历史验证功能,时刻把握先机。(2)遗漏选号:分为单选遗漏选号和组选遗漏选号。(3)智能测号:系统使用优化概率序列自动测号,号码多少可以自由调节,准确性较高。(4)排列组号:将自己所选的号码,全部排列组合,包罗所有组号。(支持单选,组选3,组选6,所有组选投注),可对投注结果进行单选与组选的互相转换。三、具体要求及应提交的材料1.分析阶段:一个小型的彩票选号系统,需完成以下功能:(1)显示上一期开奖号码。(2)跟随选号,根据历史跟随情况,预测下期开奖;(3)智能选号,系统使用优化概率序列自动测号,号码多少可以自由调节,准确性较高;(4)手动选号,并列出所有排列组合;(5)投注结果进行单选与组选的互相转换。导出系统的数据流程图和实体关系图(E-R)2.设计阶段:针对分析阶段提出的软件要求,给出实现的方案和具体细节的说明。(1)考虑该软件基本功能成份,该系统具有5个基本功能成分:=1\*GB3①显示之前开奖号码,=2\*GB3②跟随选号,=3\*GB3③智能选号,=4\*GB3④手动选号,⑤单选与组选互换。(2)根据分析,导出系统的功能模块图。(3)设计数据库。使用MicrosoftAccess创建数据库。确定数据库中数据表的组成。确定数据表中字段的构成、主键字段和有关字段的约束条件等。依靠数据表中主键字段建立数据表之间的关系,并由此建立数据表之间的参照完整性约束。(4)根据功能确定软件模块组成及调用关系。3.编码阶段建造模块,在可视化编程环境下,按照软件设计要求制作界面和完成对模块的编码,由此使软件设计具体化为软件作品。4.运行维护在软件运行时,检查软件的不足或错误,并进行维护。5.编写课程设计报告(1)设计题目(2)任务要求(3)系统总体方案(4)各功能模块和流程图(5)心得体会和参考资料五、主要技术路线提示使用C语言进行编程,在vc6.0平台运行。四、进度安排序号设计内容天数1分析设计内容,给出解决方案32创建数据库及建表33可视化界面设计24对所建数据库进行设计,整理设计思路,编码、测试,写出课程设计报告45指导老师检查设计结果并做成绩评定2总计14六、参考资料[1]张海藩.软件工程导论,清华大学出版社,2004[2]陈明.实用软件工程基础,清华大学出版社,2003[3]殷人昆.实用软件工程,清华大学出版社,2003指导教师签名日期年月日系主任审核日期年月日

目录1.前言……………52.需求分析………………………62.1.功能分析……………………62.2.方案分析……………………63.概要设计………………………73.1.数据结构…………………73.2.逻辑结构与物理结构……………………83.3.功能模块划分………………83.3.1.结构框图……………………53.3.2.程序流图……………………73.3.3.模块功能分析及外部设计…………………83.4.抽象数据类定义………………84.详细设计…………94.1.数据类型定义…………………94.2.主要模块内部设计……………94.2.1.模块1设计…………………94.2.1.1.模块算法………………94.2.1.2.流程图…………………94.3.1.3.伪代码…………………94.2.2.模块2设计…………………104.2.3.模块3设计…………………105.实现与调试分析……………………115.1.实现环境…………115.2.语言选择…………115.3.调试分析…………116.测试分析……………116.1.测试用例………………………116.2.测试结果………………………126.3.性能分析………………………127.用户手册………………………12总结………………15参考文献…………15附录源程序文件名清单:………15

1.前言彩票选号系统是一个多方位为彩民提供选号帮组的系统。它可以显示之前几期的开奖号码,从而通过各种分析,为彩民提供下面多种选号方案,也也可以由彩民手动选号,并对该选号投注结果进行自由排列,从而得出更多的投注方案,大大提高了彩民中奖的概率。2.需求分析2.1功能分析彩票选号系统模拟的投彩过程,主要功能有:(1)显示上一期开奖号码。(2)跟随选号,根据历史跟随情况,预测下期开奖;(3)智能选号,系统使用优化概率序列自动测号,号码多少可以自由调节,准确性较高;(4)手动选号,并列出所有排列组合;(5)投注结果进行单选与组选的互相转换。2.2.方案分析跟随选号,就跟随上一期开奖结果选择3个投彩号码,并由用户决定是否进行单选与组选的转换。智能选号,计算机随机选择3个投彩号码,并由用户决定是否进行单选与组选的转换。手动选号,由用户自己输入3个投彩号码,并决定是否进行单选与组选的转换。当输入的数字超过3个时,提示输入错误,重新输入。设计数据刘图与数据字典;编码阶段实现功能的步骤用C语言完成。本文件中用到的专门术语的定义和外文首字母词组的原词组。数据流图(DFD):描绘信息流和数据从输入到输出的过程所经历的变换。实体—联系图(E-R图):包含实体(即数据对象)、关系和属性。作为用户与分析员之间有效交流的工具。状态转换图:通过描绘系统的状态及引起系统的状态转换的事件来表示系统的行为。提供行为建模机制。结构框图:一个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块的调用关系。输入-处理-输出图(IPO图):方便描绘输入数据、对数据的处理和输出数据之间的关系。

3.概要设计3.1.数据结构系统的数据结构由标准数据库语言SQL生成。3.2.逻辑结构(E-R图)与物理结构逻辑结构(系统的物理结构具体由数据库来设计与生成,此处略):彩民彩民选号选号系统组选6组选3单选手动跟随随机nn图1.彩票选号系统的E-R图3.3.功能模块划分彩票选号系统大致有三个功能:显示上次开奖结果,选号(包括手动选号、随机选号、跟随选号)及排列选号(单选、组选3、组选6)选号系统显示上期1.0选号系统显示上期1.0选号2.0排列3.0手

2.1随

2.2跟

2.3单

3.1组

3

3.2组

6

3.3图2.彩票选号系统的HIPO图3.3.2.程序流图0层数据流图如下:彩票

选号

系统彩票

选号

系统彩民投注站最终选号投彩图3.零层数据流图1层数据流图如下:彩票

选号

彩票

选号

处理D所选号码单选

组选

处理投注站彩民最终选号选号号码投彩图4.一层数据流图2层数据流图如下:彩票

选号

处理彩票

选号

处理D1所选号码单选

组选

处理彩民投注站最终选号选号号码投彩D2排列号码排列产生

最终

选号排列号码图5.二层数据流图3.3.3.模块功能分析及外部设计彩票选号系统大致有三个功能模块:跟随选号,智能选号,及手动选号。跟随选号模块:首先显示上期开奖结果,然后复制上期开奖投彩。第一个(跟随选号模块):由计算机随机生成上期开奖结果,并对这三个号码进行“单选/组选”投彩。第二个(智能选号模块):由计算机随机生成3个投彩号码,并对这三个号码进行“单选/组选”投彩。第三个(手动选号模块):由用户手动输入三个号码,并对这三个号码进行“单选/组选”投彩。(注视:单选:直接对选号功能选出的号码进行单选投彩;组选3:若有两个号码相同,用户可自行选择是否进行组选3;组选6:若三个号码不一样,用户可自行选择是否进行组选6。)3.4.抽象数据类定:intLotNum[3];//产生三个随机号码彩票

选号

处理D1彩票

选号

处理D1所选号码单选

组选

处理彩民投注站最终选号选号号码投彩D2排列号码排列产生

最终

选号排列号码4.1.数据类型定义intLotNum[3];intstrChoice;//一级菜单选项intChoice;//二级菜单选项4.2.主要模块内部设计4.2.1.模块1(跟随选号模块)设计4.2.1.1.模块算法由计算机随机生成0~9内的三个随机数作为上期开奖结果;并对这三个号码进行“单选/组选”投彩。如果单选,直接用该号码投注,如果组选,预测三个号码中是否有相等的号码——有三个相等,单选并输投注;有两个相等,组选3投注;没有相等号码,组选6投注。4.2.1.2.流程图(此图为整体流程图)开始开始跟随选号?智能选号跟随选号手动选号智能选号单选?单选组选结束YESYESYESNONONO图6.程序流程图4.3.1.3.伪代码voidfollw(){SetLot();//随机产生上次开奖号码 cout<<endl; cout<<"\n\t\t以下为上期开奖结果:\n\n\t\t"; cout<<"\t\t"<<LotNum[0]<<""<<LotNum[1]<<""<<LotNum[2]<<endl;//输出上期开奖 ercen();//调用函数ercen选择组选3还是组选6 }//follw4.2.2.模块2(智能选号模块)设计4.2.2.1.模块算法由计算机随机生成0~9内的三个随机数作为本期投注号码;并对这三个号码进行“单选/组选”投彩。如果单选,直接用该号码投注,如果组选,预测三个号码中是否有相等的号码——有三个相等,单选并输投注;有两个相等,组选3投注;没有相等号码,组选6投注。4.3.2.2.伪代码voidsuiji(){SetLot();//随机产生上次开奖号码 cout<<endl; cout<<"\n\t\t以下为随机产生投注号码:\n\n\t\t"; cout<<"\t\t"<<LotNum[0]<<""<<LotNum[1]<<""<<LotNum[2]<<endl;//输出随机产生号码 ercen();//调用函数ercen选择组选3还是组选6 }//suiji4.2.3.模块3(手动选号模块)设计4.2.3.1.模块算法由用户手动输入0~9内的三个数作为本期投注号码;并对这三个号码进行“单选/组选”投彩。如果单选,直接用该号码投注,如果组选,预测三个号码中是否有相等的号码——有三个相等,单选并输投注;有两个相等,组选3投注;没有相等号码,组选6投注。4.3.3.2.伪代码voidmyself(){cout<<"\n\t\t请输入想要投注的号码(3位):\n\n"; for(inti=0;i<3;i++) {cout<<"第"<<i+1<<"位数字:"; cin>>LotNum[i]; while(LotNum[i]<0||LotNum[i]>9){//check函数检查输入值,如果满足就不需要在输入,这是就返回1或者truecout<<"输入错误,输入的数应该在0~9之间,请重新输入:";cin>>LotNum[i];}} cout<<endl; ercen();//调用函数ercen选择组选3还是组选6}//myself5.实现与调试分析5.1.实现环境WindowsXP系统,VC6.05.2.语言选择C语言5.3.调试分析模块测试时,发现刚开始参数没有传递成功,导致出现了不在0~9范围内的随机数,最后通过调试,找到了错误。并对参数的作用域有了清晰的认识。再经过子系统测试,系统测试,验收测试以及平行运行,把系统进行了进一步的完善。6.测试分析6.1.测试用例软件测试的目的就是在软件投入生产性运行之前,尽可能多的发现软件中的错误。这一目的决定了如何去组织测试。目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后审核。此处采用白盒测试。简化之后的流程图(见下页):开始开始12637485结束kgicebjldfah图7.简化流程图6.2.测试结果白盒测试用例序号测试数据测试节点测试边1随机数3个(若3个数都不相等)1,6,4,8aghklf2随机数3个(若3个数存在相等)1,6,4,5aghef3随机数3个(若3个数都不相等)1,2,7,4,8abijklf4随机数3个(若3个数存在相等)1,2,7,4,5abijef5输入3个不相等的数1,2,3,4,8abcdklf6输入三个数,存在相等的1,2,3,4,5abcdef表1.白盒测试用例6.3.性能分析通过调试,该系统的性能较好。时间复杂度和空间复杂度都适中,进行界面设计后可交互用户使用,并在其使用中逐渐完善和维护。用户手册用户在VC6.0上运行程序,出现如下登录界面:图8.进入界面可选择1~4进行操作,以下为"跟随选号—单选","智能选号—单选","手动选号—多选"的几个例子。图9.跟随选号,单选投注示例图10.智能选号—单选示例当然用户也可以选择“组选投注”方式,之前已经测试过,在此就不全部列出。一下为“手动选号”时用户输入错误提示:图11.输入错误提示图下面是手动输入时产生的组选6和组选3的投注示例:图11.手动选号组选6示例图12.手动选号组选3示例由于情况很多,在此就不一一列举了。总结真是不容易,又完成了一个课设。此次课设,使我从彩票选号的角度,全面的体验了一下对软件的各个方面从策划,设计,测试,到运行,所有角色都扮演了一遍。发现完成一项开发软件的工程,不是一件简单的事儿。尤其,在问题定义阶段,自己是在老师的帮助并查阅了大量资料的情况下弄懂了题目的意思。除编码外,需求分析时间花的最长。即便如此,在编程的时候,还是觉得前面需求分析做的不是很彻底。但因时间原因,也没法做得再细致了。操作方面,对VC和Visio的操作,更加熟练了,更加快速了。对于系统,数据流程图,层图,ipo图,程序流程图,盒图,PAD图,等,都进行进一步的了解和设计。希望以后能够在工作时用到这些!参考文献[1]张海藩.软件工程导论,清华大学出版社,2004[2]陈明.实用软件工程基础,清华大学出版社,2003[3]殷人昆.实用软件工程,清华大学出版社,2003附录#include<time.h>#include<stdlib.h>#include<iostream.h>intLotNum[3];/***************函数************/voidSetLot(void)//实现产生3个随机数{intnRnd,Num;for(inti=0;i<3;i++) {nRnd=rand()%10; for(intj=0;j<nRnd;j++) {Num=rand()%10; //cout<<Num<<'\b'; } //cout<<Num; LotNum[i]=Num; }} voidCompare()//测试出是组选3还是组选6{ if(LotNum[0]==LotNum[1]&&LotNum[1]==LotNum[2])//三个号码相等 { cout<<"\t\t恭喜您已完成彩票投注,投注号码为(只能单选):"<<endl; cout<<"\t\t"<<LotNum[0]<<""<<LotNum[1]<<""<<LotNum[2]<<endl;} if(LotNum[0]!=LotNum[1]&&LotNum[1]!=LotNum[2]&&LotNum[0]!=LotNum[2]) { cout<<"\t\t恭喜您已完成彩票投注,投注号码为(组选6):"<<endl;//三个号码两两不相等 cout<<"\t\t"<<LotNum[0]<<""<<LotNum[1]<<""<<LotNum[2]<<endl <<"\t\t"<<LotNum[0]<<""<<LotNum[2]<<""<<LotNum[1]<<endl <<"\t\t"<<LotNum[1]<<""<<LotNum[0]<<""<<LotNum[2]<<endl <<"\t\t"<<LotNum[1]<<""<<LotNum[2]<<""<<LotNum[0]<<endl<<"\t\t"<<LotNum[2]<<""<<LotNum[0]<<""<<LotNum[1]<<endl <<"\t\t"<<LotNum[2]<<""<<LotNum[1]<<""<<LotNum[0]<<endl;} else { cout<<"\t\t恭喜您已完成彩票投注,投注号码为(组选3):"<<endl;//有两个号码相等 if(LotNum[0]==LotNum[1]) cout<<"\t\t"<<LotNum[0]<<""<<LotNum[1]<<""<<LotNum[2]<<endl <<"\t\t"<<LotNum[0]<<""<<LotNum[2]<<""<<LotNum[1]<<endl <<"\t\t"<<LotNum[2]<<""<<LotNum[0]<<""<<LotNum[1]<<endl; elseif(LotNum[1]==LotNum[2])cout<<"\t\t"<<LotNum[0]<<""<<LotNum[1]<<""<<LotNum[2]<<endl <<"\t\t"<<LotNum[1]<<""<<LotNum[0]<<""<<LotNum[2]<<endl <<"\t\t"<<LotNum[1]<<""<<LotNum[2]<<""<<LotNum[0]<<endl; elseif(LotNum[0]==LotNum[2]) cout<<"\t\t"<<LotNum[0]<<""<<LotNum[1]<<""<<LotNum[2]<<endl <<"\t\t"<<LotNum[1]<<""<<LotNum[0]<<""<<LotNum[2]<<endl <<"\t\t"<<LotNum[0]<<""<<LotNum[2]<<""<<LotNum[1]<<endl; }//else }//Comparevoidercen()//二层函数(确认单选,组选){ intChoice; do {cout<<"\n\n\t********************\n\n"; cout<<"\t\t1.单选\n"; cout<<"\t\t2.组选\n";cout<<"\t\t3.返回\n"; cout<<"\n\t********************"; cout<<"\n\t\t请选择以上操作:";cin>>Choice; if(Choice==1) {cout<<"\n\n\t恭喜您已完成彩票投注,投注号码为(单选):\n\t\t"; cout<<"\t\t"<<LotNum[0]<<""<<LotNum[1]<<""<<LotNum[2]<<endl;} elseif(Choice==2) Compare();//比较选出组选3还是组选6 elseif(Choice=3) return;//返回上层 elseif(Choice!=3) cout<<"\t\t输入错误,请重新选择:\n";}while(Choice!=3); }voidfollw(){SetLot();//随机产生上次开奖号码cout<<endl;cout<<"\n\t\t以下为上期开奖结果:\n\n\t\t";cout<<"\t\t"<<LotNum[0]<<""<<LotNum[1]<<""<<LotNum[2]<<endl;//输出上期开奖ercen();//调用函数ercen选择组选3还是组选6}//follwvoidsuiji(){SetLot();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论