c語言學(xué)校運(yùn)動會管理系統(tǒng)課設(shè)報(bào)告_第1頁
c語言學(xué)校運(yùn)動會管理系統(tǒng)課設(shè)報(bào)告_第2頁
c語言學(xué)校運(yùn)動會管理系統(tǒng)課設(shè)報(bào)告_第3頁
c語言學(xué)校運(yùn)動會管理系統(tǒng)課設(shè)報(bào)告_第4頁
c語言學(xué)校運(yùn)動會管理系統(tǒng)課設(shè)報(bào)告_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、c語言學(xué)校運(yùn)動會管理系統(tǒng)課設(shè) 報(bào)告僚13“看車工此學(xué)院HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGY第1頁,共58頁C語言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告課設(shè)題目:學(xué)校運(yùn)動會管理系統(tǒng)專 業(yè):電子信息工程班 級:T1223-14姓 名:王松成 績: 完成日期:2013 年6月7日2012年6月20日指導(dǎo)教師:張吳波學(xué)校運(yùn)動會管理系統(tǒng)目 錄目 錄1 .課程設(shè)計(jì)目的32 .需求分析32.1 要求32.2 任務(wù)描述42.3 運(yùn)行環(huán)境42.4 開發(fā)工具43 .總體設(shè)計(jì)43.1 系統(tǒng)流設(shè)計(jì)43.2 系統(tǒng)模塊設(shè)計(jì)54 .詳細(xì)設(shè)計(jì)64.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 64.2 模塊接口設(shè)計(jì)74.3

2、以下是幾個(gè)主要模塊的流程圖:85 .運(yùn)行結(jié)果=915.1 主菜單界面:二915.2 圖書信息查詢界面: 1025.3 :圖書銷售界面錯(cuò)誤!未定義書簽。45.4 圖書信息整體瀏覽界面: 錯(cuò)誤!未定義書簽。955圖書信息刪除界面 錯(cuò)誤!未定義書簽。1.6 圖書信息保存界面: 221.7 退出程序:61.8 圖書信息新建界面: 61.9 修改密碼236 .程序調(diào)試與測試236.1 程序調(diào)試一236.2 程序測試 一277 .問題與不足308 .建議319 .編程體會3110 .程序源代碼:3111 .參考文獻(xiàn)5612 .用戶使用手冊571.課程設(shè)計(jì)目的1) 通過課程設(shè)計(jì),加深對結(jié)構(gòu)化程序設(shè)計(jì)思想的理

3、解,能對系統(tǒng)功能進(jìn)行分析, 并設(shè)計(jì)合理的模塊化結(jié)構(gòu)。2) 通過課程設(shè)計(jì),進(jìn)一步掌握C 語言中重要的數(shù)據(jù)結(jié)構(gòu)。掌握并熟練運(yùn)用指針、鏈表、結(jié)構(gòu)體、文件等數(shù)據(jù)結(jié)構(gòu)。3) 通過課程設(shè)計(jì),提高程序開發(fā)能力,能運(yùn)用合理的控制流編寫清晰高效的程序。4) 通過課程設(shè)計(jì),培養(yǎng)C 語言知識運(yùn)用和自學(xué)能力,真正的把課堂上獲得的知識運(yùn)用起來,培養(yǎng)自己對程序編寫的興趣,并能獨(dú)立設(shè)計(jì)和實(shí)現(xiàn)一個(gè)小型系統(tǒng)。5) 通過課程設(shè)計(jì),加強(qiáng)了自己的程序分析能力。6)C語言程序設(shè)計(jì)課程設(shè)計(jì)的主要目的是培養(yǎng)學(xué)生在C語言程序設(shè)計(jì)課程學(xué)習(xí)后,綜合運(yùn)用C語言程序設(shè)計(jì)課程所學(xué)到的知識,編寫C程序解決實(shí)際問題的能力,以及嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度和良好的程序設(shè)

4、計(jì)習(xí)慣。7) 通過本課程設(shè)計(jì)的訓(xùn)練,學(xué)生應(yīng)該能夠了解程序設(shè)計(jì)的基本開發(fā)過程,掌握編寫、調(diào)試和測試C語言程序的基本技巧,充分理解結(jié)構(gòu)化程序設(shè)計(jì)的基本方法。 能靈活應(yīng)用,初步具備運(yùn)用C解決實(shí)際問題的能力。8) C語言課程設(shè)計(jì)的主要任務(wù)是要求學(xué)生遵循軟件開發(fā)過程的基本規(guī)范,運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)方法,按照課程設(shè)計(jì)題目要求,完成包括需求分析、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編寫代碼、調(diào)試和測試C 語言程序及編寫設(shè)計(jì)報(bào)告等過程。2.需求分析2.1 要求1) 遵循軟件開發(fā)過程的基本規(guī)范;能靈活應(yīng)用,初步具備運(yùn)用 C 程序解決實(shí)際問 題的能力。2) 運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)方法,按照課程設(shè)計(jì)題目要求,完成包括需求分

5、析、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編寫代碼、調(diào)試和測試C程序等過程。3) 學(xué)會利用數(shù)組、結(jié)構(gòu)體、鏈表進(jìn)行相關(guān)信息表示。4) 功能模塊劃分清晰,系統(tǒng)結(jié)構(gòu)圖符合功能操作要求,且有詳盡的功能描述5) 各主要功能模塊有詳盡的流程圖及描述,用函數(shù)的形式實(shí)現(xiàn),且調(diào)用入口、功能、出口等關(guān)系正確。6) 所設(shè)計(jì)的 C 程序較好的可讀性和可靠性;程序書寫風(fēng)格規(guī)范,注釋清晰。7) 界面友好(良好的人機(jī)互交) ,凡需要輸入信息時(shí),都有較詳盡的提示信息,并對輸入信息有較完善的值域分析。8) 程序經(jīng)上機(jī)調(diào)試通過,不應(yīng)出現(xiàn)語法型、功能型錯(cuò)誤,并獲得滿意的結(jié)果。9) 學(xué)會通過各功能性測試用例測試程序的能力,盡可能避免原則

6、性錯(cuò)誤的出現(xiàn)。10)掌握編寫、調(diào)試和測試C語言程序的基本技巧,充分理解結(jié)構(gòu)化程序設(shè)計(jì)的基 本方法。11) C 語言課程設(shè)計(jì)報(bào)告的內(nèi)容反應(yīng)實(shí)際設(shè)計(jì)過程, 且符合格式要求, 無抄襲現(xiàn)象。1.2 任務(wù)描述此系統(tǒng)以學(xué)校運(yùn)動會為背景,支持運(yùn)動會管理人員對獲獎(jiǎng)人員信息進(jìn)行新建、查詢、以及對相應(yīng)項(xiàng)目,院系獲獎(jiǎng)情況整體列表瀏覽,亦可實(shí)現(xiàn)保存。具體功能實(shí)現(xiàn)如下:1) 運(yùn)動員信息載入: 管理人員從鍵盤輸入獲獎(jiǎng)運(yùn)動員信息, 以便操作者可以實(shí)現(xiàn)相關(guān)需求。3) 獲獎(jiǎng)信息整體瀏覽功能: 實(shí)現(xiàn)對所有院系獲獎(jiǎng)信息的整體瀏覽, 使運(yùn)動會管理人員對獲獎(jiǎng)信息信息有一個(gè)整體的了解。4)單獨(dú)院系獲獎(jiǎng)信息查詢功能:實(shí)現(xiàn)對所指定院系查詢其

7、成員獲獎(jiǎng)情況。5)單獨(dú)項(xiàng)目獲獎(jiǎng)信息查詢功能:實(shí)現(xiàn)對所指定項(xiàng)目查詢所有獲獎(jiǎng)成員信息。1.3 運(yùn)行環(huán)境1) WindowsXP/7 系統(tǒng)2) VC+6.0 編譯環(huán)境1.4 開發(fā)工具C 語言3 .總體設(shè)計(jì)3.1 系統(tǒng)流設(shè)計(jì)本系統(tǒng)的功能模塊如圖 1 所示,主要有以下模塊:第 4 頁 共 58 頁學(xué)校運(yùn)動會管理系統(tǒng)課程名稱界面退出程序項(xiàng)目獲獎(jiǎng)瀏覽信息系部獲獎(jiǎng)信息瀏覽所有系部整體瀏覽獲獎(jiǎng)運(yùn)動員信息新建題目信息查詢按書號查詢中查詢所有系部獲獎(jiǎng)名單報(bào)書號查詢/輸入所有獲獎(jiǎng)運(yùn)動員名單按書號查詢 輸出本課題題目要求第4頁共58頁圖1系統(tǒng)功能模塊圖3.2 系統(tǒng)模塊設(shè)計(jì)1) 系統(tǒng)歡迎界面:構(gòu)造函數(shù) void welc

8、ome。,實(shí)現(xiàn)歡迎使用學(xué)校運(yùn)動會管理系統(tǒng),作者和指導(dǎo)老師的顯示。2) 課程名稱界面:構(gòu)造函數(shù) void printtimu (),實(shí)現(xiàn)軟件題目的顯示。3) 主菜單界面:構(gòu)造函數(shù) void menu_select (),實(shí)現(xiàn)系統(tǒng)主菜單的顯示。4) 獲獎(jiǎng)運(yùn)動員信息新建:構(gòu)造函數(shù) void shuru(),實(shí)現(xiàn)新建獲獎(jiǎng)運(yùn)動員信息。5) 系部獲獎(jiǎng)信息查詢:構(gòu)造函數(shù) void xibu(),實(shí)現(xiàn)查詢所選系部獲獎(jiǎng)信息查 詢。6) 項(xiàng)目獲獎(jiǎng)信息查tft:構(gòu)造函數(shù) void xiangmu(),實(shí)現(xiàn)查詢所選項(xiàng)目獲獎(jiǎng)信息查詢。7) 獲獎(jiǎng)運(yùn)動員信息整體瀏覽:構(gòu)造函數(shù)void shuchu(),顯示所有系部獲獎(jiǎng)人員

9、情況。8) 導(dǎo)入鏈表信息到系部結(jié)構(gòu)體:構(gòu)造函數(shù)void daoruxi(),導(dǎo)入獲獎(jiǎng)運(yùn)動員分?jǐn)?shù)到系部。9) 判斷所輸入信息合理性:構(gòu)造函數(shù)int panduan(),判斷新輸入的獲獎(jiǎng)信息是否與之前輸入的信息有沖突。10) 對用戶的提示函數(shù):構(gòu)造函數(shù) void TiShi(),提示學(xué)校院系及運(yùn)動項(xiàng)目設(shè)置。11) 退出系統(tǒng):構(gòu)造函數(shù)void exit0(),實(shí)現(xiàn)退出系統(tǒng)。4 .詳細(xì)設(shè)計(jì)4.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)根據(jù)系統(tǒng)要求,系統(tǒng)中需要保存的數(shù)據(jù)信息,其結(jié)構(gòu)如下:數(shù)據(jù)項(xiàng)名稱數(shù)據(jù)項(xiàng)系統(tǒng)表示數(shù)據(jù)類型數(shù)據(jù)長度備注系邪編PxinumInt4項(xiàng)目編號munumInt4運(yùn)動員姓名NameChar30獲獎(jiǎng)名次MCInt

10、4為了充分利用內(nèi)存空間和實(shí)現(xiàn)不受限制的新建、載入獲獎(jiǎng)運(yùn)動員信息,采用鏈 表的結(jié)構(gòu)保存獲獎(jiǎng)運(yùn)動員信息,在新建一位運(yùn)動員信息時(shí),創(chuàng)建一個(gè)運(yùn)動員信息的 節(jié)點(diǎn),將其插入到鏈表中,示意圖如下。運(yùn)動員為此,需聲明一個(gè)類型為struct student的結(jié)構(gòu)體,其成員為圖書的基本信息然后通過對指針、鏈表、文件等數(shù)據(jù)結(jié)構(gòu)的操作,實(shí)現(xiàn)對運(yùn)動員信息的新建、查詢、 整體瀏覽、比較、保存等一系列操作。其中,結(jié)構(gòu)體定義如下:struct studentint xinum;char name30;int munum;int MC;int score;struct student * next;4.2 模塊接口設(shè)計(jì)1)所有

11、函數(shù)模塊聲明如下:2) void welcome。;3) void printtimu();4) int menu_select();5) void shuru();6) void shuchu();其比賽成績7) void xibu();8) void xiangmu();9) void TiShi();/10) void daoruxi();/歡迎界面/本題題目要求/主菜單/輸入獲獎(jiǎng)運(yùn)動員信息/按照比賽成績從高到底輸出系部和/查詢系部獲獎(jiǎng)情況/查詢項(xiàng)目獲獎(jiǎng)情況提示題目所需數(shù)據(jù)/導(dǎo)入獲獎(jiǎng)運(yùn)動員成績到系部/判斷所輸入信息是否有錯(cuò)誤11) int panduan();學(xué)校運(yùn)動會管理系統(tǒng)12) v

12、oid exit0();退出13) 并定義 個(gè)全局變量:int writeinfo_flag=0;/*運(yùn)動員信息是否保存標(biāo)志*/struct student *head=NULL, *p1,*p2,*p3;/*用于新建和導(dǎo)入運(yùn)動員信息 */14)主要模塊的實(shí)現(xiàn)系統(tǒng)以主函數(shù)int main()為入口,首先通過調(diào)用void welcome。顯示歡迎界面,指導(dǎo) 老師以及作者,然后調(diào)用void TiShi()函數(shù)顯示學(xué)校院系及運(yùn)動項(xiàng)目設(shè)置情況,并通 過switch(menu_select(),顯示主菜單,并利用 void menu_select()接受用戶的返回值 返回個(gè)主函數(shù),再調(diào)用相關(guān)的函數(shù)進(jìn)入到

13、下一級菜單進(jìn)行相關(guān)操作。4.3以下是幾個(gè)主要模塊的流程圖:題目要求1) 主函數(shù):調(diào)用 void TiShi();、void調(diào)用Void menu_select()接受 int menu()學(xué)校運(yùn)動會管理系統(tǒng)第4頁共58頁5.運(yùn)行結(jié)果5.1歡迎界面:退出系 調(diào)用相關(guān)圖2主函數(shù)圖6歡迎界面任意鍵自動進(jìn)入系統(tǒng)界面。學(xué)校運(yùn)動會管理系統(tǒng)第4頁共58頁5.2 主菜單界面:XDocusents and Sett ingsAdBinistrator桌面'程序文朽'課設(shè)D,bug最新日日日HM績錄普成記記出賽獎(jiǎng)獎(jiǎng)1+比差tr息意的卻>: 信皙目誄F 口 項(xiàng)如<B 目動系期曾 T本獲題

14、運(yùn)出系運(yùn)恥:題定舁的順詢詢出入 查篡查查退輸 .5.0.注汨圖7主菜單界面5.3 題目輸出界面:。WocuBents and( I J曰題目描述名次晶瞽薪界會上有5個(gè)系部(編號、名稱)和6個(gè)運(yùn)動項(xiàng)目,名項(xiàng)目取前S名:第1名得分7,第2名得分5,第3名得分3,第4名得分第5名 得分1:編寫一程序.完成以下功能C1)從梯盤輸入基部編號、運(yùn)動員姓名.運(yùn)動項(xiàng)目編號、獲取名次。需爵判斷系部翕號是否有古、萋賽項(xiàng)目是含存在、獲取名次是否合強(qiáng),同一系部攤一個(gè) 人,不能在同一個(gè)項(xiàng)目中出現(xiàn)兩次。;轆耨球麟野和其比賽成績w查詢器定運(yùn)務(wù)項(xiàng)§的斐獎(jiǎng)記錄cl)慰賈翼另著髀懿盤輸入If之間的數(shù)來選擇

15、功能,其中6為退出)題目已輸出,按任意鍵進(jìn)入系統(tǒng)一一一圖8題目輸出界面5.4 輸入獲獎(jiǎng)運(yùn)動員信息界面"C; Docu>ents and恥七±i11的加區(qū)m1511玳。工臭面程序又梢意旗41)毋1)用父請輸入第1卜荻英運(yùn)動員的系都編號、運(yùn)動員姓名、運(yùn)動項(xiàng)目編號、獲取名次請輸入第1個(gè)狄央運(yùn)動員的系部編號、運(yùn)動員姓名.運(yùn)動項(xiàng)目編號、代明名次Lail請問您是否輸入完畢,是 W,否:心,請給出您的選擇zJ圖10輸入運(yùn)動員信息,并選擇是否輸入完全學(xué)校運(yùn)動會管理系統(tǒng)5.5 順序輸出各個(gè)系部成績界面:一n X值 *C: Dociuent s and S ett inesAd>i

16、nist rat or-按照比賽成績從高到底輸出系都和其比賽成績院院院院院 部語青械工 系一尊電機(jī)機(jī)-成績191413各系部得分從高到低展示完畢.按任意鍵返回二I第14頁共58頁zJ圖115.6 輸出指定系部獲獎(jiǎng)情況界面:。 *C : Docu>ent s and Set t in£sAdBinist rat q r桌面T程序文檔,課設(shè)Debug、最菁C .請輸入要查詢的系部編號 我選擇:4圖12選擇指定系部C" "C: Dociuents and 寫etti“宣'adsiiiiwt rat or桌面、程序文檔、課設(shè)'DebuC最新(.一 |

17、 回口請輸入要查詢的項(xiàng)目編號 我選擇,48甌米運(yùn)動員姓名名次獲獎(jiǎng)記錄為所在系部機(jī)械集院材工率院8曲米獲獎(jiǎng)情況展示完畢,按任意鍵返回圖13指定系部獲獎(jiǎng)情況界面5.7 輸出指定系部獲獎(jiǎng)情況界面:請輸入要查詢的項(xiàng)目編號 我選擇:4學(xué)校運(yùn)動會管理系統(tǒng)圖14選擇指定項(xiàng)目圖15指定項(xiàng)目獲獎(jiǎng)情況6.程序調(diào)試與測試6.1 程序調(diào)試(1)各模塊分別調(diào)試過程及結(jié)果。(1)程序歡迎界面和程序名稱界面還有題目顯示做起來比較容易,做起來沒出 錯(cuò)。(2)主菜單界面我是按照老師給的一個(gè)參考程序做的,后來自己又優(yōu)化了一下, 沒有出問題。(3)學(xué)校院系設(shè)置信息提示函數(shù) void TiShi()。提示學(xué)校院系,及運(yùn)動項(xiàng)目設(shè) 置情

18、況。(4)輸入獲獎(jiǎng)運(yùn)動員信息函數(shù) void shuru()。本題最難的地方,開始定義三個(gè) 學(xué)生結(jié)構(gòu)體指針,利用鏈表輸入運(yùn)動員信息,在做的過程遇到最多的問題是內(nèi)存 問題,因?yàn)橹羔樋偸窃浇?。所以最后鏈表建立的也有問題,經(jīng)過逐步調(diào)試,發(fā)現(xiàn) 程序在調(diào)用panduan()判斷新輸?shù)男畔⑹欠衽c先前信息有矛盾的情況時(shí)把指針釋 放了。經(jīng)過改正,程序良好運(yùn)行。 5) 5) 程序中還定義了 void daoruxi();int panduan(); 兩個(gè)函數(shù), void daoruxi()是把成功輸入到鏈表里的數(shù)據(jù)部分導(dǎo)入到系部結(jié)構(gòu)體中,方便后面對系部獲獎(jiǎng)情況的查詢。 int panduan() 是為了判斷新輸?shù)?/p>

19、信息是否與先前信息有矛盾的情況,并且返回值給shuru ()函數(shù),進(jìn)行重新輸入或者接著往后輸入的選擇。 6) 查詢系部獲獎(jiǎng)情況函數(shù)void xibu(); 通過選擇此功能可以進(jìn)行單個(gè)查詢每一個(gè)系部所有獲獎(jiǎng)運(yùn)動員的姓名,參加項(xiàng)目,在此項(xiàng)目中獲獎(jiǎng)名次等信息。( 7)查詢項(xiàng)目獲獎(jiǎng)情況函數(shù)void xiangmu(); 通過選擇此功能可以進(jìn)行單個(gè)查詢每一個(gè)項(xiàng)目所有獲獎(jiǎng)運(yùn)動員的姓名,所屬院系,在此項(xiàng)目中獲獎(jiǎng)名次信息。( 8)退出void exit0() ,此功能可以直接退出軟件。( 10)新建獲獎(jiǎng)運(yùn)動員信息后,便不能在進(jìn)行補(bǔ)充。( 2) 集成調(diào)試過程及結(jié)果。1. 在各模塊協(xié)調(diào)操作時(shí),因?yàn)楹脦讉€(gè)都需要得到

20、頭指針( head) ,為此我將保存導(dǎo)入運(yùn)動員信息的鏈表中需要用到的指針定義成全局的,這樣便于操作,可防止頭指針傳錯(cuò)。2. 為了使在退出和記錄保存函數(shù)中,在不同的情況下給出不同的提示信息,我定義了一個(gè)標(biāo)志性全局變量int writeinfo_flag=0;/* 信息變動標(biāo)志*/ 。在可使運(yùn)動員信息變動的函數(shù)中,當(dāng)書庫信息變動成功時(shí),就執(zhí)行save_flag=1 ,這樣在退出或保存過程中就知道書庫信息是否變動過,以便實(shí)現(xiàn)相應(yīng)功能。同時(shí)定義全局變量n , 可以提示我們輸入到第幾個(gè)成績, 在判斷函數(shù)中也起到了很大的作用,限定判斷次數(shù),不至于是判斷出錯(cuò)。3. 在輸入信息時(shí),用兩個(gè)定義的全局變量指針pl

21、, p2依次交替前進(jìn)并把數(shù)據(jù)緩存到第三個(gè)指針p3 中。 在輸入時(shí)模塊同時(shí)進(jìn)行數(shù)據(jù)的合法性判斷, 以及信息的和理性判斷,當(dāng)全部滿足題目要求是,才輸入下一個(gè)數(shù)據(jù),如果數(shù)據(jù)不合法,軟件則會提醒數(shù)據(jù)有誤,并返回重新輸入此數(shù)據(jù)。4. 在顯示所有的系部成績時(shí),先調(diào)用導(dǎo)入函數(shù)把信息導(dǎo)入到開始定義的系部數(shù)組中,然后再利用冒泡排序法,對系部成績進(jìn)行大小比較,并按從大到小的順序交換系部成績及西部名稱。5. 導(dǎo)入運(yùn)動員信息時(shí),定義一個(gè)節(jié)點(diǎn),輸入數(shù)據(jù)后在定義新的節(jié)點(diǎn),鏈接新節(jié)點(diǎn)頭與舊結(jié)點(diǎn)的尾,這樣就連接起來了。( 1) head=(struct student *)malloc(LEN);/* 開辟一個(gè)新單元 */h

22、ead->next=NULL;( 2) p2=(struct student *)malloc(LEN);/* 開辟一個(gè)新單元 */p1->next=p2;連接起兩個(gè)節(jié)點(diǎn)p3=p1;p1=p2;p1->next =NULL;( 3) 功能調(diào)試過程及結(jié)果。1 首先根據(jù)題目,新建一個(gè)文件,執(zhí)行程序,看程序是否能夠正常讀取文件。讀取正常。2分別執(zhí)行不同的函數(shù)看,是否能正常運(yùn)行。各個(gè)程序單獨(dú)執(zhí)行正常。3在運(yùn)行一次的情況下,連續(xù)執(zhí)行不同函數(shù),檢查是否有邏輯錯(cuò)誤。4在執(zhí)行了相應(yīng)的函數(shù)后,對比文件,看文件是否按程序操作的結(jié)果,正確改變了。5將文件刪除,看程序是否會給出正確提示,并且限制某些

23、沒有文件不能實(shí)現(xiàn)的功 能。6將文件置空,看是否會給出相應(yīng)提示以及程序是否運(yùn)行正常。2 .2程序測試各模塊測試用例數(shù)據(jù)及結(jié)果年,"C: Daciuent s and Se;*1: ing*jLdmin工s:1:r:a1: or桌面'程序文檔 ,課設(shè)D£hug 量者請輸入要查詢的項(xiàng)目編號 我選擇:4獲獎(jiǎng)記錄為運(yùn)動員姓名所在系部名次腱輾860*獲獎(jiǎng)情況展示完畢,按任意鍵返回第 14 頁 共 58 頁學(xué)校運(yùn)動會管理系統(tǒng)0 Docunents and Sett ing;sAdMinis±i:at(jr桌面,程序文檔'設(shè)設(shè)Delni&量If (.,按照

24、比賽成績從高到底輸出系部和其h匕賽成績院院院院院 美zHHb 部語車信械工 系電機(jī)材成績1514139各系都得分從高到低展示完畢,技任意鍵返回與文件結(jié)果一致_ EW 本.回 i _J文件(F)聿留E相式幻】查看M幫助院院院院院“看孟孟十字工械語 tlmn 央-有5 4 9116 8 1T-7 .問題與不足( 1) 需求分析中存在的問題和分析: 該程序不支持插入新的運(yùn)動員信息, 與實(shí)際不符。不能完全識別操作者輸入的錯(cuò)誤信息。( 2) 概要設(shè)計(jì)中存在的問題和分析: 全局標(biāo)志性變量用的太多, 在主體函數(shù)中定義變量時(shí),容易與全局標(biāo)志性產(chǎn)生混淆。全局指針也用的太多,雖然這樣避免了傳指針出錯(cuò),但沒有鍛煉我

25、們傳參數(shù)的能力。( 3) 代碼編制中存在的問題和分析: 程序中的模塊函數(shù)定義的還不夠好, 有的模塊比較大,看起來不太清晰明了,沒有較強(qiáng)的通用性。8 .建議課設(shè)題目有些描述不清楚但是可能的情況有很多,也有些有不合理的地方,建議老師能花點(diǎn)時(shí)間將課設(shè)題目中有些不合理的地方改正一下。時(shí)間安排上,感覺雖然面臨考試,但是極強(qiáng)的鍛煉了自己的能力,感覺比較好,每個(gè)人都充分考慮了考慮程序中的問題,對自己的編程能力的提高有好處。9 .編程體會剛開始準(zhǔn)備編代碼時(shí),先大致看了下老師給的題目,因?yàn)樽约弘S著方面比較感興趣吧,學(xué)的挺有意思,開始我知道難點(diǎn)在鏈表的建立那塊,其他的沒有感覺到吃力,雖然也會經(jīng)常出現(xiàn)問題,但都是自

26、己馬虎,或者是時(shí)間長了,沒有考慮到的原因。當(dāng)做鏈表那一塊時(shí),感覺壓力陡增啊,我把自己輸入的數(shù)據(jù)走了一圈又一圈,可是輸出就是有問題,問了好多人都看不出來那里有毛病,后來老師給指出了一個(gè)關(guān)鍵地方,問題才解決。我現(xiàn)在想假如那個(gè)問題解決不了,我的課設(shè)肯定做不出來了?,F(xiàn)在感覺挺幸運(yùn)。做完課設(shè)學(xué)到了很多編程方面的技巧,比喻在編寫程序時(shí),不要將整個(gè)程序放在一起檢查語法錯(cuò)誤,那樣非常難操作,可以保留主函數(shù),然后將主體函數(shù)一個(gè)個(gè)的檢查錯(cuò)誤,這樣便于錯(cuò)誤的查找和改正。10 .程序源代碼:#include <stdio.h>#include <time.h>#include <stri

27、ng.h>#include <malloc.h>#include <stdlib.h>#include <conio.h>#include <windows.h>#define LEN sizeof(struct student)typedef struct xibuint num;char name20;int chengji;XI; typedef struct xiangmu int num;char name20;MU;struct studentint xinum;char name30;int munum;int MC;int

28、score;struct student * next;XI xi5=1," 電信學(xué)院 ",0, 2," 汽 車 學(xué) 院 ",0,3," 材工學(xué)院 ",0, 4," 機(jī) 械 學(xué) 院 ",0, 5," 英語學(xué)院 ",0;MU mu10=1,"100 米",2,"200米",3,"400 米 ",4,"800 米 ",5,"1500 米 ",6," 跳高 ",7," 跳遠(yuǎn)

29、 ", 8," 鉛球 ",9,"三級跳 ",10,"4x100 接力 "int n=0;void welcome();void printtimu();int menu_select();void shuru();息/void shuchu();到底輸出系部和其比賽成績void xibu();/ 歡迎界面 / 本題題目要求/ 主菜單 / 輸入獲獎(jiǎng)運(yùn)動員信/ 按照比賽成績從高/ 查詢系部獲獎(jiǎng)情況/void xiangmu();況/void TiShi();題目所需數(shù)據(jù)/void daoruxi();成績到系部/int pand

30、uan();否有錯(cuò)誤 /void exit0();/ 查詢項(xiàng)目獲獎(jiǎng)情/提示/ 導(dǎo)入獲獎(jiǎng)運(yùn)動員/ 判斷所輸入信息是/ 退出 /struct student *head=NULL,*p1,*p2,*p3;/* 定義結(jié)構(gòu)體指針 head 為頭指針 p1 為輸入數(shù)據(jù)緩存空間指針 p2 為尾指針 p3*/* 運(yùn)動員記錄保存標(biāo)志全局變量*/int writeinfo_flag=0;/* 主函數(shù) */int main()system("color F2");welcome();TiShi();for(;) switch(menu_select()case 1: system("

31、cls");printtimu();break;case 2: system("cls"); shuru();break;case 3: system("cls"); shuchu();break;case 4: system("cls"); xibu();break;case 5: system("cls");xiangmu();break;case 0: system("cls"); exit0();return0;default : getchar();printf("

32、n 選擇錯(cuò)誤, 請正確輸入你的選擇 (05),:n");printf("n 按 任 意 鍵 返 回 n");getchar();getchar();system("cls"); /* 清屏 */return 0;/ 定義數(shù)據(jù) /void TiShi()int i=0,m=0;printf("nnt請按學(xué)校院系及獎(jiǎng)項(xiàng)設(shè)置輸入獲獎(jiǎng)人員,院系及獎(jiǎng)項(xiàng)設(shè)置如下 nn");printf("nttt編號系部 n");while(i<5)printf("ttt %d%sn",xii.num,xi

33、);i+;printf("nnttt 編號 項(xiàng)目 n");while(m<10)printf("ttt %d%sn",mum.num,);m+;printf("nn 數(shù)據(jù)已輸出,按任意鍵進(jìn)入系統(tǒng) .");/* 清屏 */getch();system("cls");/ 歡迎界面 /void welcome()printf("nnnntt*n");printf("tt*n");printf("tt*n");printf(&qu

34、ot;tt* * tttttt* *n");printf("tt* * tttttt* *n");printf("tt* * t 歡迎使用學(xué)校運(yùn)動會管理系統(tǒng)! t* *n");printf("tt* * tttttt* *n");printf("tt* * tttttt* *n");printf("tt* * tt 指導(dǎo)老師:張吳波老師tt* *n");printf("tt* * tttttt* *n");printf("tt* * tt 制 作 人: 王

35、松 ttt*n");printf("tt* * tttttt* *n");printf("tt* * tt 短號 : 619444tt*n");printf("tt* * tttttt* *n");printf("tt* ttQQ 號 :961358207tt* *n");printf("tt* * tttttt* *n");printf("tt*n");printf("tt*請按任意鍵進(jìn)第 14 頁 共 58 頁printf("tt*n&quo

36、t;);入 系 統(tǒng) * * * * * *n");*getch();system("cls");rewind(stdin);/ 本題題目要求 /void printtimu()printf("n 題目描述 n");printf("t 已知某學(xué)校運(yùn)動會上有 5 個(gè)系部(編號、名稱)和 10 個(gè)運(yùn)動項(xiàng)目,各項(xiàng)目 tt名次取法有如下幾種 nn");printf("t 取前 5 名:第 1 名得分 7 ,第 2 名得分5,第3名得分3,第4名得分2,第5名tt 得分 1;n");printf("nttt

37、編寫一程序, 完成以下功能 nn");printf(" ( 1) 從鍵盤輸入系部編號、運(yùn)動員姓名、 運(yùn)動項(xiàng)目編號、 獲取名次。 需要判斷 tt系部編號是否存在、參賽項(xiàng)目是否存在、獲取名次是否合法 , 同一系部的同一個(gè)tt 人 , 不能在同一個(gè)項(xiàng)目中出現(xiàn)兩次。n");printf(" ( 2) 按照比賽成績從高到底輸出系部和其比賽成績 n");printf("( 3)查詢指定系部編號的獲獎(jiǎng)記錄n");printf("( 4)查詢指定運(yùn)動項(xiàng)目的獲獎(jiǎng)記錄n");printf("( 5)所有數(shù)據(jù)符合實(shí)際

38、應(yīng)用要求n");printf("( 6)系統(tǒng)以菜單方式工作(用鍵盤輸入 15 之間的數(shù)來選擇功能,其中 6 為退出)n");rewind(stdin);printf("nnttt 題目已輸出,按任意鍵進(jìn)入系統(tǒng).");/* 清屏 */getch();system("cls");/ 主菜單 /int menu_select()int c;printf("nnnn");printf("tttprintf("ttt*printf("tttI 'n");printf(

39、"tttI 'n");printf("ttt賽成績printf("ttt獎(jiǎng)記錄printf("ttt獎(jiǎng)記錄printf("tttn");* 菜單I n");I 1.查看本題題目I 2.輸入獲獎(jiǎng)運(yùn)動員信息I 3.按順序輸出系部和其比 n");I 4.查詢指定系部編號的獲 n");I 5.查詢指定運(yùn)動項(xiàng)目的獲 n");I 0.退出(任何情況下按Ctrl+C退出程序| n");printf("ttt | 請 輸入你 的選擇(04): I n");prin

40、tf("ttt 1I );printf("nttt 我選擇: ");scanf("%d",&c);return c;/ 輸入獲獎(jiǎng)運(yùn)動員信息 /void shuru()int i=0;char a;if( writeinfo_flag=1)getchar();printf("nnnnnnnntt運(yùn)動員信息數(shù)據(jù)已經(jīng)輸入完成不能再輸入,按任意鍵將返回 :n");getch();system("cls");/* 清屏 */return;head=(struct student *)malloc(LEN);

41、/* 開辟一個(gè)新單元 */head->next=NULL;p1=head;don+;dosystem("cls");printf("nnnnnnnt請輸入第 小獲獎(jiǎng)運(yùn)動員的系部編號、 運(yùn)動員姓名、 運(yùn)動項(xiàng)目編號、獲取名次n",n);fflush(stdin);scanf("%d%s%d%d",&p1->xinum,p1->name,&p1- >munum,&p1->MC);while(p1->xinum>5|p1->xinum<1|p1->munum&

42、gt;10|p1->munum<1|p1->MC<1|p1->MC>5)printf(" 您輸入的信息不合法或者項(xiàng)目不存在,請檢查后按任意鍵返回重新輸入n");getchar();getchar();system("cls");printf("nnnnnnnt 請輸入第 %d 個(gè)獲獎(jiǎng)學(xué)生的系部編號、 運(yùn)動員姓名、 運(yùn)動項(xiàng)目編 號、獲取名次n",n);fflush(stdin);scanf("%d%s%d%d",&p1->xinum,p1->name,&

43、p1- >munum,&p1->MC);switch(p1->MC)case 1: p1->score =7;break;case 2: p1->score =5;break;case 3: p1->score =3;break;case 4: p1->score =2;break;case 5: p1->score =1;break;if(writeinfo_flag=1)i=panduan();writeinfo_flag=1;/* 設(shè)置保存記錄標(biāo)志*/while(i=1);printf("nntt 請問您是否輸入完畢,是(

44、 Y) , 否( N) ,請給出您的選擇nn");fflush(stdin);scanf("%c",&a);fflush(stdin);if(a='N'|a='n')system("cls");p2=(struct student *)malloc(LEN);/* 開辟一個(gè)新單元 */p1->next=p2;p3=p1;p1=p2;p1->next =NULL;while(a='N'|a='n');system("cls");printf(&

45、quot;nnnnnntt %d 項(xiàng)信息輸入完畢,按任意鍵返回 n",n);getch();system("cls");/* 清屏 */ 判斷輸入數(shù)據(jù)是否符合題意/int panduan()int d=0,m=1;p2=head;for(;m<n;p2=p2->next)if(p1->xinum=p2->xinum&&p1->munum=p2->m unum&&strcmp(p1->name,p2->name)=0)d=1;if(d=1)printf("nnnt 您輸入的數(shù)據(jù)

46、中存在同一個(gè)人在同一個(gè)項(xiàng)目中有兩種信息的情況, 請任意鍵返回并重新輸入");getchar();getchar();system("cls");/* 清 屏*/m+;return d;/ 導(dǎo)入獲獎(jiǎng)運(yùn)動員成績到系部 /void daoruxi()int i,m=0;p2=head;while(p2!=NULL)for(i=1;i<6;i+)if(i=p2->xinum)xii-1.chengji+=p2->score;p2=p2->next;/ 按照比賽成績從高到底輸出系部和其比賽成績/void shuchu()int i,j,m=0, te

47、mp;char a20;if( writeinfo_flag=0)getchar();printf("nnnnnnnntt運(yùn)動員信息數(shù)據(jù)庫為空,不能顯示, 按任意鍵將返回 :n");getchar();system("cls");/* 清屏 */return;daoruxi();for(i=0;i<4;i+)for(j=0;j<5;j+)if(xij.chengji<xij+1.chengji)temp=xij.chengji;strcpy(a,);xij.chengji=xij+1.chengji;strcpy(xij

48、.name,xij+1.name);xij+1.chengji=temp;strcpy(xij+1.name,a);printf("nnnnnnttt按照比賽成績從高到底輸出系部和其比賽成績 nn");printf("tttt 系部 成績 n");while(m<5)printf("tttt%s%dn",,xim.chengji);m+;printf("nnnnnttt各系部得分從高到低展示完畢,按任意鍵返回 n");getchar();/* 清屏 */getch();system("

49、;cls");/ 查詢系部獲獎(jiǎng)情況/void xibu()int i=0,d=0;if( writeinfo_flag=0)getchar();printf("nnnnnnnntt運(yùn)動員信息數(shù)據(jù)庫為空,不能顯示, 按任意鍵將返回 :n");getch();system("cls");/* 清屏 */return;printf("nnnnnnttt 請輸入要查詢的 系部編號 nn");printf("ttt 我選擇 : ");fflush(stdin);scanf("%d",&d

50、);if(d<0|d>5)system("cls");printf("nnnnnnttt編號為 d的項(xiàng)系部不存在, 按任意鍵將返回 :n",d);getch();system("cls");/* 清屏 */return;p2=head;printf("nnnntttt%s獲 獎(jiǎng) 記 錄 為nn",);printf("ttt 運(yùn)動員姓名 參加項(xiàng)目 名 次n");while(p2!=NULL)if(d=p2->xinum)printf("ttt %s%

51、s%dn",p2->name,mup2->,p2->M C);i+;p2=p2->next;if(i=1)printf("nnnnttt%s獲獎(jiǎng)情況展示完畢,按任意鍵返回 n",);elseprintf("nnnnttt%s沒 有 運(yùn) 動 員 參賽,按任意鍵返回 n",);getch();system("cls");/* 清屏 */ 查詢項(xiàng)目獲獎(jiǎng)情況/void xiangmu()int i=0,d=0;if( writeinfo_flag

52、=0)getchar();printf("nnnnnnnntt運(yùn) 動 員 信息數(shù)據(jù)庫為空,不能顯示, 按任意鍵將返回 :n");getch();system("cls");/* 清屏 */return;printf("nnnnnnttt 請輸入要查詢的 項(xiàng)目編號 nn");printf("ttt 我選擇 : ");fflush(stdin);scanf("%d",&d);if(d<0|d>10)system("cls");printf("nnnn

53、nnttt編號為 d的項(xiàng)目不存在,按任意鍵將返回 :n",d);getch();system("cls");/* 清屏 */return;p2=head;printf("nnntttt%s獲 獎(jiǎng) 記 錄 為nn",);printf("ttt 運(yùn)動員姓名 所在系部 名 次nn");while(p2!=NULL)i+;if(d=p2->munum)printf("ttt%s%s%dn",p2->name,xip2->,p1-> MC);p2=

54、p2->next;if(i=2)printf("nnnnttt%s獲獎(jiǎng)情況展示完畢,按任意鍵返回 n",);elseprintf("nnnnttt%s 沒有運(yùn)動員參加,按任意鍵返回 n",);getch();system("cls");/* 清屏 */void exit0()printf("nnnnnnttt謝謝您的使用,再見! nnnnnnnnnttt");p1=head;while( p1!=NULL)p1=p1->next; 11.參考文獻(xiàn)1 廖湖聲 C 程序設(shè)計(jì)案例教程 人民郵電出版社 ,2010.92何欽銘.c語言程序設(shè)計(jì).高等教育出版社,C程序設(shè)計(jì)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論