




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
西華大學課程設計報告西華大學課程設計報告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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第29屆全國中學生物理競賽復賽答案
- 模具產品攤費用合同協議
- 商品意向金協議合同
- 啟迪堂培訓合同協議
- 員工個人合同協議
- 品牌成立合同協議
- 品牌廣告制作合同協議
- 商場解約合同協議
- 民事租賃合同調節協議
- 模型模具加工協議書范本
- 2025年一級建造師之一建礦業工程實務題庫附答案(典型題)
- 甘肅省2025年甘肅高三月考試卷(四4月)(甘肅二診)(數學試題+答案)
- 2025年中小學教師資格考試的重要試題及答案
- 微訓練 一文多考 備考高效之詩歌《蘇幕遮?燎沉香》教師版
- 2025屆山東省濟南市一模生物試題(原卷版+解析版)
- 海南地理會考試卷及答案2024
- 全國河大音像版初中信息技術八年級上冊第三章第三節《循環結構程序設計》教學設計
- 履帶式起重機進場驗收表
- 企業健康管理計劃規劃方案討論
- 隧道高空作業施工方案
- 汽車維修前臺接待流程參考指導
評論
0/150
提交評論