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

下載本文檔

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

文檔簡介

1、 學(xué)校運(yùn)動(dòng)會(huì)管理系統(tǒng)hubei university of automotive technologyc語言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告課設(shè)題目: 學(xué)校運(yùn)動(dòng)會(huì)管理系統(tǒng) 專 業(yè): 電子信息工程 班 級(jí): t1223-14 姓 名: 王松 成 績: 完成日期: 2013年6月7日2012年6月20日 指導(dǎo)教師: 張吳波 目 錄目 錄1.課程設(shè)計(jì)目的22.需求分析22.1要求22.2任務(wù)描述22.3運(yùn)行環(huán)境32.4開發(fā)工具33.總體設(shè)計(jì)33.1系統(tǒng)流設(shè)計(jì)33.2系統(tǒng)模塊設(shè)計(jì)44.詳細(xì)設(shè)計(jì)54.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)54.2模塊接口設(shè)計(jì)64.3 以下是幾個(gè)主要模塊的流程圖:75.運(yùn)行結(jié)果115.1主菜單界面:115.

2、2圖書信息查詢界面:125.3:圖書銷售界面145.4圖書信息整體瀏覽界面:195.5圖書信息刪除界面:195.6圖書信息保存界面:225.7 退出程序:235.8圖書信息新建界面:235.9修改密碼236.程序調(diào)試與測(cè)試236.1程序調(diào)試236.2程序測(cè)試277.問題與不足308.建議319.編程體會(huì)3110.程序源代碼:3111.參考文獻(xiàn)5612.用戶使用手冊(cè)571.課程設(shè)計(jì)目的1) 通過課程設(shè)計(jì),加深對(duì)結(jié)構(gòu)化程序設(shè)計(jì)思想的理解,能對(duì)系統(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) 通過課

3、程設(shè)計(jì),提高程序開發(fā)能力,能運(yùn)用合理的控制流編寫清晰高效的程序。4) 通過課程設(shè)計(jì),培養(yǎng)c語言知識(shí)運(yùn)用和自學(xué)能力,真正的把課堂上獲得的知識(shí)運(yùn)用起來,培養(yǎng)自己對(duì)程序編寫的興趣,并能獨(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é)到的知識(shí),編寫c程序解決實(shí)際問題的能力,以及嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度和良好的程序設(shè)計(jì)習(xí)慣。7) 通過本課程設(shè)計(jì)的訓(xùn)練,學(xué)生應(yīng)該能夠了解程序設(shè)計(jì)的基本開發(fā)過程,掌握編寫、調(diào)試和測(cè)試c語言程序的基本技巧,充分理解結(jié)構(gòu)化程序設(shè)計(jì)的基本方法。能靈活應(yīng)用,初步具

4、備運(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è)試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ì)題目要求,完成包括需求分析、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編寫代碼、調(diào)試和測(cè)試c程序等過程。3) 學(xué)會(huì)利用數(shù)組、結(jié)構(gòu)體、鏈表進(jìn)行相關(guān)信息表示。4) 功能模塊劃分清晰,系統(tǒng)結(jié)構(gòu)圖符合功能操作要求,且有詳盡

5、的功能描述5) 各主要功能模塊有詳盡的流程圖及描述,用函數(shù)的形式實(shí)現(xiàn),且調(diào)用入口、功能、出口等關(guān)系正確。6) 所設(shè)計(jì)的c程序較好的可讀性和可靠性;程序書寫風(fēng)格規(guī)范,注釋清晰。7) 界面友好(良好的人機(jī)互交),凡需要輸入信息時(shí),都有較詳盡的提示信息,并對(duì)輸入信息有較完善的值域分析。8) 程序經(jīng)上機(jī)調(diào)試通過,不應(yīng)出現(xiàn)語法型、功能型錯(cuò)誤,并獲得滿意的結(jié)果。9) 學(xué)會(huì)通過各功能性測(cè)試用例測(cè)試程序的能力,盡可能避免原則性錯(cuò)誤的出現(xiàn)。10) 掌握編寫、調(diào)試和測(cè)試c語言程序的基本技巧,充分理解結(jié)構(gòu)化程序設(shè)計(jì)的基本方法。11) c語言課程設(shè)計(jì)報(bào)告的內(nèi)容反應(yīng)實(shí)際設(shè)計(jì)過程,且符合格式要求,無抄襲現(xiàn)象。2.2任務(wù)描

6、述此系統(tǒng)以學(xué)校運(yùn)動(dòng)會(huì)為背景,支持運(yùn)動(dòng)會(huì)管理人員對(duì)獲獎(jiǎng)人員信息進(jìn)行新建、查詢、以及對(duì)相應(yīng)項(xiàng)目,院系獲獎(jiǎng)情況整體列表瀏覽,亦可實(shí)現(xiàn)保存。具體功能實(shí)現(xiàn)如下:1)運(yùn)動(dòng)員信息載入:管理人員從鍵盤輸入獲獎(jiǎng)運(yùn)動(dòng)員信息,以便操作者可以實(shí)現(xiàn)相關(guān)需求。3)獲獎(jiǎng)信息整體瀏覽功能:實(shí)現(xiàn)對(duì)所有院系獲獎(jiǎng)信息的整體瀏覽,使運(yùn)動(dòng)會(huì)管理人員對(duì)獲獎(jiǎng)信息信息有一個(gè)整體的了解。4)單獨(dú)院系獲獎(jiǎng)信息查詢功能:實(shí)現(xiàn)對(duì)所指定院系查詢其成員獲獎(jiǎng)情況。5)單獨(dú)項(xiàng)目獲獎(jiǎng)信息查詢功能:實(shí)現(xiàn)對(duì)所指定項(xiàng)目查詢所有獲獎(jiǎng)成員信息。2.3運(yùn)行環(huán)境1) windowsxp/7系統(tǒng)2) vc+6.0編譯環(huán)境2.4開發(fā)工具c語言3.總體設(shè)計(jì)3.1系統(tǒng)流設(shè)計(jì)本系統(tǒng)

7、的功能模塊如圖1所示,主要有以下模塊:課程名稱界面主菜單界面程序歡迎界面題目信息查詢獲獎(jiǎng)運(yùn)動(dòng)員信息新建所有系部整體瀏覽系部獲獎(jiǎng)信息瀏覽項(xiàng)目獲獎(jiǎng)瀏覽信息退出程序 輸出本課題題目要求退出此時(shí)進(jìn)行的程序查詢相應(yīng)項(xiàng)目獲獎(jiǎng)名單查詢相應(yīng)系部獲獎(jiǎng)名單按書號(hào)查詢查詢所有系部獲獎(jiǎng)名單按書號(hào)查詢輸入所有獲獎(jiǎng)運(yùn)動(dòng)員名單按書號(hào)查詢圖1系統(tǒng)功能模塊圖3.2系統(tǒng)模塊設(shè)計(jì)1) 系統(tǒng)歡迎界面:構(gòu)造函數(shù)void welcome(),實(shí)現(xiàn)歡迎使用學(xué)校運(yùn)動(dòng)會(huì)管理系統(tǒng),作者和指導(dǎo)老師的顯示。2) 課程名稱界面:構(gòu)造函數(shù)void printtimu (),實(shí)現(xiàn)軟件題目的顯示。3) 主菜單界面:構(gòu)造函數(shù)void menu_select

8、(),實(shí)現(xiàn)系統(tǒng)主菜單的顯示。4) 獲獎(jiǎng)運(yùn)動(dòng)員信息新建:構(gòu)造函數(shù)void shuru(),實(shí)現(xiàn)新建獲獎(jiǎng)運(yùn)動(dòng)員信息。5) 系部獲獎(jiǎng)信息查詢:構(gòu)造函數(shù)void xibu(),實(shí)現(xiàn)查詢所選系部獲獎(jiǎng)信息查詢。6) 項(xiàng)目獲獎(jiǎng)信息查詢:構(gòu)造函數(shù)void xiangmu(),實(shí)現(xiàn)查詢所選項(xiàng)目獲獎(jiǎng)信息查詢。7) 獲獎(jiǎng)運(yùn)動(dòng)員信息整體瀏覽:構(gòu)造函數(shù)void shuchu(),顯示所有系部獲獎(jiǎng)人員情況。8) 導(dǎo)入鏈表信息到系部結(jié)構(gòu)體:構(gòu)造函數(shù)void daoruxi(),導(dǎo)入獲獎(jiǎng)運(yùn)動(dòng)員分?jǐn)?shù)到系部。9) 判斷所輸入信息合理性:構(gòu)造函數(shù)int panduan(),判斷新輸入的獲獎(jiǎng)信息是否與之前輸入的信息有沖突。10) 對(duì)

9、用戶的提示函數(shù):構(gòu)造函數(shù)void tishi(),提示學(xué)校院系及運(yùn)動(dòng)項(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ù)長度備注系部編號(hào)xinumint4項(xiàng)目編號(hào)munumint4運(yùn)動(dòng)員姓名namechar30獲獎(jiǎng)名次mcint 4為了充分利用內(nèi)存空間和實(shí)現(xiàn)不受限制的新建、載入獲獎(jiǎng)運(yùn)動(dòng)員信息,采用鏈表的結(jié)構(gòu)保存獲獎(jiǎng)運(yùn)動(dòng)員信息,在新建一位運(yùn)動(dòng)員信息時(shí),創(chuàng)建一個(gè)運(yùn)動(dòng)員信息的節(jié)點(diǎn),將其插入到鏈表中,示意圖如下。 運(yùn)動(dòng)員信息1運(yùn)動(dòng)員信息2通訊錄信息1221運(yùn)動(dòng)員

10、信息3運(yùn)動(dòng)員信息4為此,需聲明一個(gè)類型為struct student的結(jié)構(gòu)體,其成員為圖書的基本信息。然后通過對(duì)指針、鏈表、文件等數(shù)據(jù)結(jié)構(gòu)的操作,實(shí)現(xiàn)對(duì)運(yùn)動(dòng)員信息的新建、查詢、整體瀏覽、比較、保存等一系列操作。其中,結(jié)構(gòu)體定義如下:struct studentint xinum;char name30;int munum;int mc;int score;struct student * next; 4.2模塊接口設(shè)計(jì)1) 所有函數(shù)模塊聲明如下:2) void welcome();/歡迎界面/3) void printtimu();/本題題目要求/4) int menu_select();/主

11、菜單/5) void shuru();/輸入獲獎(jiǎng)運(yùn)動(dòng)員信息/6) void shuchu();/按照比賽成績從高到底輸出系部和其比賽成績/7) void xibu();/查詢系部獲獎(jiǎng)情況/8) void xiangmu();/查詢項(xiàng)目獲獎(jiǎng)情況/9) void tishi(); /提示題目所需數(shù)據(jù)/10) void daoruxi();/導(dǎo)入獲獎(jiǎng)運(yùn)動(dòng)員成績到系部/11) int panduan();/判斷所輸入信息是否有錯(cuò)誤/12) void exit0();/退出/13) 并定義 個(gè)全局變量:int writeinfo_flag=0;/*運(yùn)動(dòng)員信息是否保存標(biāo)志*/struct student

12、*head=null, *p1,*p2,*p3;/*用于新建和導(dǎo)入運(yùn)動(dòng)員信息*/14) 主要模塊的實(shí)現(xiàn)系統(tǒng)以主函數(shù)int main()為入口,首先通過調(diào)用void welcome()顯示歡迎界面,指導(dǎo)老師以及作者,然后調(diào)用void tishi()函數(shù)顯示學(xué)校院系及運(yùn)動(dòng)項(xiàng)目設(shè)置情況,并通過switch(menu_select(),顯示主菜單,并利用void menu_select()接受用戶的返回值返回個(gè)主函數(shù),再調(diào)用相關(guān)的函數(shù)進(jìn)入到下一級(jí)菜單進(jìn)行相關(guān)操作。4.3 以下是幾個(gè)主要模塊的流程圖:題目要求1) 主函數(shù):主函數(shù) 調(diào)用void tishi();、void welcome()、void l

13、oadrec() 調(diào)用void menu_select()接受int menu()的返回值n是否合法 yyn是否為0調(diào)用相關(guān)函數(shù)退出系統(tǒng)圖2 主函數(shù)5.運(yùn)行結(jié)果5.1歡迎界面:圖6 歡迎界面任意鍵自動(dòng)進(jìn)入系統(tǒng)界面。5.2主菜單界面:圖7主菜單界面5.3題目輸出界面:圖8 題目輸出界面5.4輸入獲獎(jiǎng)運(yùn)動(dòng)員信息界面 圖9 圖10 輸入運(yùn)動(dòng)員信息,并選擇是否輸入完全第 4頁 共 58 頁5.5順序輸出各個(gè)系部成績界面:圖11 5.6輸出指定系部獲獎(jiǎng)情況界面: 圖12 選擇指定系部圖13指定系部獲獎(jiǎng)情況界面5.7輸出指定系部獲獎(jiǎng)情況界面:圖14選擇指定項(xiàng)目 圖15 指定項(xiàng)目獲獎(jiǎng)情況6.程序調(diào)試與測(cè)試6

14、.1程序調(diào)試(1) 各模塊分別調(diào)試過程及結(jié)果。(1)程序歡迎界面和程序名稱界面還有題目顯示做起來比較容易,做起來沒出錯(cuò)。(2)主菜單界面我是按照老師給的一個(gè)參考程序做的,后來自己又優(yōu)化了一下,沒有出問題。(3)學(xué)校院系設(shè)置信息提示函數(shù)void tishi()。提示學(xué)校院系,及運(yùn)動(dòng)項(xiàng)目設(shè)置情況。(4)輸入獲獎(jiǎng)運(yùn)動(dòng)員信息函數(shù)void shuru()。本題最難的地方,開始定義三個(gè)學(xué)生結(jié)構(gòu)體指針,利用鏈表輸入運(yùn)動(dòng)員信息,在做的過程遇到最多的問題是內(nèi)存問題,因?yàn)橹羔樋偸窃浇纭K宰詈箧湵斫⒌囊灿袉栴},經(jīng)過逐步調(diào)試,發(fā)現(xiàn)程序在調(diào)用panduan()判斷新輸?shù)男畔⑹欠衽c先前信息有矛盾的情況時(shí)把指針釋放了。

15、經(jīng)過改正,程序良好運(yùn)行。(5)程序中還定義了void daoruxi();int panduan();兩個(gè)函數(shù),void daoruxi()是把成功輸入到鏈表里的數(shù)據(jù)部分導(dǎo)入到系部結(jié)構(gòu)體中,方便后面對(duì)系部獲獎(jiǎng)情況的查詢。int panduan()是為了判斷新輸?shù)男畔⑹欠衽c先前信息有矛盾的情況,并且返回值給shuru()函數(shù),進(jìn)行重新輸入或者接著往后輸入的選擇。(6) 查詢系部獲獎(jiǎng)情況函數(shù)void xibu();通過選擇此功能可以進(jìn)行單個(gè)查詢每一個(gè)系部所有獲獎(jiǎng)運(yùn)動(dòng)員的姓名,參加項(xiàng)目,在此項(xiàng)目中獲獎(jiǎng)名次等信息。(7)查詢項(xiàng)目獲獎(jiǎng)情況函數(shù)void xiangmu();通過選擇此功能可以進(jìn)行單個(gè)查詢每

16、一個(gè)項(xiàng)目所有獲獎(jiǎng)運(yùn)動(dòng)員的姓名,所屬院系,在此項(xiàng)目中獲獎(jiǎng)名次信息。(8)退出void exit0(),此功能可以直接退出軟件。(10)新建獲獎(jiǎng)運(yùn)動(dòng)員信息后,便不能在進(jìn)行補(bǔ)充。 (2) 集成調(diào)試過程及結(jié)果。1.在各模塊協(xié)調(diào)操作時(shí),因?yàn)楹脦讉€(gè)都需要得到頭指針(head),為此我將保存導(dǎo)入運(yùn)動(dòng)員信息的鏈表中需要用到的指針定義成全局的,這樣便于操作,可防止頭指針傳錯(cuò)。2.為了使在退出和記錄保存函數(shù)中,在不同的情況下給出不同的提示信息,我定義了一個(gè)標(biāo)志性全局變量int writeinfo_flag=0;/*信息變動(dòng)標(biāo)志*/。在可使運(yùn)動(dòng)員信息變動(dòng)的函數(shù)中,當(dāng)書庫信息變動(dòng)成功時(shí),就執(zhí)行save_flag=1,

17、這樣在退出或保存過程中就知道書庫信息是否變動(dòng)過,以便實(shí)現(xiàn)相應(yīng)功能。同時(shí)定義全局變量 n ,可以提示我們輸入到第幾個(gè)成績,在判斷函數(shù)中也起到了很大的作用,限定判斷次數(shù),不至于是判斷出錯(cuò)。3.在輸入信息時(shí),用兩個(gè)定義的全局變量指針p1,p2依次交替前進(jìn)并把數(shù)據(jù)緩存到第三個(gè)指針p3中。在輸入時(shí)模塊同時(shí)進(jìn)行數(shù)據(jù)的合法性判斷,以及信息的和理性判斷,當(dāng)全部滿足題目要求是,才輸入下一個(gè)數(shù)據(jù),如果數(shù)據(jù)不合法,軟件則會(huì)提醒數(shù)據(jù)有誤,并返回重新輸入此數(shù)據(jù)。 4.在顯示所有的系部成績時(shí),先調(diào)用導(dǎo)入函數(shù)把信息導(dǎo)入到開始定義的系部數(shù)組 中,然后再利用冒泡排序法,對(duì)系部成績進(jìn)行大小比較,并按從大到小的順序交換系部成績及西

18、部名稱。5導(dǎo)入運(yùn)動(dòng)員信息時(shí),定義一個(gè)節(jié)點(diǎn),輸入數(shù)據(jù)后在定義新的節(jié)點(diǎn),鏈接新節(jié)點(diǎn)頭與舊結(jié)點(diǎn)的尾,這樣就連接起來了。(1)head=(struct student *)malloc(len);/*開辟一個(gè)新單元*/ head-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)

19、行一次的情況下,連續(xù)執(zhí)行不同函數(shù),檢查是否有邏輯錯(cuò)誤。4在執(zhí)行了相應(yīng)的函數(shù)后,對(duì)比文件,看文件是否按程序操作的結(jié)果,正確改變了。5將文件刪除,看程序是否會(huì)給出正確提示,并且限制某些沒有文件不能實(shí)現(xiàn)的功能。6將文件置空,看是否會(huì)給出相應(yīng)提示以及程序是否運(yùn)行正常。6.2程序測(cè)試各模塊測(cè)試用例數(shù)據(jù)及結(jié)果與文件結(jié)果一致7.問題與不足(1) 需求分析中存在的問題和分析:該程序不支持插入新的運(yùn)動(dòng)員信息,與實(shí)際不符。不能完全識(shí)別操作者輸入的錯(cuò)誤信息。(2) 概要設(shè)計(jì)中存在的問題和分析:全局標(biāo)志性變量用的太多,在主體函數(shù)中定義變量時(shí),容易與全局標(biāo)志性產(chǎn)生混淆。全局指針也用的太多,雖然這樣避免了傳指針出錯(cuò),但沒

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

21、己馬虎,或者是時(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 #include #include #include #include #include #include #d

22、efine len sizeof(struct student)typedef struct xibuint num;char name20;int chengji;xi;typedef struct xiangmuint num;char name20;mu;struct studentint xinum;char name30;int munum;int mc;int 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,8

23、00米,5,1500米,6,跳高,7,跳遠(yuǎn),8,鉛球,9,三級(jí)跳,10,4x100接力;int n=0;void welcome();/歡迎界面/void printtimu();/本題題目要求/int menu_select();/主菜單/void shuru();/輸入獲獎(jiǎng)運(yùn)動(dòng)員信息/void shuchu();/按照比賽成績從高到底輸出系部和其比賽成績/void xibu();/查詢系部獲獎(jiǎng)情況/void xiangmu();/查詢項(xiàng)目獲獎(jiǎng)情況/void tishi(); /提示題目所需數(shù)據(jù)/void daoruxi();/導(dǎo)入獲獎(jiǎng)運(yùn)動(dòng)員成績到系部/int panduan();/判斷所輸

24、入信息是否有錯(cuò)誤/void exit0();/退出/struct student *head=null,*p1,*p2,*p3;/*定義結(jié)構(gòu)體指針head 為頭指針p1 為輸入數(shù)據(jù)緩存空間指針p2 為尾指針p3*/*運(yùn)動(dòng)員記錄保存標(biāo)志全局變量*/intwriteinfo_flag=0;/*主函數(shù)*/int main()system(color f2);welcome();tishi();for(;)switch(menu_select()case 1: system(cls); printtimu();break;case 2: system(cls); shuru();break;case

25、3: system(cls); shuchu();break;case 4: system(cls); xibu();break; case 5: system(cls); xiangmu();break;case 0: system(cls); exit0();return 0;default :getchar();printf(n 選擇錯(cuò)誤,請(qǐng)正確輸入你的選擇(05),:n);printf(n 按任意鍵返回.n);getchar();getchar();system(cls);/*清屏*/ return 0;/定義數(shù)據(jù)/void tishi()int i=0,m=0;printf(nnt

26、請(qǐng)按學(xué)校院系及獎(jiǎng)項(xiàng)設(shè)置輸入獲獎(jiǎng)人員,院系及獎(jiǎng)項(xiàng)設(shè)置如下nn);printf(nttt編號(hào) 系部 n);while(i5)printf(ttt %d %sn,xii.num,);i+;printf(nnttt編號(hào) 項(xiàng)目 n);while(mnext=null;p1=head;don+;dosystem(cls);printf(nnnnnnnt請(qǐng)輸入第%d個(gè)獲獎(jiǎng)運(yùn)動(dòng)員的系部編號(hào)、運(yùn)動(dòng)員姓名、運(yùn)動(dòng)項(xiàng)目編號(hào)、獲取名次n,n);fflush(stdin);scanf(%d%s%d%d,&p1-xinum,p1-name,&p1-munum,&p1-mc);while(p1-xinum5|

27、p1-xinummunum10|p1-munummcmc5)printf(您輸入的信息不合法或者項(xiàng)目不存在,請(qǐng)檢查后按任意鍵返回重新輸入n);getchar();getchar();system(cls);printf(nnnnnnnt請(qǐng)輸入第%d個(gè)獲獎(jiǎng)學(xué)生的系部編號(hào)、運(yùn)動(dòng)員姓名、運(yùn)動(dòng)項(xiàng)目編號(hào)、獲取名次n,n);fflush(stdin);scanf(%d%s%d%d,&p1-xinum,p1-name,&p1-munum,&p1-mc);switch(p1-mc)case 1: p1-score =7;break;case 2: p1-score =5;break;case 3: p1-sc

28、ore =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請(qǐng)問您是否輸入完畢,是(y),否(n),請(qǐng)給出您的選擇nn);fflush(stdin);scanf(%c,&a);fflush(stdin);if(a=n|a=n)system(cls);p2=(struct student *)malloc(len);/*開辟一個(gè)新單元*/p1-next=p2;p

29、3=p1;p1=p2;p1-next =null;while(a=n|a=n);system(cls);printf(nnnnnntt %d項(xiàng)信息輸入完畢,按任意鍵返回.n,n);getch();system(cls);/*清屏*/判斷輸入數(shù)據(jù)是否符合題意/int panduan()int d=0,m=1;p2=head;for(;mnext)if(p1-xinum=p2-xinum&p1-munum=p2-munum&strcmp(p1-name,p2-name)=0)d=1;if(d=1)printf(nnnt您輸入的數(shù)據(jù)中存在同一個(gè)人在同一個(gè)項(xiàng)目中有兩種信息的情況,請(qǐng)任意鍵返回并重新輸入

30、);getchar();getchar();system(cls);/*清屏*/m+;return d; /導(dǎo)入獲獎(jiǎng)運(yùn)動(dòng)員成績到系部/void daoruxi()int i,m=0;p2=head; while(p2!=null)for(i=1;ixinum)xii-1.chengji+=p2-score;p2=p2-next;/按照比賽成績從高到底輸出系部和其比賽成績/void shuchu()int i,j,m=0, temp;char a20;if(writeinfo_flag=0) getchar();printf(nnnnnnnntt運(yùn)動(dòng)員信息數(shù)據(jù)庫為空,不能顯示,按任意鍵將返回:n

31、);getchar();system(cls);/*清屏*/return;daoruxi();for(i=0;i4;i+)for(j=0;j5;j+)if(xij.chengjixij+1.chengji) temp=xij.chengji;strcpy(a,);xij.chengji=xij+1.chengji;strcpy(,xij+1.name);xij+1.chengji=temp;strcpy(xij+1.name,a);printf(nnnnnnttt按照比賽成績從高到底輸出系部和其比賽成績nn);printf(tttt系部成績n);while(m5

32、)printf(tttt%s%dn,,xim.chengji);m+;printf(nnnnnttt各系部得分從高到低展示完畢,按任意鍵返回.n);getchar();getch();system(cls);/*清屏*/查詢系部獲獎(jiǎng)情況/void xibu()int i=0,d=0;if(writeinfo_flag=0) getchar();printf(nnnnnnnntt運(yùn)動(dòng)員信息數(shù)據(jù)庫為空,不能顯示,按任意鍵將返回:n);getch();system(cls);/*清屏*/return;printf(nnnnnnttt請(qǐng)輸入要查詢的系部編號(hào)nn);printf(ttt我

33、選擇 :);fflush(stdin);scanf(%d,&d);if(d5)system(cls);printf(nnnnnnttt編號(hào)為%d的項(xiàng)系部不存在,按任意鍵將返回:n,d);getch();system(cls);/*清屏*/return;p2=head;printf(nnnntttt%s獲獎(jiǎng)記錄為nn,);printf(ttt運(yùn)動(dòng)員姓名參加項(xiàng)目名次n);while(p2!=null)if(d=p2-xinum)printf(ttt %s%s %dn,p2-name,,p2-mc);i+; p2=p2-next;if(i=1)p

34、rintf(nnnnttt%s獲獎(jiǎng)情況展示完畢,按任意鍵返回.n,);elseprintf(nnnnttt%s沒有運(yùn)動(dòng)員參賽,按任意鍵返回.n,);getch();system(cls);/*清屏*/查詢項(xiàng)目獲獎(jiǎng)情況/void xiangmu() int i=0,d=0;if(writeinfo_flag=0) getchar();printf(nnnnnnnntt 運(yùn)動(dòng)員信息數(shù)據(jù)庫為空,不能顯示,按任意鍵將返回:n);getch();system(cls);/*清屏*/return;printf(nnnnnnttt請(qǐng)輸入要查詢的項(xiàng)目編號(hào)nn);prin

35、tf(ttt我選擇 :);fflush(stdin);scanf(%d,&d);if(d10) system(cls);printf(nnnnnnttt編號(hào)為%d的項(xiàng)目不存在,按任意鍵將返回:n,d);getch();system(cls);/*清屏*/return;p2=head;printf(nnntttt%s 獲獎(jiǎng)記錄為nn,);printf(ttt運(yùn)動(dòng)員姓名所在系部名次nn);while(p2!=null)i+;if(d=p2-munum)printf(ttt%s%s %dn,p2-name,,p1-mc); p2=p2-next;

36、if(i=2)printf(nnnnttt%s 獲獎(jiǎng)情況展示完畢,按任意鍵返回.n,);elseprintf(nnnnttt%s 沒有運(yùn)動(dòng)員參加,按任意鍵返回.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ì)高等教育出版社,2009.53 譚浩強(qiáng)c程序設(shè)計(jì)(第2、3、4版)清華

37、大學(xué)出版社,2000.1.4 c語言程序設(shè)計(jì)教程,楊路明著,北京郵電大學(xué)出版社.12.用戶使用手冊(cè) 通過書號(hào)查詢(書號(hào)唯一,存在時(shí)只會(huì)顯示一本)通過書名查詢(顯示全部同書名的書) 圖書信息查詢 通過作者查詢(顯示全部同作者的書) 退出圖書查詢(返回到主菜單)列出圖書信息(圖書信息整體瀏覽)(顯示全部書信息) 通過書號(hào)刪除(書號(hào)唯一,一次只能刪除一本)通過書名刪除(可一次刪除多本)圖書信息刪除一,功能與性能 通過作者刪除(可一次刪除多本) 退出圖書刪除(返回到主菜單) 保存修改記錄(圖書信息變動(dòng)后可保存) 新建圖書信息(附加功能)修改密碼(附加功能) 退出程序(退出時(shí)會(huì)提醒是否保存)二,使用說明

38、:(1) 運(yùn)行程序以后,系統(tǒng)會(huì)顯示該系統(tǒng)名稱及開發(fā)者,此時(shí)按任意鍵可進(jìn)入系統(tǒng),進(jìn)入系統(tǒng)后,當(dāng)文件當(dāng)打開失敗時(shí),會(huì)給出提示,如果打開成功系統(tǒng)會(huì)自動(dòng)導(dǎo)入書庫信息,并顯示導(dǎo)入的信息條數(shù)及顯示歡迎界面。此時(shí)按任意鍵進(jìn)入系統(tǒng)。(2) 進(jìn)入系統(tǒng)后,按相應(yīng)功能前面的代號(hào)實(shí)現(xiàn)相應(yīng)功能,當(dāng)輸入的代號(hào)錯(cuò)誤時(shí),按任意鍵可重新輸入。(3) 執(zhí)行代碼1,進(jìn)入圖書信息查詢。此時(shí)輸入刪除方式前面相應(yīng)代號(hào),執(zhí)行相應(yīng)的查詢方式。當(dāng)查詢的圖書不存在時(shí),系統(tǒng)會(huì)給出提示,當(dāng)查詢的圖書存在時(shí),系統(tǒng)就顯示查詢結(jié)果。執(zhí)行一次查詢完畢后,照提示,按回車鍵系統(tǒng)又會(huì)返回到刪除方式菜單,此時(shí)可按0(推出查詢)選項(xiàng)退出查詢。當(dāng)操作代號(hào)輸入錯(cuò)誤時(shí),可

39、重新輸入。(4) 執(zhí)行代號(hào)2,進(jìn)入購書界面。此時(shí)系統(tǒng)會(huì)顯示收費(fèi)標(biāo)準(zhǔn),并提示你輸入你要購買的圖書書號(hào),當(dāng)你不知道你所要購買的圖書書號(hào)時(shí),可隨意輸入一些字符,然會(huì)按回車鍵,系統(tǒng)會(huì)提示你要購買的圖書不存在,是否調(diào)用查詢功能,通過其他方式獲取書號(hào),此時(shí)可按yy進(jìn)入到查詢界面,你可以根據(jù)你知道的圖書信息進(jìn)行查詢。當(dāng)有你所要購買的圖書時(shí),此時(shí)可按回車鍵,看著查詢結(jié)果重新輸入書號(hào),購買后,系統(tǒng)會(huì)顯示你購買的圖書信息(書號(hào),書名,作者,售價(jià),圖書本數(shù),和書的總費(fèi)),若沒有你要的圖書,可按0結(jié)束。當(dāng)執(zhí)行一次購買后系統(tǒng)就會(huì)提示是否繼續(xù)夠買圖書,可按任意鍵繼續(xù)購買,按nn結(jié)束購書,結(jié)束購書后,系統(tǒng)會(huì)顯示你所購書的本數(shù)、總費(fèi)、收費(fèi)標(biāo)準(zhǔn)以及需要支付的金額。此時(shí)系統(tǒng)會(huì)提示你是否確認(rèn)購買,按任意鍵確認(rèn),按nn撤銷購買。(5) 執(zhí)行

溫馨提示

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

評(píng)論

0/150

提交評(píng)論