運動會分數(shù)統(tǒng)計系統(tǒng) 課程設計
《運動會分數(shù)統(tǒng)計系統(tǒng) 課程設計》由會員分享,可在線閱讀,更多相關《運動會分數(shù)統(tǒng)計系統(tǒng) 課程設計(24頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、***************** 實踐教學 ****************** 蘭州理工大學 計算機與通信學院 2021年秋季學期 面向?qū)ο笳n程設計 題 目:運動會分數(shù)統(tǒng)計系統(tǒng) 專業(yè)班級:計算機科學與技術(shù)3班 姓 名: 董 強 軍 學 號: 07240309 指導教師: 劉 嘉 成 績:______________ 目 錄 序 言 2 摘 要 3 第一章 問題描述 4 第二章 需求
2、分析 5 2.1 需求陳述 5 2.2 建立對象模型 5 2.3 建立功能模型 5 第三章 概要設計 6 3.1 系統(tǒng)設計 6 3.1.1 系統(tǒng)分析 6 3.1.2 系統(tǒng)設計思想 6 3.2 系統(tǒng)類層次及結(jié)構(gòu)圖 7 第四章 詳細設計 9 4.1 類與對象的設計 9 4.1.1 類屬性的詳細設計 9 4.1.2 類行為的詳細設計 9 4.2 類的詳細繼承關系 10 第五章 測試與維護 11 運行界面 11 設計總
3、結(jié) 15 參考文獻 15 致謝 16 附錄:源代碼……………………………………………………………………… 17 序 言 近年來,在計算機軟件業(yè),面向?qū)ο蟪绦蛟O計的思想已經(jīng)被越來越多的軟件設計人員所接受。不僅因為它是一種最先進的,新穎的計算機程序設計思想,最主要的是這種新的思想更接近人的思維活動,人們利用這種思想進行程序設計時,可以很大程度地提高編程能力,減少軟件維護的開銷。面向?qū)ο蟪绦蛟O計方法是通過增加軟件的可擴充性和可重用性來提高程序員的編程能力。 隨著計算機在我國廣泛而深入的應用,在分析和開發(fā)計算機系統(tǒng)軟件和應用軟件的過程中,迫切需要掌握各種數(shù)據(jù)結(jié)構(gòu)的描述方法以
4、及相應的處理算法。因此面向?qū)ο蟪绦蛟O計知識是計算機相關科學的學生和從事計算機應用的技術(shù)人員必備的專業(yè)根底知識。我們也可以認為:對象+消息=程序。 摘 要 本文詳細介紹了運動會分數(shù)統(tǒng)計系統(tǒng)程序的設計與實現(xiàn),該程序具有運動會成績的輸入,統(tǒng)計與輸出等功能。實際設計過程中,通過對類的使用,加深我們面向?qū)ο缶幊痰乃枷?,有助于的以后的學習。在課程設計中,程序設計語言采用Visual C++,程序運行平臺為Windows XP。對于獲得名次的同學在存儲其成績的時候采用了鏈表的結(jié)構(gòu),有利于數(shù)據(jù)的存儲與查找。程序通過調(diào)試運行,現(xiàn)了最初的設計目標,并且經(jīng)過適當完善后,在實際中可以解決更多的問題。
5、 關鍵詞 運動會分數(shù)統(tǒng)計 程序設計 C++ 第一章 問題描述 本課程設計主要解決在運動會上,將各個比賽工程所有獲得名次的同學的成績輸入,成績查詢,成績修改,成績刪除,以及成績輸出。 該程序用于運動會上,涉及到比賽工程成績的錄入,某個學校在某個工程中獲得成績的查詢,某個學校在某個運動工程中獲得的成績的修改,某個學校在某個運動工程中獲得的成績的刪除,以及某個學校所有獲得成績的得分報表以及團體成績的
6、得分報表。其中比賽成績的錄入可以按照運動工程舉行的次序輸入,也可以輸入自己指定的運動工程的成績;自己擴展的功能是“某個學校在某個工程中獲得成績的查詢,某個學校在某個運動工程中獲得的成績的修改,某個學校在某個運動工程中獲得的成績的刪除〞三項,這三項都要求輸入學校以及運動工程編號,通過這兩項作為參數(shù)具體的函數(shù)可以查詢、修改成績或者是刪除某項成績記錄,進而影響到最后得分報表的輸出。 第二章 需求分析 本課程設計主要解決在運動會上,將各個比賽工程所有獲得名次的同學的成績輸入,成績查詢
7、,成績修改,成績刪除,以及成績輸出。 2.1.1 開發(fā)語言 本課程涉及主要采用了C++。C++語言代表著對以往語言之精華的開展和提煉,既支持面向?qū)ο蟮某绦蛟O計,也支持結(jié)構(gòu)化的程序設計。它修補了C語言中的一些漏洞,提供更好的類型檢查和編譯時的分析,提供了異常處理機制,簡化了程序的出錯處理,利用throw、try和catch關鍵字,提高了程序的可靠性和可讀性。 函數(shù)重載允許相同的函數(shù)名具有不同參數(shù)表,系統(tǒng)根據(jù)參數(shù)的個數(shù)和類型匹配相應的函數(shù)。提供了模板機制。模板包括類模板和函數(shù)模板兩種,它們將數(shù)據(jù)類型作為參數(shù)。 2.1.2 運行環(huán)境 。Visual C++(簡稱VC)是Mi
8、crosoft公司推出的目前使用極為廣泛的基于Windows平臺的C++可視化開發(fā)環(huán)境。 “可視〞的資源編輯器與MFC類以及應用程序向?qū)?,為快速高效地開發(fā)出功能強大的Windows應用程序提供了極大的方便。利用進行Internet、數(shù)據(jù)庫及多媒體等多方面的程序開發(fā)也很容易。 2.2 建立對象模型 將各個比賽工程所有獲得名次的同學的成績輸入,成績查詢,成績修改,成績刪除,以及成績輸出封裝為一個類,通過函數(shù)調(diào)用將這些對象連接起來。 2.3 建立功能模型 1〕輸入男女參賽工程數(shù)及工程編號,工程名次、 得分,參賽學校、運發(fā)動編號、性別; 2〕產(chǎn)生各學校的成績單,內(nèi)容包括各校所取得的每項成績的
9、工程號、名次、姓名; 3〕產(chǎn)生團體總分報表,內(nèi)容包括校號、男子團體總分、女子團體總分和團 體總分; 4〕要求系統(tǒng)能實現(xiàn)查詢、排序、刪除、修改功能。 第三章 概要設計 3.1 系統(tǒng)設計 系統(tǒng)分析 該程序先采用了一個spotmeeting類成員void menu()中的switch語句來控制要執(zhí)行操作的編號,用戶可以有多種選擇,根據(jù)不同的需要選擇不同的操作。 其中具體的操作主要采用的是一個鏈表的結(jié)構(gòu),涉及到了鏈表的插入,鏈表的查找,以及鏈表的刪除等知識點。鏈表的插入解決了各個工程中獲得名次的同學的成績的錄入問題,鏈表的查找解決了運動工程成績的查詢,以及后面的成績
10、的輸出、刪除都要用到鏈表的查找,查找時先將頭結(jié)點的地址賦給查找函數(shù),根據(jù)查找的條件依次與每個結(jié)點中相應的比擬,假設相等那么輸出所需要的信息,否那么返回“查找的元素不存在〞信息。而成績的刪除,先查找到其所在的結(jié)點,然后將該結(jié)點前后結(jié)點相連,再刪除該結(jié)點;成績的修改要先查找到其所在的結(jié)點,然后再重新錄入數(shù)據(jù);至于學校所獲得的各項成績的輸出,將該校所在的頭結(jié)點的地址賦給控制輸出的函數(shù),利用指針的移動依次將各項成績輸出,而團體成績的輸出,先要根據(jù)運動工程編號來確定是男生還是女生工程,然后再依次累加,分別得到男女生的團體得分,最后將兩者相加,得到學校的團體得分。
11、 系統(tǒng)功能要求如下: 1〕輸入男、女參賽工程數(shù)及工程編號,工程名次、得分,參賽學校編號、運發(fā)動編號、性別; 2〕產(chǎn)生各學校的成績單,內(nèi)容包括各校所取得的每項成績的工程號、名次(成績)、姓名; 3〕產(chǎn)生團體總分報表,內(nèi)容包括校號、男子團體總分、女子團體總分和團體總分。 4〕要求系統(tǒng)能實現(xiàn)查詢、排序、刪除、修改功能。 系統(tǒng)設計思想 面向?qū)ο蟪绦蛟O計方法是通過增加軟件的可擴充性和可重用性來提高程序員的編程能力的。面向?qū)ο蟪绦虻母驹厥菍ο竺嫦驅(qū)ο蟮闹饕Y(jié)構(gòu)特點是:第一,程序一般由類的定義和類的使用兩局部組成,在主程序中定義各對象并規(guī)定它們之間傳遞消息的規(guī)律;第二,
12、程序間的一切操作都是通過向?qū)ο蟀l(fā)送消息來實現(xiàn)的,對象接收到消息后,啟動有關方法完成相應的操作;第三,類由繼承關系產(chǎn)生相互間的聯(lián)系。一個程序中涉及到的類,可以由程序設計者自己定義,也可以使用現(xiàn)成的類。盡量使用現(xiàn)成的類,是面向?qū)ο蟪绦蛟O計范型所倡導的程序設計風格。 3.2 系統(tǒng)類層次及結(jié)構(gòu)圖 1 2 3 4 5 6 7 輸入運動會的一些根本信息 〔參賽學校數(shù),男女的工程數(shù)〕 開始 列出操作目錄,選擇要操作的編號 輸 入 修 改 查 詢 刪 除 輸 出 各 個 項 目 輸 體 出
13、成 學 績 校 團 退 出 程 序 列出操作目錄 選擇要操作的編號 結(jié)束 圖 3.1 系統(tǒng)流程圖 用一個do—while循環(huán)語句執(zhí)行完標號為1—6的某個分支之后,重新回到操作目錄,選擇要進行的操作,直到選擇標號為7的分支退出程序。 sportmeeting 類studentlist 類St
14、udent 類的繼承圖 第四章 詳細設計 4.1 類與對象的設計 該程序先采用了一個嵌套在do—while循環(huán)語句中的switch語句來控制要執(zhí)行操作的編號,用戶可以有多種選擇,根據(jù)不同的需要選擇不同的操作。 其中具體的操作主要采用的是一個鏈表的結(jié)構(gòu),涉及到了鏈表的插入,鏈表的查找,以及鏈表的刪除等知識點。鏈表的插入解決了各個工程中獲得名次的同學的成績的錄入問題,具體為:為每個學校建立一個頭結(jié)點,假設該學校有同學取得名次,建立一個新的結(jié)點來存儲該同學的信息,并將其插到該學校所在鏈表的最后一個結(jié)點后面。鏈表的查找解決了運動工
15、程成績的查詢,以及后面的成績的輸出、刪除都要用到鏈表的查找,查找時先將頭結(jié)點的地址賦給查找函數(shù),根據(jù)查找的條件依次與每個結(jié)點中相應的比擬,假設相等那么輸出所需要的信息,否那么返回“查找的元素不存在〞信息。而成績的刪除,先查找到其所在的結(jié)點,然后將該結(jié)點前后結(jié)點相連,再刪除該結(jié)點;成績的修改要先查找到其所在的結(jié)點,然后再重新錄入數(shù)據(jù);至于學校所獲得的各項成績的輸出,將該校所在的頭結(jié)點的地址賦給控制輸出的函數(shù),利用指針的移動依次將各項成績輸出,而團體成績的輸出,先要根據(jù)運動工程編號來確定是男生還是女生工程,然后再依次累加,分別得到男女生的團體得分,最后將兩者相加,得到學校的團體得分。 類
16、屬性的詳細設計 類的屬性包括靜態(tài)屬性和動態(tài)屬性。該程序用于運動會上,其中類的靜態(tài)屬性包括:運動工程的編號,參加比賽的學校總數(shù),涉及到的動態(tài)屬性包括:比賽工程成績的錄入,某個學校在某個工程中獲得成績的查詢,某個學校在某個運動工程中獲得的成績的修改,某個學校在某個運動工程中獲得的成績的刪除,以及某個學校所有獲得成績的得分報表以及團體成績的得分報表。其中比賽成績的錄入可以按照運動工程舉行的次序輸入,也可以輸入自己指定的運動工程的成績;自己擴展的功能是“某個學校在某個工程中獲得成績的查詢,某個學校在某個運動工程中獲得的成績的修改,某個學校在某個運動工程中獲得的成績的刪除〞三項,這三項都要求輸入學校以
17、及運動工程編號,通過這兩項作為參數(shù)具體的函數(shù)可以查詢、修改成績或者是刪除某項成績記錄,進而影響到最后得分報表的輸出。 sportmeeting 類studentlist 類Student 圖4類的繼承圖 第五章 測試與維護 運行界面 一:進入系統(tǒng),按要求輸入各工程數(shù)級參賽校數(shù),否那么,將會顯示出錯,如下列圖所示。 〔圖6.1〕
18、 〔圖6.2〕 二:進入主界面,如下列圖所示。 〔圖6.3〕 三:按要求輸入前三名同學的成績,如下列圖所示。 〔圖6.4〕 四:查詢某個工程,如下列圖所示。 〔圖6.5〕 〔圖6.6〕 五:輸出某個工程的成績,如下列圖所示。
19、 〔圖6.7〕 六:刪除某個工程并再次進行驗證是否刪除,如下列圖所示。 〔圖6.8〕 〔圖6.9〕 七:修改某個工程,如下列圖所示。 〔圖6.10〕 八:退出系統(tǒng)界面,如下列圖所示 〔圖6.11〕 設計總結(jié) 本次課程設計,使我對課程設計的設計方法、步驟
20、、思路、有一定的了解與認識。它相當于實際設計工作的模擬。在課程設計過程中,根本能按照規(guī)定的程序進行,先針對表達式算法為背景,通過調(diào)研、分析現(xiàn)有的管理模式和已有的管理軟件,建立系統(tǒng)模型;收集、調(diào)查有關資料,然后進入草案階段,其間與指導教師進行幾次方案的討論、修改,再討論、再修改,最后定案。 通過此次課程設計,我了解了編寫應用軟件的一般步驟,獲得了很多珍貴的經(jīng)驗。特別是怎么樣通過理論與實踐相結(jié)合,把書本上的內(nèi)容應用到我們做的程序上去。怎樣使各個子模塊實施其的詳細功能,特別是各個子模塊之間的接口,一定要相當清晰,到達相互協(xié)調(diào)的作用其次,我熟悉了所學的各種知識。學會了很多關于程序設計的經(jīng)驗和技巧,明
21、白了程序的使用性和通用性是程序生存周期長短的關鍵,學會了調(diào)試程序的一般方法。重要的是,通過這次設計,逐步我具備了走向程序員的根本素質(zhì)。知道應如何在困難重重中一步一步細心的發(fā)現(xiàn)問題,解決問題。并深刻體會到了團體合作精神的重要性,知道了在軟件設計中對界面和功能如何平衡,如何到達相對的完美。 參考文獻 [1]陳維興,林小茶.c++面向?qū)ο蟪绦蛟O計教程. 北京: 清華大學出版社,1996.2004. [2]張國峰. C++程序設計實用教程. 北京: 清華大學出版社,1996. [3]張松梅. C++語言教程. 電子科技大學出版社,1993. [4]閻龍. C程序員的C++指南
22、. 北京航空航天大學出版社,1992. [5]王博. 面向?qū)ο蟮慕?、設計技術(shù)與方法. 北京希望電腦公司,1990. [6]汪成為. 面向?qū)ο蠓治觥⒃O計及應用. 國防工業(yè)出版社,1992. [7]江明德. 面向?qū)ο蟪绦蛟O計. 電子工業(yè)出版社,1993. [8]呂鳳翥.C++語言程序設計.電子工業(yè)出版社,2001. 致謝 首先感謝我的指導老師劉嘉老師,他在我的課程設計過程中提出了指導性的方案和架構(gòu),并指引我閱讀相關的資料和書籍,使我在不熟悉的領域中仍能迅速掌握新的技術(shù)。 在這兩周的C++課程設計中,
23、對課本中所學的各種知識進一步理解和掌握,學會了如何把學到的知識用于解決實際問題,鍛煉了自己動手的能力。
一個人要完成所有的工作是非常困難和耗時的。在以后的學習中我會更加注意各個方面的能力的協(xié)調(diào)開展。在課程設計時遇到了很多的問題,在老師的幫助,和對各種資料的查閱中,將問題解決,培養(yǎng)了我自主動手,獨立研究的能力,為今后在學習工作中能更好的開展打下了堅實的根底。
我的同學在我的課程設計中也給了我很多無私的幫助和支持,在此一并表示感謝。
附錄:源代碼
#include 24、ing>
#include 25、t::student(int ps,int sc, int cID, int sID, char c, string nm)
:name(nm), pos(ps), score(sc), schID(cID), stuID(sID), sex(c)
{}
void student::print()
{
cout< 26、ist();
void print();
void add(int it,char c);
void mod(int it,char c);
student list[3];
};
studentlist::studentlist()
{}
studentlist::~studentlist()
{}
void studentlist::mod(int it,char c)
{
cout<<"這是你將要修改的信息\n";
print();
cout<<"你輸入\n";
add(it,c);
}
void studentlist::add(int 27、 it, char c)
{
int i;
cout<<"分別輸入1,2,3的信息\n";
for (i=0; i < 3; i++)
{
cout<<"成績 學校ID 學生ID 學生姓名\n";
cin>>list[i].score>>list[i].schID>>list[i].stuID>>list[i].name;
list[i].pos=i+1;
list[i].sex=c;
}
}
void studentlist::print()
{
cout<<"分別輸出1,2 ,3名次的信息\n";
cout<<"成績 學校ID 學生 28、ID 學生性別 學生姓名\n";
int i;
for (i=0; i < 3; i++)
{
cout< 29、某個工程的成績"< 30、
cout< 31、);
}
void sportmeeting::insert()
{
int it;
cout<<"輸入要添加的工程\n";
cin>>it;
cout<<"添加男子(m)或女子(w)\n";
char c;
cin>>c;
if (c == 'w')
{
wlist[it].add(it,c);
wflags[it]=true;
}
else
{
mlist[it].add(it,c);
mflags[it]=true;
}
}
void sportmeeting::del()
{
int it;
cout<<"輸入要刪除的記錄的工程號 32、\n";
cin>>it;
char c;
cout<<"刪除男子(m)或女子(w)\n";
cin>>c;
if (c == 'w')
{
wflags[it]=false;
}
else
{
mflags[it]=false;
}
}
void sportmeeting::find()
{
int it;
cout<<"輸入要修改的工程號\n";
cin>>it;
char c;
cout<<"查詢男子(m)或女子(w)";
cin>>c;
if (c == 'w')
{
if (wflags[it])
{
wlist[it].pri 33、nt();
}
else
{
cout<<"沒有該信息\n";
}
}
else
{
if (mflags[it])
{
mlist[it].print();
}
else
cout<<"沒有該信息\n";
}
}
void sportmeeting::mod()
{
int it;
cout<<"輸入要查詢的工程號\n";
cin>>it;
char c;
cout<<"查詢男子(m)或女子(w)";
cin>>c;
if (c == 'w')
{
if (wflags[it])
{
wlist[it].mod(it,c);
}
34、else
{
cout<<"沒有該信息\n";
}
}
else
{
if (mflags[it])
{
mlist[it].mod(it ,c);
}
cout<<"沒有該信息\n";
}
}
void sportmeeting::check()
{
int i, j;
int n;
for (i=0; i < m; i++)
{
if (mflags[i])
{
for (j=0; j < 3; j++)
{
n=mlist[i].list[i].schID;
arr[n-1].mv[j].push_back(i+1);
arr[n-1] 35、.sumscore+=(j+1);
arr[n-1].mscore+=(j+1);
}
}
}
for (i=0; i < m; i++)
{
if (wflags[i])
{
for (j=0; j < 3; j++)
{
n=wlist[i].list[i].schID;
arr[n-1].wv[j].push_back(i+1);
arr[n-1].sumscore+=(j+1);
arr[n-1].wscore+=(j+1);
}
}
}
}
void sportmeeting::printall()
{
if(!flag)
{
check 36、();
flag=true;
}
int i;
cout<<"學校ID 學??偡? 男子總分 女子總分\n";
for (i=0; i < n; i++)
{
cout<
37、<"男子局部\n";
for (i=0; i<3; i++)
{
cout<<"下面是第"<>n;
cout<<"輸入本次運動會男子工程的數(shù)量\n";
cin>>m;
cout<<"輸入本次運動會女子工程的數(shù)量\n";
cin>>w;
sportmeeting sport(n,m,w);
sport.menu();
return 0;
}
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。