2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計(jì)任務(wù)書</b></p><p>  課程設(shè)計(jì)題目: 學(xué)生成績管理 </p><p>  課程設(shè)計(jì)時間:2012年03月19日起——至 2012年03月30日止</p><p>  教研室主任 年 月 日批準(zhǔn)</p><p>  一、

2、課程設(shè)計(jì)的性質(zhì)和任務(wù)</p><p>  《程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)》是軟件工程專業(yè)的實(shí)踐性教學(xué)環(huán)節(jié)之一,是《程序設(shè)計(jì)基礎(chǔ)》課程的輔助教學(xué)過程,是軟件工程專業(yè)的一門必修課。</p><p>  本課程設(shè)計(jì)通過利用C語言實(shí)現(xiàn)一個小型的應(yīng)用系統(tǒng),使學(xué)生加深理解《程序設(shè)計(jì)基礎(chǔ)》課程中的各種基本概念、理論和原理,掌握C語言的語法、語句和程序設(shè)計(jì)的思想,鞏固課堂教學(xué)內(nèi)容,鍛煉學(xué)生編寫程序和調(diào)試程序的能力

3、,提高應(yīng)用軟件設(shè)計(jì)的能力,提高分析問題和解決問題的能力,培養(yǎng)創(chuàng)新和團(tuán)隊(duì)的意識,從而為后續(xù)課程學(xué)習(xí)、畢業(yè)設(shè)計(jì)以及將來更好地走向工作崗位打好堅(jiān)實(shí)的基礎(chǔ)。</p><p>  二、課程設(shè)計(jì)的原始資料</p><p>  隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,計(jì)算機(jī)早已經(jīng)從單純的數(shù)值計(jì)算功能中解脫出來,利用計(jì)算機(jī)完成的功能越來越多,如信息的存儲、多媒體應(yīng)用、信息管理等。在現(xiàn)代的管理技術(shù)中,利用計(jì)算機(jī)來完成過去

4、只能通過紙質(zhì)手工管理的智能管理模式已經(jīng)變得越來越廣泛。</p><p>  本題目就是利用計(jì)算機(jī)來完成學(xué)生成績管理程序。</p><p>  學(xué)生可查閱有關(guān)程序設(shè)計(jì)的案例資料,進(jìn)一步理解結(jié)構(gòu)化程序設(shè)計(jì)的模塊化程序設(shè)計(jì)思想,并利用此思想,根據(jù)對程序設(shè)計(jì)課程的學(xué)習(xí),編寫一個比較完整的簡單軟件系統(tǒng)。通過本設(shè)計(jì),可以加深理解利用傳統(tǒng)程序設(shè)計(jì)思想開發(fā)一個軟件系統(tǒng)的整個流程,提高分析問題、解決問題和軟

5、件設(shè)計(jì)、編程的實(shí)際動手能力。</p><p>  三、課程設(shè)計(jì)的主要內(nèi)容及要求;</p><p>  1.認(rèn)真閱讀材料,掌握程序設(shè)計(jì)模塊化的思想。</p><p>  2.要求在設(shè)計(jì)的過程中,建立清晰的層次結(jié)構(gòu)。</p><p>  3、畫出主要的功能結(jié)構(gòu)圖和主要模塊的流程圖。</p><p>  4.完成一簡單學(xué)生成

6、績管理程序。</p><p><b>  5.實(shí)現(xiàn)學(xué)生管理。</b></p><p><b>  6.實(shí)現(xiàn)成績管理。</b></p><p><b>  7.實(shí)現(xiàn)相應(yīng)查詢。</b></p><p>  8.要求操作簡單,用戶界面友好。</p><p> 

7、 9.運(yùn)行程序,檢查結(jié)果是否與理論值一致。</p><p>  10.運(yùn)行環(huán)境使用Windows,TC/VC。</p><p>  四、課程設(shè)計(jì)報(bào)告的要求</p><p>  課程設(shè)計(jì)報(bào)告要求參照畢業(yè)設(shè)計(jì)論文撰寫規(guī)范,學(xué)生應(yīng)撰寫的內(nèi)容為:中文摘要和關(guān)鍵詞、目錄、正文、參考文獻(xiàn)。</p><p>  課程設(shè)計(jì)報(bào)告裝訂順序?yàn)椋悍饷?、任?wù)書、成績評

8、審意見表、中文摘要和關(guān)鍵詞、目錄、正文、參考文獻(xiàn)。</p><p>  五、設(shè)計(jì)完成后應(yīng)提交成果的種類、數(shù)量、質(zhì)量要求</p><p>  1、完成任務(wù)書中指定的操作功能,運(yùn)行穩(wěn)定。</p><p><b>  2、課程設(shè)計(jì)報(bào)告。</b></p><p>  3、電子資料(程序代碼,簡單說明書,課程設(shè)計(jì)報(bào)告)。</

9、p><p><b>  五、時間進(jìn)度安排;</b></p><p><b>  六、主要參考資料</b></p><p>  1.郭翠英. C語言程序設(shè)計(jì)案例精編.北京:中國水利水電出版社.2004</p><p>  2. 譚浩強(qiáng). C程序設(shè)計(jì)(第三版).北京:清華大學(xué)出版社.2005 </p&

10、gt;<p>  3. 陳天洲. C語言高級程序設(shè)計(jì).北京:人民郵電出版社.2002</p><p>  4. 楊旭. C語言程序設(shè)計(jì)案例教程.北京:人民郵電出版社.2005</p><p>  5.王為青.C語言高級編程及實(shí)例剖析.北京:人民郵電出版社.2008</p><p>  6.徐慧.C語言實(shí)例解析精粹. 北京:人民郵電出版社.2006<

11、;/p><p><b>  目錄</b></p><p><b>  摘 要1</b></p><p><b>  第1章 引言1</b></p><p>  1.1 題目背景1</p><p>  1.2 設(shè)計(jì)目的1</p><

12、;p>  1.3 解決問題1</p><p>  第2章 C語言的運(yùn)行環(huán)境及其特點(diǎn)2</p><p>  2.1 C語言的概述2</p><p>  2.2 C語言的運(yùn)行環(huán)境2</p><p>  2.3 C語言的特點(diǎn)3</p><p>  2.4 C語言的運(yùn)行步驟4</p><p

13、>  2.5 C語言結(jié)構(gòu)體6</p><p>  第3章 系統(tǒng)分析與設(shè)計(jì)8</p><p>  3.1 系統(tǒng)功能描述8</p><p>  3.2 功能設(shè)計(jì)8</p><p>  第4章 系統(tǒng)實(shí)現(xiàn)25</p><p>  4.1主菜單運(yùn)行界面25</p><p>  4.2成績

14、查詢運(yùn)行界面25</p><p>  4.3成績錄入運(yùn)行界面25</p><p>  4.4成績刪除運(yùn)行界面26</p><p>  4.5掛科查詢運(yùn)行界面27</p><p>  4.6按平均分排名顯示界面28</p><p><b>  4.7退出28</b></p>

15、<p><b>  結(jié) 論29</b></p><p><b>  致 謝30</b></p><p><b>  摘 要</b></p><p>  現(xiàn)代科學(xué)技術(shù)的飛速發(fā)展,改變了世界,也改變了人類的生活。作為新世紀(jì)的大學(xué)生,應(yīng)當(dāng)站在展的前列,掌握現(xiàn)代科學(xué)知識,調(diào)整自己的知識結(jié)

16、構(gòu)和能力結(jié)構(gòu),以適應(yīng)社會發(fā)展要求。新需要具有豐富的現(xiàn)代科學(xué)知識,能夠獨(dú)立解決面臨的任務(wù),充滿活力同,有創(chuàng)新意識的新型人才。</p><p>  C語言是在國內(nèi)外廣泛使用的一種計(jì)算機(jī)語言。C語言功能豐富、表達(dá)能力強(qiáng)、使用靈活方便、應(yīng)用面廣、目標(biāo)程序效率高、可移植性好,既具有高級語言的優(yōu)點(diǎn),又具有低級語言的許多特點(diǎn),因此特別適合于編寫系統(tǒng)軟件。</p><p>  程序設(shè)計(jì)是一門實(shí)踐很強(qiáng)的課程

17、,既要掌握概念,又要動手編程,還要上機(jī)調(diào)試。</p><p>  學(xué)生成績管理系統(tǒng)就是通過我們組員每一個人的努力的成果,我們用到在課堂上所學(xué)到的知識以及課下參考其它資料而編寫的程序。本次課程設(shè)計(jì)可以實(shí)現(xiàn)在對學(xué)生成績管理時相應(yīng)的功能。操作簡便而實(shí)用。</p><p>  學(xué)生成績管理系統(tǒng)可以現(xiàn)實(shí)對成績相應(yīng)的操作,例如,成績查詢、成績錄入、成績刪除、掛科查詢、平均分總排名次序等相關(guān)功能,可以對

18、學(xué)生成績信息做一個簡單管理。</p><p>  此次C語言課程設(shè)計(jì)是對我們所掌握C語言知識的一次檢測。我們組做的是學(xué)生成績管理系統(tǒng),程序功能齊全,操作簡單,使我們對C語言知識有了質(zhì)的飛躍,提高了我們的編程技術(shù),增加了我們對計(jì)算機(jī)的興趣,程序成功的運(yùn)行,給予了我們莫大的信心,通過對程序的完善更讓我們受益匪淺,鍛煉了我們的實(shí)踐能力,給我對進(jìn)入社會提供了莫大的動力。</p><p>  此系統(tǒng)

19、中應(yīng)用了結(jié)構(gòu)體,數(shù)組,文件,基本的指針運(yùn)用,基本的循環(huán)語句,函數(shù)的調(diào)用等。</p><p>  關(guān)鍵詞 學(xué)生成績管理,結(jié)構(gòu)體,數(shù)組,文件,指針</p><p><b>  第1章 引言</b></p><p><b>  1.1 題目背景</b></p><p>  隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,改變了

20、世界,也改變了人類的生活。作為現(xiàn)代科學(xué)技術(shù)的飛速發(fā)展,改變了世界,也改變了人類的生活。新世紀(jì)的大學(xué)生,應(yīng)當(dāng)站在時代發(fā)展的前列,掌握現(xiàn)代科學(xué)技術(shù)知識,調(diào)整自己的知識結(jié)構(gòu)和能力結(jié)構(gòu),以適應(yīng)社會發(fā)展的要求。</p><p>  C語言成了在國內(nèi)外使用的一種計(jì)算機(jī)語言。C語言功能豐富、表達(dá)能力強(qiáng)、使用靈活方便、應(yīng)用面廣、目標(biāo)程序效率高、可移植性好、既具有高級語言的優(yōu)點(diǎn),又具有低級語言的許多特點(diǎn),因此特別適合于編寫系統(tǒng)軟件

21、?,F(xiàn)在大多數(shù)的高校都把C語言作為第一門計(jì)算機(jī)語言進(jìn)行教學(xué),這是可行的,學(xué)生是能夠?qū)W習(xí)好的。</p><p>  隨著社會的進(jìn)步與發(fā)展,在這個知識爆炸的時代,廣大的莘莘學(xué)子遍布天下。為了便于對如此大數(shù)量的學(xué)生的成績進(jìn)行管理,就需要一種能管理學(xué)生成績的程序系統(tǒng)。高中生成績管理系統(tǒng)就是在這種情況下應(yīng)運(yùn)而生的。該程序能夠進(jìn)行學(xué)生成績查詢、成績錄入、成績刪除、掛科查詢、平均分總排名次序等相關(guān)功能。從而使教學(xué)人員或管理者能方

22、便精確的進(jìn)行其所需的一些操作,達(dá)到大大節(jié)省人力、物力,和提高效率的目的。</p><p><b>  1.2 設(shè)計(jì)目的</b></p><p>  供教學(xué)人員和管理者進(jìn)行學(xué)生成績信息管理,方便操作者對學(xué)生考試考試成績進(jìn)行查詢、錄入、刪除、掛科查看、排名等操作,使成績管理人員的效率得到一定的提高。我們做的學(xué)生成績管理系統(tǒng)就是為了便于對學(xué)生的成績進(jìn)行管理,方便對學(xué)生的成績

23、進(jìn)行有序的管理。</p><p><b>  1.3 解決問題</b></p><p>  我們做的程序可以對學(xué)生成績信息做簡單的管理,可以滿足操作者的基本要求,能夠?qū)崿F(xiàn)成績查詢、成績錄入、成績刪除、掛科查詢、平均分總排名次序等相關(guān)功能,尤其是增添了一般程序沒有的掛科查詢,可以方便對掛科同學(xué)進(jìn)行查詢管理。</p><p>  第2章 C語言的運(yùn)

24、行環(huán)境及其特點(diǎn)</p><p>  2.1 C語言的概述 </p><p>  早期的C語言主要是用于UNIX系統(tǒng)。由于C語言的強(qiáng)大功能和各方面的優(yōu)點(diǎn)逐漸為人們認(rèn)識,到了八十年代,C開始進(jìn)入其它操作系統(tǒng),并很快在各類大、中、小和微型計(jì)算機(jī)上得到了廣泛的使用。成為當(dāng)代最優(yōu)秀的程序設(shè)計(jì)語言之一。</p><p>  C語言是一種結(jié)構(gòu)化語言。它層次清晰,便于按模塊化方式組

25、織程序,易于調(diào)試和維護(hù)。C語言的表現(xiàn)能力和處理能力極強(qiáng)。它不僅具有豐富的運(yùn)算符和數(shù)據(jù)類型,便于實(shí)現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。它還可以直接訪問內(nèi)存的物理地址,進(jìn)行位(bit)一級的操作。由于C語言實(shí)現(xiàn)了對硬件的編程操作,因此C語言集高級語言和低級語言的功能于一體。既可用于系統(tǒng)軟件的開發(fā),也適合于應(yīng)用軟件的開發(fā)。此外,C語言還具有效率高,可移植性強(qiáng)等特點(diǎn)。因此廣泛地移植到了各類各型計(jì)算機(jī)上,從而形成了多種版本的C語言。</p>&l

26、t;p>  在C語言中采用的分隔符有逗號和空格兩種。逗號主要用在類型說明和函數(shù)參數(shù)表中,分隔各個變量??崭穸嘤糜谡Z句各單詞之間,作間隔符。在關(guān)鍵字,標(biāo)識符之間必須要有一個以上的空格符作間隔,否則將會出現(xiàn)語法錯誤,例如把int a;寫成 inta;C編譯器會把inta當(dāng)成一個標(biāo)識符處理,其結(jié)果必然出錯。 </p><p>  C語言的注釋符是以“/*”開頭并以“*/”結(jié)尾的串。在“/*”和“*/”之間的即為注

27、釋。程序編譯時,不對注釋作任何處理。注釋可出現(xiàn)在程序中的任何位置。注釋用來向用戶提示或解釋程序的意義。在調(diào)試程序中對暫不使用的語句也可用注釋符括起來,使翻譯跳過不作處理,待調(diào)試結(jié)束后再去掉注釋符。</p><p>  2.2 C語言的運(yùn)行環(huán)境</p><p>  C語言的運(yùn)行環(huán)境是Turbo C,Turbo C是美國Borland公司的產(chǎn)品,Borland公司是一家專門從事軟件開發(fā)、研制的

28、大公司。該公司相繼推出了一套Turbo系列軟件,如Turbo BASIC, TurboPascal,Turbo Prolog,這些軟件很受用戶歡迎。該公司在1987年首次推出Turbo C1.0產(chǎn)品,其中使用了全然一新的集成開發(fā)環(huán)境,即使用了一系列下拉式菜單,將文本編輯、程序編譯、連接以及程序運(yùn)行一體化,大大方便了程序的開發(fā)。1988年,Borland公司又推出Turbo C1.5版本,增加了圖形庫和文本窗口函數(shù)庫等,而TurboC 2

29、.0則是該公司1989年出版的。 </p><p>  Turbo C2.0在原來集成開發(fā)環(huán)境的基礎(chǔ)上增加了查錯功能,并可以在Tiny模式下直接生成。COM(數(shù)據(jù)、代碼、堆棧處在同一64K內(nèi)存中)文件。還可對數(shù)學(xué)協(xié)處理器支持8087/80287等進(jìn)行仿真。Borland公司后來又推出了面向?qū)ο蟮某绦蜍浖黅urbo C++,它繼承發(fā)展Turbo C 2.0的集成開發(fā)環(huán)境,并包含了面向?qū)ο蟮幕舅枷牒驮O(shè)計(jì)方法。1

30、991年為了適用Microsoft 公司的Windows 3.0 版本,Borland公司又將Turbo C++作了更新,即Turbo C的新一代產(chǎn)品Borlandc C++也已經(jīng)問世了。隨后,Microsoft 公司推出的可視化開發(fā)環(huán)境,即Microsoft Visual C++6.0。也就是我們小組運(yùn)用的開發(fā)環(huán)境。</p><p>  C語言在VC++6.0環(huán)境下運(yùn)行如圖2-1所示。</p>&

31、lt;p>  圖2-1 C語言運(yùn)行界面</p><p>  2.3 C語言的特點(diǎn)</p><p>  1. 簡潔緊湊、靈活方便</p><p>  C語言一共只有32個關(guān)鍵字,9種控制語句,程序書寫自由,主要用小寫字母表示。它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實(shí)用性結(jié)合起來。C 語言可以象匯編語言一樣對位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單

32、元。</p><p><b>  2. 運(yùn)算符豐富</b></p><p>  C的運(yùn)算符包含的范圍很廣泛,共有種34個運(yùn)算符。C語言把括號、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C的運(yùn)算類型極其豐富表達(dá)式類型多樣化,靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級語言中難以實(shí)現(xiàn)的運(yùn)算。</p><p><b>  3. 數(shù)據(jù)結(jié)構(gòu)豐富<

33、;/b></p><p>  C的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)類型的運(yùn)算。并引入了指針概念,使程序效率更高。另外C語言具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動器。且計(jì)算功能、邏輯判斷功能強(qiáng)大。</p><p>  4. C語言是結(jié)構(gòu)式語言</p><p>  結(jié)構(gòu)式語言的顯著特點(diǎn)是代碼及

34、數(shù)據(jù)的分隔化,即程序的各個部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護(hù)以及調(diào)試。C語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。</p><p>  5. C語言語法限制不太嚴(yán)格、程序設(shè)計(jì)自由度大</p><p>  一般的高級語言語法檢查比較嚴(yán),能夠檢查出幾乎所有的語法錯誤。而C語言允許

35、程序編寫者有較大的自由度。</p><p>  6. C語言允許直接訪問物理地址,可以直接對硬件進(jìn)行操作</p><p>  因此既具有高級語言的功能,又具有低級語言的許多功能,能夠象匯編語言一樣對位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元,可以用來寫系統(tǒng)軟件。</p><p>  7. C語言程序生成代碼質(zhì)量高,程序執(zhí)行效率高</p>

36、<p>  一般只比匯編程序生成的目標(biāo)代碼效率低10~20%。</p><p>  8. C語言適用范圍大,可移植性好</p><p>  C語言有一個突出的優(yōu)點(diǎn)就是適合于多種操作系統(tǒng),如DOS、UNIX,也適用于多種機(jī)型。</p><p>  2.4 C語言的運(yùn)行步驟 </p><p><b>  1.運(yùn)行VC6.0&l

37、t;/b></p><p>  現(xiàn)在就讓我們開始Visual C++ 6.0之旅吧!首先按如下兩種方法之一啟動并運(yùn)行VC6,進(jìn)入到它的集成開發(fā)環(huán)境窗口(假設(shè)在Windows系統(tǒng)下已經(jīng)安裝了VC6)其具體窗口式樣如圖2-1所示。</p><p><b>  方法一:</b></p><p>  若桌面上有VC6圖標(biāo)(“橫躺著”即“倒下”的“

38、8”字型圖標(biāo),且標(biāo)有Microsoft Visual Studio 6.0字樣,如圖2-2所示),則用鼠標(biāo)雙擊該圖標(biāo)。</p><p>  圖2-2 VC6.0在桌面上的快捷方式</p><p>  方法二(假設(shè)按照通常方式對VC6進(jìn)行了安裝的話)</p><p>  通過開始→程序→Microsoft Visual Studio 6.0→Microsoft Vis

39、ual C++ 6.0,單擊一下該菜單項(xiàng)。</p><p>  圖2-1式樣的窗口從大體上可分為四部分。上部:菜單和工具條;中左:工作區(qū)(workspace)視圖顯示窗口,這里將顯示處理過程中與項(xiàng)目相關(guān)的各種文件種類等信息;中右:文檔內(nèi)容區(qū),是顯示和編輯程序文件的操作區(qū);下部:輸出(Output)窗口區(qū),程序調(diào)試過程中,進(jìn)行編譯、鏈接、運(yùn)行時輸出的相關(guān)信息將在此處顯示。注意,由于系統(tǒng)的初始設(shè)置或者環(huán)境的某些不同,

40、可能你所啟動的VC6初始窗口式樣與圖2-1有所不同,也許沒出現(xiàn)Workspace窗口或Output窗口,這時可通過View→Workspace菜單選項(xiàng)的執(zhí)行,總可使中左處的工作區(qū)窗口顯現(xiàn)出來;而通過View→Output菜單選項(xiàng)的執(zhí)行,又總可使下部的輸出區(qū)窗口得以顯現(xiàn)。當(dāng)然,如果不想看到這兩個窗口,可以點(diǎn)擊相應(yīng)窗口的“x”按鍵來關(guān)閉窗口。如圖2-3所示。</p><p>  圖2-3 VC6.0的集成開發(fā)環(huán)境窗口

41、 </p><p>  2. 編制并運(yùn)行C語言程序的四步曲</p><p> ?、啪庉嫞ò殉绦虼a輸入,交給計(jì)算機(jī))。 </p><p> ?、凭幾g(成目標(biāo)程序文件.obj)。</p><p>  編譯就是把高級語言變成計(jì)算機(jī)可以識別的2進(jìn)制語言,計(jì)算機(jī)只認(rèn)識1和0,編譯程序把人們熟悉的語言換成2進(jìn)制的。編譯程序把一個源程序翻譯成目標(biāo)程序的工

42、作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優(yōu)化;目標(biāo)代碼生成。主要是進(jìn)行詞法分析和語法分析,又稱為源程序分析,分析過程中發(fā)現(xiàn)有語法錯誤,給出提示信息。 </p><p>  ⑶鏈接(成可執(zhí)行程序文件.exe)。</p><p>  鏈接是將編譯產(chǎn)生的.obj文件和系統(tǒng)庫連接裝配成一個可以執(zhí)行的程序。由于在實(shí)際操作中可以直接點(diǎn)擊Build從源程序產(chǎn)生可執(zhí)行程序,可能

43、有人就會置疑:為何要將源程序翻譯成可執(zhí)行文件的過程分為編譯和鏈接兩個獨(dú)立的步驟,不是多此一舉嗎?之所以這樣做,主要是因?yàn)椋涸谝粋€較大的復(fù)雜項(xiàng)目中,有很多人共同完成一個項(xiàng)目(每個人可能承擔(dān)其中一部分模塊),其中有的模塊可能是用匯編語言寫的,有的模塊可能是用VC寫的,有的模塊可能是用VB寫的,有的模塊可能是購買(不是源程序模塊而是目標(biāo)代碼)或已有的標(biāo)準(zhǔn)庫模塊,因此,各類源程序都需要先編譯成目標(biāo)程序文件(2進(jìn)制機(jī)器指令代碼),再通過鏈接程序?qū)?/p>

44、這些目標(biāo)程序文件連接裝配成可執(zhí)行文件。 </p><p> ?、冗\(yùn)行(可執(zhí)行程序文件)。</p><p>  上述四個步驟中,其中第一步的編輯工作是最繁雜而又必須細(xì)致地由人工在計(jì)算機(jī)上來完成,其余幾個步驟則相對簡單,基本上由計(jì)算機(jī)來自動完成。在VC6.0下編譯后的窗口界面如圖2-4所示。</p><p>  圖2-4 在VC6.0下編譯后的窗口界面</p>

45、;<p>  2.5 C語言結(jié)構(gòu)體</p><p> ?、?結(jié)構(gòu)體說明和結(jié)構(gòu)體變量定義</p><p>  在C語言中,結(jié)構(gòu)體也是一種數(shù)據(jù)類型,可以使用結(jié)構(gòu)體變量,因此像其它類型的變量一樣,在使用結(jié)構(gòu)體變量時要先對其定義。</p><p>  定義結(jié)構(gòu)體變量的一般格式為:</p><p>  struct 結(jié)構(gòu)體名</p&

46、gt;<p><b>  { </b></p><p><b>  類型 變量名;</b></p><p><b>  類型 變量名;</b></p><p><b>  … </b></p><p><b>  }

47、結(jié)構(gòu)體變量;</b></p><p>  結(jié)構(gòu)體名是結(jié)構(gòu)體的標(biāo)識符不是變量名。</p><p>  類型有五種數(shù)據(jù)類型(整型、浮點(diǎn)型、字符型、指針型和無值型)。 </p><p>  構(gòu)成結(jié)構(gòu)體的每一個類型變量稱為結(jié)構(gòu)體成員,它象數(shù)組的元素一樣,但數(shù)組中元素是以下標(biāo)來訪問的,而結(jié)構(gòu)體是按變量名字來訪問成員的。 </p><p>

48、; ?、?結(jié)構(gòu)體變量的使用</p><p>  結(jié)構(gòu)體是一個新的數(shù)據(jù)類型,因此結(jié)構(gòu)體變量也可以像其它類型的變量一樣賦值、運(yùn)算,不同的是結(jié)構(gòu)體變量以成員作為基本變量。</p><p>  結(jié)構(gòu)體成員的表示方式為: </p><p>  結(jié)構(gòu)體變量.成員名 </p><p>  如果將“結(jié)構(gòu)體變量.成員名”看成一個整體,則這個整體的數(shù)據(jù)類型與結(jié)構(gòu)

49、體中該成員的數(shù)據(jù)類型相同,這樣就可像前面所講的變量那樣使用。</p><p>  ⒊ 結(jié)構(gòu)體數(shù)組和結(jié)構(gòu)體指針 </p><p>  結(jié)構(gòu)體是一種新的數(shù)據(jù)類型,同樣可以有結(jié)構(gòu)體數(shù)組和結(jié)構(gòu)體指針。</p><p> ?、沤Y(jié)構(gòu)體數(shù)組就是具有相同結(jié)構(gòu)類型的變量集合。</p><p>  ⑵結(jié)構(gòu)體指針是指向結(jié)構(gòu)體的指針。它由一個加在結(jié)構(gòu)體變量名前的“*

50、” 操作符來定義。</p><p>  第3章 系統(tǒng)分析與設(shè)計(jì)</p><p>  3.1 系統(tǒng)功能描述</p><p>  本程序主要完成的是學(xué)生成績的管理功能,除了主函數(shù)以外有13個附屬函數(shù),整個程序分為六大功能,分別為學(xué)生成績查詢、成績錄入、成績刪除、掛科查詢、平均分總排名次序及退出。分別由函數(shù)實(shí)現(xiàn),功能結(jié)構(gòu)圖如圖3-1所示。</p><p

51、>  圖3-1 功能結(jié)構(gòu)圖</p><p><b>  3.2 功能設(shè)計(jì)</b></p><p>  1.主函數(shù) </p><p>  int main() </p><p>  { fib_

52、00();</p><p>  return 0;} </p><p>  設(shè)計(jì)流程如圖3-2所示。 </p><p>  圖3-2 int main()主函數(shù)流程圖</p><p><b>  2.主要功能函數(shù)</b></p>&

53、lt;p><b>  ⑴成績查詢功能函數(shù)</b></p><p>  void fib_1(void) </p><p><b>  {</b></p><p>  int i=0; </p><p>

54、<b>  int j=0;</b></p><p><b>  int N=0;</b></p><p>  long number;</p><p>  float sum[SIZE];</p><p>  FILE *fp1;</p><p>  fp1=fopen(&

55、quot;stu.dat","rb");</p><p>  //fp2=fopen("newwrite","rb");</p><p>  fseek(fp1,0,2);</p><p>  x=ftell(fp1);</p><p>  x=x/sizeof(struc

56、t student);</p><p>  rewind(fp1); </p><p>  printf("請輸入您要查詢的學(xué)生學(xué)號:\n");</p><p>  scanf("%d",&number);</p><p>  for(i=0;i<x;i++)</p>&

57、lt;p><b>  {</b></p><p>  fread(&stud[i],sizeof(struct student),1,fp1);</p><p>  if(stud[i].num==number)</p><p>  {sum[i]=stud[i].score[0]+stud[i].score[1]+</p&

58、gt;<p>  stud[i].score[2]+stud[i].score[3]+stud[i].score[4];</p><p>  stud[i].ave=sum[i]/5;</p><p>  printf(" 姓名 學(xué)號 思想品德與法律基礎(chǔ) </p><p>  大學(xué)外語 高等數(shù)學(xué) 程序設(shè)計(jì) 嵌入式導(dǎo)論

59、 平均分\n");</p><p>  printf("%s %d %d %d %d %d %d%.1f\n",</p><p>  stud[i].name,stud[i].num,stud[i].score[0],stud[i].score[1],</p><p>  st

60、ud[i].score[2],stud[i].score[3],stud[i].score[4],stud[i].ave);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><

61、;b>  if(i==x)</b></p><p>  { printf("您查找的成員不存在\n");</p><p>  fclose(fp1);</p><p><b>  }}</b></p><p>  設(shè)計(jì)流程如圖3-3所示。</p><p> 

62、 圖3-3成績查詢功能函數(shù)</p><p><b> ?、瞥煽冧浫牍δ芎瘮?shù)</b></p><p>  void fib_2(void)</p><p><b>  {</b></p><p><b>  int i=0;</b></p><p>  l

63、ong number;</p><p><b>  int many;</b></p><p>  printf("請輸入您將要錄入成績的成員個數(shù):\n");</p><p>  scanf("%d",&many);</p><p>  printf("請開始錄入

64、成員信息及其成績\n");</p><p>  for(i=x;i<x+many;i++)</p><p>  scanf("%s%d%d%d%d%d%d",stud[i].name,</p><p>  &stud[i].num,&stud[i].score[0],&stud[i].score[1],&l

65、t;/p><p>  &stud[i].score[2],&stud[i].score[3],&stud[i].score[4]);</p><p>  save1(many);</p><p>  printf("錄入完畢\n");</p><p><b>  }</b><

66、/p><p>  設(shè)計(jì)流程如圖3-4所示。</p><p>  圖3-4成績查詢功能函數(shù)</p><p><b> ?、浅煽儎h除功能函數(shù)</b></p><p>  void fib_3(void)</p><p><b>  {</b></p><p>

67、<b>  int i=0;</b></p><p><b>  int j=0;</b></p><p><b>  int N=0;</b></p><p>  long number;</p><p>  float sum[SIZE];</p><p

68、>  FILE *fp1;</p><p>  fp1=fopen("stu.dat","rb+");</p><p>  printf("請輸入您要刪除的學(xué)生學(xué)號:\n");</p><p>  scanf("%d",&number);</p><p&

69、gt;  for(i=0;i<SIZE;i++)</p><p>  fread(&stud[i],sizeof(struct student),1,fp1);</p><p>  fseek(fp1,0,2);</p><p>  x=ftell(fp1);</p><p>  x=x/sizeof(struct studen

70、t);</p><p>  rewind(fp1); </p><p>  fclose(fp1);</p><p>  for(i=0;i<x;i++)</p><p><b>  { </b></p><p>  if(stud[i].num==number)</p>

71、<p><b>  {</b></p><p>  for(j=i;j<SIZE;j++)</p><p><b>  { </b></p><p>  strcpy(stud[j].name,stud[j+1].name);</p><p>  stud[j].ave=stud

72、[j+1].ave;</p><p>  stud[j].num=stud[j+1].num;</p><p>  stud[j].score[0]=stud[j+1].score[0];</p><p>  stud[j].score[1]=stud[j+1].score[1];</p><p>  stud[j].score[2]=stu

73、d[j+1].score[2];</p><p>  stud[j].score[3]=stud[j+1].score[3];</p><p>  stud[j].score[4]=stud[j+1].score[4];}}</p><p><b>  }</b></p><p><b>  size=x;&l

74、t;/b></p><p><b>  size--;</b></p><p>  printf("刪除操作成功\n");</p><p>  fp1=fopen("stu.dat","w+");</p><p>  for(i=0;i<size;i

75、++)</p><p>  {fwrite(&stud[i],sizeof(struct student),1,fp1);}</p><p>  fclose(fp1);</p><p><b>  }</b></p><p>  設(shè)計(jì)流程如圖3-5所示。</p><p><b>

76、;  ⑷掛科查詢功能函數(shù)</b></p><p>  void fib_4(void)</p><p><b>  {</b></p><p><b>  int d;</b></p><p><b>  fib_0();</b></p><p&

77、gt;<b>  for(;;)</b></p><p>  圖3-5成績刪除功能函數(shù)</p><p><b>  {</b></p><p>  printf("***********1.繼續(xù)掛科其他查詢************\n");</p><p>  printf(&q

78、uot;***********2.返回上一層菜單*************\n");</p><p>  printf("請輸入功能代碼\n");</p><p>  scanf("%d",&d);</p><p><b>  if(d==1)</b></p><p&

79、gt;<b>  fib_0();</b></p><p><b>  if(d==2)</b></p><p><b>  fib_11();</b></p><p><b>  }}</b></p><p>  設(shè)計(jì)流程如圖3-6所示。</p&g

80、t;<p>  圖3-6掛科查詢功能函數(shù)</p><p> ?、善骄挚偱琶涡蚬δ芎瘮?shù)</p><p>  void fib_5(void)</p><p>  {int i=0;</p><p><b>  int j=0;</b></p><p>  long number;

81、</p><p>  float sum[SIZE];</p><p>  FILE *fp1;</p><p>  fp1=fopen("stu.dat","rb");</p><p>  fseek(fp1,0,2);</p><p>  x=ftell(fp1);</

82、p><p>  x=x/sizeof(struct student);</p><p>  rewind(fp1); </p><p>  for(i=0;i<x;i++)</p><p><b>  {</b></p><p>  fread(&stud[i],sizeof(str

83、uct student),1,fp1);</p><p>  sum[i]=stud[i].score[0]+stud[i].score[1]+</p><p>  stud[i].score[2]+stud[i].score[3]+stud[i].score[4];</p><p>  stud[i].ave=sum[i]/5; &

84、lt;/p><p><b>  }</b></p><p>  for(j=0;j<x-1;j++)</p><p><b>  {</b></p><p>  fread(&stud[i],sizeof(struct student),1,fp1);</p><p&g

85、t;  for(i=0;i<x-1;i++)</p><p>  if(stud[i].ave<stud[i+1].ave)</p><p><b>  {</b></p><p>  {strcpy(stud2.name,stud[i].name);</p><p>  stud2.num=stud[i].

86、num;</p><p>  stud2.score[0]=stud[i].score[0];</p><p>  stud2.score[1]=stud[i].score[1];</p><p>  stud2.score[2]=stud[i].score[2];</p><p>  stud2.score[3]=stud[i].score

87、[3];</p><p>  stud2.score[4]=stud[i].score[4];</p><p>  stud2.ave=stud[i].ave;</p><p><b>  }</b></p><p>  stud[i]=stud[i+1];</p><p>  {strcpy(s

88、tud[i+1].name,stud2.name);</p><p>  stud[i+1].num=stud2.num;</p><p>  stud[i+1].score[0]=stud2.score[0];</p><p>  stud[i+1].score[1]=stud2.score[1];</p><p>  stud[i+1].

89、score[2]=stud2.score[2];</p><p>  stud[i+1].score[3]=stud2.score[3];</p><p>  stud[i+1].score[4]=stud2.score[4];</p><p>  stud[i+1].ave=stud2.ave;}</p><p><b>  }}

90、</b></p><p>  printf(" 名次 姓名 學(xué)號 思想品德與法律基礎(chǔ) </p><p>  大學(xué)外語 高等數(shù)學(xué) 程序設(shè)計(jì) 嵌入式導(dǎo)論 平均分\n");</p><p>  for(i=0;i<x;i++)</p><p>  { printf("%3d

91、 %6s %d %d %d %d %d %d %.1f\n",</p><p>  i+1,stud[i].name,stud[i].num,stud[i].score[0],</p><p>  stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].score[4],

92、stud[i].ave);}</p><p>  fclose(fp1);}</p><p>  設(shè)計(jì)流程如圖3-7所示。</p><p>  圖3-7平均分總排名次序功能函數(shù)</p><p><b> ?、释顺鱿到y(tǒng)功能函數(shù)</b></p><p>  void quit(void) </p

93、><p><b>  {</b></p><p>  printf("**********按任意鍵退出系統(tǒng)************\n");</p><p><b>  exit(0);</b></p><p><b>  }</b></p>&l

94、t;p>  設(shè)計(jì)流程如圖3-8所示。</p><p>  圖3-8退出系統(tǒng)功能函數(shù)</p><p> ?、溯敵鲋鞑藛雾撁婧瘮?shù)</p><p>  void fib_00(void)</p><p><b>  {</b></p><p>  system("Color f5&quo

95、t;);</p><p>  int a; FILE *fp1;</p><p>  printstar();</p><p>  system("cls");</p><p>  printf(" \\\|///\n");</p>&l

96、t;p>  printf(" \\\ - - //\n");</p><p>  printf(" ( @ @ )\n");</p><p>  printf("*********************oOOo*(_)*oOOo*****

97、*********************\n");</p><p>  printf("|| 歡迎登錄系統(tǒng)本111成績管理系統(tǒng) ||\n");</p><p>  printf("|| 功能選項(xiàng): |

98、|\n");</p><p>  printf("|| 1成績查詢 2成績錄入 ||\n");</p><p>  printf("|| 3成績刪除 4掛科查詢 ||\n");</p>

99、;<p>  printf("|| 5平均分總排名次序 6退出系統(tǒng) ||\n");</p><p>  printf("|| Oooo ||\n");</p><p>  pr

100、intf("***********************oooO**( )****************************\n");</p><p>  printf(" ( ) ) /\n");</p><p>  printf(" \

101、\ ( (_/\n");</p><p>  printf(" \\_) \n");</p><p>  printstar();</p><p>  printf("請輸入您選擇的功能選項(xiàng)代號并用回車結(jié)束:\n");</p><p> 

102、 scanf("%d",&a);</p><p>  while(a<=6)</p><p><b>  {</b></p><p><b>  if(a==1)</b></p><p>  { fib_1(); fib_11(); }<

103、;/p><p><b>  if(a==2)</b></p><p>  { fib_2(); fib_11(); }</p><p><b>  if(a==3)</b></p><p>  { fib_3(); fib_11(); }</p&g

104、t;<p><b>  if(a==4)</b></p><p>  { fib_4(); fib_11(); }</p><p><b>  if(a==5)</b></p><p>  { fib_5(); fib_11(); }</p>&l

105、t;p><b>  if(a==6)</b></p><p><b>  { </b></p><p><b>  quit();</b></p><p><b>  }</b></p><p><b>  }</b&g

106、t;</p><p><b>  }</b></p><p>  設(shè)計(jì)流程如圖3-9所示。</p><p><b> ?、谭祷刂鞑藛魏瘮?shù)</b></p><p>  void fib_11(void)</p><p><b>  { </b></

107、p><p><b>  int b;</b></p><p>  printf("**********1返回主頁面***********\n");</p><p>  printf("**********2退出該系統(tǒng)***********\n");</p><p>  printf(&

108、quot;請?jiān)俅溯斎脒x擇代號:\n");</p><p>  scanf("%d",&b);</p><p><b>  if(b==1)</b></p><p><b>  fib_00();</b></p><p>  else quit();</p&

109、gt;<p><b>  }</b></p><p>  設(shè)計(jì)流程如圖3-10所示。</p><p>  3主要功能函數(shù)的附屬函數(shù)</p><p><b> ?、泡敵龇指粜泻瘮?shù)</b></p><p>  void printstar()</p><p><

110、;b>  {</b></p><p>  printf("**************************************************************\n");</p><p><b>  }</b></p><p>  設(shè)計(jì)流程如圖3-11所示。</p>&l

111、t;p>  圖3-9輸出主菜單頁面函數(shù)</p><p>  圖3-10 返回主菜單函數(shù)</p><p>  圖3-11輸出分隔行函數(shù)</p><p> ?、葡蛭募飳懶畔⒌膬Υ婧瘮?shù)</p><p>  void save1(int many)</p><p><b>  {</b></

112、p><p><b>  FILE *fp;</b></p><p><b>  int i;</b></p><p>  if((fp=fopen("stu.dat","ab"))==NULL)</p><p>  {printf("The file c

113、an not open\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  for(i=x;i<x+many;i++)</p><p>  if(fwrite(&stud[i],sizeof(struct

114、student1),1,fp)!=1)</p><p>  {printf("file write error\n");</p><p><b>  return ;</b></p><p><b>  }</b></p><p>  fclose(fp);</p>

115、<p><b>  }</b></p><p>  設(shè)計(jì)流程如圖3-12所示。</p><p> ?、菕炜撇樵児δ芎瘮?shù)中調(diào)用的附屬函數(shù)</p><p>  void fib_0(void)</p><p><b>  {</b></p><p>  system(

116、"cls");</p><p><b>  int i=0;</b></p><p>  int j=0; </p><p><b>  int N=0;</b></p><p><b>  int c;</b></p><p>&

117、lt;b>  int d;</b></p><p>  long number;</p><p>  float sum[SIZE];</p><p>  FILE *fp1;</p><p>  fp1=fopen("stu.dat","rb");

118、 圖3-12向文件里寫信息的儲存函數(shù)</p><p>  fseek(fp1,0,2);</p><p>  x=ftell(fp1);</p><p>  x=x/sizeof(struct student);</p><p>  rewind(fp1); </p><p>  printf("****

119、**本學(xué)期期末系統(tǒng)本111共5科考試科目如下*******\n");</p><p>  printf(" 1.查詢思想品德與法律基礎(chǔ)掛科的同學(xué)\n");</p><p>  printf(" 2.查詢大學(xué)外語掛科的同學(xué):\n");</p><p>  printf(" 3.查

120、詢高等數(shù)學(xué)掛科的同學(xué):\n");</p><p>  printf(" 4.查詢程序設(shè)計(jì)掛科的同學(xué):\n");</p><p>  printf(" 5.查詢嵌入式導(dǎo)論掛科的同學(xué):\n");</p><p>  printf(" 6.查詢掛科大于3科有警告危險的同學(xué):\n&qu

121、ot;);</p><p>  printf("******請輸入要查詢的功能選項(xiàng)******\n");</p><p>  scanf("%d",&c);</p><p><b>  if(c==1)</b></p><p><b>  {</b>&

122、lt;/p><p>  printstar();</p><p>  printf("本學(xué)期期末系統(tǒng)本111共5科考試科目如下:\n");</p><p>  printf(" 姓名 學(xué)號 思想品德與法律基礎(chǔ)\n");</p><p>  for(i=0;i<x;i++)</

123、p><p><b>  {</b></p><p>  fread(&stud[i],sizeof(struct student),1,fp1);</p><p>  if(stud[i].score[0]<60)</p><p>  printf("%6s %d %d\n&quo

124、t;,</p><p>  stud[i].name,stud[i].num,stud[i].score[0]);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(c==2)</b></p><

125、;p><b>  {</b></p><p>  printstar();</p><p>  printf("大學(xué)外語掛科的同學(xué)成績?nèi)缦?\n");</p><p>  printf(" 姓名 學(xué)號 大學(xué)外語\n");</p><p>  for(i=0

126、;i<x;i++)</p><p><b>  {</b></p><p>  fread(&stud[i],sizeof(struct student),1,fp1);</p><p>  if(stud[i].score[1]<60)</p><p>  printf("%6s %

127、d %d\n",</p><p>  stud[i].name,stud[i].num,stud[i].score[1]);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(c==3)</b&

128、gt;</p><p><b>  {</b></p><p>  printstar();</p><p>  printf("高等數(shù)學(xué)掛科的同學(xué)成績?nèi)缦?\n");</p><p>  printf(" 姓名 學(xué)號 高等數(shù)學(xué)\n");</p>

129、<p>  for(i=0;i<x;i++)</p><p><b>  {</b></p><p>  fread(&stud[i],sizeof(struct student),1,fp1);</p><p>  if(stud[i].score[2]<60)</p><p>  pri

130、ntf("%6s %d %d\n",</p><p>  stud[i].name,stud[i].num,stud[i].score[2]);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  i

131、f(c==4)</b></p><p><b>  {</b></p><p>  printstar();</p><p>  printf("程序設(shè)計(jì)掛科的同學(xué)成績?nèi)缦?\n");</p><p>  printf(" 姓名 學(xué)號 程序設(shè)計(jì)\n"

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論